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

# Basecamp

## Overview

<CardGroup cols={3}>
  <Card title="Pre-built tooling" icon="screwdriver-wrench" href="#pre-built-tooling" />

  <Card title="Pre-built integrations" icon="square-check" href="#pre-built-integrations" />

  <Card title="Access requirements" icon="triangle-exclamation" href="#access-requirements" />

  <Card title="Setup guide" icon="rocket" href="#setup-guide" />

  <Card title="Useful links" icon="circle-info" href="#useful-links" />

  <Card title="API gotchas" icon="biohazard" href="#api-gotchas" />
</CardGroup>

## Pre-built tooling

<AccordionGroup>
  <Accordion title="✅ Authorization">
    | Tools                           | Status |
    | ------------------------------- | ------ |
    | Pre-built authorization (OAuth) | ✅      |
    | Credentials auto-refresh        | ✅      |
    | Auth parameters validation      | ✅      |
    | Pre-built authorization UI      | ✅      |
    | Custom authorization UI         | ✅      |
    | End-user authorization guide    | ✅      |
    | Expired credentials detection   | ✅      |
  </Accordion>

  <Accordion title="✅ Read & write data">
    | Tools                                     | Status                         |
    | ----------------------------------------- | ------------------------------ |
    | Pre-built integrations                    | ✅                              |
    | API unification                           | ✅                              |
    | 2-way sync                                | ✅                              |
    | Webhooks from Nango on data modifications | ✅                              |
    | Real-time webhooks from 3rd-party API     | 🚫 (time to contribute: \<48h) |
    | Proxy requests                            | ✅                              |
  </Accordion>

  <Accordion title="✅ Observability & data quality">
    | Tools                   | Status |
    | ----------------------- | ------ |
    | HTTP request logging    | ✅      |
    | End-to-end type safety  | ✅      |
    | Data runtime validation | ✅      |
    | OpenTelemetry export    | ✅      |
    | Slack alerts on errors  | ✅      |
    | Integration status API  | ✅      |
  </Accordion>

  <Accordion title="✅ Customization">
    | Tools                              | Status                         |
    | ---------------------------------- | ------------------------------ |
    | Create or customize use-cases      | ✅                              |
    | Pre-configured pagination          | 🚫 (time to contribute: \<48h) |
    | Pre-configured rate-limit handling | 🚫 (time to contribute: \<48h) |
    | Per-customer configurations        | ✅                              |
  </Accordion>
</AccordionGroup>

### Accounts

| Function name    | Description                                           | Type                                         | Source code                                                                                                             |
| ---------------- | ----------------------------------------------------- | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `fetch-accounts` | Fetch account list and user information from Basecamp | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/basecamp/actions/fetch-accounts.ts) |

### Projects

| Function name    | Description                      | Type                                         | Source code                                                                                                             |
| ---------------- | -------------------------------- | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `fetch-projects` | Fetch all projects from Basecamp | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/basecamp/actions/fetch-projects.ts) |

### Todolists

| Function name     | Description                                                                                                                                                                      | Type                                         | Source code                                                                                                              |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `fetch-todolists` | Fetch all todolists in a project.Fetch your projects via the fetch-projects action, then locate the project's dock item where "name": "todoset". The id there is your todoSetId. | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/basecamp/actions/fetch-todolists.ts) |

### Todos

| Function name | Description                                                                                                                                                                         | Type                                           | Source code                                                                                                          |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `create-todo` | Create a new to-do in a specific project + list. Fetch your todolists via the fetch-todolists action. Identify the list you want to add the todo to and retrieve the id from there. | [Action](/guides/functions/action-functions)   | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/basecamp/actions/create-todo.ts) |
| `todos`       | Syncs to-dos from Basecamp for the specified projects. Example of a metadata input Example: `{ projects: [ { projectId: 1234, todoSetId: 9999 }, ... ] }`                           | [Sync](/guides/functions/syncs/sync-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/basecamp/syncs/todos.ts)         |

## Access requirements

| Pre-Requisites    | Status         | Comment                                                                           |
| ----------------- | -------------- | --------------------------------------------------------------------------------- |
| Paid dev account  | ✅ Not required | Free, self-signup [here](https://3.basecamp.com/signup/account/new?plan=free_v1). |
| Paid test account | ✅ Not required | Create free account for testing.                                                  |
| Partnership       | ✅ Not required |                                                                                   |
| App review        | ✅ Not required |                                                                                   |
| Security audit    | ✅ Not required |                                                                                   |

## Setup guide

<Steps>
  <Step title="Create a free account">
    Go to [Basecamp's signup page](https://3.basecamp.com/signup/account/new?plan=free_v1) and create an account.
  </Step>

  <Step title="Create & configure a Basecamp app">
    * Start creating a Basecamp app by heading to the following [page](https://launchpad.37signals.com/integrations).
    * Click **Register another application** to open the application registration form.
    * Fill in the **About** section and configure the Redirect URL as follows: `https://api.nango.dev/oauth/callback`.
    * Select the products your app integrates with.
    * Submit Your Application.
    * Once your application has been created, navigate to the specific app page and copy the `Client ID` and `Client Secret`. You will need to specify these in Nango later.
  </Step>

  <Step title="Next">
    Follow the [*Quickstart*](/getting-started/quickstart).
  </Step>
</Steps>

<Tip>Need help getting started? Get help in the [community](https://nango.dev/slack).</Tip>

<Note>Contribute improvements to the setup guide by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/basecamp.mdx)</Note>

## Useful links

| Topic     | Links                                                                                                         |
| --------- | ------------------------------------------------------------------------------------------------------------- |
| General   | [Website](https://basecamp.com/)                                                                              |
|           | [Create a test account](https://3.basecamp.com/signup/account/new?plan=free_v1)                               |
| Developer | [API documentation](https://github.com/basecamp/bcx-api/blob/master/README.md#api-ready-for-use)              |
|           | [Authorization documentation](https://github.com/basecamp/api/blob/master/sections/authentication.md#oauth-2) |
|           | [Register an OAuth app](https://launchpad.37signals.com/integrations)                                         |
|           | [Details on rate limits](https://github.com/Basecamp/bcx-api?tab=readme-ov-file#rate-limiting)                |

<Note>Contribute useful links by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/basecamp.mdx)</Note>

## API gotchas

* When creating a new connection in Nango, you will need to add the `appDetails`, configuration parameter in the format `MyApp (yourname@example.com)`, which will be appended to the request as a header: `User-Agent: MyApp (yourname@example.com)`. This information will be used to get in touch if you’re doing something wrong(so the provider can warn you before you’re blocked) or something awesome (so the provider can congratulate you). Requests without a valid `User-Agent` header are rejected.
* You will also need to add in your `accountId` connection configuration parameter.
  <Note>Contribute API gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/basecamp.mdx)</Note>

## Going further

<Card title="Connect to Basecamp" icon="link" href="/integrations/all/basecamp/connect" horizontal>
  Guide to connect to Basecamp using Connect UI
</Card>
