VoidTrack Docs
API Reference

Issues

GET
/issues
AuthorizationBearer <token>

Workspace scoped API key, printed once by pnpm seed or POST /api-keys.

In: header

Query Parameters

team?string

Team key or id

state?string

Workflow state name (requires team)

stateType?string

Comma separated: backlog, unstarted, started, completed, canceled

assignee?string

User email, id, or 'me'

project?string

Project name or id

cycle?string

Cycle number or 'current' (requires team)

q?string

Full text search

special?string

Comma-separated computed filters, ANDed: overdue, due_today, due_week, no_due_date, stale, unassigned, no_estimate, no_project, no_labels, blocked, blocking, unstarted_overdue, mine, created_by_me

sort?string

priority, due, created, updated, title, estimate, state, assignee ('-' reverses). Defaults to -updated. A missing value sorts last ascending, first descending

limit?string

Max results, default 50, max 200

offset?string

Pagination offset

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/issues"
{  "issues": [    {      "id": "string",      "identifier": "string",      "title": "string",      "description": "string",      "priority": 0,      "estimate": 0,      "dueDate": "string",      "team": {        "id": "string",        "key": "string",        "name": "string"      },      "state": {        "id": "string",        "name": "string",        "type": "string"      },      "assignee": {        "id": "string",        "name": "string",        "email": "user@example.com"      },      "project": {        "id": "string",        "name": "string"      },      "cycle": {        "id": "string",        "number": 0      },      "labels": [        "string"      ],      "parentId": "string",      "createdAt": "2019-08-24T14:15:22Z",      "updatedAt": "2019-08-24T14:15:22Z",      "completedAt": "2019-08-24T14:15:22Z"    }  ]}
POST
/issues
AuthorizationBearer <token>

