VoidTrack Docs
API Reference

Projects

GET
/projects
AuthorizationBearer <token>

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

In: header

Query Parameters

initiative?string

Filter to an initiative's projects

status?string

Comma-separated project statuses

lead?string

Comma-separated user ids, or 'none'

team?string

Comma-separated team ids

health?string

Comma-separated: on_track, at_risk, off_track

special?string

Comma-separated computed filters, ANDed: overdue, due_month, no_target_date, stale, no_lead, no_initiative, no_issues, update_overdue, off_track, uncounted, led_by_me

sort?string

name, target, health, status, updated, progress, scope, lead ('-' reverses)

Response Body

application/json

application/json

curl -X GET "https://example.com/projects"
{  "projects": [    {      "id": "string",      "name": "string",      "description": "string",      "status": "backlog",      "initiative": {        "id": "string",        "name": "string"      },      "lead": {        "id": "string",        "name": "string"      },      "teams": [        {          "id": "string",          "key": "string",          "name": "string"        }      ],      "startDate": "string",      "targetDate": "string",      "createdAt": "2019-08-24T14:15:22Z",      "updatedAt": "2019-08-24T14:15:22Z",      "progress": {        "done": 0,        "total": 0,        "percent": 0,        "excludedProjects": 0      },      "health": "on_track"    }  ]}
POST
/projects
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/projects" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "teams": [      "string"    ]  }'
{  "project": {    "id": "string",    "name": "string",    "description": "string",    "status": "backlog",    "initiative": {      "id": "string",      "name": "string"    },    "lead": {      "id": "string",      "name": "string"    },    "teams": [      {        "id": "string",        "key": "string",        "name": "string"      }    ],    "startDate": "string",    "targetDate": "string",    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z",    "progress": {      "done": 0,      "total": 0,      "percent": 0,      "excludedProjects": 0    },    "health": "on_track"  }}
POST
/projects/{id}/move

A workspace move takes the project's issues along and remaps everything workspace-scoped. Admin only.

AuthorizationBearer <token>

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

In: header

Path Parameters

id*string

Project id or name

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/projects/string/move" \  -H "Content-Type: application/json" \  -d '{}'
{  "moved": {    "property1": null,    "property2": null  }}
PATCH
/projects/{id}
AuthorizationBearer <token>

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

In: header

Path Parameters

id*string

Project id

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/projects/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "project": {    "id": "string",    "name": "string",    "description": "string",    "status": "backlog",    "initiative": {      "id": "string",      "name": "string"    },    "lead": {      "id": "string",      "name": "string"    },    "teams": [      {        "id": "string",        "key": "string",        "name": "string"      }    ],    "startDate": "string",    "targetDate": "string",    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z",    "progress": {      "done": 0,      "total": 0,      "percent": 0,      "excludedProjects": 0    },    "health": "on_track"  }}
GET
/projects/{id}/members
AuthorizationBearer <token>

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

In: header

Path Parameters

id*string

Project id

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/projects/string/members"
{  "members": [    {      "id": "string",      "name": "string",      "email": "string"    }  ]}
POST
/projects/{id}/members

Additive on top of team membership. Refused for projects in a personal space.

AuthorizationBearer <token>

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

In: header

Path Parameters

id*string

Project id

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/projects/string/members" \  -H "Content-Type: application/json" \  -d '{    "user": "string"  }'
{  "ok": true}
DELETE
/projects/{id}/members
AuthorizationBearer <token>

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

In: header

Path Parameters

id*string

Project id

Query Parameters

user*string

User id

Response Body

application/json

application/json

application/json

application/json

curl -X DELETE "https://example.com/projects/string/members?user=string"
{  "ok": true}
GET
/projects/{id}/page-data
AuthorizationBearer <token>

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

In: header

Path Parameters

id*string

Project id

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/projects/string/page-data"
{  "project": {    "id": "string",    "description": "string"  }}