> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alumio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Basecamp

> Connect Alumio to Basecamp.

## Extra information

System documentation:

## Connector package documentation

# Setting up HTTP Client Basecamp 4

## Steps

1. In Alumio Dashboard, go to Clients > HTTPS Client. Create a new HTTP Client and select Basecamp 4 HTTP Client as the prototype of the HTTP Client.
2. Fill in the Base URI, Client ID, and Client Secret.
3. Press “Grant Access to Basecamp 4 ”.
4. Press Save Button on Top-Right.

# Subscribing to Entities from Basecamp 4

## Steps

1. Go to Connections -> Incoming and create a new incoming configuration and select Basecamp 4 Subscriber as the subscriber.
2. Select the Entity you want to subscribe from Basecamp 4.
3. Add any request parameters needed to subscribe to the entity.
4. You can optionally add a transformer to transform the request parameters into something you need.
5. Select the Shipstation HTTP Client to use.

## General Concept

We follow Basecamp 4 documentation on building this connector so you can easily use the connector based on Basecamp 4 API Reference.

**Entity**
It’s the entity you want to subscribe from Basecamp 4. Please refer to the entities in Management APIs from Basecamp 4 API Reference page.

**Request Parameters**
These are the parameters you can provide to get the needed entity based on Basecamp 4 API Reference. Please look at the example below on how to fill Request Parameters field when subscribing Single Request entity

<img src="https://mintcdn.com/alumio/Y4FUbluEreYeFn73/images/connectors/basecamp-01.png?fit=max&auto=format&n=Y4FUbluEreYeFn73&q=85&s=5a0dd764b0619106ab7f044f9c713792" alt="Basecamp connector screenshot 1" width="690" height="444" data-path="images/connectors/basecamp-01.png" />

<img src="https://mintcdn.com/alumio/Y4FUbluEreYeFn73/images/connectors/basecamp-02.png?fit=max&auto=format&n=Y4FUbluEreYeFn73&q=85&s=c8cba97cf8d1f13ac3afe9a744b6b6e4" alt="Basecamp connector screenshot 2" width="690" height="100" data-path="images/connectors/basecamp-02.png" />

That’s why we need to define the **id1** property inside **path** property in the Request Parameters field. The properties inside **query** parameters will be parsed as query parameters. Here is the final URL that will be called when using such a Request Parameters field. (For more examples on how we define the path parameters please see extra Notes below).

/projects/123

**Input Transformer**
Any transformer’s set here will be executed after the Request Parameters loaded. So, you basically can add any transformer to provide and transform the request parameters into anything you need either as path parameters and/or as query parameters of an entity.

**HTTP Client**
It’s the HTTP Client configuration or prototype you will use to access Basecamp 4.

# Publishing Entity to Basecamp 4

## Steps

1. Go to Connections -> Outgoing, create a new outgoing configuration and select Basecamp 4 Publisher as the publisher.
2. Select the action that you want the publisher to do with the data.
3. Select the Basecamp 4 entity you want the data to be published to.
4. Select the HTTP Client to use.
   <img src="https://mintcdn.com/alumio/Y4FUbluEreYeFn73/images/connectors/basecamp-03.png?fit=max&auto=format&n=Y4FUbluEreYeFn73&q=85&s=9b79078c8cffa60f437d52b84023adb0" alt="Basecamp connector screenshot 3" width="690" height="306" data-path="images/connectors/basecamp-03.png" />

## General Concept

Like the subscriber, the publisher has similar methods on how to use it. The difference is the payload that will be submitted by the publisher originating from the data (from routes, from transformers in outgoing configuration).

**Method**
Currently we support Post, Put, and Delete methods for submitting data to Basecamp 4 Cloud API.

**Entity**
We support publishing to most Basecamp 4 endpoints but not with publishing binary files at the moment. Please refer to the entities in Management APIs from Basecamp 4 API Reference page. Based on the documentation, some endpoints may need one or more path parameters.

For endpoints that require object as the request payload, please look at the example below. For example, we want to Create a Project. Please select “POST” as the action and “Create a Project” as the entity of the publisher.

<img src="https://mintcdn.com/alumio/Y4FUbluEreYeFn73/images/connectors/basecamp-04.png?fit=max&auto=format&n=Y4FUbluEreYeFn73&q=85&s=0b2b196055bb9cee0ef389e4eaa2cf26" alt="Basecamp connector screenshot 4" width="690" height="247" data-path="images/connectors/basecamp-04.png" />

<img src="https://mintcdn.com/alumio/Y4FUbluEreYeFn73/images/connectors/basecamp-05.png?fit=max&auto=format&n=Y4FUbluEreYeFn73&q=85&s=4ee04a2c339fb7c941a17ebfcf6e81ca" alt="Basecamp connector screenshot 5" width="690" height="85" data-path="images/connectors/basecamp-05.png" />

You can put the payload you want to send to Basecamp 4 into payload property in the data. Here is an
example of the Possible Response after Creation.

<img src="https://mintcdn.com/alumio/Y4FUbluEreYeFn73/images/connectors/basecamp-06.png?fit=max&auto=format&n=Y4FUbluEreYeFn73&q=85&s=bbf38cbb6d955341c49dc143a0908471" alt="Basecamp connector screenshot 6" width="690" height="149" data-path="images/connectors/basecamp-06.png" />

Alumio will send an API request to Basecamp 4 with URL /projects.json

**HTTP Client**
It’s the HTTP Client configuration or prototype you will use to access Basecamp 4.

# Extra Notes

**Endpoint Decision**
For the Path in the Endpoint the name of the ID is undecided in Documentation
This is from the Documentation :

`/buckets/1/chats/2.json`

This is what i implement on Endpoint :

`"/buckets/{{id1}}/chats/{{id2}}.json"`

This also implemented in the Random Number Generated on Docs

`/buckets/1/card_tables/lists/3/cards.json`

Implemented :

`"/buckets/{{id1}}/card_tables/lists/{{id2}}/cards.json"`

This works for every endpoint that has a random number in the endpoint

`/buckets/1/card_tables/lists/3/cards.json`

So if the Endpoints are like this

`/buckets/1/3/1/3/cards.json`

Implemented :

`/buckets/{{id1}}/{{id2}}/{{id3}}/{{id4}}/cards.json`
