Who the token acts as
/v1/meThe person the token belongs to, their workspace, and the token’s own name, scopes and expiry. A good first call to check a token works.
curl "https://work-api.zinvee.com/v1/me" \
-H "Authorization: Bearer $WORK_TOKEN"Base URL https://work-api.zinvee.com/v1. Authenticate with a personal API token; the guide covers pagination, errors, rate limits and webhooks. The OpenAPI 3.1 description is at /v1/openapi.json.
The person a token acts as.
/v1/meThe person the token belongs to, their workspace, and the token’s own name, scopes and expiry. A good first call to check a token works.
curl "https://work-api.zinvee.com/v1/me" \
-H "Authorization: Bearer $WORK_TOKEN"Create, read, update and trash tasks. Also the polling triggers.
/v1/tasksTasks you can see, filtered and sorted. Polling triggers: sort=created_desc&since=<newest createdAt you saw> returns only new tasks; sort=updated_desc&since=… only changed ones (newest first).
limitintegerItems per page (1–100, default 50).
1 to 100. Default 50
cursorstringThe nextCursor of the previous page.
Up to 200 characters
statusstringOne status, or several separated by commas (todo, in_progress, review, done).
prioritystringOne of: low, normal, high, urgent
projectstring (uuid)Tasks in this project (its own and those also added to it).
assignee"me" | string (uuid)A person’s id, or me for tasks assigned to you.
labelstring (uuid)parentstring (uuid)Only the children of this epic.
qstringFull-text search in titles and descriptions.
Up to 200 characters
openbooleanOnly open tasks (not done).
overduebooleanOnly tasks past their due date and not done.
dueBeforestring (date-time)dueAfterstring (date-time)sortstringOrder of the results. Polling integrations use created_desc or updated_desc with since.
One of: created_desc, created_asc, updated_desc, updated_asc, due_asc, due_desc, priority_desc, urgency. Default "created_desc"
sincestring (date-time)With sort=created_*: only tasks created after this moment. With sort=updated_*: only tasks changed after it. Not allowed with other sorts.
A page of tasks.
hasMorebooleanrequiredTrue when another page follows.
nextCursorstring | nullrequiredPass as cursor to fetch the next page; null on the last page.
Errors: 401, 403, 422, 429
curl "https://work-api.zinvee.com/v1/tasks" \
-H "Authorization: Bearer $WORK_TOKEN"/v1/tasksSame rules as the app: who you may assign, which projects you may add work to, what your plan allows.
Idempotency-KeystringAny unique string (a UUID is ideal). A retry with the same key returns the first response.
Up to 255 characters
titlestringrequired1 to 300 characters
descriptionstringUp to 20000 characters
statusstringDefaults to todo.
One of: todo, in_progress, review, done
prioritystringDefaults to normal.
One of: low, normal, high, urgent
dueAtstring | nullAn ISO 8601 date-time with offset (2026-10-05T12:30:00+05:30), or a date (2026-10-05) — a date is due at 18:00 (starts at 09:00) in the workspace’s timezone.
startAtstring | nullAn ISO 8601 date-time with offset (2026-10-05T12:30:00+05:30), or a date (2026-10-05) — a date is due at 18:00 (starts at 09:00) in the workspace’s timezone.
projectIdstring (uuid) | nullparentTaskIdstring (uuid) | nullCreate it under this epic.
assigneeIdsstring (uuid)[]Up to 20 items
labelIdsstring (uuid)[]Up to 20 items
subtasksstring[]Checklist item titles.
Up to 50 items
curl -X POST "https://work-api.zinvee.com/v1/tasks" \
-H "Authorization: Bearer $WORK_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"title":"Send the fee reminder list"}'/v1/tasks/{id}A task you can’t see answers 404, exactly like one that doesn’t exist.
idstringrequiredThe task’s id, or its key (e.g. DGT-42).
1 to 64 characters
curl "https://work-api.zinvee.com/v1/tasks/DGT-42" \
-H "Authorization: Bearer $WORK_TOKEN"/v1/tasks/{id}Send only the fields to change. Which fields you may change follows your role, exactly as in the app.
idstringrequiredThe task’s id, or its key (e.g. DGT-42).
1 to 64 characters
titlestring1 to 300 characters
descriptionstring | nullUp to 20000 characters
statusstringOne of: todo, in_progress, review, done
prioritystringOne of: low, normal, high, urgent
dueAtstring | nullAn ISO 8601 date-time with offset (2026-10-05T12:30:00+05:30), or a date (2026-10-05) — a date is due at 18:00 (starts at 09:00) in the workspace’s timezone.
startAtstring | nullAn ISO 8601 date-time with offset (2026-10-05T12:30:00+05:30), or a date (2026-10-05) — a date is due at 18:00 (starts at 09:00) in the workspace’s timezone.
projectIdstring (uuid) | nullMove the task to another project (null: no project).
parentTaskIdstring (uuid) | nullassigneeIdsstring (uuid)[]Replaces the assignees.
Up to 20 items
labelIdsstring (uuid)[]Replaces the labels.
Up to 20 items
estimateMinutesinteger | null1 to 10080
curl -X PATCH "https://work-api.zinvee.com/v1/tasks/DGT-42" \
-H "Authorization: Bearer $WORK_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'/v1/tasks/{id}Admins and managers can restore it from the trash in the app until it is purged.
idstringrequiredThe task’s id, or its key (e.g. DGT-42).
1 to 64 characters
Moved to the trash.
Errors: 401, 403, 404, 409, 422, 429
curl -X DELETE "https://work-api.zinvee.com/v1/tasks/DGT-42" \
-H "Authorization: Bearer $WORK_TOKEN"A task’s checklist.
/v1/tasks/{id}/subtasksNeeds a token with read access.
idstringrequiredThe task’s id, or its key (e.g. DGT-42).
1 to 64 characters
limitintegerItems per page (1–100, default 50).
1 to 100. Default 50
cursorstringThe nextCursor of the previous page.
Up to 200 characters
A page of checklist items.
hasMorebooleanrequiredTrue when another page follows.
nextCursorstring | nullrequiredPass as cursor to fetch the next page; null on the last page.
Errors: 401, 403, 404, 422, 429
curl "https://work-api.zinvee.com/v1/tasks/DGT-42/subtasks" \
-H "Authorization: Bearer $WORK_TOKEN"/v1/tasks/{id}/subtasksNeeds a token with read and write access.
idstringrequiredThe task’s id, or its key (e.g. DGT-42).
1 to 64 characters
Idempotency-KeystringAny unique string (a UUID is ideal). A retry with the same key returns the first response.
Up to 255 characters
titlestringrequired1 to 300 characters
assigneeIdstring (uuid) | nullWho does this item — someone who can see the task (null takes them off).
dueAtstring (date-time) | nullWhen this item is due (null clears it).
curl -X POST "https://work-api.zinvee.com/v1/tasks/DGT-42/subtasks" \
-H "Authorization: Bearer $WORK_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"title":"Send the fee reminder list"}'/v1/subtasks/{id}Needs a token with read and write access.
idstring (uuid)requiredtitlestring1 to 300 characters
donebooleanassigneeIdstring (uuid) | nullWho does this item — someone who can see the task (null takes them off).
dueAtstring (date-time) | nullWhen this item is due (null clears it).
curl -X PATCH "https://work-api.zinvee.com/v1/subtasks/3f6c1e2a-8b4d-4c1f-9a7e-2d5b8c0e4f61" \
-H "Authorization: Bearer $WORK_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'/v1/subtasks/{id}Needs a token with read and write access.
idstring (uuid)requiredDeleted.
Errors: 401, 403, 404, 409, 422, 429
curl -X DELETE "https://work-api.zinvee.com/v1/subtasks/3f6c1e2a-8b4d-4c1f-9a7e-2d5b8c0e4f61" \
-H "Authorization: Bearer $WORK_TOKEN"Discussion on a task.
/v1/tasks/{id}/commentsOldest first.
idstringrequiredThe task’s id, or its key (e.g. DGT-42).
1 to 64 characters
limitintegerItems per page (1–100, default 50).
1 to 100. Default 50
cursorstringThe nextCursor of the previous page.
Up to 200 characters
A page of comments.
hasMorebooleanrequiredTrue when another page follows.
nextCursorstring | nullrequiredPass as cursor to fetch the next page; null on the last page.
Errors: 401, 403, 404, 422, 429
curl "https://work-api.zinvee.com/v1/tasks/DGT-42/comments" \
-H "Authorization: Bearer $WORK_TOKEN"/v1/tasks/{id}/commentsFollowers of the task are notified, as for a comment made in the app.
idstringrequiredThe task’s id, or its key (e.g. DGT-42).
1 to 64 characters
Idempotency-KeystringAny unique string (a UUID is ideal). A retry with the same key returns the first response.
Up to 255 characters
bodystringrequired1 to 10000 characters
mentionsstring (uuid)[]People to notify (they must be able to see the task).
Up to 20 items
parentIdstring (uuid)Reply to this comment (a reply to a reply joins the same thread).
curl -X POST "https://work-api.zinvee.com/v1/tasks/DGT-42/comments" \
-H "Authorization: Bearer $WORK_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"body":"Done, list is in the shared folder."}'/v1/commentsComments on every task you can see, newest first, each with the task it is on. Polling trigger: since=<newest createdAt you saw> returns only new comments — the same objects the comment.created hook delivers, on every plan.
limitintegerItems per page (1–100, default 50).
1 to 100. Default 50
cursorstringThe nextCursor of the previous page.
Up to 200 characters
taskstringOnly comments on this task (its id, or its key such as DGT-42).
1 to 64 characters
sincestring (date-time)Only comments posted after this moment. Polling triggers pass the newest createdAt they have seen.
A page of comments, newest first.
hasMorebooleanrequiredTrue when another page follows.
nextCursorstring | nullrequiredPass as cursor to fetch the next page; null on the last page.
Errors: 401, 403, 422, 429
curl "https://work-api.zinvee.com/v1/comments" \
-H "Authorization: Bearer $WORK_TOKEN"Field definitions and each task’s values.
/v1/custom-fieldsNeeds a token with read access.
limitintegerItems per page (1–100, default 50).
1 to 100. Default 50
cursorstringThe nextCursor of the previous page.
Up to 200 characters
projectstring (uuid)Workspace fields plus this project’s own.
A page of field definitions.
hasMorebooleanrequiredTrue when another page follows.
nextCursorstring | nullrequiredPass as cursor to fetch the next page; null on the last page.
Errors: 401, 403, 422, 429
curl "https://work-api.zinvee.com/v1/custom-fields" \
-H "Authorization: Bearer $WORK_TOKEN"/v1/tasks/{id}/custom-fieldsNeeds a token with read access.
idstringrequiredThe task’s id, or its key (e.g. DGT-42).
1 to 64 characters
Every field that applies to the task, with its value.
hasMorebooleanrequiredTrue when another page follows.
nextCursorstring | nullrequiredPass as cursor to fetch the next page; null on the last page.
Errors: 401, 403, 404, 422, 429
curl "https://work-api.zinvee.com/v1/tasks/DGT-42/custom-fields" \
-H "Authorization: Bearer $WORK_TOKEN"/v1/tasks/{id}/custom-fieldsValues are checked against each field’s type and options. Formula and rollup fields are read-only.
idstringrequiredThe task’s id, or its key (e.g. DGT-42).
1 to 64 characters
valuesmap of anyrequiredField id → value; null clears it. Fields you leave out are unchanged.
The task’s values after the change.
hasMorebooleanrequiredTrue when another page follows.
nextCursorstring | nullrequiredPass as cursor to fetch the next page; null on the last page.
Errors: 401, 403, 404, 409, 422, 429
curl -X PUT "https://work-api.zinvee.com/v1/tasks/DGT-42/custom-fields" \
-H "Authorization: Bearer $WORK_TOKEN" \
-H "Content-Type: application/json" \
-d '{"values":{}}'Time logged on tasks.
/v1/tasks/{id}/time-entriesNeeds a token with read access.
idstringrequiredThe task’s id, or its key (e.g. DGT-42).
1 to 64 characters
limitintegerItems per page (1–100, default 50).
1 to 100. Default 50
cursorstringThe nextCursor of the previous page.
Up to 200 characters
A page of time entries.
hasMorebooleanrequiredTrue when another page follows.
nextCursorstring | nullrequiredPass as cursor to fetch the next page; null on the last page.
Errors: 401, 403, 404, 422, 429
curl "https://work-api.zinvee.com/v1/tasks/DGT-42/time-entries" \
-H "Authorization: Bearer $WORK_TOKEN"/v1/tasks/{id}/time-entriesRefused for a week whose timesheet is submitted or approved.
idstringrequiredThe task’s id, or its key (e.g. DGT-42).
1 to 64 characters
Idempotency-KeystringAny unique string (a UUID is ideal). A retry with the same key returns the first response.
Up to 255 characters
durationMinutesintegerrequired1 to 1440
startedAtstring (date-time)Defaults to now minus the duration.
notestringUp to 500 characters
billablebooleanPro and Business. Omitted: the project’s default.
curl -X POST "https://work-api.zinvee.com/v1/tasks/DGT-42/time-entries" \
-H "Authorization: Bearer $WORK_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"durationMinutes":1}'Projects, their members and status updates.
/v1/projectsProjects you can see: every workspace project, plus private ones you are on (admins see all).
limitintegerItems per page (1–100, default 50).
1 to 100. Default 50
cursorstringThe nextCursor of the previous page.
Up to 200 characters
archivedbooleanArchived projects instead of active ones.
A page of projects.
hasMorebooleanrequiredTrue when another page follows.
nextCursorstring | nullrequiredPass as cursor to fetch the next page; null on the last page.
Errors: 401, 403, 422, 429
curl "https://work-api.zinvee.com/v1/projects" \
-H "Authorization: Bearer $WORK_TOKEN"/v1/projects/{id}Needs a token with read access.
idstring (uuid)requiredcurl "https://work-api.zinvee.com/v1/projects/3f6c1e2a-8b4d-4c1f-9a7e-2d5b8c0e4f61" \
-H "Authorization: Bearer $WORK_TOKEN"/v1/projects/{id}/membersNeeds a token with read access.
idstring (uuid)requiredlimitintegerItems per page (1–100, default 50).
1 to 100. Default 50
cursorstringThe nextCursor of the previous page.
Up to 200 characters
A page of members.
hasMorebooleanrequiredTrue when another page follows.
nextCursorstring | nullrequiredPass as cursor to fetch the next page; null on the last page.
Errors: 401, 403, 404, 422, 429
curl "https://work-api.zinvee.com/v1/projects/3f6c1e2a-8b4d-4c1f-9a7e-2d5b8c0e4f61/members" \
-H "Authorization: Bearer $WORK_TOKEN"/v1/projects/{id}/status-updatesNewest first.
idstring (uuid)requiredlimitintegerItems per page (1–100, default 50).
1 to 100. Default 50
cursorstringThe nextCursor of the previous page.
Up to 200 characters
A page of status updates.
hasMorebooleanrequiredTrue when another page follows.
nextCursorstring | nullrequiredPass as cursor to fetch the next page; null on the last page.
Errors: 401, 403, 404, 422, 429
curl "https://work-api.zinvee.com/v1/projects/3f6c1e2a-8b4d-4c1f-9a7e-2d5b8c0e4f61/status-updates" \
-H "Authorization: Bearer $WORK_TOKEN"The people you work with.
/v1/peopleThe workspace’s members and invited people. A guest sees only the people on their projects.
limitintegerItems per page (1–100, default 50).
1 to 100. Default 50
cursorstringThe nextCursor of the previous page.
Up to 200 characters
qstringMatch on name or email.
Up to 200 characters
A page of people.
hasMorebooleanrequiredTrue when another page follows.
nextCursorstring | nullrequiredPass as cursor to fetch the next page; null on the last page.
Errors: 401, 403, 422, 429
curl "https://work-api.zinvee.com/v1/people" \
-H "Authorization: Bearer $WORK_TOKEN"The workspace’s labels.
/v1/labelsNeeds a token with read access.
limitintegerItems per page (1–100, default 50).
1 to 100. Default 50
cursorstringThe nextCursor of the previous page.
Up to 200 characters
A page of labels.
hasMorebooleanrequiredTrue when another page follows.
nextCursorstring | nullrequiredPass as cursor to fetch the next page; null on the last page.
Errors: 401, 403, 422, 429
curl "https://work-api.zinvee.com/v1/labels" \
-H "Authorization: Bearer $WORK_TOKEN"REST hook subscriptions — instant triggers for integration platforms.
/v1/hooksNeeds a token with read access.
limitintegerItems per page (1–100, default 50).
1 to 100. Default 50
cursorstringThe nextCursor of the previous page.
Up to 200 characters
A page of hooks.
hasMorebooleanrequiredTrue when another page follows.
nextCursorstring | nullrequiredPass as cursor to fetch the next page; null on the last page.
Errors: 401, 403, 422, 429
curl "https://work-api.zinvee.com/v1/hooks" \
-H "Authorization: Bearer $WORK_TOKEN"/v1/hooksPro and Business. Every matching event is POSTed to targetUrl, signed with the returned secret. Deliveries carry only what you can see at the time. Answer 410 Gone to unsubscribe; after repeated failures the hook is switched off and you are notified. Not idempotent: the signing secret is shown once and never stored, so a retry makes a second subscription — delete the one you don’t use.
eventstringrequiredOne of: task.created, task.updated, task.completed, comment.created, project.created
targetUrlstring (uri)requiredWhere to POST the events. Must be reachable on the public internet.
Up to 2000 characters
The subscription, with its signing secret (shown only now). Returns CreatedHook.
Errors: 401, 403, 409, 422, 429
curl -X POST "https://work-api.zinvee.com/v1/hooks" \
-H "Authorization: Bearer $WORK_TOKEN" \
-H "Content-Type: application/json" \
-d '{"event":"task.created","targetUrl":"https://hooks.example.com/zinvee"}'/v1/hooks/{id}Needs a token with read and write access.
idstring (uuid)requiredUnsubscribed.
Errors: 401, 403, 404, 409, 422, 429
curl -X DELETE "https://work-api.zinvee.com/v1/hooks/3f6c1e2a-8b4d-4c1f-9a7e-2d5b8c0e4f61" \
-H "Authorization: Bearer $WORK_TOKEN"What a REST hook receives. Every delivery is { id, event, hookId, occurredAt, sentAt, payload }; see Triggers and webhooks for signatures and retries.
task.createdTaskA task was created
task.updatedTaskA task changed (any field)
task.completedTaskA task was marked done
comment.createdCommentEventSomeone commented on a task
project.createdProjectA project was created
The shapes the API returns.
A person in the workspace.
idstring (uuid)requirednamestring | nullrequiredemailstringrequiredA label tasks can carry.
idstring (uuid)requirednamestringrequiredcolorstring | nullrequiredHex colour, e.g. #2563eb.
A task.
idstring (uuid)requiredkeystringrequiredHuman-readable key, e.g. DGT-42 (unique within the workspace).
numberintegerrequiredThe number in the key.
titlestringrequireddescriptionstring | nullrequiredPlain text with light formatting (**bold**, *italic*, ` code `). null when empty.
statusstringrequiredOne of: todo, in_progress, review, done
prioritystringrequiredOne of: low, normal, high, urgent
startAtstring (date-time) | nullrequireddueAtstring (date-time) | nullrequiredcompletedAtstring (date-time) | nullrequiredisOverduebooleanrequiredPast its due date and not done.
projectobject | nullrequiredThe task’s home project; null when it has none.
idstring (uuid)requirednamestring | nullrequirednull when it is a private project you are not on (you reach the task another way).
parentTaskIdstring (uuid) | nullrequiredThe epic this task belongs to.
A person in the workspace.
estimateMinutesinteger | nullrequiredsubtaskCountintegerrequiredsubtaskDoneCountintegerrequiredcommentCountintegerrequiredattachmentCountintegerrequiredcreatedAtstring (date-time)requiredupdatedAtstring (date-time)requiredurlstringrequiredOpens the task in the app.
A checklist item on a task.
idstring (uuid)requiredtaskIdstring (uuid)requiredtitlestringrequireddonebooleanrequiredpositionintegerrequiredcreatedAtstring (date-time)requiredassigneeIdstring (uuid) | nullrequiredWho does this item (null = nobody in particular).
dueAtstring (date-time) | nullrequiredWhen this item is due.
A comment on a task.
idstring (uuid)requiredtaskIdstring (uuid)requiredbodystringrequiredcreatedAtstring (date-time)requirededitedAtstring (date-time) | nullrequiredparentIdstring (uuid) | nullrequiredThe comment this one replies to (null = it starts a thread).
A comment, with the task it is on.
idstring (uuid)requiredtaskIdstring (uuid)requiredbodystringrequiredcreatedAtstring (date-time)requirededitedAtstring (date-time) | nullrequiredparentIdstring (uuid) | nullrequiredThe comment this one replies to (null = it starts a thread).
taskobjectrequiredidstring (uuid)requiredkeystringrequiredtitlestringrequiredurlstringrequiredA project.
idstring (uuid)requirednamestringrequireddescriptionstring | nullrequiredcolorstring | nullrequiredvisibilitystringrequiredprivate: only its members and admins see it.
One of: workspace, private
archivedbooleanrequiredmyRolestring | nullrequiredYour role on the project; null when you are not a member.
One of: editor, commenter
openTaskCountintegerrequiredoverdueTaskCountintegerrequiredtotalTaskCountintegerrequiredlatestStatusobject | nullrequiredThe newest status update’s health.
statusstringrequiredOne of: on_track, at_risk, off_track, on_hold, complete
createdAtstring (date-time)requiredcreatedAtstring (date-time)requiredurlstringrequiredOpens the project in the app.
Someone on a project.
idstring (uuid)requiredThe person’s id.
namestring | nullrequiredemailstringrequiredworkspaceRolestringrequiredOne of: admin, manager, staff, guest
projectRolestringrequiredOne of: editor, commenter
isOwnerbooleanrequiredaddedAtstring (date-time)requiredA project status update.
idstring (uuid)requiredprojectIdstring (uuid)requiredstatusstringrequiredOne of: on_track, at_risk, off_track, on_hold, complete
summarystringrequiredA person in the workspace.
createdAtstring (date-time)requiredSomeone you work with.
idstring (uuid)requirednamestring | nullrequiredemailstringrequiredrolestringrequiredOne of: admin, manager, staff, guest
statusstringrequiredOne of: active, invited
A custom field definition.
idstring (uuid)requirednamestringrequiredtypestringrequiredOne of: text, number, select, multiselect, date, checkbox, url, formula, rollup
optionsstring[] | nullrequiredThe choices of a select / multiselect field.
projectIdstring (uuid) | nullrequirednull: a workspace-wide field.
computedbooleanrequiredFormula and rollup fields are calculated and read-only.
A task’s value for one custom field.
fieldIdstring (uuid)requirednamestringrequiredtypestringrequiredOne of: text, number, select, multiselect, date, checkbox, url, formula, rollup
valueanytext/url/select: string · number: number · multiselect: string[] · date: ISO date-time · checkbox: boolean · null: unset.
Time logged on a task.
idstring (uuid)requiredtaskIdstring (uuid)requiredstartedAtstring (date-time)requireddurationMinutesinteger | nullrequirednull while a timer is running.
notestring | nullrequiredbillablebooleanrequiredA REST hook subscription.
idstring (uuid)requiredeventstringrequiredOne of: task.created, task.updated, task.completed, comment.created, project.created
targetUrlstringrequiredenabledbooleanrequireddisabledReasonstring | nullrequiredOne of: failing, gone, blocked_target
consecutiveFailuresintegerrequiredlastDeliveryAtstring (date-time) | nullrequiredlastSuccessAtstring (date-time) | nullrequiredcreatedAtstring (date-time)requiredA new REST hook subscription, with its signing secret.
idstring (uuid)requiredeventstringrequiredOne of: task.created, task.updated, task.completed, comment.created, project.created
targetUrlstringrequiredenabledbooleanrequireddisabledReasonstring | nullrequiredOne of: failing, gone, blocked_target
consecutiveFailuresintegerrequiredlastDeliveryAtstring (date-time) | nullrequiredlastSuccessAtstring (date-time) | nullrequiredcreatedAtstring (date-time)requiredsecretstringrequiredThe HMAC-SHA256 key that signs every delivery (X-Diginet-Signature). Returned only now.
The person the token acts as, their workspace and the token itself.
idstring (uuid)requirednamestring | nullrequiredemailstringrequiredrolestringrequiredOne of: admin, manager, staff, guest
workspaceobjectrequiredidstring (uuid)requirednamestringrequiredtimezonestringrequiredIANA timezone the workspace’s days follow.
taskKeyPrefixstringrequiredThe prefix of task keys, e.g. DGT.
tokenobjectrequiredidstring (uuid)requirednamestringrequiredscopesstring[]requiredexpiresAtstring (date-time) | nullrequired