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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

Request body

No request body.

Responses

200 OK

application/json

{}

POST /workspaces/{workspace}/billing/checkout

Create a Stripe checkout

Parameters

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
tokenpathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
limitqueryNo
{
  "type": "number",
  "minimum": 1,
  "maximum": 100
}
cursorqueryNo
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
team_idqueryNo
{
  "type": "string"
}
project_idqueryNo
{
  "anyOf": [
    {
      "type": "string"
    },
    {
      "type": "null"
    }
  ]
}
statequeryNo
{
  "type": "string",
  "enum": [
    "backlog",
    "open",
    "started",
    "completed",
    "canceled"
  ]
}
assignee_idqueryNo
{
  "anyOf": [
    {
      "type": "string"
    },
    {
      "type": "null"
    }
  ]
}
label_idqueryNo
{
  "type": "string"
}
parent_idqueryNo
{
  "anyOf": [
    {
      "type": "string"
    },
    {
      "type": "null"
    }
  ]
}
ancestor_idqueryNo
{
  "type": "string"
}
archivedqueryNo
{
  "type": "boolean"
}
cursorqueryNo
{
  "anyOf": [
    {
      "type": "string"
    },
    {
      "type": "null"
    }
  ]
}
limitqueryNo
{
  "type": "number",
  "minimum": 1,
  "maximum": 100
}
qqueryNo
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}
limitqueryNo
{
  "type": "number",
  "minimum": 1,
  "maximum": 100
}
cursorqueryNo
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}
cursorqueryNo
{
  "type": "string"
}

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

NameLocationRequiredSchema
limitqueryNo
{
  "type": "number",
  "minimum": 1,
  "maximum": 100
}
cursorqueryNo
{
  "type": "string"
}

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

NameLocationRequiredSchema
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
limitqueryNo
{
  "type": "number",
  "minimum": 1,
  "maximum": 100
}
cursorqueryNo
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
limitqueryNo
{
  "type": "number",
  "minimum": 1,
  "maximum": 100
}
cursorqueryNo
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
unreadqueryNo
{
  "type": "boolean"
}
cursorqueryNo
{
  "anyOf": [
    {
      "type": "string"
    },
    {
      "type": "null"
    }
  ]
}
limitqueryNo
{
  "type": "number",
  "minimum": 1,
  "maximum": 100
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
keypathYes
{
  "type": "string"
}

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

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

NameLocationRequiredSchema
response_typequeryYes
{
  "const": "code"
}
client_idqueryYes
{
  "type": "string"
}
redirect_uriqueryYes
{
  "type": "string"
}
code_challengequeryYes
{
  "type": "string"
}
code_challenge_methodqueryYes
{
  "const": "S256"
}
scopequeryNo
{
  "type": "string"
}
statequeryNo
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
pinnedqueryNo
{
  "type": "boolean"
}
archivedqueryNo
{
  "type": "boolean"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
archivedqueryNo
{
  "type": "boolean"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}
userpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}
userpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}
userpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}
userpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
teampathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
teampathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

Request body

No request body.

Responses

204 No Content

POST /workspaces/{workspace}/teams/{id}/workflow-states/reorder

Reorder workflow states

Parameters

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
tokenpathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
tokenpathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

Request body

No request body.

Responses

204 No Content

POST /workspaces/{workspace}/webhooks/{id}/test

Queue a test webhook

Parameters

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}
idpathYes
{
  "type": "string",
  "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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

NameLocationRequiredSchema
workspacepathYes
{
  "type": "string"
}

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"
  ]
}