API reference
Build on your plan.
Base URL: https://api.todos.sh
Send Authorization: Bearer YOUR_API_KEY. Create a scoped key in your workspace. Public system and OAuth discovery endpoints need no key.
curl https://api.todos.sh/me \
-H "Authorization: Bearer $TODOS_KEY"List endpoints return { data: [...], cursor?: string }. Pass the cursor to get the next page. The maximum page size is 100. Mutation requests support the Idempotency-Key header; reusing it with a different body fails.
Each API key or connected app can make 300 calls a minute on Free, 1,500 on Starter, and 5,000 on Pro. Every response carries RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset, the seconds until the full budget is back. A 429 response includes Retry-After. A monthly ceiling per workspace stops runaway scripts: the Todos-Quota-Limit, Todos-Quota-Remaining, and Todos-Quota-Reset headers report it, and a 402 response includes Retry-After until it resets on the first of the month.
Errors use application/problem+json. Expand each response below to inspect the full JSON Schema.
Attachments
POST /workspaces/{workspace}/attachments
Upload an attachment
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
multipart/form-data
{
"type": "object",
"properties": {
"file": {
"type": "string",
"format": "binary"
},
"issue_id": {
"type": "string"
},
"comment_id": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"file"
]
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"issue_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"comment_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"r2_key": {
"type": "string"
},
"name": {
"type": "string"
},
"size": {
"type": "number",
"format": "integer"
},
"content_type": {
"type": "string"
},
"uploader_id": {
"type": "string"
},
"created_at": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"id",
"issue_id",
"comment_id",
"r2_key",
"name",
"size",
"content_type",
"uploader_id",
"created_at"
]
}402 Payment Required
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}415 Unsupported Media Type
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /workspaces/{workspace}/attachments/{id}
Download an attachment
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}DELETE /workspaces/{workspace}/attachments/{id}
Delete an attachment
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
204 No Content
404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}Billing
GET /workspaces/{workspace}/billing
Get workspace billing
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{}POST /workspaces/{workspace}/billing/checkout
Create a Stripe checkout
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"enum": [
"starter",
"pro"
]
},
"interval": {
"type": "string",
"enum": [
"month",
"year"
],
"default": "month"
}
},
"additionalProperties": false,
"required": [
"plan"
]
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"url"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /workspaces/{workspace}/billing/portal
Create a Stripe billing portal
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {},
"additionalProperties": false
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"url"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /workspaces/{workspace}/billing/change
Change the plan of a subscription
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"enum": [
"starter",
"pro"
]
},
"interval": {
"type": "string",
"enum": [
"month",
"year"
],
"default": "month"
}
},
"additionalProperties": false,
"required": [
"plan"
]
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"url"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}Comments
GET /workspaces/{workspace}/issues/{key}/comments
List the comments of an issue by key or ID
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"issue_id": {
"type": "string"
},
"author_id": {
"type": "string"
},
"body": {
"type": "string"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"deleted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"issue_id",
"author_id",
"body",
"created_at",
"updated_at",
"deleted_at"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}POST /workspaces/{workspace}/issues/{key}/comments
Comment on an issue by key or ID
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"body": {
"type": "string",
"minLength": 1,
"maxLength": 100000
}
},
"additionalProperties": false,
"required": [
"body"
]
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"issue_id": {
"type": "string"
},
"author_id": {
"type": "string"
},
"body": {
"type": "string"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"deleted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"issue_id",
"author_id",
"body",
"created_at",
"updated_at",
"deleted_at"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /workspaces/{workspace}/issues/{key}/comments/{id}
Get a comment on an issue by key or ID
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"issue_id": {
"type": "string"
},
"author_id": {
"type": "string"
},
"body": {
"type": "string"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"deleted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"issue_id",
"author_id",
"body",
"created_at",
"updated_at",
"deleted_at"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}PATCH /workspaces/{workspace}/issues/{key}/comments/{id}
Update a comment on an issue by key or ID
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"body": {
"type": "string",
"minLength": 1,
"maxLength": 100000
}
},
"additionalProperties": false,
"required": [
"body"
]
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"issue_id": {
"type": "string"
},
"author_id": {
"type": "string"
},
"body": {
"type": "string"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"deleted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"issue_id",
"author_id",
"body",
"created_at",
"updated_at",
"deleted_at"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}DELETE /workspaces/{workspace}/issues/{key}/comments/{id}
Delete a comment on an issue by key or ID
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
204 No Content
403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}Events
GET /workspaces/{workspace}/events
Subscribe to workspace events
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
No request body.
Responses
101 Switching Protocols
426 Upgrade Required
application/json
{
"type": "null"
}Imports
POST /workspaces/{workspace}/imports
Import a batch from another tracker
Keeps issue keys, numbers, dates, states, labels, projects, sub-issues, comments, and state changes such as closes and reopens. Every record carries its id in the source as `ref`; a record imported before is skipped, so an import can run again after a failure. Send people with every batch that uses them. People match members by email or linked GitHub account; the others keep their names on the work they created. A state change without a known person goes to an agent named after the source. The last close of an issue sets its close time. Imports send no webhooks or notifications. Only admins can import.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"source": {
"type": "string",
"enum": [
"github",
"linear"
]
},
"people": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ref": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"type": "string",
"maxLength": 320
},
"github": {
"type": "string",
"maxLength": 40
}
},
"additionalProperties": false,
"required": [
"ref",
"name"
]
},
"maxItems": 2000
},
"teams": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ref": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"key": {
"type": "string",
"pattern": "^[A-Za-z0-9]{2,6}$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"description": {
"type": "string",
"maxLength": 100000
},
"states": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ref": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"kind": {
"type": "string",
"enum": [
"backlog",
"open",
"started",
"completed",
"canceled"
]
},
"position": {
"type": "number",
"minimum": 0,
"format": "integer"
}
},
"additionalProperties": false,
"required": [
"ref",
"name",
"kind",
"position"
]
},
"maxItems": 50
}
},
"additionalProperties": false,
"required": [
"ref",
"key",
"name"
]
},
"maxItems": 50
},
"labels": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ref": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"team_ref": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"color": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
}
},
"additionalProperties": false,
"required": [
"ref",
"name",
"color"
]
},
"maxItems": 500
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ref": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"team_ref": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"description": {
"type": "string",
"maxLength": 100000
},
"status": {
"type": "string",
"enum": [
"planned",
"active",
"paused",
"completed",
"canceled"
]
},
"lead_ref": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"start_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"target_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"ref",
"name",
"status",
"created_at"
]
},
"maxItems": 500
},
"issues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ref": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"team_ref": {
"type": "string"
},
"number": {
"type": "number",
"minimum": 1,
"format": "integer"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"description": {
"type": "string",
"maxLength": 200000
},
"state_ref": {
"type": "string"
},
"state_kind": {
"type": "string",
"enum": [
"backlog",
"open",
"started",
"completed",
"canceled"
]
},
"priority": {
"type": "number",
"minimum": 0,
"maximum": 4,
"format": "integer"
},
"assignee_ref": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"creator_ref": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"project_ref": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"parent_ref": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"label_refs": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 50
},
"due_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"completed_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"canceled_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"ref",
"team_ref",
"number",
"title",
"created_at",
"updated_at"
]
},
"maxItems": 250
},
"comments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ref": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"issue_ref": {
"type": "string"
},
"author_ref": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"body": {
"type": "string",
"minLength": 1,
"maxLength": 200000
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"ref",
"issue_ref",
"body",
"created_at"
]
},
"maxItems": 1000
},
"events": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ref": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"issue_ref": {
"type": "string"
},
"actor_ref": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"state_ref": {
"type": "string"
},
"state_kind": {
"type": "string",
"enum": [
"backlog",
"open",
"started",
"completed",
"canceled"
]
},
"created_at": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"ref",
"issue_ref",
"state_kind",
"created_at"
]
},
"maxItems": 1000
}
},
"additionalProperties": false,
"required": [
"source"
]
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"created": {
"type": "object",
"properties": {
"teams": {
"type": "number",
"format": "integer"
},
"states": {
"type": "number",
"format": "integer"
},
"labels": {
"type": "number",
"format": "integer"
},
"projects": {
"type": "number",
"format": "integer"
},
"issues": {
"type": "number",
"format": "integer"
},
"comments": {
"type": "number",
"format": "integer"
},
"events": {
"type": "number",
"format": "integer"
}
},
"additionalProperties": false,
"required": [
"teams",
"states",
"labels",
"projects",
"issues",
"comments",
"events"
]
},
"skipped": {
"type": "object",
"properties": {
"teams": {
"type": "number",
"format": "integer"
},
"states": {
"type": "number",
"format": "integer"
},
"labels": {
"type": "number",
"format": "integer"
},
"projects": {
"type": "number",
"format": "integer"
},
"issues": {
"type": "number",
"format": "integer"
},
"comments": {
"type": "number",
"format": "integer"
},
"events": {
"type": "number",
"format": "integer"
}
},
"additionalProperties": false,
"required": [
"teams",
"states",
"labels",
"projects",
"issues",
"comments",
"events"
]
}
},
"additionalProperties": false,
"required": [
"created",
"skipped"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}Invitations
POST /invitations/{token}/accept
Accept a workspace invitation
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
token | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"user_id": {
"type": "string"
},
"workspace_id": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
}
},
"additionalProperties": false,
"required": [
"user_id",
"workspace_id",
"role"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /workspaces/{workspace}/invitations
List workspace invitations
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
limit | query | No | |
cursor | query | No | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"workspace_id": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
},
"token_hash": {
"type": "string"
},
"expires_at": {
"type": "number"
},
"accepted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"workspace_id",
"email",
"role",
"token_hash",
"expires_at"
]
}
},
"cursor": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"data"
]
}POST /workspaces/{workspace}/invitations
Invite a workspace member
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email"
},
"role": {
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
],
"default": "member"
}
},
"additionalProperties": false,
"required": [
"email"
]
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"workspace_id": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
},
"token_hash": {
"type": "string"
},
"expires_at": {
"type": "number"
},
"accepted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"workspace_id",
"email",
"role",
"token_hash",
"expires_at"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}DELETE /workspaces/{workspace}/invitations/{id}
Revoke a workspace invitation
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
204 No Content
403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}Issues
GET /workspaces/{workspace}/issues
List or search visible issues
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
team_id | query | No | |
project_id | query | No | |
state | query | No | |
assignee_id | query | No | |
label_id | query | No | |
parent_id | query | No | |
ancestor_id | query | No | |
archived | query | No | |
cursor | query | No | |
limit | query | No | |
q | query | No | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"number": {
"type": "number",
"format": "integer"
},
"key": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"state_id": {
"type": "string"
},
"priority": {
"type": "number",
"format": "integer"
},
"assignee_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"creator_id": {
"type": "string"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"due_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"completed_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"canceled_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_with": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"number",
"key",
"title",
"description",
"state_id",
"priority",
"assignee_id",
"creator_id",
"project_id",
"parent_id",
"due_at",
"estimate",
"position",
"created_at",
"updated_at",
"completed_at",
"canceled_at",
"archived_at",
"archived_with",
"labels"
]
}
},
"cursor": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"data"
]
}POST /workspaces/{workspace}/issues
Create an issue
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"team_id": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"state_id": {
"type": "string"
},
"priority": {
"type": "number",
"default": 0
},
"assignee_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"due_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"required": [
"team_id",
"title"
]
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"number": {
"type": "number",
"format": "integer"
},
"key": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"state_id": {
"type": "string"
},
"priority": {
"type": "number",
"format": "integer"
},
"assignee_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"creator_id": {
"type": "string"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"due_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"completed_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"canceled_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_with": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"number",
"key",
"title",
"description",
"state_id",
"priority",
"assignee_id",
"creator_id",
"project_id",
"parent_id",
"due_at",
"estimate",
"position",
"created_at",
"updated_at",
"completed_at",
"canceled_at",
"archived_at",
"archived_with",
"labels"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}PATCH /workspaces/{workspace}/issues/bulk
Bulk update issues
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
}
},
"patch": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"state_id": {
"type": "string"
},
"priority": {
"type": "number",
"format": "integer"
},
"assignee_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"due_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"additionalProperties": false,
"required": [
"ids",
"patch"
]
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"number": {
"type": "number",
"format": "integer"
},
"key": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"state_id": {
"type": "string"
},
"priority": {
"type": "number",
"format": "integer"
},
"assignee_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"creator_id": {
"type": "string"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"due_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"completed_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"canceled_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_with": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"number",
"key",
"title",
"description",
"state_id",
"priority",
"assignee_id",
"creator_id",
"project_id",
"parent_id",
"due_at",
"estimate",
"position",
"created_at",
"updated_at",
"completed_at",
"canceled_at",
"archived_at",
"archived_with",
"labels"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /workspaces/{workspace}/issues/{key}
Get a visible issue by key or ID
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"number": {
"type": "number",
"format": "integer"
},
"key": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"state_id": {
"type": "string"
},
"priority": {
"type": "number",
"format": "integer"
},
"assignee_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"creator_id": {
"type": "string"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"due_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"completed_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"canceled_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_with": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"number",
"key",
"title",
"description",
"state_id",
"priority",
"assignee_id",
"creator_id",
"project_id",
"parent_id",
"due_at",
"estimate",
"position",
"created_at",
"updated_at",
"completed_at",
"canceled_at",
"archived_at",
"archived_with",
"labels"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}PATCH /workspaces/{workspace}/issues/{key}
Update an issue by key or ID
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"state_id": {
"type": "string"
},
"priority": {
"type": "number",
"format": "integer"
},
"assignee_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"due_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"number": {
"type": "number",
"format": "integer"
},
"key": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"state_id": {
"type": "string"
},
"priority": {
"type": "number",
"format": "integer"
},
"assignee_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"creator_id": {
"type": "string"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"due_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"completed_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"canceled_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_with": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"number",
"key",
"title",
"description",
"state_id",
"priority",
"assignee_id",
"creator_id",
"project_id",
"parent_id",
"due_at",
"estimate",
"position",
"created_at",
"updated_at",
"completed_at",
"canceled_at",
"archived_at",
"archived_with",
"labels"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}DELETE /workspaces/{workspace}/issues/{key}
Delete an issue by key or ID for good, with its comments, files, and activity
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
Request body
No request body.
Responses
204 No Content
403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /workspaces/{workspace}/issues/{key}/archive
Archive an issue by key or ID, with its live sub-issues; they leave default lists and stay read-only until unarchived
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"dry_run": {
"type": "boolean"
}
},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"number": {
"type": "number",
"format": "integer"
},
"key": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"state_id": {
"type": "string"
},
"priority": {
"type": "number",
"format": "integer"
},
"assignee_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"creator_id": {
"type": "string"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"due_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"completed_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"canceled_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_with": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
},
"sub_issues": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"number",
"key",
"title",
"description",
"state_id",
"priority",
"assignee_id",
"creator_id",
"project_id",
"parent_id",
"due_at",
"estimate",
"position",
"created_at",
"updated_at",
"completed_at",
"canceled_at",
"archived_at",
"archived_with",
"labels",
"sub_issues"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /workspaces/{workspace}/issues/{key}/unarchive
Unarchive an issue by key or ID, with the sub-issues that its archive archived
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"dry_run": {
"type": "boolean"
}
},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"number": {
"type": "number",
"format": "integer"
},
"key": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"state_id": {
"type": "string"
},
"priority": {
"type": "number",
"format": "integer"
},
"assignee_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"creator_id": {
"type": "string"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"due_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"completed_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"canceled_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_with": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
},
"sub_issues": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"number",
"key",
"title",
"description",
"state_id",
"priority",
"assignee_id",
"creator_id",
"project_id",
"parent_id",
"due_at",
"estimate",
"position",
"created_at",
"updated_at",
"completed_at",
"canceled_at",
"archived_at",
"archived_with",
"labels",
"sub_issues"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /workspaces/{workspace}/issues/{key}/move
Move an issue by key or ID to a team
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"team_id": {
"type": "string"
},
"state_id": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"team_id"
]
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"number": {
"type": "number",
"format": "integer"
},
"key": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"state_id": {
"type": "string"
},
"priority": {
"type": "number",
"format": "integer"
},
"assignee_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"creator_id": {
"type": "string"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"due_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"completed_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"canceled_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_with": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"number",
"key",
"title",
"description",
"state_id",
"priority",
"assignee_id",
"creator_id",
"project_id",
"parent_id",
"due_at",
"estimate",
"position",
"created_at",
"updated_at",
"completed_at",
"canceled_at",
"archived_at",
"archived_with",
"labels"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /workspaces/{workspace}/issues/{key}/activity
List the activity of an issue by key or ID
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
limit | query | No | |
cursor | query | No | |
Request body
No request body.
Responses
200 OK
application/json
{}GET /workspaces/{workspace}/issues/{key}/view
Get an issue with everything its page shows
One read for an issue page: the issue, its comments, up to 100 activity rows from the cursor, sub-issues, and the labels, states, projects, teams, and people its fields use.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
cursor | query | No | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"workspace_id": {
"type": "string"
},
"actor": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
}
},
"additionalProperties": false,
"required": [
"id",
"role"
]
},
"issue": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"number": {
"type": "number",
"format": "integer"
},
"key": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"state_id": {
"type": "string"
},
"priority": {
"type": "number",
"format": "integer"
},
"assignee_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"creator_id": {
"type": "string"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"due_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"completed_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"canceled_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_with": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"number",
"key",
"title",
"description",
"state_id",
"priority",
"assignee_id",
"creator_id",
"project_id",
"parent_id",
"due_at",
"estimate",
"position",
"created_at",
"updated_at",
"completed_at",
"canceled_at",
"archived_at",
"archived_with",
"labels"
]
},
"comments": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"issue_id": {
"type": "string"
},
"author_id": {
"type": "string"
},
"body": {
"type": "string"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"deleted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"issue_id",
"author_id",
"body",
"created_at",
"updated_at",
"deleted_at"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
},
"activity": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {}
},
"cursor": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"data"
]
},
"labels": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"color": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"color"
]
}
},
"members": {
"type": "array",
"items": {
"type": "object",
"properties": {
"user_id": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
},
"name": {
"type": "string"
},
"avatar": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"joined_at": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"user_id",
"role",
"name",
"avatar",
"joined_at"
]
}
},
"agents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"updated_at": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"id",
"name",
"updated_at"
]
}
},
"states": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"name": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"backlog",
"open",
"started",
"completed",
"canceled"
]
},
"position": {
"type": "number",
"format": "integer"
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"kind",
"position"
]
}
},
"flows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"name": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"backlog",
"open",
"started",
"completed",
"canceled"
]
},
"position": {
"type": "number",
"format": "integer"
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"kind",
"position"
]
}
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"planned",
"active",
"paused",
"completed",
"canceled"
]
},
"lead_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"start_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"target_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pinned": {
"type": "boolean"
},
"progress": {
"type": "object",
"properties": {
"done": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"done",
"total"
]
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"description",
"status",
"lead_id",
"start_at",
"target_at",
"created_at",
"archived_at",
"pinned",
"progress"
]
}
},
"linked": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"planned",
"active",
"paused",
"completed",
"canceled"
]
},
"lead_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"start_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"target_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pinned": {
"type": "boolean"
},
"progress": {
"type": "object",
"properties": {
"done": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"done",
"total"
]
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"description",
"status",
"lead_id",
"start_at",
"target_at",
"created_at",
"archived_at",
"pinned",
"progress"
]
},
{
"type": "null"
}
]
},
"teams": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"visibility": {
"type": "string",
"enum": [
"public",
"private"
]
},
"issue_seq": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"access": {
"type": "object",
"properties": {
"member": {
"type": "boolean"
},
"lead": {
"type": "boolean"
},
"granted": {
"type": "boolean"
}
},
"additionalProperties": false,
"required": [
"member",
"lead",
"granted"
]
},
"member_count": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"id",
"key",
"name",
"description",
"visibility",
"issue_seq",
"created_at",
"archived_at",
"access",
"member_count"
]
}
},
"home": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"visibility": {
"type": "string",
"enum": [
"public",
"private"
]
},
"issue_seq": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"access": {
"type": "object",
"properties": {
"member": {
"type": "boolean"
},
"lead": {
"type": "boolean"
},
"granted": {
"type": "boolean"
}
},
"additionalProperties": false,
"required": [
"member",
"lead",
"granted"
]
}
},
"additionalProperties": false,
"required": [
"id",
"key",
"name",
"description",
"visibility",
"issue_seq",
"created_at",
"archived_at",
"access"
]
},
{
"type": "null"
}
]
},
"following": {
"type": "boolean"
},
"parent": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"number": {
"type": "number",
"format": "integer"
},
"key": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"state_id": {
"type": "string"
},
"priority": {
"type": "number",
"format": "integer"
},
"assignee_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"creator_id": {
"type": "string"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"due_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"completed_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"canceled_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_with": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"number",
"key",
"title",
"description",
"state_id",
"priority",
"assignee_id",
"creator_id",
"project_id",
"parent_id",
"due_at",
"estimate",
"position",
"created_at",
"updated_at",
"completed_at",
"canceled_at",
"archived_at",
"archived_with",
"labels"
]
},
{
"type": "null"
}
]
},
"descendants": {
"type": "array",
"items": {
"type": "string"
}
},
"children": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"number": {
"type": "number",
"format": "integer"
},
"key": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"state_id": {
"type": "string"
},
"priority": {
"type": "number",
"format": "integer"
},
"assignee_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"creator_id": {
"type": "string"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"due_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"created_at": {
"type": "number"
},
"updated_at": {
"type": "number"
},
"completed_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"canceled_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"archived_with": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"number",
"key",
"title",
"description",
"state_id",
"priority",
"assignee_id",
"creator_id",
"project_id",
"parent_id",
"due_at",
"estimate",
"position",
"created_at",
"updated_at",
"completed_at",
"canceled_at",
"archived_at",
"archived_with",
"labels"
]
}
}
},
"additionalProperties": false,
"required": [
"workspace_id",
"actor",
"issue",
"comments",
"activity",
"labels",
"members",
"agents",
"states",
"flows",
"projects",
"linked",
"teams",
"home",
"following",
"parent",
"descendants",
"children"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}Keys
GET /me/keys
List personal API keys
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
limit | query | No | |
cursor | query | No | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"owner": {
"type": "string",
"enum": [
"user",
"workspace"
]
},
"user_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"workspace_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"prefix": {
"type": "string"
},
"hash": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"workspaces": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"role": {
"anyOf": [
{
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
},
{
"type": "null"
}
]
},
"teams": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"enum": [
"personal",
"workspace",
"oauth"
]
},
"oauth_client_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"last_used_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"rotated_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"revoke_after": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"revoked_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"owner",
"name",
"prefix",
"hash",
"scopes",
"workspaces",
"teams",
"kind",
"last_used_at",
"created_at"
]
}
},
"cursor": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"data"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /me/keys
Create a personal API key
Parameters
No parameters.
Request body
Required
application/json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"scopes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"attachments:read",
"attachments:write",
"billing:manage",
"comments:write",
"issues:read",
"issues:write",
"keys:manage",
"labels:write",
"members:manage",
"members:read",
"projects:read",
"projects:write",
"read",
"teams:read",
"teams:write",
"webhooks:manage",
"workspaces:read",
"workspaces:write",
"write"
]
}
},
"workspaces": {
"anyOf": [
{
"const": "*"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"teams": {
"type": "array",
"items": {
"type": "string"
}
},
"expires_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"name",
"scopes"
]
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"key": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"owner": {
"type": "string",
"enum": [
"user",
"workspace"
]
},
"user_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"workspace_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"prefix": {
"type": "string"
},
"hash": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"workspaces": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"role": {
"anyOf": [
{
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
},
{
"type": "null"
}
]
},
"teams": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"enum": [
"personal",
"workspace",
"oauth"
]
},
"oauth_client_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"last_used_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"rotated_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"revoke_after": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"revoked_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"owner",
"name",
"prefix",
"hash",
"scopes",
"workspaces",
"teams",
"kind",
"last_used_at",
"created_at"
]
},
"secret": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"key",
"secret"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /me/keys/{id}/rotate
Rotate a personal API key
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"grace": {
"type": "string"
}
},
"additionalProperties": false
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"key": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"owner": {
"type": "string",
"enum": [
"user",
"workspace"
]
},
"user_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"workspace_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"prefix": {
"type": "string"
},
"hash": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"workspaces": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"role": {
"anyOf": [
{
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
},
{
"type": "null"
}
]
},
"teams": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"enum": [
"personal",
"workspace",
"oauth"
]
},
"oauth_client_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"last_used_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"rotated_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"revoke_after": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"revoked_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"owner",
"name",
"prefix",
"hash",
"scopes",
"workspaces",
"teams",
"kind",
"last_used_at",
"created_at"
]
},
"secret": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"key",
"secret"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}PATCH /me/keys/{id}
Edit a personal API key
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"scopes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"attachments:read",
"attachments:write",
"billing:manage",
"comments:write",
"issues:read",
"issues:write",
"keys:manage",
"labels:write",
"members:manage",
"members:read",
"projects:read",
"projects:write",
"read",
"teams:read",
"teams:write",
"webhooks:manage",
"workspaces:read",
"workspaces:write",
"write"
]
}
},
"workspaces": {
"anyOf": [
{
"const": "*"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
}
},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"owner": {
"type": "string",
"enum": [
"user",
"workspace"
]
},
"user_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"workspace_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"prefix": {
"type": "string"
},
"hash": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"workspaces": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"role": {
"anyOf": [
{
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
},
{
"type": "null"
}
]
},
"teams": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"enum": [
"personal",
"workspace",
"oauth"
]
},
"oauth_client_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"last_used_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"rotated_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"revoke_after": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"revoked_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"owner",
"name",
"prefix",
"hash",
"scopes",
"workspaces",
"teams",
"kind",
"last_used_at",
"created_at"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}DELETE /me/keys/{id}
Delete a personal API key
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
id | path | Yes | |
Request body
No request body.
Responses
204 No Content
403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /workspaces/{workspace}/keys
List workspace API keys
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
limit | query | No | |
cursor | query | No | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"owner": {
"type": "string",
"enum": [
"user",
"workspace"
]
},
"user_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"workspace_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"prefix": {
"type": "string"
},
"hash": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"workspaces": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"role": {
"anyOf": [
{
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
},
{
"type": "null"
}
]
},
"teams": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"enum": [
"personal",
"workspace",
"oauth"
]
},
"oauth_client_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"last_used_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"rotated_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"revoke_after": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"revoked_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"owner",
"name",
"prefix",
"hash",
"scopes",
"workspaces",
"teams",
"kind",
"last_used_at",
"created_at"
]
}
},
"cursor": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"data"
]
}POST /workspaces/{workspace}/keys
Create a workspace API key
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"scopes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"attachments:read",
"attachments:write",
"billing:manage",
"comments:write",
"issues:read",
"issues:write",
"keys:manage",
"labels:write",
"members:manage",
"members:read",
"projects:read",
"projects:write",
"read",
"teams:read",
"teams:write",
"webhooks:manage",
"workspaces:read",
"workspaces:write",
"write"
]
}
},
"role": {
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
},
"teams": {
"type": "array",
"items": {
"type": "string"
}
},
"expires_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"name",
"scopes",
"role"
]
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"key": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"owner": {
"type": "string",
"enum": [
"user",
"workspace"
]
},
"user_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"workspace_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"prefix": {
"type": "string"
},
"hash": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"workspaces": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"role": {
"anyOf": [
{
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
},
{
"type": "null"
}
]
},
"teams": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"enum": [
"personal",
"workspace",
"oauth"
]
},
"oauth_client_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"last_used_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"rotated_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"revoke_after": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"revoked_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"owner",
"name",
"prefix",
"hash",
"scopes",
"workspaces",
"teams",
"kind",
"last_used_at",
"created_at"
]
},
"secret": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"key",
"secret"
]
}POST /workspaces/{workspace}/keys/{id}/rotate
Rotate a workspace API key
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"grace": {
"type": "string"
}
},
"additionalProperties": false
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"key": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"owner": {
"type": "string",
"enum": [
"user",
"workspace"
]
},
"user_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"workspace_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"prefix": {
"type": "string"
},
"hash": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"workspaces": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"role": {
"anyOf": [
{
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
},
{
"type": "null"
}
]
},
"teams": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"enum": [
"personal",
"workspace",
"oauth"
]
},
"oauth_client_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"last_used_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"rotated_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"revoke_after": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"revoked_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"owner",
"name",
"prefix",
"hash",
"scopes",
"workspaces",
"teams",
"kind",
"last_used_at",
"created_at"
]
},
"secret": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"key",
"secret"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}PATCH /workspaces/{workspace}/keys/{id}
Edit a workspace API key
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"scopes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"attachments:read",
"attachments:write",
"billing:manage",
"comments:write",
"issues:read",
"issues:write",
"keys:manage",
"labels:write",
"members:manage",
"members:read",
"projects:read",
"projects:write",
"read",
"teams:read",
"teams:write",
"webhooks:manage",
"workspaces:read",
"workspaces:write",
"write"
]
}
}
},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"owner": {
"type": "string",
"enum": [
"user",
"workspace"
]
},
"user_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"workspace_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"prefix": {
"type": "string"
},
"hash": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"workspaces": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"role": {
"anyOf": [
{
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
},
{
"type": "null"
}
]
},
"teams": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"enum": [
"personal",
"workspace",
"oauth"
]
},
"oauth_client_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"last_used_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"rotated_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"revoke_after": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"revoked_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"owner",
"name",
"prefix",
"hash",
"scopes",
"workspaces",
"teams",
"kind",
"last_used_at",
"created_at"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}DELETE /workspaces/{workspace}/keys/{id}
Delete a workspace API key
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
204 No Content
404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}Labels
GET /workspaces/{workspace}/labels
List visible labels
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"color": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"color"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}POST /workspaces/{workspace}/labels
Create a label
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"color": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"team_id",
"name",
"color"
]
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"color": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"color"
]
}GET /workspaces/{workspace}/labels/{id}
Get a visible label
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"color": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"color"
]
}PATCH /workspaces/{workspace}/labels/{id}
Update a label
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"color": {
"type": "string"
}
},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"color": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"color"
]
}DELETE /workspaces/{workspace}/labels/{id}
Delete a label
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
204 No Content
Me
GET /me/notification-settings
Get your notification settings
Parameters
No parameters.
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"email": {
"type": "string",
"enum": [
"off",
"batched",
"daily"
],
"default": "\"batched\""
},
"assigned": {
"type": "boolean",
"default": true
},
"mentioned": {
"type": "boolean",
"default": true
},
"commented": {
"type": "boolean",
"default": true
},
"status": {
"type": "boolean",
"default": true
},
"agents": {
"type": "boolean",
"default": true
}
},
"additionalProperties": false,
"required": [
"email",
"assigned",
"mentioned",
"commented",
"status",
"agents"
]
}401 Unauthorized
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}PATCH /me/notification-settings
Change your notification settings
`email` sets how often notification email goes out. Each kind turns its email on or off. `agents` decides whether changes made through API keys notify you.
Parameters
No parameters.
Request body
Required
application/json
{
"type": "object",
"properties": {
"email": {
"type": "string",
"enum": [
"off",
"batched",
"daily"
],
"default": "\"batched\""
},
"assigned": {
"type": "boolean",
"default": true
},
"mentioned": {
"type": "boolean",
"default": true
},
"commented": {
"type": "boolean",
"default": true
},
"status": {
"type": "boolean",
"default": true
},
"agents": {
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"email": {
"type": "string",
"enum": [
"off",
"batched",
"daily"
],
"default": "\"batched\""
},
"assigned": {
"type": "boolean",
"default": true
},
"mentioned": {
"type": "boolean",
"default": true
},
"commented": {
"type": "boolean",
"default": true
},
"status": {
"type": "boolean",
"default": true
},
"agents": {
"type": "boolean",
"default": true
}
},
"additionalProperties": false,
"required": [
"email",
"assigned",
"mentioned",
"commented",
"status",
"agents"
]
}401 Unauthorized
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /me
Get the current user
Parameters
No parameters.
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"avatar": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"id",
"name",
"email",
"avatar",
"created_at"
]
}401 Unauthorized
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}PATCH /me
Update the current user's profile
Session only. Also updates the member record in every workspace the user belongs to.
Parameters
No parameters.
Request body
Required
application/json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"avatar": {
"anyOf": [
{
"type": "string",
"maxLength": 2048,
"pattern": "^https://"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"avatar": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"id",
"name",
"email",
"avatar",
"created_at"
]
}401 Unauthorized
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /me/workspaces
List the current user's workspaces
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
limit | query | No | |
cursor | query | No | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"owner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"plan": {
"type": "string",
"enum": [
"free",
"pro",
"starter"
]
},
"stripe_customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"stripe_subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"storage_bytes": {
"type": "number",
"format": "integer"
},
"storage_limit_bytes": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"deleted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"role": {
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
}
},
"additionalProperties": false,
"required": [
"id",
"slug",
"name",
"owner_id",
"plan",
"stripe_customer_id",
"stripe_subscription_id",
"storage_bytes",
"storage_limit_bytes",
"created_at",
"role"
]
}
},
"cursor": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"data"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}Members
GET /workspaces/{workspace}/members
List workspace members
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"user_id": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
},
"name": {
"type": "string"
},
"avatar": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"joined_at": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"user_id",
"role",
"name",
"avatar",
"joined_at"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /workspaces/{workspace}/agents
List workspace agents
Workspace keys that changed work in this workspace, with their latest names. Activity, comments, and issues use these ids as actors.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"updated_at": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"id",
"name",
"updated_at"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}PATCH /workspaces/{workspace}/members/{id}
Update a member role
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"role": {
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
}
},
"additionalProperties": false,
"required": [
"role"
]
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"user_id": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
},
"name": {
"type": "string"
},
"avatar": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"joined_at": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"user_id",
"role",
"name",
"avatar",
"joined_at"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}DELETE /workspaces/{workspace}/members/{id}
Remove a workspace member
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
204 No Content
403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}Notifications
POST /unsubscribe
Stop notification email
Uses the signed token from a notification email link. Turns notification email off for that user.
Parameters
No parameters.
Request body
Required
application/json
{
"type": "object",
"properties": {
"token": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"token"
]
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"email": {
"const": "off"
}
},
"additionalProperties": false,
"required": [
"email"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /workspaces/{workspace}/notifications
List your notifications
Newest first, with the count of unread notifications. Your notification settings decide whether changes made through API keys appear.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
unread | query | No | |
cursor | query | No | |
limit | query | No | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"assigned",
"mentioned",
"commented",
"status"
]
},
"comment_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"read_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"issue": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"key": {
"type": "string"
},
"title": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"id",
"key",
"title"
]
},
"actor": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"user",
"key"
]
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"kind",
"name"
]
}
},
"additionalProperties": false,
"required": [
"id",
"kind",
"comment_id",
"created_at",
"read_at",
"issue",
"actor"
]
}
},
"cursor": {
"type": "string"
},
"unread": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"data",
"unread"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /workspaces/{workspace}/notifications/read
Mark notifications read
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
}
},
"issue": {
"type": "string"
}
},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"read": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"read"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}DELETE /workspaces/{workspace}/notifications/{id}
Delete a notification
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
204 No Content
404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /workspaces/{workspace}/issues/{key}/subscription
Tell whether you follow an issue by key or ID
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"following": {
"type": "boolean"
}
},
"additionalProperties": false,
"required": [
"following"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}PUT /workspaces/{workspace}/issues/{key}/subscription
Follow an issue by key or ID
Followers hear about comments and when the issue is done or canceled.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"following": {
"type": "boolean"
}
},
"additionalProperties": false,
"required": [
"following"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}DELETE /workspaces/{workspace}/issues/{key}/subscription
Stop following an issue by key or ID
You still hear when someone assigns or mentions you on the issue.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
key | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"following": {
"type": "boolean"
}
},
"additionalProperties": false,
"required": [
"following"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}OAuth
GET /.well-known/oauth-authorization-server
Discover the OAuth authorization server
Parameters
No parameters.
Request body
No request body.
Responses
200 OK
application/json
{}POST /oauth/register
Register a public OAuth client
Parameters
No parameters.
Request body
Required
application/json
{
"type": "object",
"properties": {
"client_name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"redirect_uris": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
},
"token_endpoint_auth_method": {
"const": "none"
},
"grant_types": {
"type": "array",
"items": {
"const": "authorization_code"
}
},
"response_types": {
"type": "array",
"items": {
"const": "code"
}
},
"client_uri": {
"type": "string"
},
"logo_uri": {
"type": "string"
},
"contacts": {
"type": "array",
"items": {
"type": "string"
}
},
"tos_uri": {
"type": "string"
},
"policy_uri": {
"type": "string"
},
"software_id": {
"type": "string"
},
"software_version": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"client_name",
"redirect_uris"
]
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"client_name": {
"type": "string"
},
"redirect_uris": {
"type": "array",
"items": {
"type": "string"
}
},
"token_endpoint_auth_method": {
"const": "none"
},
"grant_types": {
"type": "array",
"items": {
"const": "authorization_code"
}
},
"response_types": {
"type": "array",
"items": {
"const": "code"
}
},
"client_uri": {
"type": "string"
},
"logo_uri": {
"type": "string"
},
"contacts": {
"type": "array",
"items": {
"type": "string"
}
},
"tos_uri": {
"type": "string"
},
"policy_uri": {
"type": "string"
},
"software_id": {
"type": "string"
},
"software_version": {
"type": "string"
},
"client_id": {
"type": "string"
},
"client_id_issued_at": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"client_name",
"redirect_uris",
"token_endpoint_auth_method",
"grant_types",
"response_types",
"client_id",
"client_id_issued_at"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /oauth/authorize
Start OAuth authorization
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
response_type | query | Yes | |
client_id | query | Yes | |
redirect_uri | query | Yes | |
code_challenge | query | Yes | |
code_challenge_method | query | Yes | |
scope | query | No | |
state | query | No | |
Request body
No request body.
Responses
303 See Other
application/json
{
"type": "null"
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /oauth/token
Exchange an OAuth authorization code
Parameters
No parameters.
Request body
Required
application/json
{
"type": "object",
"properties": {
"grant_type": {
"const": "authorization_code"
},
"code": {
"type": "string"
},
"client_id": {
"type": "string"
},
"redirect_uri": {
"type": "string"
},
"code_verifier": {
"type": "string",
"pattern": "^[A-Za-z0-9._~-]{43,128}$"
}
},
"additionalProperties": false,
"required": [
"grant_type",
"code",
"client_id",
"redirect_uri",
"code_verifier"
]
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"access_token": {
"type": "string"
},
"token_type": {
"const": "Bearer"
},
"scope": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"access_token",
"token_type",
"scope"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /oauth/revoke
Revoke an OAuth access token
Parameters
No parameters.
Request body
Required
application/json
{
"type": "object",
"properties": {
"token": {
"type": "string"
},
"token_type_hint": {
"const": "access_token"
}
},
"additionalProperties": false,
"required": [
"token"
]
}Responses
200 OK
application/json
{
"type": "object",
"properties": {},
"additionalProperties": false
}POST /oauth/consent
Approve OAuth access
Parameters
No parameters.
Request body
Required
application/json
{
"type": "object",
"properties": {
"response_type": {
"const": "code"
},
"client_id": {
"type": "string"
},
"redirect_uri": {
"type": "string"
},
"code_challenge": {
"type": "string"
},
"code_challenge_method": {
"const": "S256"
},
"scope": {
"type": "string"
},
"state": {
"type": "string"
},
"workspaces": {
"type": "array",
"items": {
"type": "string"
}
},
"scopes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"workspaces:read",
"workspaces:write",
"members:read",
"members:manage",
"teams:read",
"teams:write",
"projects:read",
"projects:write",
"issues:read",
"issues:write",
"comments:write",
"labels:write",
"attachments:read",
"attachments:write",
"webhooks:manage",
"keys:manage",
"billing:manage"
]
}
}
},
"additionalProperties": false,
"required": [
"response_type",
"client_id",
"redirect_uri",
"code_challenge",
"code_challenge_method",
"workspaces",
"scopes"
]
}Responses
303 See Other
application/json
{
"type": "null"
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}Projects
GET /workspaces/{workspace}/projects
List visible projects, only the ones you pinned, or only archived ones
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
pinned | query | No | |
archived | query | No | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"planned",
"active",
"paused",
"completed",
"canceled"
]
},
"lead_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"start_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"target_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pinned": {
"type": "boolean"
},
"progress": {
"type": "object",
"properties": {
"done": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"done",
"total"
]
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"description",
"status",
"lead_id",
"start_at",
"target_at",
"created_at",
"archived_at",
"pinned",
"progress"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}POST /workspaces/{workspace}/projects
Create a project
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"planned",
"active",
"paused",
"completed",
"canceled"
]
},
"lead_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"start_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"target_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"team_id",
"name",
"description",
"status",
"lead_id",
"start_at",
"target_at"
]
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"planned",
"active",
"paused",
"completed",
"canceled"
]
},
"lead_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"start_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"target_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"description",
"status",
"lead_id",
"start_at",
"target_at",
"created_at",
"archived_at"
]
}GET /workspaces/{workspace}/projects/{id}
Get a visible project
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"planned",
"active",
"paused",
"completed",
"canceled"
]
},
"lead_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"start_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"target_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pinned": {
"type": "boolean"
},
"progress": {
"type": "object",
"properties": {
"done": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"done",
"total"
]
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"description",
"status",
"lead_id",
"start_at",
"target_at",
"created_at",
"archived_at",
"pinned",
"progress"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}PATCH /workspaces/{workspace}/projects/{id}
Update a project
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"planned",
"active",
"paused",
"completed",
"canceled"
]
},
"lead_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"start_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"target_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"planned",
"active",
"paused",
"completed",
"canceled"
]
},
"lead_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"start_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"target_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"description",
"status",
"lead_id",
"start_at",
"target_at",
"created_at",
"archived_at"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}DELETE /workspaces/{workspace}/projects/{id}
Delete a project for good; its issues stay without a project
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
204 No Content
404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /workspaces/{workspace}/projects/{id}/archive
Archive a project; it keeps its issues and stays read-only until unarchived
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"planned",
"active",
"paused",
"completed",
"canceled"
]
},
"lead_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"start_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"target_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"description",
"status",
"lead_id",
"start_at",
"target_at",
"created_at",
"archived_at"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /workspaces/{workspace}/projects/{id}/unarchive
Unarchive a project
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"planned",
"active",
"paused",
"completed",
"canceled"
]
},
"lead_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"start_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"target_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"description",
"status",
"lead_id",
"start_at",
"target_at",
"created_at",
"archived_at"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}PUT /workspaces/{workspace}/projects/{id}/pin
Pin a project to your sidebar
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"planned",
"active",
"paused",
"completed",
"canceled"
]
},
"lead_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"start_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"target_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pinned": {
"type": "boolean"
},
"progress": {
"type": "object",
"properties": {
"done": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"done",
"total"
]
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"description",
"status",
"lead_id",
"start_at",
"target_at",
"created_at",
"archived_at",
"pinned",
"progress"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}DELETE /workspaces/{workspace}/projects/{id}/pin
Unpin a project from your sidebar
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"planned",
"active",
"paused",
"completed",
"canceled"
]
},
"lead_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"start_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"target_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pinned": {
"type": "boolean"
},
"progress": {
"type": "object",
"properties": {
"done": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"done",
"total"
]
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"description",
"status",
"lead_id",
"start_at",
"target_at",
"created_at",
"archived_at",
"pinned",
"progress"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}Stripe
POST /stripe/webhook
Process a Stripe webhook
Parameters
No parameters.
Request body
Required
application/json
{
"type": "object",
"properties": {},
"additionalProperties": false
}Responses
204 No Content
400 Bad Request
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}System
GET /health
Check API health
Parameters
No parameters.
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"ok": {
"const": true
}
},
"additionalProperties": false,
"required": [
"ok"
]
}GET /openapi.json
Get the OpenAPI document
Parameters
No parameters.
Request body
No request body.
Responses
200 OK
application/json
{}Teams
GET /workspaces/{workspace}/teams
List visible teams, or only archived ones
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
archived | query | No | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"visibility": {
"type": "string",
"enum": [
"public",
"private"
]
},
"issue_seq": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"access": {
"type": "object",
"properties": {
"member": {
"type": "boolean"
},
"lead": {
"type": "boolean"
},
"granted": {
"type": "boolean"
}
},
"additionalProperties": false,
"required": [
"member",
"lead",
"granted"
]
},
"member_count": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"id",
"key",
"name",
"description",
"visibility",
"issue_seq",
"created_at",
"archived_at",
"access",
"member_count"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}POST /workspaces/{workspace}/teams
Create a team
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string",
"maxLength": 100000
},
"visibility": {
"type": "string",
"enum": [
"public",
"private"
],
"default": "public"
}
},
"additionalProperties": false,
"required": [
"key",
"name"
]
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"visibility": {
"type": "string",
"enum": [
"public",
"private"
]
},
"issue_seq": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"key",
"name",
"description",
"visibility",
"issue_seq",
"created_at",
"archived_at"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /workspaces/{workspace}/teams/{id}
Get a visible team
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"visibility": {
"type": "string",
"enum": [
"public",
"private"
]
},
"issue_seq": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"access": {
"type": "object",
"properties": {
"member": {
"type": "boolean"
},
"lead": {
"type": "boolean"
},
"granted": {
"type": "boolean"
}
},
"additionalProperties": false,
"required": [
"member",
"lead",
"granted"
]
}
},
"additionalProperties": false,
"required": [
"id",
"key",
"name",
"description",
"visibility",
"issue_seq",
"created_at",
"archived_at",
"access"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}PATCH /workspaces/{workspace}/teams/{id}
Update a team
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"visibility": {
"type": "string",
"enum": [
"public",
"private"
]
}
},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"visibility": {
"type": "string",
"enum": [
"public",
"private"
]
},
"issue_seq": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"key",
"name",
"description",
"visibility",
"issue_seq",
"created_at",
"archived_at"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}DELETE /workspaces/{workspace}/teams/{id}
Delete a team with no issues for good; its projects become shared projects
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
204 No Content
403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /workspaces/{workspace}/teams/{id}/archive
Archive a team with no live issues; it stays read-only until unarchived
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"visibility": {
"type": "string",
"enum": [
"public",
"private"
]
},
"issue_seq": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"key",
"name",
"description",
"visibility",
"issue_seq",
"created_at",
"archived_at"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /workspaces/{workspace}/teams/{id}/unarchive
Unarchive a team
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"visibility": {
"type": "string",
"enum": [
"public",
"private"
]
},
"issue_seq": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"archived_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"key",
"name",
"description",
"visibility",
"issue_seq",
"created_at",
"archived_at"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /workspaces/{workspace}/teams/{id}/members
List team members
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"user_id": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"lead",
"member"
]
},
"team_id": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"user_id",
"role",
"team_id"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /workspaces/{workspace}/teams/{id}/grants
List guest team access
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"user_id": {
"type": "string"
},
"team_id": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"user_id",
"team_id"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}PUT /workspaces/{workspace}/teams/{id}/members/{user}
Add or update a team member
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
user | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"role": {
"type": "string",
"enum": [
"lead",
"member"
]
}
},
"additionalProperties": false,
"required": [
"role"
]
}Responses
200 OK
application/json
{}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}DELETE /workspaces/{workspace}/teams/{id}/members/{user}
Remove a team member
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
user | path | Yes | |
Request body
No request body.
Responses
204 No Content
403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}PUT /workspaces/{workspace}/teams/{id}/grants/{user}
Grant team access
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
user | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {},
"additionalProperties": false
}Responses
200 OK
application/json
{}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}DELETE /workspaces/{workspace}/teams/{id}/grants/{user}
Revoke team access
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
user | path | Yes | |
Request body
No request body.
Responses
204 No Content
403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /workspaces/{workspace}/workflow-states
List workflow states for every visible team
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"name": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"backlog",
"open",
"started",
"completed",
"canceled"
]
},
"position": {
"type": "number",
"format": "integer"
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"kind",
"position"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}GET /workspaces/{workspace}/teams/{id}/workflow-states
List workflow states
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"name": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"backlog",
"open",
"started",
"completed",
"canceled"
]
},
"position": {
"type": "number",
"format": "integer"
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"kind",
"position"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}POST /workspaces/{workspace}/teams/{id}/workflow-states
Create a workflow state
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"backlog",
"open",
"started",
"completed",
"canceled"
]
},
"position": {
"type": "number",
"format": "integer"
}
},
"additionalProperties": false,
"required": [
"name",
"kind",
"position"
]
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"name": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"backlog",
"open",
"started",
"completed",
"canceled"
]
},
"position": {
"type": "number",
"format": "integer"
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"kind",
"position"
]
}PATCH /workspaces/{workspace}/teams/{team}/workflow-states/{id}
Update a workflow state
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
team | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"backlog",
"open",
"started",
"completed",
"canceled"
]
}
},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"name": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"backlog",
"open",
"started",
"completed",
"canceled"
]
},
"position": {
"type": "number",
"format": "integer"
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"kind",
"position"
]
}DELETE /workspaces/{workspace}/teams/{team}/workflow-states/{id}
Delete a workflow state
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
team | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
204 No Content
POST /workspaces/{workspace}/teams/{id}/workflow-states/reorder
Reorder workflow states
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"required": [
"ids"
]
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"name": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"backlog",
"open",
"started",
"completed",
"canceled"
]
},
"position": {
"type": "number",
"format": "integer"
}
},
"additionalProperties": false,
"required": [
"id",
"team_id",
"name",
"kind",
"position"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}Trials
POST /trials
Start a trial workspace
Needs no account. Returns a workspace key and a claim link. A person opens the link and signs in to keep the workspace; unclaimed workspaces are deleted after 7 days. One address can start 3 trials a day. The key cannot manage members, webhooks, keys, billing, or upload files.
Parameters
No parameters.
Request body
Required
application/json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"default": "Scratchpad"
},
"agent": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"default": "Agent"
}
},
"additionalProperties": false
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"workspace": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"owner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"plan": {
"type": "string",
"enum": [
"free",
"pro",
"starter"
]
},
"stripe_customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"stripe_subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"storage_bytes": {
"type": "number",
"format": "integer"
},
"storage_limit_bytes": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"deleted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"slug",
"name",
"owner_id",
"plan",
"stripe_customer_id",
"stripe_subscription_id",
"storage_bytes",
"storage_limit_bytes",
"created_at"
]
},
"key": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"owner": {
"type": "string",
"enum": [
"user",
"workspace"
]
},
"user_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"workspace_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"prefix": {
"type": "string"
},
"hash": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"workspaces": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"role": {
"anyOf": [
{
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
},
{
"type": "null"
}
]
},
"teams": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"enum": [
"personal",
"workspace",
"oauth"
]
},
"oauth_client_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"last_used_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"rotated_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"revoke_after": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "number"
},
"revoked_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"owner",
"name",
"prefix",
"hash",
"scopes",
"workspaces",
"teams",
"kind",
"last_used_at",
"created_at"
]
},
"secret": {
"type": "string"
},
"claim_url": {
"type": "string"
},
"expires_at": {
"type": "number",
"format": "integer"
}
},
"additionalProperties": false,
"required": [
"workspace",
"key",
"secret",
"claim_url",
"expires_at"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}429 Too Many Requests
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /trials/{token}
Read a trial workspace by claim token
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
token | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"workspace": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"owner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"plan": {
"type": "string",
"enum": [
"free",
"pro",
"starter"
]
},
"stripe_customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"stripe_subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"storage_bytes": {
"type": "number",
"format": "integer"
},
"storage_limit_bytes": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"deleted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"slug",
"name",
"owner_id",
"plan",
"stripe_customer_id",
"stripe_subscription_id",
"storage_bytes",
"storage_limit_bytes",
"created_at"
]
},
"expires_at": {
"type": "number",
"format": "integer"
},
"contents": {
"type": "object",
"properties": {
"teams": {
"type": "number",
"format": "integer"
},
"projects": {
"type": "number",
"format": "integer"
},
"issues": {
"type": "number",
"format": "integer"
},
"comments": {
"type": "number",
"format": "integer"
}
},
"additionalProperties": false,
"required": [
"teams",
"projects",
"issues",
"comments"
]
},
"recent": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"title": {
"type": "string"
},
"state": {
"type": "string",
"enum": [
"backlog",
"open",
"started",
"completed",
"canceled"
]
}
},
"additionalProperties": false,
"required": [
"key",
"title",
"state"
]
}
}
},
"additionalProperties": false,
"required": [
"workspace",
"expires_at",
"contents",
"recent"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /trials/{token}/claim
Claim a trial workspace
Makes the signed-in person the owner and an admin. Only a web session can claim. The trial key keeps working.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
token | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"owner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"plan": {
"type": "string",
"enum": [
"free",
"pro",
"starter"
]
},
"stripe_customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"stripe_subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"storage_bytes": {
"type": "number",
"format": "integer"
},
"storage_limit_bytes": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"deleted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"slug",
"name",
"owner_id",
"plan",
"stripe_customer_id",
"stripe_subscription_id",
"storage_bytes",
"storage_limit_bytes",
"created_at"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}Webhooks
GET /workspaces/{workspace}/webhooks
List webhooks
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"events": {
"type": "array",
"items": {
"type": "string",
"enum": [
"comment.*",
"comment.created",
"comment.deleted",
"comment.updated",
"issue.*",
"issue.created",
"issue.deleted",
"issue.updated",
"label.*",
"label.created",
"label.deleted",
"label.updated",
"member.*",
"member.added",
"member.removed",
"member.updated",
"project.*",
"project.created",
"project.deleted",
"project.updated",
"team.*",
"team.created",
"team.deleted",
"team.updated",
"webhook.*",
"webhook.disabled"
]
}
},
"active": {
"type": "boolean"
},
"failures": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"id",
"url",
"events",
"active",
"failures",
"created_at"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}POST /workspaces/{workspace}/webhooks
Create a webhook
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"events": {
"type": "array",
"items": {
"type": "string",
"enum": [
"comment.created",
"comment.deleted",
"comment.updated",
"issue.created",
"issue.deleted",
"issue.updated",
"label.created",
"label.deleted",
"label.updated",
"member.added",
"member.removed",
"member.updated",
"project.created",
"project.deleted",
"project.updated",
"team.created",
"team.deleted",
"team.updated",
"webhook.disabled"
]
}
}
},
"additionalProperties": false,
"required": [
"url",
"events"
]
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"webhook": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"events": {
"type": "array",
"items": {
"type": "string",
"enum": [
"comment.*",
"comment.created",
"comment.deleted",
"comment.updated",
"issue.*",
"issue.created",
"issue.deleted",
"issue.updated",
"label.*",
"label.created",
"label.deleted",
"label.updated",
"member.*",
"member.added",
"member.removed",
"member.updated",
"project.*",
"project.created",
"project.deleted",
"project.updated",
"team.*",
"team.created",
"team.deleted",
"team.updated",
"webhook.*",
"webhook.disabled"
]
}
},
"active": {
"type": "boolean"
},
"failures": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"id",
"url",
"events",
"active",
"failures",
"created_at"
]
},
"secret": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"webhook",
"secret"
]
}GET /workspaces/{workspace}/webhooks/{id}
Get a webhook
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"events": {
"type": "array",
"items": {
"type": "string",
"enum": [
"comment.*",
"comment.created",
"comment.deleted",
"comment.updated",
"issue.*",
"issue.created",
"issue.deleted",
"issue.updated",
"label.*",
"label.created",
"label.deleted",
"label.updated",
"member.*",
"member.added",
"member.removed",
"member.updated",
"project.*",
"project.created",
"project.deleted",
"project.updated",
"team.*",
"team.created",
"team.deleted",
"team.updated",
"webhook.*",
"webhook.disabled"
]
}
},
"active": {
"type": "boolean"
},
"failures": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"id",
"url",
"events",
"active",
"failures",
"created_at"
]
}PATCH /workspaces/{workspace}/webhooks/{id}
Update a webhook
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"events": {
"type": "array",
"items": {
"type": "string",
"enum": [
"comment.created",
"comment.deleted",
"comment.updated",
"issue.created",
"issue.deleted",
"issue.updated",
"label.created",
"label.deleted",
"label.updated",
"member.added",
"member.removed",
"member.updated",
"project.created",
"project.deleted",
"project.updated",
"team.created",
"team.deleted",
"team.updated",
"webhook.disabled"
]
}
},
"active": {
"type": "boolean"
}
},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"events": {
"type": "array",
"items": {
"type": "string",
"enum": [
"comment.*",
"comment.created",
"comment.deleted",
"comment.updated",
"issue.*",
"issue.created",
"issue.deleted",
"issue.updated",
"label.*",
"label.created",
"label.deleted",
"label.updated",
"member.*",
"member.added",
"member.removed",
"member.updated",
"project.*",
"project.created",
"project.deleted",
"project.updated",
"team.*",
"team.created",
"team.deleted",
"team.updated",
"webhook.*",
"webhook.disabled"
]
}
},
"active": {
"type": "boolean"
},
"failures": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"id",
"url",
"events",
"active",
"failures",
"created_at"
]
}DELETE /workspaces/{workspace}/webhooks/{id}
Delete a webhook
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
204 No Content
POST /workspaces/{workspace}/webhooks/{id}/test
Queue a test webhook
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {},
"additionalProperties": false
}Responses
202 Accepted
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"webhook_id": {
"type": "string"
},
"event_id": {
"type": "string"
},
"attempt": {
"type": "number",
"format": "integer"
},
"status": {
"type": "string",
"enum": [
"pending",
"delivered",
"failed"
]
},
"next_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"response_code": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"delivered_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"webhook_id",
"event_id",
"attempt",
"status",
"next_at",
"response_code",
"delivered_at"
]
}GET /workspaces/{workspace}/webhooks/{id}/deliveries
List webhook deliveries
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"webhook_id": {
"type": "string"
},
"event_id": {
"type": "string"
},
"attempt": {
"type": "number",
"format": "integer"
},
"status": {
"type": "string",
"enum": [
"pending",
"delivered",
"failed"
]
},
"next_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"response_code": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"delivered_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration_ms": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"attempted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"webhook_id",
"event_id",
"attempt",
"status",
"next_at",
"response_code",
"delivered_at",
"duration_ms",
"attempted_at"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}GET /workspaces/{workspace}/webhooks/deliveries/{id}/attempts
List a delivery's send attempts
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"delivery_id": {
"type": "string"
},
"attempt": {
"type": "number",
"format": "integer"
},
"url": {
"type": "string"
},
"request_body": {
"type": "string"
},
"response_code": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"duration_ms": {
"type": "number",
"format": "integer"
},
"sent_at": {
"type": "number"
},
"request_headers": {
"type": "object",
"properties": {},
"additionalProperties": false
}
},
"additionalProperties": false,
"required": [
"id",
"delivery_id",
"attempt",
"url",
"request_body",
"response_code",
"error",
"duration_ms",
"sent_at",
"request_headers"
]
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /workspaces/{workspace}/webhooks/deliveries/{id}/redeliver
Queue a webhook redelivery
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
id | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {},
"additionalProperties": false
}Responses
202 Accepted
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"webhook_id": {
"type": "string"
},
"event_id": {
"type": "string"
},
"attempt": {
"type": "number",
"format": "integer"
},
"status": {
"type": "string",
"enum": [
"pending",
"delivered",
"failed"
]
},
"next_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"response_code": {
"anyOf": [
{
"type": "number",
"format": "integer"
},
{
"type": "null"
}
]
},
"delivered_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"webhook_id",
"event_id",
"attempt",
"status",
"next_at",
"response_code",
"delivered_at"
]
}Workspaces
POST /workspaces
Create a workspace
Parameters
No parameters.
Request body
Required
application/json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"slug": {
"type": "string",
"maxLength": 48,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
}
},
"additionalProperties": false,
"required": [
"name"
]
}Responses
201 Created
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"owner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"plan": {
"type": "string",
"enum": [
"free",
"pro",
"starter"
]
},
"stripe_customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"stripe_subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"storage_bytes": {
"type": "number",
"format": "integer"
},
"storage_limit_bytes": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"deleted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"slug",
"name",
"owner_id",
"plan",
"stripe_customer_id",
"stripe_subscription_id",
"storage_bytes",
"storage_limit_bytes",
"created_at"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /workspaces/available
Check that a workspace slug is free
Parameters
No parameters.
Request body
Required
application/json
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"maxLength": 48,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
}
},
"additionalProperties": false,
"required": [
"slug"
]
}Responses
202 Accepted
application/json
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"maxLength": 48,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
}
},
"additionalProperties": false,
"required": [
"slug"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"reason": {
"type": "string",
"enum": [
"taken",
"reserved"
]
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status",
"reason"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}GET /workspaces/{workspace}
Get a workspace with your role in it
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
No request body.
Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"owner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"plan": {
"type": "string",
"enum": [
"free",
"pro",
"starter"
]
},
"stripe_customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"stripe_subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"storage_bytes": {
"type": "number",
"format": "integer"
},
"storage_limit_bytes": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"deleted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"role": {
"type": "string",
"enum": [
"admin",
"member",
"viewer",
"guest"
]
}
},
"additionalProperties": false,
"required": [
"id",
"slug",
"name",
"owner_id",
"plan",
"stripe_customer_id",
"stripe_subscription_id",
"storage_bytes",
"storage_limit_bytes",
"created_at",
"role"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}PATCH /workspaces/{workspace}
Update a workspace
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"slug": {
"type": "string",
"maxLength": 48,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
}
},
"additionalProperties": false
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"owner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"plan": {
"type": "string",
"enum": [
"free",
"pro",
"starter"
]
},
"stripe_customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"stripe_subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"storage_bytes": {
"type": "number",
"format": "integer"
},
"storage_limit_bytes": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"deleted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"slug",
"name",
"owner_id",
"plan",
"stripe_customer_id",
"stripe_subscription_id",
"storage_bytes",
"storage_limit_bytes",
"created_at"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}422 Unprocessable Entity
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {}
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}DELETE /workspaces/{workspace}
Delete a workspace
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
No request body.
Responses
204 No Content
403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}409 Conflict
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}POST /workspaces/{workspace}/transfer-owner
Transfer workspace ownership
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
workspace | path | Yes | |
Request body
Required
application/json
{
"type": "object",
"properties": {
"owner_id": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"owner_id"
]
}Responses
200 OK
application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"owner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"plan": {
"type": "string",
"enum": [
"free",
"pro",
"starter"
]
},
"stripe_customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"stripe_subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"storage_bytes": {
"type": "number",
"format": "integer"
},
"storage_limit_bytes": {
"type": "number",
"format": "integer"
},
"created_at": {
"type": "number"
},
"deleted_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"required": [
"id",
"slug",
"name",
"owner_id",
"plan",
"stripe_customer_id",
"stripe_subscription_id",
"storage_bytes",
"storage_limit_bytes",
"created_at"
]
}403 Forbidden
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}404 Not Found
application/json
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "number"
},
"detail": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"title",
"status"
]
}