Workspace scoped API key, printed once by pnpm seed or POST /api-keys.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/issues" \  -H "Content-Type: application/json" \  -d '{    "team": "string",    "title": "string"  }'
{  "issue": {    "id": "string",    "identifier": "string",    "title": "string",    "description": "string",    "priority": 0,    "estimate": 0,    "dueDate": "string",    "team": {      "id": "string",      "key": "string",      "name": "string"    },    "state": {      "id": "string",      "name": "string",      "type": "string"    },    "assignee": {      "id": "string",      "name": "string",      "email": "user@example.com"    },    "project": {      "id": "string",      "name": "string"    },    "cycle": {      "id": "string",      "number": 0    },    "labels": [      "string"    ],    "parentId": "string",    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z",    "completedAt": "2019-08-24T14:15:22Z"  }}
GET
/issues/{identifier}
AuthorizationBearer <token>

Workspace scoped API key, printed once by pnpm seed or POST /api-keys.

In: header

Path Parameters

identifier*string

Issue identifier, e.g. VOID-12

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/issues/string"
{  "issue": {    "id": "string",    "identifier": "string",    "title": "string",    "description": "string",    "priority": 0,    "estimate": 0,    "dueDate": "string",    "team": {      "id": "string",      "key": "string",      "name": "string"    },    "state": {      "id": "string",      "name": "string",      "type": "string"    },    "assignee": {      "id": "string",      "name": "string",      "email": "user@example.com"    },    "project": {      "id": "string",      "name": "string"    },    "cycle": {      "id": "string",      "number": 0    },    "labels": [      "string"    ],    "parentId": "string",    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z",    "completedAt": "2019-08-24T14:15:22Z",    "comments": [      {        "id": "string",        "body": "string",        "author": {          "id": "string",          "name": "string"        },        "createdAt": "2019-08-24T14:15:22Z"      }    ],    "subIssues": [      {        "identifier": "string",        "title": "string",        "state": "string"      }    ],    "relations": [      null    ]  }}
PATCH
/issues/{identifier}
AuthorizationBearer <token>

Workspace scoped API key, printed once by pnpm seed or POST /api-keys.

In: header

Path Parameters

identifier*string

Issue identifier, e.g. VOID-12

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/issues/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "issue": {    "id": "string",    "identifier": "string",    "title": "string",    "description": "string",    "priority": 0,    "estimate": 0,    "dueDate": "string",    "team": {      "id": "string",      "key": "string",      "name": "string"    },    "state": {      "id": "string",      "name": "string",      "type": "string"    },    "assignee": {      "id": "string",      "name": "string",      "email": "user@example.com"    },    "project": {      "id": "string",      "name": "string"    },    "cycle": {      "id": "string",      "number": 0    },    "labels": [      "string"    ],    "parentId": "string",    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z",    "completedAt": "2019-08-24T14:15:22Z"  }}
GET
/issues/{identifier}/page-data
AuthorizationBearer <token>

Workspace scoped API key, printed once by pnpm seed or POST /api-keys.

In: header

Path Parameters

identifier*string

Issue identifier, e.g. VOID-12

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/issues/string/page-data"
{  "issue": {    "id": "string",    "identifier": "string",    "path": "string",    "title": "string",    "description": "string",    "priority": 0,    "estimate": 0,    "stateId": "string",    "assigneeId": "string",    "projectId": "string",    "cycleId": "string",    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z",    "completedAt": "2019-08-24T14:15:22Z",    "team": {      "id": "string",      "key": "string",      "name": "string",      "cyclesEnabled": true,      "states": [        {          "id": "string",          "name": "string",          "color": "string",          "type": "string"        }      ]    },    "parent": {      "identifier": "string",      "team": {        "key": "string"      }    },    "labels": [      {        "name": "string",        "color": "string"      }    ]  },  "estimates": [    null  ],  "members": [    null  ],  "projects": [    {      "id": "string",      "name": "string"    }  ],  "cycles": [    {      "id": "string",      "number": 0,      "name": "string"    }  ],  "comments": [    {      "id": "string",      "body": "string",      "authorId": "string",      "authorName": "string",      "createdAt": "2019-08-24T14:15:22Z",      "updatedAt": "2019-08-24T14:15:22Z"    }  ],  "subIssues": [    {      "id": "string",      "team": {        "key": "string"      },      "number": 0,      "title": "string",      "state": {        "type": "string",        "color": "string",        "name": "string"      }    }  ],  "documents": [    {      "documentId": "string",      "document": {        "id": "string",        "title": "string"      }    }  ],  "relations": [    null  ],  "blockedByOpen": null,  "media": [    {      "id": "string",      "url": "string",      "title": "string",      "metadata": null    }  ],  "links": [    {      "id": "string",      "url": "string",      "title": "string"    }  ]}
POST
/issues/{identifier}/links
AuthorizationBearer <token>

Workspace scoped API key, printed once by pnpm seed or POST /api-keys.

In: header

Path Parameters

identifier*string

Issue identifier, e.g. VOID-12

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/issues/string/links" \  -H "Content-Type: application/json" \  -d '{    "url": "http://example.com"  }'
{  "link": {    "id": "string",    "url": "http://example.com",    "title": "string"  }}
GET
/issues/{identifier}/relations
AuthorizationBearer <token>

Workspace scoped API key, printed once by pnpm seed or POST /api-keys.

In: header

Path Parameters

identifier*string

Issue identifier, e.g. VOID-12

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/issues/string/relations"
{  "relations": [    null  ]}
POST
/issues/{identifier}/relations
AuthorizationBearer <token>

Workspace scoped API key, printed once by pnpm seed or POST /api-keys.

In: header

Path Parameters

identifier*string

Issue identifier, e.g. VOID-12

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/issues/string/relations" \  -H "Content-Type: application/json" \  -d '{    "issue": "string",    "type": "blocks"  }'
{  "relation": {    "id": "string",    "type": "blocks"  }}
DELETE
/issues/{identifier}/relations/{relationId}
AuthorizationBearer <token>

Workspace scoped API key, printed once by pnpm seed or POST /api-keys.

In: header

Path Parameters

identifier*string

Issue identifier, e.g. VOID-12

relationId*string

Relation id

Response Body

application/json

application/json

application/json

curl -X DELETE "https://example.com/issues/string/relations/string"
{  "ok": true}
POST
/issues/move

A team move renumbers each issue under the target team and records a redirect, so the old identifier keeps resolving (including from GitHub branch and PR references). Cycles are dropped; states are remapped by name, then by type.

AuthorizationBearer <token>

Workspace scoped API key, printed once by pnpm seed or POST /api-keys.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/issues/move" \  -H "Content-Type: application/json" \  -d '{    "identifiers": [      "string"    ]  }'
{  "moved": [    {      "id": "string",      "from": "string",      "to": "string",      "droppedCycle": true,      "clearedProject": true    }  ]}