> This is part 1 of 7 of the full documentation (pages 1–100 of 633).
> The content is paginated: fetch every part to see all of it.
> Next part: https://docs.planetcrust.com/llms-full.txt/1
> Page index: https://docs.planetcrust.com/llms.txt

# About @Human

About @Human

<p align="center"><a href="https://buy.polar.sh/polar_cl_MKycmV54KogEiCMy7Oqf4zXIwWZ7wOPhtf5xg3dTn21" class="button primary" data-icon="square-caret-right">Try @Human</a><a href="https://buy.polar.sh/polar_cl_MKycmV54KogEiCMy7Oqf4zXIwWZ7wOPhtf5xg3dTn21" class="button primary" data-icon="check">Buy @Human Subscription</a><a href="https://www.planetcrust.com/human-community" class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-3b2505b4f1bacacd53f45f7c87133c81eabbc74a%2F5-MAIN(1).png?alt=media" alt=""><figcaption></figcaption></figure>


# @Human Connections

Overview of the @Human Connections ecosystem

<p align="center"><a href="https://buy.polar.sh/polar_cl_MKycmV54KogEiCMy7Oqf4zXIwWZ7wOPhtf5xg3dTn21" class="button primary" data-icon="square-caret-right">Try @Human</a><a href="https://buy.polar.sh/polar_cl_MKycmV54KogEiCMy7Oqf4zXIwWZ7wOPhtf5xg3dTn21" class="button primary" data-icon="check">Buy @Human Subscription</a><a href="https://www.planetcrust.com/human-community" class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-3b2505b4f1bacacd53f45f7c87133c81eabbc74a%2F5-MAIN(1).png?alt=media" alt=""><figcaption></figcaption></figure>

### What are @Human Connections?

Connections is the API Ecosystem for @Human. There are three essential things you need to know:

{% stepper %}
{% step %}

### Open-Source Zapier Alternative

Similarly to Zapier, @Human Connections provides integrations with the API's of an ever-growing ecosystem of third-party technologies - though @Human is all open-source. Enter your API keys and off you go!
{% endstep %}

{% step %}

### Used in @Human Automations

@Human Automations is a TAQ (Trigger/Action/Query) engine in which you use your Connections. For example, you could create an automation where every time a Google Sheet row is added, this triggers the creation of a new record in your CRM.
{% endstep %}

{% step %}

### Easy to Build

API Connections are mostly straightforward for us to build. We just need your suggestions and preferences and we'll do it for free. Interested? Please join @Human Community (top of this page!) and let us know.
{% endstep %}
{% endstepper %}


# Configuring Connections

<p align="center"><a href="https://buy.polar.sh/polar_cl_MKycmV54KogEiCMy7Oqf4zXIwWZ7wOPhtf5xg3dTn21" class="button primary" data-icon="square-caret-right">Try @Human</a><a href="https://buy.polar.sh/polar_cl_MKycmV54KogEiCMy7Oqf4zXIwWZ7wOPhtf5xg3dTn21" class="button primary" data-icon="check">Buy @Human Subscription</a><a href="https://www.planetcrust.com/human-community" class="button primary" data-icon="comments">Join @Human Community</a></p>


# Using Connections

<p align="center"><a href="https://buy.polar.sh/polar_cl_MKycmV54KogEiCMy7Oqf4zXIwWZ7wOPhtf5xg3dTn21" class="button primary" data-icon="square-caret-right">Try @Human</a><a href="https://buy.polar.sh/polar_cl_MKycmV54KogEiCMy7Oqf4zXIwWZ7wOPhtf5xg3dTn21" class="button primary" data-icon="check">Buy @Human Subscription</a><a href="https://www.planetcrust.com/human-community" class="button primary" data-icon="comments">Join @Human Community</a></p>


# Asana

Asana Connection

<p align="center"><a href="https://polar.sh/checkout/polar_c_H3nQb2tAWLbZL6hB8OspjFzsVlxMoXznIlSzq43sZnx" class="button primary" data-icon="circle-caret-right">Try @Human</a><a href="https://polar.sh/checkout/polar_c_H3nQb2tAWLbZL6hB8OspjFzsVlxMoXznIlSzq43sZnx" class="button primary" data-icon="check">Buy @Human Subscription</a><a href="https://www.planetcrust.com/human-community" class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-0269e952211f620b73005290241687bb2a469fdf%2Fasana.png?alt=media" alt=""><figcaption></figcaption></figure>

<h3 align="center">Put Asana to Work with @Human Automations and @Human Agents</h3>

<p align="center">The Asana Connection documents all Triggers, Actions and Query Operations available for creating automations via the Asana API.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### What can you do with the Asana Connection?

* Connect to the Asana API in a few clicks
* Use the related Asana Operations (see below) in @Human Automations or @Human Agents

### Related Operations

#### Trigger Operations

**Task Created**

Triggers on: tasks/task\_created

Triggers when a new task is created in Asana.

**Task Updated**

Triggers on: tasks/task\_updated

Triggers when an existing task is updated in Asana.

**Project Created**

Triggers on: projects/project\_created

Triggers when a new project is created in Asana.

#### Action Operations

[Action: Create a Project](/asana/asana/action-create-a-project)

[Action: Update a Project](/asana/asana/action-update-a-project)

[Action: Create a Task](/asana/asana/action-create-a-task)

[Action: Update a Task](/asana/asana/action-update-a-task)

#### Query Operations

[Query: Get a Project](/asana/asana/query-get-a-project)

[Query: Get a Task](/asana/asana/query-get-a-task)

### Related Automations

Example link

### Obtaining Access Credentials

To obtain a **Personal Access Token (PAT)** for **Asana**, follow these steps:

#### **Prerequisites**

* An **Asana account** (free or paid).
* Admin permissions (if creating tokens for an organization).

#### **Steps**

1. **Log in** to your Asana account at [asana.com](https://asana.com).
2. **Click your profile icon** (top-right) → **Settings**.
3. Go to the **Apps** tab.
4. Under **Build new apps**, click **View developer console**.
5. Under **Personal access tokens,** Click **Create New Token**.
6. Enter a **name** (e.g., "API Integration") and set **expiration** (optional).
7. Click **Create Token**.
8. **Copy the token immediately** (it won’t be shown again).
9. **Done.** Use the token in API requests as a **Bearer Token** in the `Authorization` header.

### Configuring Webhooks

1. **Prepare a publicly accessible listener URL** (HTTPS) to receive event notifications.
2. **Implement the handshake response** to echo the `X-Hook-Secret` header back to Asana during the verification request.
3. **Register the webhook** by making an authenticated `POST` request to `https://app.asana.com/api/1.0/webhooks`.
4. **Use your Personal Access Token (PAT)** as a Bearer Token in the `Authorization` header.
5. **Specify the resource ID** (e.g., GID of a project or workspace) and the **target URL** in the JSON payload.
6. **Verify activation** by checking for a `201 Created` status from Asana once the handshake is successful.

### Code (Apache v2.0): Service Connectivity and Metadata

```
{
  "handle": "asana-api-v1",
  "status": "active",
  "meta": {
    "short": "Asana",
    "description": "Connect to Asana's API to manage tasks, projects, and teams.",
    "icon": "asana",
    "tags": ["project-management", "task-management", "collaboration"]
  },
  "service": {
    "baseURL": {
      "value": "https://app.asana.com/api/1.0"
    },
    "protocol": "https",
    "contentType": "application/json",
    "headers": {
      "Accept": {
        "value": "application/json"
      },
      "Content-Type": {
        "value": "application/json"
      }
    },
    "auth": {
      "method": "api_token",
      "params": {
        "apiToken": {
          "token": {
            "value": "{{apiToken}}",
            "placeholders": [
              {
                "name": "apiToken",
                "type": "String",
                "description": "Asana Personal Access Token",
                "required": true
              }
            ]
          },
          "headerName": {
            "value": "Authorization"
          }
        }
      }
    }
  }
}

```

### Code (Apache v2.0): List of External Resources and Internal Mapping

```
[
  {
    "handle": "tasks",
    "meta": {
      "short": "Tasks",
      "description": "Manage tasks in Asana, including creation, updates, and retrieval."
    },
    "endpoint": {
      "value": "/tasks",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "The unique identifier for the task."
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": [
          "name"
        ],
        "meta": {
          "description": "The name of the task."
        }
      },
      {
        "name": "notes",
        "type": "String",
        "selector": [
          "notes"
        ],
        "meta": {
          "description": "Detailed description or notes for the task."
        }
      },
      {
        "name": "completed",
        "type": "Boolean",
        "selector": [
          "completed"
        ],
        "meta": {
          "description": "Indicates whether the task is completed."
        }
      },
      {
        "name": "due_on",
        "type": "String",
        "selector": [
          "due_on"
        ],
        "meta": {
          "description": "The due date of the task in YYYY-MM-DD format."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "The task ID.",
              "required": true
            }
          ]
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      },
      "create": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Content-Type": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"data\": {\"name\": \"{{name}}\", \"notes\": \"{{notes}}\", \"due_on\": \"{{due_on}}\"}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The name of the task.",
              "required": true
            },
            {
              "name": "notes",
              "type": "String",
              "description": "Detailed description or notes for the task.",
              "required": false
            },
            {
              "name": "due_on",
              "type": "String",
              "description": "The due date of the task in YYYY-MM-DD format.",
              "required": false
            }
          ]
        }
      },
      "update": {
        "method": "PUT",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "The task ID.",
              "required": true
            }
          ]
        },
        "headers": {
          "Content-Type": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"data\": {\"name\": \"{{name}}\", \"notes\": \"{{notes}}\", \"completed\": {{completed}}, \"due_on\": \"{{due_on}}\"}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The name of the task.",
              "required": false
            },
            {
              "name": "notes",
              "type": "String",
              "description": "Detailed description or notes for the task.",
              "required": false
            },
            {
              "name": "completed",
              "type": "Boolean",
              "description": "Indicates whether the task is completed.",
              "required": false
            },
            {
              "name": "due_on",
              "type": "String",
              "description": "The due date of the task in YYYY-MM-DD format.",
              "required": false
            }
          ]
        }
      },
      "delete": {
        "method": "DELETE",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "The task ID.",
              "required": true
            }
          ]
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": [
      {
        "event": "task_created",
        "path": "/webhooks/asana/task_created",
        "payload": [
          {
            "name": "task_id",
            "type": "String",
            "selector": [
              "data",
              "id"
            ],
            "meta": {
              "description": "The ID of the created task."
            }
          },
          {
            "name": "task_name",
            "type": "String",
            "selector": [
              "data",
              "name"
            ],
            "meta": {
              "description": "The name of the created task."
            }
          }
        ]
      },
      {
        "event": "task_updated",
        "path": "/webhooks/asana/task_updated",
        "payload": [
          {
            "name": "task_id",
            "type": "String",
            "selector": [
              "data",
              "id"
            ],
            "meta": {
              "description": "The ID of the updated task."
            }
          },
          {
            "name": "task_name",
            "type": "String",
            "selector": [
              "data",
              "name"
            ],
            "meta": {
              "description": "The name of the updated task."
            }
          }
        ]
      }
    ]
  },
  {
    "handle": "projects",
    "meta": {
      "short": "Projects",
      "description": "Manage projects in Asana, including creation, updates, and retrieval."
    },
    "endpoint": {
      "value": "/projects",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "The unique identifier for the project."
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": [
          "name"
        ],
        "meta": {
          "description": "The name of the project."
        }
      },
      {
        "name": "notes",
        "type": "String",
        "selector": [
          "notes"
        ],
        "meta": {
          "description": "Detailed description or notes for the project."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "The project ID.",
              "required": true
            }
          ]
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      },
      "create": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Content-Type": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"data\": {\"name\": \"{{name}}\", \"notes\": \"{{notes}}\"}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The name of the project.",
              "required": true
            },
            {
              "name": "notes",
              "type": "String",
              "description": "Detailed description or notes for the project.",
              "required": false
            }
          ]
        }
      },
      "update": {
        "method": "PUT",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "The project ID.",
              "required": true
            }
          ]
        },
        "headers": {
          "Content-Type": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"data\": {\"name\": \"{{name}}\", \"notes\": \"{{notes}}\"}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The name of the project.",
              "required": false
            },
            {
              "name": "notes",
              "type": "String",
              "description": "Detailed description or notes for the project.",
              "required": false
            }
          ]
        }
      },
      "delete": {
        "method": "DELETE",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "The project ID.",
              "required": true
            }
          ]
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": [
      {
        "event": "project_created",
        "path": "/webhooks/asana/project_created",
        "payload": [
          {
            "name": "project_id",
            "type": "String",
            "selector": [
              "data",
              "id"
            ],
            "meta": {
              "description": "The ID of the created project."
            }
          },
          {
            "name": "project_name",
            "type": "String",
            "selector": [
              "data",
              "name"
            ],
            "meta": {
              "description": "The name of the created project."
            }
          }
        ]
      }
    ]
  },
  {
    "handle": "access-requests",
    "meta": {
      "short": "Access requests",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/access_requests",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the access request."
        }
      }
    ]
  },
  {
    "handle": "allocations",
    "meta": {
      "short": "Allocations",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/allocations",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the allocation."
        }
      }
    ]
  },
  {
    "handle": "attachments",
    "meta": {
      "short": "Attachments",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/attachments",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the attachment."
        }
      }
    ]
  },
  {
    "handle": "audit-log-api",
    "meta": {
      "short": "Audit log API",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/audit_log_api",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the audit log api."
        }
      }
    ]
  },
  {
    "handle": "batch-api",
    "meta": {
      "short": "Batch API",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/batch_api",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the batch api."
        }
      }
    ]
  },
  {
    "handle": "budgets",
    "meta": {
      "short": "Budgets",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/budgets",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the budget."
        }
      }
    ]
  },
  {
    "handle": "custom-field-settings",
    "meta": {
      "short": "Custom field settings",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/custom_field_settings",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the custom field setting."
        }
      }
    ]
  },
  {
    "handle": "custom-fields",
    "meta": {
      "short": "Custom fields",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/custom_fields",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the custom field."
        }
      }
    ]
  },
  {
    "handle": "custom-types",
    "meta": {
      "short": "Custom types",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/custom_types",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the custom type."
        }
      }
    ]
  },
  {
    "handle": "exports",
    "meta": {
      "short": "Exports",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/exports",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the export."
        }
      }
    ]
  },
  {
    "handle": "goal-relationships",
    "meta": {
      "short": "Goal relationships",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/goal_relationships",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the goal relationship."
        }
      }
    ]
  },
  {
    "handle": "goals",
    "meta": {
      "short": "Goals",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/goals",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the goal."
        }
      }
    ]
  },
  {
    "handle": "jobs",
    "meta": {
      "short": "Jobs",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/jobs",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the job."
        }
      }
    ]
  },
  {
    "handle": "memberships",
    "meta": {
      "short": "Memberships",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/memberships",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the membership."
        }
      }
    ]
  },
  {
    "handle": "organization-exports",
    "meta": {
      "short": "Organization exports",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/organization_exports",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the organization export."
        }
      }
    ]
  },
  {
    "handle": "portfolio-memberships",
    "meta": {
      "short": "Portfolio memberships",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/portfolio_memberships",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the portfolio membership."
        }
      }
    ]
  },
  {
    "handle": "portfolios",
    "meta": {
      "short": "Portfolios",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/portfolios",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the portfolio."
        }
      }
    ]
  },
  {
    "handle": "project-briefs",
    "meta": {
      "short": "Project briefs",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/project_briefs",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the project brief."
        }
      }
    ]
  },
  {
    "handle": "project-memberships",
    "meta": {
      "short": "Project memberships",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/project_memberships",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the project membership."
        }
      }
    ]
  },
  {
    "handle": "project-portfolio-settings",
    "meta": {
      "short": "Project portfolio settings",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/project_portfolio_settings",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the project portfolio setting."
        }
      }
    ]
  },
  {
    "handle": "project-statuses",
    "meta": {
      "short": "Project statuses",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/project_statuses",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the project statuse."
        }
      }
    ]
  },
  {
    "handle": "project-templates",
    "meta": {
      "short": "Project templates",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/project_templates",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the project template."
        }
      }
    ]
  },
  {
    "handle": "rates",
    "meta": {
      "short": "Rates",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/rates",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the rate."
        }
      }
    ]
  },
  {
    "handle": "reactions",
    "meta": {
      "short": "Reactions",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/reactions",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the reaction."
        }
      }
    ]
  },
  {
    "handle": "roles",
    "meta": {
      "short": "Roles",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/roles",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the role."
        }
      }
    ]
  },
  {
    "handle": "rules",
    "meta": {
      "short": "Rules",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/rules",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the rule."
        }
      }
    ]
  },
  {
    "handle": "sections",
    "meta": {
      "short": "Sections",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/sections",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the section."
        }
      }
    ]
  },
  {
    "handle": "status-updates",
    "meta": {
      "short": "Status updates",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/status_updates",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the status update."
        }
      }
    ]
  },
  {
    "handle": "stories",
    "meta": {
      "short": "Stories",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/stories",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the storie."
        }
      }
    ]
  },
  {
    "handle": "tags",
    "meta": {
      "short": "Tags",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/tags",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the tag."
        }
      }
    ]
  },
  {
    "handle": "task-templates",
    "meta": {
      "short": "Task templates",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/task_templates",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the task template."
        }
      }
    ]
  },
  {
    "handle": "team-memberships",
    "meta": {
      "short": "Team memberships",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/team_memberships",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the team membership."
        }
      }
    ]
  },
  {
    "handle": "teams",
    "meta": {
      "short": "Teams",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/teams",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the team."
        }
      }
    ]
  },
  {
    "handle": "time-periods",
    "meta": {
      "short": "Time periods",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/time_periods",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the time period."
        }
      }
    ]
  },
  {
    "handle": "time-tracking-entries",
    "meta": {
      "short": "Time tracking entries",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/time_tracking_entries",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the time tracking entrie."
        }
      }
    ]
  },
  {
    "handle": "timesheet-approval-statuses",
    "meta": {
      "short": "Timesheet approval statuses",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/timesheet_approval_statuses",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the timesheet approval statuse."
        }
      }
    ]
  },
  {
    "handle": "typeahead",
    "meta": {
      "short": "Typeahead",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/typeahead",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the typeahead."
        }
      }
    ]
  },
  {
    "handle": "user-task-lists",
    "meta": {
      "short": "User task lists",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/user_task_lists",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the user task list."
        }
      }
    ]
  },
  {
    "handle": "users",
    "meta": {
      "short": "Users",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/users",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the user."
        }
      }
    ]
  },
  {
    "handle": "workspace-memberships",
    "meta": {
      "short": "Workspace memberships",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/workspace_memberships",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the workspace membership."
        }
      }
    ]
  },
  {
    "handle": "workspaces",
    "meta": {
      "short": "Workspaces",
      "description": "An access request object represents a user's request to an item, such as a project or portfolio, that they do not have access to. The request is sent to the owner of the item for approval."
    },
    "endpoint": {
      "value": "/workspaces",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "gid"
        ],
        "meta": {
          "description": "The unique identifier for the workspace."
        }
      }
    ]
  }
]
```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create a Project

Asana Operation

<p align="center"><a href="https://polar.sh/checkout/polar_c_H3nQb2tAWLbZL6hB8OspjFzsVlxMoXznIlSzq43sZnx" class="button primary" data-icon="circle-caret-right">Try @Human</a><a href="https://polar.sh/checkout/polar_c_H3nQb2tAWLbZL6hB8OspjFzsVlxMoXznIlSzq43sZnx" class="button primary" data-icon="check">Buy @Human Subscription</a><a href="https://www.planetcrust.com/human-community" class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-0269e952211f620b73005290241687bb2a469fdf%2Fasana.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Create a Project action enables users to automate the creation of an Asana Project.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

As a project manager, I want to create a new project in Asana so that I can organize and track tasks effectively.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| name       | String     | Yes      |
| workspace  | String     | Yes      |
| notes      | String     | No       |
| public     | Boolean    | No       |

### Related Connections

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-project",
  "state": "inDev",
  "meta": {
    "short": "Create Project",
    "description": "Creates a new project in Asana."
  },
  "input": [
    {
      "name": "name",
      "type": "String",
      "required": true,
      "meta": {
        "description": "Name of the project."
      }
    },
    {
      "name": "workspace",
      "type": "String",
      "required": true,
      "meta": {
        "description": "Workspace ID where the project will be created."
      }
    },
    {
      "name": "notes",
      "type": "String",
      "required": false,
      "meta": {
        "description": "Notes for the project."
      }
    },
    {
      "name": "public",
      "type": "Boolean",
      "required": false,
      "meta": {
        "description": "Whether the project is public to the workspace."
      }
    }
  ],
  "output": [
    {
      "name": "projectId",
      "type": "String",
      "selector": ["data", "gid"],
      "meta": {
        "description": "ID of the created project."
      }
    },
    {
      "name": "projectName",
      "type": "String",
      "selector": ["data", "name"],
      "meta": {
        "description": "Name of the created project."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/projects",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"data\":{\"name\":\"{{name}}\",\"workspace\":\"{{workspace}}\",\"notes\":\"{{notes}}\",\"public\":{{public}}}}",
          "placeholders": [
            {
              "name": "accessToken",
              "type": "String",
              "description": "Asana API access token.",
              "required": true
            },
            {
              "name": "name",
              "type": "String",
              "description": "Name of the project.",
              "required": true
            },
            {
              "name": "workspace",
              "type": "String",
              "description": "Workspace ID where the project will be created.",
              "required": true
            },
            {
              "name": "notes",
              "type": "String",
              "description": "Notes for the project.",
              "required": false
            },
            {
              "name": "public",
              "type": "Boolean",
              "description": "Whether the project is public to the workspace.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Update a Project

Asana Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-0269e952211f620b73005290241687bb2a469fdf%2Fasana.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Update a Project action enables users to automate the update of an Asana Project.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

As a project manager, I want to update project details in Asana so that I can keep project information current and relevant.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| projectId  | String     | Yes      |
| name       | String     | No       |
| notes      | String     | No       |
| public     | Boolean    | No       |

### Related Connections

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "update-project",
  "state": "inDev",
  "meta": {
    "short": "Update Project",
    "description": "Update an existing project in Asana with new details."
  },
  "input": [
    {
      "name": "projectId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the project to update."
      }
    },
    {
      "name": "name",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The new name for the project."
      }
    },
    {
      "name": "notes",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The new notes for the project."
      }
    },
    {
      "name": "public",
      "type": "Boolean",
      "required": false,
      "meta": {
        "description": "Whether the project is public to the organization."
      }
    }
  ],
  "output": [
    {
      "name": "project",
      "type": "Object",
      "selector": ["data"],
      "meta": {
        "description": "The updated project details."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "PUT",
        "path": "/projects/{{projectId}}",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"data\":{\"name\":\"{{name}}\",\"notes\":\"{{notes}}\",\"public\":{{public}}}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The new name for the project.",
              "required": false
            },
            {
              "name": "notes",
              "type": "String",
              "description": "The new notes for the project.",
              "required": false
            },
            {
              "name": "public",
              "type": "Boolean",
              "description": "Whether the project is public to the organization.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create a Task

Asana Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-0269e952211f620b73005290241687bb2a469fdf%2Fasana.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Create a Task action enables users to automate the creation of a Task in an Asana Project.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

As a project manager, I want to create a new task in Asana so that I can assign work to my team members.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| workspace  | String     | Yes      |
| name       | String     | Yes      |
| notes      | String     | No       |
| projects   | String     | No       |
| assignee   | String     | No       |
| due\_on    | String     | No       |

### Related Connections

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-task",
  "state": "inDev",
  "meta": {
    "short": "Create Task",
    "description": "Creates a new task in Asana."
  },
  "input": [
    {
      "name": "workspace",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The workspace ID where the task will be created."
      }
    },
    {
      "name": "name",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The name of the task."
      }
    },
    {
      "name": "notes",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The description of the task."
      }
    },
    {
      "name": "projects",
      "type": "String",
      "required": false,
      "meta": {
        "description": "Comma-separated list of project IDs to add the task to."
      }
    },
    {
      "name": "assignee",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The user ID to assign the task to."
      }
    },
    {
      "name": "due_on",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The due date of the task in YYYY-MM-DD format."
      }
    }
  ],
  "output": [
    {
      "name": "task_id",
      "type": "String",
      "selector": ["data", "gid"],
      "meta": {
        "description": "The ID of the created task."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/workspaces/{{workspace}}/tasks",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"data\":{\"name\":\"{{name}}\",\"notes\":\"{{notes}}\",\"projects\":[{{projects}}],\"assignee\":\"{{assignee}}\",\"due_on\":\"{{due_on}}\"}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The name of the task.",
              "required": true
            },
            {
              "name": "notes",
              "type": "String",
              "description": "The description of the task.",
              "required": false
            },
            {
              "name": "projects",
              "type": "String",
              "description": "Comma-separated list of project IDs to add the task to.",
              "required": false
            },
            {
              "name": "assignee",
              "type": "String",
              "description": "The user ID to assign the task to.",
              "required": false
            },
            {
              "name": "due_on",
              "type": "String",
              "description": "The due date of the task in YYYY-MM-DD format.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Update a Task

Asana Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-0269e952211f620b73005290241687bb2a469fdf%2Fasana.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Update a Task action enables users to automate the update of a Task in an Asana Project.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

As a project manager, I want to update task details in Asana so that I can keep my team informed of changes.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| taskGID    | String     | Yes      |
| name       | String     | No       |
| notes      | String     | No       |
| completed  | Boolean    | No       |
| dueOn      | String     | No       |

### Related Connections

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "update-task",
  "state": "inDev",
  "meta": {
    "short": "Update Task",
    "description": "Update an existing task in Asana."
  },
  "input": [
    {
      "name": "taskGID",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The GID of the task to update."
      }
    },
    {
      "name": "name",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The new name for the task."
      }
    },
    {
      "name": "notes",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The new notes for the task."
      }
    },
    {
      "name": "completed",
      "type": "Boolean",
      "required": false,
      "meta": {
        "description": "Whether the task is completed."
      }
    },
    {
      "name": "dueOn",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The due date of the task in YYYY-MM-DD format."
      }
    }
  ],
  "output": [
    {
      "name": "task",
      "type": "Object",
      "selector": ["data"],
      "meta": {
        "description": "The updated task object."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "PUT",
        "path": "/tasks/{{taskGID}}",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"data\": {\"name\": \"{{name}}\", \"notes\": \"{{notes}}\", \"completed\": {{completed}}, \"due_on\": \"{{dueOn}}\"}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The new name for the task.",
              "required": false
            },
            {
              "name": "notes",
              "type": "String",
              "description": "The new notes for the task.",
              "required": false
            },
            {
              "name": "completed",
              "type": "Boolean",
              "description": "Whether the task is completed.",
              "required": false
            },
            {
              "name": "dueOn",
              "type": "String",
              "description": "The due date of the task in YYYY-MM-DD format.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Get a Project

Asana Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-0269e952211f620b73005290241687bb2a469fdf%2Fasana.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Get a Project query enables users to fetch details of an Asana Project.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

As a project manager, I want to retrieve the details of a specific project in Asana so that I can review its status and tasks.

#### Fields

| Field Name   | Field Type | Required |
| ------------ | ---------- | -------- |
| project\_gid | String     | Yes      |
| opt\_fields  | String     | No       |

### Related Connections

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "get-project",
  "state": "inDev",
  "meta": {
    "short": "Get Project",
    "description": "Retrieves details of a specific project in Asana."
  },
  "input": [
    {
      "name": "project_gid",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The globally unique identifier (GID) of the project."
      }
    },
    {
      "name": "opt_fields",
      "type": "String",
      "required": false,
      "meta": {
        "description": "Comma-separated list of fields to include in the response."
      }
    }
  ],
  "output": [
    {
      "name": "project",
      "type": "Object",
      "selector": ["data"],
      "meta": {
        "description": "The project details retrieved from Asana."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": {
          "value": "/projects/{{project_gid}}",
          "placeholders": [
            {
              "name": "project_gid",
              "type": "String",
              "description": "The globally unique identifier (GID) of the project.",
              "required": true
            }
          ]
        },
        "headers": {},
        "queryParams": {
          "opt_fields": {
            "value": "{{opt_fields}}",
            "placeholders": [
              {
                "name": "opt_fields",
                "type": "String",
                "description": "Comma-separated list of fields to include in the response.",
                "required": false
              }
            ]
          }
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Get a Task

Asana Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-0269e952211f620b73005290241687bb2a469fdf%2Fasana.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Get a Task query enables users to fetch details of an Asana Task.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

As a project manager, I want to retrieve a specific task from Asana so that I can review its details and update its status.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| task\_id   | String     | Yes      |

### Related Connections

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "get-task",
  "state": "inDev",
  "meta": {
    "short": "Get Task",
    "description": "Retrieve a specific task from Asana using its task ID."
  },
  "input": [
    {
      "name": "task_id",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the task to retrieve."
      }
    }
  ],
  "output": [
    {
      "name": "task",
      "type": "Object",
      "selector": ["data"],
      "meta": {
        "description": "The retrieved task object."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/tasks/{{task_id}}",
        "headers": {
          "Content-Type": "application/json"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# BambooHR

BambooHR Connection

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-c2d7ab247af54ce448dc1b40ef9a667e856b0188%2FBambooHR_logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<h3 align="center">Put BambooHR to Work with @Human Automations and @Human Agents</h3>

<p align="center">The BambooHR Connection documents all Triggers, Actions and Query Operations available for creating automations via the BambooHR API.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### What can you do with the BambooHR Connection?

* Connect to the BambooHR API in a few clicks
* Use the related BambooHR Operations (see below) in @Human Automations or @Human Agents

### Related Operations

#### Trigger Operations

**Employee Created**

Triggers on: employees/employee\_created

Triggered when a new employee record is created in BambooHR.

**Employee Updated**

Triggers on: employees/employee\_updated

Triggered when an existing employee's information is updated in BambooHR.

**Time Off Request Created**

Triggers on: time\_off\_requests/time\_off\_request\_created

Triggered when a new time off request is submitted in BambooHR.

**Time Off Request Updated**

Triggers on: time\_off\_requests/time\_off\_request\_updated

Triggered when the status or details of a time off request are updated in BambooHR.

#### Action Operations

[Action: Add Timesheet Clock Entries](/bamboohr/bamboohr/action-create-a-project)

[Action: Update Employee](/bamboohr/bamboohr/action-update-employee)

[Action: API Request](/bamboohr/bamboohr/action-api-request)

#### Query Operations

[Query: Get Summary of Who's Out](/bamboohr/bamboohr/query-get-summary-of-whos-out)

### Related Automations

Example link

### Obtaining Access Credentials

To obtain a **Personal Access Token (PAT)** for **BambooHR**, follow these steps:

#### **Prerequisites**

* **Admin access** to the BambooHR account (or a user with permission to generate API tokens).

#### **Steps**

1. **Log in** to your BambooHR account.
2. **Navigate** to:
   * Click your **profile icon** (top-right) → **"Settings"** → **"API Keys"** (under "Company Settings").
3. **Generate a new token**:
   * Click **"Add New API Key"**.
   * Enter a **name** for the token (e.g., "System Integration").
   * Set **permissions** (select the required scopes for your use case).
4. **Save & copy the token**:
   * Click **"Save"**.
   * **Copy the generated token** (it will only be shown once).

#### **Required Values**

* **BambooHR Subdomain** (e.g., `yourcompany.bamboohr.com`).
* **API Key (PAT)** (generated above).

### Configuring Webhooks

1. **Log in** to your BambooHR account.
2. **Navigate** to **Settings** (gear icon) → **Account** → **Webhooks**.
3. Click the **+ Add Webhook** button.
4. Enter a **name** for the webhook.
5. Select the **Monitored Fields** that should trigger the webhook.
6. Select the **Posted Fields** to be included in the data payload.
7. Choose the **Data Format** (JSON is recommended).
8. Enter the **Post to URL**.
9. Click **+ Generate Key** to create a **Private Signature Key**.
10. **Copy the signature key** immediately (it won’t be shown again).
11. Click **Save**.

### Code (Apache v2.0): Service Connectivity and Metadata

```
{
  "handle": "bamboohr",
  "status": "active",
  "meta": {
    "short": "BambooHR",
    "description": "A connector for integrating with BambooHR's API to manage employee data, time tracking, and HR workflows.",
    "icon": "bamboohr",
    "tags": ["HR", "Employee Management", "API"]
  },
  "service": {
    "baseURL": {
      "value": "https://api.bamboohr.com/api/gateway.php/{{companyDomain}}"
    },
    "protocol": "https",
    "contentType": "application/json",
    "headers": {
      "Accept": {
        "value": "application/json"
      }
    },
    "auth": {
      "method": "basic",
      "params": {
        "basic": {
          "username": {
            "value": "{{apiKey}}",
            "placeholders": [
              {
                "name": "apiKey",
                "type": "String",
                "description": "BambooHR API key",
                "required": true
              }
            ]
          },
          "password": {
            "value": "x",
            "placeholders": []
          }
        }
      }
    }
  }
}

```

### Code (Apache v2.0): List of External Resources and Internal Mapping

```
[
  {
    "handle": "employees",
    "meta": {
      "short": "Employees",
      "description": "Manage employee records including personal details, job information, and employment status."
    },
    "endpoint": {
      "value": "/employees/directory",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "Integer",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "Unique identifier for the employee."
        }
      },
      {
        "name": "firstName",
        "type": "String",
        "selector": [
          "firstName"
        ],
        "meta": {
          "description": "First name of the employee."
        }
      },
      {
        "name": "lastName",
        "type": "String",
        "selector": [
          "lastName"
        ],
        "meta": {
          "description": "Last name of the employee."
        }
      },
      {
        "name": "jobTitle",
        "type": "String",
        "selector": [
          "jobTitle"
        ],
        "meta": {
          "description": "Current job title of the employee."
        }
      },
      {
        "name": "workEmail",
        "type": "String",
        "selector": [
          "workEmail"
        ],
        "meta": {
          "description": "Work email address of the employee."
        }
      },
      {
        "name": "workPhone",
        "type": "String",
        "selector": [
          "workPhone"
        ],
        "meta": {
          "description": "Work phone number of the employee."
        }
      },
      {
        "name": "hireDate",
        "type": "String",
        "selector": [
          "hireDate"
        ],
        "meta": {
          "description": "Date when the employee was hired."
        }
      },
      {
        "name": "employmentStatus",
        "type": "String",
        "selector": [
          "employmentStatus"
        ],
        "meta": {
          "description": "Current employment status of the employee."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "Integer",
              "description": "The employee ID.",
              "required": true
            }
          ]
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": [
      {
        "event": "employee_created",
        "path": "/webhooks/bamboohr/employee_created",
        "payload": [
          {
            "name": "employeeId",
            "type": "Integer",
            "selector": [
              "employeeId"
            ],
            "meta": {
              "description": "ID of the created employee."
            }
          },
          {
            "name": "eventType",
            "type": "String",
            "selector": [
              "eventType"
            ],
            "meta": {
              "description": "Type of webhook event."
            }
          }
        ]
      },
      {
        "event": "employee_updated",
        "path": "/webhooks/bamboohr/employee_updated",
        "payload": [
          {
            "name": "employeeId",
            "type": "Integer",
            "selector": [
              "employeeId"
            ],
            "meta": {
              "description": "ID of the updated employee."
            }
          },
          {
            "name": "eventType",
            "type": "String",
            "selector": [
              "eventType"
            ],
            "meta": {
              "description": "Type of webhook event."
            }
          }
        ]
      }
    ]
  },
  {
    "handle": "time_off_requests",
    "meta": {
      "short": "Time Off Requests",
      "description": "Manage time off requests including approvals and balances."
    },
    "endpoint": {
      "value": "/time_off/requests",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "Integer",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "Unique identifier for the time off request."
        }
      },
      {
        "name": "employeeId",
        "type": "Integer",
        "selector": [
          "employeeId"
        ],
        "meta": {
          "description": "ID of the employee who made the request."
        }
      },
      {
        "name": "startDate",
        "type": "String",
        "selector": [
          "start"
        ],
        "meta": {
          "description": "Start date of the time off request."
        }
      },
      {
        "name": "endDate",
        "type": "String",
        "selector": [
          "end"
        ],
        "meta": {
          "description": "End date of the time off request."
        }
      },
      {
        "name": "status",
        "type": "String",
        "selector": [
          "status"
        ],
        "meta": {
          "description": "Current status of the time off request."
        }
      },
      {
        "name": "type",
        "type": "String",
        "selector": [
          "type"
        ],
        "meta": {
          "description": "Type of time off requested."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {},
        "queryParams": {
          "start": {
            "value": "{{startDate}}",
            "placeholders": [
              {
                "name": "startDate",
                "type": "String",
                "description": "Start date for filtering requests.",
                "required": false
              }
            ]
          },
          "end": {
            "value": "{{endDate}}",
            "placeholders": [
              {
                "name": "endDate",
                "type": "String",
                "description": "End date for filtering requests.",
                "required": false
              }
            ]
          }
        },
        "bodyTemplate": null
      },
      "create": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"employeeId\": {{employeeId}}, \"start\": \"{{startDate}}\", \"end\": \"{{endDate}}\", \"type\": \"{{type}}\"}",
          "placeholders": [
            {
              "name": "employeeId",
              "type": "Integer",
              "description": "ID of the employee.",
              "required": true
            },
            {
              "name": "startDate",
              "type": "String",
              "description": "Start date of the time off.",
              "required": true
            },
            {
              "name": "endDate",
              "type": "String",
              "description": "End date of the time off.",
              "required": true
            },
            {
              "name": "type",
              "type": "String",
              "description": "Type of time off.",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": [
      {
        "event": "time_off_request_created",
        "path": "/webhooks/bamboohr/time_off_request_created",
        "payload": [
          {
            "name": "requestId",
            "type": "Integer",
            "selector": [
              "requestId"
            ],
            "meta": {
              "description": "ID of the created time off request."
            }
          },
          {
            "name": "employeeId",
            "type": "Integer",
            "selector": [
              "employeeId"
            ],
            "meta": {
              "description": "ID of the employee who made the request."
            }
          }
        ]
      },
      {
        "event": "time_off_request_updated",
        "path": "/webhooks/bamboohr/time_off_request_updated",
        "payload": [
          {
            "name": "requestId",
            "type": "Integer",
            "selector": [
              "requestId"
            ],
            "meta": {
              "description": "ID of the updated time off request."
            }
          },
          {
            "name": "status",
            "type": "String",
            "selector": [
              "status"
            ],
            "meta": {
              "description": "Updated status of the time off request."
            }
          }
        ]
      }
    ]
  },
  {
    "handle": "employee_files",
    "meta": {
      "short": "Employee Files",
      "description": "Manage files and documents associated with employee records."
    },
    "endpoint": {
      "value": "/employees/{{employeeId}}/files/view",
      "placeholders": [
        {
          "name": "employeeId",
          "type": "Integer",
          "description": "The ID of the employee.",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "id",
        "type": "Integer",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "Unique identifier for the file."
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": [
          "name"
        ],
        "meta": {
          "description": "Name of the file."
        }
      },
      {
        "name": "originalFileName",
        "type": "String",
        "selector": [
          "originalFileName"
        ],
        "meta": {
          "description": "Original name of the uploaded file."
        }
      },
      {
        "name": "size",
        "type": "String",
        "selector": [
          "size"
        ],
        "meta": {
          "description": "File size."
        }
      },
      {
        "name": "dateCreated",
        "type": "String",
        "selector": [
          "dateCreated"
        ],
        "meta": {
          "description": "Date the file was added."
        }
      },
      {
        "name": "createdBy",
        "type": "String",
        "selector": [
          "createdBy"
        ],
        "meta": {
          "description": "User who uploaded the file."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{fileId}}",
          "placeholders": [
            {
              "name": "fileId",
              "type": "Integer",
              "description": "The ID of the file.",
              "required": true
            }
          ]
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": []
  },
  {
    "handle": "employee_dependents",
    "meta": {
      "short": "Employee Dependents",
      "description": "Manage the dependents associated with an employee."
    },
    "endpoint": {
      "value": "/employees/{{employeeId}}/dependents",
      "placeholders": [
        {
          "name": "employeeId",
          "type": "Integer",
          "description": "The ID of the employee.",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "id",
        "type": "Integer",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "Unique identifier for the dependent."
        }
      },
      {
        "name": "firstName",
        "type": "String",
        "selector": [
          "firstName"
        ],
        "meta": {
          "description": "First name of the dependent."
        }
      },
      {
        "name": "lastName",
        "type": "String",
        "selector": [
          "lastName"
        ],
        "meta": {
          "description": "Last name of the dependent."
        }
      },
      {
        "name": "relationship",
        "type": "String",
        "selector": [
          "relationship"
        ],
        "meta": {
          "description": "Relationship of the dependent to the employee."
        }
      },
      {
        "name": "gender",
        "type": "String",
        "selector": [
          "gender"
        ],
        "meta": {
          "description": "Gender of the dependent."
        }
      },
      {
        "name": "dateOfBirth",
        "type": "String",
        "selector": [
          "dateOfBirth"
        ],
        "meta": {
          "description": "Date of birth of the dependent."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": []
  },
  {
    "handle": "employment_status",
    "meta": {
      "short": "Employment Status",
      "description": "Track the employment status changes for employees."
    },
    "endpoint": {
      "value": "/employees/status",
      "placeholders": []
    },
    "fields": [
      {
        "name": "employeeId",
        "type": "Integer",
        "selector": [
          "employeeId"
        ],
        "meta": {
          "description": "ID of the employee."
        }
      },
      {
        "name": "status",
        "type": "String",
        "selector": [
          "status"
        ],
        "meta": {
          "description": "Current status."
        }
      },
      {
        "name": "date",
        "type": "String",
        "selector": [
          "date"
        ],
        "meta": {
          "description": "Date of the status change."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": []
  },
  {
    "handle": "capabilities",
    "meta": {
      "short": "Goals",
      "description": "Manage employee goals and objectives."
    },
    "endpoint": {
      "value": "/performance/goals",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "Integer",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "Unique identifier of the goal."
        }
      },
      {
        "name": "title",
        "type": "String",
        "selector": [
          "title"
        ],
        "meta": {
          "description": "Title of the goal."
        }
      },
      {
        "name": "status",
        "type": "String",
        "selector": [
          "status"
        ],
        "meta": {
          "description": "Status of the goal."
        }
      },
      {
        "name": "dueDate",
        "type": "String",
        "selector": [
          "dueDate"
        ],
        "meta": {
          "description": "Due date for the goal."
        }
      },
      {
        "name": "employeeId",
        "type": "Integer",
        "selector": [
          "employeeId"
        ],
        "meta": {
          "description": "ID of the assigned employee."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {},
        "queryParams": {
          "employeeId": {
            "value": "{{employeeId}}",
            "placeholders": [
              {
                "name": "employeeId",
                "type": "Integer",
                "description": "Filter goals by employee ID.",
                "required": false
              }
            ]
          }
        },
        "bodyTemplate": null
      }
    },
    "webhooks": []
  },
  {
    "handle": "employee_directory",
    "meta": {
      "short": "Directory",
      "description": "Access the company directory of employees."
    },
    "endpoint": {
      "value": "/employees/directory",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "Integer",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "Employee ID."
        }
      },
      {
        "name": "displayName",
        "type": "String",
        "selector": [
          "displayName"
        ],
        "meta": {
          "description": "Full display name."
        }
      },
      {
        "name": "jobTitle",
        "type": "String",
        "selector": [
          "jobTitle"
        ],
        "meta": {
          "description": "Job title."
        }
      },
      {
        "name": "department",
        "type": "String",
        "selector": [
          "department"
        ],
        "meta": {
          "description": "Department name."
        }
      },
      {
        "name": "location",
        "type": "String",
        "selector": [
          "location"
        ],
        "meta": {
          "description": "Work location."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": []
  },
  {
    "handle": "applicant_tracking",
    "meta": {
      "short": "Applicants",
      "description": "Manage job applicants and recruiting processes."
    },
    "endpoint": {
      "value": "/applicant_tracking/applications",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "Integer",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "Application ID."
        }
      },
      {
        "name": "candidateId",
        "type": "Integer",
        "selector": [
          "candidate",
          "id"
        ],
        "meta": {
          "description": "Candidate ID."
        }
      },
      {
        "name": "jobId",
        "type": "Integer",
        "selector": [
          "job",
          "id"
        ],
        "meta": {
          "description": "Job ID."
        }
      },
      {
        "name": "status",
        "type": "String",
        "selector": [
          "status",
          "label"
        ],
        "meta": {
          "description": "Application status."
        }
      },
      {
        "name": "appliedDate",
        "type": "String",
        "selector": [
          "appliedDate"
        ],
        "meta": {
          "description": "Date applied."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": []
  },
  {
    "handle": "timesheets",
    "meta": {
      "short": "Timesheets",
      "description": "Manage employee time tracking and timesheet entries."
    },
    "endpoint": {
      "value": "/timesheets/entries",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "Integer",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "Timesheet entry ID."
        }
      },
      {
        "name": "employeeId",
        "type": "Integer",
        "selector": [
          "employeeId"
        ],
        "meta": {
          "description": "Employee ID."
        }
      },
      {
        "name": "date",
        "type": "String",
        "selector": [
          "date"
        ],
        "meta": {
          "description": "Date of the entry."
        }
      },
      {
        "name": "hours",
        "type": "Float",
        "selector": [
          "hours"
        ],
        "meta": {
          "description": "Number of hours worked."
        }
      },
      {
        "name": "projectId",
        "type": "Integer",
        "selector": [
          "projectId"
        ],
        "meta": {
          "description": "Project ID."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {},
        "queryParams": {
          "start": {
            "value": "{{start}}",
            "placeholders": [
              {
                "name": "start",
                "type": "String",
                "description": "Start date for filtering timesheets.",
                "required": false
              }
            ]
          },
          "end": {
            "value": "{{end}}",
            "placeholders": [
              {
                "name": "end",
                "type": "String",
                "description": "End date for filtering timesheets.",
                "required": false
              }
            ]
          }
        },
        "bodyTemplate": null
      }
    },
    "webhooks": []
  },
  {
    "handle": "benefits",
    "meta": {
      "short": "Benefits",
      "description": "Explore and manage employee benefits plans and enrollments."
    },
    "endpoint": {
      "value": "/benefits/plans",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "Integer",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "Benefit plan ID."
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": [
          "name"
        ],
        "meta": {
          "description": "Plan name."
        }
      },
      {
        "name": "provider",
        "type": "String",
        "selector": [
          "provider"
        ],
        "meta": {
          "description": "Provider name."
        }
      },
      {
        "name": "planType",
        "type": "String",
        "selector": [
          "planType"
        ],
        "meta": {
          "description": "Type of the benefit plan."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": []
  },
  {
    "handle": "training",
    "meta": {
      "short": "Training",
      "description": "Track employee training types and completion statuses."
    },
    "endpoint": {
      "value": "/training/type",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "Integer",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "Training type ID."
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": [
          "name"
        ],
        "meta": {
          "description": "Name of the training."
        }
      },
      {
        "name": "description",
        "type": "String",
        "selector": [
          "description"
        ],
        "meta": {
          "description": "Description of the training."
        }
      },
      {
        "name": "required",
        "type": "Boolean",
        "selector": [
          "required"
        ],
        "meta": {
          "description": "Indicates if the training is required."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {},
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": []
  }
]
```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Add Timesheet Clock Entries

BambooHR Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-c2d7ab247af54ce448dc1b40ef9a667e856b0188%2FBambooHR_logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The Add Timesheet Clock Entries action records time entries for employee timesheets.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to add clock entries to an employee's timesheet in BambooHR so that I can accurately track their working hours.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| employeeId | Integer    | Yes      |
| date       | String     | Yes      |
| start      | String     | Yes      |
| end        | String     | Yes      |
| note       | String     | No       |

### Related Connections

[BambooHR](/bamboohr/bamboohr)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "add-timesheet-clock-entries",
  "state": "inDev",
  "meta": {
    "short": "Add Timesheet Clock Entries",
    "description": "Adds clock entries to a timesheet in BambooHR."
  },
  "input": [
    {
      "name": "employeeId",
      "type": "Integer",
      "required": true,
      "meta": {
        "description": "The ID of the employee."
      }
    },
    {
      "name": "date",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The date of the clock entry in YYYY-MM-DD format."
      }
    },
    {
      "name": "start",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The start time of the clock entry in HH:MM format."
      }
    },
    {
      "name": "end",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The end time of the clock entry in HH:MM format."
      }
    },
    {
      "name": "note",
      "type": "String",
      "required": false,
      "meta": {
        "description": "An optional note for the clock entry."
      }
    }
  ],
  "output": [
    {
      "name": "success",
      "type": "Boolean",
      "selector": ["success"],
      "meta": {
        "description": "Indicates if the clock entry was successfully added."
      }
    },
    {
      "name": "message",
      "type": "String",
      "selector": ["message"],
      "meta": {
        "description": "A message describing the result of the operation."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/api/gateway.php/v1/employees/{{employeeId}}/time_clock",
        "headers": {
          "Content-Type": "application/json",
          "Accept": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"date\":\"{{date}}\",\"start\":\"{{start}}\",\"end\":\"{{end}}\",\"note\":\"{{note}}\"}",
          "placeholders": [
            {
              "name": "employeeId",
              "type": "Integer",
              "description": "The ID of the employee.",
              "required": true
            },
            {
              "name": "date",
              "type": "String",
              "description": "The date of the clock entry in YYYY-MM-DD format.",
              "required": true
            },
            {
              "name": "start",
              "type": "String",
              "description": "The start time of the clock entry in HH:MM format.",
              "required": true
            },
            {
              "name": "end",
              "type": "String",
              "description": "The end time of the clock entry in HH:MM format.",
              "required": true
            },
            {
              "name": "note",
              "type": "String",
              "description": "An optional note for the clock entry.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Update Employee

BambooHR Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-c2d7ab247af54ce448dc1b40ef9a667e856b0188%2FBambooHR_logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The Update Employee action modifies an employee's existing record with new or updated information.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to update an employee's details in BambooHR so that I can keep employee records accurate and up-to-date.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| employeeId | String     | Yes      |
| firstName  | String     | No       |
| lastName   | String     | No       |
| jobTitle   | String     | No       |
| workEmail  | String     | No       |
| workPhone  | String     | No       |
| department | String     | No       |
| location   | String     | No       |
| status     | String     | No       |

### Related Connections

[BambooHR](/bamboohr/bamboohr)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "update-employee",
  "state": "inDev",
  "meta": {
    "short": "Update Employee",
    "description": "Update an existing employee's details in BambooHR."
  },
  "input": [
    {
      "name": "employeeId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The unique identifier for the employee in BambooHR."
      }
    },
    {
      "name": "firstName",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The first name of the employee."
      }
    },
    {
      "name": "lastName",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The last name of the employee."
      }
    },
    {
      "name": "jobTitle",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The job title of the employee."
      }
    },
    {
      "name": "workEmail",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The work email address of the employee."
      }
    },
    {
      "name": "workPhone",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The work phone number of the employee."
      }
    },
    {
      "name": "department",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The department of the employee."
      }
    },
    {
      "name": "location",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The location of the employee."
      }
    },
    {
      "name": "status",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The employment status of the employee.",
        "options": ["active", "inactive", "on leave"]
      }
    }
  ],
  "output": [
    {
      "name": "success",
      "type": "Boolean",
      "selector": ["success"],
      "meta": {
        "description": "Indicates whether the update was successful."
      }
    },
    {
      "name": "employeeId",
      "type": "String",
      "selector": ["employeeId"],
      "meta": {
        "description": "The unique identifier for the updated employee."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/api/gateway.php/v1/employees/{{employeeId}}",
        "headers": {
          "Content-Type": "application/json",
          "Accept": "application/json"
        },
        "bodyTemplate": {
          "value": "{\n  \"firstName\": \"{{firstName}}\",\n  \"lastName\": \"{{lastName}}\",\n  \"jobTitle\": \"{{jobTitle}}\",\n  \"workEmail\": \"{{workEmail}}\",\n  \"workPhone\": \"{{workPhone}}\",\n  \"department\": \"{{department}}\",\n  \"location\": \"{{location}}\",\n  \"status\": \"{{status}}\"\n}",
          "placeholders": [
            {
              "name": "employeeId",
              "type": "String",
              "description": "The unique identifier for the employee in BambooHR.",
              "required": true
            },
            {
              "name": "firstName",
              "type": "String",
              "description": "The first name of the employee.",
              "required": false
            },
            {
              "name": "lastName",
              "type": "String",
              "description": "The last name of the employee.",
              "required": false
            },
            {
              "name": "jobTitle",
              "type": "String",
              "description": "The job title of the employee.",
              "required": false
            },
            {
              "name": "workEmail",
              "type": "String",
              "description": "The work email address of the employee.",
              "required": false
            },
            {
              "name": "workPhone",
              "type": "String",
              "description": "The work phone number of the employee.",
              "required": false
            },
            {
              "name": "department",
              "type": "String",
              "description": "The department of the employee.",
              "required": false
            },
            {
              "name": "location",
              "type": "String",
              "description": "The location of the employee.",
              "required": false
            },
            {
              "name": "status",
              "type": "String",
              "description": "The employment status of the employee.",
              "required": false,
              "options": ["active", "inactive", "on leave"]
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: API Request

BambooHR Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-c2d7ab247af54ce448dc1b40ef9a667e856b0188%2FBambooHR_logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The API Request action sends a custom API call to interact with BambooHR's system.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to make API requests to BambooHR so that I can integrate employee data with other systems.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| endpoint   | String     | Yes      |
| method     | String     | Yes      |
| body       | String     | No       |
| headers    | String     | No       |

### Related Connections

[BambooHR](/bamboohr/bamboohr)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "api-request",
  "state": "inDev",
  "meta": {
    "short": "API Request",
    "description": "Make an API request to BambooHR"
  },
  "input": [
    {
      "name": "endpoint",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The BambooHR API endpoint to call"
      }
    },
    {
      "name": "method",
      "type": "String",
      "required": true,
      "meta": {
        "description": "HTTP method to use (GET, POST, PUT, PATCH, DELETE)"
      }
    },
    {
      "name": "body",
      "type": "String",
      "required": false,
      "meta": {
        "description": "Request body for POST/PUT/PATCH requests"
      }
    },
    {
      "name": "headers",
      "type": "String",
      "required": false,
      "meta": {
        "description": "Additional headers as JSON string"
      }
    }
  ],
  "output": [
    {
      "name": "response",
      "type": "String",
      "selector": ["body"],
      "meta": {
        "description": "Raw response from BambooHR API"
      }
    },
    {
      "name": "statusCode",
      "type": "Integer",
      "selector": ["status"],
      "meta": {
        "description": "HTTP status code of the response"
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "{{method}}",
        "path": "{{endpoint}}",
        "headers": {
          "Content-Type": "application/json",
          "Accept": "application/json",
          "{{#if headers}}{{headers}}{{/if}}": ""
        },
        "bodyTemplate": {
          "value": "{{#if body}}{{body}}{{/if}}"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Get Summary of Who's Out

BambooHR Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-c2d7ab247af54ce448dc1b40ef9a667e856b0188%2FBambooHR_logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The Get Summary of Who's Out query retrieves a list of employees currently on leave or absent.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to retrieve a summary of who's out in my department this week so that I can plan resources accordingly.

#### Fields

| Field Name   | Field Type | Required |
| ------------ | ---------- | -------- |
| departmentId | Integer    | No       |
| startDate    | String     | No       |
| endDate      | String     | No       |

### Related Connections

[BambooHR](/bamboohr/bamboohr)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "get-summary-of-whos-out",
  "state": "inDev",
  "meta": {
    "short": "Get Summary of Who's Out",
    "description": "Retrieves a summary of employees who are currently out of the office."
  },
  "input": [
    {
      "name": "departmentId",
      "type": "Integer",
      "required": false,
      "meta": {
        "description": "Filter by department ID."
      }
    },
    {
      "name": "startDate",
      "type": "String",
      "required": false,
      "meta": {
        "description": "Start date for the time-off summary (format: YYYY-MM-DD)."
      }
    },
    {
      "name": "endDate",
      "type": "String",
      "required": false,
      "meta": {
        "description": "End date for the time-off summary (format: YYYY-MM-DD)."
      }
    }
  ],
  "output": [
    {
      "name": "summary",
      "type": "String",
      "selector": ["data", "summary"],
      "meta": {
        "description": "Summary of employees who are out."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/reports/whos_out",
        "headers": {
          "Accept": "application/json"
        },
        "queryParams": {
          "departmentId": "{{departmentId}}",
          "startDate": "{{startDate}}",
          "endDate": "{{endDate}}"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Bluesky

Bluesky Connection

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-150dcbfacd14c4fee7a8e63d801a268e09e30e35%2FBluesky_Logo.svg.png?alt=media" alt="" width="188"><figcaption></figcaption></figure>

<h3 align="center">Put Bluesky to Work with @Human Automations and @Human Agents</h3>

<p align="center">The Bluesky Connection documents all Triggers, Actions and Query Operations available for creating automations via the Bluesky API.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### What can you do with the Bluesky Connection?

* Connect to the Bluesky API in a few clicks
* Use the related Bluesky Operations (see below) in @Human Automations or @Human Agents

### Related Operations

#### Action Operations

[Action: Like Post](/bluesky/bluesky/action-like-post)

[Action: Repost Post](/bluesky/bluesky/action-repost-post)

[Action: Create Post](/bluesky/bluesky/action-create-post)

#### Query Operations

[Query: Find Thread](/bluesky/bluesky/query-find-thread)

### Related Automations

Example link

### Obtaining Access Credentials

To obtain a **Personal Access Token (PAT)** for **Bluesky**, follow these steps:

1. **Log in** to your Bluesky account at <https://bsky.app> (ensure you're using the correct account if managing multiple).
2. Navigate to **Settings**:
   * Click your profile icon (top-right).
   * Select **"Settings"** from the dropdown.
3. Go to **App Passwords**:
   * In the left sidebar, select **"App Passwords"** (under "Advanced").
4. **Generate a new token**:
   * Click **"Generate New Password"**.
   * Enter a descriptive name (e.g., "API Access").
   * Click **"Create"**.
5. **Copy the token**:
   * The token will appear **once**—copy it immediately.

***

**Token Scope**: This PAT grants full account access. Use securely.

### Configuring Webhooks

1. **Identify a Relay Endpoint**: Select a public Jetstream relay (e.g., `wss://jetstream2.us-east.bsky.network/subscribe`).
2. **Define Subscription Filters**: Specify the `wantedCollections` (e.g., `app.bsky.feed.post`) using query parameters in the connection URL.
3. **Establish a Persistent Connection**: Open a WebSocket connection to the relay to receive a real-time JSON stream of network activity.
4. **Implement an Event Listener**: Create a consumer service to parse the incoming stream and filter for relevant events.
5. **Forward to a Webhook URL**: Configure your service to execute an HTTP POST request to your target endpoint for each matching event.

### Code (Apache v2.0): Service Connectivity and Metadata

```
{
  "handle": "bluesky-v1",
  "status": "active",
  "meta": {
    "short": "Bluesky",
    "description": "Connect to Bluesky's social networking API to interact with posts, users, and feeds.",
    "icon": "bluesky",
    "tags": ["social", "api", "networking"]
  },
  "service": {
    "baseURL": {
      "value": "https://bsky.social/xrpc/{{endpoint}}"
    },
    "protocol": "https",
    "contentType": "application/json",
    "headers": {
      "Accept": {
        "value": "application/json"
      }
    },
    "auth": {
      "method": "api_token",
      "params": {
        "apiToken": {
          "token": {
            "value": "{{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Bluesky access token for authentication",
                "required": true
              }
            ]
          },
          "headerName": {
            "value": "Authorization"
          }
        }
      }
    }
  }
}

```

### Code (Apache v2.0): List of External Resources and Internal Mapping

```json
[
  {
    "handle": "app-bsky-actor-getPreferences",
    "meta": {
      "short": "getPreferences",
      "description": "Get private preferences attached to the current account. Expected use is synchronization between multiple devices, and import/export during account migration. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.actor.getPreferences",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-actor-getProfile",
    "meta": {
      "short": "getProfile",
      "description": "Get detailed profile view of an actor. Does not require auth, but contains relevant metadata with auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.actor.getProfile",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "actor": {
            "value": "{{actor}}",
            "placeholders": [
              {
                "name": "actor",
                "type": "String",
                "description": "Handle or DID of account to fetch profile of.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-actor-getProfiles",
    "meta": {
      "short": "getProfiles",
      "description": "Get detailed profile views of multiple actors."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.actor.getProfiles",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "actors": {
            "value": "{{actors}}",
            "placeholders": [
              {
                "name": "actors",
                "type": "Integer",
                "description": "actors",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-actor-getSuggestions",
    "meta": {
      "short": "getSuggestions",
      "description": "Get a list of suggested actors. Expected use is discovery of accounts to follow during new account onboarding."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.actor.getSuggestions",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-actor-putPreferences",
    "meta": {
      "short": "putPreferences",
      "description": "Set the private preferences attached to the account."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.actor.putPreferences",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"preferences\": \"{{preferences}}\"}",
          "placeholders": [
            {
              "name": "preferences",
              "type": "Integer",
              "description": "preferences",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-actor-searchActors",
    "meta": {
      "short": "searchActors",
      "description": "Find actors (profiles) matching search criteria. Does not require auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.actor.searchActors",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "term": {
            "value": "{{term}}",
            "placeholders": [
              {
                "name": "term",
                "type": "String",
                "description": "DEPRECATED: use 'q' instead.",
                "required": false
              }
            ]
          },
          "q": {
            "value": "{{q}}",
            "placeholders": [
              {
                "name": "q",
                "type": "String",
                "description": "Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "25"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-actor-searchActorsTypeahead",
    "meta": {
      "short": "searchActorsTypeahead",
      "description": "Find actor suggestions for a prefix search term. Expected use is for auto-completion during text field entry. Does not require auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.actor.searchActorsTypeahead",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "term": {
            "value": "{{term}}",
            "placeholders": [
              {
                "name": "term",
                "type": "String",
                "description": "DEPRECATED: use 'q' instead.",
                "required": false
              }
            ]
          },
          "q": {
            "value": "{{q}}",
            "placeholders": [
              {
                "name": "q",
                "type": "String",
                "description": "Search query prefix; not a full query string.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "10"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-ageassurance-begin",
    "meta": {
      "short": "begin",
      "description": "Initiate Age Assurance for an account."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.ageassurance.begin",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"email\": \"{{email}}\", \"language\": \"{{language}}\", \"countryCode\": \"{{countryCode}}\", \"regionCode\": \"{{regionCode}}\"}",
          "placeholders": [
            {
              "name": "email",
              "type": "String",
              "description": "The user's email address to receive Age Assurance instructions.",
              "required": true
            },
            {
              "name": "language",
              "type": "String",
              "description": "The user's preferred language for communication during the Age Assurance process.",
              "required": true
            },
            {
              "name": "countryCode",
              "type": "String",
              "description": "An ISO 3166-1 alpha-2 code of the user's location.",
              "required": true
            },
            {
              "name": "regionCode",
              "type": "String",
              "description": "An optional ISO 3166-2 code of the user's region or state within the country.",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-ageassurance-getConfig",
    "meta": {
      "short": "getConfig",
      "description": "Returns Age Assurance configuration for use on the client."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.ageassurance.getConfig",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-ageassurance-getState",
    "meta": {
      "short": "getState",
      "description": "Returns server-computed Age Assurance state, if available, and any additional metadata needed to compute Age Assurance state client-side."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.ageassurance.getState",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "countryCode": {
            "value": "{{countryCode}}",
            "placeholders": [
              {
                "name": "countryCode",
                "type": "String",
                "description": "countryCode",
                "required": true
              }
            ]
          },
          "regionCode": {
            "value": "{{regionCode}}",
            "placeholders": [
              {
                "name": "regionCode",
                "type": "String",
                "description": "regionCode",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-bookmark-createBookmark",
    "meta": {
      "short": "createBookmark",
      "description": "Creates a private bookmark for the specified record. Currently, only `app.bsky.feed.post` records are supported. Requires authentication."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.bookmark.createBookmark",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"uri\": \"{{uri}}\", \"cid\": \"{{cid}}\"}",
          "placeholders": [
            {
              "name": "uri",
              "type": "String",
              "description": "uri",
              "required": true
            },
            {
              "name": "cid",
              "type": "String",
              "description": "cid",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-bookmark-deleteBookmark",
    "meta": {
      "short": "deleteBookmark",
      "description": "Deletes a private bookmark for the specified record. Currently, only `app.bsky.feed.post` records are supported. Requires authentication."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.bookmark.deleteBookmark",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"uri\": \"{{uri}}\"}",
          "placeholders": [
            {
              "name": "uri",
              "type": "String",
              "description": "uri",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-bookmark-getBookmarks",
    "meta": {
      "short": "getBookmarks",
      "description": "Gets views of records bookmarked by the authenticated user. Requires authentication."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.bookmark.getBookmarks",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-contact-dismissMatch",
    "meta": {
      "short": "dismissMatch",
      "description": "Removes a match that was found via contact import. It shouldn't appear again if the same contact is re-imported. Requires authentication."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.contact.dismissMatch",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"subject\": \"{{subject}}\"}",
          "placeholders": [
            {
              "name": "subject",
              "type": "String",
              "description": "The subject's DID to dismiss the match with.",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-contact-getMatches",
    "meta": {
      "short": "getMatches",
      "description": "Returns the matched contacts (contacts that were mutually imported). Excludes dismissed matches. Requires authentication."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.contact.getMatches",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-contact-getSyncStatus",
    "meta": {
      "short": "getSyncStatus",
      "description": "Gets the user's current contact import status. Requires authentication."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.contact.getSyncStatus",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-contact-importContacts",
    "meta": {
      "short": "importContacts",
      "description": "Import contacts for securely matching with other users. This follows the protocol explained in https://docs.bsky.app/blog/contact-import-rfc. Requires authentication."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.contact.importContacts",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"token\": \"{{token}}\", \"contacts\": \"{{contacts}}\"}",
          "placeholders": [
            {
              "name": "token",
              "type": "String",
              "description": "JWT to authenticate the call. Use the JWT received as a response to the call to `app.bsky.contact.verifyPhone`.",
              "required": true
            },
            {
              "name": "contacts",
              "type": "Integer",
              "description": "List of phone numbers in global E.164 format (e.g., '+12125550123'). Phone numbers that cannot be normalized into a valid phone number will be discarded. Should not repeat the 'phone' input used in `app.bsky.contact.verifyPhone`.",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-contact-removeData",
    "meta": {
      "short": "removeData",
      "description": "Removes all stored hashes used for contact matching, existing matches, and sync status. Requires authentication."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.contact.removeData",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-contact-sendNotification",
    "meta": {
      "short": "sendNotification",
      "description": "System endpoint to send notifications related to contact imports. Requires role authentication."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.contact.sendNotification",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"from\": \"{{from}}\", \"to\": \"{{to}}\"}",
          "placeholders": [
            {
              "name": "from",
              "type": "String",
              "description": "The DID of who this notification comes from.",
              "required": true
            },
            {
              "name": "to",
              "type": "String",
              "description": "The DID of who this notification should go to.",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-contact-startPhoneVerification",
    "meta": {
      "short": "startPhoneVerification",
      "description": "Starts a phone verification flow. The phone passed will receive a code via SMS that should be passed to `app.bsky.contact.verifyPhone`. Requires authentication."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.contact.startPhoneVerification",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"phone\": \"{{phone}}\"}",
          "placeholders": [
            {
              "name": "phone",
              "type": "String",
              "description": "The phone number to receive the code via SMS.",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-contact-verifyPhone",
    "meta": {
      "short": "verifyPhone",
      "description": "Verifies control over a phone number with a code received via SMS and starts a contact import session. Requires authentication."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.contact.verifyPhone",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"phone\": \"{{phone}}\", \"code\": \"{{code}}\"}",
          "placeholders": [
            {
              "name": "phone",
              "type": "String",
              "description": "The phone number to verify. Should be the same as the one passed to `app.bsky.contact.startPhoneVerification`.",
              "required": true
            },
            {
              "name": "code",
              "type": "String",
              "description": "The code received via SMS as a result of the call to `app.bsky.contact.startPhoneVerification`.",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-draft-createDraft",
    "meta": {
      "short": "createDraft",
      "description": "Inserts a draft using private storage (stash). An upper limit of drafts might be enforced. Requires authentication."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.draft.createDraft",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"draft\": \"{{draft}}\"}",
          "placeholders": [
            {
              "name": "draft",
              "type": "Integer",
              "description": "draft",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-draft-deleteDraft",
    "meta": {
      "short": "deleteDraft",
      "description": "Deletes a draft by ID. Requires authentication."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.draft.deleteDraft",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"id\": \"{{id}}\"}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "id",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-draft-getDrafts",
    "meta": {
      "short": "getDrafts",
      "description": "Gets views of user drafts. Requires authentication."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.draft.getDrafts",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-draft-updateDraft",
    "meta": {
      "short": "updateDraft",
      "description": "Updates a draft using private storage (stash). If the draft ID points to a non-existing ID, the update will be silently ignored. This is done because updates don't enforce draft limit, so it accepts all writes, but will ignore invalid ones. Requires authentication."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.draft.updateDraft",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"draft\": \"{{draft}}\"}",
          "placeholders": [
            {
              "name": "draft",
              "type": "Integer",
              "description": "draft",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-describeFeedGenerator",
    "meta": {
      "short": "describeFeedGenerator",
      "description": "Get information about a feed generator, including policies and offered feed URIs. Does not require auth; implemented by Feed Generator services (not App View)."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.describeFeedGenerator",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-getActorFeeds",
    "meta": {
      "short": "getActorFeeds",
      "description": "Get a list of feeds (feed generator records) created by the actor (in the actor's repo)."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.getActorFeeds",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "actor": {
            "value": "{{actor}}",
            "placeholders": [
              {
                "name": "actor",
                "type": "String",
                "description": "actor",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-getActorLikes",
    "meta": {
      "short": "getActorLikes",
      "description": "Get a list of posts liked by an actor. Requires auth, actor must be the requesting account."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.getActorLikes",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "actor": {
            "value": "{{actor}}",
            "placeholders": [
              {
                "name": "actor",
                "type": "String",
                "description": "actor",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-getAuthorFeed",
    "meta": {
      "short": "getAuthorFeed",
      "description": "Get a view of an actor's 'author feed' (post and reposts by the author). Does not require auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.getAuthorFeed",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "actor": {
            "value": "{{actor}}",
            "placeholders": [
              {
                "name": "actor",
                "type": "String",
                "description": "actor",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          },
          "filter": {
            "value": "{{filter}}",
            "placeholders": [
              {
                "name": "filter",
                "type": "String",
                "description": "Combinations of post/repost types to include in response.",
                "required": false,
                "default": "posts_with_replies"
              }
            ]
          },
          "includePins": {
            "value": "{{includePins}}",
            "placeholders": [
              {
                "name": "includePins",
                "type": "Integer",
                "description": "includePins",
                "required": false,
                "default": "False"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-getFeed",
    "meta": {
      "short": "getFeed",
      "description": "Get a hydrated feed from an actor's selected feed generator. Implemented by App View."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.getFeed",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "feed": {
            "value": "{{feed}}",
            "placeholders": [
              {
                "name": "feed",
                "type": "String",
                "description": "feed",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-getFeedGenerator",
    "meta": {
      "short": "getFeedGenerator",
      "description": "Get information about a feed generator. Implemented by AppView."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.getFeedGenerator",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "feed": {
            "value": "{{feed}}",
            "placeholders": [
              {
                "name": "feed",
                "type": "String",
                "description": "AT-URI of the feed generator record.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-getFeedGenerators",
    "meta": {
      "short": "getFeedGenerators",
      "description": "Get information about a list of feed generators."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.getFeedGenerators",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "feeds": {
            "value": "{{feeds}}",
            "placeholders": [
              {
                "name": "feeds",
                "type": "Integer",
                "description": "feeds",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-getFeedSkeleton",
    "meta": {
      "short": "getFeedSkeleton",
      "description": "Get a skeleton of a feed provided by a feed generator. Auth is optional, depending on provider requirements, and provides the DID of the requester. Implemented by Feed Generator Service."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.getFeedSkeleton",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "feed": {
            "value": "{{feed}}",
            "placeholders": [
              {
                "name": "feed",
                "type": "String",
                "description": "Reference to feed generator record describing the specific feed being requested.",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-getLikes",
    "meta": {
      "short": "getLikes",
      "description": "Get like records which reference a subject (by AT-URI and CID)."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.getLikes",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "uri": {
            "value": "{{uri}}",
            "placeholders": [
              {
                "name": "uri",
                "type": "String",
                "description": "AT-URI of the subject (eg, a post record).",
                "required": true
              }
            ]
          },
          "cid": {
            "value": "{{cid}}",
            "placeholders": [
              {
                "name": "cid",
                "type": "String",
                "description": "CID of the subject record (aka, specific version of record), to filter likes.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-getListFeed",
    "meta": {
      "short": "getListFeed",
      "description": "Get a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.getListFeed",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "list": {
            "value": "{{list}}",
            "placeholders": [
              {
                "name": "list",
                "type": "String",
                "description": "Reference (AT-URI) to the list record.",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-getPostThread",
    "meta": {
      "short": "getPostThread",
      "description": "Get posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.getPostThread",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "uri": {
            "value": "{{uri}}",
            "placeholders": [
              {
                "name": "uri",
                "type": "String",
                "description": "Reference (AT-URI) to post record.",
                "required": true
              }
            ]
          },
          "depth": {
            "value": "{{depth}}",
            "placeholders": [
              {
                "name": "depth",
                "type": "Integer",
                "description": "How many levels of reply depth should be included in response.",
                "required": false,
                "default": "6"
              }
            ]
          },
          "parentHeight": {
            "value": "{{parentHeight}}",
            "placeholders": [
              {
                "name": "parentHeight",
                "type": "Integer",
                "description": "How many levels of parent (and grandparent, etc) post to include.",
                "required": false,
                "default": "80"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-getPosts",
    "meta": {
      "short": "getPosts",
      "description": "Gets post views for a specified list of posts (by AT-URI). This is sometimes referred to as 'hydrating' a 'feed skeleton'."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.getPosts",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "uris": {
            "value": "{{uris}}",
            "placeholders": [
              {
                "name": "uris",
                "type": "Integer",
                "description": "List of post AT-URIs to return hydrated views for.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-getQuotes",
    "meta": {
      "short": "getQuotes",
      "description": "Get a list of quotes for a given post."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.getQuotes",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "uri": {
            "value": "{{uri}}",
            "placeholders": [
              {
                "name": "uri",
                "type": "String",
                "description": "Reference (AT-URI) of post record",
                "required": true
              }
            ]
          },
          "cid": {
            "value": "{{cid}}",
            "placeholders": [
              {
                "name": "cid",
                "type": "String",
                "description": "If supplied, filters to quotes of specific version (by CID) of the post record.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-getRepostedBy",
    "meta": {
      "short": "getRepostedBy",
      "description": "Get a list of reposts for a given post."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.getRepostedBy",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "uri": {
            "value": "{{uri}}",
            "placeholders": [
              {
                "name": "uri",
                "type": "String",
                "description": "Reference (AT-URI) of post record",
                "required": true
              }
            ]
          },
          "cid": {
            "value": "{{cid}}",
            "placeholders": [
              {
                "name": "cid",
                "type": "String",
                "description": "If supplied, filters to reposts of specific version (by CID) of the post record.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-getSuggestedFeeds",
    "meta": {
      "short": "getSuggestedFeeds",
      "description": "Get a list of suggested feeds (feed generators) for the requesting account."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.getSuggestedFeeds",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-getTimeline",
    "meta": {
      "short": "getTimeline",
      "description": "Get a view of the requesting account's home timeline. This is expected to be some form of reverse-chronological feed."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.getTimeline",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "algorithm": {
            "value": "{{algorithm}}",
            "placeholders": [
              {
                "name": "algorithm",
                "type": "String",
                "description": "Variant 'algorithm' for timeline. Implementation-specific. NOTE: most feed flexibility has been moved to feed generator mechanism.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-searchPosts",
    "meta": {
      "short": "searchPosts",
      "description": "Find posts matching search criteria, returning views of those posts. Note that this API endpoint may require authentication (eg, not public) for some service providers and implementations."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.searchPosts",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "q": {
            "value": "{{q}}",
            "placeholders": [
              {
                "name": "q",
                "type": "String",
                "description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.",
                "required": true
              }
            ]
          },
          "sort": {
            "value": "{{sort}}",
            "placeholders": [
              {
                "name": "sort",
                "type": "String",
                "description": "Specifies the ranking order of results.",
                "required": false,
                "default": "latest"
              }
            ]
          },
          "since": {
            "value": "{{since}}",
            "placeholders": [
              {
                "name": "since",
                "type": "String",
                "description": "Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYYY-MM-DD).",
                "required": false
              }
            ]
          },
          "until": {
            "value": "{{until}}",
            "placeholders": [
              {
                "name": "until",
                "type": "String",
                "description": "Filter results for posts before the indicated datetime (not inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYY-MM-DD).",
                "required": false
              }
            ]
          },
          "mentions": {
            "value": "{{mentions}}",
            "placeholders": [
              {
                "name": "mentions",
                "type": "String",
                "description": "Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions.",
                "required": false
              }
            ]
          },
          "author": {
            "value": "{{author}}",
            "placeholders": [
              {
                "name": "author",
                "type": "String",
                "description": "Filter to posts by the given account. Handles are resolved to DID before query-time.",
                "required": false
              }
            ]
          },
          "lang": {
            "value": "{{lang}}",
            "placeholders": [
              {
                "name": "lang",
                "type": "String",
                "description": "Filter to posts in the given language. Expected to be based on post language field, though server may override language detection.",
                "required": false
              }
            ]
          },
          "domain": {
            "value": "{{domain}}",
            "placeholders": [
              {
                "name": "domain",
                "type": "String",
                "description": "Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization.",
                "required": false
              }
            ]
          },
          "url": {
            "value": "{{url}}",
            "placeholders": [
              {
                "name": "url",
                "type": "String",
                "description": "Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching.",
                "required": false
              }
            ]
          },
          "tag": {
            "value": "{{tag}}",
            "placeholders": [
              {
                "name": "tag",
                "type": "Integer",
                "description": "Filter to posts with the given tag (hashtag), based on rich-text facet or tag field. Do not include the hash (#) prefix. Multiple tags can be specified, with 'AND' matching.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "25"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set.",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-feed-sendInteractions",
    "meta": {
      "short": "sendInteractions",
      "description": "Send information about interactions with feed items back to the feed generator that served them."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.feed.sendInteractions",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"feed\": \"{{feed}}\", \"interactions\": \"{{interactions}}\"}",
          "placeholders": [
            {
              "name": "feed",
              "type": "String",
              "description": "feed",
              "required": false
            },
            {
              "name": "interactions",
              "type": "Integer",
              "description": "interactions",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getActorStarterPacks",
    "meta": {
      "short": "getActorStarterPacks",
      "description": "Get a list of starter packs created by the actor."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getActorStarterPacks",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "actor": {
            "value": "{{actor}}",
            "placeholders": [
              {
                "name": "actor",
                "type": "String",
                "description": "actor",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getBlocks",
    "meta": {
      "short": "getBlocks",
      "description": "Enumerates which accounts the requesting account is currently blocking. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getBlocks",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getFollowers",
    "meta": {
      "short": "getFollowers",
      "description": "Enumerates accounts which follow a specified account (actor)."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getFollowers",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "actor": {
            "value": "{{actor}}",
            "placeholders": [
              {
                "name": "actor",
                "type": "String",
                "description": "actor",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getFollows",
    "meta": {
      "short": "getFollows",
      "description": "Enumerates accounts which a specified account (actor) follows."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getFollows",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "actor": {
            "value": "{{actor}}",
            "placeholders": [
              {
                "name": "actor",
                "type": "String",
                "description": "actor",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getKnownFollowers",
    "meta": {
      "short": "getKnownFollowers",
      "description": "Enumerates accounts which follow a specified account (actor) and are followed by the viewer."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getKnownFollowers",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "actor": {
            "value": "{{actor}}",
            "placeholders": [
              {
                "name": "actor",
                "type": "String",
                "description": "actor",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getList",
    "meta": {
      "short": "getList",
      "description": "Gets a 'view' (with additional context) of a specified list."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getList",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "list": {
            "value": "{{list}}",
            "placeholders": [
              {
                "name": "list",
                "type": "String",
                "description": "Reference (AT-URI) of the list record to hydrate.",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getListBlocks",
    "meta": {
      "short": "getListBlocks",
      "description": "Get mod lists that the requesting account (actor) is blocking. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getListBlocks",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getListMutes",
    "meta": {
      "short": "getListMutes",
      "description": "Enumerates mod lists that the requesting account (actor) currently has muted. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getListMutes",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getLists",
    "meta": {
      "short": "getLists",
      "description": "Enumerates the lists created by a specified account (actor)."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getLists",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "actor": {
            "value": "{{actor}}",
            "placeholders": [
              {
                "name": "actor",
                "type": "String",
                "description": "The account (actor) to enumerate lists from.",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          },
          "purposes": {
            "value": "{{purposes}}",
            "placeholders": [
              {
                "name": "purposes",
                "type": "Integer",
                "description": "Optional filter by list purpose. If not specified, all supported types are returned.",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getListsWithMembership",
    "meta": {
      "short": "getListsWithMembership",
      "description": "Enumerates the lists created by the session user, and includes membership information about `actor` in those lists. Only supports curation and moderation lists (no reference lists, used in starter packs). Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getListsWithMembership",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "actor": {
            "value": "{{actor}}",
            "placeholders": [
              {
                "name": "actor",
                "type": "String",
                "description": "The account (actor) to check for membership.",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          },
          "purposes": {
            "value": "{{purposes}}",
            "placeholders": [
              {
                "name": "purposes",
                "type": "Integer",
                "description": "Optional filter by list purpose. If not specified, all supported types are returned.",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getMutes",
    "meta": {
      "short": "getMutes",
      "description": "Enumerates accounts that the requesting account (actor) currently has muted. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getMutes",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getRelationships",
    "meta": {
      "short": "getRelationships",
      "description": "Enumerates public relationships between one account, and a list of other accounts. Does not require auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getRelationships",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "actor": {
            "value": "{{actor}}",
            "placeholders": [
              {
                "name": "actor",
                "type": "String",
                "description": "Primary account requesting relationships for.",
                "required": true
              }
            ]
          },
          "others": {
            "value": "{{others}}",
            "placeholders": [
              {
                "name": "others",
                "type": "Integer",
                "description": "List of 'other' accounts to be related back to the primary.",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getStarterPack",
    "meta": {
      "short": "getStarterPack",
      "description": "Gets a view of a starter pack."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getStarterPack",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "starterPack": {
            "value": "{{starterPack}}",
            "placeholders": [
              {
                "name": "starterPack",
                "type": "String",
                "description": "Reference (AT-URI) of the starter pack record.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getStarterPacks",
    "meta": {
      "short": "getStarterPacks",
      "description": "Get views for a list of starter packs."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getStarterPacks",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "uris": {
            "value": "{{uris}}",
            "placeholders": [
              {
                "name": "uris",
                "type": "Integer",
                "description": "uris",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getStarterPacksWithMembership",
    "meta": {
      "short": "getStarterPacksWithMembership",
      "description": "Enumerates the starter packs created by the session user, and includes membership information about `actor` in those starter packs. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getStarterPacksWithMembership",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "actor": {
            "value": "{{actor}}",
            "placeholders": [
              {
                "name": "actor",
                "type": "String",
                "description": "The account (actor) to check for membership.",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-getSuggestedFollowsByActor",
    "meta": {
      "short": "getSuggestedFollowsByActor",
      "description": "Enumerates follows similar to a given account (actor). Expected use is to recommend additional accounts immediately after following one account."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.getSuggestedFollowsByActor",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "actor": {
            "value": "{{actor}}",
            "placeholders": [
              {
                "name": "actor",
                "type": "String",
                "description": "actor",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-muteActor",
    "meta": {
      "short": "muteActor",
      "description": "Creates a mute relationship for the specified account. Mutes are private in Bluesky. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.muteActor",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"actor\": \"{{actor}}\"}",
          "placeholders": [
            {
              "name": "actor",
              "type": "String",
              "description": "actor",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-muteActorList",
    "meta": {
      "short": "muteActorList",
      "description": "Creates a mute relationship for the specified list of accounts. Mutes are private in Bluesky. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.muteActorList",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"list\": \"{{list}}\"}",
          "placeholders": [
            {
              "name": "list",
              "type": "String",
              "description": "list",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-muteThread",
    "meta": {
      "short": "muteThread",
      "description": "Mutes a thread preventing notifications from the thread and any of its children. Mutes are private in Bluesky. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.muteThread",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"root\": \"{{root}}\"}",
          "placeholders": [
            {
              "name": "root",
              "type": "String",
              "description": "root",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-searchStarterPacks",
    "meta": {
      "short": "searchStarterPacks",
      "description": "Find starter packs matching search criteria. Does not require auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.searchStarterPacks",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "q": {
            "value": "{{q}}",
            "placeholders": [
              {
                "name": "q",
                "type": "String",
                "description": "Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "25"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-unmuteActor",
    "meta": {
      "short": "unmuteActor",
      "description": "Unmutes the specified account. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.unmuteActor",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"actor\": \"{{actor}}\"}",
          "placeholders": [
            {
              "name": "actor",
              "type": "String",
              "description": "actor",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-unmuteActorList",
    "meta": {
      "short": "unmuteActorList",
      "description": "Unmutes the specified list of accounts. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.unmuteActorList",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"list\": \"{{list}}\"}",
          "placeholders": [
            {
              "name": "list",
              "type": "String",
              "description": "list",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-graph-unmuteThread",
    "meta": {
      "short": "unmuteThread",
      "description": "Unmutes the specified thread. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.graph.unmuteThread",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"root\": \"{{root}}\"}",
          "placeholders": [
            {
              "name": "root",
              "type": "String",
              "description": "root",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-labeler-getServices",
    "meta": {
      "short": "getServices",
      "description": "Get information about a list of labeler services."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.labeler.getServices",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "dids": {
            "value": "{{dids}}",
            "placeholders": [
              {
                "name": "dids",
                "type": "Integer",
                "description": "dids",
                "required": true
              }
            ]
          },
          "detailed": {
            "value": "{{detailed}}",
            "placeholders": [
              {
                "name": "detailed",
                "type": "Integer",
                "description": "detailed",
                "required": false,
                "default": "False"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-notification-getPreferences",
    "meta": {
      "short": "getPreferences",
      "description": "Get notification-related preferences for an account. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.notification.getPreferences",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-notification-getUnreadCount",
    "meta": {
      "short": "getUnreadCount",
      "description": "Count the number of unread notifications for the requesting account. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.notification.getUnreadCount",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "priority": {
            "value": "{{priority}}",
            "placeholders": [
              {
                "name": "priority",
                "type": "Integer",
                "description": "priority",
                "required": false
              }
            ]
          },
          "seenAt": {
            "value": "{{seenAt}}",
            "placeholders": [
              {
                "name": "seenAt",
                "type": "String",
                "description": "seenAt",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-notification-listActivitySubscriptions",
    "meta": {
      "short": "listActivitySubscriptions",
      "description": "Enumerate all accounts to which the requesting account is subscribed to receive notifications for. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.notification.listActivitySubscriptions",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-notification-listNotifications",
    "meta": {
      "short": "listNotifications",
      "description": "Enumerate notifications for the requesting account. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.notification.listNotifications",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "reasons": {
            "value": "{{reasons}}",
            "placeholders": [
              {
                "name": "reasons",
                "type": "Integer",
                "description": "Notification reasons to include in response.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "priority": {
            "value": "{{priority}}",
            "placeholders": [
              {
                "name": "priority",
                "type": "Integer",
                "description": "priority",
                "required": false
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          },
          "seenAt": {
            "value": "{{seenAt}}",
            "placeholders": [
              {
                "name": "seenAt",
                "type": "String",
                "description": "seenAt",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-notification-putActivitySubscription",
    "meta": {
      "short": "putActivitySubscription",
      "description": "Puts an activity subscription entry. The key should be omitted for creation and provided for updates. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.notification.putActivitySubscription",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"subject\": \"{{subject}}\", \"activitySubscription\": \"{{activitySubscription}}\"}",
          "placeholders": [
            {
              "name": "subject",
              "type": "String",
              "description": "subject",
              "required": true
            },
            {
              "name": "activitySubscription",
              "type": "Integer",
              "description": "activitySubscription",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-notification-putPreferences",
    "meta": {
      "short": "putPreferences",
      "description": "Set notification-related preferences for an account. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.notification.putPreferences",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"priority\": \"{{priority}}\"}",
          "placeholders": [
            {
              "name": "priority",
              "type": "Integer",
              "description": "priority",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-notification-putPreferencesV2",
    "meta": {
      "short": "putPreferencesV2",
      "description": "Set notification-related preferences for an account. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.notification.putPreferencesV2",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"chat\": \"{{chat}}\", \"follow\": \"{{follow}}\", \"like\": \"{{like}}\", \"likeViaRepost\": \"{{likeViaRepost}}\", \"mention\": \"{{mention}}\", \"quote\": \"{{quote}}\", \"reply\": \"{{reply}}\", \"repost\": \"{{repost}}\", \"repostViaRepost\": \"{{repostViaRepost}}\", \"starterpackJoined\": \"{{starterpackJoined}}\", \"subscribedPost\": \"{{subscribedPost}}\", \"unverified\": \"{{unverified}}\", \"verified\": \"{{verified}}\"}",
          "placeholders": [
            {
              "name": "chat",
              "type": "Integer",
              "description": "chat",
              "required": false
            },
            {
              "name": "follow",
              "type": "Integer",
              "description": "follow",
              "required": false
            },
            {
              "name": "like",
              "type": "Integer",
              "description": "like",
              "required": false
            },
            {
              "name": "likeViaRepost",
              "type": "Integer",
              "description": "likeViaRepost",
              "required": false
            },
            {
              "name": "mention",
              "type": "Integer",
              "description": "mention",
              "required": false
            },
            {
              "name": "quote",
              "type": "Integer",
              "description": "quote",
              "required": false
            },
            {
              "name": "reply",
              "type": "Integer",
              "description": "reply",
              "required": false
            },
            {
              "name": "repost",
              "type": "Integer",
              "description": "repost",
              "required": false
            },
            {
              "name": "repostViaRepost",
              "type": "Integer",
              "description": "repostViaRepost",
              "required": false
            },
            {
              "name": "starterpackJoined",
              "type": "Integer",
              "description": "starterpackJoined",
              "required": false
            },
            {
              "name": "subscribedPost",
              "type": "Integer",
              "description": "subscribedPost",
              "required": false
            },
            {
              "name": "unverified",
              "type": "Integer",
              "description": "unverified",
              "required": false
            },
            {
              "name": "verified",
              "type": "Integer",
              "description": "verified",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-notification-registerPush",
    "meta": {
      "short": "registerPush",
      "description": "Register to receive push notifications, via a specified service, for the requesting account. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.notification.registerPush",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"serviceDid\": \"{{serviceDid}}\", \"token\": \"{{token}}\", \"platform\": \"{{platform}}\", \"appId\": \"{{appId}}\", \"ageRestricted\": \"{{ageRestricted}}\"}",
          "placeholders": [
            {
              "name": "serviceDid",
              "type": "String",
              "description": "serviceDid",
              "required": true
            },
            {
              "name": "token",
              "type": "String",
              "description": "token",
              "required": true
            },
            {
              "name": "platform",
              "type": "String",
              "description": "platform",
              "required": true
            },
            {
              "name": "appId",
              "type": "String",
              "description": "appId",
              "required": true
            },
            {
              "name": "ageRestricted",
              "type": "Integer",
              "description": "Set to true when the actor is age restricted",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-notification-unregisterPush",
    "meta": {
      "short": "unregisterPush",
      "description": "The inverse of registerPush - inform a specified service that push notifications should no longer be sent to the given token for the requesting account. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.notification.unregisterPush",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"serviceDid\": \"{{serviceDid}}\", \"token\": \"{{token}}\", \"platform\": \"{{platform}}\", \"appId\": \"{{appId}}\"}",
          "placeholders": [
            {
              "name": "serviceDid",
              "type": "String",
              "description": "serviceDid",
              "required": true
            },
            {
              "name": "token",
              "type": "String",
              "description": "token",
              "required": true
            },
            {
              "name": "platform",
              "type": "String",
              "description": "platform",
              "required": true
            },
            {
              "name": "appId",
              "type": "String",
              "description": "appId",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-notification-updateSeen",
    "meta": {
      "short": "updateSeen",
      "description": "Notify server that the requesting account has seen notifications. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.notification.updateSeen",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"seenAt\": \"{{seenAt}}\"}",
          "placeholders": [
            {
              "name": "seenAt",
              "type": "String",
              "description": "seenAt",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getAgeAssuranceState",
    "meta": {
      "short": "getAgeAssuranceState",
      "description": "Returns the current state of the age assurance process for an account. This is used to check if the user has completed age assurance or if further action is required."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getAgeAssuranceState",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getConfig",
    "meta": {
      "short": "getConfig",
      "description": "Get miscellaneous runtime configuration."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getConfig",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getOnboardingSuggestedStarterPacks",
    "meta": {
      "short": "getOnboardingSuggestedStarterPacks",
      "description": "Get a list of suggested starterpacks for onboarding"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getOnboardingSuggestedStarterPacks",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "10"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getOnboardingSuggestedStarterPacksSkeleton",
    "meta": {
      "short": "getOnboardingSuggestedStarterPacksSkeleton",
      "description": "Get a skeleton of suggested starterpacks for onboarding. Intended to be called and hydrated by app.bsky.unspecced.getOnboardingSuggestedStarterPacks"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getOnboardingSuggestedStarterPacksSkeleton",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "viewer": {
            "value": "{{viewer}}",
            "placeholders": [
              {
                "name": "viewer",
                "type": "String",
                "description": "DID of the account making the request (not included for public/unauthenticated queries).",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "10"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getOnboardingSuggestedUsersSkeleton",
    "meta": {
      "short": "getOnboardingSuggestedUsersSkeleton",
      "description": "Get a skeleton of suggested users for onboarding. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedOnboardingUsers"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getOnboardingSuggestedUsersSkeleton",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "viewer": {
            "value": "{{viewer}}",
            "placeholders": [
              {
                "name": "viewer",
                "type": "String",
                "description": "DID of the account making the request (not included for public/unauthenticated queries).",
                "required": false
              }
            ]
          },
          "category": {
            "value": "{{category}}",
            "placeholders": [
              {
                "name": "category",
                "type": "String",
                "description": "Category of users to get suggestions for.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "25"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getPopularFeedGenerators",
    "meta": {
      "short": "getPopularFeedGenerators",
      "description": "An unspecced view of globally popular feed generators."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getPopularFeedGenerators",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          },
          "query": {
            "value": "{{query}}",
            "placeholders": [
              {
                "name": "query",
                "type": "String",
                "description": "query",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getPostThreadOtherV2",
    "meta": {
      "short": "getPostThreadOtherV2",
      "description": "(NOTE: this endpoint is under development and WILL change without notice. Don't use it until it is moved out of `unspecced` or your application WILL break) Get additional posts under a thread e.g. replies hidden by threadgate. Based on an anchor post at any depth of the tree, returns top-level replies below that anchor. It does not include ancestors nor the anchor itself. This should be called after exhausting `app.bsky.unspecced.getPostThreadV2`. Does not require auth, but additional metadata and filtering will be applied for authed requests."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getPostThreadOtherV2",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "anchor": {
            "value": "{{anchor}}",
            "placeholders": [
              {
                "name": "anchor",
                "type": "String",
                "description": "Reference (AT-URI) to post record. This is the anchor post.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getPostThreadV2",
    "meta": {
      "short": "getPostThreadV2",
      "description": "(NOTE: this endpoint is under development and WILL change without notice. Don't use it until it is moved out of `unspecced` or your application WILL break) Get posts in a thread. It is based in an anchor post at any depth of the tree, and returns posts above it (recursively resolving the parent, without further branching to their replies) and below it (recursive replies, with branching to their replies). Does not require auth, but additional metadata and filtering will be applied for authed requests."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getPostThreadV2",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "anchor": {
            "value": "{{anchor}}",
            "placeholders": [
              {
                "name": "anchor",
                "type": "String",
                "description": "Reference (AT-URI) to post record. This is the anchor post, and the thread will be built around it. It can be any post in the tree, not necessarily a root post.",
                "required": true
              }
            ]
          },
          "above": {
            "value": "{{above}}",
            "placeholders": [
              {
                "name": "above",
                "type": "Integer",
                "description": "Whether to include parents above the anchor.",
                "required": false,
                "default": "True"
              }
            ]
          },
          "below": {
            "value": "{{below}}",
            "placeholders": [
              {
                "name": "below",
                "type": "Integer",
                "description": "How many levels of replies to include below the anchor.",
                "required": false,
                "default": "6"
              }
            ]
          },
          "branchingFactor": {
            "value": "{{branchingFactor}}",
            "placeholders": [
              {
                "name": "branchingFactor",
                "type": "Integer",
                "description": "Maximum of replies to include at each level of the thread, except for the direct replies to the anchor, which are (NOTE: currently, during unspecced phase) all returned (NOTE: later they might be paginated).",
                "required": false,
                "default": "10"
              }
            ]
          },
          "sort": {
            "value": "{{sort}}",
            "placeholders": [
              {
                "name": "sort",
                "type": "String",
                "description": "Sorting for the thread replies.",
                "required": false,
                "default": "oldest"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getSuggestedFeeds",
    "meta": {
      "short": "getSuggestedFeeds",
      "description": "Get a list of suggested feeds"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getSuggestedFeeds",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "10"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getSuggestedFeedsSkeleton",
    "meta": {
      "short": "getSuggestedFeedsSkeleton",
      "description": "Get a skeleton of suggested feeds. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedFeeds"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getSuggestedFeedsSkeleton",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "viewer": {
            "value": "{{viewer}}",
            "placeholders": [
              {
                "name": "viewer",
                "type": "String",
                "description": "DID of the account making the request (not included for public/unauthenticated queries).",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "10"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getSuggestedOnboardingUsers",
    "meta": {
      "short": "getSuggestedOnboardingUsers",
      "description": "Get a list of suggested users for onboarding"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getSuggestedOnboardingUsers",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "category": {
            "value": "{{category}}",
            "placeholders": [
              {
                "name": "category",
                "type": "String",
                "description": "Category of users to get suggestions for.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "25"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getSuggestedStarterPacks",
    "meta": {
      "short": "getSuggestedStarterPacks",
      "description": "Get a list of suggested starterpacks"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getSuggestedStarterPacks",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "10"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getSuggestedStarterPacksSkeleton",
    "meta": {
      "short": "getSuggestedStarterPacksSkeleton",
      "description": "Get a skeleton of suggested starterpacks. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedStarterpacks"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getSuggestedStarterPacksSkeleton",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "viewer": {
            "value": "{{viewer}}",
            "placeholders": [
              {
                "name": "viewer",
                "type": "String",
                "description": "DID of the account making the request (not included for public/unauthenticated queries).",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "10"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getSuggestedUsers",
    "meta": {
      "short": "getSuggestedUsers",
      "description": "Get a list of suggested users"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getSuggestedUsers",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "category": {
            "value": "{{category}}",
            "placeholders": [
              {
                "name": "category",
                "type": "String",
                "description": "Category of users to get suggestions for.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "25"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getSuggestedUsersSkeleton",
    "meta": {
      "short": "getSuggestedUsersSkeleton",
      "description": "Get a skeleton of suggested users. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsers"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getSuggestedUsersSkeleton",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "viewer": {
            "value": "{{viewer}}",
            "placeholders": [
              {
                "name": "viewer",
                "type": "String",
                "description": "DID of the account making the request (not included for public/unauthenticated queries).",
                "required": false
              }
            ]
          },
          "category": {
            "value": "{{category}}",
            "placeholders": [
              {
                "name": "category",
                "type": "String",
                "description": "Category of users to get suggestions for.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "25"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getSuggestionsSkeleton",
    "meta": {
      "short": "getSuggestionsSkeleton",
      "description": "Get a skeleton of suggested actors. Intended to be called and then hydrated through app.bsky.actor.getSuggestions"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getSuggestionsSkeleton",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "viewer": {
            "value": "{{viewer}}",
            "placeholders": [
              {
                "name": "viewer",
                "type": "String",
                "description": "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          },
          "relativeToDid": {
            "value": "{{relativeToDid}}",
            "placeholders": [
              {
                "name": "relativeToDid",
                "type": "String",
                "description": "DID of the account to get suggestions relative to. If not provided, suggestions will be based on the viewer.",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getTaggedSuggestions",
    "meta": {
      "short": "getTaggedSuggestions",
      "description": "Get a list of suggestions (feeds and users) tagged with categories"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getTaggedSuggestions",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getTrendingTopics",
    "meta": {
      "short": "getTrendingTopics",
      "description": "Get a list of trending topics"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getTrendingTopics",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "viewer": {
            "value": "{{viewer}}",
            "placeholders": [
              {
                "name": "viewer",
                "type": "String",
                "description": "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "10"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getTrends",
    "meta": {
      "short": "getTrends",
      "description": "Get the current trends on the network"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getTrends",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "10"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-getTrendsSkeleton",
    "meta": {
      "short": "getTrendsSkeleton",
      "description": "Get the skeleton of trends on the network. Intended to be called and then hydrated through app.bsky.unspecced.getTrends"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.getTrendsSkeleton",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "viewer": {
            "value": "{{viewer}}",
            "placeholders": [
              {
                "name": "viewer",
                "type": "String",
                "description": "DID of the account making the request (not included for public/unauthenticated queries).",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "10"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-initAgeAssurance",
    "meta": {
      "short": "initAgeAssurance",
      "description": "Initiate age assurance for an account. This is a one-time action that will start the process of verifying the user's age."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.initAgeAssurance",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"email\": \"{{email}}\", \"language\": \"{{language}}\", \"countryCode\": \"{{countryCode}}\"}",
          "placeholders": [
            {
              "name": "email",
              "type": "String",
              "description": "The user's email address to receive assurance instructions.",
              "required": true
            },
            {
              "name": "language",
              "type": "String",
              "description": "The user's preferred language for communication during the assurance process.",
              "required": true
            },
            {
              "name": "countryCode",
              "type": "String",
              "description": "An ISO 3166-1 alpha-2 code of the user's location.",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-searchActorsSkeleton",
    "meta": {
      "short": "searchActorsSkeleton",
      "description": "Backend Actors (profile) search, returns only skeleton."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.searchActorsSkeleton",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "q": {
            "value": "{{q}}",
            "placeholders": [
              {
                "name": "q",
                "type": "String",
                "description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended. For typeahead search, only simple term match is supported, not full syntax.",
                "required": true
              }
            ]
          },
          "viewer": {
            "value": "{{viewer}}",
            "placeholders": [
              {
                "name": "viewer",
                "type": "String",
                "description": "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.",
                "required": false
              }
            ]
          },
          "typeahead": {
            "value": "{{typeahead}}",
            "placeholders": [
              {
                "name": "typeahead",
                "type": "Integer",
                "description": "If true, acts as fast/simple 'typeahead' query.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "25"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set.",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-searchPostsSkeleton",
    "meta": {
      "short": "searchPostsSkeleton",
      "description": "Backend Posts search, returns only skeleton"
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.searchPostsSkeleton",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "q": {
            "value": "{{q}}",
            "placeholders": [
              {
                "name": "q",
                "type": "String",
                "description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.",
                "required": true
              }
            ]
          },
          "sort": {
            "value": "{{sort}}",
            "placeholders": [
              {
                "name": "sort",
                "type": "String",
                "description": "Specifies the ranking order of results.",
                "required": false,
                "default": "latest"
              }
            ]
          },
          "since": {
            "value": "{{since}}",
            "placeholders": [
              {
                "name": "since",
                "type": "String",
                "description": "Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYYY-MM-DD).",
                "required": false
              }
            ]
          },
          "until": {
            "value": "{{until}}",
            "placeholders": [
              {
                "name": "until",
                "type": "String",
                "description": "Filter results for posts before the indicated datetime (not inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYY-MM-DD).",
                "required": false
              }
            ]
          },
          "mentions": {
            "value": "{{mentions}}",
            "placeholders": [
              {
                "name": "mentions",
                "type": "String",
                "description": "Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions.",
                "required": false
              }
            ]
          },
          "author": {
            "value": "{{author}}",
            "placeholders": [
              {
                "name": "author",
                "type": "String",
                "description": "Filter to posts by the given account. Handles are resolved to DID before query-time.",
                "required": false
              }
            ]
          },
          "lang": {
            "value": "{{lang}}",
            "placeholders": [
              {
                "name": "lang",
                "type": "String",
                "description": "Filter to posts in the given language. Expected to be based on post language field, though server may override language detection.",
                "required": false
              }
            ]
          },
          "domain": {
            "value": "{{domain}}",
            "placeholders": [
              {
                "name": "domain",
                "type": "String",
                "description": "Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization.",
                "required": false
              }
            ]
          },
          "url": {
            "value": "{{url}}",
            "placeholders": [
              {
                "name": "url",
                "type": "String",
                "description": "Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching.",
                "required": false
              }
            ]
          },
          "tag": {
            "value": "{{tag}}",
            "placeholders": [
              {
                "name": "tag",
                "type": "Integer",
                "description": "Filter to posts with the given tag (hashtag), based on rich-text facet or tag field. Do not include the hash (#) prefix. Multiple tags can be specified, with 'AND' matching.",
                "required": false
              }
            ]
          },
          "viewer": {
            "value": "{{viewer}}",
            "placeholders": [
              {
                "name": "viewer",
                "type": "String",
                "description": "DID of the account making the request (not included for public/unauthenticated queries). Used for 'from:me' queries.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "25"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set.",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-unspecced-searchStarterPacksSkeleton",
    "meta": {
      "short": "searchStarterPacksSkeleton",
      "description": "Backend Starter Pack search, returns only skeleton."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.unspecced.searchStarterPacksSkeleton",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "q": {
            "value": "{{q}}",
            "placeholders": [
              {
                "name": "q",
                "type": "String",
                "description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.",
                "required": true
              }
            ]
          },
          "viewer": {
            "value": "{{viewer}}",
            "placeholders": [
              {
                "name": "viewer",
                "type": "String",
                "description": "DID of the account making the request (not included for public/unauthenticated queries).",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "25"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set.",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-video-getJobStatus",
    "meta": {
      "short": "getJobStatus",
      "description": "Get status details for a video processing job."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.video.getJobStatus",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "jobId": {
            "value": "{{jobId}}",
            "placeholders": [
              {
                "name": "jobId",
                "type": "String",
                "description": "jobId",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-video-getUploadLimits",
    "meta": {
      "short": "getUploadLimits",
      "description": "Get video upload limits for the authenticated user."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.video.getUploadLimits",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "app-bsky-video-uploadVideo",
    "meta": {
      "short": "uploadVideo",
      "description": "Upload a video to be processed then stored on the PDS."
    },
    "endpoint": {
      "value": "/xrpc/app.bsky.video.uploadVideo",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-admin-deleteAccount",
    "meta": {
      "short": "deleteAccount",
      "description": "Delete a user account as an administrator."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.admin.deleteAccount",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"did\": \"{{did}}\"}",
          "placeholders": [
            {
              "name": "did",
              "type": "String",
              "description": "did",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-admin-disableAccountInvites",
    "meta": {
      "short": "disableAccountInvites",
      "description": "Disable an account from receiving new invite codes, but does not invalidate existing codes."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.admin.disableAccountInvites",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"account\": \"{{account}}\", \"note\": \"{{note}}\"}",
          "placeholders": [
            {
              "name": "account",
              "type": "String",
              "description": "account",
              "required": true
            },
            {
              "name": "note",
              "type": "String",
              "description": "Optional reason for disabled invites.",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-admin-disableInviteCodes",
    "meta": {
      "short": "disableInviteCodes",
      "description": "Disable some set of codes and/or all codes associated with a set of users."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.admin.disableInviteCodes",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"codes\": \"{{codes}}\", \"accounts\": \"{{accounts}}\"}",
          "placeholders": [
            {
              "name": "codes",
              "type": "Integer",
              "description": "codes",
              "required": false
            },
            {
              "name": "accounts",
              "type": "Integer",
              "description": "accounts",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-admin-enableAccountInvites",
    "meta": {
      "short": "enableAccountInvites",
      "description": "Re-enable an account's ability to receive invite codes."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.admin.enableAccountInvites",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"account\": \"{{account}}\", \"note\": \"{{note}}\"}",
          "placeholders": [
            {
              "name": "account",
              "type": "String",
              "description": "account",
              "required": true
            },
            {
              "name": "note",
              "type": "String",
              "description": "Optional reason for enabled invites.",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-admin-getAccountInfo",
    "meta": {
      "short": "getAccountInfo",
      "description": "Get details about an account."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.admin.getAccountInfo",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "did": {
            "value": "{{did}}",
            "placeholders": [
              {
                "name": "did",
                "type": "String",
                "description": "did",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-admin-getAccountInfos",
    "meta": {
      "short": "getAccountInfos",
      "description": "Get details about some accounts."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.admin.getAccountInfos",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "dids": {
            "value": "{{dids}}",
            "placeholders": [
              {
                "name": "dids",
                "type": "Integer",
                "description": "dids",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-admin-getInviteCodes",
    "meta": {
      "short": "getInviteCodes",
      "description": "Get an admin view of invite codes."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.admin.getInviteCodes",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "sort": {
            "value": "{{sort}}",
            "placeholders": [
              {
                "name": "sort",
                "type": "String",
                "description": "sort",
                "required": false,
                "default": "recent"
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "100"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-admin-getSubjectStatus",
    "meta": {
      "short": "getSubjectStatus",
      "description": "Get the service-specific admin status of a subject (account, record, or blob)."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.admin.getSubjectStatus",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "did": {
            "value": "{{did}}",
            "placeholders": [
              {
                "name": "did",
                "type": "String",
                "description": "did",
                "required": false
              }
            ]
          },
          "uri": {
            "value": "{{uri}}",
            "placeholders": [
              {
                "name": "uri",
                "type": "String",
                "description": "uri",
                "required": false
              }
            ]
          },
          "blob": {
            "value": "{{blob}}",
            "placeholders": [
              {
                "name": "blob",
                "type": "String",
                "description": "blob",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-admin-searchAccounts",
    "meta": {
      "short": "searchAccounts",
      "description": "Get list of accounts that matches your search query."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.admin.searchAccounts",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "email": {
            "value": "{{email}}",
            "placeholders": [
              {
                "name": "email",
                "type": "String",
                "description": "email",
                "required": false
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-admin-sendEmail",
    "meta": {
      "short": "sendEmail",
      "description": "Send email to a user's account email address."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.admin.sendEmail",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"recipientDid\": \"{{recipientDid}}\", \"content\": \"{{content}}\", \"subject\": \"{{subject}}\", \"senderDid\": \"{{senderDid}}\", \"comment\": \"{{comment}}\"}",
          "placeholders": [
            {
              "name": "recipientDid",
              "type": "String",
              "description": "recipientDid",
              "required": true
            },
            {
              "name": "content",
              "type": "String",
              "description": "content",
              "required": true
            },
            {
              "name": "subject",
              "type": "String",
              "description": "subject",
              "required": false
            },
            {
              "name": "senderDid",
              "type": "String",
              "description": "senderDid",
              "required": true
            },
            {
              "name": "comment",
              "type": "String",
              "description": "Additional comment by the sender that won't be used in the email itself but helpful to provide more context for moderators/reviewers",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-admin-updateAccountEmail",
    "meta": {
      "short": "updateAccountEmail",
      "description": "Administrative action to update an account's email."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.admin.updateAccountEmail",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"account\": \"{{account}}\", \"email\": \"{{email}}\"}",
          "placeholders": [
            {
              "name": "account",
              "type": "String",
              "description": "The handle or DID of the repo.",
              "required": true
            },
            {
              "name": "email",
              "type": "String",
              "description": "email",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-admin-updateAccountHandle",
    "meta": {
      "short": "updateAccountHandle",
      "description": "Administrative action to update an account's handle."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.admin.updateAccountHandle",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"did\": \"{{did}}\", \"handle\": \"{{handle}}\"}",
          "placeholders": [
            {
              "name": "did",
              "type": "String",
              "description": "did",
              "required": true
            },
            {
              "name": "handle",
              "type": "String",
              "description": "handle",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-admin-updateAccountPassword",
    "meta": {
      "short": "updateAccountPassword",
      "description": "Update the password for a user account as an administrator."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.admin.updateAccountPassword",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"did\": \"{{did}}\", \"password\": \"{{password}}\"}",
          "placeholders": [
            {
              "name": "did",
              "type": "String",
              "description": "did",
              "required": true
            },
            {
              "name": "password",
              "type": "String",
              "description": "password",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-admin-updateAccountSigningKey",
    "meta": {
      "short": "updateAccountSigningKey",
      "description": "Administrative action to update an account's signing key in their Did document."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.admin.updateAccountSigningKey",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"did\": \"{{did}}\", \"signingKey\": \"{{signingKey}}\"}",
          "placeholders": [
            {
              "name": "did",
              "type": "String",
              "description": "did",
              "required": true
            },
            {
              "name": "signingKey",
              "type": "String",
              "description": "Did-key formatted public key",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-admin-updateSubjectStatus",
    "meta": {
      "short": "updateSubjectStatus",
      "description": "Update the service-specific admin status of a subject (account, record, or blob)."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.admin.updateSubjectStatus",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"subject\": \"{{subject}}\", \"takedown\": \"{{takedown}}\", \"deactivated\": \"{{deactivated}}\"}",
          "placeholders": [
            {
              "name": "subject",
              "type": "Integer",
              "description": "subject",
              "required": true
            },
            {
              "name": "takedown",
              "type": "Integer",
              "description": "takedown",
              "required": false
            },
            {
              "name": "deactivated",
              "type": "Integer",
              "description": "deactivated",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-identity-getRecommendedDidCredentials",
    "meta": {
      "short": "getRecommendedDidCredentials",
      "description": "Describe the credentials that should be included in the DID doc of an account that is migrating to this service."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.identity.getRecommendedDidCredentials",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-identity-refreshIdentity",
    "meta": {
      "short": "refreshIdentity",
      "description": "Request that the server re-resolve an identity (DID and handle). The server may ignore this request, or require authentication, depending on the role, implementation, and policy of the server."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.identity.refreshIdentity",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"identifier\": \"{{identifier}}\"}",
          "placeholders": [
            {
              "name": "identifier",
              "type": "String",
              "description": "identifier",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-identity-requestPlcOperationSignature",
    "meta": {
      "short": "requestPlcOperationSignature",
      "description": "Request an email with a code to in order to request a signed PLC operation. Requires Auth."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.identity.requestPlcOperationSignature",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-identity-resolveDid",
    "meta": {
      "short": "resolveDid",
      "description": "Resolves DID to DID document. Does not bi-directionally verify handle."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.identity.resolveDid",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "did": {
            "value": "{{did}}",
            "placeholders": [
              {
                "name": "did",
                "type": "String",
                "description": "DID to resolve.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-identity-resolveHandle",
    "meta": {
      "short": "resolveHandle",
      "description": "Resolves an atproto handle (hostname) to a DID. Does not necessarily bi-directionally verify against the the DID document."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.identity.resolveHandle",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "handle": {
            "value": "{{handle}}",
            "placeholders": [
              {
                "name": "handle",
                "type": "String",
                "description": "The handle to resolve.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-identity-resolveIdentity",
    "meta": {
      "short": "resolveIdentity",
      "description": "Resolves an identity (DID or Handle) to a full identity (DID document and verified handle)."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.identity.resolveIdentity",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "identifier": {
            "value": "{{identifier}}",
            "placeholders": [
              {
                "name": "identifier",
                "type": "String",
                "description": "Handle or DID to resolve.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-identity-signPlcOperation",
    "meta": {
      "short": "signPlcOperation",
      "description": "Signs a PLC operation to update some value(s) in the requesting DID's document."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.identity.signPlcOperation",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"token\": \"{{token}}\", \"rotationKeys\": \"{{rotationKeys}}\", \"alsoKnownAs\": \"{{alsoKnownAs}}\", \"verificationMethods\": \"{{verificationMethods}}\", \"services\": \"{{services}}\"}",
          "placeholders": [
            {
              "name": "token",
              "type": "String",
              "description": "A token received through com.atproto.identity.requestPlcOperationSignature",
              "required": false
            },
            {
              "name": "rotationKeys",
              "type": "Integer",
              "description": "rotationKeys",
              "required": false
            },
            {
              "name": "alsoKnownAs",
              "type": "Integer",
              "description": "alsoKnownAs",
              "required": false
            },
            {
              "name": "verificationMethods",
              "type": "Integer",
              "description": "verificationMethods",
              "required": false
            },
            {
              "name": "services",
              "type": "Integer",
              "description": "services",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-identity-submitPlcOperation",
    "meta": {
      "short": "submitPlcOperation",
      "description": "Validates a PLC operation to ensure that it doesn't violate a service's constraints or get the identity into a bad state, then submits it to the PLC registry"
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.identity.submitPlcOperation",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"operation\": \"{{operation}}\"}",
          "placeholders": [
            {
              "name": "operation",
              "type": "Integer",
              "description": "operation",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-identity-updateHandle",
    "meta": {
      "short": "updateHandle",
      "description": "Updates the current account's handle. Verifies handle validity, and updates did:plc document if necessary. Implemented by PDS, and requires auth."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.identity.updateHandle",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"handle\": \"{{handle}}\"}",
          "placeholders": [
            {
              "name": "handle",
              "type": "String",
              "description": "The new handle.",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-label-queryLabels",
    "meta": {
      "short": "queryLabels",
      "description": "Find labels relevant to the provided AT-URI patterns. Public endpoint for moderation services, though may return different or additional results with auth."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.label.queryLabels",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "uriPatterns": {
            "value": "{{uriPatterns}}",
            "placeholders": [
              {
                "name": "uriPatterns",
                "type": "Integer",
                "description": "List of AT URI patterns to match (boolean 'OR'). Each may be a prefix (ending with '*'; will match inclusive of the string leading to '*'), or a full URI.",
                "required": true
              }
            ]
          },
          "sources": {
            "value": "{{sources}}",
            "placeholders": [
              {
                "name": "sources",
                "type": "Integer",
                "description": "Optional list of label sources (DIDs) to filter on.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-lexicon-resolveLexicon",
    "meta": {
      "short": "resolveLexicon",
      "description": "Resolves an atproto lexicon (NSID) to a schema."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.lexicon.resolveLexicon",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "nsid": {
            "value": "{{nsid}}",
            "placeholders": [
              {
                "name": "nsid",
                "type": "String",
                "description": "The lexicon NSID to resolve.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-moderation-createReport",
    "meta": {
      "short": "createReport",
      "description": "Submit a moderation report regarding an atproto account or record. Implemented by moderation services (with PDS proxying), and requires auth."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.moderation.createReport",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"reasonType\": \"{{reasonType}}\", \"reason\": \"{{reason}}\", \"subject\": \"{{subject}}\", \"modTool\": \"{{modTool}}\"}",
          "placeholders": [
            {
              "name": "reasonType",
              "type": "Integer",
              "description": "Indicates the broad category of violation the report is for.",
              "required": true
            },
            {
              "name": "reason",
              "type": "String",
              "description": "Additional context about the content and violation.",
              "required": false
            },
            {
              "name": "subject",
              "type": "Integer",
              "description": "subject",
              "required": true
            },
            {
              "name": "modTool",
              "type": "Integer",
              "description": "modTool",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-repo-applyWrites",
    "meta": {
      "short": "applyWrites",
      "description": "Apply a batch transaction of repository creates, updates, and deletes. Requires auth, implemented by PDS."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.repo.applyWrites",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"repo\": \"{{repo}}\", \"validate\": \"{{validate}}\", \"writes\": \"{{writes}}\", \"swapCommit\": \"{{swapCommit}}\"}",
          "placeholders": [
            {
              "name": "repo",
              "type": "String",
              "description": "The handle or DID of the repo (aka, current account).",
              "required": true
            },
            {
              "name": "validate",
              "type": "Integer",
              "description": "Can be set to 'false' to skip Lexicon schema validation of record data across all operations, 'true' to require it, or leave unset to validate only for known Lexicons.",
              "required": false
            },
            {
              "name": "writes",
              "type": "Integer",
              "description": "writes",
              "required": true
            },
            {
              "name": "swapCommit",
              "type": "String",
              "description": "If provided, the entire operation will fail if the current repo commit CID does not match this value. Used to prevent conflicting repo mutations.",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-repo-createRecord",
    "meta": {
      "short": "createRecord",
      "description": "Create a single new repository record. Requires auth, implemented by PDS."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.repo.createRecord",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"repo\": \"{{repo}}\", \"collection\": \"{{collection}}\", \"rkey\": \"{{rkey}}\", \"validate\": \"{{validate}}\", \"record\": \"{{record}}\", \"swapCommit\": \"{{swapCommit}}\"}",
          "placeholders": [
            {
              "name": "repo",
              "type": "String",
              "description": "The handle or DID of the repo (aka, current account).",
              "required": true
            },
            {
              "name": "collection",
              "type": "String",
              "description": "The NSID of the record collection.",
              "required": true
            },
            {
              "name": "rkey",
              "type": "String",
              "description": "The Record Key.",
              "required": false
            },
            {
              "name": "validate",
              "type": "Integer",
              "description": "Can be set to 'false' to skip Lexicon schema validation of record data, 'true' to require it, or leave unset to validate only for known Lexicons.",
              "required": false
            },
            {
              "name": "record",
              "type": "Integer",
              "description": "The record itself. Must contain a $type field.",
              "required": true
            },
            {
              "name": "swapCommit",
              "type": "String",
              "description": "Compare and swap with the previous commit by CID.",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-repo-deleteRecord",
    "meta": {
      "short": "deleteRecord",
      "description": "Delete a repository record, or ensure it doesn't exist. Requires auth, implemented by PDS."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.repo.deleteRecord",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"repo\": \"{{repo}}\", \"collection\": \"{{collection}}\", \"rkey\": \"{{rkey}}\", \"swapRecord\": \"{{swapRecord}}\", \"swapCommit\": \"{{swapCommit}}\"}",
          "placeholders": [
            {
              "name": "repo",
              "type": "String",
              "description": "The handle or DID of the repo (aka, current account).",
              "required": true
            },
            {
              "name": "collection",
              "type": "String",
              "description": "The NSID of the record collection.",
              "required": true
            },
            {
              "name": "rkey",
              "type": "String",
              "description": "The Record Key.",
              "required": true
            },
            {
              "name": "swapRecord",
              "type": "String",
              "description": "Compare and swap with the previous record by CID.",
              "required": false
            },
            {
              "name": "swapCommit",
              "type": "String",
              "description": "Compare and swap with the previous commit by CID.",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-repo-describeRepo",
    "meta": {
      "short": "describeRepo",
      "description": "Get information about an account and repository, including the list of collections. Does not require auth."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.repo.describeRepo",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "repo": {
            "value": "{{repo}}",
            "placeholders": [
              {
                "name": "repo",
                "type": "String",
                "description": "The handle or DID of the repo.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-repo-getRecord",
    "meta": {
      "short": "getRecord",
      "description": "Get a single record from a repository. Does not require auth."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.repo.getRecord",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "repo": {
            "value": "{{repo}}",
            "placeholders": [
              {
                "name": "repo",
                "type": "String",
                "description": "The handle or DID of the repo.",
                "required": true
              }
            ]
          },
          "collection": {
            "value": "{{collection}}",
            "placeholders": [
              {
                "name": "collection",
                "type": "String",
                "description": "The NSID of the record collection.",
                "required": true
              }
            ]
          },
          "rkey": {
            "value": "{{rkey}}",
            "placeholders": [
              {
                "name": "rkey",
                "type": "String",
                "description": "The Record Key.",
                "required": true
              }
            ]
          },
          "cid": {
            "value": "{{cid}}",
            "placeholders": [
              {
                "name": "cid",
                "type": "String",
                "description": "The CID of the version of the record. If not specified, then return the most recent version.",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-repo-importRepo",
    "meta": {
      "short": "importRepo",
      "description": "Import a repo in the form of a CAR file. Requires Content-Length HTTP header to be set."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.repo.importRepo",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-repo-listMissingBlobs",
    "meta": {
      "short": "listMissingBlobs",
      "description": "Returns a list of missing blobs for the requesting account. Intended to be used in the account migration flow."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.repo.listMissingBlobs",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "500"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-repo-listRecords",
    "meta": {
      "short": "listRecords",
      "description": "List a range of records in a repository, matching a specific collection. Does not require auth."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.repo.listRecords",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "repo": {
            "value": "{{repo}}",
            "placeholders": [
              {
                "name": "repo",
                "type": "String",
                "description": "The handle or DID of the repo.",
                "required": true
              }
            ]
          },
          "collection": {
            "value": "{{collection}}",
            "placeholders": [
              {
                "name": "collection",
                "type": "String",
                "description": "The NSID of the record type.",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "The number of records to return.",
                "required": false,
                "default": "50"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          },
          "reverse": {
            "value": "{{reverse}}",
            "placeholders": [
              {
                "name": "reverse",
                "type": "Integer",
                "description": "Flag to reverse the order of the returned records.",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-repo-putRecord",
    "meta": {
      "short": "putRecord",
      "description": "Write a repository record, creating or updating it as needed. Requires auth, implemented by PDS."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.repo.putRecord",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"repo\": \"{{repo}}\", \"collection\": \"{{collection}}\", \"rkey\": \"{{rkey}}\", \"validate\": \"{{validate}}\", \"record\": \"{{record}}\", \"swapRecord\": \"{{swapRecord}}\", \"swapCommit\": \"{{swapCommit}}\"}",
          "placeholders": [
            {
              "name": "repo",
              "type": "String",
              "description": "The handle or DID of the repo (aka, current account).",
              "required": true
            },
            {
              "name": "collection",
              "type": "String",
              "description": "The NSID of the record collection.",
              "required": true
            },
            {
              "name": "rkey",
              "type": "String",
              "description": "The Record Key.",
              "required": true
            },
            {
              "name": "validate",
              "type": "Integer",
              "description": "Can be set to 'false' to skip Lexicon schema validation of record data, 'true' to require it, or leave unset to validate only for known Lexicons.",
              "required": false
            },
            {
              "name": "record",
              "type": "Integer",
              "description": "The record to write.",
              "required": true
            },
            {
              "name": "swapRecord",
              "type": "String",
              "description": "Compare and swap with the previous record by CID. WARNING: nullable and optional field; may cause problems with golang implementation",
              "required": false
            },
            {
              "name": "swapCommit",
              "type": "String",
              "description": "Compare and swap with the previous commit by CID.",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-repo-uploadBlob",
    "meta": {
      "short": "uploadBlob",
      "description": "Upload a new blob, to be referenced from a repository record. The blob will be deleted if it is not referenced within a time window (eg, minutes). Blob restrictions (mimetype, size, etc) are enforced when the reference is created. Requires auth, implemented by PDS."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.repo.uploadBlob",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-activateAccount",
    "meta": {
      "short": "activateAccount",
      "description": "Activates a currently deactivated account. Used to finalize account migration after the account's repo is imported and identity is setup."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.activateAccount",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-checkAccountStatus",
    "meta": {
      "short": "checkAccountStatus",
      "description": "Returns the status of an account, especially as pertaining to import or recovery. Can be called many times over the course of an account migration. Requires auth and can only be called pertaining to oneself."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.checkAccountStatus",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-confirmEmail",
    "meta": {
      "short": "confirmEmail",
      "description": "Confirm an email using a token from com.atproto.server.requestEmailConfirmation."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.confirmEmail",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"email\": \"{{email}}\", \"token\": \"{{token}}\"}",
          "placeholders": [
            {
              "name": "email",
              "type": "String",
              "description": "email",
              "required": true
            },
            {
              "name": "token",
              "type": "String",
              "description": "token",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-createAccount",
    "meta": {
      "short": "createAccount",
      "description": "Create an account. Implemented by PDS."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.createAccount",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"email\": \"{{email}}\", \"handle\": \"{{handle}}\", \"did\": \"{{did}}\", \"inviteCode\": \"{{inviteCode}}\", \"verificationCode\": \"{{verificationCode}}\", \"verificationPhone\": \"{{verificationPhone}}\", \"password\": \"{{password}}\", \"recoveryKey\": \"{{recoveryKey}}\", \"plcOp\": \"{{plcOp}}\"}",
          "placeholders": [
            {
              "name": "email",
              "type": "String",
              "description": "email",
              "required": false
            },
            {
              "name": "handle",
              "type": "String",
              "description": "Requested handle for the account.",
              "required": true
            },
            {
              "name": "did",
              "type": "String",
              "description": "Pre-existing atproto DID, being imported to a new account.",
              "required": false
            },
            {
              "name": "inviteCode",
              "type": "String",
              "description": "inviteCode",
              "required": false
            },
            {
              "name": "verificationCode",
              "type": "String",
              "description": "verificationCode",
              "required": false
            },
            {
              "name": "verificationPhone",
              "type": "String",
              "description": "verificationPhone",
              "required": false
            },
            {
              "name": "password",
              "type": "String",
              "description": "Initial account password. May need to meet instance-specific password strength requirements.",
              "required": false
            },
            {
              "name": "recoveryKey",
              "type": "String",
              "description": "DID PLC rotation key (aka, recovery key) to be included in PLC creation operation.",
              "required": false
            },
            {
              "name": "plcOp",
              "type": "Integer",
              "description": "A signed DID PLC operation to be submitted as part of importing an existing account to this instance. NOTE: this optional field may be updated when full account migration is implemented.",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-createAppPassword",
    "meta": {
      "short": "createAppPassword",
      "description": "Create an App Password."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.createAppPassword",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"name\": \"{{name}}\", \"privileged\": \"{{privileged}}\"}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "A short name for the App Password, to help distinguish them.",
              "required": true
            },
            {
              "name": "privileged",
              "type": "Integer",
              "description": "If an app password has 'privileged' access to possibly sensitive account state. Meant for use with trusted clients.",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-createInviteCode",
    "meta": {
      "short": "createInviteCode",
      "description": "Create an invite code."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.createInviteCode",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"useCount\": \"{{useCount}}\", \"forAccount\": \"{{forAccount}}\"}",
          "placeholders": [
            {
              "name": "useCount",
              "type": "Integer",
              "description": "useCount",
              "required": true
            },
            {
              "name": "forAccount",
              "type": "String",
              "description": "forAccount",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-createInviteCodes",
    "meta": {
      "short": "createInviteCodes",
      "description": "Create invite codes."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.createInviteCodes",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"codeCount\": \"{{codeCount}}\", \"useCount\": \"{{useCount}}\", \"forAccounts\": \"{{forAccounts}}\"}",
          "placeholders": [
            {
              "name": "codeCount",
              "type": "Integer",
              "description": "codeCount",
              "required": true
            },
            {
              "name": "useCount",
              "type": "Integer",
              "description": "useCount",
              "required": true
            },
            {
              "name": "forAccounts",
              "type": "Integer",
              "description": "forAccounts",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-createSession",
    "meta": {
      "short": "createSession",
      "description": "Create an authentication session."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.createSession",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"identifier\": \"{{identifier}}\", \"password\": \"{{password}}\", \"authFactorToken\": \"{{authFactorToken}}\", \"allowTakendown\": \"{{allowTakendown}}\"}",
          "placeholders": [
            {
              "name": "identifier",
              "type": "String",
              "description": "Handle or other identifier supported by the server for the authenticating user.",
              "required": true
            },
            {
              "name": "password",
              "type": "String",
              "description": "password",
              "required": true
            },
            {
              "name": "authFactorToken",
              "type": "String",
              "description": "authFactorToken",
              "required": false
            },
            {
              "name": "allowTakendown",
              "type": "Integer",
              "description": "When true, instead of throwing error for takendown accounts, a valid response with a narrow scoped token will be returned",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-deactivateAccount",
    "meta": {
      "short": "deactivateAccount",
      "description": "Deactivates a currently active account. Stops serving of repo, and future writes to repo until reactivated. Used to finalize account migration with the old host after the account has been activated on the new host."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.deactivateAccount",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"deleteAfter\": \"{{deleteAfter}}\"}",
          "placeholders": [
            {
              "name": "deleteAfter",
              "type": "String",
              "description": "A recommendation to server as to how long they should hold onto the deactivated account before deleting.",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-deleteAccount",
    "meta": {
      "short": "deleteAccount",
      "description": "Delete an actor's account with a token and password. Can only be called after requesting a deletion token. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.deleteAccount",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"did\": \"{{did}}\", \"password\": \"{{password}}\", \"token\": \"{{token}}\"}",
          "placeholders": [
            {
              "name": "did",
              "type": "String",
              "description": "did",
              "required": true
            },
            {
              "name": "password",
              "type": "String",
              "description": "password",
              "required": true
            },
            {
              "name": "token",
              "type": "String",
              "description": "token",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-deleteSession",
    "meta": {
      "short": "deleteSession",
      "description": "Delete the current session. Requires auth using the 'refreshJwt' (not the 'accessJwt')."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.deleteSession",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-describeServer",
    "meta": {
      "short": "describeServer",
      "description": "Describes the server's account creation requirements and capabilities. Implemented by PDS."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.describeServer",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-getAccountInviteCodes",
    "meta": {
      "short": "getAccountInviteCodes",
      "description": "Get all invite codes for the current account. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.getAccountInviteCodes",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "includeUsed": {
            "value": "{{includeUsed}}",
            "placeholders": [
              {
                "name": "includeUsed",
                "type": "Integer",
                "description": "includeUsed",
                "required": false,
                "default": "True"
              }
            ]
          },
          "createAvailable": {
            "value": "{{createAvailable}}",
            "placeholders": [
              {
                "name": "createAvailable",
                "type": "Integer",
                "description": "Controls whether any new 'earned' but not 'created' invites should be created.",
                "required": false,
                "default": "True"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-getServiceAuth",
    "meta": {
      "short": "getServiceAuth",
      "description": "Get a signed token on behalf of the requesting DID for the requested service."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.getServiceAuth",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "aud": {
            "value": "{{aud}}",
            "placeholders": [
              {
                "name": "aud",
                "type": "String",
                "description": "The DID of the service that the token will be used to authenticate with",
                "required": true
              }
            ]
          },
          "exp": {
            "value": "{{exp}}",
            "placeholders": [
              {
                "name": "exp",
                "type": "Integer",
                "description": "The time in Unix Epoch seconds that the JWT expires. Defaults to 60 seconds in the future. The service may enforce certain time bounds on tokens depending on the requested scope.",
                "required": false
              }
            ]
          },
          "lxm": {
            "value": "{{lxm}}",
            "placeholders": [
              {
                "name": "lxm",
                "type": "String",
                "description": "Lexicon (XRPC) method to bind the requested token to",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-getSession",
    "meta": {
      "short": "getSession",
      "description": "Get information about the current auth session. Requires auth."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.getSession",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-listAppPasswords",
    "meta": {
      "short": "listAppPasswords",
      "description": "List all App Passwords."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.listAppPasswords",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-refreshSession",
    "meta": {
      "short": "refreshSession",
      "description": "Refresh an authentication session. Requires auth using the 'refreshJwt' (not the 'accessJwt')."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.refreshSession",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-requestAccountDelete",
    "meta": {
      "short": "requestAccountDelete",
      "description": "Initiate a user account deletion via email."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.requestAccountDelete",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-requestEmailConfirmation",
    "meta": {
      "short": "requestEmailConfirmation",
      "description": "Request an email with a code to confirm ownership of email."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.requestEmailConfirmation",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-requestEmailUpdate",
    "meta": {
      "short": "requestEmailUpdate",
      "description": "Request a token in order to update email."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.requestEmailUpdate",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-requestPasswordReset",
    "meta": {
      "short": "requestPasswordReset",
      "description": "Initiate a user account password reset via email."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.requestPasswordReset",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"email\": \"{{email}}\"}",
          "placeholders": [
            {
              "name": "email",
              "type": "String",
              "description": "email",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-reserveSigningKey",
    "meta": {
      "short": "reserveSigningKey",
      "description": "Reserve a repo signing key, for use with account creation. Necessary so that a DID PLC update operation can be constructed during an account migraiton. Public and does not require auth; implemented by PDS. NOTE: this endpoint may change when full account migration is implemented."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.reserveSigningKey",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"did\": \"{{did}}\"}",
          "placeholders": [
            {
              "name": "did",
              "type": "String",
              "description": "The DID to reserve a key for.",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-resetPassword",
    "meta": {
      "short": "resetPassword",
      "description": "Reset a user account password using a token."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.resetPassword",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"token\": \"{{token}}\", \"password\": \"{{password}}\"}",
          "placeholders": [
            {
              "name": "token",
              "type": "String",
              "description": "token",
              "required": true
            },
            {
              "name": "password",
              "type": "String",
              "description": "password",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-revokeAppPassword",
    "meta": {
      "short": "revokeAppPassword",
      "description": "Revoke an App Password by name."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.revokeAppPassword",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"name\": \"{{name}}\"}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "name",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-server-updateEmail",
    "meta": {
      "short": "updateEmail",
      "description": "Update an account's email."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.server.updateEmail",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"email\": \"{{email}}\", \"emailAuthFactor\": \"{{emailAuthFactor}}\", \"token\": \"{{token}}\"}",
          "placeholders": [
            {
              "name": "email",
              "type": "String",
              "description": "email",
              "required": true
            },
            {
              "name": "emailAuthFactor",
              "type": "Integer",
              "description": "emailAuthFactor",
              "required": false
            },
            {
              "name": "token",
              "type": "String",
              "description": "Requires a token from com.atproto.sever.requestEmailUpdate if the account's email has been confirmed.",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-sync-getBlob",
    "meta": {
      "short": "getBlob",
      "description": "Get a blob associated with a given account. Returns the full blob as originally uploaded. Does not require auth; implemented by PDS."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.sync.getBlob",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "did": {
            "value": "{{did}}",
            "placeholders": [
              {
                "name": "did",
                "type": "String",
                "description": "The DID of the account.",
                "required": true
              }
            ]
          },
          "cid": {
            "value": "{{cid}}",
            "placeholders": [
              {
                "name": "cid",
                "type": "String",
                "description": "The CID of the blob to fetch",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-sync-getBlocks",
    "meta": {
      "short": "getBlocks",
      "description": "Get data blocks from a given repo, by CID. For example, intermediate MST nodes, or records. Does not require auth; implemented by PDS."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.sync.getBlocks",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "did": {
            "value": "{{did}}",
            "placeholders": [
              {
                "name": "did",
                "type": "String",
                "description": "The DID of the repo.",
                "required": true
              }
            ]
          },
          "cids": {
            "value": "{{cids}}",
            "placeholders": [
              {
                "name": "cids",
                "type": "Integer",
                "description": "cids",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-sync-getCheckout",
    "meta": {
      "short": "getCheckout",
      "description": "DEPRECATED - please use com.atproto.sync.getRepo instead"
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.sync.getCheckout",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "did": {
            "value": "{{did}}",
            "placeholders": [
              {
                "name": "did",
                "type": "String",
                "description": "The DID of the repo.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-sync-getHead",
    "meta": {
      "short": "getHead",
      "description": "DEPRECATED - please use com.atproto.sync.getLatestCommit instead"
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.sync.getHead",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "did": {
            "value": "{{did}}",
            "placeholders": [
              {
                "name": "did",
                "type": "String",
                "description": "The DID of the repo.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-sync-getHostStatus",
    "meta": {
      "short": "getHostStatus",
      "description": "Returns information about a specified upstream host, as consumed by the server. Implemented by relays."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.sync.getHostStatus",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "hostname": {
            "value": "{{hostname}}",
            "placeholders": [
              {
                "name": "hostname",
                "type": "String",
                "description": "Hostname of the host (eg, PDS or relay) being queried.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-sync-getLatestCommit",
    "meta": {
      "short": "getLatestCommit",
      "description": "Get the current commit CID & revision of the specified repo. Does not require auth."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.sync.getLatestCommit",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "did": {
            "value": "{{did}}",
            "placeholders": [
              {
                "name": "did",
                "type": "String",
                "description": "The DID of the repo.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-sync-getRecord",
    "meta": {
      "short": "getRecord",
      "description": "Get data blocks needed to prove the existence or non-existence of record in the current version of repo. Does not require auth."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.sync.getRecord",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "did": {
            "value": "{{did}}",
            "placeholders": [
              {
                "name": "did",
                "type": "String",
                "description": "The DID of the repo.",
                "required": true
              }
            ]
          },
          "collection": {
            "value": "{{collection}}",
            "placeholders": [
              {
                "name": "collection",
                "type": "String",
                "description": "collection",
                "required": true
              }
            ]
          },
          "rkey": {
            "value": "{{rkey}}",
            "placeholders": [
              {
                "name": "rkey",
                "type": "String",
                "description": "Record Key",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-sync-getRepo",
    "meta": {
      "short": "getRepo",
      "description": "Download a repository export as CAR file. Optionally only a 'diff' since a previous revision. Does not require auth; implemented by PDS."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.sync.getRepo",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "did": {
            "value": "{{did}}",
            "placeholders": [
              {
                "name": "did",
                "type": "String",
                "description": "The DID of the repo.",
                "required": true
              }
            ]
          },
          "since": {
            "value": "{{since}}",
            "placeholders": [
              {
                "name": "since",
                "type": "String",
                "description": "The revision ('rev') of the repo to create a diff from.",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-sync-getRepoStatus",
    "meta": {
      "short": "getRepoStatus",
      "description": "Get the hosting status for a repository, on this server. Expected to be implemented by PDS and Relay."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.sync.getRepoStatus",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "did": {
            "value": "{{did}}",
            "placeholders": [
              {
                "name": "did",
                "type": "String",
                "description": "The DID of the repo.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-sync-listBlobs",
    "meta": {
      "short": "listBlobs",
      "description": "List blob CIDs for an account, since some repo revision. Does not require auth; implemented by PDS."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.sync.listBlobs",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "did": {
            "value": "{{did}}",
            "placeholders": [
              {
                "name": "did",
                "type": "String",
                "description": "The DID of the repo.",
                "required": true
              }
            ]
          },
          "since": {
            "value": "{{since}}",
            "placeholders": [
              {
                "name": "since",
                "type": "String",
                "description": "Optional revision of the repo to list blobs since.",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "500"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-sync-listHosts",
    "meta": {
      "short": "listHosts",
      "description": "Enumerates upstream hosts (eg, PDS or relay instances) that this service consumes from. Implemented by relays."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.sync.listHosts",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "200"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-sync-listRepos",
    "meta": {
      "short": "listRepos",
      "description": "Enumerates all the DID, rev, and commit CID for all repos hosted by this service. Does not require auth; implemented by PDS and Relay."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.sync.listRepos",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "500"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-sync-listReposByCollection",
    "meta": {
      "short": "listReposByCollection",
      "description": "Enumerates all the DIDs which have records with the given collection NSID."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.sync.listReposByCollection",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "collection": {
            "value": "{{collection}}",
            "placeholders": [
              {
                "name": "collection",
                "type": "String",
                "description": "collection",
                "required": true
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "Maximum size of response set. Recommend setting a large maximum (1000+) when enumerating large DID lists.",
                "required": false,
                "default": "500"
              }
            ]
          },
          "cursor": {
            "value": "{{cursor}}",
            "placeholders": [
              {
                "name": "cursor",
                "type": "String",
                "description": "cursor",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-sync-notifyOfUpdate",
    "meta": {
      "short": "notifyOfUpdate",
      "description": "Notify a crawling service of a recent update, and that crawling should resume. Intended use is after a gap between repo stream events caused the crawling service to disconnect. Does not require auth; implemented by Relay. DEPRECATED: just use com.atproto.sync.requestCrawl"
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.sync.notifyOfUpdate",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"hostname\": \"{{hostname}}\"}",
          "placeholders": [
            {
              "name": "hostname",
              "type": "String",
              "description": "Hostname of the current service (usually a PDS) that is notifying of update.",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-sync-requestCrawl",
    "meta": {
      "short": "requestCrawl",
      "description": "Request a service to persistently crawl hosted repos. Expected use is new PDS instances declaring their existence to Relays. Does not require auth."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.sync.requestCrawl",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"hostname\": \"{{hostname}}\"}",
          "placeholders": [
            {
              "name": "hostname",
              "type": "String",
              "description": "Hostname of the current service (eg, PDS) that is requesting to be crawled.",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-temp-addReservedHandle",
    "meta": {
      "short": "addReservedHandle",
      "description": "Add a handle to the set of reserved handles."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.temp.addReservedHandle",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"handle\": \"{{handle}}\"}",
          "placeholders": [
            {
              "name": "handle",
              "type": "String",
              "description": "handle",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-temp-checkHandleAvailability",
    "meta": {
      "short": "checkHandleAvailability",
      "description": "Checks whether the provided handle is available. If the handle is not available, available suggestions will be returned. Optional inputs will be used to generate suggestions."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.temp.checkHandleAvailability",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "handle": {
            "value": "{{handle}}",
            "placeholders": [
              {
                "name": "handle",
                "type": "String",
                "description": "Tentative handle. Will be checked for availability or used to build handle suggestions.",
                "required": true
              }
            ]
          },
          "email": {
            "value": "{{email}}",
            "placeholders": [
              {
                "name": "email",
                "type": "String",
                "description": "User-provided email. Might be used to build handle suggestions.",
                "required": false
              }
            ]
          },
          "birthDate": {
            "value": "{{birthDate}}",
            "placeholders": [
              {
                "name": "birthDate",
                "type": "String",
                "description": "User-provided birth date. Might be used to build handle suggestions.",
                "required": false
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-temp-checkSignupQueue",
    "meta": {
      "short": "checkSignupQueue",
      "description": "Check accounts location in signup queue."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.temp.checkSignupQueue",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-temp-dereferenceScope",
    "meta": {
      "short": "dereferenceScope",
      "description": "Allows finding the oauth permission scope from a reference"
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.temp.dereferenceScope",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "scope": {
            "value": "{{scope}}",
            "placeholders": [
              {
                "name": "scope",
                "type": "String",
                "description": "The scope reference (starts with 'ref:')",
                "required": true
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-temp-fetchLabels",
    "meta": {
      "short": "fetchLabels",
      "description": "DEPRECATED: use queryLabels or subscribeLabels instead -- Fetch all labels from a labeler created after a certain date."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.temp.fetchLabels",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          }
        },
        "queryParams": {
          "since": {
            "value": "{{since}}",
            "placeholders": [
              {
                "name": "since",
                "type": "Integer",
                "description": "since",
                "required": false
              }
            ]
          },
          "limit": {
            "value": "{{limit}}",
            "placeholders": [
              {
                "name": "limit",
                "type": "Integer",
                "description": "limit",
                "required": false,
                "default": "50"
              }
            ]
          }
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-temp-requestPhoneVerification",
    "meta": {
      "short": "requestPhoneVerification",
      "description": "Request a verification code to be sent to the supplied phone number"
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.temp.requestPhoneVerification",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"phoneNumber\": \"{{phoneNumber}}\"}",
          "placeholders": [
            {
              "name": "phoneNumber",
              "type": "String",
              "description": "phoneNumber",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  },
  {
    "handle": "com-atproto-temp-revokeAccountCredentials",
    "meta": {
      "short": "revokeAccountCredentials",
      "description": "Revoke sessions, password, and app passwords associated with account. May be resolved by a password reset."
    },
    "endpoint": {
      "value": "/xrpc/com.atproto.temp.revokeAccountCredentials",
      "placeholders": []
    },
    "fields": [],
    "operations": {
      "execute": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bearer {{accessToken}}",
            "placeholders": [
              {
                "name": "accessToken",
                "type": "String",
                "description": "Access token for authentication.",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"account\": \"{{account}}\"}",
          "placeholders": [
            {
              "name": "account",
              "type": "String",
              "description": "account",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": []
  }
]
```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Like Post

Bluesky Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-150dcbfacd14c4fee7a8e63d801a268e09e30e35%2FBluesky_Logo.svg.png?alt=media" alt="" width="188"><figcaption></figcaption></figure>

<p align="center">The Like Post action lets you show appreciation for a post by adding your like to it.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to support a colleague’s creative project update, so I use the Like Post action in Bluesky to give it a quick thumbs-up.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| postID     | String     | Yes      |
| userID     | String     | Yes      |

### Related Connections

[Bluesky](/bluesky/bluesky)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "like-post",
  "state": "inDev",
  "meta": {
    "short": "Like Post",
    "description": "Likes a post on Bluesky."
  },
  "input": [
    {
      "name": "postID",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the post to like."
      }
    },
    {
      "name": "userID",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the user liking the post."
      }
    }
  ],
  "output": [
    {
      "name": "success",
      "type": "Boolean",
      "selector": ["success"],
      "meta": {
        "description": "Indicates whether the post was liked successfully."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/xrpc/app.bsky.feed.like",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"repo\": \"{{userID}}\", \"collection\": \"app.bsky.feed.like\", \"record\": {\"subject\": {\"uri\": \"at://{{postID}}\"}, \"createdAt\": \"{{now}}\"}}",
          "placeholders": [
            {
              "name": "userID",
              "type": "String",
              "description": "The ID of the user liking the post.",
              "required": true
            },
            {
              "name": "postID",
              "type": "String",
              "description": "The ID of the post to like.",
              "required": true
            },
            {
              "name": "now",
              "type": "String",
              "description": "Current timestamp in ISO format.",
              "required": true,
              "default": "{{now}}"
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Repost Post

Bluesky Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-150dcbfacd14c4fee7a8e63d801a268e09e30e35%2FBluesky_Logo.svg.png?alt=media" alt="" width="188"><figcaption></figcaption></figure>

<p align="center">The Repost Post action lets you share someone else’s post with your own followers, similar to a retweet.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to share an insightful industry article with my network, so I use the Repost Post action in Bluesky to quickly amplify it to my followers.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| postId     | String     | Yes      |

### Related Connections

[Bluesky](/bluesky/bluesky)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "repost-post",
  "state": "inDev",
  "meta": {
    "short": "Repost Post",
    "description": "Repost a post on Bluesky."
  },
  "input": [
    {
      "name": "postId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the post to repost."
      }
    }
  ],
  "output": [
    {
      "name": "success",
      "type": "Boolean",
      "selector": ["success"],
      "meta": {
        "description": "Indicates whether the repost was successful."
      }
    },
    {
      "name": "repostId",
      "type": "String",
      "selector": ["data", "repostId"],
      "meta": {
        "description": "The ID of the reposted post."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/xrpc/com/atproto/repo/createRecord",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"repo\": \"{{repo}}\", \"collection\": \"app.bsky.feed.post\", \"record\": {\"text\": \"{{text}}\", \"createdAt\": \"{{createdAt}}\"}}",
          "placeholders": [
            {
              "name": "repo",
              "type": "String",
              "description": "The repository handle.",
              "required": true
            },
            {
              "name": "text",
              "type": "String",
              "description": "The text content of the post.",
              "required": true
            },
            {
              "name": "createdAt",
              "type": "String",
              "description": "The creation timestamp of the post.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create Post

Bluesky Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-150dcbfacd14c4fee7a8e63d801a268e09e30e35%2FBluesky_Logo.svg.png?alt=media" alt="" width="188"><figcaption></figcaption></figure>

<p align="center">The Create Post action lets you compose and publish a new post with text, images, or links.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to announce our team’s latest milestone, so I use the Create Post action in Bluesky to share the news with our followers.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| text       | String     | Yes      |
| replyTo    | String     | No       |
| embed      | Object     | No       |

### Related Connections

[Bluesky](/bluesky/bluesky)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-post",
  "state": "inDev",
  "meta": {
    "short": "Create Post",
    "description": "Create a new post on Bluesky."
  },
  "input": [
    {
      "name": "text",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The text content of the post."
      }
    },
    {
      "name": "replyTo",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The URI of the post being replied to."
      }
    },
    {
      "name": "embed",
      "type": "Object",
      "required": false,
      "meta": {
        "description": "Embedded content, such as images or external links."
      }
    }
  ],
  "output": [
    {
      "name": "uri",
      "type": "String",
      "selector": ["uri"],
      "meta": {
        "description": "The URI of the created post."
      }
    },
    {
      "name": "cid",
      "type": "String",
      "selector": ["cid"],
      "meta": {
        "description": "The CID (Content Identifier) of the created post."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/xrpc/com.atproto.repo.createRecord",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"collection\":\"app.bsky.feed.post\",\"repo\":\"{{did}}\",\"record\":{\"text\":\"{{text}}\",\"reply\":{{if replyTo}}\"{\"root\":{\"uri\":\"{{replyTo}}\"}}\"{{else}}null{{end}},\"embed\":{{if embed}}{{embed}}{{else}}null{{end}},\"createdAt\":\"{{now}}\"}}",
          "placeholders": [
            {
              "name": "authToken",
              "type": "String",
              "description": "Authentication token for Bluesky API.",
              "required": true
            },
            {
              "name": "did",
              "type": "String",
              "description": "Decentralized Identifier (DID) of the user.",
              "required": true
            },
            {
              "name": "text",
              "type": "String",
              "description": "The text content of the post.",
              "required": true
            },
            {
              "name": "replyTo",
              "type": "String",
              "description": "The URI of the post being replied to.",
              "required": false
            },
            {
              "name": "embed",
              "type": "Object",
              "description": "Embedded content, such as images or external links.",
              "required": false
            },
            {
              "name": "now",
              "type": "String",
              "description": "Current timestamp in ISO 8601 format.",
              "required": true,
              "default": "{{now}}"
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Find Thread

Bluesky Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-150dcbfacd14c4fee7a8e63d801a268e09e30e35%2FBluesky_Logo.svg.png?alt=media" alt="" width="188"><figcaption></figcaption></figure>

<p align="center">The Find Thread query lets you search for and locate a specific conversation or post thread by keyword, user, or other criteria.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to revisit the discussion about our new product features, so I use the Find Thread action in Bluesky to quickly locate the relevant conversation.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| threadID   | String     | Yes      |

### Related Connections

[Bluesky](/bluesky/bluesky)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "find-thread",
  "state": "inDev",
  "meta": {
    "short": "Find Thread",
    "description": "Retrieve a specific thread from Bluesky based on its identifier."
  },
  "input": [
    {
      "name": "threadID",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The unique identifier of the thread to retrieve."
      }
    }
  ],
  "output": [
    {
      "name": "thread",
      "type": "Object",
      "selector": ["thread"],
      "meta": {
        "description": "The retrieved thread object."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/xrpc/com/atproto/repo/getRecord",
        "queryParams": {
          "repo": "{{threadID.split('.')[0]}}",
          "collection": "app.bsky.feed.post",
          "rkey": "{{threadID.split('.')[1]}}"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Canva

Canva Connection

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-83e5819a243edda7ec1613c524b10db6a54793e9%2FCanva_Logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<h3 align="center">Put Canva to Work with @Human Automations and @Human Agents</h3>

<p align="center">The Canva Connection documents all Triggers, Actions and Query Operations available for creating automations via the Canva API.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### What can you do with the Canva Connection?

* Connect to the Canva API in a few clicks
* Use the related Canva Operations (see below) in @Human Automations or @Human Agents

### Related Operations

#### Trigger Operations

**Asset Upload Completed**

Triggers on: asset/asset\_upload\_completed

Triggered when an asset upload job has finished.

**Autofill Job Completed**

Triggers on: autofill/autofill\_job\_completed

Triggered when an autofill job has finished.

**Comment Created**

Triggers on: comment/comment\_created

Triggered when a new comment is created on a design.

**Design Created**

Triggers on: design/design\_created

Triggered when a new design is created.

**Design Updated**

Triggers on: design/design\_updated

Triggered when an existing design is updated.

**Design Deleted**

Triggers on: design/design\_deleted

Triggered when a design is deleted.

**Design Published**

Triggers on: design/design\_published

Triggered when a design is published.

**Import Job Completed**

Triggers on: design\_import/import\_job\_completed

Triggered when a design import job has finished.

**Export Job Completed**

Triggers on: export/export\_job\_completed

Triggered when an export job has finished.

**Folder Created**

Triggers on: folder/folder\_created

Triggered when a new folder is created.

**Folder Updated**

Triggers on: folder/folder\_updated

Triggered when a folder's details are updated.

**Folder Deleted**

Triggers on: folder/folder\_deleted

Triggered when a folder is deleted.

**Resize Job Completed**

Triggers on: resize/resize\_job\_completed

Triggered when a resize job has finished.

#### Action Operations

[Action: Upload Asset](/canva/canva/action-upload-asset)

[Action: Autofill Design From Brand Template](/canva/canva/action-autofill-design-from-brand-template)

[Action: Import Design](/canva/canva/action-import-design)

[Action: API Request](/canva/canva/action-api-request)

#### Query Operations

Example link

### Related Automations

Example link

### Obtaining Access Credentials

To obtain a **Personal Access Token (PAT)** for **Canva** (system-to-system access), follow these steps:

#### **Prerequisites**

* A **Canva Pro/Enterprise** account (PATs are not available for free accounts).
* Admin access if generating tokens for a team.

#### **Steps**

1. **Log in** to your Canva account at <https://www.canva.com>.
2. **Click your profile icon** (top-right) → **Account Settings**.
3. Navigate to **Apps & Integrations** → **API & Developers**.
4. Under **Personal Access Tokens**, click **Generate Token**.
5. Enter a **Token Name** (e.g., "API Integration").
6. Select **Scopes** (permissions) for the token:
   * Common scopes: `design:read`, `design:write`, `user:read`.
7. Click **Generate Token** → Copy the token immediately (it won’t be shown again).

### Configuring Webhooks

1. **Log in** to the **Canva Developer Portal** at <https://www.canva.dev/>.
2. Select your integration from the **Your integrations** list.
3. Click on **Configuration** in the left-hand navigation menu.
4. Locate the **Webhook URL** section and enter your server's **Publicly accessible URL**.
5. Click **Save changes**.
6. Navigate to the **Scopes** page in the left sidebar.
7. Enable the **scopes** corresponding to the events you wish to receive (e.g., `collaboration:event`).
8. Click **Save changes**.

### Code (Apache v2.0): Service Connectivity and Metadata

```
{
  "handle": "canva",
  "status": "active",
  "meta": {
    "short": "Canva",
    "description": "Connect to Canva's design platform to manage designs, templates, and assets.",
    "icon": "canva",
    "tags": ["design", "graphics", "templates", "creative"]
  },
  "service": {
    "baseURL": {
      "value": "https://api.canva.com/v1"
    },
    "protocol": "https",
    "contentType": "application/json",
    "headers": {
      "Accept": {
        "value": "application/json"
      },
      "Content-Type": {
        "value": "application/json"
      }
    },
    "auth": {
      "method": "system_to_system",
      "params": {}
    }
  }
}

```

### Code (Apache v2.0): List of External Resources and Internal Mapping

```
[
  {
    "handle": "app",
    "meta": {
      "short": "App",
      "description": "Manage app resources via Canva Connect API."
    },
    "endpoint": {
      "value": ""
    },
    "webhooks": [],
    "operations": {
      "get": {
        "method": "GET",
        "path": {
          "value": "/v1/apps/{appId}/jwks"
        },
        "headers": {},
        "meta": {
          "description": "Returns the Json Web Key Set (public keys) of an app. These keys are used to"
        }
      }
    }
  },
  {
    "handle": "asset",
    "meta": {
      "short": "Asset",
      "description": "Manage asset resources via Canva Connect API."
    },
    "endpoint": {
      "value": ""
    },
    "webhooks": [
      {
        "event": "asset_upload_completed",
        "path": "/webhooks/canva/asset_upload_completed",
        "payload": [
          { "name": "asset_id", "type": "String", "selector": ["asset", "id"], "meta": { "description": "ID of the uploaded asset." } },
          { "name": "name", "type": "String", "selector": ["asset", "name"], "meta": { "description": "Name of the asset." } },
          { "name": "status", "type": "String", "selector": ["job", "status"], "meta": { "description": "Upload job status." } }
        ]
      }
    ],
    "operations": {
      "delete": {
        "method": "DELETE",
        "path": {
          "value": "/v1/assets/{assetId}"
        },
        "headers": {},
        "meta": {
          "description": "You can delete an asset by specifying its `assetId`. This operation mirrors the behavior"
        }
      },
      "get": {
        "method": "GET",
        "path": {
          "value": "/v1/assets/{assetId}"
        },
        "headers": {},
        "meta": {
          "description": "You can retrieve the metadata of an asset by specifying its `assetId`."
        }
      },
      "patch": {
        "method": "PATCH",
        "path": {
          "value": "/v1/assets/{assetId}"
        },
        "headers": {},
        "meta": {
          "description": "You can update the name and tags of an asset by specifying its `assetId`. Updating the tags"
        }
      },
      "post": {
        "method": "POST",
        "path": {
          "value": "/v1/asset-uploads"
        },
        "headers": {},
        "meta": {
          "description": "Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to upload an asset to the user's content library. Supported file types for assets are listed in the [Assets API overview](https://www.canva.dev/docs/connect/api-reference/assets/)."
        }
      },
      "get_jobId": {
        "method": "GET",
        "path": {
          "value": "/v1/url-asset-uploads/{jobId}"
        },
        "headers": {},
        "meta": {
          "description": "<Warning>"
        }
      },
      "post_url-asset-uploads": {
        "method": "POST",
        "path": {
          "value": "/v1/url-asset-uploads"
        },
        "headers": {},
        "meta": {
          "description": "<Warning>"
        }
      }
    }
  },
  {
    "handle": "autofill",
    "meta": {
      "short": "Autofill",
      "description": "Manage autofill resources via Canva Connect API."
    },
    "endpoint": {
      "value": ""
    },
    "webhooks": [
      {
        "event": "autofill_job_completed",
        "path": "/webhooks/canva/autofill_job_completed",
        "payload": [
          { "name": "job_id", "type": "String", "selector": ["job", "id"], "meta": { "description": "ID of the autofill job." } },
          { "name": "status", "type": "String", "selector": ["job", "status"], "meta": { "description": "Status of the autofill job." } },
          { "name": "design_id", "type": "String", "selector": ["job", "design_id"], "meta": { "description": "ID of the resulting design." } }
        ]
      }
    ],
    "operations": {
      "post": {
        "method": "POST",
        "path": {
          "value": "/v1/autofills"
        },
        "headers": {},
        "meta": {
          "description": "WARNING: Brand templates were migrated to use a new ID format in September 2025. If your integration stores brand template IDs, you'll need to migrate to use the new IDs. Old brand template IDs will continue to be accepted for 6 months to give you time to migrate to the new IDs."
        }
      },
      "get": {
        "method": "GET",
        "path": {
          "value": "/v1/autofills/{jobId}"
        },
        "headers": {},
        "meta": {
          "description": "AVAILABILITY: To use this API, your integration must act on behalf of a user that's a member of a [Canva Enterprise](https://www.canva.com/enterprise/) organization."
        }
      }
    }
  },
  {
    "handle": "brand_template",
    "meta": {
      "short": "Brand Template",
      "description": "Manage brand template resources via Canva Connect API."
    },
    "endpoint": {
      "value": ""
    },
    "webhooks": [],
    "operations": {
      "get": {
        "method": "GET",
        "path": {
          "value": "/v1/brand-templates"
        },
        "headers": {},
        "meta": {
          "description": "WARNING: Brand templates were migrated to use a new ID format in September 2025. If your integration stores brand template IDs, you'll need to migrate to use the new IDs. Old brand template IDs will continue to be accepted for 6 months to give you time to migrate to the new IDs."
        }
      },
      "get_brandTemplateId": {
        "method": "GET",
        "path": {
          "value": "/v1/brand-templates/{brandTemplateId}"
        },
        "headers": {},
        "meta": {
          "description": "WARNING: Brand templates were migrated to use a new ID format in September 2025. If your integration stores brand template IDs, you'll need to migrate to use the new IDs. Old brand template IDs will continue to be accepted for 6 months to give you time to migrate to the new IDs."
        }
      },
      "get_dataset": {
        "method": "GET",
        "path": {
          "value": "/v1/brand-templates/{brandTemplateId}/dataset"
        },
        "headers": {},
        "meta": {
          "description": "WARNING: Brand templates were migrated to use a new ID format in September 2025. If your integration stores brand template IDs, you'll need to migrate to use the new IDs. Old brand template IDs will continue to be accepted for 6 months to give you time to migrate to the new IDs."
        }
      }
    }
  },
  {
    "handle": "comment",
    "meta": {
      "short": "Comment",
      "description": "Manage comment resources via Canva Connect API."
    },
    "endpoint": {
      "value": ""
    },
    "webhooks": [
      {
        "event": "comment_created",
        "path": "/webhooks/canva/comment_created",
        "payload": [
          { "name": "comment_id", "type": "String", "selector": ["comment", "id"], "meta": { "description": "ID of the comment." } },
          { "name": "design_id", "type": "String", "selector": ["comment", "design_id"], "meta": { "description": "ID of the design the comment belongs to." } },
          { "name": "message", "type": "String", "selector": ["comment", "message"], "meta": { "description": "Text content of the comment." } }
        ]
      }
    ],
    "operations": {
      "post": {
        "method": "POST",
        "path": {
          "value": "/v1/comments"
        },
        "headers": {},
        "meta": {
          "description": "<Warning>"
        }
      },
      "post_replies": {
        "method": "POST",
        "path": {
          "value": "/v1/designs/{designId}/comments/{threadId}/replies"
        },
        "headers": {},
        "meta": {
          "description": "<Warning>"
        }
      },
      "get": {
        "method": "GET",
        "path": {
          "value": "/v1/designs/{designId}/comments/{threadId}/replies"
        },
        "headers": {},
        "meta": {
          "description": "<Warning>"
        }
      },
      "get_threadId": {
        "method": "GET",
        "path": {
          "value": "/v1/designs/{designId}/comments/{threadId}"
        },
        "headers": {},
        "meta": {
          "description": "<Warning>"
        }
      },
      "get_replyId": {
        "method": "GET",
        "path": {
          "value": "/v1/designs/{designId}/comments/{threadId}/replies/{replyId}"
        },
        "headers": {},
        "meta": {
          "description": "<Warning>"
        }
      },
      "post_comments": {
        "method": "POST",
        "path": {
          "value": "/v1/designs/{designId}/comments"
        },
        "headers": {},
        "meta": {
          "description": "<Warning>"
        }
      }
    }
  },
  {
    "handle": "connect",
    "meta": {
      "short": "Connect",
      "description": "Manage connect resources via Canva Connect API."
    },
    "endpoint": {
      "value": ""
    },
    "webhooks": [],
    "operations": {
      "get": {
        "method": "GET",
        "path": {
          "value": "/v1/connect/keys"
        },
        "headers": {},
        "meta": {
          "description": "<Warning>"
        }
      }
    }
  },
  {
    "handle": "design",
    "meta": {
      "short": "Design",
      "description": "Manage design resources via Canva Connect API."
    },
    "endpoint": {
      "value": ""
    },
    "webhooks": [
      {
        "event": "design_created",
        "path": "/webhooks/canva/design_created",
        "payload": [
          { "name": "design_id", "type": "String", "selector": ["design", "id"], "meta": { "description": "ID of the created design." } },
          { "name": "title", "type": "String", "selector": ["design", "title"], "meta": { "description": "Title of the design." } }
        ]
      },
      {
        "event": "design_updated",
        "path": "/webhooks/canva/design_updated",
        "payload": [
          { "name": "design_id", "type": "String", "selector": ["design", "id"], "meta": { "description": "ID of the updated design." } },
          { "name": "title", "type": "String", "selector": ["design", "title"], "meta": { "description": "Title of the design." } }
        ]
      },
      {
        "event": "design_deleted",
        "path": "/webhooks/canva/design_deleted",
        "payload": [
          { "name": "design_id", "type": "String", "selector": ["design", "id"], "meta": { "description": "ID of the deleted design." } }
        ]
      },
      {
        "event": "design_published",
        "path": "/webhooks/canva/design_published",
        "payload": [
          { "name": "design_id", "type": "String", "selector": ["design", "id"], "meta": { "description": "ID of the published design." } },
          { "name": "url", "type": "String", "selector": ["design", "url"], "meta": { "description": "URL of the published design." } }
        ]
      }
    ],
    "operations": {
      "get": {
        "method": "GET",
        "path": {
          "value": "/v1/designs"
        },
        "headers": {},
        "meta": {
          "description": "Lists metadata for all the designs in a Canva user's"
        }
      },
      "post": {
        "method": "POST",
        "path": {
          "value": "/v1/designs"
        },
        "headers": {},
        "meta": {
          "description": "Creates a new Canva design. To create a new design, you can either:"
        }
      },
      "get_designId": {
        "method": "GET",
        "path": {
          "value": "/v1/designs/{designId}"
        },
        "headers": {},
        "meta": {
          "description": "Gets the metadata for a design. This includes owner information, URLs for editing and viewing, and thumbnail information."
        }
      },
      "get_pages": {
        "method": "GET",
        "path": {
          "value": "/v1/designs/{designId}/pages"
        },
        "headers": {},
        "meta": {
          "description": "<Warning>"
        }
      },
      "get_export-formats": {
        "method": "GET",
        "path": {
          "value": "/v1/designs/{designId}/export-formats"
        },
        "headers": {},
        "meta": {
          "description": "Lists the available file formats for [exporting a design](https://www.canva.dev/docs/connect/api-reference/exports/create-design-export-job/)."
        }
      }
    }
  },
  {
    "handle": "design_import",
    "meta": {
      "short": "Design Import",
      "description": "Manage design import resources via Canva Connect API."
    },
    "endpoint": {
      "value": ""
    },
    "webhooks": [
      {
        "event": "import_job_completed",
        "path": "/webhooks/canva/import_job_completed",
        "payload": [
          { "name": "job_id", "type": "String", "selector": ["job", "id"], "meta": { "description": "ID of the import job." } },
          { "name": "status", "type": "String", "selector": ["job", "status"], "meta": { "description": "Status of the job." } },
          { "name": "design_id", "type": "String", "selector": ["job", "design_id"], "meta": { "description": "ID of the resulting design." } }
        ]
      }
    ],
    "operations": {
      "post": {
        "method": "POST",
        "path": {
          "value": "/v1/imports"
        },
        "headers": {},
        "meta": {
          "description": "Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to import an external file as a new design in Canva."
        }
      },
      "get": {
        "method": "GET",
        "path": {
          "value": "/v1/imports/{jobId}"
        },
        "headers": {},
        "meta": {
          "description": "Gets the result of a design import job created using the [Create design import job API](https://www.canva.dev/docs/connect/api-reference/design-imports/create-design-import-job/)."
        }
      },
      "post_url-imports": {
        "method": "POST",
        "path": {
          "value": "/v1/url-imports"
        },
        "headers": {},
        "meta": {
          "description": "Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to import an external file from a URL as a new design in Canva."
        }
      },
      "get_jobId": {
        "method": "GET",
        "path": {
          "value": "/v1/url-imports/{jobId}"
        },
        "headers": {},
        "meta": {
          "description": "Gets the result of a URL import job created using the [Create URL import job API](https://www.canva.dev/docs/connect/api-reference/design-imports/create-url-import-job/)."
        }
      }
    }
  },
  {
    "handle": "export",
    "meta": {
      "short": "Export",
      "description": "Manage export resources via Canva Connect API."
    },
    "endpoint": {
      "value": ""
    },
    "webhooks": [
      {
        "event": "export_job_completed",
        "path": "/webhooks/canva/export_job_completed",
        "payload": [
          { "name": "job_id", "type": "String", "selector": ["job", "id"], "meta": { "description": "ID of the export job." } },
          { "name": "status", "type": "String", "selector": ["job", "status"], "meta": { "description": "Status of the job." } },
          { "name": "url", "type": "String", "selector": ["job", "export_url"], "meta": { "description": "URL to download the exported file." } }
        ]
      }
    ],
    "operations": {
      "post": {
        "method": "POST",
        "path": {
          "value": "/v1/exports"
        },
        "headers": {},
        "meta": {
          "description": "Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to export a file from Canva. Once the exported file is generated, you can download"
        }
      },
      "get": {
        "method": "GET",
        "path": {
          "value": "/v1/exports/{exportId}"
        },
        "headers": {},
        "meta": {
          "description": "Gets the result of a design export job that was created using the [Create design export job API](https://www.canva.dev/docs/connect/api-reference/exports/create-design-export-job/)."
        }
      }
    }
  },
  {
    "handle": "folder",
    "meta": {
      "short": "Folder",
      "description": "Manage folder resources via Canva Connect API."
    },
    "endpoint": {
      "value": ""
    },
    "webhooks": [
      {
        "event": "folder_created",
        "path": "/webhooks/canva/folder_created",
        "payload": [
          { "name": "folder_id", "type": "String", "selector": ["folder", "id"], "meta": { "description": "ID of the created folder." } },
          { "name": "name", "type": "String", "selector": ["folder", "name"], "meta": { "description": "Name of the folder." } }
        ]
      },
      {
        "event": "folder_updated",
        "path": "/webhooks/canva/folder_updated",
        "payload": [
          { "name": "folder_id", "type": "String", "selector": ["folder", "id"], "meta": { "description": "ID of the updated folder." } },
          { "name": "name", "type": "String", "selector": ["folder", "name"], "meta": { "description": "Name of the folder." } }
        ]
      },
      {
        "event": "folder_deleted",
        "path": "/webhooks/canva/folder_deleted",
        "payload": [
          { "name": "folder_id", "type": "String", "selector": ["folder", "id"], "meta": { "description": "ID of the deleted folder." } }
        ]
      }
    ],
    "operations": {
      "delete": {
        "method": "DELETE",
        "path": {
          "value": "/v1/folders/{folderId}"
        },
        "headers": {},
        "meta": {
          "description": "Deletes a folder with the specified `folderID`."
        }
      },
      "get": {
        "method": "GET",
        "path": {
          "value": "/v1/folders/{folderId}"
        },
        "headers": {},
        "meta": {
          "description": "Gets the name and other details of a folder using a folder's `folderID`."
        }
      },
      "patch": {
        "method": "PATCH",
        "path": {
          "value": "/v1/folders/{folderId}"
        },
        "headers": {},
        "meta": {
          "description": "Updates a folder's details using its `folderID`."
        }
      },
      "get_items": {
        "method": "GET",
        "path": {
          "value": "/v1/folders/{folderId}/items"
        },
        "headers": {},
        "meta": {
          "description": "Lists the items in a folder, including each item's `type`."
        }
      },
      "post": {
        "method": "POST",
        "path": {
          "value": "/v1/folders/move"
        },
        "headers": {},
        "meta": {
          "description": "Moves an item to another folder. You must specify the folder ID of the destination folder, as well as the ID of the item you want to move."
        }
      },
      "post_folders": {
        "method": "POST",
        "path": {
          "value": "/v1/folders"
        },
        "headers": {},
        "meta": {
          "description": "Creates a folder in one of the following locations:"
        }
      }
    }
  },
  {
    "handle": "oauth",
    "meta": {
      "short": "Oauth",
      "description": "Manage oauth resources via Canva Connect API."
    },
    "endpoint": {
      "value": ""
    },
    "webhooks": [],
    "operations": {
      "post": {
        "method": "POST",
        "path": {
          "value": "/v1/oauth/token"
        },
        "headers": {},
        "meta": {
          "description": "This endpoint implements the OAuth 2.0 `token` endpoint, as part of the Authorization Code flow with Proof Key for Code Exchange (PKCE). For more information, see [Authentication](https://www.canva.dev/docs/connect/authentication/)."
        }
      },
      "post_introspect": {
        "method": "POST",
        "path": {
          "value": "/v1/oauth/introspect"
        },
        "headers": {},
        "meta": {
          "description": "Introspect an access token to see whether it is valid and active. You can also verify some token properties, such as its claims, scopes, and validity times."
        }
      },
      "post_revoke": {
        "method": "POST",
        "path": {
          "value": "/v1/oauth/revoke"
        },
        "headers": {},
        "meta": {
          "description": "Revoke an access token or a refresh token."
        }
      }
    }
  },
  {
    "handle": "oidc",
    "meta": {
      "short": "Oidc",
      "description": "Manage oidc resources via Canva Connect API."
    },
    "endpoint": {
      "value": ""
    },
    "webhooks": [],
    "operations": {
      "get": {
        "method": "GET",
        "path": {
          "value": "/v1/oidc/jwks"
        },
        "headers": {},
        "meta": {
          "description": "Gets the JSON Web Key Set (public keys) for OIDC. These keys are used to verify JWTs in OpenID Connect flows."
        }
      },
      "get_userinfo": {
        "method": "GET",
        "path": {
          "value": "/v1/oidc/userinfo"
        },
        "headers": {},
        "meta": {
          "description": "Fetches the current UserInfo claims for the authorized user. This is the same fields"
        }
      }
    }
  },
  {
    "handle": "resize",
    "meta": {
      "short": "Resize",
      "description": "Manage resize resources via Canva Connect API."
    },
    "endpoint": {
      "value": ""
    },
    "webhooks": [
      {
        "event": "resize_job_completed",
        "path": "/webhooks/canva/resize_job_completed",
        "payload": [
          { "name": "job_id", "type": "String", "selector": ["job", "id"], "meta": { "description": "ID of the resize job." } },
          { "name": "status", "type": "String", "selector": ["job", "status"], "meta": { "description": "Status of the job." } },
          { "name": "design_id", "type": "String", "selector": ["job", "design_id"], "meta": { "description": "ID of the resulting design." } }
        ]
      }
    ],
    "operations": {
      "post": {
        "method": "POST",
        "path": {
          "value": "/v1/resizes"
        },
        "headers": {},
        "meta": {
          "description": "AVAILABILITY: To use this API, your integration must act on behalf of a user that's on a Canva plan with premium features (such as Canva Pro)."
        }
      },
      "get": {
        "method": "GET",
        "path": {
          "value": "/v1/resizes/{jobId}"
        },
        "headers": {},
        "meta": {
          "description": "AVAILABILITY: To use this API, your integration must act on behalf of a user that's on a Canva plan with premium features (such as Canva Pro)."
        }
      }
    }
  },
  {
    "handle": "user",
    "meta": {
      "short": "User",
      "description": "Manage user resources via Canva Connect API."
    },
    "endpoint": {
      "value": ""
    },
    "webhooks": [],
    "operations": {
      "get": {
        "method": "GET",
        "path": {
          "value": "/v1/users/me"
        },
        "headers": {},
        "meta": {
          "description": "Returns the User ID and Team ID of the user"
        }
      },
      "get_capabilities": {
        "method": "GET",
        "path": {
          "value": "/v1/users/me/capabilities"
        },
        "headers": {},
        "meta": {
          "description": "Lists the API capabilities for the user account associated with the provided access token. For more information, see [Capabilities](https://www.canva.dev/docs/connect/capabilities/)."
        }
      },
      "get_profile": {
        "method": "GET",
        "path": {
          "value": "/v1/users/me/profile"
        },
        "headers": {},
        "meta": {
          "description": "Currently, this returns the display name of the user account associated with the provided access token. More user information is expected to be included in the future."
        }
      }
    }
  }
]
```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Upload Asset

Canva Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-83e5819a243edda7ec1613c524b10db6a54793e9%2FCanva_Logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The Upload Asset action in Canva allows you to add your own images, videos, or files to use in your designs.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to quickly add my company logo to a social media post, so I use the Upload Asset action in Canva to import the logo file and place it seamlessly into my design.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| file        | File       | Yes      |
| folderId    | String     | No       |
| accessToken | String     | Yes      |

### Related Connections

[Canva](/canva/canva)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "upload-asset",
  "state": "inDev",
  "meta": {
    "short": "Upload Asset",
    "description": "Uploads an asset (image, video, etc.) to Canva."
  },
  "input": [
    {
      "name": "file",
      "type": "File",
      "required": true,
      "meta": {
        "description": "The file to upload."
      }
    },
    {
      "name": "folderId",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The ID of the folder where the asset will be uploaded."
      }
    }
  ],
  "output": [
    {
      "name": "assetId",
      "type": "String",
      "selector": ["id"],
      "meta": {
        "description": "The ID of the uploaded asset."
      }
    },
    {
      "name": "assetUrl",
      "type": "String",
      "selector": ["url"],
      "meta": {
        "description": "The URL of the uploaded asset."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v1/uploads",
        "headers": {
          "Content-Type": "multipart/form-data"
        },
        "bodyTemplate": {
          "value": "--boundary\nContent-Disposition: form-data; name=\"file\"; filename=\"{{file.name}}\"\nContent-Type: {{file.type}}\n\n{{file.content}}\n--boundary--",
          "placeholders": [
            {
              "name": "file",
              "type": "File",
              "description": "The file to upload.",
              "required": true
            },
            {
              "name": "accessToken",
              "type": "String",
              "description": "The access token for Canva API.",
              "required": true
            }
          ]
        },
        "queryParams": {
          "folder_id": "{{folderId}}"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Autofill Design From Brand Template

Canva Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-83e5819a243edda7ec1613c524b10db6a54793e9%2FCanva_Logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The Autofill Design From Brand Template action in Canva automatically applies your brand’s colors, fonts, and logos to a new design based on a saved template.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to create a new flyer for our event without starting from scratch, so I use Autofill Design From Brand Template in Canva to instantly apply our brand’s colors, fonts, and logo to a pre-made template.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| templateId | String     | Yes      |
| designData | Map        | Yes      |
| designId   | String     | No       |
| designUrl  | String     | No       |

### Related Connections

[Canva](/canva/canva)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "autofill-design-from-brand-template",
  "state": "inDev",
  "meta": {
    "short": "Autofill Design From Brand Template",
    "description": "Automatically populate a design using a predefined brand template in Canva."
  },
  "input": [
    {
      "name": "templateId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the brand template to use."
      }
    },
    {
      "name": "designData",
      "type": "Map",
      "required": true,
      "meta": {
        "description": "A map of key-value pairs to populate the template fields."
      }
    }
  ],
  "output": [
    {
      "name": "designId",
      "type": "String",
      "selector": ["response", "designId"],
      "meta": {
        "description": "The ID of the newly created design."
      }
    },
    {
      "name": "designUrl",
      "type": "String",
      "selector": ["response", "designUrl"],
      "meta": {
        "description": "The URL to access the newly created design."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/templates/{{templateId}}/autofill",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"data\": {{designData}}}",
          "placeholders": [
            {
              "name": "designData",
              "type": "Map",
              "description": "Data to populate the template.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Import Design

Canva Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-83e5819a243edda7ec1613c524b10db6a54793e9%2FCanva_Logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The Import Design action in Canva lets you bring in existing designs or files from other platforms to edit or repurpose.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to update last month’s presentation with new data, so I use Import Design in Canva to quickly bring in the old slides and make my edits.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| designURL  | String     | Yes      |
| folderID   | String     | No       |

### Related Connections

[Canva](/canva/canva)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "import-design",
  "state": "inDev",
  "meta": {
    "short": "Import Design",
    "description": "Import a design into Canva from an external source."
  },
  "input": [
    {
      "name": "designURL",
      "type": "String",
      "required": true,
      "meta": {
        "description": "URL of the design to import."
      }
    },
    {
      "name": "folderID",
      "type": "String",
      "required": false,
      "meta": {
        "description": "ID of the folder where the design will be saved."
      }
    }
  ],
  "output": [
    {
      "name": "designID",
      "type": "String",
      "selector": ["data", "id"],
      "meta": {
        "description": "ID of the imported design."
      }
    },
    {
      "name": "status",
      "type": "String",
      "selector": ["data", "status"],
      "meta": {
        "description": "Status of the import operation."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v1/designs/import",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"design_url\": \"{{designURL}}\", \"folder_id\": \"{{folderID}}\"}",
          "placeholders": [
            {
              "name": "designURL",
              "type": "String",
              "description": "URL of the design to import.",
              "required": true
            },
            {
              "name": "folderID",
              "type": "String",
              "description": "ID of the folder where the design will be saved.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: API Request

Canva Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-83e5819a243edda7ec1613c524b10db6a54793e9%2FCanva_Logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The API Request action in Canva allows you to send or receive data from external apps or services to automate or enhance your designs.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to automatically generate personalized certificates for event attendees, so I use the API Request action in Canva to pull attendee names from our database and create custom designs for each one.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| endpoint    | String     | Yes      |
| method      | String     | Yes      |
| headers     | Map        | No       |
| queryParams | Map        | No       |
| body        | String     | No       |

### Related Connections

[Canva](/canva/canva)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "api-request",
  "state": "inDev",
  "meta": {
    "short": "API Request",
    "description": "Send an API request to Canva's API."
  },
  "input": [
    {
      "name": "endpoint",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The Canva API endpoint to call."
      }
    },
    {
      "name": "method",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The HTTP method to use (GET, POST, PUT, PATCH, DELETE)."
      }
    },
    {
      "name": "headers",
      "type": "Map",
      "required": false,
      "meta": {
        "description": "Additional headers to include in the request."
      }
    },
    {
      "name": "queryParams",
      "type": "Map",
      "required": false,
      "meta": {
        "description": "Query parameters to include in the request."
      }
    },
    {
      "name": "body",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The request body."
      }
    }
  ],
  "output": [
    {
      "name": "response",
      "type": "String",
      "selector": ["body"],
      "meta": {
        "description": "The response body from the API request."
      }
    },
    {
      "name": "statusCode",
      "type": "Integer",
      "selector": ["statusCode"],
      "meta": {
        "description": "The HTTP status code of the response."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "{{method}}",
        "path": "{{endpoint}}",
        "headers": "{{headers}}",
        "queryParams": "{{queryParams}}",
        "bodyTemplate": {
          "value": "{{body}}"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# ClickUp

ClickUp Connection

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-42df5a758f5ff54999633a8fa7ca4708bd74d069%2FClickup_logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<h3 align="center">Put ClickUp to Work with @Human Automations and @Human Agents</h3>

<p align="center">The ClickUp Connection documents all Triggers, Actions and Query Operations available for creating automations via the ClickUp API.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### What can you do with the ClickUp Connection?

* Connect to the ClickUp API in a few clicks
* Use the related ClickUp Operations (see below) in @Human Automations or @Human Agents

### Related Operations

#### Trigger Operations

**Task Comment Posted**

Triggers on: comments/taskCommentPosted

Triggered when a new comment is posted on a task.

**Task Comment Updated**

Triggers on: comments/taskCommentUpdated

Triggered when an existing comment on a task is updated.

**Folder Created**

Triggers on: folders/folderCreated

Triggered when a new folder is created in a space.

**Folder Updated**

Triggers on: folders/folderUpdated

Triggered when a folder's details or settings are updated.

**Folder Deleted**

Triggers on: folders/folderDeleted

Triggered when a folder is deleted.

**Goal Created**

Triggers on: goals/goalCreated

Triggered when a new goal is created in a workspace.

**Goal Updated**

Triggers on: goals/goalUpdated

Triggered when a goal's details or progress are updated.

**Goal Deleted**

Triggers on: goals/goalDeleted

Triggered when a goal is deleted.

**Key Result Created**

Triggers on: goals/keyResultCreated

Triggered when a new key result is added to a goal.

**Key Result Updated**

Triggers on: goals/keyResultUpdated

Triggered when a key result's details or progress are updated.

**Key Result Deleted**

Triggers on: goals/keyResultDeleted

Triggered when a key result is removed from a goal.

**List Created**

Triggers on: lists/listCreated

Triggered when a new list is created.

**List Updated**

Triggers on: lists/listUpdated

Triggered when a list's details or settings are updated.

**List Deleted**

Triggers on: lists/listDeleted

Triggered when a list is deleted.

**Space Created**

Triggers on: spaces/spaceCreated

Triggered when a new space is created in a workspace.

**Space Updated**

Triggers on: spaces/spaceUpdated

Triggered when a space's details or settings are updated.

**Space Deleted**

Triggers on: spaces/spaceDeleted

Triggered when a space is deleted.

**Task Created**

Triggers on: tasks/taskCreated

Triggered when a new task is created.

**Task Updated**

Triggers on: tasks/taskUpdated

Triggered when a task's details are updated.

**Task Deleted**

Triggers on: tasks/taskDeleted

Triggered when a task is deleted.

**Task Priority Updated**

Triggers on: tasks/taskPriorityUpdated

Triggered when a task's priority level is changed.

**Task Status Updated**

Triggers on: tasks/taskStatusUpdated

Triggered when a task's status is changed.

**Task Assignee Updated**

Triggers on: tasks/taskAssigneeUpdated

Triggered when a task's assignees are added or removed.

**Task Due Date Updated**

Triggers on: tasks/taskDueDateUpdated

Triggered when a task's due date is changed.

**Task Tag Updated**

Triggers on: tasks/taskTagUpdated

Triggered when tags are added to or removed from a task.

**Task Moved**

Triggers on: tasks/taskMoved

Triggered when a task is moved to a different list.

**Task Time Estimate Updated**

Triggers on: tasks/taskTimeEstimateUpdated

Triggered when a task's time estimate is changed.

**Task Time Tracked Updated**

Triggers on: tasks/taskTimeTrackedUpdated

Triggered when time is tracked or updated on a task.

#### Action Operations

[Action: Archive or Delete Task](/clickup/clickup/action-create-a-project)

[Action: Send Direct Message](/clickup/clickup/action-send-direct-message)

[Action: Create new Document](/clickup/clickup/action-create-new-document)

[Action: Create Space](/clickup/clickup/action-create-space)

#### Query Operations

Example link

### Related Automations

Example link

### Obtaining Access Credentials

To obtain a **Personal Access Token (PAT)** for **ClickUp**, follow these steps:

#### **Steps:**

1. **Log in** to your ClickUp account (ensure you have **admin permissions** if required).
2. Navigate to **Profile Settings**:
   * Click your **profile avatar** (top-right) → **"My Settings"**.
3. Go to **Apps** → **"Generate"** under **Personal Token**.
4. Enter a **Token Name** (e.g., "System Integration").
5. Select the **scopes (permissions)** needed (e.g., full access or granular permissions).
6. Click **"Generate Token"**.
7. **Copy the token** (it will only be shown once).

#### **Required Account:**

* A **ClickUp user account** (free or paid, depending on API access needs).

### Configuring Webhooks

1. **Log in** to your ClickUp account.
2. Select the **Space, Folder, or List** where you want to implement the webhook.
3. Click the **Automate** button (lightning bolt icon) in the upper-right corner.
4. Select **Add Automation**.
5. Choose a **Trigger** (e.g., "Task created", "Status changed", or "Comment posted").
6. Select **Call webhook** as the **Action**.
7. Enter the **Webhook URL** provided by your integration.
8. (Optional) Add any desired **Headers** or **URL Parameters**.
9. Click **Create** to save and activate the webhook.

### Code (Apache v2.0): Service Connectivity and Metadata

```
{
  "handle": "clickup",
  "status": "active",
  "meta": {
    "short": "ClickUp",
    "description": "Connect to ClickUp to manage tasks, projects, and workflows.",
    "icon": "clickup",
    "tags": ["project-management", "task-management", "productivity"]
  },
  "service": {
    "baseURL": {
      "value": "https://api.clickup.com/api/v2"
    },
    "protocol": "https",
    "contentType": "application/json",
    "headers": {
      "Content-Type": {
        "value": "application/json"
      }
    },
    "auth": {
      "method": "api_token",
      "params": {
        "apiToken": {
          "token": {
            "value": "{{apiToken}}",
            "placeholders": [
              {
                "name": "apiToken",
                "type": "String",
                "description": "ClickUp API token",
                "required": true
              }
            ]
          },
          "headerName": {
            "value": "Authorization"
          }
        }
      }
    }
  }
}

```

### Code (Apache v2.0): List of External Resources and Internal Mapping

\[ { "handle": "workspaces", "meta": { "short": "Workspaces", "description": "Manage workspaces in ClickUp." }, "endpoint": { "value": "/team" }, "fields": \[ { "name": "id", "type": "String", "selector": \[ "id" ], "meta": { "description": "Unique identifier." } }, { "name": "name", "type": "String", "selector": \[ "name" ], "meta": { "description": "Name of the resource." } }, { "name": "date\_created", "type": "String", "selector": \[ "date\_created", "date" ], "meta": { "description": "Creation timestamp." } } ], "operations": { "list": { "method": "GET", "path": { "value": "/{{team\_id}}/plan" } } }, "webhooks": \[] }, { "handle": "checklists", "meta": { "short": "Task Checklists", "description": "Manage task checklists in ClickUp." }, "endpoint": { "value": "/task/{{task\_id}}/checklist" }, "fields": \[ { "name": "id", "type": "String", "selector": \[ "id" ], "meta": { "description": "Unique identifier." } }, { "name": "name", "type": "String", "selector": \[ "name" ], "meta": { "description": "Name of the resource." } }, { "name": "date\_created", "type": "String", "selector": \[ "date\_created", "date" ], "meta": { "description": "Creation timestamp." } } ], "operations": { "post": { "method": "POST", "path": { "value": "/checklist/{{checklist\_id}}/checklist\_item" } }, "put": { "method": "PUT", "path": { "value": "/checklist/{{checklist\_id}}/checklist\_item/{{checklist\_item\_id}}" } }, "delete": { "method": "DELETE", "path": { "value": "/checklist/{{checklist\_id}}/checklist\_item/{{checklist\_item\_id}}" } } }, "webhooks": \[] }, { "handle": "comments", "meta": { "short": "Comments", "description": "Manage comments in ClickUp." }, "endpoint": { "value": "/task/{{task\_id}}/comment" }, "fields": \[ { "name": "id", "type": "String", "selector": \[ "id" ], "meta": { "description": "Unique identifier." } }, { "name": "name", "type": "String", "selector": \[ "name" ], "meta": { "description": "Name of the resource." } }, { "name": "date\_created", "type": "String", "selector": \[ "date\_created", "date" ], "meta": { "description": "Creation timestamp." } } ], "operations": { "list": { "method": "GET", "path": { "value": "/comment/{{comment\_id}}/reply" } }, "post": { "method": "POST", "path": { "value": "/comment/{{comment\_id}}/reply" } }, "put": { "method": "PUT", "path": { "value": "/comment/{{comment\_id}}" } }, "delete": { "method": "DELETE", "path": { "value": "/comment/{{comment\_id}}" } } }, "webhooks": \[ { "event": "taskCommentPosted", "path": "/webhooks/clickup/taskCommentPosted", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "task\_id", "type": "String", "selector": \["task\_id"], "meta": { "description": "ID of the task the comment was posted on." } }, { "name": "comment\_id", "type": "String", "selector": \["history\_items", "0", "comment", "id"], "meta": { "description": "ID of the new comment." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who posted the comment." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "taskCommentUpdated", "path": "/webhooks/clickup/taskCommentUpdated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "task\_id", "type": "String", "selector": \["task\_id"], "meta": { "description": "ID of the task the comment belongs to." } }, { "name": "comment\_id", "type": "String", "selector": \["history\_items", "0", "comment", "id"], "meta": { "description": "ID of the updated comment." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who updated the comment." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] } ] }, { "handle": "custom\_fields", "meta": { "short": "Custom Fields", "description": "Manage custom fields in ClickUp." }, "endpoint": { "value": "/list/{{list\_id}}/field" }, "fields": \[ { "name": "id", "type": "String", "selector": \[ "id" ], "meta": { "description": "Unique identifier." } }, { "name": "name", "type": "String", "selector": \[ "name" ], "meta": { "description": "Name of the resource." } }, { "name": "date\_created", "type": "String", "selector": \[ "date\_created", "date" ], "meta": { "description": "Creation timestamp." } } ], "operations": { "list": { "method": "GET", "path": { "value": "/team/{{team\_id}}/field" } }, "post": { "method": "POST", "path": { "value": "/task/{{task\_id}}/field/{{field\_id}}" }, "queryParams": { "custom\_task\_ids": { "value": "{{custom\_task\_ids}}" }, "team\_id": { "value": "{{team\_id}}" } } }, "delete": { "method": "DELETE", "path": { "value": "/task/{{task\_id}}/field/{{field\_id}}" }, "queryParams": { "custom\_task\_ids": { "value": "{{custom\_task\_ids}}" }, "team\_id": { "value": "{{team\_id}}" } } } }, "webhooks": \[] }, { "handle": "folders", "meta": { "short": "Folders", "description": "Manage folders in ClickUp." }, "endpoint": { "value": "/space/{{space\_id}}/folder" }, "fields": \[ { "name": "id", "type": "String", "selector": \[ "id" ], "meta": { "description": "Unique identifier." } }, { "name": "name", "type": "String", "selector": \[ "name" ], "meta": { "description": "Name of the resource." } }, { "name": "date\_created", "type": "String", "selector": \[ "date\_created", "date" ], "meta": { "description": "Creation timestamp." } } ], "operations": { "list": { "method": "GET", "path": { "value": "/" }, "queryParams": { "archived": { "value": "{{archived}}" } } }, "post": { "method": "POST", "path": { "value": "\_template/{{template\_id}}" } }, "read": { "method": "GET", "path": { "value": "/folder/{{folder\_id}}" } }, "put": { "method": "PUT", "path": { "value": "/folder/{{folder\_id}}" } }, "delete": { "method": "DELETE", "path": { "value": "/folder/{{folder\_id}}" } } }, "webhooks": \[ { "event": "folderCreated", "path": "/webhooks/clickup/folderCreated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "folder\_id", "type": "String", "selector": \["folder\_id"], "meta": { "description": "ID of the created folder." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who created the folder." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "folderUpdated", "path": "/webhooks/clickup/folderUpdated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "folder\_id", "type": "String", "selector": \["folder\_id"], "meta": { "description": "ID of the updated folder." } }, { "name": "field", "type": "String", "selector": \["history\_items", "0", "field"], "meta": { "description": "Field that changed." } }, { "name": "before", "type": "String", "selector": \["history\_items", "0", "before"], "meta": { "description": "Value before the change." } }, { "name": "after", "type": "String", "selector": \["history\_items", "0", "after"], "meta": { "description": "Value after the change." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who made the change." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "folderDeleted", "path": "/webhooks/clickup/folderDeleted", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "folder\_id", "type": "String", "selector": \["folder\_id"], "meta": { "description": "ID of the deleted folder." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who deleted the folder." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] } ] }, { "handle": "goals", "meta": { "short": "Goals", "description": "Manage goals in ClickUp." }, "endpoint": { "value": "/team/{{team\_id}}/goal" }, "fields": \[ { "name": "id", "type": "String", "selector": \[ "id" ], "meta": { "description": "Unique identifier." } }, { "name": "name", "type": "String", "selector": \[ "name" ], "meta": { "description": "Name of the resource." } }, { "name": "date\_created", "type": "String", "selector": \[ "date\_created", "date" ], "meta": { "description": "Creation timestamp." } } ], "operations": { "list": { "method": "GET", "path": { "value": "/" }, "queryParams": { "include\_completed": { "value": "{{include\_completed}}" } } }, "post": { "method": "POST", "path": { "value": "/goal/{{goal\_id}}/key\_result" } }, "read": { "method": "GET", "path": { "value": "/goal/{{goal\_id}}" } }, "put": { "method": "PUT", "path": { "value": "/key\_result/{{key\_result\_id}}" } }, "delete": { "method": "DELETE", "path": { "value": "/key\_result/{{key\_result\_id}}" } } }, "webhooks": \[ { "event": "goalCreated", "path": "/webhooks/clickup/goalCreated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "goal\_id", "type": "String", "selector": \["goal\_id"], "meta": { "description": "ID of the created goal." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who created the goal." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "goalUpdated", "path": "/webhooks/clickup/goalUpdated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "goal\_id", "type": "String", "selector": \["goal\_id"], "meta": { "description": "ID of the updated goal." } }, { "name": "field", "type": "String", "selector": \["history\_items", "0", "field"], "meta": { "description": "Field that changed." } }, { "name": "before", "type": "String", "selector": \["history\_items", "0", "before"], "meta": { "description": "Value before the change." } }, { "name": "after", "type": "String", "selector": \["history\_items", "0", "after"], "meta": { "description": "Value after the change." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who made the change." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "goalDeleted", "path": "/webhooks/clickup/goalDeleted", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "goal\_id", "type": "String", "selector": \["goal\_id"], "meta": { "description": "ID of the deleted goal." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who deleted the goal." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] } ] }, { "handle": "guests", "meta": { "short": "Guests", "description": "Manage guests in ClickUp." }, "endpoint": { "value": "/team/{{team\_id}}/guest" }, "fields": \[ { "name": "id", "type": "String", "selector": \[ "id" ], "meta": { "description": "Unique identifier." } }, { "name": "name", "type": "String", "selector": \[ "name" ], "meta": { "description": "Name of the resource." } }, { "name": "date\_created", "type": "String", "selector": \[ "date\_created", "date" ], "meta": { "description": "Creation timestamp." } } ], "operations": { "post": { "method": "POST", "path": { "value": "/folder/{{folder\_id}}/guest/{{guest\_id}}" }, "queryParams": { "include\_shared": { "value": "{{include\_shared}}" } } }, "read": { "method": "GET", "path": { "value": "/{{guest\_id}}" } }, "put": { "method": "PUT", "path": { "value": "/{{guest\_id}}" } }, "delete": { "method": "DELETE", "path": { "value": "/folder/{{folder\_id}}/guest/{{guest\_id}}" }, "queryParams": { "include\_shared": { "value": "{{include\_shared}}" } } } }, "webhooks": \[] }, { "handle": "lists", "meta": { "short": "Lists", "description": "Manage lists in ClickUp." }, "endpoint": { "value": "/folder/{{folder\_id}}/list" }, "fields": \[ { "name": "id", "type": "String", "selector": \[ "id" ], "meta": { "description": "Unique identifier." } }, { "name": "name", "type": "String", "selector": \[ "name" ], "meta": { "description": "Name of the resource." } }, { "name": "date\_created", "type": "String", "selector": \[ "date\_created", "date" ], "meta": { "description": "Creation timestamp." } } ], "operations": { "list": { "method": "GET", "path": { "value": "/space/{{space\_id}}/list" }, "queryParams": { "archived": { "value": "{{archived}}" } } }, "post": { "method": "POST", "path": { "value": "/space/{{space\_id}}/list\_template/{{template\_id}}" } }, "read": { "method": "GET", "path": { "value": "/list/{{list\_id}}" } }, "put": { "method": "PUT", "path": { "value": "/list/{{list\_id}}" } }, "delete": { "method": "DELETE", "path": { "value": "/list/{{list\_id}}/task/{{task\_id}}" } } }, "webhooks": \[ { "event": "listCreated", "path": "/webhooks/clickup/listCreated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "list\_id", "type": "String", "selector": \["list\_id"], "meta": { "description": "ID of the created list." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who created the list." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "listUpdated", "path": "/webhooks/clickup/listUpdated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "list\_id", "type": "String", "selector": \["list\_id"], "meta": { "description": "ID of the updated list." } }, { "name": "field", "type": "String", "selector": \["history\_items", "0", "field"], "meta": { "description": "Field that changed." } }, { "name": "before", "type": "String", "selector": \["history\_items", "0", "before"], "meta": { "description": "Value before the change." } }, { "name": "after", "type": "String", "selector": \["history\_items", "0", "after"], "meta": { "description": "Value after the change." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who made the change." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "listDeleted", "path": "/webhooks/clickup/listDeleted", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "list\_id", "type": "String", "selector": \["list\_id"], "meta": { "description": "ID of the deleted list." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who deleted the list." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] } ] }, { "handle": "spaces", "meta": { "short": "Spaces", "description": "Manage spaces in ClickUp." }, "endpoint": { "value": "/team/{{team\_id}}/space" }, "fields": \[ { "name": "id", "type": "String", "selector": \[ "id" ], "meta": { "description": "Unique identifier." } }, { "name": "name", "type": "String", "selector": \[ "name" ], "meta": { "description": "Name of the resource." } }, { "name": "date\_created", "type": "String", "selector": \[ "date\_created", "date" ], "meta": { "description": "Creation timestamp." } } ], "operations": { "list": { "method": "GET", "path": { "value": "/" }, "queryParams": { "archived": { "value": "{{archived}}" } } }, "post": { "method": "POST", "path": { "value": "/" } }, "read": { "method": "GET", "path": { "value": "/space/{{space\_id}}" } }, "put": { "method": "PUT", "path": { "value": "/space/{{space\_id}}" } }, "delete": { "method": "DELETE", "path": { "value": "/space/{{space\_id}}" } } }, "webhooks": \[ { "event": "spaceCreated", "path": "/webhooks/clickup/spaceCreated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "space\_id", "type": "String", "selector": \["space\_id"], "meta": { "description": "ID of the created space." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who created the space." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "spaceUpdated", "path": "/webhooks/clickup/spaceUpdated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "space\_id", "type": "String", "selector": \["space\_id"], "meta": { "description": "ID of the updated space." } }, { "name": "field", "type": "String", "selector": \["history\_items", "0", "field"], "meta": { "description": "Field that changed." } }, { "name": "before", "type": "String", "selector": \["history\_items", "0", "before"], "meta": { "description": "Value before the change." } }, { "name": "after", "type": "String", "selector": \["history\_items", "0", "after"], "meta": { "description": "Value after the change." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who made the change." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "spaceDeleted", "path": "/webhooks/clickup/spaceDeleted", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "space\_id", "type": "String", "selector": \["space\_id"], "meta": { "description": "ID of the deleted space." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who deleted the space." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] } ] }, { "handle": "tags", "meta": { "short": "Tags", "description": "Manage tags in ClickUp." }, "endpoint": { "value": "/space/{{space\_id}}/tag" }, "fields": \[ { "name": "id", "type": "String", "selector": \[ "id" ], "meta": { "description": "Unique identifier." } }, { "name": "name", "type": "String", "selector": \[ "name" ], "meta": { "description": "Name of the resource." } }, { "name": "date\_created", "type": "String", "selector": \[ "date\_created", "date" ], "meta": { "description": "Creation timestamp." } } ], "operations": { "list": { "method": "GET", "path": { "value": "/" } }, "post": { "method": "POST", "path": { "value": "/task/{{task\_id}}/tag/{{tag\_name}}" }, "queryParams": { "custom\_task\_ids": { "value": "{{custom\_task\_ids}}" }, "team\_id": { "value": "{{team\_id}}" } } }, "put": { "method": "PUT", "path": { "value": "/{{tag\_name}}" } }, "delete": { "method": "DELETE", "path": { "value": "/task/{{task\_id}}/tag/{{tag\_name}}" }, "queryParams": { "custom\_task\_ids": { "value": "{{custom\_task\_ids}}" }, "team\_id": { "value": "{{team\_id}}" } } } }, "webhooks": \[ { "event": "taskTagUpdated", "path": "/webhooks/clickup/taskTagUpdated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "task\_id", "type": "String", "selector": \["task\_id"], "meta": { "description": "ID of the task whose tags changed." } }, { "name": "tag\_name", "type": "String", "selector": \["history\_items", "0", "after", "name"], "meta": { "description": "Tag name added or removed." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who updated tags." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] } ] }, { "handle": "tasks", "meta": { "short": "Tasks", "description": "Manage tasks in ClickUp." }, "endpoint": { "value": "/list/{{list\_id}}/task" }, "fields": \[ { "name": "id", "type": "String", "selector": \[ "id" ], "meta": { "description": "Unique identifier." } }, { "name": "name", "type": "String", "selector": \[ "name" ], "meta": { "description": "Name of the resource." } }, { "name": "date\_created", "type": "String", "selector": \[ "date\_created", "date" ], "meta": { "description": "Creation timestamp." } } ], "operations": { "list": { "method": "GET", "path": { "value": "/task/bulk\_time\_in\_status/task\_ids" }, "queryParams": { "task\_ids": { "value": "{{task\_ids}}" }, "custom\_task\_ids": { "value": "{{custom\_task\_ids}}" }, "team\_id": { "value": "{{team\_id}}" } } }, "post": { "method": "POST", "path": { "value": "Template/{{template\_id}}" } }, "read": { "method": "GET", "path": { "value": "/task/{{task\_id}}" }, "queryParams": { "custom\_task\_ids": { "value": "{{custom\_task\_ids}}" }, "team\_id": { "value": "{{team\_id}}" }, "include\_subtasks": { "value": "{{include\_subtasks}}" }, "include\_markdown\_description": { "value": "{{include\_markdown\_description}}" }, "custom\_fields": { "value": "{{custom\_fields}}" } } }, "put": { "method": "PUT", "path": { "value": "/task/{{task\_id}}" }, "queryParams": { "custom\_task\_ids": { "value": "{{custom\_task\_ids}}" }, "team\_id": { "value": "{{team\_id}}" } } }, "delete": { "method": "DELETE", "path": { "value": "/task/{{task\_id}}" }, "queryParams": { "custom\_task\_ids": { "value": "{{custom\_task\_ids}}" }, "team\_id": { "value": "{{team\_id}}" } } } }, "webhooks": \[ { "event": "taskCreated", "path": "/webhooks/clickup/taskCreated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "task\_id", "type": "String", "selector": \["task\_id"], "meta": { "description": "ID of the created task." } }, { "name": "list\_id", "type": "String", "selector": \["history\_items", "0", "parent\_id"], "meta": { "description": "ID of the list the task was created in." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who created the task." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "taskUpdated", "path": "/webhooks/clickup/taskUpdated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "task\_id", "type": "String", "selector": \["task\_id"], "meta": { "description": "ID of the updated task." } }, { "name": "field", "type": "String", "selector": \["history\_items", "0", "field"], "meta": { "description": "Field that changed." } }, { "name": "before", "type": "String", "selector": \["history\_items", "0", "before"], "meta": { "description": "Value before the change." } }, { "name": "after", "type": "String", "selector": \["history\_items", "0", "after"], "meta": { "description": "Value after the change." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who made the change." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "taskDeleted", "path": "/webhooks/clickup/taskDeleted", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "task\_id", "type": "String", "selector": \["task\_id"], "meta": { "description": "ID of the deleted task." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who deleted the task." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "taskStatusUpdated", "path": "/webhooks/clickup/taskStatusUpdated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "task\_id", "type": "String", "selector": \["task\_id"], "meta": { "description": "ID of the task." } }, { "name": "status\_before", "type": "String", "selector": \["history\_items", "0", "before", "status"], "meta": { "description": "Status before the change." } }, { "name": "status\_after", "type": "String", "selector": \["history\_items", "0", "after", "status"], "meta": { "description": "Status after the change." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who changed the status." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "taskPriorityUpdated", "path": "/webhooks/clickup/taskPriorityUpdated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "task\_id", "type": "String", "selector": \["task\_id"], "meta": { "description": "ID of the task." } }, { "name": "priority\_before", "type": "String", "selector": \["history\_items", "0", "before"], "meta": { "description": "Priority before the change." } }, { "name": "priority\_after", "type": "String", "selector": \["history\_items", "0", "after"], "meta": { "description": "Priority after the change." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who changed the priority." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "taskAssigneeUpdated", "path": "/webhooks/clickup/taskAssigneeUpdated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "task\_id", "type": "String", "selector": \["task\_id"], "meta": { "description": "ID of the task." } }, { "name": "assignee\_added", "type": "String", "selector": \["history\_items", "0", "after", "id"], "meta": { "description": "ID of the assignee added (if any)." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who changed the assignee." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "taskDueDateUpdated", "path": "/webhooks/clickup/taskDueDateUpdated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "task\_id", "type": "String", "selector": \["task\_id"], "meta": { "description": "ID of the task." } }, { "name": "due\_date\_before", "type": "String", "selector": \["history\_items", "0", "before"], "meta": { "description": "Due date before the change (Unix ms)." } }, { "name": "due\_date\_after", "type": "String", "selector": \["history\_items", "0", "after"], "meta": { "description": "Due date after the change (Unix ms)." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who changed the due date." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "taskMoved", "path": "/webhooks/clickup/taskMoved", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "task\_id", "type": "String", "selector": \["task\_id"], "meta": { "description": "ID of the moved task." } }, { "name": "list\_id\_before", "type": "String", "selector": \["history\_items", "0", "before", "id"], "meta": { "description": "ID of the list before the move." } }, { "name": "list\_id\_after", "type": "String", "selector": \["history\_items", "0", "after", "id"], "meta": { "description": "ID of the list after the move." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who moved the task." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "taskCommentPosted", "path": "/webhooks/clickup/taskCommentPosted", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "task\_id", "type": "String", "selector": \["task\_id"], "meta": { "description": "ID of the task." } }, { "name": "comment\_id", "type": "String", "selector": \["history\_items", "0", "comment", "id"], "meta": { "description": "ID of the new comment." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who posted the comment." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "taskCommentUpdated", "path": "/webhooks/clickup/taskCommentUpdated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "task\_id", "type": "String", "selector": \["task\_id"], "meta": { "description": "ID of the task." } }, { "name": "comment\_id", "type": "String", "selector": \["history\_items", "0", "comment", "id"], "meta": { "description": "ID of the updated comment." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who updated the comment." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] }, { "event": "taskTimeTrackedUpdated", "path": "/webhooks/clickup/taskTimeTrackedUpdated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "task\_id", "type": "String", "selector": \["task\_id"], "meta": { "description": "ID of the task." } }, { "name": "time\_before", "type": "String", "selector": \["history\_items", "0", "before"], "meta": { "description": "Time tracked before the change (ms)." } }, { "name": "time\_after", "type": "String", "selector": \["history\_items", "0", "after"], "meta": { "description": "Time tracked after the change (ms)." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who changed tracked time." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] } ] }, { "handle": "time\_entries", "meta": { "short": "Time Tracking", "description": "Manage time tracking in ClickUp." }, "endpoint": { "value": "/team/{{team\_id}}/time\_entries" }, "fields": \[ { "name": "id", "type": "String", "selector": \[ "id" ], "meta": { "description": "Unique identifier." } }, { "name": "name", "type": "String", "selector": \[ "name" ], "meta": { "description": "Name of the resource." } }, { "name": "date\_created", "type": "String", "selector": \[ "date\_created", "date" ], "meta": { "description": "Creation timestamp." } } ], "operations": { "list": { "method": "GET", "path": { "value": "/tags" } }, "post": { "method": "POST", "path": { "value": "/stop" } }, "read": { "method": "GET", "path": { "value": "/{{timer\_id}}" }, "queryParams": { "include\_task\_tags": { "value": "{{include\_task\_tags}}" }, "include\_location\_names": { "value": "{{include\_location\_names}}" }, "include\_approval\_history": { "value": "{{include\_approval\_history}}" }, "include\_approval\_details": { "value": "{{include\_approval\_details}}" } } }, "delete": { "method": "DELETE", "path": { "value": "/tags" } }, "put": { "method": "PUT", "path": { "value": "/tags" } } }, "webhooks": \[ { "event": "taskTimeTrackedUpdated", "path": "/webhooks/clickup/taskTimeTrackedUpdated", "payload": \[ { "name": "event", "type": "String", "selector": \["event"], "meta": { "description": "Event type name." } }, { "name": "webhook\_id", "type": "String", "selector": \["webhook\_id"], "meta": { "description": "Webhook identifier." } }, { "name": "task\_id", "type": "String", "selector": \["task\_id"], "meta": { "description": "ID of the task the time entry belongs to." } }, { "name": "time\_before", "type": "String", "selector": \["history\_items", "0", "before"], "meta": { "description": "Time tracked before the change (ms)." } }, { "name": "time\_after", "type": "String", "selector": \["history\_items", "0", "after"], "meta": { "description": "Time tracked after the change (ms)." } }, { "name": "user\_id", "type": "String", "selector": \["history\_items", "0", "user", "id"], "meta": { "description": "ID of the user who changed tracked time." } }, { "name": "date", "type": "String", "selector": \["history\_items", "0", "date"], "meta": { "description": "Unix timestamp (ms) of the event." } } ] } ] }, { "handle": "users", "meta": { "short": "Users", "description": "Manage users in ClickUp." }, "endpoint": { "value": "/team/{{team\_id}}/user" }, "fields": \[ { "name": "id", "type": "String", "selector": \[ "id" ], "meta": { "description": "Unique identifier." } }, { "name": "name", "type": "String", "selector": \[ "name" ], "meta": { "description": "Name of the resource." } }, { "name": "date\_created", "type": "String", "selector": \[ "date\_created", "date" ], "meta": { "description": "Creation timestamp." } } ], "operations": { "post": { "method": "POST", "path": { "value": "/" } }, "read": { "method": "GET", "path": { "value": "/{{user\_id}}" }, "queryParams": { "include\_shared": { "value": "{{include\_shared}}" } } }, "put": { "method": "PUT", "path": { "value": "/{{user\_id}}" } }, "delete": { "method": "DELETE", "path": { "value": "/{{user\_id}}" } } }, "webhooks": \[] }, { "handle": "views", "meta": { "short": "Views", "description": "Manage views in ClickUp." }, "endpoint": { "value": "/team/{{team\_id}}/view" }, "fields": \[ { "name": "id", "type": "String", "selector": \[ "id" ], "meta": { "description": "Unique identifier." } }, { "name": "name", "type": "String", "selector": \[ "name" ], "meta": { "description": "Name of the resource." } }, { "name": "date\_created", "type": "String", "selector": \[ "date\_created", "date" ], "meta": { "description": "Creation timestamp." } } ], "operations": { "list": { "method": "GET", "path": { "value": "/view/{{view\_id}}/task" }, "queryParams": { "page": { "value": "{{page}}" } } }, "post": { "method": "POST", "path": { "value": "/list/{{list\_id}}/view" } }, "read": { "method": "GET", "path": { "value": "/view/{{view\_id}}" } }, "put": { "method": "PUT", "path": { "value": "/view/{{view\_id}}" } }, "delete": { "method": "DELETE", "path": { "value": "/view/{{view\_id}}" } } }, "webhooks": \[] }, { "handle": "webhooks", "meta": { "short": "Webhooks", "description": "Manage webhooks in ClickUp." }, "endpoint": { "value": "/team/{{team\_id}}/webhook" }, "fields": \[ { "name": "id", "type": "String", "selector": \[ "id" ], "meta": { "description": "Unique identifier." } }, { "name": "name", "type": "String", "selector": \[ "name" ], "meta": { "description": "Name of the resource." } }, { "name": "date\_created", "type": "String", "selector": \[ "date\_created", "date" ], "meta": { "description": "Creation timestamp." } } ], "operations": { "list": { "method": "GET", "path": { "value": "/" } }, "post": { "method": "POST", "path": { "value": "/" } }, "put": { "method": "PUT", "path": { "value": "/webhook/{{webhook\_id}}" } }, "delete": { "method": "DELETE", "path": { "value": "/webhook/{{webhook\_id}}" } } }, "webhooks": \[] } ]

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>
```


# Action: Archive or Delete Task

ClickUp Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-42df5a758f5ff54999633a8fa7ca4708bd74d069%2FClickup_logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The Archive or Delete Task action removes a task by either archiving or permanently deleting it.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to archive or delete a task in ClickUp so that I can keep my project board organized and up-to-date.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| taskID     | String     | Yes      |
| actionType | String     | Yes      |

### Related Connections

[ClickUp](/clickup/clickup)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "archive-or-delete-task",
  "state": "inDev",
  "meta": {
    "short": "Archive or Delete Task",
    "description": "Archives or deletes a task in ClickUp based on the provided task ID and action type."
  },
  "input": [
    {
      "name": "taskID",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the task to archive or delete."
      }
    },
    {
      "name": "actionType",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The action to perform. Must be either 'archive' or 'delete'.",
        "options": ["archive", "delete"]
      }
    }
  ],
  "output": [
    {
      "name": "success",
      "type": "Boolean",
      "selector": ["success"],
      "meta": {
        "description": "Indicates whether the operation was successful."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "DELETE",
        "path": "/api/v2/task/{{taskID}}",
        "headers": {
          "Content-Type": "application/json"
        },
        "queryParams": {
          "custom_task_ids": "true",
          "team_id": "{{ClickUpTeamID}}"
        },
        "bodyTemplate": {
          "value": "{\"archive\": {{actionType == 'archive'}}}",
          "placeholders": [
            {
              "name": "actionType",
              "type": "String",
              "description": "The action to perform.",
              "required": true,
              "options": ["archive", "delete"]
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Send Direct Message

ClickUp Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-42df5a758f5ff54999633a8fa7ca4708bd74d069%2FClickup_logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The Send Direct Message action transmits a private message to a specified user.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to send a direct message to a team member in ClickUp so that I can quickly communicate updates or reminders.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| userId     | String     | Yes      |
| message    | String     | Yes      |
| teamId     | String     | No       |

### Related Connections

[ClickUp](/clickup/clickup)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "send-direct-message",
  "state": "inDev",
  "meta": {
    "short": "Send Direct Message",
    "description": "Send a direct message to a user or team in ClickUp"
  },
  "input": [
    {
      "name": "userId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the user to send the message to"
      }
    },
    {
      "name": "message",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The content of the message to send"
      }
    },
    {
      "name": "teamId",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The ID of the team to send the message to (optional)"
      }
    }
  ],
  "output": [
    {
      "name": "success",
      "type": "Boolean",
      "selector": ["success"],
      "meta": {
        "description": "Indicates if the message was sent successfully"
      }
    },
    {
      "name": "messageId",
      "type": "String",
      "selector": ["data", "id"],
      "meta": {
        "description": "The ID of the sent message"
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/api/v2/chat/message",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"user_id\": \"{{userId}}\", \"message\": \"{{message}}\", \"team_id\": \"{{teamId}}\"}",
          "placeholders": [
            {
              "name": "userId",
              "type": "String",
              "description": "The ID of the user to send the message to",
              "required": true
            },
            {
              "name": "message",
              "type": "String",
              "description": "The content of the message to send",
              "required": true
            },
            {
              "name": "teamId",
              "type": "String",
              "description": "The ID of the team to send the message to (optional)",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create new Document

ClickUp Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-42df5a758f5ff54999633a8fa7ca4708bd74d069%2FClickup_logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The Create new Document action generates a new document within a specified location.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to create a new document in ClickUp so that I can store and share project-related information with my team.

#### Fields

| Field Name    | Field Type | Required |
| ------------- | ---------- | -------- |
| folder\_id    | String     | Yes      |
| name          | String     | Yes      |
| content       | String     | No       |
| document\_id  | String     | No       |
| document\_url | String     | No       |

### Related Connections

[ClickUp](/clickup/clickup)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-new-document",
  "state": "inDev",
  "meta": {
    "short": "Create New Document",
    "description": "Creates a new document in ClickUp."
  },
  "input": [
    {
      "name": "folder_id",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the folder where the document will be created."
      }
    },
    {
      "name": "name",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The name of the document."
      }
    },
    {
      "name": "content",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The content of the document."
      }
    }
  ],
  "output": [
    {
      "name": "document_id",
      "type": "String",
      "selector": ["id"],
      "meta": {
        "description": "The ID of the created document."
      }
    },
    {
      "name": "document_url",
      "type": "String",
      "selector": ["url"],
      "meta": {
        "description": "The URL of the created document."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/folder/{{folder_id}}/document",
        "headers": {
          "Content-Type": "application/json",
          "Authorization": "Bearer {{access_token}}"
        },
        "bodyTemplate": {
          "value": "{\"name\":\"{{name}}\",\"content\":\"{{content}}\"}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The name of the document.",
              "required": true
            },
            {
              "name": "content",
              "type": "String",
              "description": "The content of the document.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create Space

ClickUp Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-42df5a758f5ff54999633a8fa7ca4708bd74d069%2FClickup_logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The Create Space action creates a new Space (a high-level container for organizing work).</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to create a new space in ClickUp so that I can organize my team's tasks and projects effectively.

#### Fields

| Field Name          | Field Type | Required |
| ------------------- | ---------- | -------- |
| name                | String     | Yes      |
| multipleAssignments | Boolean    | No       |
| features            | Object     | No       |
| spaceID             | String     | No       |
| spaceName           | String     | No       |

### Related Connections

[ClickUp](/clickup/clickup)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-space",
  "state": "inDev",
  "meta": {
    "short": "Create Space",
    "description": "Creates a new space in ClickUp."
  },
  "input": [
    {
      "name": "name",
      "type": "String",
      "required": true,
      "meta": {
        "description": "Name of the space to create."
      }
    },
    {
      "name": "multipleAssignments",
      "type": "Boolean",
      "required": false,
      "meta": {
        "description": "Whether multiple assignments are allowed in the space."
      }
    },
    {
      "name": "features",
      "type": "Object",
      "required": false,
      "meta": {
        "description": "Features enabled in the space."
      }
    }
  ],
  "output": [
    {
      "name": "spaceID",
      "type": "String",
      "selector": ["id"],
      "meta": {
        "description": "ID of the created space."
      }
    },
    {
      "name": "spaceName",
      "type": "String",
      "selector": ["name"],
      "meta": {
        "description": "Name of the created space."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/team/{{teamID}}/space",
        "headers": {
          "Content-Type": "application/json",
          "Authorization": "Bearer {{accessToken}}"
        },
        "bodyTemplate": {
          "value": "{\"name\":\"{{name}}\",\"multiple_assignments\":{{multipleAssignments}},\"features\":{{features}}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "Name of the space to create.",
              "required": true
            },
            {
              "name": "multipleAssignments",
              "type": "Boolean",
              "description": "Whether multiple assignments are allowed in the space.",
              "required": false
            },
            {
              "name": "features",
              "type": "Object",
              "description": "Features enabled in the space.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# ChatGPT

ChatGPT Connection

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-333c6d9ccf0ebc377ba9f54e9c891752f6b7d19f%2FOpenAI_logo_2025_(symbol).svg.png?alt=media" alt="" width="188"><figcaption></figcaption></figure>

<h3 align="center">Put ChatGPT to Work with @Human Automations and @Human Agents</h3>

<p align="center">The ChatGPT Connection documents all Triggers, Actions and Query Operations available for creating automations via the ChatGPT API.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### What can you do with the ChatGPT Connection?

* Connect to the ChatGPT API in a few clicks
* Use the related ChatGPT Operations (see below) in @Human Automations or @Human Agents

### Related Operations

#### Trigger Operations

**Chat Completion Created**

Triggers on: chat\_completions/chat.completion.created

Triggered when a new chat completion is created.

**Response Completed**

Triggers on: responses/response.completed

Triggered when a response is successfully completed.

**Response Failed**

Triggers on: responses/response.failed

Triggered when a response execution fails.

**Embedding Created**

Triggers on: embeddings/embedding.created

Triggered when a new text embedding is generated.

**Image Generated**

Triggers on: images/image.generated

Triggered when a new image is successfully generated.

**Image Failed**

Triggers on: images/image.failed

Triggered when image generation fails.

**Audio Transcription Completed**

Triggers on: audio\_transcriptions/audio.transcription.completed

Triggered when an audio file transcription is finished.

**Audio Speech Generated**

Triggers on: audio\_speech/audio.speech.generated

Triggered when text-to-speech audio is generated.

**Model Created**

Triggers on: models/model.created

Triggered when a new model becomes available.

**Model Deleted**

Triggers on: models/model.deleted

Triggered when a fine-tuned model is deleted.

**Moderation Completed**

Triggers on: moderations/moderation.completed

Triggered when a content moderation check is finished.

**File Created**

Triggers on: files/file.created

Triggered when a new file is uploaded or created.

**File Deleted**

Triggers on: files/file.deleted

Triggered when a file is permanently removed.

**Fine-Tuning Job Created**

Triggers on: fine\_tuning\_jobs/fine\_tuning.job.created

Triggered when a new fine-tuning job is initiated.

**Fine-Tuning Job Succeeded**

Triggers on: fine\_tuning\_jobs/fine\_tuning.job.succeeded

Triggered when a fine-tuning job completes successfully.

**Fine-Tuning Job Failed**

Triggers on: fine\_tuning\_jobs/fine\_tuning.job.failed

Triggered when a fine-tuning job fails to complete.

**Fine-Tuning Job Cancelled**

Triggers on: fine\_tuning\_jobs/fine\_tuning.job.cancelled

Triggered when a fine-tuning job is manually cancelled.

**Batch Created**

Triggers on: batches/batch.created

Triggered when a new processing batch is created.

**Batch Completed**

Triggers on: batches/batch.completed

Triggered when a batch processing job is finished.

**Batch Failed**

Triggers on: batches/batch.failed

Triggered when a batch processing job fails.

**Batch Cancelled**

Triggers on: batches/batch.cancelled

Triggered when a batch job is cancelled.

**Batch Expired**

Triggers on: batches/batch.expired

Triggered when a batch job expires before completion.

**Assistant Created**

Triggers on: assistants/assistant.created

Triggered when a new AI assistant is created.

**Assistant Updated**

Triggers on: assistants/assistant.updated

Triggered when an assistant's configuration is modified.

**Assistant Deleted**

Triggers on: assistants/assistant.deleted

Triggered when an assistant is deleted.

**Thread Created**

Triggers on: threads/thread.created

Triggered when a new conversation thread is created.

**Thread Deleted**

Triggers on: threads/thread.deleted

Triggered when a conversation thread is deleted.

**Thread Message Created**

Triggers on: thread\_messages/thread.message.created

Triggered when a new message is added to a thread.

**Thread Message Completed**

Triggers on: thread\_messages/thread.message.completed

Triggered when a thread message is fully generated.

**Thread Message Deleted**

Triggers on: thread\_messages/thread.message.deleted

Triggered when a message is removed from a thread.

**Thread Run Created**

Triggers on: runs/thread.run.created

Triggered when a new run is started on a thread.

**Thread Run Completed**

Triggers on: runs/thread.run.completed

Triggered when a thread run finishes successfully.

**Thread Run Failed**

Triggers on: runs/thread.run.failed

Triggered when a thread run encounters an error.

**Thread Run Requires Action**

Triggers on: runs/thread.run.requires\_action

Triggered when a thread run is waiting for user action or tool output.

**Thread Run Cancelled**

Triggers on: runs/thread.run.cancelled

Triggered when a thread run is cancelled.

**Thread Run Expired**

Triggers on: runs/thread.run.expired

Triggered when a thread run times out.

**Vector Store Created**

Triggers on: vector\_stores/vector\_store.created

Triggered when a new vector store is created.

**Vector Store Completed**

Triggers on: vector\_stores/vector\_store.completed

Triggered when a vector store is fully processed and ready.

**Vector Store Deleted**

Triggers on: vector\_stores/vector\_store.deleted

Triggered when a vector store is deleted.

#### Action Operations

[Action: Analyze Text](/chatgpt/chatgpt/action-analyze-text)

[Action: Analyze Images](/chatgpt/chatgpt/action-analyze-images)

[Action: Create Embedding](/chatgpt/chatgpt/action-create-embedding)

[Action: Create Transcription](/chatgpt/chatgpt/action-create-transcription)

#### Query Operations

Example link

### Related Automations

Example link

### Obtaining Access Credentials

To obtain a **Personal Access Token (PAT)** for **OpenAI** (system-to-system access via UI), follow these steps:

#### **Prerequisites**

* An **OpenAI account** (sign up at <https://platform.openai.com>)
* Access to the **OpenAI API dashboard** (requires an active subscription if using paid APIs)

#### **Steps to Generate a PAT**

1. **Log in** to your OpenAI account at <https://platform.openai.com>.
2. Navigate to the **API keys** section:
   * Click on the **"API keys"** button, under the Manage section.
3. **Create a new secret key**:
   * Click **"Create new secret key"**.
   * Provide a name (optional but recommended for tracking).
   * Select the required permissions - All.
4. **Copy the generated key**:
   * The PAT will be displayed **once**—store it securely.

### Configuring Webhooks

1. **Log in** to your OpenAI account at <https://platform.openai.com>.
2. Navigate to the **Webhooks** section:
   * Click on **"Settings"** or select your **Project** from the left sidebar.
   * Click on the **"Webhooks"** tab.
3. **Create a new webhook endpoint**:
   * Click the **"Create"** button.
   * Provide your **Endpoint URL** (must be a public HTTPS URL).
   * Select the **Events** you want to subscribe to (e.g., `batch.completed`, `response.completed`).
4. **Copy the signing secret**:
   * Once the webhook is created, copy the **Signing Secret**.
   * Use this secret to verify that incoming requests are sent from OpenAI.

### Code (Apache v2.0): Service Connectivity and Metadata

```
{
  "handle": "chatgpt-v1",
  "status": "active",
  "meta": {
    "short": "ChatGPT",
    "description": "Connect to OpenAI's ChatGPT API for natural language processing and text generation.",
    "icon": "chatgpt",
    "tags": ["ai", "nlp", "chatbot", "text-generation"]
  },
  "service": {
    "baseURL": {
      "value": "https://api.openai.com/v1"
    },
    "protocol": "https",
    "contentType": "application/json",
    "headers": {
      "Content-Type": "application/json",
      "Authorization": {
        "value": "Bearer {{apiKey}}"
      }
    },
    "auth": {
      "method": "api_token",
      "params": {
        "apiToken": {
          "token": {
            "value": "{{apiKey}}",
            "placeholders": [
              {
                "name": "apiKey",
                "type": "String",
                "description": "OpenAI API key for authentication",
                "required": true
              }
            ]
          },
          "headerName": {
            "value": "Authorization"
          }
        }
      }
    }
  }
}

```

### Code (Apache v2.0): List of External Resources and Internal Mapping

```
[
  {
    "handle": "chat_completions",
    "meta": {
      "short": "Chat Completions",
      "description": "Generate model responses for chat messages. The core endpoint for conversational AI and text generation."
    },
    "endpoint": {
      "value": "/chat/completions"
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the completion." } },
      { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'chat.completion'." } },
      { "name": "created", "type": "Integer", "selector": ["created"], "meta": { "description": "Unix timestamp of when the completion was created." } },
      { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "The model used to generate the completion." } },
      { "name": "content", "type": "String", "selector": ["choices", "0", "message", "content"], "meta": { "description": "The generated message content." } },
      { "name": "finish_reason", "type": "String", "selector": ["choices", "0", "finish_reason"], "meta": { "description": "Reason the model stopped generating (e.g., stop, length, tool_calls)." } },
      { "name": "prompt_tokens", "type": "Integer", "selector": ["usage", "prompt_tokens"], "meta": { "description": "Number of tokens in the prompt." } },
      { "name": "completion_tokens", "type": "Integer", "selector": ["usage", "completion_tokens"], "meta": { "description": "Number of tokens in the completion." } },
      { "name": "total_tokens", "type": "Integer", "selector": ["usage", "total_tokens"], "meta": { "description": "Total tokens used." } }
    ],
    "operations": {
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"model\": \"{{model}}\", \"messages\": {{messages}}}",
          "placeholders": [
            { "name": "model", "type": "String", "description": "ID of the model to use (e.g., gpt-4o, gpt-4-turbo).", "required": true },
            { "name": "messages", "type": "String", "description": "JSON array of message objects with role and content.", "required": true }
          ]
        }
      }
    },
    "webhooks": [
      {
        "event": "chat.completion.created", "path": "/webhooks/chatgpt/chat-completion-created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the completion." } },
          { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'chat.completion'." } },
          { "name": "created", "type": "Integer", "selector": ["created"], "meta": { "description": "Unix timestamp of creation." } },
          { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "The model used to generate the completion." } },
          { "name": "content", "type": "String", "selector": ["choices", "0", "message", "content"], "meta": { "description": "The generated message content." } },
          { "name": "finish_reason", "type": "String", "selector": ["choices", "0", "finish_reason"], "meta": { "description": "Reason the model stopped generating." } },
          { "name": "prompt_tokens", "type": "Integer", "selector": ["usage", "prompt_tokens"], "meta": { "description": "Number of tokens in the prompt." } },
          { "name": "completion_tokens", "type": "Integer", "selector": ["usage", "completion_tokens"], "meta": { "description": "Number of tokens in the completion." } },
          { "name": "total_tokens", "type": "Integer", "selector": ["usage", "total_tokens"], "meta": { "description": "Total tokens used." } }
        ]
      }
    ]
  },
  {
    "handle": "responses",
    "meta": {
      "short": "Responses",
      "description": "Create model responses using the Responses API (newer stateful API supporting tools, file search, and web search)."
    },
    "endpoint": {
      "value": "/responses"
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the response." } },
      { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'response'." } },
      { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of when the response was created." } },
      { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "The model used." } },
      { "name": "output_text", "type": "String", "selector": ["output", "0", "content", "0", "text"], "meta": { "description": "The generated text output." } },
      { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Response status (e.g., completed, in_progress, failed)." } },
      { "name": "input_tokens", "type": "Integer", "selector": ["usage", "input_tokens"], "meta": { "description": "Number of input tokens used." } },
      { "name": "output_tokens", "type": "Integer", "selector": ["usage", "output_tokens"], "meta": { "description": "Number of output tokens generated." } }
    ],
    "operations": {
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"model\": \"{{model}}\", \"input\": \"{{input}}\"}",
          "placeholders": [
            { "name": "model", "type": "String", "description": "ID of the model to use (e.g., gpt-4o).", "required": true },
            { "name": "input", "type": "String", "description": "The input text or messages for the model.", "required": true }
          ]
        }
      },
      "read": {
        "method": "GET",
        "path": { "value": "/{{response_id}}", "placeholders": [{ "name": "response_id", "type": "String", "description": "ID of the response to retrieve.", "required": true }] }
      },
      "delete": {
        "method": "DELETE",
        "path": { "value": "/{{response_id}}", "placeholders": [{ "name": "response_id", "type": "String", "description": "ID of the response to delete.", "required": true }] }
      }
    },
    "webhooks": [
      {
        "event": "response.completed", "path": "/webhooks/chatgpt/response-completed",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the response." } },
          { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'response'." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Response status (e.g., completed)." } },
          { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "The model used." } },
          { "name": "output_text", "type": "String", "selector": ["output", "0", "content", "0", "text"], "meta": { "description": "The generated text output." } },
          { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of creation." } },
          { "name": "input_tokens", "type": "Integer", "selector": ["usage", "input_tokens"], "meta": { "description": "Input tokens used." } },
          { "name": "output_tokens", "type": "Integer", "selector": ["usage", "output_tokens"], "meta": { "description": "Output tokens generated." } }
        ]
      },
      {
        "event": "response.failed", "path": "/webhooks/chatgpt/response-failed",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the response." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Response status (e.g., failed)." } },
          { "name": "error", "type": "Object", "selector": ["error"], "meta": { "description": "Error details explaining the failure." } }
        ]
      }
    ]
  },
  {
    "handle": "embeddings",
    "meta": {
      "short": "Embeddings",
      "description": "Generate vector representations of text for semantic search, clustering, and similarity tasks."
    },
    "endpoint": {
      "value": "/embeddings"
    },
    "fields": [
      { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'list'." } },
      { "name": "embedding", "type": "String", "selector": ["data", "0", "embedding"], "multivalue": true, "meta": { "description": "The embedding vector as an array of floats." } },
      { "name": "index", "type": "Integer", "selector": ["data", "0", "index"], "meta": { "description": "Index of the embedding in the list." } },
      { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "The model used to generate the embeddings." } },
      { "name": "prompt_tokens", "type": "Integer", "selector": ["usage", "prompt_tokens"], "meta": { "description": "Number of tokens in the input." } },
      { "name": "total_tokens", "type": "Integer", "selector": ["usage", "total_tokens"], "meta": { "description": "Total tokens used." } }
    ],
    "operations": {
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"model\": \"{{model}}\", \"input\": \"{{input}}\"}",
          "placeholders": [
            { "name": "model", "type": "String", "description": "ID of the embedding model (e.g., text-embedding-3-small).", "required": true },
            { "name": "input", "type": "String", "description": "Text string or array of strings to embed.", "required": true }
          ]
        }
      }
    },
    "webhooks": [
      {
        "event": "embedding.created", "path": "/webhooks/chatgpt/embedding-created",
        "payload": [
          { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'list'." } },
          { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "The model used for embeddings." } },
          { "name": "total_tokens", "type": "Integer", "selector": ["usage", "total_tokens"], "meta": { "description": "Total tokens used for the generation." } },
          { "name": "prompt_tokens", "type": "Integer", "selector": ["usage", "prompt_tokens"], "meta": { "description": "Input tokens used." } }
        ]
      }
    ]
  },
  {
    "handle": "images",
    "meta": {
      "short": "Images",
      "description": "Generate, edit, and create variations of images using DALL·E models."
    },
    "endpoint": {
      "value": "/images/generations"
    },
    "fields": [
      { "name": "created", "type": "Integer", "selector": ["created"], "meta": { "description": "Unix timestamp of when the image was created." } },
      { "name": "url", "type": "String", "selector": ["data", "0", "url"], "meta": { "description": "URL of the generated image." } },
      { "name": "revised_prompt", "type": "String", "selector": ["data", "0", "revised_prompt"], "meta": { "description": "The revised prompt used for generation (if applicable)." } },
      { "name": "b64_json", "type": "String", "selector": ["data", "0", "b64_json"], "meta": { "description": "Base64-encoded image data (when response_format is b64_json)." } }
    ],
    "operations": {
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"model\": \"{{model}}\", \"prompt\": \"{{prompt}}\", \"n\": {{n}}, \"size\": \"{{size}}\"}",
          "placeholders": [
            { "name": "model", "type": "String", "description": "Model to use (e.g., dall-e-3, dall-e-2).", "required": true },
            { "name": "prompt", "type": "String", "description": "Text description of the desired image.", "required": true },
            { "name": "n", "type": "Integer", "description": "Number of images to generate (1–10).", "required": false },
            { "name": "size", "type": "String", "description": "Image size (e.g., 1024x1024, 1792x1024).", "required": false, "options": ["256x256", "512x512", "1024x1024", "1792x1024", "1024x1792"] }
          ]
        }
      }
    },
    "webhooks": [
      {
        "event": "image.generated", "path": "/webhooks/chatgpt/image-generated",
        "payload": [
          { "name": "url", "type": "String", "selector": ["data", "0", "url"], "meta": { "description": "URL of the generated image." } },
          { "name": "revised_prompt", "type": "String", "selector": ["data", "0", "revised_prompt"], "meta": { "description": "The revised prompt used for generation." } },
          { "name": "created", "type": "Integer", "selector": ["created"], "meta": { "description": "Unix timestamp of creation." } }
        ]
      },
      {
        "event": "image.failed", "path": "/webhooks/chatgpt/image-failed",
        "payload": [
          { "name": "error", "type": "Object", "selector": ["error"], "meta": { "description": "Error details if image generation failed." } }
        ]
      }
    ]
  },
  {
    "handle": "audio_transcriptions",
    "meta": {
      "short": "Audio Transcriptions",
      "description": "Transcribe audio into text using the Whisper model."
    },
    "endpoint": {
      "value": "/audio/transcriptions"
    },
    "fields": [
      { "name": "text", "type": "String", "selector": ["text"], "meta": { "description": "The transcribed text." } },
      { "name": "language", "type": "String", "selector": ["language"], "meta": { "description": "The language of the transcribed text." } },
      { "name": "duration", "type": "String", "selector": ["duration"], "meta": { "description": "Duration of the audio in seconds." } }
    ],
    "operations": {
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"model\": \"{{model}}\", \"file\": \"{{file}}\"}",
          "placeholders": [
            { "name": "model", "type": "String", "description": "Model to use (e.g., whisper-1).", "required": true },
            { "name": "file", "type": "String", "description": "Audio file to transcribe (multipart/form-data).", "required": true },
            { "name": "language", "type": "String", "description": "Language of the audio in ISO-639-1 format.", "required": false },
            { "name": "prompt", "type": "String", "description": "Optional context or spelling hints.", "required": false }
          ]
        }
      }
    },
    "webhooks": [
      {
        "event": "audio.transcription.completed", "path": "/webhooks/chatgpt/audio-transcription-completed",
        "payload": [
          { "name": "text", "type": "String", "selector": ["text"], "meta": { "description": "The transcribed text." } },
          { "name": "language", "type": "String", "selector": ["language"], "meta": { "description": "The language detected." } },
          { "name": "duration", "type": "String", "selector": ["duration"], "meta": { "description": "Duration of the audio in seconds." } }
        ]
      }
    ]
  },
  {
    "handle": "audio_speech",
    "meta": {
      "short": "Audio Speech",
      "description": "Generate spoken audio from text using TTS models."
    },
    "endpoint": {
      "value": "/audio/speech"
    },
    "fields": [
      { "name": "audio_data", "type": "String", "selector": [], "meta": { "description": "Raw binary audio content returned in the response body." } }
    ],
    "operations": {
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"model\": \"{{model}}\", \"input\": \"{{input}}\", \"voice\": \"{{voice}}\"}",
          "placeholders": [
            { "name": "model", "type": "String", "description": "TTS model to use (e.g., tts-1, tts-1-hd).", "required": true },
            { "name": "input", "type": "String", "description": "The text to synthesize (max 4096 characters).", "required": true },
            { "name": "voice", "type": "String", "description": "Voice to use.", "required": true, "options": ["alloy", "echo", "fable", "onyx", "nova", "shimmer"] },
            { "name": "response_format", "type": "String", "description": "Output audio format.", "required": false, "options": ["mp3", "opus", "aac", "flac", "wav", "pcm"] }
          ]
        }
      }
    },
    "webhooks": [
      {
        "event": "audio.speech.generated", "path": "/webhooks/chatgpt/audio-speech-generated",
        "payload": [
          { "name": "audio_data", "type": "String", "selector": [], "meta": { "description": "Binary audio content." } }
        ]
      }
    ]
  },
  {
    "handle": "models",
    "meta": {
      "short": "Models",
      "description": "List and retrieve available OpenAI models."
    },
    "endpoint": {
      "value": "/models"
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Model identifier (e.g., gpt-4o)." } },
      { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'model'." } },
      { "name": "created", "type": "Integer", "selector": ["created"], "meta": { "description": "Unix timestamp of when the model was created." } },
      { "name": "owned_by", "type": "String", "selector": ["owned_by"], "meta": { "description": "Organization that owns the model." } }
    ],
    "operations": {
      "list": { "method": "GET", "path": { "value": "" } },
      "read": { "method": "GET", "path": { "value": "/{{model_id}}", "placeholders": [{ "name": "model_id", "type": "String", "description": "The ID of the model.", "required": true }] } },
      "delete": { "method": "DELETE", "path": { "value": "/{{model_id}}", "placeholders": [{ "name": "model_id", "type": "String", "description": "The ID of the fine-tuned model to delete.", "required": true }] } }
    },
    "webhooks": [
      {
        "event": "model.created", "path": "/webhooks/chatgpt/model-created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Model identifier (e.g., gpt-4o)." } },
          { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'model'." } },
          { "name": "created", "type": "Integer", "selector": ["created"], "meta": { "description": "Unix timestamp of creation." } },
          { "name": "owned_by", "type": "String", "selector": ["owned_by"], "meta": { "description": "Organization that owns the model." } }
        ]
      },
      {
        "event": "model.deleted", "path": "/webhooks/chatgpt/model-deleted",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Model identifier." } },
          { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type." } },
          { "name": "deleted", "type": "Boolean", "selector": ["deleted"], "meta": { "description": "Whether the model was successfully deleted." } }
        ]
      }
    ]
  },
  {
    "handle": "moderations",
    "meta": {
      "short": "Moderations",
      "description": "Classify text for policy violations using OpenAI's moderation model."
    },
    "endpoint": {
      "value": "/moderations"
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the moderation result." } },
      { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "The moderation model used." } },
      { "name": "flagged", "type": "Boolean", "selector": ["results", "0", "flagged"], "meta": { "description": "Whether the input was flagged as violating policy." } },
      { "name": "hate", "type": "Boolean", "selector": ["results", "0", "categories", "hate"], "meta": { "description": "Whether hate content was detected." } },
      { "name": "harassment", "type": "Boolean", "selector": ["results", "0", "categories", "harassment"], "meta": { "description": "Whether harassment content was detected." } },
      { "name": "self_harm", "type": "Boolean", "selector": ["results", "0", "categories", "self-harm"], "meta": { "description": "Whether self-harm content was detected." } },
      { "name": "sexual", "type": "Boolean", "selector": ["results", "0", "categories", "sexual"], "meta": { "description": "Whether sexual content was detected." } },
      { "name": "violence", "type": "Boolean", "selector": ["results", "0", "categories", "violence"], "meta": { "description": "Whether violent content was detected." } }
    ],
    "operations": {
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"model\": \"{{model}}\", \"input\": \"{{input}}\"}",
          "placeholders": [
            { "name": "model", "type": "String", "description": "Moderation model (e.g., omni-moderation-latest).", "required": false },
            { "name": "input", "type": "String", "description": "Text to classify.", "required": true }
          ]
        }
      }
    },
    "webhooks": [
      {
        "event": "moderation.completed", "path": "/webhooks/chatgpt/moderation-completed",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the moderation result." } },
          { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "The moderation model used." } },
          { "name": "flagged", "type": "Boolean", "selector": ["results", "0", "flagged"], "meta": { "description": "Whether content was flagged." } },
          { "name": "categories", "type": "Object", "selector": ["results", "0", "categories"], "meta": { "description": "Detailed violation categories." } }
        ]
      }
    ]
  },
  {
    "handle": "files",
    "meta": {
      "short": "Files",
      "description": "Upload and manage files used for fine-tuning, batch processing, and assistants."
    },
    "endpoint": {
      "value": "/files"
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the file." } },
      { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'file'." } },
      { "name": "bytes", "type": "Integer", "selector": ["bytes"], "meta": { "description": "File size in bytes." } },
      { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of when the file was uploaded." } },
      { "name": "filename", "type": "String", "selector": ["filename"], "meta": { "description": "Name of the file." } },
      { "name": "purpose", "type": "String", "selector": ["purpose"], "meta": { "description": "Intended purpose of the file (e.g., fine-tune, assistants, batch)." } }
    ],
    "operations": {
      "list": { "method": "GET", "path": { "value": "" }, "queryParams": { "purpose": { "value": "{{purpose}}", "placeholders": [{ "name": "purpose", "type": "String", "description": "Filter by purpose.", "required": false }] } } },
      "read": { "method": "GET", "path": { "value": "/{{file_id}}", "placeholders": [{ "name": "file_id", "type": "String", "description": "ID of the file.", "required": true }] } },
      "delete": { "method": "DELETE", "path": { "value": "/{{file_id}}", "placeholders": [{ "name": "file_id", "type": "String", "description": "ID of the file to delete.", "required": true }] } }
    },
    "webhooks": [
      {
        "event": "file.created", "path": "/webhooks/chatgpt/file-created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "File identifier." } },
          { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'file'." } },
          { "name": "filename", "type": "String", "selector": ["filename"], "meta": { "description": "Name of the file." } },
          { "name": "purpose", "type": "String", "selector": ["purpose"], "meta": { "description": "Intended purpose of the file." } },
          { "name": "bytes", "type": "Integer", "selector": ["bytes"], "meta": { "description": "File size in bytes." } }
        ]
      },
      {
        "event": "file.deleted", "path": "/webhooks/chatgpt/file-deleted",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "File identifier." } },
          { "name": "deleted", "type": "Boolean", "selector": ["deleted"], "meta": { "description": "Whether the file was successfully deleted." } }
        ]
      }
    ]
  },
  {
    "handle": "fine_tuning_jobs",
    "meta": {
      "short": "Fine-Tuning Jobs",
      "description": "Create and manage fine-tuning jobs to customize OpenAI models on your data."
    },
    "endpoint": {
      "value": "/fine_tuning/jobs"
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the fine-tuning job." } },
      { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "Base model being fine-tuned." } },
      { "name": "fine_tuned_model", "type": "String", "selector": ["fine_tuned_model"], "meta": { "description": "Name of the resulting fine-tuned model." } },
      { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Job status (e.g., validating_files, queued, running, succeeded, failed, cancelled)." } },
      { "name": "training_file", "type": "String", "selector": ["training_file"], "meta": { "description": "ID of the training file." } },
      { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of when the job was created." } },
      { "name": "finished_at", "type": "Integer", "selector": ["finished_at"], "meta": { "description": "Unix timestamp of when the job finished." } },
      { "name": "trained_tokens", "type": "Integer", "selector": ["trained_tokens"], "meta": { "description": "Total number of tokens trained." } }
    ],
    "operations": {
      "list": { "method": "GET", "path": { "value": "" }, "queryParams": { "limit": { "value": "20" } } },
      "read": { "method": "GET", "path": { "value": "/{{fine_tuning_job_id}}", "placeholders": [{ "name": "fine_tuning_job_id", "type": "String", "description": "ID of the fine-tuning job.", "required": true }] } },
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"model\": \"{{model}}\", \"training_file\": \"{{training_file}}\"}",
          "placeholders": [
            { "name": "model", "type": "String", "description": "Base model to fine-tune (e.g., gpt-4o-mini).", "required": true },
            { "name": "training_file", "type": "String", "description": "ID of the uploaded training file.", "required": true }
          ]
        }
      },
      "delete": { "method": "DELETE", "path": { "value": "/{{fine_tuning_job_id}}", "placeholders": [{ "name": "fine_tuning_job_id", "type": "String", "description": "ID of the fine-tuning job.", "required": true }] } }
    },
    "webhooks": [
      {
        "event": "fine_tuning.job.created", "path": "/webhooks/chatgpt/fine-tuning-job-created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Job identifier." } },
          { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "Base model being fine-tuned." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Job status." } },
          { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of creation." } },
          { "name": "training_file", "type": "String", "selector": ["training_file"], "meta": { "description": "ID of the training file used." } }
        ]
      },
      {
        "event": "fine_tuning.job.succeeded", "path": "/webhooks/chatgpt/fine-tuning-job-succeeded",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Job identifier." } },
          { "name": "fine_tuned_model", "type": "String", "selector": ["fine_tuned_model"], "meta": { "description": "Resulting model name." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Job status, always 'succeeded'." } },
          { "name": "trained_tokens", "type": "Integer", "selector": ["trained_tokens"], "meta": { "description": "Total number of tokens trained." } },
          { "name": "finished_at", "type": "Integer", "selector": ["finished_at"], "meta": { "description": "Unix timestamp of completion." } }
        ]
      },
      {
        "event": "fine_tuning.job.failed", "path": "/webhooks/chatgpt/fine-tuning-job-failed",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Job identifier." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Job status, always 'failed'." } },
          { "name": "error", "type": "Object", "selector": ["error"], "meta": { "description": "Error details explaining the failure." } }
        ]
      },
      {
        "event": "fine_tuning.job.cancelled", "path": "/webhooks/chatgpt/fine-tuning-job-cancelled",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Job identifier." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Job status, always 'cancelled'." } }
        ]
      }
    ]
  },
  {
    "handle": "batches",
    "meta": {
      "short": "Batches",
      "description": "Submit large sets of API requests for asynchronous processing at lower cost."
    },
    "endpoint": {
      "value": "/batches"
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the batch." } },
      { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'batch'." } },
      { "name": "endpoint", "type": "String", "selector": ["endpoint"], "meta": { "description": "API endpoint the batch targets." } },
      { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Batch status (e.g., validating, in_progress, completed, failed, cancelled)." } },
      { "name": "input_file_id", "type": "String", "selector": ["input_file_id"], "meta": { "description": "ID of the uploaded input file." } },
      { "name": "output_file_id", "type": "String", "selector": ["output_file_id"], "meta": { "description": "ID of the output file with results." } },
      { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of when the batch was created." } },
      { "name": "completed_at", "type": "Integer", "selector": ["completed_at"], "meta": { "description": "Unix timestamp of when the batch completed." } },
      { "name": "request_counts_total", "type": "Integer", "selector": ["request_counts", "total"], "meta": { "description": "Total number of requests in the batch." } },
      { "name": "request_counts_completed", "type": "Integer", "selector": ["request_counts", "completed"], "meta": { "description": "Number of completed requests." } },
      { "name": "request_counts_failed", "type": "Integer", "selector": ["request_counts", "failed"], "meta": { "description": "Number of failed requests." } }
    ],
    "operations": {
      "list": { "method": "GET", "path": { "value": "" }, "queryParams": { "limit": { "value": "20" } } },
      "read": { "method": "GET", "path": { "value": "/{{batch_id}}", "placeholders": [{ "name": "batch_id", "type": "String", "description": "ID of the batch.", "required": true }] } },
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"input_file_id\": \"{{input_file_id}}\", \"endpoint\": \"{{endpoint}}\", \"completion_window\": \"{{completion_window}}\"}",
          "placeholders": [
            { "name": "input_file_id", "type": "String", "description": "ID of the uploaded JSONL input file.", "required": true },
            { "name": "endpoint", "type": "String", "description": "API endpoint for the batch (e.g., /v1/chat/completions).", "required": true },
            { "name": "completion_window", "type": "String", "description": "Time window to complete the batch (e.g., 24h).", "required": true }
          ]
        }
      },
      "delete": { "method": "DELETE", "path": { "value": "/{{batch_id}}/cancel", "placeholders": [{ "name": "batch_id", "type": "String", "description": "ID of the batch to cancel.", "required": true }] } }
    },
    "webhooks": [
      {
        "event": "batch.created", "path": "/webhooks/chatgpt/batch-created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Batch identifier." } },
          { "name": "endpoint", "type": "String", "selector": ["endpoint"], "meta": { "description": "API endpoint the batch targets." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Batch status." } },
          { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of creation." } }
        ]
      },
      {
        "event": "batch.completed", "path": "/webhooks/chatgpt/batch-completed",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Batch identifier." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Batch status, always 'completed'." } },
          { "name": "output_file_id", "type": "String", "selector": ["output_file_id"], "meta": { "description": "Results file ID." } },
          { "name": "request_counts_total", "type": "Integer", "selector": ["request_counts", "total"], "meta": { "description": "Total number of requests in the batch." } },
          { "name": "request_counts_completed", "type": "Integer", "selector": ["request_counts", "completed"], "meta": { "description": "Number of completed requests." } },
          { "name": "completed_at", "type": "Integer", "selector": ["completed_at"], "meta": { "description": "Unix timestamp of completion." } }
        ]
      },
      {
        "event": "batch.failed", "path": "/webhooks/chatgpt/batch-failed",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Batch identifier." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Batch status, always 'failed'." } },
          { "name": "errors", "type": "Object", "selector": ["errors"], "meta": { "description": "Error details for the batch." } }
        ]
      },
      {
        "event": "batch.cancelled", "path": "/webhooks/chatgpt/batch-cancelled",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Batch identifier." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Batch status, always 'cancelled'." } }
        ]
      },
      {
        "event": "batch.expired", "path": "/webhooks/chatgpt/batch-expired",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Batch identifier." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Batch status, always 'expired'." } }
        ]
      }
    ]
  },
  {
    "handle": "assistants",
    "meta": {
      "short": "Assistants",
      "description": "Create and manage AI assistants with custom instructions, tools, and knowledge."
    },
    "endpoint": {
      "value": "/assistants"
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the assistant." } },
      { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'assistant'." } },
      { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "Name of the assistant." } },
      { "name": "description", "type": "String", "selector": ["description"], "meta": { "description": "Description of the assistant." } },
      { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "Model used by the assistant." } },
      { "name": "instructions", "type": "String", "selector": ["instructions"], "meta": { "description": "System instructions for the assistant." } },
      { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of when the assistant was created." } }
    ],
    "operations": {
      "list": { "method": "GET", "path": { "value": "" }, "queryParams": { "limit": { "value": "20" }, "order": { "value": "desc" } } },
      "read": { "method": "GET", "path": { "value": "/{{assistant_id}}", "placeholders": [{ "name": "assistant_id", "type": "String", "description": "ID of the assistant.", "required": true }] } },
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"model\": \"{{model}}\", \"name\": \"{{name}}\", \"instructions\": \"{{instructions}}\"}",
          "placeholders": [
            { "name": "model", "type": "String", "description": "Model to use (e.g., gpt-4o).", "required": true },
            { "name": "name", "type": "String", "description": "Name of the assistant.", "required": false },
            { "name": "instructions", "type": "String", "description": "System instructions for the assistant.", "required": false }
          ]
        }
      },
      "update": {
        "method": "POST",
        "path": { "value": "/{{assistant_id}}", "placeholders": [{ "name": "assistant_id", "type": "String", "description": "ID of the assistant.", "required": true }] },
        "bodyTemplate": {
          "value": "{\"name\": \"{{name}}\", \"instructions\": \"{{instructions}}\"}",
          "placeholders": [
            { "name": "name", "type": "String", "description": "Updated name.", "required": false },
            { "name": "instructions", "type": "String", "description": "Updated instructions.", "required": false }
          ]
        }
      },
      "delete": { "method": "DELETE", "path": { "value": "/{{assistant_id}}", "placeholders": [{ "name": "assistant_id", "type": "String", "description": "ID of the assistant to delete.", "required": true }] } }
    },
    "webhooks": [
      {
        "event": "assistant.created", "path": "/webhooks/chatgpt/assistant-created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Assistant identifier." } },
          { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'assistant'." } },
          { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "Assistant name." } },
          { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "Model used by the assistant." } },
          { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of creation." } }
        ]
      },
      {
        "event": "assistant.updated", "path": "/webhooks/chatgpt/assistant-updated",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Assistant identifier." } },
          { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "Updated assistant name." } },
          { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "Model used." } }
        ]
      },
      {
        "event": "assistant.deleted", "path": "/webhooks/chatgpt/assistant-deleted",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Assistant identifier." } },
          { "name": "deleted", "type": "Boolean", "selector": ["deleted"], "meta": { "description": "Whether the assistant was successfully deleted." } }
        ]
      }
    ]
  },
  {
    "handle": "threads",
    "meta": {
      "short": "Threads",
      "description": "Create and manage conversation threads for use with Assistants."
    },
    "endpoint": {
      "value": "/threads"
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the thread." } },
      { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'thread'." } },
      { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of when the thread was created." } }
    ],
    "operations": {
      "read": { "method": "GET", "path": { "value": "/{{thread_id}}", "placeholders": [{ "name": "thread_id", "type": "String", "description": "ID of the thread.", "required": true }] } },
      "create": { "method": "POST", "path": { "value": "" }, "bodyTemplate": { "value": "{}", "placeholders": [] } },
      "delete": { "method": "DELETE", "path": { "value": "/{{thread_id}}", "placeholders": [{ "name": "thread_id", "type": "String", "description": "ID of the thread to delete.", "required": true }] } }
    },
    "webhooks": [
      {
        "event": "thread.created", "path": "/webhooks/chatgpt/thread-created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Thread identifier." } },
          { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'thread'." } },
          { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of creation." } }
        ]
      },
      {
        "event": "thread.deleted", "path": "/webhooks/chatgpt/thread-deleted",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Thread identifier." } },
          { "name": "deleted", "type": "Boolean", "selector": ["deleted"], "meta": { "description": "Whether the thread was successfully deleted." } }
        ]
      }
    ]
  },
  {
    "handle": "thread_messages",
    "meta": {
      "short": "Thread Messages",
      "description": "Add and retrieve messages within an Assistant thread."
    },
    "endpoint": {
      "value": "/threads/{{thread_id}}/messages",
      "placeholders": [{ "name": "thread_id", "type": "String", "description": "ID of the thread.", "required": true }]
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the message." } },
      { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'thread.message'." } },
      { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of when the message was created." } },
      { "name": "role", "type": "String", "selector": ["role"], "meta": { "description": "Role of the message author (user or assistant)." } },
      { "name": "content", "type": "String", "selector": ["content", "0", "text", "value"], "meta": { "description": "Text content of the message." } },
      { "name": "assistant_id", "type": "String", "selector": ["assistant_id"], "meta": { "description": "ID of the assistant that created the message (if applicable)." } },
      { "name": "run_id", "type": "String", "selector": ["run_id"], "meta": { "description": "ID of the run that created the message (if applicable)." } }
    ],
    "operations": {
      "list": { "method": "GET", "path": { "value": "" }, "queryParams": { "limit": { "value": "20" }, "order": { "value": "desc" } } },
      "read": { "method": "GET", "path": { "value": "/{{message_id}}", "placeholders": [{ "name": "message_id", "type": "String", "description": "ID of the message.", "required": true }] } },
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"role\": \"{{role}}\", \"content\": \"{{content}}\"}",
          "placeholders": [
            { "name": "role", "type": "String", "description": "Role of the message author.", "required": true, "options": ["user", "assistant"] },
            { "name": "content", "type": "String", "description": "Content of the message.", "required": true }
          ]
        }
      },
      "delete": { "method": "DELETE", "path": { "value": "/{{message_id}}", "placeholders": [{ "name": "message_id", "type": "String", "description": "ID of the message to delete.", "required": true }] } }
    },
    "webhooks": [
      {
        "event": "thread.message.created", "path": "/webhooks/chatgpt/thread-message-created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Message identifier." } },
          { "name": "thread_id", "type": "String", "selector": ["thread_id"], "meta": { "description": "ID of the thread." } },
          { "name": "role", "type": "String", "selector": ["role"], "meta": { "description": "Author role (user or assistant)." } },
          { "name": "content", "type": "String", "selector": ["content", "0", "text", "value"], "meta": { "description": "Message content." } },
          { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of creation." } }
        ]
      },
      {
        "event": "thread.message.completed", "path": "/webhooks/chatgpt/thread-message-completed",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Message identifier." } },
          { "name": "thread_id", "type": "String", "selector": ["thread_id"], "meta": { "description": "ID of the thread." } },
          { "name": "content", "type": "String", "selector": ["content", "0", "text", "value"], "meta": { "description": "Final message content." } }
        ]
      },
      {
        "event": "thread.message.deleted", "path": "/webhooks/chatgpt/thread-message-deleted",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Message identifier." } },
          { "name": "deleted", "type": "Boolean", "selector": ["deleted"], "meta": { "description": "Whether deletion was successful." } }
        ]
      }
    ]
  },
  {
    "handle": "runs",
    "meta": {
      "short": "Runs",
      "description": "Execute an assistant on a thread to produce responses and tool calls."
    },
    "endpoint": {
      "value": "/threads/{{thread_id}}/runs",
      "placeholders": [{ "name": "thread_id", "type": "String", "description": "ID of the thread.", "required": true }]
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the run." } },
      { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'thread.run'." } },
      { "name": "assistant_id", "type": "String", "selector": ["assistant_id"], "meta": { "description": "ID of the assistant used for the run." } },
      { "name": "thread_id", "type": "String", "selector": ["thread_id"], "meta": { "description": "ID of the thread." } },
      { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Run status (e.g., queued, in_progress, completed, failed, cancelled, requires_action)." } },
      { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "Model used for the run." } },
      { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of when the run was created." } },
      { "name": "completed_at", "type": "Integer", "selector": ["completed_at"], "meta": { "description": "Unix timestamp of when the run completed." } }
    ],
    "operations": {
      "list": { "method": "GET", "path": { "value": "" }, "queryParams": { "limit": { "value": "20" }, "order": { "value": "desc" } } },
      "read": { "method": "GET", "path": { "value": "/{{run_id}}", "placeholders": [{ "name": "run_id", "type": "String", "description": "ID of the run.", "required": true }] } },
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"assistant_id\": \"{{assistant_id}}\"}",
          "placeholders": [
            { "name": "assistant_id", "type": "String", "description": "ID of the assistant to run.", "required": true }
          ]
        }
      },
      "delete": { "method": "POST", "path": { "value": "/{{run_id}}/cancel", "placeholders": [{ "name": "run_id", "type": "String", "description": "ID of the run to cancel.", "required": true }] } }
    },
    "webhooks": [
      {
        "event": "thread.run.created", "path": "/webhooks/chatgpt/thread-run-created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Run identifier." } },
          { "name": "thread_id", "type": "String", "selector": ["thread_id"], "meta": { "description": "ID of the thread." } },
          { "name": "assistant_id", "type": "String", "selector": ["assistant_id"], "meta": { "description": "ID of the assistant used." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Run status." } },
          { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of creation." } }
        ]
      },
      {
        "event": "thread.run.completed", "path": "/webhooks/chatgpt/thread-run-completed",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Run identifier." } },
          { "name": "thread_id", "type": "String", "selector": ["thread_id"], "meta": { "description": "ID of the thread." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Run status, always 'completed'." } },
          { "name": "usage", "type": "Object", "selector": ["usage"], "meta": { "description": "Token usage for the run." } },
          { "name": "completed_at", "type": "Integer", "selector": ["completed_at"], "meta": { "description": "Unix timestamp of completion." } }
        ]
      },
      {
        "event": "thread.run.failed", "path": "/webhooks/chatgpt/thread-run-failed",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Run identifier." } },
          { "name": "thread_id", "type": "String", "selector": ["thread_id"], "meta": { "description": "ID of the thread." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Run status, always 'failed'." } },
          { "name": "last_error", "type": "Object", "selector": ["last_error"], "meta": { "description": "Error details." } }
        ]
      },
      {
        "event": "thread.run.requires_action", "path": "/webhooks/chatgpt/thread-run-requires-action",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Run identifier." } },
          { "name": "thread_id", "type": "String", "selector": ["thread_id"], "meta": { "description": "ID of the thread." } },
          { "name": "required_action", "type": "Object", "selector": ["required_action"], "meta": { "description": "Action details required from the user." } }
        ]
      },
      {
        "event": "thread.run.cancelled", "path": "/webhooks/chatgpt/thread-run-cancelled",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Run identifier." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Run status, always 'cancelled'." } }
        ]
      },
      {
        "event": "thread.run.expired", "path": "/webhooks/chatgpt/thread-run-expired",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Run identifier." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Run status, always 'expired'." } }
        ]
      }
    ]
  },
  {
    "handle": "vector_stores",
    "meta": {
      "short": "Vector Stores",
      "description": "Create and manage vector stores for file search with Assistants."
    },
    "endpoint": {
      "value": "/vector_stores"
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the vector store." } },
      { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'vector_store'." } },
      { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "Name of the vector store." } },
      { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Status (e.g., expired, in_progress, completed)." } },
      { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of when the vector store was created." } },
      { "name": "file_counts_total", "type": "Integer", "selector": ["file_counts", "total"], "meta": { "description": "Total number of files in the store." } },
      { "name": "usage_bytes", "type": "Integer", "selector": ["usage_bytes"], "meta": { "description": "Storage used in bytes." } }
    ],
    "operations": {
      "list": { "method": "GET", "path": { "value": "" }, "queryParams": { "limit": { "value": "20" }, "order": { "value": "desc" } } },
      "read": { "method": "GET", "path": { "value": "/{{vector_store_id}}", "placeholders": [{ "name": "vector_store_id", "type": "String", "description": "ID of the vector store.", "required": true }] } },
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"name\": \"{{name}}\"}",
          "placeholders": [
            { "name": "name", "type": "String", "description": "Name of the vector store.", "required": false }
          ]
        }
      },
      "update": {
        "method": "POST",
        "path": { "value": "/{{vector_store_id}}", "placeholders": [{ "name": "vector_store_id", "type": "String", "description": "ID of the vector store.", "required": true }] },
        "bodyTemplate": {
          "value": "{\"name\": \"{{name}}\"}",
          "placeholders": [{ "name": "name", "type": "String", "description": "New name for the vector store.", "required": false }]
        }
      },
      "delete": { "method": "DELETE", "path": { "value": "/{{vector_store_id}}", "placeholders": [{ "name": "vector_store_id", "type": "String", "description": "ID of the vector store to delete.", "required": true }] } }
    },
    "webhooks": [
      {
        "event": "vector_store.created", "path": "/webhooks/chatgpt/vector-store-created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Vector store identifier." } },
          { "name": "object", "type": "String", "selector": ["object"], "meta": { "description": "Object type, always 'vector_store'." } },
          { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "Vector store name." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Initial status." } },
          { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "Unix timestamp of creation." } }
        ]
      },
      {
        "event": "vector_store.completed", "path": "/webhooks/chatgpt/vector-store-completed",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Vector store identifier." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Status, always 'completed'." } },
          { "name": "file_counts_total", "type": "Integer", "selector": ["file_counts", "total"], "meta": { "description": "Total files included." } },
          { "name": "usage_bytes", "type": "Integer", "selector": ["usage_bytes"], "meta": { "description": "Storage used in bytes." } }
        ]
      },
      {
        "event": "vector_store.deleted", "path": "/webhooks/chatgpt/vector-store-deleted",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Vector store identifier." } },
          { "name": "deleted", "type": "Boolean", "selector": ["deleted"], "meta": { "description": "Whether the store was successfully deleted." } }
        ]
      }
    ]
  }
]

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Analyze Images

ChatGPT Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-333c6d9ccf0ebc377ba9f54e9c891752f6b7d19f%2FOpenAI_logo_2025_(symbol).svg.png?alt=media" alt="" width="188"><figcaption></figcaption></figure>

<p align="center">The Analyze Images action processes and analyzes images (e.g., for content, objects, or metadata).</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to analyze images using an external service so that I can extract features like objects, faces, and text from the images.

#### Fields

| Field Name     | Field Type | Required |
| -------------- | ---------- | -------- |
| imageUrl       | String     | Yes      |
| features       | String     | No       |
| analysisResult | String     | No       |

### Related Connections

[ChatGPT](/chatgpt/chatgpt)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "analyze-images",
  "state": "inDev",
  "meta": {
    "short": "Analyze Images",
    "description": "Analyze images using an external service."
  },
  "input": [
    {
      "name": "imageUrl",
      "type": "String",
      "required": true,
      "meta": {
        "description": "URL of the image to analyze."
      }
    },
    {
      "name": "features",
      "type": "String",
      "required": false,
      "meta": {
        "description": "Features to analyze in the image, e.g., objects, faces, text."
      }
    }
  ],
  "output": [
    {
      "name": "analysisResult",
      "type": "String",
      "selector": ["result"],
      "meta": {
        "description": "The analysis result from the external service."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v1/vision/analyze",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"imageUrl\": \"{{imageUrl}}\", \"features\": \"{{features}}\"}",
          "placeholders": [
            {
              "name": "imageUrl",
              "type": "String",
              "description": "URL of the image to analyze.",
              "required": true
            },
            {
              "name": "features",
              "type": "String",
              "description": "Features to analyze in the image.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Analyze Text

ChatGPT Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-333c6d9ccf0ebc377ba9f54e9c891752f6b7d19f%2FOpenAI_logo_2025_(symbol).svg.png?alt=media" alt="" width="188"><figcaption></figcaption></figure>

<p align="center">The Analyze Text action processes and analyzes text content (e.g., for sentiment, keywords, or structure).</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to analyze text using ChatGPT so that I can quickly extract insights or summarize content.

#### Fields

| Field Name   | Field Type | Required |
| ------------ | ---------- | -------- |
| text         | String     | Yes      |
| analysisType | String     | No       |

### Related Connections

[ChatGPT](/chatgpt/chatgpt)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "analyze-text",
  "state": "inDev",
  "meta": {
    "short": "Analyze Text",
    "description": "Analyze the given text using ChatGPT to extract insights, summarize content, or perform other text analysis tasks."
  },
  "input": [
    {
      "name": "text",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The text to be analyzed."
      }
    },
    {
      "name": "analysisType",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The type of analysis to perform (e.g., summarize, sentiment, entities).",
        "default": "summarize"
      }
    }
  ],
  "output": [
    {
      "name": "result",
      "type": "String",
      "selector": ["choices", "0", "message", "content"],
      "meta": {
        "description": "The analyzed result from ChatGPT."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v1/chat/completions",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"model\": \"gpt-3.5-turbo\", \"messages\": [{\"role\": \"user\", \"content\": \"Analyze the following text: {{text}}. Perform {{analysisType}} analysis.\"}]}",
          "placeholders": [
            {
              "name": "text",
              "type": "String",
              "description": "The text to be analyzed.",
              "required": true
            },
            {
              "name": "analysisType",
              "type": "String",
              "description": "The type of analysis to perform.",
              "required": false,
              "default": "summarize"
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create Embedding

ChatGPT Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-333c6d9ccf0ebc377ba9f54e9c891752f6b7d19f%2FOpenAI_logo_2025_(symbol).svg.png?alt=media" alt="" width="188"><figcaption></figcaption></figure>

<p align="center">The Create Embedding action generates a vector embedding (numerical representation) from input text.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to generate an embedding for a given input text so that I can use it for machine learning tasks.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| input      | String     | Yes      |

### Related Connections

[ChatGPT](/chatgpt/chatgpt)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-embedding",
  "state": "inDev",
  "meta": {
    "short": "Create Embedding",
    "description": "Generate an embedding for a given input text using the external service."
  },
  "input": [
    {
      "name": "input",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The input text to generate an embedding for."
      }
    }
  ],
  "output": [
    {
      "name": "embedding",
      "type": "Array",
      "selector": ["data", "embedding"],
      "meta": {
        "description": "The generated embedding for the input text."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v1/embeddings",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"input\": \"{{input}}\", \"model\": \"text-embedding-ada-002\"}",
          "placeholders": [
            {
              "name": "input",
              "type": "String",
              "description": "The input text to generate an embedding for.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create Transcription

ChatGPT Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-333c6d9ccf0ebc377ba9f54e9c891752f6b7d19f%2FOpenAI_logo_2025_(symbol).svg.png?alt=media" alt="" width="188"><figcaption></figcaption></figure>

<p align="center">The Create Transcription action converts audio or video files into written text.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to transcribe an audio file so that I can have a text version of the audio content.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| audioFile  | String     | Yes      |
| language   | String     | No       |

### Related Connections

[ChatGPT](/chatgpt/chatgpt)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-transcription",
  "state": "inDev",
  "meta": {
    "short": "Create Transcription",
    "description": "Creates a transcription from an audio file using the OpenAI Whisper API."
  },
  "input": [
    {
      "name": "audioFile",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The audio file to transcribe."
      }
    },
    {
      "name": "language",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The language of the audio file (optional)."
      }
    }
  ],
  "output": [
    {
      "name": "transcription",
      "type": "String",
      "selector": ["transcription"],
      "meta": {
        "description": "The transcribed text from the audio file."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v1/audio/transcriptions",
        "headers": {
          "Content-Type": "multipart/form-data"
        },
        "bodyTemplate": {
          "value": "--boundary\nContent-Disposition: form-data; name=\"file\"; filename=\"audio.mp3\"\nContent-Type: audio/mpeg\n\n{{audioFile}}\n--boundary\nContent-Disposition: form-data; name=\"language\"\n\n{{language}}\n--boundary--",
          "placeholders": [
            {
              "name": "audioFile",
              "type": "String",
              "description": "The audio file to transcribe.",
              "required": true
            },
            {
              "name": "language",
              "type": "String",
              "description": "The language of the audio file (optional).",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Claude AI

Claude AI Connection

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-71b76be12b9dc25603ba8c9d2721edf12a69bfeb%2FClaude.png?alt=media" alt=""><figcaption></figcaption></figure>

<h3 align="center">Put Claude AI to Work with @Human Automations and @Human Agents</h3>

<p align="center">The Claude AI Connection documents all Triggers, Actions and Query Operations available for creating automations via the Claude AI API.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### What can you do with the Asana Connection?

* Connect to the Claude AI API in a few clicks
* Use the related Claude AI Operations (see below) in @Human Automations or @Human Agents

### Related Operations

#### Trigger Operations

**Message Created**

Triggers on: messages/created

Triggered when a new message is successfully generated and created in Claude AI.

**Message Batch Ended**

Triggers on: message\_batches/ended

Triggered when an asynchronous message batch has finished processing.

**Message Batch Expired**

Triggers on: message\_batches/expired

Triggered when a message batch has reached its expiration time before completion.

**Model Created**

Triggers on: models/created

Triggered when a new AI model is added and becomes available in the system.

**File Created**

Triggers on: files/created

Triggered when a new file is successfully uploaded and processed.

**File Deleted**

Triggers on: files/deleted

Triggered when an existing file is removed from the system.

**Skill Created**

Triggers on: skills/created

Triggered when a new custom agent skill is successfully defined.

**Skill Deleted**

Triggers on: skills/deleted

Triggered when a custom agent skill is removed.

#### Action Operations

[Action: Send Message](/claude-ai/claude-ai/action-send-message)

[Action: Send Message Batch](/claude-ai/claude-ai/action-send-message-batch)

[Action: Estimate Token Usage](/claude-ai/claude-ai/action-estimate-token-usage)

[Action: Upload File](/claude-ai/claude-ai/action-upload-file)

[Action: Create Skill](/claude-ai/claude-ai/action-create-skill)

#### Query Operations

[Query: List Models](/claude-ai/claude-ai/query-list-models)

[Query: List Files](/claude-ai/claude-ai/query-list-files)

[Query: List Skills](/claude-ai/claude-ai/query-list-skills)

### Related Automations

Example link

### Obtaining Access Credentials

To obtain a **system-to-system Personal Access Token (PAT)** for **Anthropic**, follow these steps:

#### **Prerequisites**

* An **Anthropic account** (sign up at [Anthropic Console](https://console.anthropic.com/) if needed).
* **Admin or Developer access** to generate API keys.

#### **Steps to Generate a PAT**

1. **Log in** to the [Anthropic Console](https://console.anthropic.com/).
2. Navigate to **"API Keys"** (under **Manage**).
3. Click **"Create Key"**.
4. Provide a **name/description** (e.g., "System-to-System Access").
5. Click **"Add"**.
6. **Copy the generated key** (this is your PAT—store it securely).

### Configuring Webhooks

1. **Set up a webhook trigger** on your chosen automation platform to receive external data.
2. **Configure an action** that uses the Claude AI API (passing your PAT generated above).
3. **Implement a polling mechanism** if you need to monitor asynchronous operations, such as the **Message Batches API**.
4. **Check the status** of your batch requests periodically via the `GET /v1/messages/batches/{batch_id}` endpoint.
5. **Trigger downstream actions** once the `processing_status` returns as `ended`.

### Code (Apache v2.0): Service Connectivity and Metadata

```
{
  "handle": "claude-api",
  "status": "active",
  "meta": {
    "short": "Claude API",
    "description": "Connects to Anthropic's Claude API for natural language processing and AI-driven text generation.",
    "icon": "claude",
    "tags": ["AI", "NLP", "API", "Anthropic"]
  },
  "service": {
    "baseURL": {
      "value": "https://api.anthropic.com/v1"
    },
    "protocol": "https",
    "contentType": "application/json",
    "headers": {
      "anthropic-version": {
        "value": "2023-06-01"
      },
      "x-api-key": {
        "value": "{{apiKey}}"
      }
    },
    "auth": {
      "method": "api_token",
      "params": {
        "apiToken": {
          "token": {
            "value": "{{apiKey}}"
          },
          "headerName": {
            "value": "x-api-key"
          }
        }
      }
    }
  }
}

```

### Code (Apache v2.0): List of External Resources and Internal Mapping

````
Available resources: messages, message_batches, models, files, skills.

| Handle | Endpoint | Operations |
|---|---|---|
| `messages` | `/messages` | create |
| `message_batches` | `/messages/batches` | list, read, create, delete |
| `models` | `/models` | list, read |
| `files` | `/files` | list, read, delete |
| `skills` | `/skills` | list, read, delete |

```json
[
  {
    "handle": "messages",
    "meta": { "short": "Messages", "description": "Send messages to Claude and count tokens." },
    "endpoint": { "value": "/messages" },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the message." } },
      { "name": "content", "type": "String", "selector": ["content", 0, "text"], "meta": { "description": "Generated content text." } },
      { "name": "role", "type": "String", "selector": ["role"], "meta": { "description": "Role of the sender." } },
      { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "Model used." } },
      { "name": "stop_reason", "type": "String", "selector": ["stop_reason"], "meta": { "description": "Reason for stopping generation." } },
      { "name": "stop_sequence", "type": "String", "selector": ["stop_sequence"], "meta": { "description": "Sequence that caused generation to stop." } },
      { "name": "usage_input_tokens", "type": "Integer", "selector": ["usage", "input_tokens"], "meta": { "description": "Number of input tokens." } },
      { "name": "usage_output_tokens", "type": "Integer", "selector": ["usage", "output_tokens"], "meta": { "description": "Number of output tokens." } }
    ],
    "operations": {
      "create": {
        "method": "POST", "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"model\": \"{{model}}\", \"max_tokens\": {{max_tokens}}, \"messages\": [{\"role\": \"user\", \"content\": \"{{content}}\"}]}",
          "placeholders": [
            { "name": "model", "type": "String", "description": "Model to use.", "required": true },
            { "name": "max_tokens", "type": "Integer", "description": "Maximum tokens to generate.", "required": true },
            { "name": "content", "type": "String", "description": "User message content.", "required": true }
          ]
        }
      }
    },
    "webhooks": [
      {
        "event": "messages.created", "path": "/webhooks/claude-api/messages.created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the message." } },
          { "name": "content", "type": "String", "selector": ["content", 0, "text"], "meta": { "description": "Generated content text." } },
          { "name": "role", "type": "String", "selector": ["role"], "meta": { "description": "Role of the sender." } },
          { "name": "model", "type": "String", "selector": ["model"], "meta": { "description": "Model used." } },
          { "name": "usage_input_tokens", "type": "Integer", "selector": ["usage", "input_tokens"], "meta": { "description": "Number of input tokens." } },
          { "name": "usage_output_tokens", "type": "Integer", "selector": ["usage", "output_tokens"], "meta": { "description": "Number of output tokens." } }
        ]
      }
    ]
  },
  {
    "handle": "message_batches",
    "meta": { "short": "Message Batches", "description": "Process large volumes of Messages requests asynchronously with a cost reduction." },
    "endpoint": { "value": "/messages/batches" },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the batch." } },
      { "name": "processing_status", "type": "String", "selector": ["processing_status"], "meta": { "description": "Status of the batch processing." } },
      { "name": "ended_at", "type": "DateTime", "selector": ["ended_at"], "meta": { "description": "Timestamp when the batch ended." } },
      { "name": "created_at", "type": "DateTime", "selector": ["created_at"], "meta": { "description": "Timestamp when the batch was created." } },
      { "name": "expires_at", "type": "DateTime", "selector": ["expires_at"], "meta": { "description": "Timestamp when the batch expires." } },
      { "name": "results_url", "type": "String", "selector": ["results_url"], "meta": { "description": "URL to download the batch results." } }
    ],
    "operations": {
      "list": { "method": "GET", "path": { "value": "" } },
      "read": {
        "method": "GET", "path": { "value": "/{{batch_id}}", "placeholders": [{ "name": "batch_id", "type": "String", "description": "ID of the batch.", "required": true }] }
      },
      "create": {
        "method": "POST", "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"requests\": [{\"custom_id\": \"{{custom_id}}\", \"params\": {\"model\": \"{{model}}\", \"max_tokens\": {{max_tokens}}, \"messages\": [{\"role\": \"user\", \"content\": \"{{content}}\"}]}}]}",
          "placeholders": [
            { "name": "custom_id", "type": "String", "description": "Your internal ID for the request.", "required": true },
            { "name": "model", "type": "String", "description": "Model to use.", "required": true },
            { "name": "max_tokens", "type": "Integer", "description": "Maximum tokens to generate.", "required": true },
            { "name": "content", "type": "String", "description": "User message content.", "required": true }
          ]
        }
      },
      "delete": {
        "method": "POST", "path": { "value": "/{{batch_id}}/cancel", "placeholders": [{ "name": "batch_id", "type": "String", "description": "ID of the batch to cancel.", "required": true }] }
      }
    },
    "webhooks": [
      {
        "event": "message_batches.ended", "path": "/webhooks/claude-api/message_batches.ended",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the batch." } },
          { "name": "processing_status", "type": "String", "selector": ["processing_status"], "meta": { "description": "Status of the batch processing." } },
          { "name": "ended_at", "type": "DateTime", "selector": ["ended_at"], "meta": { "description": "Timestamp when the batch ended." } },
          { "name": "results_url", "type": "String", "selector": ["results_url"], "meta": { "description": "URL to download the batch results." } }
        ]
      },
      {
        "event": "message_batches.expired", "path": "/webhooks/claude-api/message_batches.expired",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the batch." } },
          { "name": "expires_at", "type": "DateTime", "selector": ["expires_at"], "meta": { "description": "Timestamp when the batch expires." } }
        ]
      }
    ]
  },
  {
    "handle": "models",
    "meta": { "short": "Models", "description": "List available Claude models and their details." },
    "endpoint": { "value": "/models" },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Model identifier." } },
      { "name": "display_name", "type": "String", "selector": ["display_name"], "meta": { "description": "Human-readable name of the model." } },
      { "name": "created_at", "type": "DateTime", "selector": ["created_at"], "meta": { "description": "When the model was created." } }
    ],
    "operations": {
      "list": { "method": "GET", "path": { "value": "" } },
      "read": {
        "method": "GET", "path": { "value": "/{{model_id}}", "placeholders": [{ "name": "model_id", "type": "String", "description": "Specific model identifier (e.g., claude-3-opus-20240229).", "required": true }] }
      }
    },
    "webhooks": [
      {
        "event": "models.created", "path": "/webhooks/claude-api/models.created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Model identifier." } },
          { "name": "display_name", "type": "String", "selector": ["display_name"], "meta": { "description": "Human-readable name of the model." } },
          { "name": "created_at", "type": "DateTime", "selector": ["created_at"], "meta": { "description": "When the model was created." } }
        ]
      }
    ]
  },
  {
    "handle": "files",
    "meta": { "short": "Files", "description": "Upload and manage files for use across multiple API calls." },
    "endpoint": { "value": "/files" },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the file." } },
      { "name": "file_name", "type": "String", "selector": ["file_name"], "meta": { "description": "Name of the file." } },
      { "name": "purpose", "type": "String", "selector": ["purpose"], "meta": { "description": "Purpose of the file." } },
      { "name": "bytes", "type": "Integer", "selector": ["bytes"], "meta": { "description": "Size of the file in bytes." } },
      { "name": "created_at", "type": "DateTime", "selector": ["created_at"], "meta": { "description": "Timestamp when the file was uploaded." } }
    ],
    "operations": {
      "list": { "method": "GET", "path": { "value": "" } },
      "read": {
        "method": "GET", "path": { "value": "/{{file_id}}", "placeholders": [{ "name": "file_id", "type": "String", "description": "ID of the file to retrieve.", "required": true }] }
      },
      "delete": {
        "method": "DELETE", "path": { "value": "/{{file_id}}", "placeholders": [{ "name": "file_id", "type": "String", "description": "ID of the file to delete.", "required": true }] }
      }
    },
    "webhooks": [
      {
        "event": "files.created", "path": "/webhooks/claude-api/files.created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the file." } },
          { "name": "file_name", "type": "String", "selector": ["file_name"], "meta": { "description": "Name of the file." } },
          { "name": "purpose", "type": "String", "selector": ["purpose"], "meta": { "description": "Purpose of the file." } },
          { "name": "created_at", "type": "DateTime", "selector": ["created_at"], "meta": { "description": "Timestamp when the file was uploaded." } }
        ]
      },
      {
        "event": "files.deleted", "path": "/webhooks/claude-api/files.deleted",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the file." } }
        ]
      }
    ]
  },
  {
    "handle": "skills",
    "meta": { "short": "Skills", "description": "Create and manage custom agent skills." },
    "endpoint": { "value": "/skills" },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the skill." } },
      { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "Name of the skill." } },
      { "name": "description", "type": "String", "selector": ["description"], "meta": { "description": "Description of the skill." } },
      { "name": "created_at", "type": "DateTime", "selector": ["created_at"], "meta": { "description": "Timestamp when the skill was created." } }
    ],
    "operations": {
      "list": { "method": "GET", "path": { "value": "" } },
      "read": {
        "method": "GET", "path": { "value": "/{{skill_id}}", "placeholders": [{ "name": "skill_id", "type": "String", "description": "ID of the skill to retrieve.", "required": true }] }
      },
      "delete": {
        "method": "DELETE", "path": { "value": "/{{skill_id}}", "placeholders": [{ "name": "skill_id", "type": "String", "description": "ID of the skill to delete.", "required": true }] }
      }
    },
    "webhooks": [
      {
        "event": "skills.created", "path": "/webhooks/claude-api/skills.created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the skill." } },
          { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "Name of the skill." } },
          { "name": "created_at", "type": "DateTime", "selector": ["created_at"], "meta": { "description": "Timestamp when the skill was created." } }
        ]
      },
      {
        "event": "skills.deleted", "path": "/webhooks/claude-api/skills.deleted",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Unique identifier for the skill." } }
        ]
      }
    ]
  }
]

````

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Send Message

Claude AI Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-71b76be12b9dc25603ba8c9d2721edf12a69bfeb%2FClaude.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">Send chat-style messages to Claude for conversational and task-oriented interactions</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

As a user, I want to send a message using the Claude API so that I can generate responses based on my prompts.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| model       | String     | Yes      |
| prompt      | String     | Yes      |
| max\_tokens | Integer    | No       |

### Related Connections

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "send-message",
  "state": "inDev",
  "meta": {
    "short": "Send Message",
    "description": "Send a message using the Claude API"
  },
  "input": [
    {
      "name": "model",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The model to use for generating the message"
      }
    },
    {
      "name": "prompt",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The prompt to send to the model"
      }
    },
    {
      "name": "max_tokens",
      "type": "Integer",
      "required": false,
      "meta": {
        "description": "The maximum number of tokens to generate"
      }
    }
  ],
  "output": [
    {
      "name": "response",
      "type": "String",
      "selector": ["completion"],
      "meta": {
        "description": "The generated message response"
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v1/message",
        "headers": {
          "Content-Type": "application/json",
          "x-api-key": "{{.apiKey}}"
        },
        "bodyTemplate": {
          "value": "{\"model\": \"{{.model}}\", \"prompt\": \"{{.prompt}}\", \"max_tokens\": {{.max_tokens}}}",
          "placeholders": [
            {
              "name": "model",
              "type": "String",
              "description": "The model to use for generating the message",
              "required": true
            },
            {
              "name": "prompt",
              "type": "String",
              "description": "The prompt to send to the model",
              "required": true
            },
            {
              "name": "max_tokens",
              "type": "Integer",
              "description": "The maximum number of tokens to generate",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Send Message Batch

Claude AI Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-71b76be12b9dc25603ba8c9d2721edf12a69bfeb%2FClaude.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">Send a batch of message to Claude AI</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

As a user, I want to send a batch of messages to the Claude API so that I can efficiently process multiple requests in a single operation.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| messages    | Array      | Yes      |
| model       | String     | No       |
| max\_tokens | Integer    | No       |
| responses   | Array      | -        |
| status      | String     | -        |

### Related Connections

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "post-messages-batches",
  "state": "inDev",
  "meta": {
    "short": "Post Messages Batches",
    "description": "Send a batch of messages via the Claude API"
  },
  "input": [
    {
      "name": "messages",
      "type": "Array",
      "required": true,
      "meta": {
        "description": "Array of message objects to send in the batch"
      }
    },
    {
      "name": "model",
      "type": "String",
      "required": false,
      "meta": {
        "description": "Model to use for generating responses",
        "default": "claude-3-opus-20240229"
      }
    },
    {
      "name": "max_tokens",
      "type": "Integer",
      "required": false,
      "meta": {
        "description": "Maximum number of tokens to generate",
        "default": "4096"
      }
    }
  ],
  "output": [
    {
      "name": "responses",
      "type": "Array",
      "selector": ["responses"],
      "meta": {
        "description": "Array of generated responses"
      }
    },
    {
      "name": "status",
      "type": "String",
      "selector": ["status"],
      "meta": {
        "description": "Status of the batch processing"
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v1/messages/batches",
        "headers": {
          "Content-Type": "application/json",
          "Accept": "application/json",
          "anthropic-version": "2023-06-01"
        },
        "bodyTemplate": {
          "value": "{\"messages\": {{.messages}}, \"model\": \"{{.model}}\", \"max_tokens\": {{.max_tokens}}}",
          "placeholders": [
            {
              "name": "messages",
              "type": "Array",
              "description": "Array of message objects",
              "required": true
            },
            {
              "name": "model",
              "type": "String",
              "description": "Model identifier",
              "required": false,
              "default": "claude-3-opus-20240229"
            },
            {
              "name": "max_tokens",
              "type": "Integer",
              "description": "Maximum tokens to generate",
              "required": false,
              "default": "4096"
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Estimate Token Usage

Claude AI Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-71b76be12b9dc25603ba8c9d2721edf12a69bfeb%2FClaude.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">Estimate token usage for a given prompt or conversation before actually calling the model, to manage cost and respect rate limits</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

As a user, I want to count the number of tokens in my text so that I can ensure it fits within the allowed limit for the Claude API.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| text       | String     | Yes      |

### Related Connections

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "count-tokens",
  "state": "inDev",
  "meta": {
    "short": "Count Tokens",
    "description": "Counts the number of tokens in a given text using the Claude API."
  },
  "input": [
    {
      "name": "text",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The text to count tokens for."
      }
    }
  ],
  "output": [
    {
      "name": "tokenCount",
      "type": "Integer",
      "selector": ["count"],
      "meta": {
        "description": "The number of tokens in the provided text."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v1/messages/count_tokens",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"text\": \"{{text}}\"}",
          "placeholders": [
            {
              "name": "text",
              "type": "String",
              "description": "The text to count tokens for.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Upload File

Claude AI Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-71b76be12b9dc25603ba8c9d2721edf12a69bfeb%2FClaude.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">Upload a file to the Claude API</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

As a developer, I want to upload a file to the Claude API so that I can use it for fine-tuning or other purposes.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| file       | File       | Yes      |
| purpose    | String     | No       |

### Related Connections

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "upload-file",
  "state": "inDev",
  "meta": {
    "short": "Upload File",
    "description": "Uploads a file to the Claude API."
  },
  "input": [
    {
      "name": "file",
      "type": "File",
      "required": true,
      "meta": {
        "description": "The file to upload."
      }
    },
    {
      "name": "purpose",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The intended purpose of the uploaded file.",
        "default": "fine-tune"
      }
    }
  ],
  "output": [
    {
      "name": "id",
      "type": "String",
      "selector": ["id"],
      "meta": {
        "description": "The unique identifier of the uploaded file."
      }
    },
    {
      "name": "status",
      "type": "String",
      "selector": ["status"],
      "meta": {
        "description": "The status of the uploaded file."
      }
    },
    {
      "name": "bytes",
      "type": "Integer",
      "selector": ["bytes"],
      "meta": {
        "description": "The size of the uploaded file in bytes."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v1/files",
        "headers": {
          "Content-Type": "multipart/form-data"
        },
        "bodyTemplate": {
          "value": "--boundary\\r\\nContent-Disposition: form-data; name=\"file\"; filename=\"{{file.name}}\"\\r\\nContent-Type: {{file.type}}\\r\\n\\r\\n{{file.content}}\\r\\n--boundary--\\r\\n--boundary\\r\\nContent-Disposition: form-data; name=\"purpose\"\\r\\n\\r\\n{{purpose}}\\r\\n--boundary--",
          "placeholders": [
            {
              "name": "file",
              "type": "File",
              "description": "The file to upload.",
              "required": true
            },
            {
              "name": "purpose",
              "type": "String",
              "description": "The intended purpose of the uploaded file.",
              "required": false,
              "default": "fine-tune"
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create Skill

Claude AI Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-71b76be12b9dc25603ba8c9d2721edf12a69bfeb%2FClaude.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">Creates a new skill in the Claude API</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

As a user, I want to create a new skill in the Claude API so that I can automate specific tasks.

#### Fields

| Field Name   | Field Type | Required |
| ------------ | ---------- | -------- |
| name         | String     | Yes      |
| description  | String     | No       |
| instructions | String     | Yes      |

### Related Connections

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-skill",
  "state": "inDev",
  "meta": {
    "short": "Create Skill",
    "description": "Creates a new skill in the Claude API."
  },
  "input": [
    {
      "name": "name",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The name of the skill."
      }
    },
    {
      "name": "description",
      "type": "String",
      "required": false,
      "meta": {
        "description": "A description of the skill."
      }
    },
    {
      "name": "instructions",
      "type": "String",
      "required": true,
      "meta": {
        "description": "Instructions for the skill."
      }
    }
  ],
  "output": [
    {
      "name": "skillId",
      "type": "String",
      "selector": ["id"],
      "meta": {
        "description": "The ID of the created skill."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v1/skills",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"name\": \"{{name}}\", \"description\": \"{{description}}\", \"instructions\": \"{{instructions}}\"}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The name of the skill.",
              "required": true
            },
            {
              "name": "description",
              "type": "String",
              "description": "A description of the skill.",
              "required": false
            },
            {
              "name": "instructions",
              "type": "String",
              "description": "Instructions for the skill.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: List Models

Claude AI Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-71b76be12b9dc25603ba8c9d2721edf12a69bfeb%2FClaude.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">Retrieves a list of Claude models available from the Claude API</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

As a developer, I want to retrieve a list of available models from the Claude API so that I can choose the appropriate model for my application.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| models     | Array      | No       |

### Related Connections

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "get-models",
  "state": "inDev",
  "meta": {
    "short": "Get Models",
    "description": "Retrieves a list of available models from the Claude API."
  },
  "input": [],
  "output": [
    {
      "name": "models",
      "type": "Array",
      "selector": ["data"],
      "meta": {}
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v1/models",
        "headers": {
          "Content-Type": "application/json",
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": ""
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: List Files

Claude AI Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-71b76be12b9dc25603ba8c9d2721edf12a69bfeb%2FClaude.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">Retrives a list of files from the external service</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

As a user, I want to retrieve a list of files from the external service so that I can view and manage them.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| limit      | Integer    | No       |
| offset     | Integer    | No       |

### Related Connections

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "get-files",
  "state": "inDev",
  "meta": {
    "short": "Get Files",
    "description": "Retrieves a list of files from the external service."
  },
  "input": [
    {
      "name": "limit",
      "type": "Integer",
      "required": false,
      "meta": {
        "description": "Maximum number of files to return."
      }
    },
    {
      "name": "offset",
      "type": "Integer",
      "required": false,
      "meta": {
        "description": "Offset for pagination."
      }
    }
  ],
  "output": [
    {
      "name": "files",
      "type": "Array",
      "selector": ["data"],
      "meta": {
        "description": "List of files retrieved from the service."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v1/files",
        "queryParams": {
          "limit": "{{limit}}",
          "offset": "{{offset}}"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: List Skills

Claude AI Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-71b76be12b9dc25603ba8c9d2721edf12a69bfeb%2FClaude.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">Retrieves a list of skills available from the Claude API</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

As a developer, I want to retrieve a list of available skills from the Claude API so that I can integrate them into my application.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| apiKey     | String     | Yes      |

### Related Connections

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
// Some code
{
  "handle": "get-skills",
  "state": "inDev",
  "meta": {
    "short": "Get Skills",
    "description": "Retrieves a list of available skills from the Claude API."
  },
  "input": [
    {
      "name": "apiKey",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The API key for authenticating with the Claude API."
      }
    }
  ],
  "output": [
    {
      "name": "skills",
      "type": "Array",
      "selector": ["skills"],
      "meta": {
        "description": "List of available skills."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v1/skills",
        "headers": {
          "Content-Type": "application/json"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Datadog

Datadog Connection

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-e4cc215637cfe13158b35a71277bf349ac1d0848%2FDatadog_logo.svg.png?alt=media" alt="" width="250"><figcaption></figcaption></figure>

<h3 align="center">Put Datadog to Work with @Human Automations and @Human Agents</h3>

<p align="center">The Datadog Connection documents all Triggers, Actions and Query Operations available for creating automations via the Datadog API.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### What can you do with the Datadog Connection?

* Connect to the Datadog API in a few clicks
* Use the related Datadog Operations (see below) in @Human Automations or @Human Agents

### Related Operations

#### Trigger Operations

**Metric Alert**

Triggers on: metrics/metric\_alert

Triggered when a metric alert is fired in Datadog.

**Event Created**

Triggers on: events/event\_created

Triggered when a new event is created in the Datadog event stream.

**Monitor Alert**

Triggers on: monitors/monitor\_alert

Triggered when a monitor enters an alert state.

**Monitor Recovery**

Triggers on: monitors/monitor\_recovery

Triggered when a monitor recovers from an alert or warning state.

**Dashboard Created**

Triggers on: dashboards/dashboard\_created

Triggered when a new dashboard is created in Datadog.

**Dashboard Updated**

Triggers on: dashboards/dashboard\_updated

Triggered when an existing dashboard is modified.

**Downtime Started**

Triggers on: downtimes/downtime\_started

Triggered when a scheduled downtime period begins.

**Downtime Ended**

Triggers on: downtimes/downtime\_ended

Triggered when a scheduled downtime period concludes.

**Host Status Changed**

Triggers on: hosts/host\_status\_changed

Triggered when the reporting status of a host changes.

**Service Check Alert**

Triggers on: service\_checks/service\_check\_alert

Triggered when a service check results in an alert status.

**Log Alert**

Triggers on: logs/log\_alert

Triggered when a log-based monitor alert is fired.

**Synthetic Test Result**

Triggers on: synthetics/synthetic\_test\_result

Triggered when a synthetic test provides a pass or fail result.

**SLO Alert**

Triggers on: slos/slo\_alert

Triggered when a Service Level Objective alert is triggered.

**User Created**

Triggers on: users/user\_created

Triggered when a new user is invited or created in the organization.

**Organization Updated**

Triggers on: organizations/organization\_updated

Triggered when the organization settings or metadata are updated.

Example link

#### Action Operations

[Action: New Metric Post](/datadog/datadog/action-new-metric-post)

[Action: API Request](/datadog/datadog/action-api-request)

#### Query Operations

Example link

### Related Automations

Example link

### Obtaining Access Credentials

To obtain a **System-to-System Personal Access Token (PAT)** for **Datadog**, follow these steps:

#### **Prerequisites**

* A **Datadog account** with **Admin** or **API Key management** permissions.
* Access to the **Datadog UI** ([app.datadoghq.com](https://app.datadoghq.com)).

#### **Steps to Generate a PAT**

1. **Log in** to the Datadog UI.
2. Navigate to: **Organization Settings** → **API Keys** (or directly visit: <https://app.datadoghq.com/organization-settings/api-keys>).
3. Under the **Personal Access Tokens** section, click **+ New Personal Access Token**.
4. Provide:
   * **Token Name** (descriptive, e.g., `system-to-system-integration`).
   * **Scopes** (select required permissions, e.g., `api_key_read`, `api_key_write`, `dashboards_read`, etc.).
5. Click **Create Token**.
6. **Copy the generated token immediately** (it will **not** be shown again).

**Done.** Use this token for system-to-system authentication.

### Configuring Webhooks

1. **Log in** to your Datadog account.
2. Navigate to **Integrations** → **Integrations** in the left-hand sidebar.
3. Search for **Webhooks** in the search bar and click on the **Webhooks** tile.
4. If the integration is not installed, click **Install**. If it is already installed, click **Configure**.
5. Scroll down to the **Webhooks** section and click **New Webhook**.
6. Provide a **Name** for the webhook (e.g., `human-webhook`).
7. Enter the **URL** provided by your integration (e.g., `https://your-endpoint.com/webhook`).
8. (Optional) Define a custom **Payload** or add **Custom Headers** if required.
9. Click **Save**.

### Code (Apache v2.0): Service Connectivity and Metadata

```
{
  "handle": "datadog",
  "status": "active",
  "meta": {
    "short": "Datadog",
    "description": "Connect to Datadog for monitoring, analytics, and event tracking.",
    "icon": "datadog",
    "tags": ["monitoring", "analytics", "events", "devops", "observability"]
  },
  "service": {
    "baseURL": {
      "value": "https://api.{{region}}.datadoghq.com",
      "placeholders": [
        {
          "name": "region",
          "type": "String",
          "description": "Datadog site region (e.g., datadoghq.com → us1, datadoghq.eu → eu1).",
          "required": true
        }
      ]
    },
    "protocol": "https",
    "contentType": "application/json",
    "headers": {
      "DD-API-KEY": {
        "value": "{{apiKey}}",
        "placeholders": [
          {
            "name": "apiKey",
            "type": "String",
            "description": "Datadog API key.",
            "required": true
          }
        ]
      },
      "DD-APPLICATION-KEY": {
        "value": "{{appKey}}",
        "placeholders": [
          {
            "name": "appKey",
            "type": "String",
            "description": "Datadog application key (required for read/write operations beyond metrics submission).",
            "required": false
          }
        ]
      }
    },
    "auth": {
      "method": "api_token",
      "params": {
        "apiToken": {
          "token": {
            "value": "{{apiKey}}"
          },
          "headerName": {
            "value": "DD-API-KEY"
          }
        }
      }
    }
  }
}

```

### Code (Apache v2.0): List of External Resources and Internal Mapping

```
[
  {
    "handle": "metrics",
    "meta": {
      "short": "Metrics",
      "description": "Submit and query time-series metric data points."
    },
    "endpoint": {
      "value": "/api/v2/metrics"
    },
    "fields": [
      { "name": "metric", "type": "String", "selector": ["metric"], "meta": { "description": "The metric name." } },
      { "name": "type", "type": "Integer", "selector": ["type"], "meta": { "description": "Metric type: 0=unspecified, 1=count, 2=rate, 3=gauge." } },
      { "name": "unit", "type": "String", "selector": ["unit"], "meta": { "description": "Human-readable unit of the metric." } },
      { "name": "description", "type": "String", "selector": ["description"], "meta": { "description": "Description of the metric." } },
      { "name": "integration", "type": "String", "selector": ["integration"], "meta": { "description": "Integration that generated the metric." } },
      { "name": "tags", "type": "String", "multivalue": true, "selector": ["tags"], "meta": { "description": "Tags associated with the metric." } }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": { "value": "" },
        "queryParams": {
          "filter[metric_type]": { "value": "{{metric_type}}", "placeholders": [{ "name": "metric_type", "type": "String", "description": "Filter by metric type (gauge, count, rate).", "required": false }] }
        }
      },
      "read": {
        "method": "GET",
        "path": { "value": "/{{metric_name}}", "placeholders": [{ "name": "metric_name", "type": "String", "description": "The metric name.", "required": true }] }
      },
      "create": {
        "method": "POST",
        "path": { "value": "/api/v1/series" },
        "bodyTemplate": {
          "value": "{\"series\":[{\"metric\":\"{{metric_name}}\",\"type\":\"{{type}}\",\"points\":[[{{timestamp}},{{value}}]],\"tags\":{{tags}]}]}",
          "placeholders": [
            { "name": "metric_name", "type": "String", "description": "Metric name.", "required": true },
            { "name": "type", "type": "String", "description": "Metric type: gauge, count, rate.", "required": false },
            { "name": "timestamp", "type": "Integer", "description": "POSIX timestamp in seconds.", "required": true },
            { "name": "value", "type": "Float", "description": "Metric value.", "required": true },
            { "name": "tags", "type": "String", "description": "JSON array of tag strings.", "required": false }
          ]
        }
      },
      "delete": {
        "method": "DELETE",
        "path": { "value": "/{{metric_name}}", "placeholders": [{ "name": "metric_name", "type": "String", "description": "The metric name to delete.", "required": true }] }
      }
    },
    "webhooks": [
      {
        "event": "metric_alert", "path": "/webhooks/datadog/metrics/alert",
        "payload": [
          { "name": "metric", "type": "String", "selector": ["metric"], "meta": { "description": "The metric name." } },
          { "name": "value", "type": "Float", "selector": ["value"], "meta": { "description": "The value of the metric at the time of the alert." } },
          { "name": "timestamp", "type": "Integer", "selector": ["timestamp"], "meta": { "description": "POSIX timestamp when the metric alert occurred." } },
          { "name": "tags", "type": "String", "multivalue": true, "selector": ["tags"], "meta": { "description": "Tags associated with the metric." } }
        ]
      }
    ]
  },
  {
    "handle": "events",
    "meta": {
      "short": "Events",
      "description": "Post and retrieve events in the event stream."
    },
    "endpoint": {
      "value": "/api/v1/events"
    },
    "fields": [
      { "name": "id", "type": "Integer", "selector": ["id"], "meta": { "description": "Unique event ID." } },
      { "name": "title", "type": "String", "selector": ["title"], "meta": { "description": "Title of the event." } },
      { "name": "text", "type": "String", "selector": ["text"], "meta": { "description": "Body/content of the event." } },
      { "name": "date_happened", "type": "Integer", "selector": ["date_happened"], "meta": { "description": "POSIX timestamp when the event occurred." } },
      { "name": "priority", "type": "String", "selector": ["priority"], "meta": { "description": "Event priority: normal or low." } },
      { "name": "alert_type", "type": "String", "selector": ["alert_type"], "meta": { "description": "Alert type: error, warning, info, or success." } },
      { "name": "host", "type": "String", "selector": ["host"], "meta": { "description": "Host name associated with the event." } },
      { "name": "tags", "type": "String", "multivalue": true, "selector": ["tags"], "meta": { "description": "Tags associated with the event." } },
      { "name": "url", "type": "String", "selector": ["url"], "meta": { "description": "URL of the event in the Datadog UI." } }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": { "value": "" },
        "queryParams": {
          "start": { "value": "{{start}}", "placeholders": [{ "name": "start", "type": "Integer", "description": "Start of the query window (POSIX timestamp).", "required": true }] },
          "end": { "value": "{{end}}", "placeholders": [{ "name": "end", "type": "Integer", "description": "End of the query window (POSIX timestamp).", "required": true }] },
          "priority": { "value": "{{priority}}", "placeholders": [{ "name": "priority", "type": "String", "description": "Filter by priority (normal or low).", "required": false }] }
        }
      },
      "read": {
        "method": "GET",
        "path": { "value": "/{{event_id}}", "placeholders": [{ "name": "event_id", "type": "Integer", "description": "The event ID.", "required": true }] }
      },
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"title\":\"{{title}}\",\"text\":\"{{text}}\",\"date_happened\":{{date_happened}},\"priority\":\"{{priority}}\",\"alert_type\":\"{{alert_type}}\",\"host\":\"{{host}}\",\"tags\":{{tags}}}",
          "placeholders": [
            { "name": "title", "type": "String", "description": "Event title.", "required": true },
            { "name": "text", "type": "String", "description": "Event body.", "required": true },
            { "name": "date_happened", "type": "Integer", "description": "POSIX timestamp of the event.", "required": false },
            { "name": "priority", "type": "String", "description": "Priority: normal or low.", "required": false, "options": ["normal", "low"] },
            { "name": "alert_type", "type": "String", "description": "Alert type: error, warning, info, success.", "required": false, "options": ["error", "warning", "info", "success"] },
            { "name": "host", "type": "String", "description": "Host name.", "required": false },
            { "name": "tags", "type": "String", "description": "JSON array of tag strings.", "required": false }
          ]
        }
      }
    },
    "webhooks": [
      {
        "event": "event_created", "path": "/webhooks/datadog/events/created",
        "payload": [
          { "name": "id", "type": "Integer", "selector": ["id"], "meta": { "description": "Unique event ID." } },
          { "name": "title", "type": "String", "selector": ["title"], "meta": { "description": "Title of the event." } },
          { "name": "text", "type": "String", "selector": ["text"], "meta": { "description": "Body/content of the event." } },
          { "name": "date_happened", "type": "Integer", "selector": ["date_happened"], "meta": { "description": "POSIX timestamp when the event occurred." } },
          { "name": "priority", "type": "String", "selector": ["priority"], "meta": { "description": "Event priority: normal or low." } },
          { "name": "alert_type", "type": "String", "selector": ["alert_type"], "meta": { "description": "Alert type: error, warning, info, or success." } },
          { "name": "host", "type": "String", "selector": ["host"], "meta": { "description": "Host name associated with the event." } },
          { "name": "tags", "type": "String", "multivalue": true, "selector": ["tags"], "meta": { "description": "Tags associated with the event." } },
          { "name": "url", "type": "String", "selector": ["url"], "meta": { "description": "URL of the event in the Datadog UI." } }
        ]
      }
    ]
  },
  {
    "handle": "monitors",
    "meta": {
      "short": "Monitors",
      "description": "Create and manage metric, log, and APM monitors with alerting."
    },
    "endpoint": {
      "value": "/api/v1/monitor"
    },
    "fields": [
      { "name": "id", "type": "Integer", "selector": ["id"], "meta": { "description": "Monitor ID." } },
      { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "Name of the monitor." } },
      { "name": "type", "type": "String", "selector": ["type"], "meta": { "description": "Monitor type (e.g., metric alert, service check, log alert)." } },
      { "name": "query", "type": "String", "selector": ["query"], "meta": { "description": "The monitor query." } },
      { "name": "message", "type": "String", "selector": ["message"], "meta": { "description": "Notification message for the monitor." } },
      { "name": "status", "type": "String", "selector": ["overall_state"], "meta": { "description": "Current monitor state: Alert, Warn, No Data, OK." } },
      { "name": "tags", "type": "String", "multivalue": true, "selector": ["tags"], "meta": { "description": "Tags applied to the monitor." } },
      { "name": "created", "type": "String", "selector": ["created"], "meta": { "description": "Timestamp when the monitor was created." } },
      { "name": "modified", "type": "String", "selector": ["modified"], "meta": { "description": "Timestamp when the monitor was last modified." } }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": { "value": "s" },
        "queryParams": {
          "tags": { "value": "{{tags}}", "placeholders": [{ "name": "tags", "type": "String", "description": "Filter by comma-separated tag list.", "required": false }] },
          "name": { "value": "{{name}}", "placeholders": [{ "name": "name", "type": "String", "description": "Filter monitors by name.", "required": false }] }
        }
      },
      "read": {
        "method": "GET",
        "path": { "value": "/{{monitor_id}}", "placeholders": [{ "name": "monitor_id", "type": "Integer", "description": "The monitor ID.", "required": true }] }
      },
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"name\":\"{{name}}\",\"type\":\"{{type}}\",\"query\":\"{{query}}\",\"message\":\"{{message}}\",\"tags\":{{tags}}}",
          "placeholders": [
            { "name": "name", "type": "String", "description": "Monitor name.", "required": true },
            { "name": "type", "type": "String", "description": "Monitor type (e.g., metric alert).", "required": true },
            { "name": "query", "type": "String", "description": "Alert query.", "required": true },
            { "name": "message", "type": "String", "description": "Notification message.", "required": false },
            { "name": "tags", "type": "String", "description": "JSON array of tag strings.", "required": false }
          ]
        }
      },
      "update": {
        "method": "PUT",
        "path": { "value": "/{{monitor_id}}", "placeholders": [{ "name": "monitor_id", "type": "Integer", "description": "The monitor ID.", "required": true }] },
        "bodyTemplate": {
          "value": "{\"name\":\"{{name}}\",\"query\":\"{{query}}\",\"message\":\"{{message}}\"}",
          "placeholders": [
            { "name": "name", "type": "String", "description": "Monitor name.", "required": false },
            { "name": "query", "type": "String", "description": "Alert query.", "required": false },
            { "name": "message", "type": "String", "description": "Notification message.", "required": false }
          ]
        }
      },
      "delete": {
        "method": "DELETE",
        "path": { "value": "/{{monitor_id}}", "placeholders": [{ "name": "monitor_id", "type": "Integer", "description": "The monitor ID.", "required": true }] }
      }
    },
    "webhooks": [
      {
        "event": "monitor_alert", "path": "/webhooks/datadog/monitors/alert",
        "payload": [
          { "name": "id", "type": "Integer", "selector": ["id"], "meta": { "description": "Monitor ID." } },
          { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "Name of the monitor." } },
          { "name": "status", "type": "String", "selector": ["overall_state"], "meta": { "description": "Current monitor state: Alert, Warn, No Data, OK." } },
          { "name": "alert_title", "type": "String", "selector": ["alert_title"], "meta": { "description": "Title of the alert." } },
          { "name": "alert_message", "type": "String", "selector": ["alert_message"], "meta": { "description": "Notification message." } },
          { "name": "link", "type": "String", "selector": ["link"], "meta": { "description": "Link to the monitor in Datadog." } },
          { "name": "tags", "type": "String", "multivalue": true, "selector": ["tags"], "meta": { "description": "Tags applied to the monitor." } }
        ]
      },
      {
        "event": "monitor_recovery", "path": "/webhooks/datadog/monitors/recovery",
        "payload": [
          { "name": "id", "type": "Integer", "selector": ["id"], "meta": { "description": "Monitor ID." } },
          { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "Name of the monitor." } },
          { "name": "status", "type": "String", "selector": ["overall_state"], "meta": { "description": "Monitor state transitioned to OK." } }
        ]
      }
    ]
  },
  {
    "handle": "dashboards",
    "meta": {
      "short": "Dashboards",
      "description": "Create, update, and retrieve visualization dashboards."
    },
    "endpoint": {
      "value": "/api/v1/dashboard"
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Dashboard ID." } },
      { "name": "title", "type": "String", "selector": ["title"], "meta": { "description": "Dashboard title." } },
      { "name": "description", "type": "String", "selector": ["description"], "meta": { "description": "Dashboard description." } },
      { "name": "layout_type", "type": "String", "selector": ["layout_type"], "meta": { "description": "Layout type: ordered or free." } },
      { "name": "url", "type": "String", "selector": ["url"], "meta": { "description": "Dashboard URL in the Datadog UI." } },
      { "name": "author_handle", "type": "String", "selector": ["author_handle"], "meta": { "description": "Handle of the dashboard author." } },
      { "name": "created_at", "type": "String", "selector": ["created_at"], "meta": { "description": "Timestamp when the dashboard was created." } },
      { "name": "modified_at", "type": "String", "selector": ["modified_at"], "meta": { "description": "Timestamp when the dashboard was last modified." } },
      { "name": "tags", "type": "String", "multivalue": true, "selector": ["tags"], "meta": { "description": "Tags applied to the dashboard." } }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": { "value": "s" }
      },
      "read": {
        "method": "GET",
        "path": { "value": "/{{dashboard_id}}", "placeholders": [{ "name": "dashboard_id", "type": "String", "description": "The dashboard ID.", "required": true }] }
      },
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"title\":\"{{title}}\",\"layout_type\":\"{{layout_type}}\",\"description\":\"{{description}}\",\"widgets\":{{widgets}}}",
          "placeholders": [
            { "name": "title", "type": "String", "description": "Dashboard title.", "required": true },
            { "name": "layout_type", "type": "String", "description": "Layout type: ordered or free.", "required": true, "options": ["ordered", "free"] },
            { "name": "description", "type": "String", "description": "Dashboard description.", "required": false },
            { "name": "widgets", "type": "String", "description": "JSON array of widget definitions.", "required": true }
          ]
        }
      },
      "update": {
        "method": "PUT",
        "path": { "value": "/{{dashboard_id}}", "placeholders": [{ "name": "dashboard_id", "type": "String", "description": "The dashboard ID.", "required": true }] },
        "bodyTemplate": {
          "value": "{\"title\":\"{{title}}\",\"layout_type\":\"{{layout_type}}\",\"description\":\"{{description}}\",\"widgets\":{{widgets}}}",
          "placeholders": [
            { "name": "title", "type": "String", "description": "Dashboard title.", "required": false },
            { "name": "layout_type", "type": "String", "description": "Layout type: ordered or free.", "required": false },
            { "name": "description", "type": "String", "description": "Dashboard description.", "required": false },
            { "name": "widgets", "type": "String", "description": "JSON array of widget definitions.", "required": false }
          ]
        }
      },
      "delete": {
        "method": "DELETE",
        "path": { "value": "/{{dashboard_id}}", "placeholders": [{ "name": "dashboard_id", "type": "String", "description": "The dashboard ID.", "required": true }] }
      }
    },
    "webhooks": [
      {
        "event": "dashboard_created", "path": "/webhooks/datadog/dashboards/created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Dashboard ID." } },
          { "name": "title", "type": "String", "selector": ["title"], "meta": { "description": "Dashboard title." } },
          { "name": "description", "type": "String", "selector": ["description"], "meta": { "description": "Dashboard description." } },
          { "name": "author_handle", "type": "String", "selector": ["author_handle"], "meta": { "description": "Handle of the dashboard author." } },
          { "name": "url", "type": "String", "selector": ["url"], "meta": { "description": "Dashboard URL in the Datadog UI." } }
        ]
      },
      {
        "event": "dashboard_updated", "path": "/webhooks/datadog/dashboards/updated",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Dashboard ID." } },
          { "name": "title", "type": "String", "selector": ["title"], "meta": { "description": "Dashboard title." } },
          { "name": "author_handle", "type": "String", "selector": ["author_handle"], "meta": { "description": "Handle of the user who modified the dashboard." } }
        ]
      }
    ]
  },
  {
    "handle": "downtimes",
    "meta": {
      "short": "Downtimes",
      "description": "Schedule downtimes to mute monitors and suppress alerts."
    },
    "endpoint": {
      "value": "/api/v1/downtime"
    },
    "fields": [
      { "name": "id", "type": "Integer", "selector": ["id"], "meta": { "description": "Downtime ID." } },
      { "name": "scope", "type": "String", "multivalue": true, "selector": ["scope"], "meta": { "description": "Scope of the downtime (e.g., host:myhost, env:prod)." } },
      { "name": "monitor_id", "type": "Integer", "selector": ["monitor_id"], "meta": { "description": "ID of the monitor to mute (null mutes all)." } },
      { "name": "start", "type": "Integer", "selector": ["start"], "meta": { "description": "POSIX timestamp for the start of the downtime." } },
      { "name": "end", "type": "Integer", "selector": ["end"], "meta": { "description": "POSIX timestamp for the end of the downtime (null = indefinite)." } },
      { "name": "message", "type": "String", "selector": ["message"], "meta": { "description": "Message associated with the downtime." } },
      { "name": "active", "type": "Boolean", "selector": ["active"], "meta": { "description": "Whether the downtime is currently active." } },
      { "name": "canceled", "type": "Integer", "selector": ["canceled"], "meta": { "description": "POSIX timestamp when the downtime was canceled." } }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": { "value": "s" },
        "queryParams": {
          "current_only": { "value": "{{current_only}}", "placeholders": [{ "name": "current_only", "type": "Boolean", "description": "Return only currently active downtimes.", "required": false }] }
        }
      },
      "read": {
        "method": "GET",
        "path": { "value": "/{{downtime_id}}", "placeholders": [{ "name": "downtime_id", "type": "Integer", "description": "The downtime ID.", "required": true }] }
      },
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"scope\":[\"{{scope}}\"],\"start\":{{start}},\"end\":{{end}},\"message\":\"{{message}}\",\"monitor_id\":{{monitor_id}}}",
          "placeholders": [
            { "name": "scope", "type": "String", "description": "Scope tag (e.g., host:web-01).", "required": true },
            { "name": "start", "type": "Integer", "description": "Start timestamp (POSIX).", "required": true },
            { "name": "end", "type": "Integer", "description": "End timestamp (POSIX). Omit for indefinite.", "required": false },
            { "name": "message", "type": "String", "description": "Reason for the downtime.", "required": false },
            { "name": "monitor_id", "type": "Integer", "description": "Monitor to mute (omit for all monitors).", "required": false }
          ]
        }
      },
      "update": {
        "method": "PUT",
        "path": { "value": "/{{downtime_id}}", "placeholders": [{ "name": "downtime_id", "type": "Integer", "description": "The downtime ID.", "required": true }] },
        "bodyTemplate": {
          "value": "{\"scope\":[\"{{scope}}\"],\"end\":{{end}},\"message\":\"{{message}}\"}",
          "placeholders": [
            { "name": "scope", "type": "String", "description": "Updated scope tag.", "required": false },
            { "name": "end", "type": "Integer", "description": "New end timestamp (POSIX).", "required": false },
            { "name": "message", "type": "String", "description": "Updated message.", "required": false }
          ]
        }
      },
      "delete": {
        "method": "DELETE",
        "path": { "value": "/{{downtime_id}}", "placeholders": [{ "name": "downtime_id", "type": "Integer", "description": "The downtime ID.", "required": true }] }
      }
    },
    "webhooks": [
      {
        "event": "downtime_started", "path": "/webhooks/datadog/downtimes/started",
        "payload": [
          { "name": "id", "type": "Integer", "selector": ["id"], "meta": { "description": "Downtime ID." } },
          { "name": "scope", "type": "String", "multivalue": true, "selector": ["scope"], "meta": { "description": "Scope of the downtime." } },
          { "name": "message", "type": "String", "selector": ["message"], "meta": { "description": "Downtime message." } }
        ]
      },
      {
        "event": "downtime_ended", "path": "/webhooks/datadog/downtimes/ended",
        "payload": [
          { "name": "id", "type": "Integer", "selector": ["id"], "meta": { "description": "Downtime ID." } }
        ]
      }
    ]
  },
  {
    "handle": "hosts",
    "meta": {
      "short": "Hosts",
      "description": "Search and manage infrastructure hosts reporting to Datadog."
    },
    "endpoint": {
      "value": "/api/v1/hosts"
    },
    "fields": [
      { "name": "id", "type": "Integer", "selector": ["id"], "meta": { "description": "Host ID." } },
      { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "Host name." } },
      { "name": "aliases", "type": "String", "multivalue": true, "selector": ["aliases"], "meta": { "description": "Aliases for the host." } },
      { "name": "apps", "type": "String", "multivalue": true, "selector": ["apps"], "meta": { "description": "Integrations/apps running on the host." } },
      { "name": "tags_by_source", "type": "String", "selector": ["tags_by_source"], "meta": { "description": "Tags grouped by source." } },
      { "name": "up", "type": "Boolean", "selector": ["up"], "meta": { "description": "Whether the host is up." } },
      { "name": "last_reported_time", "type": "Integer", "selector": ["last_reported_time"], "meta": { "description": "POSIX timestamp of the last metric report." } },
      { "name": "is_muted", "type": "Boolean", "selector": ["is_muted"], "meta": { "description": "Whether the host is muted." } }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": { "value": "" },
        "queryParams": {
          "filter": { "value": "{{filter}}", "placeholders": [{ "name": "filter", "type": "String", "description": "Filter by host name, tag, or alias substring.", "required": false }] },
          "count": { "value": "{{count}}", "placeholders": [{ "name": "count", "type": "Integer", "description": "Number of results per page.", "required": false }] },
          "start": { "value": "{{start}}", "placeholders": [{ "name": "start", "type": "Integer", "description": "Offset for pagination.", "required": false }] }
        }
      }
    },
    "webhooks": [
      {
        "event": "host_status_changed", "path": "/webhooks/datadog/hosts/status",
        "payload": [
          { "name": "id", "type": "Integer", "selector": ["id"], "meta": { "description": "Host ID." } },
          { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "Host name." } },
          { "name": "up", "type": "Boolean", "selector": ["up"], "meta": { "description": "Whether the host is up." } }
        ]
      }
    ]
  },
  {
    "handle": "service_checks",
    "meta": {
      "short": "Service Checks",
      "description": "Submit service check statuses for use in monitors."
    },
    "endpoint": {
      "value": "/api/v1/check_run"
    },
    "fields": [
      { "name": "check", "type": "String", "selector": ["check"], "meta": { "description": "Service check name." } },
      { "name": "host_name", "type": "String", "selector": ["host_name"], "meta": { "description": "Host name associated with the check." } },
      { "name": "status", "type": "Integer", "selector": ["status"], "meta": { "description": "Check status: 0=OK, 1=Warning, 2=Critical, 3=Unknown." } },
      { "name": "message", "type": "String", "selector": ["message"], "meta": { "description": "Optional message for the check." } },
      { "name": "tags", "type": "String", "multivalue": true, "selector": ["tags"], "meta": { "description": "Tags associated with the check." } },
      { "name": "timestamp", "type": "Integer", "selector": ["timestamp"], "meta": { "description": "POSIX timestamp of the check." } }
    ],
    "operations": {
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "[{\"check\":\"{{check}}\",\"host_name\":\"{{host_name}}\",\"status\":{{status}},\"message\":\"{{message}}\",\"tags\":{{tags}},\"timestamp\":{{timestamp}}}]",
          "placeholders": [
            { "name": "check", "type": "String", "description": "Service check name.", "required": true },
            { "name": "host_name", "type": "String", "description": "Host name.", "required": true },
            { "name": "status", "type": "Integer", "description": "Status: 0=OK, 1=Warning, 2=Critical, 3=Unknown.", "required": true },
            { "name": "message", "type": "String", "description": "Status message.", "required": false },
            { "name": "tags", "type": "String", "description": "JSON array of tag strings.", "required": false },
            { "name": "timestamp", "type": "Integer", "description": "POSIX timestamp.", "required": false }
          ]
        }
      }
    },
    "webhooks": [
      {
        "event": "service_check_alert", "path": "/webhooks/datadog/service_checks/alert",
        "payload": [
          { "name": "check", "type": "String", "selector": ["check"], "meta": { "description": "Service check name." } },
          { "name": "host_name", "type": "String", "selector": ["host_name"], "meta": { "description": "Host name." } },
          { "name": "status", "type": "Integer", "selector": ["status"], "meta": { "description": "Check status: 0=OK, 1=Warning, 2=Critical, 3=Unknown." } }
        ]
      }
    ]
  },
  {
    "handle": "logs",
    "meta": {
      "short": "Logs",
      "description": "Send and search log events."
    },
    "endpoint": {
      "value": "/api/v2/logs"
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Log entry ID." } },
      { "name": "message", "type": "String", "selector": ["attributes", "message"], "meta": { "description": "Log message." } },
      { "name": "service", "type": "String", "selector": ["attributes", "service"], "meta": { "description": "Service that generated the log." } },
      { "name": "status", "type": "String", "selector": ["attributes", "status"], "meta": { "description": "Log status/severity (e.g., info, warn, error)." } },
      { "name": "host", "type": "String", "selector": ["attributes", "host"], "meta": { "description": "Host associated with the log." } },
      { "name": "timestamp", "type": "String", "selector": ["attributes", "timestamp"], "meta": { "description": "Timestamp of the log entry." } },
      { "name": "tags", "type": "String", "multivalue": true, "selector": ["attributes", "tags"], "meta": { "description": "Tags on the log entry." } }
    ],
    "operations": {
      "list": {
        "method": "POST",
        "path": { "value": "/events/search" },
        "bodyTemplate": {
          "value": "{\"filter\":{\"query\":\"{{query}}\",\"from\":\"{{from}}\",\"to\":\"{{to}}\"},\"page\":{\"limit\":{{limit}}}}",
          "placeholders": [
            { "name": "query", "type": "String", "description": "Log search query.", "required": false },
            { "name": "from", "type": "String", "description": "Start time (ISO 8601 or relative).", "required": true },
            { "name": "to", "type": "String", "description": "End time (ISO 8601 or relative).", "required": true },
            { "name": "limit", "type": "Integer", "description": "Max results per page.", "required": false }
          ]
        }
      },
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "[{\"message\":\"{{message}}\",\"service\":\"{{service}}\",\"ddtags\":\"{{tags}}\",\"hostname\":\"{{host}}\"}]",
          "placeholders": [
            { "name": "message", "type": "String", "description": "Log message.", "required": true },
            { "name": "service", "type": "String", "description": "Service name.", "required": false },
            { "name": "tags", "type": "String", "description": "Comma-separated tags.", "required": false },
            { "name": "host", "type": "String", "description": "Host name.", "required": false }
          ]
        }
      }
    },
    "webhooks": [
      {
        "event": "log_alert", "path": "/webhooks/datadog/logs/alert",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "Log entry ID." } },
          { "name": "message", "type": "String", "selector": ["attributes", "message"], "meta": { "description": "Log message." } },
          { "name": "status", "type": "String", "selector": ["attributes", "status"], "meta": { "description": "Log status/severity." } }
        ]
      }
    ]
  },
  {
    "handle": "synthetics",
    "meta": {
      "short": "Synthetics",
      "description": "Manage synthetic API and browser tests."
    },
    "endpoint": {
      "value": "/api/v1/synthetics/tests"
    },
    "fields": [
      { "name": "public_id", "type": "String", "selector": ["public_id"], "meta": { "description": "Public ID of the synthetic test." } },
      { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "Test name." } },
      { "name": "type", "type": "String", "selector": ["type"], "meta": { "description": "Test type: api or browser." } },
      { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Test status: live or paused." } },
      { "name": "monitor_id", "type": "Integer", "selector": ["monitor_id"], "meta": { "description": "Associated monitor ID." } },
      { "name": "tags", "type": "String", "multivalue": true, "selector": ["tags"], "meta": { "description": "Tags applied to the test." } },
      { "name": "locations", "type": "String", "multivalue": true, "selector": ["locations"], "meta": { "description": "Test locations." } }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": { "value": "" }
      },
      "read": {
        "method": "GET",
        "path": { "value": "/{{public_id}}", "placeholders": [{ "name": "public_id", "type": "String", "description": "The test public ID.", "required": true }] }
      },
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"name\":\"{{name}}\",\"type\":\"{{type}}\",\"config\":{{config}},\"locations\":{{locations}},\"options\":{{options}}}",
          "placeholders": [
            { "name": "name", "type": "String", "description": "Test name.", "required": true },
            { "name": "type", "type": "String", "description": "Test type: api or browser.", "required": true, "options": ["api", "browser"] },
            { "name": "config", "type": "String", "description": "JSON object with test config (request, assertions).", "required": true },
            { "name": "locations", "type": "String", "description": "JSON array of location identifiers.", "required": true },
            { "name": "options", "type": "String", "description": "JSON object with test options (tick_every, min_failure_duration).", "required": false }
          ]
        }
      },
      "delete": {
        "method": "POST",
        "path": { "value": "/delete" },
        "bodyTemplate": {
          "value": "{\"public_ids\":[\"{{public_id}}\"]}",
          "placeholders": [{ "name": "public_id", "type": "String", "description": "Public ID of the test to delete.", "required": true }]
        }
      }
    },
    "webhooks": [
      {
        "event": "synthetic_test_result", "path": "/webhooks/datadog/synthetics/result",
        "payload": [
          { "name": "public_id", "type": "String", "selector": ["public_id"], "meta": { "description": "Public ID of the synthetic test." } },
          { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "Test name." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "Result status: passed or failed." } }
        ]
      }
    ]
  },
  {
    "handle": "slos",
    "meta": {
      "short": "SLOs",
      "description": "Create and manage Service Level Objectives (SLOs)."
    },
    "endpoint": {
      "value": "/api/v1/slo"
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "SLO ID." } },
      { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "SLO name." } },
      { "name": "type", "type": "String", "selector": ["type"], "meta": { "description": "SLO type: metric or monitor." } },
      { "name": "description", "type": "String", "selector": ["description"], "meta": { "description": "SLO description." } },
      { "name": "target", "type": "Float", "selector": ["thresholds", "0", "target"], "meta": { "description": "Target SLO percentage (e.g., 99.9)." } },
      { "name": "timeframe", "type": "String", "selector": ["thresholds", "0", "timeframe"], "meta": { "description": "SLO timeframe: 7d, 30d, or 90d." } },
      { "name": "tags", "type": "String", "multivalue": true, "selector": ["tags"], "meta": { "description": "Tags applied to the SLO." } },
      { "name": "created_at", "type": "Integer", "selector": ["created_at"], "meta": { "description": "POSIX timestamp when the SLO was created." } },
      { "name": "modified_at", "type": "Integer", "selector": ["modified_at"], "meta": { "description": "POSIX timestamp when the SLO was last modified." } }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": { "value": "s" },
        "queryParams": {
          "tags_query": { "value": "{{tags_query}}", "placeholders": [{ "name": "tags_query", "type": "String", "description": "Filter SLOs by tags.", "required": false }] }
        }
      },
      "read": {
        "method": "GET",
        "path": { "value": "/{{slo_id}}", "placeholders": [{ "name": "slo_id", "type": "String", "description": "The SLO ID.", "required": true }] }
      },
      "create": {
        "method": "POST",
        "path": { "value": "s" },
        "bodyTemplate": {
          "value": "{\"name\":\"{{name}}\",\"type\":\"{{type}}\",\"description\":\"{{description}}\",\"thresholds\":[{\"target\":{{target}},\"timeframe\":\"{{timeframe}}\"}],\"tags\":{{tags}}}",
          "placeholders": [
            { "name": "name", "type": "String", "description": "SLO name.", "required": true },
            { "name": "type", "type": "String", "description": "SLO type: metric or monitor.", "required": true, "options": ["metric", "monitor"] },
            { "name": "description", "type": "String", "description": "SLO description.", "required": false },
            { "name": "target", "type": "Float", "description": "Target percentage (e.g., 99.9).", "required": true },
            { "name": "timeframe", "type": "String", "description": "Timeframe: 7d, 30d, or 90d.", "required": true, "options": ["7d", "30d", "90d"] },
            { "name": "tags", "type": "String", "description": "JSON array of tag strings.", "required": false }
          ]
        }
      },
      "update": {
        "method": "PUT",
        "path": { "value": "/{{slo_id}}", "placeholders": [{ "name": "slo_id", "type": "String", "description": "The SLO ID.", "required": true }] },
        "bodyTemplate": {
          "value": "{\"name\":\"{{name}}\",\"description\":\"{{description}}\",\"thresholds\":[{\"target\":{{target}},\"timeframe\":\"{{timeframe}}\"}]}",
          "placeholders": [
            { "name": "name", "type": "String", "description": "SLO name.", "required": false },
            { "name": "description", "type": "String", "description": "SLO description.", "required": false },
            { "name": "target", "type": "Float", "description": "Target percentage.", "required": false },
            { "name": "timeframe", "type": "String", "description": "Timeframe: 7d, 30d, or 90d.", "required": false }
          ]
        }
      },
      "delete": {
        "method": "DELETE",
        "path": { "value": "/{{slo_id}}", "placeholders": [{ "name": "slo_id", "type": "String", "description": "The SLO ID.", "required": true }] }
      }
    },
    "webhooks": [
      {
        "event": "slo_alert", "path": "/webhooks/datadog/slos/alert",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "SLO ID." } },
          { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "SLO name." } },
          { "name": "status", "type": "String", "selector": ["status"], "meta": { "description": "SLO status/alerting state." } }
        ]
      }
    ]
  },
  {
    "handle": "users",
    "meta": {
      "short": "Users",
      "description": "Manage Datadog user accounts within an organization."
    },
    "endpoint": {
      "value": "/api/v2/users"
    },
    "fields": [
      { "name": "id", "type": "String", "selector": ["data", "id"], "meta": { "description": "User ID (UUID)." } },
      { "name": "name", "type": "String", "selector": ["data", "attributes", "name"], "meta": { "description": "User full name." } },
      { "name": "email", "type": "String", "selector": ["data", "attributes", "email"], "meta": { "description": "User email address." } },
      { "name": "handle", "type": "String", "selector": ["data", "attributes", "handle"], "meta": { "description": "User handle (usually email)." } },
      { "name": "status", "type": "String", "selector": ["data", "attributes", "status"], "meta": { "description": "User status: Active, Disabled, or Pending." } },
      { "name": "verified", "type": "Boolean", "selector": ["data", "attributes", "verified"], "meta": { "description": "Whether the user's email is verified." } },
      { "name": "created_at", "type": "String", "selector": ["data", "attributes", "created_at"], "meta": { "description": "Timestamp when the user was created." } }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": { "value": "" },
        "queryParams": {
          "filter": { "value": "{{filter}}", "placeholders": [{ "name": "filter", "type": "String", "description": "Filter users by email or name.", "required": false }] },
          "page[size]": { "value": "{{page_size}}", "placeholders": [{ "name": "page_size", "type": "Integer", "description": "Number of results per page.", "required": false }] }
        }
      },
      "read": {
        "method": "GET",
        "path": { "value": "/{{user_id}}", "placeholders": [{ "name": "user_id", "type": "String", "description": "The user ID (UUID).", "required": true }] }
      },
      "create": {
        "method": "POST",
        "path": { "value": "" },
        "bodyTemplate": {
          "value": "{\"data\":{\"type\":\"users\",\"attributes\":{\"name\":\"{{name}}\",\"email\":\"{{email}}\"}}}",
          "placeholders": [
            { "name": "name", "type": "String", "description": "User full name.", "required": true },
            { "name": "email", "type": "String", "description": "User email address.", "required": true }
          ]
        }
      },
      "update": {
        "method": "PATCH",
        "path": { "value": "/{{user_id}}", "placeholders": [{ "name": "user_id", "type": "String", "description": "The user ID (UUID).", "required": true }] },
        "bodyTemplate": {
          "value": "{\"data\":{\"type\":\"users\",\"id\":\"{{user_id}}\",\"attributes\":{\"name\":\"{{name}}\",\"disabled\":{{disabled}}}}}",
          "placeholders": [
            { "name": "user_id", "type": "String", "description": "The user ID (UUID).", "required": true },
            { "name": "name", "type": "String", "description": "Updated user name.", "required": false },
            { "name": "disabled", "type": "Boolean", "description": "Whether to disable the user.", "required": false }
          ]
        }
      }
    },
    "webhooks": [
      {
        "event": "user_created", "path": "/webhooks/datadog/users/created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["data", "id"], "meta": { "description": "User ID (UUID)." } },
          { "name": "name", "type": "String", "selector": ["data", "attributes", "name"], "meta": { "description": "User full name." } },
          { "name": "email", "type": "String", "selector": ["data", "attributes", "email"], "meta": { "description": "User email address." } }
        ]
      }
    ]
  },
  {
    "handle": "organizations",
    "meta": {
      "short": "Organizations",
      "description": "Retrieve information about the Datadog organization."
    },
    "endpoint": {
      "value": "/api/v1/org"
    },
    "fields": [
      { "name": "public_id", "type": "String", "selector": ["org", "public_id"], "meta": { "description": "Organization public ID." } },
      { "name": "name", "type": "String", "selector": ["org", "name"], "meta": { "description": "Organization name." } },
      { "name": "description", "type": "String", "selector": ["org", "description"], "meta": { "description": "Organization description." } },
      { "name": "created", "type": "String", "selector": ["org", "created"], "meta": { "description": "Timestamp when the organization was created." } },
      { "name": "trial", "type": "Boolean", "selector": ["org", "trial"], "meta": { "description": "Whether the organization is on a trial." } }
    ],
    "operations": {
      "read": {
        "method": "GET",
        "path": { "value": "" }
      }
    },
    "webhooks": [
      {
        "event": "organization_updated", "path": "/webhooks/datadog/organizations/updated",
        "payload": [
          { "name": "public_id", "type": "String", "selector": ["org", "public_id"], "meta": { "description": "Organization public ID." } },
          { "name": "name", "type": "String", "selector": ["org", "name"], "meta": { "description": "Organization name." } }
        ]
      }
    ]
  }
]

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: New Metric Post

Datadog Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-e4cc215637cfe13158b35a71277bf349ac1d0848%2FDatadog_logo.svg.png?alt=media" alt="" width="250"><figcaption></figcaption></figure>

<p align="center">The New Metric Post action submits a custom metric data point to the monitoring platform.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to post a new metric to Datadog so that I can monitor system performance in real-time.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| apiKey      | String     | Yes      |
| appKey      | String     | Yes      |
| metricName  | String     | Yes      |
| metricValue | Float      | Yes      |
| timestamp   | Integer    | No       |
| tags        | String     | No       |

### Related Connections

[Datadog](/datadog/datadog)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "new-metric-post",
  "state": "inDev",
  "meta": {
    "short": "Post New Metric",
    "description": "Posts a new metric to Datadog"
  },
  "input": [
    {
      "name": "apiKey",
      "type": "String",
      "required": true,
      "meta": {
        "description": "Datadog API key"
      }
    },
    {
      "name": "appKey",
      "type": "String",
      "required": true,
      "meta": {
        "description": "Datadog application key"
      }
    },
    {
      "name": "metricName",
      "type": "String",
      "required": true,
      "meta": {
        "description": "Name of the metric"
      }
    },
    {
      "name": "metricValue",
      "type": "Float",
      "required": true,
      "meta": {
        "description": "Value of the metric"
      }
    },
    {
      "name": "timestamp",
      "type": "Integer",
      "required": false,
      "meta": {
        "description": "POSIX timestamp of the metric"
      }
    },
    {
      "name": "tags",
      "type": "String",
      "required": false,
      "meta": {
        "description": "Comma-separated list of tags"
      }
    }
  ],
  "output": [
    {
      "name": "status",
      "type": "String",
      "selector": ["status"],
      "meta": {
        "description": "Status of the request"
      }
    },
    {
      "name": "response",
      "type": "String",
      "selector": ["body"],
      "meta": {
        "description": "Response body"
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/api/v1/series",
        "headers": {
          "Content-Type": "application/json",
          "DD-API-KEY": "{{apiKey}}",
          "DD-APPLICATION-KEY": "{{appKey}}"
        },
        "bodyTemplate": {
          "value": "{\"series\":[{\"metric\":\"{{metricName}}\",\"points\":[[{{timestamp | default: \"now\" | date: \"%s\"}},{{metricValue}}]],\"tags\":[{{tags | split: \",\" | to_json}}]}]}",
          "placeholders": [
            {
              "name": "metricName",
              "type": "String",
              "description": "Name of the metric",
              "required": true
            },
            {
              "name": "metricValue",
              "type": "Float",
              "description": "Value of the metric",
              "required": true
            },
            {
              "name": "timestamp",
              "type": "Integer",
              "description": "POSIX timestamp of the metric",
              "required": false
            },
            {
              "name": "tags",
              "type": "String",
              "description": "Comma-separated list of tags",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: API Request

Datadog Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-e4cc215637cfe13158b35a71277bf349ac1d0848%2FDatadog_logo.svg.png?alt=media" alt="" width="250"><figcaption></figcaption></figure>

<p align="center">The API Request action sends a custom API request to the Datadog platform.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to send an API request to Datadog to retrieve monitoring metrics so that I can analyze system performance.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| endpoint   | String     | Yes      |
| method     | String     | Yes      |
| body       | String     | No       |
| headers    | String     | No       |

### Related Connections

[Datadog](/datadog/datadog)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "api-request",
  "state": "inDev",
  "meta": {
    "short": "API Request",
    "description": "Send an API request to Datadog"
  },
  "input": [
    {
      "name": "endpoint",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The Datadog API endpoint to call"
      }
    },
    {
      "name": "method",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The HTTP method to use (GET, POST, PUT, PATCH, DELETE)"
      }
    },
    {
      "name": "body",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The request body as a JSON string"
      }
    },
    {
      "name": "headers",
      "type": "String",
      "required": false,
      "meta": {
        "description": "Additional headers as a JSON string"
      }
    }
  ],
  "output": [
    {
      "name": "response",
      "type": "String",
      "selector": ["body"],
      "meta": {
        "description": "The response body from the API request"
      }
    },
    {
      "name": "statusCode",
      "type": "Integer",
      "selector": ["status"],
      "meta": {
        "description": "The HTTP status code from the API request"
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "{{method}}",
        "path": "{{endpoint}}",
        "headers": {
          "Content-Type": "application/json",
          "{{headers}}": "{{headers}}"
        },
        "bodyTemplate": {
          "value": "{{body}}"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Discord

Discord Connection

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-e49e80a28f8754a7641fd03fd8f964fc6bf7a773%2FDiscord_logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<h3 align="center">Put Discord to Work with @Human Automations and @Human Agents</h3>

<p align="center">The Discord Connection documents all Triggers, Actions and Query Operations available for creating automations via the Discord API.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### What can you do with the Discord Connection?

* Connect to the Discord API in a few clicks
* Use the related Discord Operations (see below) in @Human Automations or @Human Agents

### Related Operations

#### Trigger Operations

**Server Updated**

Triggers on: servers/server\_updated

Triggered when a server's settings, including name or icon, are updated.

**Member Joined**

Triggers on: servers/member\_added

Triggered when a new member joins a server.

**Member Left**

Triggers on: servers/member\_removed

Triggered when a member leaves a server or is removed.

**Channel Created**

Triggers on: channels/channel\_created

Triggered when a new channel is created within a server.

**Channel Deleted**

Triggers on: channels/channel\_deleted

Triggered when an existing channel is deleted.

**Message Created**

Triggers on: messages/message\_created

Triggered when a new message is sent in a channel.

**Message Updated**

Triggers on: messages/message\_updated

Triggered when an existing message is edited.

**Message Deleted**

Triggers on: messages/message\_deleted

Triggered when a message is deleted from a channel.

#### Action Operations

[Action: Add Role](/discord/discord/action-add-role)

[Action: Remove User Role](/discord/discord/action-remove-user-role)

[Action: Send Channel Message](/discord/discord/action-send-channel-message)

[Action: Send message in Forum Post](/discord/discord/action-send-message-in-forum-post)

#### Query Operations

Example link

### Related Automations

Example link

### Obtaining Access Credentials

1. **Log in** to the [Discord Developer Portal](https://discord.com/developers/applications) and select your application.
2. **Navigate to the "Bot"** page in the left sidebar.
3. **Reset and Copy your Bot Token** by clicking the **"Reset Token"** button (this is your permanent access credential).
4. **Ensure "Public Bot" is disabled** if you only want this bot for your own server.
5. **Add the Bot to your server** via the **OAuth2 URL Generator** with the required scopes (e.g., `bot`, `applications.commands`).

### Configuring Webhooks

1. **Log in** to your [Discord Developer Portal](https://discord.com/developers/applications) and select your application.
2. **Navigate to "Settings" → "Webhook Events"** in the left sidebar.
3. **Enter the Webhook URL** provided by your integration into the **Endpoint** field.
4. **Enable Events** by clicking the toggle in the Events section.
5. **Select the specific events** you wish to receive (e.g., `APPLICATION_AUTHORIZED`, `ENTITLEMENT_CREATE`) and click **Save Changes**.
6. **Navigate to the "General Information"** page and enter the same URL into the **Interactions Endpoint URL** field to receive slash commands and component interactions.
7. **Navigate to the "Bot" page** settings in the left sidebar.
8. **Enable Privileged Gateway Intents** by toggling **"Server Members Intent"** and **"Message Content Intent"** to ensure all server-level events are captured.
9. **Click "Save Changes"** to activate the configuration.

### Code (Apache v2.0): Service Connectivity and Metadata

```
{
  "handle": "discord",
  "status": "active",
  "meta": {
    "short": "Discord",
    "description": "Connect to Discord's API for managing servers, channels, and messages.",
    "icon": "discord",
    "tags": ["communication", "messaging", "api"]
  },
  "service": {
    "baseURL": {
      "value": "https://discord.com/api/v10"
    },
    "protocol": "https",
    "contentType": "application/json",
    "headers": {
      "Authorization": {
        "value": "Bot {{token}}"
      },
      "User-Agent": {
        "value": "DiscordBot (https://example.com, v1.0)"
      }
    },
    "auth": {
      "method": "api_token",
      "params": {
        "apiToken": {
          "token": {
            "value": "{{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          },
          "headerName": {
            "value": "Authorization"
          }
        }
      }
    }
  }
}

```

### Code (Apache v2.0): List of External Resources and Internal Mapping

```
[
  {
    "handle": "servers",
    "meta": {
      "short": "Servers",
      "description": "Manage Discord servers (guilds) including creation, updates, and deletions."
    },
    "endpoint": {
      "value": "/guilds",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": ["id"],
        "meta": {
          "description": "The unique identifier for the server."
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": ["name"],
        "meta": {
          "description": "The name of the server."
        }
      },
      {
        "name": "icon",
        "type": "String",
        "selector": ["icon"],
        "meta": {
          "description": "The icon hash of the server."
        }
      },
      {
        "name": "owner_id",
        "type": "String",
        "selector": ["owner_id"],
        "meta": {
          "description": "The ID of the server owner."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bot {{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          }
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "create": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bot {{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"name\": \"{{name}}\", \"region\": \"{{region}}\"}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "Name of the server",
              "required": true
            },
            {
              "name": "region",
              "type": "String",
              "description": "Region of the server",
              "required": true
            }
          ]
        }
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "Server ID",
              "required": true
            }
          ]
        },
        "headers": {
          "Authorization": {
            "value": "Bot {{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          }
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "update": {
        "method": "PATCH",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "Server ID",
              "required": true
            }
          ]
        },
        "headers": {
          "Authorization": {
            "value": "Bot {{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"name\": \"{{name}}\"}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "New name of the server",
              "required": false
            }
          ]
        }
      },
      "delete": {
        "method": "DELETE",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "Server ID",
              "required": true
            }
          ]
        },
        "headers": {
          "Authorization": {
            "value": "Bot {{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          }
        },
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": [
      {
        "event": "server_updated",
        "path": "/webhooks/discord/server_updated",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "The unique identifier for the server." } },
          { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "The name of the server." } },
          { "name": "description", "type": "String", "selector": ["description"], "meta": { "description": "The description of the server." } },
          { "name": "owner_id", "type": "String", "selector": ["owner_id"], "meta": { "description": "The ID of the server owner." } }
        ]
      },
      {
        "event": "member_added",
        "path": "/webhooks/discord/member_added",
        "payload": [
          { "name": "guild_id", "type": "String", "selector": ["guild_id"], "meta": { "description": "The ID of the server." } },
          { "name": "user_id", "type": "String", "selector": ["user", "id"], "meta": { "description": "The ID of the member." } },
          { "name": "username", "type": "String", "selector": ["user", "username"], "meta": { "description": "The username of the member." } },
          { "name": "joined_at", "type": "String", "selector": ["joined_at"], "meta": { "description": "The timestamp when the member joined." } }
        ]
      },
      {
        "event": "member_removed",
        "path": "/webhooks/discord/member_removed",
        "payload": [
          { "name": "guild_id", "type": "String", "selector": ["guild_id"], "meta": { "description": "The ID of the server." } },
          { "name": "user_id", "type": "String", "selector": ["user", "id"], "meta": { "description": "The ID of the member." } },
          { "name": "username", "type": "String", "selector": ["user", "username"], "meta": { "description": "The username of the member." } }
        ]
      }
    ]
  },
  {
    "handle": "channels",
    "meta": {
      "short": "Channels",
      "description": "Manage Discord channels within servers, including text and voice channels."
    },
    "endpoint": {
      "value": "/guilds/{{guild_id}}/channels",
      "placeholders": [
        {
          "name": "guild_id",
          "type": "String",
          "description": "ID of the server",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": ["id"],
        "meta": {
          "description": "The unique identifier for the channel."
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": ["name"],
        "meta": {
          "description": "The name of the channel."
        }
      },
      {
        "name": "type",
        "type": "Integer",
        "selector": ["type"],
        "meta": {
          "description": "The type of channel (e.g., 0 for text, 2 for voice)."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bot {{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          }
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "create": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bot {{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"name\": \"{{name}}\", \"type\": {{type}}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "Name of the channel",
              "required": true
            },
            {
              "name": "type",
              "type": "Integer",
              "description": "Type of channel (0 for text, 2 for voice)",
              "required": true
            }
          ]
        }
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "Channel ID",
              "required": true
            }
          ]
        },
        "headers": {
          "Authorization": {
            "value": "Bot {{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          }
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "update": {
        "method": "PATCH",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "Channel ID",
              "required": true
            }
          ]
        },
        "headers": {
          "Authorization": {
            "value": "Bot {{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"name\": \"{{name}}\"}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "New name of the channel",
              "required": false
            }
          ]
        }
      },
      "delete": {
        "method": "DELETE",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "Channel ID",
              "required": true
            }
          ]
        },
        "headers": {
          "Authorization": {
            "value": "Bot {{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          }
        },
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": [
      {
        "event": "channel_created",
        "path": "/webhooks/discord/channel_created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "The unique identifier for the channel." } },
          { "name": "guild_id", "type": "String", "selector": ["guild_id"], "meta": { "description": "The ID of the server." } },
          { "name": "name", "type": "String", "selector": ["name"], "meta": { "description": "The name of the channel." } },
          { "name": "type", "type": "Integer", "selector": ["type"], "meta": { "description": "The type of channel." } }
        ]
      },
      {
        "event": "channel_deleted",
        "path": "/webhooks/discord/channel_deleted",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "The unique identifier for the deleted channel." } },
          { "name": "guild_id", "type": "String", "selector": ["guild_id"], "meta": { "description": "The ID of the server." } }
        ]
      }
    ]
  },
  {
    "handle": "messages",
    "meta": {
      "short": "Messages",
      "description": "Manage messages within Discord channels, including sending, editing, and deleting messages."
    },
    "endpoint": {
      "value": "/channels/{{channel_id}}/messages",
      "placeholders": [
        {
          "name": "channel_id",
          "type": "String",
          "description": "ID of the channel",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": ["id"],
        "meta": {
          "description": "The unique identifier for the message."
        }
      },
      {
        "name": "content",
        "type": "String",
        "selector": ["content"],
        "meta": {
          "description": "The content of the message."
        }
      },
      {
        "name": "author_id",
        "type": "String",
        "selector": ["author", "id"],
        "meta": {
          "description": "The unique ID of the message author."
        }
      },
      {
        "name": "author_username",
        "type": "String",
        "selector": ["author", "username"],
        "meta": {
          "description": "The username of the message author."
        }
      },
      {
        "name": "author_global_name",
        "type": "String",
        "selector": ["author", "global_name"],
        "meta": {
          "description": "The display name of the message author."
        }
      },
      {
        "name": "author_bot",
        "type": "Boolean",
        "selector": ["author", "bot"],
        "meta": {
          "description": "Whether the message author is a bot."
        }
      },
      {
        "name": "timestamp",
        "type": "String",
        "selector": ["timestamp"],
        "meta": {
          "description": "The timestamp of the message."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bot {{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          }
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "create": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Authorization": {
            "value": "Bot {{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"content\": \"{{content}}\"}",
          "placeholders": [
            {
              "name": "content",
              "type": "String",
              "description": "Content of the message",
              "required": true
            }
          ]
        }
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "Message ID",
              "required": true
            }
          ]
        },
        "headers": {
          "Authorization": {
            "value": "Bot {{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          }
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "update": {
        "method": "PATCH",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "Message ID",
              "required": true
            }
          ]
        },
        "headers": {
          "Authorization": {
            "value": "Bot {{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          },
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"content\": \"{{content}}\"}",
          "placeholders": [
            {
              "name": "content",
              "type": "String",
              "description": "New content of the message",
              "required": false
            }
          ]
        }
      },
      "delete": {
        "method": "DELETE",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "Message ID",
              "required": true
            }
          ]
        },
        "headers": {
          "Authorization": {
            "value": "Bot {{token}}",
            "placeholders": [
              {
                "name": "token",
                "type": "String",
                "description": "Discord bot token",
                "required": true
              }
            ]
          }
        },
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": [
      {
        "event": "message_created",
        "path": "/webhooks/discord/message_created",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "The unique identifier for the message." } },
          { "name": "channel_id", "type": "String", "selector": ["channel_id"], "meta": { "description": "The ID of the channel." } },
          { "name": "guild_id", "type": "String", "selector": ["guild_id"], "meta": { "description": "The ID of the server." } },
          { "name": "content", "type": "String", "selector": ["content"], "meta": { "description": "The content of the message." } },
          { "name": "author_id", "type": "String", "selector": ["author", "id"], "meta": { "description": "The unique ID of the message author." } },
          { "name": "author_username", "type": "String", "selector": ["author", "username"], "meta": { "description": "The username of the message author." } }
        ]
      },
      {
        "event": "message_updated",
        "path": "/webhooks/discord/message_updated",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "The unique identifier for the message." } },
          { "name": "channel_id", "type": "String", "selector": ["channel_id"], "meta": { "description": "The ID of the channel." } },
          { "name": "content", "type": "String", "selector": ["content"], "meta": { "description": "The new content of the message." } }
        ]
      },
      {
        "event": "message_deleted",
        "path": "/webhooks/discord/message_deleted",
        "payload": [
          { "name": "id", "type": "String", "selector": ["id"], "meta": { "description": "The unique identifier for the deleted message." } },
          { "name": "channel_id", "type": "String", "selector": ["channel_id"], "meta": { "description": "The ID of the channel." } }
        ]
      }
    ]
  }
]

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Add Role

Discord Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-e49e80a28f8754a7641fd03fd8f964fc6bf7a773%2FDiscord_logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The Add Role action in Discord assigns a specific role (and its permissions) to a user on a server.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to give new team members access to our project channels, so I use the Add Role action in Discord to assign them the "Project Contributor" role.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| guildId    | String     | Yes      |
| userId     | String     | Yes      |
| roleId     | String     | Yes      |

### Related Connections

[Discord](/discord/discord)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "add-role",
  "state": "inDev",
  "meta": {
    "short": "Add Role",
    "description": "Adds a specified role to a user in a Discord server."
  },
  "input": [
    {
      "name": "guildId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the Discord server (guild)."
      }
    },
    {
      "name": "userId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the user to whom the role will be added."
      }
    },
    {
      "name": "roleId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the role to be added."
      }
    }
  ],
  "output": [
    {
      "name": "success",
      "type": "Boolean",
      "selector": [],
      "meta": {
        "description": "Indicates whether the role was successfully added."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "PUT",
        "path": "/guilds/{{guildId}}/members/{{userId}}/roles/{{roleId}}",
        "headers": {
          "Content-Type": "application/json"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Remove User Role

Discord Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-e49e80a28f8754a7641fd03fd8f964fc6bf7a773%2FDiscord_logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The Remove User Role action in Discord revokes a specific role (and its permissions) from a user on a server.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to restrict a member’s access to admin channels after their project ends, so I use the Remove User Role action in Discord to take away their "Project Lead" role.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| guildID    | String     | Yes      |
| userID     | String     | Yes      |
| roleID     | String     | Yes      |
| botToken   | String     | Yes      |

### Related Connections

[Discord](/discord/discord)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "remove-user-role",
  "state": "inDev",
  "meta": {
    "short": "Remove User Role",
    "description": "Removes a specified role from a user in a Discord server."
  },
  "input": [
    {
      "name": "guildID",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the Discord server (guild)."
      }
    },
    {
      "name": "userID",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the user to remove the role from."
      }
    },
    {
      "name": "roleID",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the role to remove from the user."
      }
    },
    {
      "name": "botToken",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The bot token for authenticating with the Discord API."
      }
    }
  ],
  "output": [
    {
      "name": "success",
      "type": "Boolean",
      "selector": [],
      "meta": {
        "description": "Indicates whether the role was successfully removed."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "DELETE",
        "path": "/guilds/{{guildID}}/members/{{userID}}/roles/{{roleID}}",
        "headers": {
          "Content-Type": "application/json"
        }
      }
    }
  ]
}
```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Send Channel Message

Discord Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-e49e80a28f8754a7641fd03fd8f964fc6bf7a773%2FDiscord_logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The Send Channel Message action in Discord posts a message to a specified channel on a server.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to notify everyone about the upcoming team meeting, so I use the Send Channel Message action in Discord to post a reminder in the #announcements channel.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| channelID  | String     | Yes      |
| message    | String     | Yes      |
| embed      | Object     | No       |

### Related Connections

[Discord](/discord/discord)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "send-channel-message",
  "state": "inDev",
  "meta": {
    "short": "Send Channel Message",
    "description": "Sends a message to a specified Discord channel."
  },
  "input": [
    {
      "name": "channelID",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the Discord channel to send the message to."
      }
    },
    {
      "name": "message",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The content of the message to send."
      }
    },
    {
      "name": "embed",
      "type": "Object",
      "required": false,
      "meta": {
        "description": "An optional embed object to include in the message."
      }
    }
  ],
  "output": [
    {
      "name": "messageID",
      "type": "String",
      "selector": ["id"],
      "meta": {
        "description": "The ID of the sent message."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/channels/{{channelID}}/messages",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"content\": \"{{message}}\", \"embed\": {{embed}}}",
          "placeholders": [
            {
              "name": "message",
              "type": "String",
              "description": "The content of the message to send.",
              "required": true
            },
            {
              "name": "embed",
              "type": "Object",
              "description": "An optional embed object to include in the message.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Send message in Forum Post

Discord Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-e49e80a28f8754a7641fd03fd8f964fc6bf7a773%2FDiscord_logo.svg.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<p align="center">The Send Message in Forum Post action in Discord allows you to reply or post a message within a specific forum thread.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to answer a team member’s question about the project timeline, so I use the Send Message in Forum Post action in Discord to reply directly in the relevant forum thread.

#### Fields

| Field Name     | Field Type | Required |
| -------------- | ---------- | -------- |
| channelID      | String     | Yes      |
| threadID       | String     | Yes      |
| messageContent | String     | Yes      |
| messageID      | String     | No       |

### Related Connections

[Discord](/discord/discord)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "send-forum-post-message",
  "state": "inDev",
  "meta": {
    "short": "Send Message in Forum Post",
    "description": "Send a message to a specific forum post in Discord."
  },
  "input": [
    {
      "name": "channelID",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the forum channel."
      }
    },
    {
      "name": "threadID",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the thread (forum post) where the message will be sent."
      }
    },
    {
      "name": "messageContent",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The content of the message to be sent."
      }
    }
  ],
  "output": [
    {
      "name": "messageID",
      "type": "String",
      "selector": ["id"],
      "meta": {
        "description": "The ID of the sent message."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/channels/{{channelID}}/messages",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"content\": \"{{messageContent}}\", \"message_reference\": {\"channel_id\": \"{{channelID}}\", \"message_id\": \"{{threadID}}\"}}",
          "placeholders": [
            {
              "name": "channelID",
              "type": "String",
              "description": "The ID of the forum channel.",
              "required": true
            },
            {
              "name": "threadID",
              "type": "String",
              "description": "The ID of the thread (forum post).",
              "required": true
            },
            {
              "name": "messageContent",
              "type": "String",
              "description": "The content of the message to be sent.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Docusign

Docusign Connection

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<h3 align="center">Put Docusign to Work with @Human Automations and @Human Agents</h3>

<p align="center">The Docusign Connection documents all Triggers, Actions and Query Operations available for creating automations via the Docusign API.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### What can you do with the Docusign Connection?

* Connect to the Docusign API in a few clicks
* Use the related Docusign Operations (see below) in @Human Automations or @Human Agents

### Related Operations

#### Trigger Operations

**Envelope Sent**

Triggers on: envelopes/envelopeSent

Triggered when an envelope is successfully sent.

**Envelope Completed**

Triggers on: envelopes/envelopeCompleted

Triggered when an envelope is completely signed and ready.

#### Action Operations

[Action: Add Document to Workspace](/docusign/docusign/action-add-document-to-workspace)

[Action: Add User to Workspace](/docusign/docusign/action-add-user-to-workspace)

[Action: Create Bulk Send List](/docusign/docusign/action-create-bulk-send-list)

[Action: Create Envelope From Workspace](/docusign/docusign/action-create-envelope-from-workspace)

[Action: Create Workspace](/docusign/docusign/action-create-workspace)

[Action: Download Envelope Document](/docusign/docusign/action-download-envelope-document)

[Action: Send Envelope Using Template](/docusign/docusign/action-send-envelope-using-template)

[Action: Cancel Maestro Workflow Instance](/docusign/docusign/action-cancel-maestro-workflow-instance)

[Action: Resume Maestro Workflow Instance](/docusign/docusign/action-resume-maestro-workflow-instance)

[Action: Create Pre-Filled Webform Link](/docusign/docusign/action-create-pre-filled-webform-link)

[Action: Revoke Workspace User Access](/docusign/docusign/action-revoke-workspace-user-access)

[Action: Test Bulk Send Request](/docusign/docusign/action-test-bulk-send-request)

[Action: Update Workspace User](/docusign/docusign/action-update-workspace-user)

[Action: API Request](/docusign/docusign/action-api-request)

[Action: Add to Bulk Send List](/docusign/docusign/action-add-to-bulk-send-list)

[Action: Bulk Send Envelope From Template](/docusign/docusign/action-bulk-send-envelope-from-template)

[Action: Create Draft Signature Request](/docusign/docusign/action-create-draft-signature-request)

[Action: Create Template from Document](/docusign/docusign/action-create-template-from-document)

[Action: Delete Document From Workspace](/docusign/docusign/action-delete-document-from-workspace)

[Action: Send Envelope Using Document](/docusign/docusign/action-send-envelope-using-document)

[Action: Pause Maestro Workflow Instance](/docusign/docusign/action-pause-maestro-workflow-instance)

[Action: Trigger Maestro Workflow](/docusign/docusign/action-trigger-maestro-workflow)

[Action: Restore Workspace User Access](/docusign/docusign/action-restore-workspace-user-access)

[Action: Create Signature Request](/docusign/docusign/action-create-signature-request)

[Action: Update Template](/docusign/docusign/action-update-template)

[Action: Void Envelope](/docusign/docusign/action-void-envelope)

[Action: Create Envelope with Base URL and Account ID Input](/docusign/docusign/action-create-envelope-with-base-url-and-account-id-input)

#### Query Operations

[Query: Find Documents List for Envelope](/docusign/docusign/query-find-documents-list-for-envelope)

[Query: Find Envelope Info](/docusign/docusign/query-find-envelope-info)

[Query: Find Maestro Workflow](/docusign/docusign/query-find-maestro-workflow)

[Query: Find Maestro Workflow Instance](/docusign/docusign/query-find-maestro-workflow-instance)

[Query: Find Template](/docusign/docusign/query-find-template)

[Query: Find Workspaces](/docusign/docusign/query-find-workspaces)

[Query: List Envelopes in Workspace](/docusign/docusign/query-list-envelopes-in-workspace)

[Query: Find Custom Fields for Envelope](/docusign/docusign/query-find-custom-fields-for-envelope)

[Query: Find Form Data for Envelope](/docusign/docusign/query-find-form-data-for-envelope)

[Query: Find Recipients for Envelope](/docusign/docusign/query-find-recipients-for-envelope)

[Query: Find Navigator Agreement](/docusign/docusign/query-find-navigator-agreement)

[Query: Find Envelope Documents](/docusign/docusign/query-find-envelope-documents)

[Query: Find Template Documents](/docusign/docusign/query-find-template-documents)

[Query: Find Documents in Workspace](/docusign/docusign/query-find-documents-in-workspace)

[Query: List Users in Workspace](/docusign/docusign/query-list-users-in-workspace)

### Related Automations

Example link

### Obtaining Access Credentials

To obtain a **DocuSign Personal Access Token (PAT)** for system-to-system access, follow these steps:

#### **Prerequisites**

1. A **DocuSign Developer Account** (free at [developers.docusign.com](https://developers.docusign.com/)).
2. An **Integration Key (Client ID)** from a **DocuSign App** (created in the Developer Portal).

#### **Steps to Generate a PAT**

1. **Log in** to the [DocuSign Developer Portal](https://admindemo.docusign.com/).
2. Navigate to **"My Apps"** (under **"Apps and Keys"** in the left sidebar).
3. Select your **App** (or create one if needed).
4. Under **"Authentication"**, locate the **"Generate RSA Key Pair"** section.
5. Click **"Generate Key Pair"** (this creates a private/public key pair).
6. Download the **private key** (`.pem` file) and store it securely.
7. Under **"Personal Access Tokens"**, click **"Add Personal Access Token"**.
8. Provide a **name** and **scope** (e.g., `signature`).
9. Click **"Generate Token"**.
10. Copy the **generated PAT** (it will only be shown once).

#### **Required Values**

* **Integration Key (Client ID)** – From your DocuSign App.
* **User ID (GUID)** – Your DocuSign account GUID (found in **API Account Info**).
* **Private Key (RSA .pem file)** – Downloaded in Step 6.
* **Personal Access Token (PAT)** – Generated in Step 10.

Use these values for API authentication.

### Configuring Webhooks

1. **Log in** to your DocuSign account.
2. Navigate to the **Admin** tab.
3. In the left sidebar, under **Integrations**, select **Connect**.
4. Click **Add Configuration** and select **Custom**.
5. Provide a descriptive **Name** for the configuration.
6. Enter the **URL to Publish** (your webhook listener endpoint).
7. Select the **Data Format** (JSON is recommended).
8. Under **Event Triggers**, select the specific events you want to track (e.g., **Envelope Signed**).
9. Click **Add** to save the configuration.

### Code (Apache v2.0): Service Connectivity and Metadata

```
{
  "handle": "docusign-v2",
  "status": "active",
  "meta": {
    "short": "DocuSign",
    "description": "Connect to DocuSign for electronic signatures and agreement workflows.",
    "icon": "docusign",
    "tags": ["e-signature", "documents", "agreements"]
  },
  "service": {
    "baseURL": {
      "value": "https://{{environment}}.docusign.net/restapi"
    },
    "protocol": "https",
    "contentType": "application/json",
    "headers": {
      "Accept": {
        "value": "application/json"
      }
    },
    "auth": {
      "method": "system_to_system",
      "params": {}
    }
  }
}

```

### Code (Apache v2.0): List of External Resources and Internal Mapping

```
[
  {
    "handle": "envelopes",
    "meta": {
      "short": "Envelopes",
      "description": "Manage and track envelopes for sending and signing documents."
    },
    "endpoint": {
      "value": "/v2.1/accounts/{{accountId}}/envelopes",
      "placeholders": [
        {
          "name": "accountId",
          "type": "String",
          "description": "The account ID in DocuSign",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "envelopeId",
        "type": "String",
        "selector": ["envelopeId"],
        "meta": {
          "description": "Unique identifier for the envelope"
        }
      },
      {
        "name": "status",
        "type": "String",
        "selector": ["status"],
        "meta": {
          "description": "Current status of the envelope (e.g., 'sent', 'delivered', 'completed')"
        }
      },
      {
        "name": "emailSubject",
        "type": "String",
        "selector": ["emailSubject"],
        "meta": {
          "description": "Subject line of the email sent to recipients"
        }
      },
      {
        "name": "createdDateTime",
        "type": "String",
        "selector": ["createdDateTime"],
        "meta": {
          "description": "Timestamp when the envelope was created"
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {},
        "queryParams": {
          "from_date": {
            "value": "{{fromDate}}",
            "placeholders": [
              {
                "name": "fromDate",
                "type": "String",
                "description": "Filter envelopes created after this date",
                "required": false
              }
            ]
          }
        }
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{envelopeId}}",
          "placeholders": [
            {
              "name": "envelopeId",
              "type": "String",
              "description": "The ID of the envelope to retrieve",
              "required": true
            }
          ]
        },
        "headers": {}
      },
      "create": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Content-Type": {
            "value": "application/json",
            "placeholders": []
          }
        },
        "bodyTemplate": {
          "value": "{\"status\": \"{{status}}\", \"emailSubject\": \"{{emailSubject}}\", \"documents\": {{documents}}, \"recipients\": {\"signers\": {{signers}}}}",
          "placeholders": [
            {
              "name": "status",
              "type": "String",
              "description": "Status of the envelope (e.g., 'sent')",
              "required": true
            },
            {
              "name": "emailSubject",
              "type": "String",
              "description": "Subject line of the email",
              "required": true
            },
            {
              "name": "documents",
              "type": "Array",
              "description": "List of documents in the envelope",
              "required": true
            },
            {
              "name": "signers",
              "type": "Array",
              "description": "List of signers for the envelope",
              "required": true
            }
          ]
        }
      }
    },
    "webhooks": [
      {
        "event": "envelopeSent",
        "path": "/webhooks/docusign/envelope-sent",
        "payload": [
          {
            "name": "envelopeId",
            "type": "String",
            "selector": ["envelopeId"],
            "meta": {
              "description": "ID of the envelope that was sent"
            }
          },
          {
            "name": "status",
            "type": "String",
            "selector": ["status"],
            "meta": {
              "description": "Status of the envelope"
            }
          }
        ]
      },
      {
        "event": "envelopeCompleted",
        "path": "/webhooks/docusign/envelope-completed",
        "payload": [
          {
            "name": "envelopeId",
            "type": "String",
            "selector": ["envelopeId"],
            "meta": {
              "description": "ID of the envelope that was completed"
            }
          },
          {
            "name": "status",
            "type": "String",
            "selector": ["status"],
            "meta": {
              "description": "Status of the envelope"
            }
          }
        ]
      }
    ]
  },
  {
    "handle": "templates",
    "meta": {
      "short": "Templates",
      "description": "Manage and use templates for creating envelopes."
    },
    "endpoint": {
      "value": "/v2.1/accounts/{{accountId}}/templates",
      "placeholders": [
        {
          "name": "accountId",
          "type": "String",
          "description": "The account ID in DocuSign",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "templateId",
        "type": "String",
        "selector": ["templateId"],
        "meta": {
          "description": "Unique identifier for the template"
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": ["name"],
        "meta": {
          "description": "Name of the template"
        }
      },
      {
        "name": "createdDateTime",
        "type": "String",
        "selector": ["createdDateTime"],
        "meta": {
          "description": "Timestamp when the template was created"
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {}
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{templateId}}",
          "placeholders": [
            {
              "name": "templateId",
              "type": "String",
              "description": "The ID of the template to retrieve",
              "required": true
            }
          ]
        },
        "headers": {}
      }
    }
  },
  {
    "handle": "recipients",
    "meta": {
      "short": "Recipients",
      "description": "Manage recipients of envelopes, including signers and carbon copy recipients."
    },
    "endpoint": {
      "value": "/v2.1/accounts/{{accountId}}/envelopes/{{envelopeId}}/recipients",
      "placeholders": [
        {
          "name": "accountId",
          "type": "String",
          "description": "The account ID in DocuSign",
          "required": true
        },
        {
          "name": "envelopeId",
          "type": "String",
          "description": "The ID of the envelope",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "recipientId",
        "type": "String",
        "selector": ["recipientId"],
        "meta": {
          "description": "Unique identifier for the recipient"
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": ["name"],
        "meta": {
          "description": "Name of the recipient"
        }
      },
      {
        "name": "email",
        "type": "String",
        "selector": ["email"],
        "meta": {
          "description": "Email address of the recipient"
        }
      },
      {
        "name": "status",
        "type": "String",
        "selector": ["status"],
        "meta": {
          "description": "Current status of the recipient (e.g., 'sent', 'delivered', 'completed')"
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {}
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{recipientId}}",
          "placeholders": [
            {
              "name": "recipientId",
              "type": "String",
              "description": "The ID of the recipient to retrieve",
              "required": true
            }
          ]
        },
        "headers": {}
      }
    }
  },
  {
    "handle": "users",
    "meta": {
      "short": "Users",
      "description": "Manage users within a DocuSign account."
    },
    "endpoint": {
      "value": "/v2.1/accounts/{{accountId}}/users",
      "placeholders": [
        {
          "name": "accountId",
          "type": "String",
          "description": "The account ID in DocuSign",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "userId",
        "type": "String",
        "selector": ["userId"],
        "meta": {
          "description": "Unique identifier for the user"
        }
      },
      {
        "name": "userName",
        "type": "String",
        "selector": ["userName"],
        "meta": {
          "description": "Name of the user"
        }
      },
      {
        "name": "email",
        "type": "String",
        "selector": ["email"],
        "meta": {
          "description": "Email address of the user"
        }
      },
      {
        "name": "userStatus",
        "type": "String",
        "selector": ["userStatus"],
        "meta": {
          "description": "Status of the user (e.g., 'active', 'closed')"
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {}
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{userId}}",
          "placeholders": [
            {
              "name": "userId",
              "type": "String",
              "description": "The ID of the user to retrieve",
              "required": true
            }
          ]
        },
        "headers": {}
      }
    }
  },
  {
    "handle": "groups",
    "meta": {
      "short": "Groups",
      "description": "Manage user groups within a DocuSign account."
    },
    "endpoint": {
      "value": "/v2.1/accounts/{{accountId}}/groups",
      "placeholders": [
        {
          "name": "accountId",
          "type": "String",
          "description": "The account ID in DocuSign",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "groupId",
        "type": "String",
        "selector": ["groupId"],
        "meta": {
          "description": "Unique identifier for the group"
        }
      },
      {
        "name": "groupName",
        "type": "String",
        "selector": ["groupName"],
        "meta": {
          "description": "Name of the group"
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {}
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{groupId}}",
          "placeholders": [
            {
              "name": "groupId",
              "type": "String",
              "description": "The ID of the group to retrieve",
              "required": true
            }
          ]
        },
        "headers": {}
      }
    }
  },
  {
    "handle": "folders",
    "meta": {
      "short": "Folders",
      "description": "Manage folders for organizing envelopes."
    },
    "endpoint": {
      "value": "/v2.1/accounts/{{accountId}}/folders",
      "placeholders": [
        {
          "name": "accountId",
          "type": "String",
          "description": "The account ID in DocuSign",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "folderId",
        "type": "String",
        "selector": ["folderId"],
        "meta": {
          "description": "Unique identifier for the folder"
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": ["name"],
        "meta": {
          "description": "Name of the folder"
        }
      },
      {
        "name": "type",
        "type": "String",
        "selector": ["type"],
        "meta": {
          "description": "Type of folder (e.g., 'draft', 'inbox', 'normal')"
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {}
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{folderId}}",
          "placeholders": [
            {
              "name": "folderId",
              "type": "String",
              "description": "The ID of the folder to retrieve",
              "required": true
            }
          ]
        },
        "headers": {}
      }
    }
  },
  {
    "handle": "workspaces",
    "meta": {
      "short": "Workspaces",
      "description": "Manage workspaces for collaboration."
    },
    "endpoint": {
      "value": "/v2.1/accounts/{{accountId}}/workspaces",
      "placeholders": [
        {
          "name": "accountId",
          "type": "String",
          "description": "The account ID in DocuSign",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "workspaceId",
        "type": "String",
        "selector": ["workspaceId"],
        "meta": {
          "description": "Unique identifier for the workspace"
        }
      },
      {
        "name": "workspaceName",
        "type": "String",
        "selector": ["workspaceName"],
        "meta": {
          "description": "Name of the workspace"
        }
      },
      {
        "name": "status",
        "type": "String",
        "selector": ["status"],
        "meta": {
          "description": "Status of the workspace"
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {}
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{workspaceId}}",
          "placeholders": [
            {
              "name": "workspaceId",
              "type": "String",
              "description": "The ID of the workspace to retrieve",
              "required": true
            }
          ]
        },
        "headers": {}
      }
    }
  },
  {
    "handle": "brands",
    "meta": {
      "short": "Brands",
      "description": "Manage account brands for styling envelopes and emails."
    },
    "endpoint": {
      "value": "/v2.1/accounts/{{accountId}}/brands",
      "placeholders": [
        {
          "name": "accountId",
          "type": "String",
          "description": "The account ID in DocuSign",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "brandId",
        "type": "String",
        "selector": ["brandId"],
        "meta": {
          "description": "Unique identifier for the brand"
        }
      },
      {
        "name": "brandName",
        "type": "String",
        "selector": ["brandName"],
        "meta": {
          "description": "Name of the brand"
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {}
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{brandId}}",
          "placeholders": [
            {
              "name": "brandId",
              "type": "String",
              "description": "The ID of the brand to retrieve",
              "required": true
            }
          ]
        },
        "headers": {}
      }
    }
  },
  {
    "handle": "envelope_documents",
    "meta": {
      "short": "Envelope Documents",
      "description": "Manage documents within a specific envelope."
    },
    "endpoint": {
      "value": "/v2.1/accounts/{{accountId}}/envelopes/{{envelopeId}}/documents",
      "placeholders": [
        {
          "name": "accountId",
          "type": "String",
          "description": "The account ID in DocuSign",
          "required": true
        },
        {
          "name": "envelopeId",
          "type": "String",
          "description": "The ID of the envelope",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "documentId",
        "type": "String",
        "selector": ["documentId"],
        "meta": {
          "description": "Unique identifier for the document"
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": ["name"],
        "meta": {
          "description": "Name of the document"
        }
      },
      {
        "name": "type",
        "type": "String",
        "selector": ["type"],
        "meta": {
          "description": "File type or document type"
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {}
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{documentId}}",
          "placeholders": [
            {
              "name": "documentId",
              "type": "String",
              "description": "The ID of the document to retrieve",
              "required": true
            }
          ]
        },
        "headers": {}
      }
    }
  },
  {
    "handle": "template_documents",
    "meta": {
      "short": "Template Documents",
      "description": "Manage documents within a specific template."
    },
    "endpoint": {
      "value": "/v2.1/accounts/{{accountId}}/templates/{{templateId}}/documents",
      "placeholders": [
        {
          "name": "accountId",
          "type": "String",
          "description": "The account ID in DocuSign",
          "required": true
        },
        {
          "name": "templateId",
          "type": "String",
          "description": "The ID of the template",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "documentId",
        "type": "String",
        "selector": ["documentId"],
        "meta": {
          "description": "Unique identifier for the document"
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": ["name"],
        "meta": {
          "description": "Name of the document"
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {}
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{documentId}}",
          "placeholders": [
            {
              "name": "documentId",
              "type": "String",
              "description": "The ID of the document to retrieve",
              "required": true
            }
          ]
        },
        "headers": {}
      }
    }
  },
  {
    "handle": "signing_groups",
    "meta": {
      "short": "Signing Groups",
      "description": "Manage signing groups for routing envelopes to a team."
    },
    "endpoint": {
      "value": "/v2.1/accounts/{{accountId}}/signing_groups",
      "placeholders": [
        {
          "name": "accountId",
          "type": "String",
          "description": "The account ID in DocuSign",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "signingGroupId",
        "type": "String",
        "selector": ["signingGroupId"],
        "meta": {
          "description": "Unique identifier for the signing group"
        }
      },
      {
        "name": "groupName",
        "type": "String",
        "selector": ["groupName"],
        "meta": {
          "description": "Name of the signing group"
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {}
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{signingGroupId}}",
          "placeholders": [
            {
              "name": "signingGroupId",
              "type": "String",
              "description": "The ID of the signing group to retrieve",
              "required": true
            }
          ]
        },
        "headers": {}
      }
    }
  }
]

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Add Document to Workspace

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Add Document to Workspace action uploads a file to a specified DocuSign workspace for storage or further processing.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to automatically add signed contracts to our team’s DocuSign workspace, so everyone can access and review them in one place.

#### Fields

| Field Name      | Field Type | Required |
| --------------- | ---------- | -------- |
| workspaceId     | String     | Yes      |
| documentName    | String     | Yes      |
| documentContent | String     | Yes      |
| accessToken     | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "add-document-to-workspace",
  "state": "inDev",
  "meta": {
    "short": "Add Document to Workspace",
    "description": "Uploads a document to a specified Docusign workspace."
  },
  "input": [
    {
      "name": "workspaceId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the workspace where the document will be added."
      }
    },
    {
      "name": "documentName",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The name of the document to be uploaded."
      }
    },
    {
      "name": "documentContent",
      "type": "String",
      "required": true,
      "meta": {
        "description": "Base64 encoded content of the document."
      }
    }
  ],
  "output": [
    {
      "name": "documentId",
      "type": "String",
      "selector": ["documentId"],
      "meta": {
        "description": "The ID of the uploaded document."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/workspaces/{{workspaceId}}/folders",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"name\": \"{{documentName}}\", \"content\": \"{{documentContent}}\"}",
          "placeholders": [
            {
              "name": "workspaceId",
              "type": "String",
              "description": "The ID of the workspace where the document will be added.",
              "required": true
            },
            {
              "name": "documentName",
              "type": "String",
              "description": "The name of the document to be uploaded.",
              "required": true
            },
            {
              "name": "documentContent",
              "type": "String",
              "description": "Base64 encoded content of the document.",
              "required": true
            },
            {
              "name": "accessToken",
              "type": "String",
              "description": "Access token for Docusign API authentication.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}
```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Add User to Workspace

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Add User to Workspace action grants a new user access to a specific DocuSign workspace.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to add new team members to our DocuSign workspace automatically, so they can immediately access and collaborate on documents.

#### Fields

| Field Name          | Field Type | Required |
| ------------------- | ---------- | -------- |
| workspaceId         | String     | Yes      |
| userId              | String     | Yes      |
| permissionProfileId | String     | Yes      |
| accessToken         | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "add-user-to-workspace",
  "state": "inDev",
  "meta": {
    "short": "Add User to Workspace",
    "description": "Adds a user to a specified workspace in DocuSign."
  },
  "input": [
    {
      "name": "workspaceId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the workspace to which the user will be added."
      }
    },
    {
      "name": "userId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the user to be added to the workspace."
      }
    },
    {
      "name": "permissionProfileId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the permission profile to assign to the user."
      }
    }
  ],
  "output": [
    {
      "name": "success",
      "type": "Boolean",
      "selector": ["success"],
      "meta": {
        "description": "Indicates whether the operation was successful."
      }
    },
    {
      "name": "workspaceUserId",
      "type": "String",
      "selector": ["workspaceUserId"],
      "meta": {
        "description": "The ID of the newly created workspace user association."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/workspaces/{{workspaceId}}/users",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"userId\": \"{{userId}}\", \"permissionProfileId\": \"{{permissionProfileId}}\"}",
          "placeholders": [
            {
              "name": "accessToken",
              "type": "String",
              "description": "The access token for authenticating with the DocuSign API.",
              "required": true
            },
            {
              "name": "workspaceId",
              "type": "String",
              "description": "The ID of the workspace to which the user will be added.",
              "required": true
            },
            {
              "name": "userId",
              "type": "String",
              "description": "The ID of the user to be added to the workspace.",
              "required": true
            },
            {
              "name": "permissionProfileId",
              "type": "String",
              "description": "The ID of the permission profile to assign to the user.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create Bulk Send List

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Create Bulk Send List action prepares a list of recipients and documents for sending multiple envelopes in bulk.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to create a bulk send list in DocuSign for monthly invoices, so I can send personalized contracts to all clients at once.

#### Fields

| Field Name       | Field Type | Required |
| ---------------- | ---------- | -------- |
| accountId        | String     | Yes      |
| bulkSendListName | String     | Yes      |
| recipients       | Array      | Yes      |
| templateId       | String     | No       |
| bulkSendListId   | String     | -        |
| status           | String     | -        |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-bulk-send-list",
  "state": "inDev",
  "meta": {
    "short": "Create Bulk Send List",
    "description": "Creates a bulk send list in DocuSign for sending documents to multiple recipients."
  },
  "input": [
    {
      "name": "accountId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The DocuSign account ID."
      }
    },
    {
      "name": "bulkSendListName",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The name of the bulk send list."
      }
    },
    {
      "name": "recipients",
      "type": "Array",
      "required": true,
      "meta": {
        "description": "List of recipient details (name, email, etc.)."
      }
    },
    {
      "name": "templateId",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The template ID to use for the bulk send."
      }
    }
  ],
  "output": [
    {
      "name": "bulkSendListId",
      "type": "String",
      "selector": ["bulkSendListId"],
      "meta": {
        "description": "The ID of the created bulk send list."
      }
    },
    {
      "name": "status",
      "type": "String",
      "selector": ["status"],
      "meta": {
        "description": "The status of the bulk send list creation."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/accounts/{{accountId}}/bulk_send_lists",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\n  \"bulkSendListName\": \"{{bulkSendListName}}\",\n  \"recipients\": {{recipients}},\n  \"templateId\": \"{{templateId}}\"\n}",
          "placeholders": [
            {
              "name": "bulkSendListName",
              "type": "String",
              "description": "Name of the bulk send list.",
              "required": true
            },
            {
              "name": "recipients",
              "type": "Array",
              "description": "List of recipient details.",
              "required": true
            },
            {
              "name": "templateId",
              "type": "String",
              "description": "Template ID for the bulk send.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create Envelope From Workspace

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Create Envelope From Workspace action generates a new signing envelope using documents already stored in a DocuSign workspace.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to create a signing envelope from our DocuSign workspace templates, so I can quickly send contracts to new clients without re-uploading files.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| templateId | String     | Yes      |
| status     | String     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-envelope-from-workspace",
  "state": "inDev",
  "meta": {
    "short": "Create Envelope From Workspace",
    "description": "Creates an envelope from a template in a Docusign workspace."
  },
  "input": [
    {
      "name": "templateId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the template to use for the envelope."
      }
    },
    {
      "name": "status",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The status of the envelope. Default is 'sent'.",
        "default": "sent"
      }
    }
  ],
  "output": [
    {
      "name": "envelopeId",
      "type": "String",
      "selector": ["envelopeId"],
      "meta": {
        "description": "The ID of the created envelope."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/accounts/{{accountId}}/envelopes",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"status\":\"{{status}}\",\"templateId\":\"{{templateId}}\"}",
          "placeholders": [
            {
              "name": "status",
              "type": "String",
              "description": "The status of the envelope.",
              "required": false,
              "default": "sent"
            },
            {
              "name": "templateId",
              "type": "String",
              "description": "The ID of the template to use for the envelope.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create Workspace

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Create Workspace action sets up a new shared folder in DocuSign for organizing and collaborating on documents.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to create a dedicated DocuSign workspace for each new project, so my team can securely store and manage all related contracts in one place.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| name        | String     | Yes      |
| description | String     | No       |
| billable    | Boolean    | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-workspace",
  "state": "inDev",
  "meta": {
    "short": "Create Workspace",
    "description": "Creates a new workspace in Docusign."
  },
  "input": [
    {
      "name": "name",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The name of the workspace."
      }
    },
    {
      "name": "description",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The description of the workspace."
      }
    },
    {
      "name": "billable",
      "type": "Boolean",
      "required": false,
      "meta": {
        "description": "Whether the workspace is billable."
      }
    }
  ],
  "output": [
    {
      "name": "workspaceId",
      "type": "String",
      "selector": ["workspaceId"],
      "meta": {
        "description": "The ID of the created workspace."
      }
    },
    {
      "name": "name",
      "type": "String",
      "selector": ["name"],
      "meta": {
        "description": "The name of the created workspace."
      }
    },
    {
      "name": "description",
      "type": "String",
      "selector": ["description"],
      "meta": {
        "description": "The description of the created workspace."
      }
    },
    {
      "name": "billable",
      "type": "Boolean",
      "selector": ["billable"],
      "meta": {
        "description": "Whether the created workspace is billable."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/workspaces",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"name\": \"{{name}}\", \"description\": \"{{description}}\", \"billable\": {{billable}}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The name of the workspace.",
              "required": true
            },
            {
              "name": "description",
              "type": "String",
              "description": "The description of the workspace.",
              "required": false
            },
            {
              "name": "billable",
              "type": "Boolean",
              "description": "Whether the workspace is billable.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Download Envelope Document

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Download Envelope Document action retrieves a completed or in-progress document from a DocuSign envelope for local storage or review.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to automatically download signed contracts from DocuSign envelopes, so I can archive them in our internal system for compliance.

#### Fields

| Field Name  | Field Type | Required         |
| ----------- | ---------- | ---------------- |
| envelopeId  | String     | Yes              |
| documentId  | String     | Yes              |
| accountId   | String     | Yes (in path)    |
| accessToken | String     | Yes (in headers) |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "download-envelope-document",
  "state": "inDev",
  "meta": {
    "short": "Download Envelope Document",
    "description": "Downloads a document from a Docusign envelope."
  },
  "input": [
    {
      "name": "envelopeId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the envelope containing the document."
      }
    },
    {
      "name": "documentId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the document to download."
      }
    }
  ],
  "output": [
    {
      "name": "document",
      "type": "Binary",
      "selector": ["body"],
      "meta": {
        "description": "The downloaded document in binary format."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v2.1/accounts/{{accountId}}/envelopes/{{envelopeId}}/documents/{{documentId}}",
        "headers": {
          "Accept": "application/pdf"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": ""
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Send Envelope Using Template

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Send Envelope Using Template action generates and sends a signing request using a pre-made DocuSign template.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to send onboarding agreements using our DocuSign template, so new hires can sign all required documents quickly and consistently.

#### Fields

| Field Name     | Field Type | Required |
| -------------- | ---------- | -------- |
| templateId     | String     | Yes      |
| recipientEmail | String     | Yes      |
| recipientName  | String     | Yes      |
| status         | String     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "send-envelope-using-template",
  "state": "inDev",
  "meta": {
    "short": "Send Envelope Using Template",
    "description": "Sends an envelope using a specified template in DocuSign."
  },
  "input": [
    {
      "name": "templateId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the template to use for the envelope."
      }
    },
    {
      "name": "recipientEmail",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The email address of the recipient."
      }
    },
    {
      "name": "recipientName",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The name of the recipient."
      }
    },
    {
      "name": "status",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The status of the envelope (e.g., 'sent', 'created').",
        "default": "sent"
      }
    }
  ],
  "output": [
    {
      "name": "envelopeId",
      "type": "String",
      "selector": ["envelopeId"],
      "meta": {
        "description": "The ID of the created envelope."
      }
    },
    {
      "name": "status",
      "type": "String",
      "selector": ["status"],
      "meta": {
        "description": "The status of the envelope."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/accounts/{{accountId}}/envelopes",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"templateId\":\"{{templateId}}\",\"status\":\"{{status}}\",\"templateRoles\":[{\"email\":\"{{recipientEmail}}\",\"name\":\"{{recipientName}}\",\"roleName\":\"signer\"}]}",
          "placeholders": [
            {
              "name": "templateId",
              "type": "String",
              "description": "The ID of the template to use for the envelope.",
              "required": true
            },
            {
              "name": "status",
              "type": "String",
              "description": "The status of the envelope.",
              "required": false,
              "default": "sent"
            },
            {
              "name": "recipientEmail",
              "type": "String",
              "description": "The email address of the recipient.",
              "required": true
            },
            {
              "name": "recipientName",
              "type": "String",
              "description": "The name of the recipient.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Cancel Maestro Workflow Instance

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Cancel Maestro Workflow Instance action cancels an active Maestro workflow instance, stopping its execution.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to cancel a running Maestro workflow instance to halt an erroneous or outdated document process.

#### Fields

| Field Name         | Field Type | Required |
| ------------------ | ---------- | -------- |
| workflowInstanceId | String     | Yes      |
| accessToken        | String     | Yes      |
| status             | String     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "cancel-maestro-workflow-instance",
  "state": "inDev",
  "meta": {
    "short": "Cancel Maestro Workflow Instance",
    "description": "Cancels a running Maestro workflow instance in Docusign."
  },
  "input": [
    {
      "name": "workflowInstanceId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the workflow instance to cancel."
      }
    }
  ],
  "output": [
    {
      "name": "status",
      "type": "String",
      "selector": ["status"],
      "meta": {
        "description": "The status of the cancellation request."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/maestro/workflowInstances/{{workflowInstanceId}}/cancel",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{}",
          "placeholders": [
            {
              "name": "accessToken",
              "type": "String",
              "description": "The access token for authenticating with Docusign.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Resume Maestro Workflow Instance

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Resume Maestro Workflow Instance action restarts a paused Maestro workflow instance, allowing it to continue processing.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to resume a paused Maestro workflow instance so that delayed document processing can continue and agreements reach recipients on time.

#### Fields

| Field Name         | Field Type | Required |
| ------------------ | ---------- | -------- |
| workflowInstanceID | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "resume-maestro-workflow-instance",
  "state": "inDev",
  "meta": {
    "short": "Resume Maestro Workflow Instance",
    "description": "Resumes a paused workflow instance in Maestro."
  },
  "input": [
    {
      "name": "workflowInstanceID",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the workflow instance to resume."
      }
    }
  ],
  "output": [
    {
      "name": "status",
      "type": "String",
      "selector": ["status"],
      "meta": {
        "description": "The status of the resumed workflow instance."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/workflow-instances/{{workflowInstanceID}}/resume",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{}"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create Pre-Filled Webform Link

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Create Pre-Filled Webform Link action generates a shareable link to a Docusign form with pre-populated fields for faster recipient completion.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to create a pre-filled webform link so recipients can quickly sign agreements without manually entering repeated data like names or addresses.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| envelopeId  | String     | Yes      |
| recipientId | String     | Yes      |
| returnUrl   | String     | No       |
| url         | String     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-pre-filled-webform-link",
  "state": "inDev",
  "meta": {
    "short": "Create Pre-Filled Webform Link",
    "description": "Generates a pre-filled webform link for a DocuSign envelope."
  },
  "input": [
    {
      "name": "envelopeId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the envelope for which the webform link is generated."
      }
    },
    {
      "name": "recipientId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the recipient for the webform link."
      }
    },
    {
      "name": "returnUrl",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The URL to redirect to after the webform is completed."
      }
    }
  ],
  "output": [
    {
      "name": "url",
      "type": "String",
      "selector": ["url"],
      "meta": {
        "description": "The generated pre-filled webform link."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/accounts/{{accountId}}/envelopes/{{envelopeId}}/views/recipient",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"returnUrl\": \"{{returnUrl}}\", \"authenticationMethod\": \"none\", \"recipientId\": \"{{recipientId}}\", \"userName\": \"{{userName}}\", \"email\": \"{{email}}\"}",
          "placeholders": [
            {
              "name": "returnUrl",
              "type": "String",
              "description": "The URL to redirect to after the webform is completed.",
              "required": false
            },
            {
              "name": "recipientId",
              "type": "String",
              "description": "The ID of the recipient for the webform link.",
              "required": true
            },
            {
              "name": "userName",
              "type": "String",
              "description": "The name of the recipient.",
              "required": true
            },
            {
              "name": "email",
              "type": "String",
              "description": "The email of the recipient.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Revoke Workspace User Access

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Cancel Maestro Workflow Instance action stops an in-progress Maestro workflow, halting any further processing or notifications.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to revoke access for former team members from our DocuSign workspaces, so only current employees can view or edit sensitive documents.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| workspaceId | String     | Yes      |
| userId      | String     | Yes      |
| accessToken | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "revoke-workspace-user-access",
  "state": "inDev",
  "meta": {
    "short": "Revoke Workspace User Access",
    "description": "Revokes a user's access to a specific workspace in DocuSign."
  },
  "input": [
    {
      "name": "workspaceId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the workspace from which to revoke user access."
      }
    },
    {
      "name": "userId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the user whose access is to be revoked."
      }
    }
  ],
  "output": [
    {
      "name": "success",
      "type": "Boolean",
      "selector": ["success"],
      "meta": {
        "description": "Indicates whether the operation was successful."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "DELETE",
        "path": "/v2.1/workspaces/{{workspaceId}}/users/{{userId}}",
        "headers": {
          "Content-Type": "application/json"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Test Bulk Send Request

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Test Bulk Send Request action validates a bulk send list and settings before actually sending envelopes, ensuring everything is configured correctly.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to test my bulk send request in DocuSign before sending, so I can confirm all recipient details and documents are correct.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| accountId  | String     | Yes      |
| templateId | String     | Yes      |
| recipients | Array      | Yes      |
| status     | String     | No       |
| bulkSendId | String     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "test-bulk-send-request",
  "state": "inDev",
  "meta": {
    "short": "Test Bulk Send Request",
    "description": "Send a bulk request to Docusign for testing purposes."
  },
  "input": [
    {
      "name": "accountId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The Docusign account ID."
      }
    },
    {
      "name": "templateId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The Docusign template ID to use for the bulk send."
      }
    },
    {
      "name": "recipients",
      "type": "Array",
      "required": true,
      "meta": {
        "description": "List of recipient details for the bulk send."
      }
    }
  ],
  "output": [
    {
      "name": "status",
      "type": "String",
      "selector": ["status"],
      "meta": {
        "description": "The status of the bulk send request."
      }
    },
    {
      "name": "bulkSendId",
      "type": "String",
      "selector": ["bulkSendId"],
      "meta": {
        "description": "The ID of the created bulk send request."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/accounts/{{accountId}}/bulk_send",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"templateId\": \"{{templateId}}\", \"recipients\": {{recipients}}}",
          "placeholders": [
            {
              "name": "templateId",
              "type": "String",
              "description": "The Docusign template ID.",
              "required": true
            },
            {
              "name": "recipients",
              "type": "Array",
              "description": "List of recipient details.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Update Workspace User

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Update Workspace User action modifies a user’s permissions or role within a specific DocuSign workspace.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to update a colleague’s permissions in our DocuSign workspace, so they can help manage and edit project documents as needed.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| accountId  | String     | Yes      |
| userId     | String     | Yes      |
| userData   | Object     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "update-workspace-user",
  "state": "inDev",
  "meta": {
    "short": "Update Workspace User",
    "description": "Updates an existing user in a Docusign workspace."
  },
  "input": [
    {
      "name": "accountId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The Docusign account ID."
      }
    },
    {
      "name": "userId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the user to update."
      }
    },
    {
      "name": "userData",
      "type": "Object",
      "required": true,
      "meta": {
        "description": "The updated user data."
      }
    }
  ],
  "output": [
    {
      "name": "updatedUser",
      "type": "Object",
      "selector": ["user"],
      "meta": {
        "description": "The updated user details."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "PUT",
        "path": "/v2.1/accounts/{{accountId}}/users/{{userId}}",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{{userData}}",
          "placeholders": [
            {
              "name": "userData",
              "type": "Object",
              "description": "The updated user data.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: API Request

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The API Request action allows you to send custom API calls to DocuSign’s platform for advanced or specialized operations.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to use a custom DocuSign API request to fetch real-time signing statuses, so I can track progress and send reminders automatically.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| method      | String     | Yes      |
| path        | String     | Yes      |
| headers     | Map        | No       |
| queryParams | Map        | No       |
| body        | String     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "api-request",
  "state": "inDev",
  "meta": {
    "short": "API Request",
    "description": "Send an API request to Docusign"
  },
  "input": [
    {
      "name": "method",
      "type": "String",
      "required": true,
      "meta": {
        "description": "HTTP method for the request"
      }
    },
    {
      "name": "path",
      "type": "String",
      "required": true,
      "meta": {
        "description": "API endpoint path"
      }
    },
    {
      "name": "headers",
      "type": "Map",
      "required": false,
      "meta": {
        "description": "HTTP headers for the request"
      }
    },
    {
      "name": "queryParams",
      "type": "Map",
      "required": false,
      "meta": {
        "description": "Query parameters for the request"
      }
    },
    {
      "name": "body",
      "type": "String",
      "required": false,
      "meta": {
        "description": "Request body"
      }
    }
  ],
  "output": [
    {
      "name": "response",
      "type": "String",
      "selector": ["body"],
      "meta": {
        "description": "Response from the API request"
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "{{method}}",
        "path": "{{path}}",
        "headers": "{{headers}}",
        "queryParams": "{{queryParams}}",
        "bodyTemplate": {
          "value": "{{body}}"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Add to Bulk Send List

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Add to Bulk Send List action includes recipients and documents in a bulk send queue for mass distribution.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to add all new clients to a bulk send list in DocuSign, so I can efficiently send welcome packets to everyone at once.

#### Fields

| Field Name     | Field Type | Required |
| -------------- | ---------- | -------- |
| bulkSendListId | String     | Yes      |
| envelopeId     | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "add-to-bulk-send-list",
  "state": "inDev",
  "meta": {
    "short": "Add to Bulk Send List",
    "description": "Adds an envelope to a bulk send list in Docusign."
  },
  "input": [
    {
      "name": "bulkSendListId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the bulk send list."
      }
    },
    {
      "name": "envelopeId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the envelope to add to the bulk send list."
      }
    }
  ],
  "output": [
    {
      "name": "success",
      "type": "Boolean",
      "selector": ["success"],
      "meta": {
        "description": "Indicates whether the operation was successful."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/accounts/{{accountId}}/bulk_send_lists/{{bulkSendListId}}/envelopes",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"envelopeId\": \"{{envelopeId}}\"}",
          "placeholders": [
            {
              "name": "envelopeId",
              "type": "String",
              "description": "The ID of the envelope to add to the bulk send list.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Bulk Send Envelope From Template

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Bulk Send Envelope From Template action sends personalized envelopes to multiple recipients using a single template.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to bulk send personalized onboarding contracts from a template to 50 new employees, so each receives their tailored agreement automatically.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| templateId | String     | Yes      |
| recipients | Array      | Yes      |
| status     | String     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "bulk-send-envelope-from-template",
  "state": "inDev",
  "meta": {
    "short": "Bulk Send Envelope From Template",
    "description": "Sends an envelope to multiple recipients using a template."
  },
  "input": [
    {
      "name": "templateId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the template to use for the envelope."
      }
    },
    {
      "name": "recipients",
      "type": "Array",
      "required": true,
      "meta": {
        "description": "List of recipient objects, each containing email, name, and roleName."
      }
    },
    {
      "name": "status",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The status of the envelope. Default is 'sent'.",
        "default": "sent"
      }
    }
  ],
  "output": [
    {
      "name": "envelopeId",
      "type": "String",
      "selector": ["envelopeId"],
      "meta": {
        "description": "The ID of the created envelope."
      }
    },
    {
      "name": "status",
      "type": "String",
      "selector": ["status"],
      "meta": {
        "description": "The status of the envelope."
      }
    },
    {
      "name": "uri",
      "type": "String",
      "selector": ["uri"],
      "meta": {
        "description": "The URI of the created envelope."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/accounts/{{accountId}}/envelopes",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"templateId\":\"{{templateId}}\",\"status\":\"{{status}}\",\"templateRoles\":{{recipients}}}",
          "placeholders": [
            {
              "name": "templateId",
              "type": "String",
              "description": "The ID of the template to use for the envelope.",
              "required": true
            },
            {
              "name": "status",
              "type": "String",
              "description": "The status of the envelope.",
              "required": false,
              "default": "sent"
            },
            {
              "name": "recipients",
              "type": "String",
              "description": "JSON array of recipient objects.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create Draft Signature Request

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Create Draft Signature Request action prepares a new envelope in Docusign with documents and recipients but does not send it yet, allowing for review or modifications before sending.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to create a draft signature request so I can review and adjust the documents and recipients before sending it out for signatures.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| templateId  | String     | Yes      |
| signerEmail | String     | Yes      |
| signerName  | String     | Yes      |
| subject     | String     | No       |
| message     | String     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-draft-signature-request",
  "state": "inDev",
  "meta": {
    "short": "Create Draft Signature Request",
    "description": "Creates a draft signature request in DocuSign"
  },
  "input": [
    {
      "name": "templateId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the template to use for the signature request"
      }
    },
    {
      "name": "signerEmail",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The email of the signer"
      }
    },
    {
      "name": "signerName",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The name of the signer"
      }
    },
    {
      "name": "subject",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The subject of the signature request email"
      }
    },
    {
      "name": "message",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The message body of the signature request email"
      }
    }
  ],
  "output": [
    {
      "name": "envelopeId",
      "type": "String",
      "selector": ["envelopeId"],
      "meta": {
        "description": "The ID of the created envelope"
      }
    },
    {
      "name": "status",
      "type": "String",
      "selector": ["status"],
      "meta": {
        "description": "The status of the created envelope"
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/accounts/{{accountId}}/envelopes",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"status\":\"created\",\"templateId\":\"{{templateId}}\",\"templateRoles\":[{\"email\":\"{{signerEmail}}\",\"name\":\"{{signerName}}\",\"roleName\":\"signer\"}],\"emailSubject\":\"{{subject}}\",\"emailBlurb\":\"{{message}}\"}",
          "placeholders": [
            {
              "name": "templateId",
              "type": "String",
              "description": "The ID of the template to use for the signature request",
              "required": true
            },
            {
              "name": "signerEmail",
              "type": "String",
              "description": "The email of the signer",
              "required": true
            },
            {
              "name": "signerName",
              "type": "String",
              "description": "The name of the signer",
              "required": true
            },
            {
              "name": "subject",
              "type": "String",
              "description": "The subject of the signature request email",
              "required": false
            },
            {
              "name": "message",
              "type": "String",
              "description": "The message body of the signature request email",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create Template from Document

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Create Template from Document action converts an uploaded document into a reusable Docusign template with defined fields, recipients, and routing rules.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to create a template from a document so I can reuse it for future signature requests without rebuilding the form each time.

#### Fields

| Field Name          | Field Type | Required |
| ------------------- | ---------- | -------- |
| accountId           | String     | Yes      |
| documentId          | String     | Yes      |
| templateName        | String     | Yes      |
| templateDescription | String     | No       |
| templateId          | String     | -        |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-template-from-document",
  "state": "inDev",
  "meta": {
    "short": "Create Template from Document",
    "description": "Creates a template from an existing document in DocuSign."
  },
  "input": [
    {
      "name": "accountId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The DocuSign account ID."
      }
    },
    {
      "name": "documentId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the document to convert into a template."
      }
    },
    {
      "name": "templateName",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The name of the new template."
      }
    },
    {
      "name": "templateDescription",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The description of the new template."
      }
    }
  ],
  "output": [
    {
      "name": "templateId",
      "type": "String",
      "selector": ["templateId"],
      "meta": {
        "description": "The ID of the created template."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/accounts/{{accountId}}/templates",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"name\":\"{{templateName}}\",\"description\":\"{{templateDescription}}\",\"documents\":[{\"documentId\":\"{{documentId}}\"}]}",
          "placeholders": [
            {
              "name": "templateName",
              "type": "String",
              "description": "The name of the new template.",
              "required": true
            },
            {
              "name": "templateDescription",
              "type": "String",
              "description": "The description of the new template.",
              "required": false
            },
            {
              "name": "documentId",
              "type": "String",
              "description": "The ID of the document to convert into a template.",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Delete Document From Workspace

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Delete Document From Workspace action permanently removes a specified document from a Docusign workspace.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to delete an outdated document from my workspace to keep my files organized and avoid confusion with current versions.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| workspaceId | String     | Yes      |
| documentId  | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "delete-document-from-workspace",
  "state": "inDev",
  "meta": {
    "short": "Delete Document From Workspace",
    "description": "Deletes a document from a specified workspace in Docusign."
  },
  "input": [
    {
      "name": "workspaceId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the workspace from which the document will be deleted."
      }
    },
    {
      "name": "documentId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the document to be deleted."
      }
    }
  ],
  "output": [
    {
      "name": "success",
      "type": "Boolean",
      "selector": ["success"],
      "meta": {
        "description": "Indicates whether the document was successfully deleted."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "DELETE",
        "path": "/v2.1/workspaces/{{workspaceId}}/folders/{{folderId}}/files/{{documentId}}",
        "headers": {
          "Content-Type": "application/json"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Send Envelope Using Document

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Send Envelope Using Document action initiates a signature request by sending a specified document to designated recipients via Docusign.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to send a contract for signature using a prepared document so the recipient can review and sign it quickly.

#### Fields

| Field Name     | Field Type | Required |
| -------------- | ---------- | -------- |
| documentId     | String     | Yes      |
| recipientEmail | String     | Yes      |
| recipientName  | String     | Yes      |
| subject        | String     | No       |
| message        | String     | No       |
| envelopeId     | String     | No       |
| status         | String     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "send-envelope-using-document",
  "state": "inDev",
  "meta": {
    "short": "Send Envelope Using Document",
    "description": "Sends an envelope using a document in Docusign."
  },
  "input": [
    {
      "name": "documentId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the document to be sent."
      }
    },
    {
      "name": "recipientEmail",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The email of the recipient."
      }
    },
    {
      "name": "recipientName",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The name of the recipient."
      }
    },
    {
      "name": "subject",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The subject of the envelope."
      }
    },
    {
      "name": "message",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The message to be included in the envelope."
      }
    }
  ],
  "output": [
    {
      "name": "envelopeId",
      "type": "String",
      "selector": ["envelopeId"],
      "meta": {
        "description": "The ID of the sent envelope."
      }
    },
    {
      "name": "status",
      "type": "String",
      "selector": ["status"],
      "meta": {
        "description": "The status of the sent envelope."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/accounts/{{accountId}}/envelopes",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\n  \"emailSubject\": \"{{subject}}\",\n  \"documents\": [\n    {\n      \"documentId\": \"{{documentId}}\",\n      \"name\": \"Document\"\n    }\n  ],\n  \"recipients\": {\n    \"signers\": [\n      {\n        \"email\": \"{{recipientEmail}}\",\n        \"name\": \"{{recipientName}}\",\n        \"recipientId\": \"1\",\n        \"routingOrder\": \"1\"\n      }\n    ]\n  },\n  \"status\": \"sent\"\n}",
          "placeholders": [
            {
              "name": "accountId",
              "type": "String",
              "description": "The ID of the Docusign account.",
              "required": true
            },
            {
              "name": "accessToken",
              "type": "String",
              "description": "The access token for Docusign API.",
              "required": true
            },
            {
              "name": "documentId",
              "type": "String",
              "description": "The ID of the document to be sent.",
              "required": true
            },
            {
              "name": "recipientEmail",
              "type": "String",
              "description": "The email of the recipient.",
              "required": true
            },
            {
              "name": "recipientName",
              "type": "String",
              "description": "The name of the recipient.",
              "required": true
            },
            {
              "name": "subject",
              "type": "String",
              "description": "The subject of the envelope.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Pause Maestro Workflow Instance

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Pause Maestro Workflow Instance action temporarily halts an active workflow to prevent further processing until resumed.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to pause a Maestro workflow instance so that I can review and adjust the document before it proceeds to the next step.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| workflowID | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "pause-maestro-workflow-instance",
  "state": "inDev",
  "meta": {
    "short": "Pause Maestro Workflow Instance",
    "description": "Pauses an active Maestro workflow instance in Corteza."
  },
  "input": [
    {
      "name": "workflowID",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the workflow instance to pause."
      }
    }
  ],
  "output": [
    {
      "name": "success",
      "type": "Boolean",
      "selector": ["success"],
      "meta": {
        "description": "Indicates whether the workflow instance was successfully paused."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/workflow/instances/{{workflowID}}/pause",
        "headers": {
          "Content-Type": "application/json"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Trigger Maestro Workflow

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Trigger Maestro Workflow action initiates a predefined Maestro workflow in DocuSign to automate document processing steps.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to trigger a Maestro workflow so that my contract gets automatically routed for approval after signing.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| workflowId | String     | Yes      |
| envelopeId | String     | Yes      |
| payload    | Object     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "trigger-maestro-workflow",
  "state": "inDev",
  "meta": {
    "short": "Trigger Maestro Workflow",
    "description": "Triggers a Maestro workflow in Docusign"
  },
  "input": [
    {
      "name": "workflowId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the Maestro workflow to trigger"
      }
    },
    {
      "name": "envelopeId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the envelope to associate with the workflow"
      }
    },
    {
      "name": "payload",
      "type": "Object",
      "required": false,
      "meta": {
        "description": "Additional payload data for the workflow"
      }
    }
  ],
  "output": [
    {
      "name": "status",
      "type": "String",
      "selector": ["status"],
      "meta": {
        "description": "Status of the triggered workflow"
      }
    },
    {
      "name": "workflowInstanceId",
      "type": "String",
      "selector": ["workflowInstanceId"],
      "meta": {
        "description": "ID of the triggered workflow instance"
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/maestro/workflows/{{workflowId}}/instances",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"envelopeId\": \"{{envelopeId}}\", \"payload\": {{payload}}}",
          "placeholders": [
            {
              "name": "envelopeId",
              "type": "String",
              "description": "The ID of the envelope to associate with the workflow",
              "required": true
            },
            {
              "name": "payload",
              "type": "Object",
              "description": "Additional payload data for the workflow",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Restore Workspace User Access

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Create Draft Signature Request action prepares a signature request as a draft, allowing you to review and edit it before sending.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to restore a team member’s access to our DocuSign workspace after their temporary leave, so they can resume managing and reviewing documents.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| workspaceId | String     | Yes      |
| userId      | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "restore-workspace-user-access",
  "state": "inDev",
  "meta": {
    "short": "Restore Workspace User Access",
    "description": "Restores user access to a workspace in Docusign."
  },
  "input": [
    {
      "name": "workspaceId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the workspace."
      }
    },
    {
      "name": "userId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the user."
      }
    }
  ],
  "output": [
    {
      "name": "success",
      "type": "Boolean",
      "selector": ["success"],
      "meta": {
        "description": "Indicates whether the operation was successful."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/workspaces/{{workspaceId}}/users/{{userId}}/restore",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{}"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create Signature Request

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Create Signature Request action generates and sends a new envelope for one or more recipients to sign electronically.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to create a signature request for a new client contract, so they can review and sign it quickly and securely.

#### Fields

| Field Name   | Field Type | Required |
| ------------ | ---------- | -------- |
| emailSubject | String     | Yes      |
| templateId   | String     | Yes      |
| recipients   | Array      | Yes      |
| status       | String     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-signature-request",
  "state": "inDev",
  "meta": {
    "short": "Create Signature Request",
    "description": "Creates a new signature request in Docusign"
  },
  "input": [
    {
      "name": "emailSubject",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The subject of the email sent to recipients"
      }
    },
    {
      "name": "templateId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the template to use for the signature request"
      }
    },
    {
      "name": "recipients",
      "type": "Array",
      "required": true,
      "meta": {
        "description": "List of recipient emails and roles"
      }
    },
    {
      "name": "status",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The status of the envelope (e.g., 'sent', 'created')",
        "default": "sent"
      }
    }
  ],
  "output": [
    {
      "name": "envelopeId",
      "type": "String",
      "selector": ["envelopeId"],
      "meta": {
        "description": "The ID of the created envelope"
      }
    },
    {
      "name": "status",
      "type": "String",
      "selector": ["status"],
      "meta": {
        "description": "The status of the envelope"
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/accounts/{{accountId}}/envelopes",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"emailSubject\":\"{{emailSubject}}\",\"templateId\":\"{{templateId}}\",\"status\":\"{{status}}\",\"templateRoles\":{{recipients}}}",
          "placeholders": [
            {
              "name": "emailSubject",
              "type": "String",
              "description": "The subject of the email sent to recipients",
              "required": true
            },
            {
              "name": "templateId",
              "type": "String",
              "description": "The ID of the template to use for the signature request",
              "required": true
            },
            {
              "name": "status",
              "type": "String",
              "description": "The status of the envelope",
              "required": false,
              "default": "sent"
            },
            {
              "name": "recipients",
              "type": "Array",
              "description": "List of recipient emails and roles",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Update Template

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Update Template action modifies an existing template, such as adding fields, changing text, or updating recipient roles.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to update our standard NDA template in DocuSign to include a new compliance clause, so all future agreements automatically reflect the latest legal requirements.

#### Fields

| Field Name          | Field Type | Required |
| ------------------- | ---------- | -------- |
| templateId          | String     | Yes      |
| templateName        | String     | No       |
| templateDescription | String     | No       |
| templateRoles       | Array      | No       |
| templateDocuments   | Array      | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "update-template",
  "state": "inDev",
  "meta": {
    "short": "Update Template",
    "description": "Updates an existing template in Docusign with the provided details."
  },
  "input": [
    {
      "name": "templateId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the template to update."
      }
    },
    {
      "name": "templateName",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The new name for the template."
      }
    },
    {
      "name": "templateDescription",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The new description for the template."
      }
    },
    {
      "name": "templateRoles",
      "type": "Array",
      "required": false,
      "meta": {
        "description": "The new roles for the template."
      }
    },
    {
      "name": "templateDocuments",
      "type": "Array",
      "required": false,
      "meta": {
        "description": "The new documents for the template."
      }
    }
  ],
  "output": [
    {
      "name": "templateId",
      "type": "String",
      "selector": ["templateId"],
      "meta": {
        "description": "The ID of the updated template."
      }
    },
    {
      "name": "templateName",
      "type": "String",
      "selector": ["name"],
      "meta": {
        "description": "The name of the updated template."
      }
    },
    {
      "name": "templateUri",
      "type": "String",
      "selector": ["uri"],
      "meta": {
        "description": "The URI of the updated template."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "PUT",
        "path": "/v2.1/accounts/{{accountId}}/templates/{{templateId}}",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{\"name\": \"{{templateName}}\", \"description\": \"{{templateDescription}}\", \"roles\": {{templateRoles}}, \"documents\": {{templateDocuments}}}",
          "placeholders": [
            {
              "name": "templateName",
              "type": "String",
              "description": "The new name for the template.",
              "required": false
            },
            {
              "name": "templateDescription",
              "type": "String",
              "description": "The new description for the template.",
              "required": false
            },
            {
              "name": "templateRoles",
              "type": "Array",
              "description": "The new roles for the template.",
              "required": false
            },
            {
              "name": "templateDocuments",
              "type": "Array",
              "description": "The new documents for the template.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Void Envelope

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Void Envelope action cancels a sent envelope, preventing any further signing or access by recipients.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to void a DocuSign envelope sent to the wrong client, so I can correct the recipient and resend the document.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| envelopeId | String     | Yes      |
| voidReason | String     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "void-envelope",
  "state": "inDev",
  "meta": {
    "short": "Void Envelope",
    "description": "Voids an envelope in DocuSign, making it unavailable for further actions."
  },
  "input": [
    {
      "name": "envelopeId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the envelope to void."
      }
    },
    {
      "name": "voidReason",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The reason for voiding the envelope."
      }
    }
  ],
  "output": [
    {
      "name": "success",
      "type": "Boolean",
      "selector": ["success"],
      "meta": {
        "description": "Indicates whether the envelope was successfully voided."
      }
    },
    {
      "name": "status",
      "type": "String",
      "selector": ["status"],
      "meta": {
        "description": "The status of the void operation."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "PUT",
        "path": {
          "value": "/v2.1/accounts/{{accountId}}/envelopes/{{envelopeId}}",
          "placeholders": [
            {
              "name": "accountId",
              "type": "String",
              "description": "The DocuSign account ID.",
              "required": true
            },
            {
              "name": "envelopeId",
              "type": "String",
              "description": "The ID of the envelope to void.",
              "required": true
            }
          ]
        },
        "headers": {
          "Content-Type": {
            "value": "application/json"
          }
        },
        "bodyTemplate": {
          "value": "{\"status\": \"voided\", \"voidedReason\": \"{{voidReason}}\"}",
          "placeholders": [
            {
              "name": "voidReason",
              "type": "String",
              "description": "The reason for voiding the envelope.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create Envelope with Base URL and Account ID Input

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Create Envelope with Base URL and Account ID Input action generates a new envelope for signing by specifying the DocuSign account and base API URL, allowing customization for different environments or accounts.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to create a signature request using our EU DocuSign account’s base URL and account ID, so the envelope is generated in the correct regional environment for compliance.

#### Fields

| Field Name         | Field Type | Required |
| ------------------ | ---------- | -------- |
| baseURL            | String     | Yes      |
| accountID          | String     | Yes      |
| envelopeDefinition | String     | Yes      |
| envelopeID         | String     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-envelope",
  "state": "inDev",
  "meta": {
    "short": "Create Envelope",
    "description": "Creates a new envelope in DocuSign with the provided base URL and account ID."
  },
  "input": [
    {
      "name": "baseURL",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The base URL for the DocuSign API."
      }
    },
    {
      "name": "accountID",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The account ID for the DocuSign account."
      }
    },
    {
      "name": "envelopeDefinition",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The envelope definition in JSON format."
      }
    }
  ],
  "output": [
    {
      "name": "envelopeID",
      "type": "String",
      "selector": ["envelopeId"],
      "meta": {
        "description": "The ID of the created envelope."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v2.1/accounts/{{accountID}}/envelopes",
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyTemplate": {
          "value": "{{envelopeDefinition}}"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Find Documents List for Envelope

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Find Documents List for Envelope query retrieves a list of all documents included in a specific DocuSign envelope.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to find the list of documents in a signed DocuSign envelope, so I can verify all required attachments were included before archiving.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| envelopeId | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "find-documents-list-for-envelope",
  "state": "inDev",
  "meta": {
    "short": "Find Documents List for Envelope",
    "description": "Retrieves the list of documents associated with a specific envelope in Docusign."
  },
  "input": [
    {
      "name": "envelopeId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the envelope for which to retrieve the documents list."
      }
    }
  ],
  "output": [
    {
      "name": "documents",
      "type": "Array",
      "selector": ["documents"],
      "meta": {
        "description": "List of documents associated with the envelope."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v2.1/accounts/{{accountId}}/envelopes/{{envelopeId}}/documents",
        "headers": {
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "",
          "placeholders": []
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Find Envelope Info

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Find Envelope Info query retrieves detailed information about a specific envelope, such as status, recipients, and timestamps.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to find the status and details of a client’s signed contract envelope, so I can confirm it’s fully executed and update our records.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| envelopeId | String     | Yes      |
| accountId  | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "find-envelope-info",
  "state": "inDev",
  "meta": {
    "short": "Find Envelope Info",
    "description": "Retrieves information about a specific envelope in DocuSign."
  },
  "input": [
    {
      "name": "envelopeId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the envelope to retrieve information for."
      }
    },
    {
      "name": "accountId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the DocuSign account."
      }
    }
  ],
  "output": [
    {
      "name": "envelopeInfo",
      "type": "Object",
      "selector": ["envelope"],
      "meta": {
        "description": "The retrieved envelope information."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v2.1/accounts/{{accountId}}/envelopes/{{envelopeId}}",
        "headers": {
          "Accept": "application/json"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Find Maestro Workflow

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Find Maestro Workflow query searches for and retrieves details about a specific workflow created in DocuSign Maestro.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to find the approval workflow for vendor contracts in DocuSign Maestro, so I can review the steps and ensure compliance with our new policy.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| workflowId | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "find-maestro-workflow",
  "state": "inDev",
  "meta": {
    "short": "Find Maestro Workflow",
    "description": "Retrieves a specific Maestro workflow from Docusign based on the provided workflow ID."
  },
  "input": [
    {
      "name": "workflowId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The unique identifier of the Maestro workflow to retrieve."
      }
    }
  ],
  "output": [
    {
      "name": "workflow",
      "type": "Object",
      "selector": ["workflow"],
      "meta": {
        "description": "The retrieved Maestro workflow details."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/maestro/workflows/{{workflowId}}",
        "headers": {
          "Content-Type": "application/json"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Find Maestro Workflow Instance

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Find Maestro Workflow Instance query retrieves the status and details of a specific running or completed instance of a Maestro workflow.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to find the current status of a purchase order approval workflow instance in DocuSign Maestro, so I can follow up with the finance team if it’s delayed.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| workflowID | String     | Yes      |
| instanceID | String     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "find-maestro-workflow-instance",
  "state": "inDev",
  "meta": {
    "short": "Find Maestro Workflow Instance",
    "description": "Finds a Maestro workflow instance by ID or other criteria."
  },
  "input": [
    {
      "name": "workflowID",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the workflow to find."
      }
    },
    {
      "name": "instanceID",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The ID of the workflow instance to find."
      }
    }
  ],
  "output": [
    {
      "name": "instance",
      "type": "Object",
      "selector": ["instance"],
      "meta": {
        "description": "The found workflow instance."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/workflows/{{workflowID}}/instances/{{instanceID}}",
        "headers": {}
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Find Template

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Find Template query searches for and retrieves a specific signing template from your DocuSign account.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to find our latest NDA template in DocuSign, so I can use it to quickly send confidential agreements to new partners.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| templateId | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "find-template",
  "state": "inDev",
  "meta": {
    "short": "Find Template",
    "description": "Retrieves a specific template from Docusign based on the provided template ID."
  },
  "input": [
    {
      "name": "templateId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The unique identifier of the template to retrieve."
      }
    }
  ],
  "output": [
    {
      "name": "template",
      "type": "Object",
      "selector": ["template"],
      "meta": {
        "description": "The retrieved template object."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v2.1/accounts/{{accountId}}/templates/{{templateId}}",
        "headers": {
          "Accept": "application/json"
        },
        "placeholders": [
          {
            "name": "accountId",
            "type": "String",
            "description": "The unique identifier of the Docusign account.",
            "required": true
          },
          {
            "name": "templateId",
            "type": "String",
            "description": "The unique identifier of the template to retrieve.",
            "required": true
          },
          {
            "name": "accessToken",
            "type": "String",
            "description": "The access token for authenticating with Docusign.",
            "required": true
          }
        ]
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Find Workspaces

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Find Workspaces query searches for and lists available workspaces in your DocuSign account.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to find all active DocuSign workspaces for my team, so I can organize and assign documents to the correct project folders.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| accountId  | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "find-workspaces",
  "state": "inDev",
  "meta": {
    "short": "Find Workspaces",
    "description": "Retrieves a list of workspaces from Docusign"
  },
  "input": [
    {
      "name": "accountId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The account ID in Docusign"
      }
    }
  ],
  "output": [
    {
      "name": "workspaces",
      "type": "Array",
      "selector": ["workspaces"],
      "meta": {
        "description": "List of workspaces retrieved from Docusign"
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v2.1/accounts/{{accountId}}/workspaces",
        "headers": {
          "Accept": "application/json"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: List Envelopes in Workspace

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The List Envelopes in Workspace query retrieves a list of envelopes associated with a specific Docusign workspace.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to list all envelopes in a workspace so I can quickly review and manage documents awaiting action or completion.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| workspaceId | String     | Yes      |
| fromDate    | String     | No       |
| toDate      | String     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "list-envelopes-in-workspace",
  "state": "inDev",
  "meta": {
    "short": "List Envelopes in Workspace",
    "description": "Retrieves a list of envelopes in a specified DocuSign workspace."
  },
  "input": [
    {
      "name": "workspaceId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the DocuSign workspace."
      }
    },
    {
      "name": "fromDate",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The start date for filtering envelopes (ISO 8601 format)."
      }
    },
    {
      "name": "toDate",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The end date for filtering envelopes (ISO 8601 format)."
      }
    }
  ],
  "output": [
    {
      "name": "envelopes",
      "type": "Array",
      "selector": ["envelopes"],
      "meta": {
        "description": "List of envelopes in the workspace."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v2.1/workspaces/{{workspaceId}}/folders",
        "headers": {
          "Content-Type": "application/json"
        },
        "queryParams": {
          "from_date": "{{fromDate}}",
          "to_date": "{{toDate}}"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Find Custom Fields for Envelope

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Find Custom Fields for Envelope query retrieves the custom data fields associated with a specific DocuSign envelope.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to find all custom fields in a signed DocuSign envelope, so I can extract and update our CRM with the latest client information.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| envelopeId  | String     | Yes      |
| accountId   | String     | Yes      |
| accessToken | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "find-custom-fields-for-envelope",
  "state": "inDev",
  "meta": {
    "short": "Find Custom Fields for Envelope",
    "description": "Retrieves custom fields associated with a specific envelope in DocuSign."
  },
  "input": [
    {
      "name": "envelopeId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The unique identifier of the envelope."
      }
    },
    {
      "name": "accountId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The unique identifier of the DocuSign account."
      }
    }
  ],
  "output": [
    {
      "name": "customFields",
      "type": "Object",
      "selector": ["customFields"],
      "meta": {
        "description": "The custom fields associated with the envelope."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v2.1/accounts/{{accountId}}/envelopes/{{envelopeId}}/custom_fields",
        "headers": {
          "Accept": "application/json"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Find Form Data for Envelope

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Find Form Data for Envelope query extracts all form field data entered by signers in a completed DocuSign envelope.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to find all form data from a signed DocuSign contract, so I can automatically update our database with the client’s selected options and details.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| envelopeId | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "find-form-data-for-envelope",
  "state": "inDev",
  "meta": {
    "short": "Find Form Data for Envelope",
    "description": "Retrieves form data associated with a specific envelope in DocuSign."
  },
  "input": [
    {
      "name": "envelopeId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The unique identifier of the envelope."
      }
    }
  ],
  "output": [
    {
      "name": "formData",
      "type": "String",
      "selector": ["formData"],
      "meta": {
        "description": "The form data associated with the envelope."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": {
          "value": "/v2.1/accounts/{{accountId}}/envelopes/{{envelopeId}}/form_data",
          "placeholders": [
            {
              "name": "accountId",
              "type": "String",
              "description": "The unique identifier of the DocuSign account.",
              "required": true
            },
            {
              "name": "envelopeId",
              "type": "String",
              "description": "The unique identifier of the envelope.",
              "required": true
            }
          ]
        },
        "headers": {
          "Content-Type": {
            "value": "application/json"
          }
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Find Recipients for Envelope

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Find Recipients for Envelope query lists all recipients (signers, cc’d parties, etc.) associated with a specific DocuSign envelope.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to find all recipients for a DocuSign envelope, so I can verify who has signed and follow up with those who haven’t.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| envelopeId | String     | Yes      |
| accountId  | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "find-recipients-for-envelope",
  "state": "inDev",
  "meta": {
    "short": "Find Recipients for Envelope",
    "description": "Retrieves the list of recipients for a specific envelope in DocuSign."
  },
  "input": [
    {
      "name": "envelopeId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The unique identifier of the envelope."
      }
    },
    {
      "name": "accountId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The unique identifier of the DocuSign account."
      }
    }
  ],
  "output": [
    {
      "name": "recipients",
      "type": "Object",
      "selector": ["recipients"],
      "meta": {
        "description": "The list of recipients for the envelope."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v2.1/accounts/{{accountId}}/envelopes/{{envelopeId}}/recipients",
        "headers": {
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "",
          "placeholders": []
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Find Navigator Agreement

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Find Navigator Agreement query searches for and retrieves a specific agreement or template within DocuSign Navigator.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to find our standard service agreement in DocuSign Navigator, so I can quickly send it to new clients for e-signature.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| agreementId | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "find-navigator-agreement",
  "state": "inDev",
  "meta": {
    "short": "Find Navigator Agreement",
    "description": "Retrieves a specific navigator agreement from DocuSign based on the provided agreement ID."
  },
  "input": [
    {
      "name": "agreementId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The unique identifier of the navigator agreement to retrieve."
      }
    }
  ],
  "output": [
    {
      "name": "agreement",
      "type": "Object",
      "selector": ["agreement"],
      "meta": {
        "description": "The retrieved navigator agreement object."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v2.1/accounts/{{accountId}}/envelopes/{{agreementId}}",
        "headers": {
          "Accept": "application/json"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Find Envelope Documents

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Find Envelope Documents query retrieves all documents associated with a specific Docusign envelope.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to find all documents in an envelope so I can review or download the complete set of signed agreements.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| envelopeId | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "find-envelope-documents",
  "state": "inDev",
  "meta": {
    "short": "Find Envelope Documents",
    "description": "Retrieves the documents associated with a specific envelope in DocuSign."
  },
  "input": [
    {
      "name": "envelopeId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the envelope to retrieve documents from."
      }
    }
  ],
  "output": [
    {
      "name": "documents",
      "type": "Array",
      "selector": ["documents"],
      "meta": {
        "description": "List of documents associated with the envelope."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v2.1/envelopes/{{envelopeId}}/documents",
        "headers": {
          "Accept": "application/json"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Find Template Documents

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Find Template Documents query retrieves all documents associated with a specific Docusign template.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to find all documents in a template so I can verify or update the files included before using it for new signature requests.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| accountId  | String     | Yes      |
| folderId   | String     | No       |
| searchText | String     | No       |
| fromDate   | String     | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "find-template-documents",
  "state": "inDev",
  "meta": {
    "short": "Find Template Documents",
    "description": "Retrieves a list of template documents from Docusign based on specified criteria."
  },
  "input": [
    {
      "name": "accountId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The Docusign account ID."
      }
    },
    {
      "name": "folderId",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The folder ID to search within."
      }
    },
    {
      "name": "searchText",
      "type": "String",
      "required": false,
      "meta": {
        "description": "Text to search for in template names."
      }
    },
    {
      "name": "fromDate",
      "type": "String",
      "required": false,
      "meta": {
        "description": "Filter templates modified after this date (ISO format)."
      }
    }
  ],
  "output": [
    {
      "name": "templates",
      "type": "Array",
      "selector": ["templates"],
      "meta": {
        "description": "List of template documents."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v2.1/accounts/{{accountId}}/templates",
        "headers": {
          "Accept": "application/json"
        },
        "queryParams": {
          "folder_id": "{{folderId}}",
          "search_text": "{{searchText}}",
          "from_date": "{{fromDate}}"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: Find Documents in Workspace

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The Find Documents in Workspace query searches for and retrieves documents stored in a specified Docusign workspace.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to find documents in my workspace so I can locate and manage specific files without scrolling through long lists.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| workspaceId | String     | Yes      |
| query       | String     | No       |
| limit       | Integer    | No       |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "find-documents-in-workspace",
  "state": "inDev",
  "meta": {
    "short": "Find Documents in Workspace",
    "description": "Search and retrieve documents from a specific workspace in Docusign."
  },
  "input": [
    {
      "name": "workspaceId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the workspace to search in."
      }
    },
    {
      "name": "query",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The search query to filter documents."
      }
    },
    {
      "name": "limit",
      "type": "Integer",
      "required": false,
      "meta": {
        "description": "Maximum number of documents to return."
      }
    }
  ],
  "output": [
    {
      "name": "documents",
      "type": "Array",
      "selector": ["documents"],
      "meta": {
        "description": "List of documents found in the workspace."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v2.1/workspaces/{{workspaceId}}/folders/search",
        "queryParams": {
          "query": "{{query}}",
          "limit": "{{limit}}"
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Query: List Users in Workspace

Docusign Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-709892634592af4a044636adeafde81dceea4e38%2FDocusign_Full_Color.svg.png?alt=media" alt=""><figcaption></figcaption></figure>

<p align="center">The List Users in Workspace query retrieves a list of all users within a specified DocuSign workspace.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to list users in a workspace so I can verify who has access before assigning document permissions.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| workspaceId | String     | Yes      |
| accountId   | String     | Yes      |

### Related Connections

[Docusign](/docusign/docusign)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "list-users-in-workspace",
  "state": "inDev",
  "meta": {
    "short": "List Users in Workspace",
    "description": "Retrieves a list of users within a specified Docusign workspace."
  },
  "input": [
    {
      "name": "workspaceId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the workspace to list users from."
      }
    },
    {
      "name": "accountId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the account associated with the workspace."
      }
    }
  ],
  "output": [
    {
      "name": "users",
      "type": "Array",
      "selector": ["users"],
      "meta": {
        "description": "List of users in the specified workspace."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "GET",
        "path": "/v2.1/accounts/{{accountId}}/workspaces/{{workspaceId}}/users",
        "headers": {
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "",
          "placeholders": []
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Figma

Figma Connection

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-789370633c7e54474aa7c6b1f5127a55d4025a26%2FFigma-logo.svg.png?alt=media" alt="" width="188"><figcaption></figcaption></figure>

<h3 align="center">Put Figma to Work with @Human Automations and @Human Agents</h3>

<p align="center">The Figma Connection documents all Triggers, Actions and Query Operations available for creating automations via the Figma API.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### What can you do with the Figma Connection?

* Connect to the Figma API in a few clicks
* Use the related Figma Operations (see below) in @Human Automations or @Human Agents

### Related Operations

#### Trigger Operations

**File Updated**

Triggers on: files/file\_updated

Triggered when a Figma file is updated.

**Comment Created**

Triggers on: comments/comment\_created

Triggered when a new comment is created on a Figma file.

#### Action Operations

[Action: Create Comment](/figma/figma/action-create-comment)

[Action: Create Image](/figma/figma/action-create-image)

[Action: Delete Comment](/figma/figma/action-delete-comment)

[Action: React to Comment](/figma/figma/action-react-to-comment)

#### Query Operations

Example link

### Related Automations

Example link

### Obtaining Access Credentials

To obtain a **Personal Access Token (PAT)** for **Figma**, follow these steps:

1. **Log in** to your Figma account at <https://www.figma.com>.
2. Click on your **profile icon** (top-left) → Select **Settings**.
3. In the upper sidebar, go to **Security.**
4. Click **Generate new token**.
5. Enter a **description** for the token (e.g., "API Access").
6. Set an **expiration date**.
7. Under **Scopes**, select the required permissions (e.g., `files:read`, `files:write`).
8. Click **Generate token**.
9. **Copy the token** immediately—it won’t be shown again. *Store it securely; treat it like a password.*

### Configuring Webhooks

1. **Generate a Personal Access Token (PAT)** in Figma with the `webhooks:write` scope enabled.
2. **Determine the scope** for your webhook (Team, Project, or File) and locate its corresponding ID.
3. **Set up a public endpoint** capable of receiving `POST` requests and returning a `200 OK` status code.
4. **Register the webhook** by sending a `POST` request to `https://api.figma.com/v2/webhooks`.
5. **Add the header** `X-Figma-Token` using your Personal Access Token as the value.
6. **Include a JSON body** specifying the `event_type`, the resource ID (`team_id`, `project_id`, or `file_id`), your `endpoint` URL, and a `passcode` for verification.
7. **Confirm registration** by verifying the automated `PING` event sent by Figma to your specified endpoint.

### Code (Apache v2.0): Service Connectivity and Metadata

```
{
  "handle": "figma",
  "status": "active",
  "meta": {
    "short": "Figma",
    "description": "Connect to Figma to manage design files, comments, and projects.",
    "icon": "figma",
    "tags": ["design", "collaboration", "api"]
  },
  "service": {
    "baseURL": {
      "value": "https://api.figma.com/v1"
    },
    "protocol": "https",
    "contentType": "application/json",
    "headers": {
      "X-Figma-Token": {
        "value": "{{apiToken}}"
      }
    },
    "auth": {
      "method": "api_token",
      "params": {
        "apiToken": {
          "token": {
            "value": "{{apiToken}}",
            "placeholders": [
              {
                "name": "apiToken",
                "type": "String",
                "description": "Figma personal access token",
                "required": true
              }
            ]
          },
          "headerName": {
            "value": "X-Figma-Token"
          }
        }
      }
    }
  }
}

```

### Code (Apache v2.0): List of External Resources and Internal Mapping

```
[
  {
    "handle": "files",
    "meta": {
      "short": "Files",
      "description": "Manage Figma design files, including retrieval, creation, and updates."
    },
    "endpoint": {
      "value": "/v1/files/{{fileKey}}",
      "placeholders": [
        {
          "name": "fileKey",
          "type": "String",
          "description": "The unique key of the Figma file",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "name",
        "type": "String",
        "selector": [
          "name"
        ],
        "meta": {
          "description": "Name of the Figma file"
        }
      },
      {
        "name": "lastModified",
        "type": "String",
        "selector": [
          "lastModified"
        ],
        "meta": {
          "description": "Last modified timestamp of the file"
        }
      },
      {
        "name": "thumbnailUrl",
        "type": "String",
        "selector": [
          "thumbnail",
          "url"
        ],
        "meta": {
          "description": "URL to the thumbnail image of the file"
        }
      },
      {
        "name": "document_id",
        "type": "String",
        "selector": [
          "document",
          "id"
        ],
        "meta": {
          "description": "ID of the root document node."
        }
      },
      {
        "name": "document_type",
        "type": "String",
        "selector": [
          "document",
          "type"
        ],
        "meta": {
          "description": "Type of the root node (always 'DOCUMENT')."
        }
      },
      {
        "name": "document_name",
        "type": "String",
        "selector": [
          "document",
          "name"
        ],
        "meta": {
          "description": "Name of the root document node."
        }
      }
    ],
    "operations": {
      "read": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}"
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "update": {
        "method": "PATCH",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}",
          "Content-Type": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"name\": \"{{name}}\"}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "New name for the file",
              "required": false
            }
          ]
        }
      }
    },
    "webhooks": [
      {
        "event": "file_updated",
        "path": "/webhooks/figma/file-updated",
        "payload": [
          {
            "name": "fileKey",
            "type": "String",
            "selector": [
              "file_key"
            ],
            "meta": {
              "description": "The unique key of the updated file"
            }
          },
          {
            "name": "timestamp",
            "type": "String",
            "selector": [
              "timestamp"
            ],
            "meta": {
              "description": "When the file was updated"
            }
          }
        ]
      }
    ]
  },
  {
    "handle": "projects",
    "meta": {
      "short": "Projects",
      "description": "Manage Figma projects, including listing files within a project."
    },
    "endpoint": {
      "value": "/v1/projects/{{projectId}}",
      "placeholders": [
        {
          "name": "projectId",
          "type": "String",
          "description": "The unique ID of the Figma project",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "name",
        "type": "String",
        "selector": [
          "name"
        ],
        "meta": {
          "description": "Name of the project"
        }
      },
      {
        "name": "files_0_key",
        "type": "String",
        "selector": [
          "files",
          0,
          "key"
        ],
        "meta": {
          "description": "Unique key of the first file in the project."
        },
        "multivalue": true
      },
      {
        "name": "files_0_name",
        "type": "String",
        "selector": [
          "files",
          0,
          "name"
        ],
        "meta": {
          "description": "Name of the first file in the project."
        },
        "multivalue": true
      },
      {
        "name": "files_0_last_modified",
        "type": "String",
        "selector": [
          "files",
          0,
          "last_modified"
        ],
        "meta": {
          "description": "Last modified timestamp of the first file."
        },
        "multivalue": true
      },
      {
        "name": "files_0_thumbnail_url",
        "type": "String",
        "selector": [
          "files",
          0,
          "thumbnail_url"
        ],
        "meta": {
          "description": "Thumbnail URL of the first file."
        },
        "multivalue": true
      }
    ],
    "operations": {
      "read": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}"
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "list": {
        "method": "GET",
        "path": {
          "value": "/files",
          "placeholders": []
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}"
        },
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": []
  },
  {
    "handle": "comments",
    "meta": {
      "short": "Comments",
      "description": "Manage comments on Figma files, including listing, creating, and resolving comments."
    },
    "endpoint": {
      "value": "/v1/files/{{fileKey}}/comments",
      "placeholders": [
        {
          "name": "fileKey",
          "type": "String",
          "description": "The unique key of the Figma file",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "Unique identifier for the comment"
        }
      },
      {
        "name": "message",
        "type": "String",
        "selector": [
          "message"
        ],
        "meta": {
          "description": "The content of the comment"
        }
      },
      {
        "name": "resolved",
        "type": "Boolean",
        "selector": [
          "resolved"
        ],
        "meta": {
          "description": "Whether the comment has been resolved"
        }
      },
      {
        "name": "createdAt",
        "type": "String",
        "selector": [
          "created_at"
        ],
        "meta": {
          "description": "Timestamp when the comment was created"
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}"
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "create": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}",
          "Content-Type": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"message\": \"{{message}}\", \"client_meta\": {\"node_id\": \"{{nodeId}}\"}}",
          "placeholders": [
            {
              "name": "message",
              "type": "String",
              "description": "The comment message",
              "required": true
            },
            {
              "name": "nodeId",
              "type": "String",
              "description": "The node ID the comment refers to",
              "required": false
            }
          ]
        }
      },
      "delete": {
        "method": "DELETE",
        "path": {
          "value": "/{{commentId}}",
          "placeholders": [
            {
              "name": "commentId",
              "type": "String",
              "description": "The ID of the comment to delete",
              "required": true
            }
          ]
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}"
        },
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": [
      {
        "event": "comment_created",
        "path": "/webhooks/figma/comment-created",
        "payload": [
          {
            "name": "fileKey",
            "type": "String",
            "selector": [
              "file_key"
            ],
            "meta": {
              "description": "The file key where the comment was created"
            }
          },
          {
            "name": "commentId",
            "type": "String",
            "selector": [
              "comment_id"
            ],
            "meta": {
              "description": "The ID of the created comment"
            }
          }
        ]
      }
    ]
  },
  {
    "handle": "file_nodes",
    "meta": {
      "short": "File Nodes",
      "description": "Read specific nodes from a Figma file."
    },
    "endpoint": {
      "value": "/v1/files/{{fileKey}}/nodes",
      "placeholders": [
        {
          "name": "fileKey",
          "type": "String",
          "description": "The unique key of the Figma file",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "name",
        "type": "String",
        "selector": [
          "name"
        ],
        "meta": {
          "description": "Name of the file"
        }
      },
      {
        "name": "lastModified",
        "type": "String",
        "selector": [
          "lastModified"
        ],
        "meta": {
          "description": "Last modified timestamp of the file"
        }
      },
      {
        "name": "thumbnailUrl",
        "type": "String",
        "selector": [
          "thumbnailUrl"
        ],
        "meta": {
          "description": "URL to the thumbnail image of the file"
        }
      },
      {
        "name": "version",
        "type": "String",
        "selector": [
          "version"
        ],
        "meta": {
          "description": "File version"
        }
      }
    ],
    "operations": {
      "read": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}"
        },
        "queryParams": {
          "ids": {
            "value": "{{ids}}",
            "placeholders": [
              {
                "name": "ids",
                "type": "String",
                "description": "Comma-separated list of nodes to retrieve",
                "required": true
              }
            ]
          }
        },
        "bodyTemplate": null
      }
    },
    "webhooks": []
  },
  {
    "handle": "images",
    "meta": {
      "short": "Images",
      "description": "Render images from a Figma file."
    },
    "endpoint": {
      "value": "/v1/images/{{fileKey}}",
      "placeholders": [
        {
          "name": "fileKey",
          "type": "String",
          "description": "The unique key of the Figma file",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "err",
        "type": "String",
        "selector": [
          "err"
        ],
        "meta": {
          "description": "Error message if any"
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}"
        },
        "queryParams": {
          "ids": {
            "value": "{{ids}}",
            "placeholders": [
              {
                "name": "ids",
                "type": "String",
                "description": "Comma-separated list of nodes to render",
                "required": true
              }
            ]
          },
          "format": {
            "value": "{{format}}",
            "placeholders": [
              {
                "name": "format",
                "type": "String",
                "description": "Image format (e.g. jpg, png, svg, pdf)",
                "required": false
              }
            ]
          }
        },
        "bodyTemplate": null
      }
    },
    "webhooks": []
  },
  {
    "handle": "teams",
    "meta": {
      "short": "Teams",
      "description": "Manage Figma teams and retrieve their projects."
    },
    "endpoint": {
      "value": "/v1/teams/{{teamId}}/projects",
      "placeholders": [
        {
          "name": "teamId",
          "type": "String",
          "description": "The unique ID of the Figma team",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "Project ID"
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": [
          "name"
        ],
        "meta": {
          "description": "Name of the project"
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}"
        },
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": []
  },
  {
    "handle": "users",
    "meta": {
      "short": "Users",
      "description": "Retrieve information about the authenticated user."
    },
    "endpoint": {
      "value": "/v1/me",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "The unique ID of the user"
        }
      },
      {
        "name": "email",
        "type": "String",
        "selector": [
          "email"
        ],
        "meta": {
          "description": "The user's email address"
        }
      },
      {
        "name": "handle",
        "type": "String",
        "selector": [
          "handle"
        ],
        "meta": {
          "description": "The user's handle"
        }
      },
      {
        "name": "img_url",
        "type": "String",
        "selector": [
          "img_url"
        ],
        "meta": {
          "description": "The URL to the user's avatar image"
        }
      }
    ],
    "operations": {
      "read": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}"
        },
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": []
  },
  {
    "handle": "webhooks",
    "meta": {
      "short": "Webhooks",
      "description": "Manage Figma webhooks."
    },
    "endpoint": {
      "value": "/v2/webhooks",
      "placeholders": []
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "The unique ID of the webhook"
        }
      },
      {
        "name": "event_type",
        "type": "String",
        "selector": [
          "event_type"
        ],
        "meta": {
          "description": "The event that triggers the webhook"
        }
      },
      {
        "name": "endpoint",
        "type": "String",
        "selector": [
          "endpoint"
        ],
        "meta": {
          "description": "The URL the webhook sends payloads to"
        }
      },
      {
        "name": "status",
        "type": "String",
        "selector": [
          "status"
        ],
        "meta": {
          "description": "The current status of the webhook"
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}"
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{webhookId}}",
          "placeholders": [
            {
              "name": "webhookId",
              "type": "String",
              "description": "The ID of the webhook",
              "required": true
            }
          ]
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}"
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "create": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}",
          "Content-Type": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"event_type\": \"{{event_type}}\", \"team_id\": \"{{team_id}}\", \"endpoint\": \"{{endpoint}}\", \"passcode\": \"{{passcode}}\"}",
          "placeholders": [
            {
              "name": "event_type",
              "type": "String",
              "description": "The event type (e.g. FILE_UPDATE, FILE_COMMENT)",
              "required": true
            },
            {
              "name": "team_id",
              "type": "String",
              "description": "The team ID to monitor",
              "required": true
            },
            {
              "name": "endpoint",
              "type": "String",
              "description": "The URL to send events to",
              "required": true
            },
            {
              "name": "passcode",
              "type": "String",
              "description": "Passcode to authenticate webhook deliveries",
              "required": true
            }
          ]
        }
      },
      "delete": {
        "method": "DELETE",
        "path": {
          "value": "/{{webhookId}}",
          "placeholders": [
            {
              "name": "webhookId",
              "type": "String",
              "description": "The ID of the webhook to delete",
              "required": true
            }
          ]
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}"
        },
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": []
  },
  {
    "handle": "variables",
    "meta": {
      "short": "Variables",
      "description": "Manage local and published design variables in a Figma file."
    },
    "endpoint": {
      "value": "/v1/files/{{fileKey}}/variables",
      "placeholders": [
        {
          "name": "fileKey",
          "type": "String",
          "description": "The unique key of the Figma file",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": [
          "id"
        ],
        "meta": {
          "description": "The unique ID of the variable"
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": [
          "name"
        ],
        "meta": {
          "description": "The name of the variable"
        }
      },
      {
        "name": "resolvedType",
        "type": "String",
        "selector": [
          "resolvedType"
        ],
        "meta": {
          "description": "The type of the variable (e.g., COLOR, FLOAT, STRING, BOOLEAN)"
        }
      }
    ],
    "operations": {
      "list_local": {
        "method": "GET",
        "path": {
          "value": "/local",
          "placeholders": []
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}"
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "list_published": {
        "method": "GET",
        "path": {
          "value": "/published",
          "placeholders": []
        },
        "headers": {
          "X-Figma-Token": "{{apiKey}}"
        },
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": []
  }
]
```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create Comment

Figma Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-789370633c7e54474aa7c6b1f5127a55d4025a26%2FFigma-logo.svg.png?alt=media" alt="" width="188"><figcaption></figcaption></figure>

<p align="center">The Create Comment action adds annotated feedback or notes directly on a design file for collaboration.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to give quick feedback on the new app button design, so I’ll use Figma’s Create Comment to pin my suggestions directly to the prototype for the team to review.

#### Fields

| Field Name  | Field Type | Required |
| ----------- | ---------- | -------- |
| fileKey     | String     | Yes      |
| message     | String     | Yes      |
| nodeId      | String     | No       |
| clientToken | String     | Yes      |

### Related Connections

[Figma](/figma/figma)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-comment",
  "state": "inDev",
  "meta": {
    "short": "Create Comment",
    "description": "Creates a new comment on a Figma file or frame."
  },
  "input": [
    {
      "name": "fileKey",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The key of the Figma file where the comment will be created."
      }
    },
    {
      "name": "message",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The content of the comment."
      }
    },
    {
      "name": "nodeId",
      "type": "String",
      "required": false,
      "meta": {
        "description": "The ID of the node (frame, group, etc.) to attach the comment to. If omitted, the comment will be on the entire file."
      }
    },
    {
      "name": "clientToken",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The client token for authentication with the Figma API."
      }
    }
  ],
  "output": [
    {
      "name": "commentId",
      "type": "String",
      "selector": ["id"],
      "meta": {
        "description": "The ID of the created comment."
      }
    },
    {
      "name": "comment",
      "type": "Object",
      "selector": [],
      "meta": {
        "description": "The full comment object returned by the Figma API."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "https://api.figma.com/v1/files/{{fileKey}}/comments",
        "headers": {
          "Content-Type": "application/json",
          "X-Figma-Token": "{{clientToken}}"
        },
        "bodyTemplate": {
          "value": "{\"message\": \"{{message}}\", \"node_id\": \"{{nodeId}}\"}",
          "placeholders": [
            {
              "name": "message",
              "type": "String",
              "description": "The content of the comment.",
              "required": true
            },
            {
              "name": "nodeId",
              "type": "String",
              "description": "The ID of the node to attach the comment to.",
              "required": false
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Create Image

Figma Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-789370633c7e54474aa7c6b1f5127a55d4025a26%2FFigma-logo.svg.png?alt=media" alt="" width="188"><figcaption></figcaption></figure>

<p align="center">The Create Image action generates or imports visual assets (like icons, illustrations, or graphics) directly into a design file.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to add a custom icon to my app’s homepage mockup, so I’ll use Figma’s Create Image action to upload and place it directly in the design file.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| imageName  | String     | Yes      |
| imageData  | String     | Yes      |

### Related Connections

[Figma](/figma/figma)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "create-image",
  "state": "inDev",
  "meta": {
    "short": "Create Image",
    "description": "Create an image using Figma's API"
  },
  "input": [
    {
      "name": "imageName",
      "type": "String",
      "required": true,
      "meta": {
        "description": "Name of the image to be created"
      }
    },
    {
      "name": "imageData",
      "type": "String",
      "required": true,
      "meta": {
        "description": "Base64 encoded image data"
      }
    }
  ],
  "output": [
    {
      "name": "imageId",
      "type": "String",
      "selector": ["id"],
      "meta": {
        "description": "ID of the created image"
      }
    },
    {
      "name": "imageUrl",
      "type": "String",
      "selector": ["url"],
      "meta": {
        "description": "URL of the created image"
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "POST",
        "path": "/v1/images",
        "headers": {
          "Content-Type": "application/json",
          "X-Figma-Token": "{{.auth.token}}"
        },
        "bodyTemplate": {
          "value": "{\"name\": \"{{.input.imageName}}\", \"data\": \"{{.input.imageData}}\"}",
          "placeholders": [
            {
              "name": "imageName",
              "type": "String",
              "description": "Name of the image to be created",
              "required": true
            },
            {
              "name": "imageData",
              "type": "String",
              "description": "Base64 encoded image data",
              "required": true
            }
          ]
        }
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


# Action: Delete Comment

Figma Operation

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscriptions</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="https://173051806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEFQVbo960GBdKqZMghCQ%2Fuploads%2Fgit-blob-789370633c7e54474aa7c6b1f5127a55d4025a26%2FFigma-logo.svg.png?alt=media" alt="" width="188"><figcaption></figcaption></figure>

<p align="center">The Delete Comment action removes annotated feedback or notes from a design file to keep discussions clean and relevant.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### Example User Story

I want to clean up outdated feedback on our finalized wireframe, so I’ll use Figma’s Delete Comment action to remove resolved notes and keep the file organized.

#### Fields

| Field Name | Field Type | Required |
| ---------- | ---------- | -------- |
| fileKey    | String     | Yes      |
| commentId  | String     | Yes      |

### Related Connections

[Figma](/figma/figma)

### Related Automations

Example link

### Code (Apache v2.0): Operation

```
{
  "handle": "delete-comment",
  "state": "inDev",
  "meta": {
    "short": "Delete Comment",
    "description": "Deletes a specific comment from a Figma file."
  },
  "input": [
    {
      "name": "fileKey",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The key of the Figma file containing the comment."
      }
    },
    {
      "name": "commentId",
      "type": "String",
      "required": true,
      "meta": {
        "description": "The ID of the comment to delete."
      }
    }
  ],
  "output": [
    {
      "name": "status",
      "type": "String",
      "selector": ["status"],
      "meta": {
        "description": "The status of the deletion operation."
      }
    }
  ],
  "steps": [
    {
      "type": "http",
      "http": {
        "method": "DELETE",
        "path": "/v1/files/{{fileKey}}/comments/{{commentId}}",
        "headers": {}
      }
    }
  ]
}

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>




---

[Next Page](https://docs.planetcrust.com/llms-full.txt/1)

