# Basecamp

> Manage Basecamp projects, to-do lists, and tasks directly from Lodol with create, list, and comment actions.

App · Project Management · 19 actions. Web page: https://docs.lodol.com/docs/integrations/basecamp

## Actions

### Add comment to message

Adds a comment to a Basecamp message.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.
- Message ID (`message_id`, text, required): The message's ID. Use the ID returned by 'Create message'.
- Comment text (`content`, text, required): The comment to add to the message.

**Outputs**

- `content` (text): Comment text.
- `id` (number): Comment ID.

**Example output**

```json
{
  "content": "Looks great!",
  "id": 888
}
```

### Add comment to to-do

Adds a comment to a Basecamp to-do item.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.
- To-do ID (`todo_id`, text, required): The to-do's ID. Use 'List to-dos' to find it.
- Comment text (`content`, text, required): The comment to add to the to-do.

**Outputs**

- `content` (text): Comment text.
- `id` (number): Comment ID.

**Example output**

```json
{
  "content": "Great progress!",
  "id": 999
}
```

### Add person to project

Grants an existing Basecamp person access to a project.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.
- Person ID (`person_id`, text, required): The ID of the person to add. Use 'Get person' or your account's people list to find it.

**Outputs**

- `granted` (list): People who were granted access.

**Example output**

```json
{
  "granted": [
    {
      "id": 5555,
      "name": "Sam Rivera"
    }
  ]
}
```

### Complete to-do

Marks a Basecamp to-do item as completed.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.
- To-do ID (`todo_id`, text, required): The to-do's ID. Use 'List to-dos' to find it.

**Outputs**

- `completed` (true/false): Completion status.
- `id` (text): Completed to-do ID.

**Example output**

```json
{
  "completed": true,
  "id": "456"
}
```

### Create document

Creates a new document in a Basecamp project's Docs & Files.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.
- Document title (`title`, text, required): A title for the new document.
- Document content (`content`, text, required): The document body. Basic HTML formatting (paragraphs, lists, links) is supported.

**Outputs**

- `id` (number): Created document ID.
- `title` (text): Document title.

**Example output**

```json
{
  "id": 321,
  "title": "Project brief"
}
```

### Create message

Posts a new message to a Basecamp project's message board.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.
- Subject (`subject`, text, required): The message subject line.
- Message body (`content`, text, required): The message body. Basic HTML formatting is supported.

**Outputs**

- `id` (number): Created message ID.
- `subject` (text): Message subject.

**Example output**

```json
{
  "id": 777,
  "subject": "Kickoff"
}
```

### Create project

Creates a new Basecamp project.

**Inputs**

- Project name (`name`, text, required): A name for the new project, for example, Website Redesign.
- Description (`description`, text): An optional description of what the project is for.

**Outputs**

- `id` (number): Created project ID.
- `name` (text): Project name.

**Example output**

```json
{
  "id": 1234567,
  "name": "Website Redesign"
}
```

### Create to-do

Creates a new to-do item within a Basecamp to-do list.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.
- To-do list ID (`todolist_id`, text, required): The to-do list's ID. Use 'List to-do lists' to find it.
- To-do text (`content`, text, required): What needs to be done, for example, Send the launch email.
- Description (`description`, text): An optional note with extra details about the to-do.
- Due date (`due_on`, date): An optional due date for the to-do.

**Outputs**

- `content` (text): To-do content.
- `id` (number): Created to-do ID.

**Example output**

```json
{
  "content": "Buy supplies",
  "id": 789
}
```

### Create to-do list

Creates a new to-do list inside a Basecamp project.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.
- List name (`name`, text, required): A name for the new to-do list, for example, Launch checklist.
- Description (`description`, text): An optional note describing what the list is for.

**Outputs**

- `id` (number): Created to-do list ID.
- `title` (text): To-do list name.

**Example output**

```json
{
  "id": 123,
  "title": "Launch checklist"
}
```

### Get document

Retrieves a single Basecamp document by its ID.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.
- Document ID (`document_id`, text, required): The document's ID. Use 'List documents' to find it.

**Outputs**

- `content` (text): Document content (HTML).
- `id` (number): Document ID.
- `title` (text): Document title.

**Example output**

```json
{
  "content": "<div>The plan.</div>",
  "id": 321,
  "title": "Project brief"
}
```

### Get person

Retrieves a single Basecamp person by their ID.

**Inputs**

- Person ID (`person_id`, text, required): The person's ID.

**Outputs**

- `email_address` (text): Person's email address.
- `id` (number): Person ID.
- `name` (text): Person's name.

**Example output**

```json
{
  "email_address": "sam@example.com",
  "id": 5555,
  "name": "Sam Rivera"
}
```

### Get project

Retrieves a single Basecamp project by its ID.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.

**Outputs**

- `description` (text): Project description.
- `id` (number): Project ID.
- `name` (text): Project name.

**Example output**

```json
{
  "description": "Marketing site refresh.",
  "id": 1234567,
  "name": "Website Redesign"
}
```

### Get to-do

Retrieves a single Basecamp to-do item by its ID.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.
- To-do ID (`todo_id`, text, required): The to-do's ID. Use 'List to-dos' to find it.

**Outputs**

- `completed` (true/false): Completion status.
- `content` (text): To-do content.
- `id` (number): To-do ID.

**Example output**

```json
{
  "completed": false,
  "content": "Buy supplies",
  "id": 456
}
```

### Get to-do list

Retrieves a single Basecamp to-do list by its ID.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.
- To-do list ID (`todolist_id`, text, required): The to-do list's ID. Use 'List to-do lists' to find it.

**Outputs**

- `id` (number): To-do list ID.
- `title` (text): To-do list name.

**Example output**

```json
{
  "id": 123,
  "title": "Launch checklist"
}
```

### List documents

Lists the documents in a Basecamp project's Docs & Files.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.

**Outputs**

- `documents` (list): List of documents.

**Example output**

```json
{
  "documents": [
    {
      "id": 321,
      "title": "Project brief"
    }
  ]
}
```

### List projects

Lists Basecamp projects available to the connected account.

**Inputs**: None.

**Outputs**

- `projects` (list): List of projects.

**Example output**

```json
{
  "projects": [
    {
      "id": 1234567,
      "name": "Test Project"
    }
  ]
}
```

### List to-do lists

Lists the to-do lists inside a Basecamp project.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.

**Outputs**

- `todolists` (list): List of to-do lists.

**Example output**

```json
{
  "todolists": [
    {
      "id": 123,
      "title": "Launch checklist"
    }
  ]
}
```

### List to-dos

Lists the to-dos within a Basecamp to-do list.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.
- To-do list ID (`todolist_id`, text, required): The to-do list's ID. Use 'List to-do lists' to find it.

**Outputs**

- `todos` (list): List of to-dos.

**Example output**

```json
{
  "todos": [
    {
      "completed": false,
      "content": "Buy supplies",
      "id": 456
    }
  ]
}
```

### Update to-do

Updates a Basecamp to-do item's content, notes, or due date.

**Inputs**

- Project ID (`project_id`, text, required): The project's ID. Use 'List projects' to find it.
- To-do ID (`todo_id`, text, required): The to-do's ID. Use 'List to-dos' to find it.
- To-do text (`content`, text, required): The updated to-do text. Basecamp requires the content on every update.
- Description (`description`, text): Optional updated notes for the to-do.
- Due date (`due_on`, date): An optional due date for the to-do.

**Outputs**

- `content` (text): To-do content.
- `id` (number): To-do ID.

**Example output**

```json
{
  "content": "Buy supplies and snacks",
  "id": 456
}
```
