Team Time API
Create and assign tasks, update work, and connect your workspace to AI tools and integrations. The versioned API follows the same permissions and work rules as the app.
Make your first request
- Open your organization’s Settings → API keys and choose Entire organization or Specific project, then create a Task assistant key. Copy the secret once and save it in your integration’s secret configuration as
TEAM_TIME_API_KEY. - Set
TEAM_TIME_ORIGINto this deployment’s origin. SendAuthorization: Bearer …on every request to/api/v1. Use HTTPS in production. - Read
GET /context,/projects,/members, and/workflow. Use a member’suserIdfor task assignment. Follow collection cursors to resolve names unambiguously. - Generate a UUID into
COMMAND_UUIDfor the command below, replace the project placeholder, and keep that same UUID/payload if retrying after a lost response.
curl "$TEAM_TIME_ORIGIN/api/v1/tasks" \
-H "Authorization: Bearer $TEAM_TIME_API_KEY" \
-H 'Content-Type: application/json' \
-H "Idempotency-Key: $COMMAND_UUID" \
--data '{"projectId":"<project-id>","title":"Prepare launch checklist","assigneeId":null}'Creation returns the task in data, including ID and version. Use PATCH /tasks/{id} with expectedVersion to change supplied fields. For a status change, also send expectedWorkflowVersion from /workflow. An AI needs HTTP/tool execution or an integration that imports OpenAPI to make these requests.
Authentication and permissions
Every key belongs to one organization and acts as its creating admin, limited by its organization or single-project access target and explicitly selected scopes. Removal, demotion, or organization archival revokes the key permanently. Keys expire after their selected lifetime and can be renamed, revoked or removed from Settings.
Project keys restrict tasks, search, time, reports and exports to the selected project. The member directory and shared statuses remain readable for assignment when permitted. Project keys cannot manage shared settings, clients or team access, create projects, or review whole weeks. Read GET /context for the access target and available operations. Other-project resources return 404; organization-only operations return 403.
Targets cannot be edited. Create a replacement key to change access. Existing keys keep organization access. Deleting a project permanently revokes its keys; archiving keeps historical access under existing rules. A project key cannot control a current or paused timer outside its project.
Cookies do not authenticate this API. Keys cannot create credentials, change ownership, create/join/archive organizations, or operate another person’s timer. Report and review responses exclude private work-note content. Keep credentials out of URLs, logs, browser storage, and shared prompts.
Task assistant includes discovery and task writes. Deletion, team administration, tracking, reviews, and reporting need their own scopes. New scopes are never silently added to existing keys.
Retries, dates, and limits
- Mutations require a UUID
Idempotency-Key. Exact retries replay the original response for seven days. Changed payloads with the same key return409 idempotency_conflict. - Use current versions for edits and actions. DELETE sends
expectedVersionin the query. On409 stale_version, re-read and reconsider before issuing a new command. - PATCH preserves omitted task fields;
nullclears assignee/due date and[]clears tags. Status actions preserve recorded-time and review locks. - Collections return
dataandpage.nextCursor. Default limit is 50; maximum 100. Repeat the same filters/limit with the cursor. Traversal is live and sorted by ID. - 120 requests/minute per key, 600 per organization, and 10 invitation send requests/minute per organization. Observe
Retry-Afteron 429. JSON bodies are limited to 64 KiB; sendContent-Type: application/jsoneven for empty actions. - Due dates are
YYYY-MM-DDcalendar dates. Timestamps are ISO 8601 instants. Weeks start Monday in the organization timezone. Time/timer commands use the shared per-user version. - Report exports/client summaries require the exact filters, sampledAt, and fingerprint from a report less than 24 hours old. Reports cover at most 366 days, with existing 10,000-row service bounds.
Errors
Errors return { error: { code, message, field? }, requestId }. Response headers include a request ID and rate-limit metadata.
| HTTP status | Meaning |
|---|---|
| 400 | Malformed JSON, cursor, or missing idempotency key |
| 401 | Invalid, expired, or revoked key |
| 403 | Insufficient scope or ownership action requiring a session |
| 404 | Missing, hidden, or cross-organization resource |
| 409 | Stale version, idempotency conflict, recorded-time/result/timer conflict |
| 413 / 415 / 422 | Body too large / unsupported content type / validation failed |
| 429 | Request limit reached; use Retry-After |
| 500 | Internal failure; retry uncertain writes with the original key |
API reference
All paths are relative to /api/v1. Expand an operation for its exact request and response schema.
coordination
POST/coordination/runsRegister a chat run
Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.
Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: registerAgentRun
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"runId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"installationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"sessionId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"provider": {
"default": "codex",
"type": "string",
"const": "codex"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"runId",
"installationId",
"sessionId",
"name"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"provider": {
"type": "string"
},
"state": {
"type": "string",
"enum": [
"active",
"idle",
"attention",
"ended"
]
},
"availability": {
"type": "string",
"enum": [
"active",
"idle",
"offline"
]
},
"activityAt": {
"type": [
"string",
"null"
]
},
"connectedUntil": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"name",
"provider",
"state",
"availability",
"activityAt",
"connectedUntil"
]
}
},
"required": [
"data"
]
}POST/coordination/heartbeatRefresh installation connectivity and chat lifecycle
Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.
Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: heartbeatAgentRuns
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"installationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"runs": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"runId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"sequence": {
"type": "integer",
"minimum": 0,
"maximum": 2147483647
},
"state": {
"type": "string",
"enum": [
"active",
"idle",
"attention",
"ended"
]
}
},
"required": [
"runId",
"sequence",
"state"
],
"additionalProperties": false
}
}
},
"required": [
"installationId",
"runs"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"provider": {
"type": "string"
},
"state": {
"type": "string",
"enum": [
"active",
"idle",
"attention",
"ended"
]
},
"availability": {
"type": "string",
"enum": [
"active",
"idle",
"offline"
]
},
"activityAt": {
"type": [
"string",
"null"
]
},
"connectedUntil": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"name",
"provider",
"state",
"availability",
"activityAt",
"connectedUntil"
]
}
}
},
"required": [
"data"
]
}GET/coordination/inboxRead this installation’s undelivered task messages
Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.
Access: Organization or selected project
Permissions: tasks:read · Success: 200 · Operation: getAgentInbox
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"installationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"runId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"installationId"
],
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"taskId": {
"type": "string"
},
"senderRunId": {
"type": [
"string",
"null"
]
},
"senderName": {
"type": "string"
},
"recipientRunId": {
"type": [
"string",
"null"
]
},
"kind": {
"type": "string",
"enum": [
"question",
"note",
"reply"
]
},
"replyToId": {
"type": [
"string",
"null"
]
},
"body": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"deadlineAt": {
"type": [
"string",
"null"
]
},
"deliveredAt": {
"type": [
"string",
"null"
]
},
"repliedAt": {
"type": [
"string",
"null"
]
},
"responseState": {
"type": "string",
"enum": [
"note",
"waiting",
"no_reply",
"replied",
"late_reply"
]
},
"reply": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"senderRunId": {
"type": [
"string",
"null"
]
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"body",
"senderRunId",
"createdAt"
]
},
{
"type": "null"
}
]
},
"recipientAvailability": {
"type": "string",
"enum": [
"active",
"idle",
"offline"
]
}
},
"required": [
"id",
"taskId",
"senderRunId",
"senderName",
"recipientRunId",
"kind",
"replyToId",
"body",
"createdAt",
"deadlineAt",
"deliveredAt",
"repliedAt",
"responseState",
"reply"
]
}
},
"sampledAt": {
"type": "string"
}
},
"required": [
"messages",
"sampledAt"
]
}
},
"required": [
"data"
]
}POST/coordination/ackAcknowledge delivered context without implying a reply
Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.
Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: acknowledgeAgentMessages
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"installationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"runId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"messageIds": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"required": [
"installationId",
"messageIds"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"acknowledged": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"acknowledged"
]
}
},
"required": [
"data"
]
}tasks
GET/tasks/{id}/agentsRead task chats, presence and conversation
Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.
Access: Organization or selected project
Permissions: tasks:read · Success: 200 · Operation: getTaskAgents
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"beforeId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"projectId": {
"type": "string"
},
"canConfigure": {
"type": "boolean"
},
"chats": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"provider": {
"type": "string"
},
"state": {
"type": "string",
"enum": [
"active",
"idle",
"attention",
"ended"
]
},
"availability": {
"type": "string",
"enum": [
"active",
"idle",
"offline"
]
},
"activityAt": {
"type": [
"string",
"null"
]
},
"connectedUntil": {
"type": [
"string",
"null"
]
},
"repository": {
"type": "string"
},
"branch": {
"type": "string"
},
"files": {
"type": "array",
"items": {
"type": "string"
}
},
"checkpoint": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"provider",
"state",
"availability",
"activityAt",
"connectedUntil",
"repository",
"branch",
"files",
"checkpoint",
"updatedAt"
]
}
},
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"taskId": {
"type": "string"
},
"senderRunId": {
"type": [
"string",
"null"
]
},
"senderName": {
"type": "string"
},
"recipientRunId": {
"type": [
"string",
"null"
]
},
"kind": {
"type": "string",
"enum": [
"question",
"note",
"reply"
]
},
"replyToId": {
"type": [
"string",
"null"
]
},
"body": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"deadlineAt": {
"type": [
"string",
"null"
]
},
"deliveredAt": {
"type": [
"string",
"null"
]
},
"repliedAt": {
"type": [
"string",
"null"
]
},
"responseState": {
"type": "string",
"enum": [
"note",
"waiting",
"no_reply",
"replied",
"late_reply"
]
},
"reply": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"senderRunId": {
"type": [
"string",
"null"
]
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"body",
"senderRunId",
"createdAt"
]
},
{
"type": "null"
}
]
},
"recipientAvailability": {
"type": "string",
"enum": [
"active",
"idle",
"offline"
]
}
},
"required": [
"id",
"taskId",
"senderRunId",
"senderName",
"recipientRunId",
"kind",
"replyToId",
"body",
"createdAt",
"deadlineAt",
"deliveredAt",
"repliedAt",
"responseState",
"reply"
]
}
},
"nextBeforeId": {
"type": [
"string",
"null"
]
},
"sampledAt": {
"type": "string"
}
},
"required": [
"enabled",
"projectId",
"canConfigure",
"chats",
"messages",
"nextBeforeId",
"sampledAt"
]
}
},
"required": [
"data"
]
}POST/tasks/{id}/agentsLink this chat and declare work scope
Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.
Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: linkTaskAgent
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"runId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"repository": {
"default": "",
"type": "string",
"maxLength": 300
},
"branch": {
"default": "",
"type": "string",
"maxLength": 200
},
"files": {
"default": [],
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 300
}
},
"checkpoint": {
"default": "",
"type": "string",
"maxLength": 2000
}
},
"required": [
"runId"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"provider": {
"type": "string"
},
"state": {
"type": "string",
"enum": [
"active",
"idle",
"attention",
"ended"
]
},
"availability": {
"type": "string",
"enum": [
"active",
"idle",
"offline"
]
},
"activityAt": {
"type": [
"string",
"null"
]
},
"connectedUntil": {
"type": [
"string",
"null"
]
},
"repository": {
"type": "string"
},
"branch": {
"type": "string"
},
"files": {
"type": "array",
"items": {
"type": "string"
}
},
"checkpoint": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"provider",
"state",
"availability",
"activityAt",
"connectedUntil",
"repository",
"branch",
"files",
"checkpoint",
"updatedAt"
]
}
},
"required": [
"data"
]
}POST/tasks/{id}/agent-messagesAsk an active agent or leave a task message
Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.
Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: sendAgentMessage
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"messageId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"senderRunId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"recipientRunId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"kind": {
"default": "question",
"type": "string",
"enum": [
"question",
"note"
]
},
"body": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"recipientRunId",
"body"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"taskId": {
"type": "string"
},
"senderRunId": {
"type": [
"string",
"null"
]
},
"senderName": {
"type": "string"
},
"recipientRunId": {
"type": [
"string",
"null"
]
},
"kind": {
"type": "string",
"enum": [
"question",
"note",
"reply"
]
},
"replyToId": {
"type": [
"string",
"null"
]
},
"body": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"deadlineAt": {
"type": [
"string",
"null"
]
},
"deliveredAt": {
"type": [
"string",
"null"
]
},
"repliedAt": {
"type": [
"string",
"null"
]
},
"responseState": {
"type": "string",
"enum": [
"note",
"waiting",
"no_reply",
"replied",
"late_reply"
]
},
"reply": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"senderRunId": {
"type": [
"string",
"null"
]
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"body",
"senderRunId",
"createdAt"
]
},
{
"type": "null"
}
]
},
"recipientAvailability": {
"type": "string",
"enum": [
"active",
"idle",
"offline"
]
}
},
"required": [
"id",
"taskId",
"senderRunId",
"senderName",
"recipientRunId",
"kind",
"replyToId",
"body",
"createdAt",
"deadlineAt",
"deliveredAt",
"repliedAt",
"responseState",
"reply"
]
}
},
"required": [
"data"
]
}GET/tasksSearch and paginate all tasks, including completed history
Filters combine with AND; tagIds match any supplied tag. assigneeId=unassigned selects unassigned tasks. Traversal is live, sorted by ID. Reuse the same filters and limit with nextCursor.
Access: Organization or selected project
Permissions: tasks:read · Success: 200 · Operation: listTasks
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"limit": {
"default": 50,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"type": "string",
"maxLength": 4000
},
"query": {
"type": "string",
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"clientId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"assigneeId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"statusId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"statusCategory": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"dueFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"dueTo": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"tagIds": {
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"assigneeId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentKeyId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentName": {
"type": [
"string",
"null"
]
},
"dueOn": {
"type": [
"string",
"null"
]
},
"statusId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"statusCategory": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"result": {
"type": "string"
},
"completedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
},
"boardRank": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"tags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
}
}
},
"required": [
"id",
"title",
"description",
"projectId",
"assigneeId",
"assigneeAgentKeyId",
"assigneeAgentName",
"dueOn",
"statusId",
"statusCategory",
"result",
"completedAt",
"version",
"createdAt",
"boardRank",
"tags"
]
}
},
"page": {
"type": "object",
"properties": {
"nextCursor": {
"type": [
"string",
"null"
]
}
},
"required": [
"nextCursor"
]
},
"meta": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
},
"required": [
"data",
"page"
],
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
}
}POST/tasksCreate and optionally assign a task
Creates an unfinished task. Omitted assigneeId and dueOn default to null. Description defaults to empty and tags to []. Discover project/user/status IDs before creating.
Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 201 · Operation: createTask
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"assigneeId": {
"default": null,
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"dueOn": {
"default": null,
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
]
},
"description": {
"default": "",
"type": "string",
"maxLength": 5000
},
"result": {
"not": {}
},
"tags": {
"default": [],
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"statusId": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"title",
"projectId"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"assigneeId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentKeyId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentName": {
"type": [
"string",
"null"
]
},
"dueOn": {
"type": [
"string",
"null"
]
},
"statusId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"statusCategory": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"result": {
"type": "string"
},
"completedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
},
"boardRank": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"tags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
}
}
},
"required": [
"id",
"title",
"description",
"projectId",
"assigneeId",
"assigneeAgentKeyId",
"assigneeAgentName",
"dueOn",
"statusId",
"statusCategory",
"result",
"completedAt",
"version",
"createdAt",
"boardRank",
"tags"
]
}
},
"required": [
"data"
]
}GET/tasks/{id}Read a task and its version
Read a task and its version
Access: Organization or selected project
Permissions: tasks:read · Success: 200 · Operation: getTask
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"assigneeId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentKeyId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentName": {
"type": [
"string",
"null"
]
},
"dueOn": {
"type": [
"string",
"null"
]
},
"statusId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"statusCategory": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"result": {
"type": "string"
},
"completedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
},
"boardRank": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"tags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
}
}
},
"required": [
"id",
"title",
"description",
"projectId",
"assigneeId",
"assigneeAgentKeyId",
"assigneeAgentName",
"dueOn",
"statusId",
"statusCategory",
"result",
"completedAt",
"version",
"createdAt",
"boardRank",
"tags"
]
}
},
"required": [
"data"
]
}PATCH/tasks/{id}Atomically update supplied task metadata
Omitted fields are preserved. null clears assigneeId/dueOn, [] clears tags. expectedVersion is required. Moving a task with recorded time is forbidden. Read/merge/write executes under one organization lock and transaction.
Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: updateTask
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"assigneeId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"dueOn": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
]
},
"description": {
"type": "string",
"maxLength": 5000
},
"result": {
"type": "string",
"maxLength": 5000
},
"tags": {
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"assigneeId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentKeyId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentName": {
"type": [
"string",
"null"
]
},
"dueOn": {
"type": [
"string",
"null"
]
},
"statusId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"statusCategory": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"result": {
"type": "string"
},
"completedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
},
"boardRank": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"tags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
}
}
},
"required": [
"id",
"title",
"description",
"projectId",
"assigneeId",
"assigneeAgentKeyId",
"assigneeAgentName",
"dueOn",
"statusId",
"statusCategory",
"result",
"completedAt",
"version",
"createdAt",
"boardRank",
"tags"
]
}
},
"required": [
"data"
]
}DELETE/tasks/{id}Delete a task without recorded time
Delete a task without recorded time
Access: Organization or selected project
Permissions: tasks:read, tasks:delete · Success: 204 · Operation: deleteTask
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "null"
}POST/tasks/{id}/statusMove a task to a discovered workflow status
Requires current task and workflow versions. Completion/result locks and running timers apply. Moving an unassigned task into an In progress status assigns it to the key's creator unless claimIfUnassigned is false; other moves preserve the assignee. When the key's creator is the assignee, assigneeAgentKeyId/assigneeAgentName identify the key that took or started the task.
Access: Organization or selected project
Permissions: tasks:read, tasks:write, workflow:read · Success: 200 · Operation: changeTaskStatus
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"statusId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"expectedWorkflowVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"result": {
"type": "string",
"maxLength": 5000
},
"claimIfUnassigned": {
"type": "boolean"
}
},
"required": [
"expectedVersion",
"statusId",
"expectedWorkflowVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"assigneeId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentKeyId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentName": {
"type": [
"string",
"null"
]
},
"dueOn": {
"type": [
"string",
"null"
]
},
"statusId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"statusCategory": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"result": {
"type": "string"
},
"completedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
},
"boardRank": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"tags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
}
}
},
"required": [
"id",
"title",
"description",
"projectId",
"assigneeId",
"assigneeAgentKeyId",
"assigneeAgentName",
"dueOn",
"statusId",
"statusCategory",
"result",
"completedAt",
"version",
"createdAt",
"boardRank",
"tags"
]
}
},
"required": [
"data"
]
}POST/tasks/{id}/completeComplete a task and optionally save its result
Complete a task and optionally save its result
Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: completeTask
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"result": {
"type": "string",
"maxLength": 5000
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"assigneeId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentKeyId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentName": {
"type": [
"string",
"null"
]
},
"dueOn": {
"type": [
"string",
"null"
]
},
"statusId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"statusCategory": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"result": {
"type": "string"
},
"completedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
},
"boardRank": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"tags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
}
}
},
"required": [
"id",
"title",
"description",
"projectId",
"assigneeId",
"assigneeAgentKeyId",
"assigneeAgentName",
"dueOn",
"statusId",
"statusCategory",
"result",
"completedAt",
"version",
"createdAt",
"boardRank",
"tags"
]
}
},
"required": [
"data"
]
}POST/tasks/{id}/reopenReopen a completed task
Reopen a completed task
Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: reopenTask
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"assigneeId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentKeyId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentName": {
"type": [
"string",
"null"
]
},
"dueOn": {
"type": [
"string",
"null"
]
},
"statusId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"statusCategory": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"result": {
"type": "string"
},
"completedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
},
"boardRank": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"tags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
}
}
},
"required": [
"id",
"title",
"description",
"projectId",
"assigneeId",
"assigneeAgentKeyId",
"assigneeAgentName",
"dueOn",
"statusId",
"statusCategory",
"result",
"completedAt",
"version",
"createdAt",
"boardRank",
"tags"
]
}
},
"required": [
"data"
]
}POST/tasks/{id}/positionReorder a task within its current board column
Reorder a task within its current board column
Access: Organization or selected project
Permissions: tasks:read, tasks:write, workflow:read · Success: 200 · Operation: positionTask
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"expectedWorkflowVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"beforeId": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"expectedVersion",
"expectedWorkflowVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"assigneeId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentKeyId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentName": {
"type": [
"string",
"null"
]
},
"dueOn": {
"type": [
"string",
"null"
]
},
"statusId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"statusCategory": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"result": {
"type": "string"
},
"completedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
},
"boardRank": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"tags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
}
}
},
"required": [
"id",
"title",
"description",
"projectId",
"assigneeId",
"assigneeAgentKeyId",
"assigneeAgentName",
"dueOn",
"statusId",
"statusCategory",
"result",
"completedAt",
"version",
"createdAt",
"boardRank",
"tags"
]
}
},
"required": [
"data"
]
}agent messages
GET/agent-messages/{id}Read reply or timeout status
Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.
Access: Organization or selected project
Permissions: tasks:read · Success: 200 · Operation: getAgentMessage
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"taskId": {
"type": "string"
},
"senderRunId": {
"type": [
"string",
"null"
]
},
"senderName": {
"type": "string"
},
"recipientRunId": {
"type": [
"string",
"null"
]
},
"kind": {
"type": "string",
"enum": [
"question",
"note",
"reply"
]
},
"replyToId": {
"type": [
"string",
"null"
]
},
"body": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"deadlineAt": {
"type": [
"string",
"null"
]
},
"deliveredAt": {
"type": [
"string",
"null"
]
},
"repliedAt": {
"type": [
"string",
"null"
]
},
"responseState": {
"type": "string",
"enum": [
"note",
"waiting",
"no_reply",
"replied",
"late_reply"
]
},
"reply": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"senderRunId": {
"type": [
"string",
"null"
]
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"body",
"senderRunId",
"createdAt"
]
},
{
"type": "null"
}
]
},
"recipientAvailability": {
"type": "string",
"enum": [
"active",
"idle",
"offline"
]
}
},
"required": [
"id",
"taskId",
"senderRunId",
"senderName",
"recipientRunId",
"kind",
"replyToId",
"body",
"createdAt",
"deadlineAt",
"deliveredAt",
"repliedAt",
"responseState",
"reply"
]
}
},
"required": [
"data"
]
}POST/agent-messages/{id}/replyReply as the addressed chat run
Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.
Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: replyAgentMessage
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"runId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"body": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"runId",
"body"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"taskId": {
"type": "string"
},
"senderRunId": {
"type": [
"string",
"null"
]
},
"senderName": {
"type": "string"
},
"recipientRunId": {
"type": [
"string",
"null"
]
},
"kind": {
"type": "string",
"enum": [
"question",
"note",
"reply"
]
},
"replyToId": {
"type": [
"string",
"null"
]
},
"body": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"deadlineAt": {
"type": [
"string",
"null"
]
},
"deliveredAt": {
"type": [
"string",
"null"
]
},
"repliedAt": {
"type": [
"string",
"null"
]
},
"responseState": {
"type": "string",
"enum": [
"note",
"waiting",
"no_reply",
"replied",
"late_reply"
]
},
"reply": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"senderRunId": {
"type": [
"string",
"null"
]
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"body",
"senderRunId",
"createdAt"
]
},
{
"type": "null"
}
]
},
"recipientAvailability": {
"type": "string",
"enum": [
"active",
"idle",
"offline"
]
}
},
"required": [
"id",
"taskId",
"senderRunId",
"senderName",
"recipientRunId",
"kind",
"replyToId",
"body",
"createdAt",
"deadlineAt",
"deliveredAt",
"repliedAt",
"responseState",
"reply"
]
}
},
"required": [
"data"
]
}invitations
GET/invitations/{id}Read an organization invitation
Read an organization invitation
Access: Entire organization only
Permissions: members:read, team:write · Success: 200 · Operation: getInvitation
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"type": "string"
},
"role": {
"type": "string"
},
"status": {
"type": "string"
},
"expiresAt": {
"type": "string"
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"email",
"role",
"status",
"expiresAt",
"createdAt"
]
}
},
"required": [
"data"
]
}GET/invitationsRead organization invitations
Read organization invitations
Access: Entire organization only
Permissions: members:read, team:write · Success: 200 · Operation: listInvitations
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"limit": {
"default": 50,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"type": "string",
"maxLength": 4000
}
},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"type": "string"
},
"role": {
"type": "string"
},
"status": {
"type": "string"
},
"expiresAt": {
"type": "string"
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"email",
"role",
"status",
"expiresAt",
"createdAt"
]
}
},
"page": {
"type": "object",
"properties": {
"nextCursor": {
"type": [
"string",
"null"
]
}
},
"required": [
"nextCursor"
]
},
"meta": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
},
"required": [
"data",
"page"
],
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
}
}POST/invitationsInvite an admin or member
Invite an admin or member
Access: Entire organization only
Permissions: members:read, team:write · Success: 201 · Operation: createInvitation
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"email": {
"type": "string",
"maxLength": 254,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"role": {
"type": "string",
"enum": [
"admin",
"member"
]
}
},
"required": [
"email",
"role"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"type": "string"
},
"role": {
"type": "string"
},
"status": {
"type": "string"
},
"expiresAt": {
"type": "string"
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"email",
"role",
"status",
"expiresAt",
"createdAt"
]
}
},
"required": [
"data"
]
}POST/invitations/{id}/cancelCancel a pending invitation
Cancel a pending invitation
Access: Entire organization only
Permissions: members:read, team:write · Success: 200 · Operation: cancelInvitation
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"type": "string"
},
"role": {
"type": "string"
},
"status": {
"type": "string"
},
"expiresAt": {
"type": "string"
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"email",
"role",
"status",
"expiresAt",
"createdAt"
]
}
},
"required": [
"data"
]
}POST/invitations/{id}/sendSend an invitation through the configured email provider
Send an invitation through the configured email provider
Access: Entire organization only
Permissions: members:read, team:write · Success: 200 · Operation: sendInvitation
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"accepted",
"failed",
"unknown"
]
}
},
"required": [
"status"
]
}
},
"required": [
"data"
]
}context
GET/contextDiscover the organization, identity, scopes, and available operations
Discover the organization, identity, scopes, and available operations
Access: Organization or selected project
Permissions: Any valid key · Success: 200 · Operation: getContext
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"organization": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"timezone": {
"type": "string"
},
"weekStartsOn": {
"type": "number"
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"timezoneLocked": {
"type": "boolean"
}
},
"required": [
"id",
"name",
"timezone",
"weekStartsOn",
"version",
"timezoneLocked"
]
},
"userId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"role": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"operations": {
"type": "array",
"items": {
"type": "string"
}
},
"access": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"organization",
"project"
]
},
"projectId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"projectName": {
"type": [
"string",
"null"
]
}
},
"required": [
"type",
"projectId",
"projectName"
]
}
},
"required": [
"organization",
"userId",
"role",
"scopes",
"operations",
"access"
]
}
},
"required": [
"data"
]
}organization
GET/organizationRead organization settings
Read organization settings
Access: Organization or selected project
Permissions: organization:read · Success: 200 · Operation: getOrganization
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"timezone": {
"type": "string"
},
"weekStartsOn": {
"type": "number"
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"timezoneLocked": {
"type": "boolean"
}
},
"required": [
"id",
"name",
"timezone",
"weekStartsOn",
"version",
"timezoneLocked"
]
}
},
"required": [
"data"
]
}PATCH/organizationUpdate organization name or timezone
Update organization name or timezone
Access: Entire organization only
Permissions: organization:read, organization:write · Success: 200 · Operation: updateOrganization
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"timezone": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"timezone": {
"type": "string"
},
"weekStartsOn": {
"type": "number"
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"timezoneLocked": {
"type": "boolean"
}
},
"required": [
"id",
"name",
"timezone",
"weekStartsOn",
"version",
"timezoneLocked"
]
}
},
"required": [
"data"
]
}projects
GET/projectsDiscover active and archived projects
Discover active and archived projects
Access: Organization or selected project
Permissions: projects:read · Success: 200 · Operation: listProjects
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"limit": {
"default": 50,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"type": "string",
"maxLength": 4000
}
},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"clientId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"budgetSeconds": {
"type": [
"number",
"null"
]
},
"billableDefault": {
"type": "boolean"
},
"archivedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"clientId",
"budgetSeconds",
"billableDefault",
"archivedAt",
"version",
"createdAt"
]
}
},
"page": {
"type": "object",
"properties": {
"nextCursor": {
"type": [
"string",
"null"
]
}
},
"required": [
"nextCursor"
]
},
"meta": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
},
"required": [
"data",
"page"
],
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
}
}GET/projects/{id}Read a project
Read a project
Access: Organization or selected project
Permissions: projects:read · Success: 200 · Operation: getProject
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"clientId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"budgetSeconds": {
"type": [
"number",
"null"
]
},
"billableDefault": {
"type": "boolean"
},
"archivedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"clientId",
"budgetSeconds",
"billableDefault",
"archivedAt",
"version",
"createdAt"
]
}
},
"required": [
"data"
]
}POST/projectsCreate a project with an optional existing client
Create a project with an optional existing client
Access: Entire organization only
Permissions: projects:read, projects:write · Success: 201 · Operation: createProject
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"clientId": {
"default": null,
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"budgetHours": {
"default": null,
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "null"
}
]
},
"billableDefault": {
"default": false,
"type": "boolean"
}
},
"required": [
"name"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"clientId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"budgetSeconds": {
"type": [
"number",
"null"
]
},
"billableDefault": {
"type": "boolean"
},
"archivedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"clientId",
"budgetSeconds",
"billableDefault",
"archivedAt",
"version",
"createdAt"
]
}
},
"required": [
"data"
]
}PATCH/projects/{id}Update supplied project fields
Update supplied project fields
Access: Organization or selected project
Permissions: projects:read, projects:write · Success: 200 · Operation: updateProject
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"clientId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"budgetHours": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "null"
}
]
},
"billableDefault": {
"type": "boolean"
},
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"clientId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"budgetSeconds": {
"type": [
"number",
"null"
]
},
"billableDefault": {
"type": "boolean"
},
"archivedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"clientId",
"budgetSeconds",
"billableDefault",
"archivedAt",
"version",
"createdAt"
]
}
},
"required": [
"data"
]
}DELETE/projects/{id}Delete a project without recorded time
Delete a project without recorded time
Access: Organization or selected project
Permissions: projects:read, projects:delete · Success: 204 · Operation: deleteProject
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "null"
}POST/projects/{id}/archiveArchive a project
Archive a project
Access: Organization or selected project
Permissions: projects:read, projects:write · Success: 200 · Operation: archiveProject
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"clientId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"budgetSeconds": {
"type": [
"number",
"null"
]
},
"billableDefault": {
"type": "boolean"
},
"archivedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"clientId",
"budgetSeconds",
"billableDefault",
"archivedAt",
"version",
"createdAt"
]
}
},
"required": [
"data"
]
}POST/projects/{id}/restoreRestore a project
Restore a project
Access: Organization or selected project
Permissions: projects:read, projects:write · Success: 200 · Operation: restoreProject
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"clientId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"budgetSeconds": {
"type": [
"number",
"null"
]
},
"billableDefault": {
"type": "boolean"
},
"archivedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"clientId",
"budgetSeconds",
"billableDefault",
"archivedAt",
"version",
"createdAt"
]
}
},
"required": [
"data"
]
}clients
GET/clientsDiscover clients
Discover clients
Access: Organization or selected project
Permissions: clients:read · Success: 200 · Operation: listClients
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"limit": {
"default": 50,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"type": "string",
"maxLength": 4000
}
},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"archivedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"archivedAt",
"version",
"createdAt"
]
}
},
"page": {
"type": "object",
"properties": {
"nextCursor": {
"type": [
"string",
"null"
]
}
},
"required": [
"nextCursor"
]
},
"meta": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
},
"required": [
"data",
"page"
],
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
}
}GET/clients/{id}Read a client
Read a client
Access: Organization or selected project
Permissions: clients:read · Success: 200 · Operation: getClient
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"archivedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"archivedAt",
"version",
"createdAt"
]
}
},
"required": [
"data"
]
}POST/clientsCreate a client
Create a client
Access: Entire organization only
Permissions: clients:read, clients:write · Success: 201 · Operation: createClient
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"name"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"archivedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"archivedAt",
"version",
"createdAt"
]
}
},
"required": [
"data"
]
}PATCH/clients/{id}Rename a client
Rename a client
Access: Entire organization only
Permissions: clients:read, clients:write · Success: 200 · Operation: updateClient
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"expectedVersion",
"name"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"archivedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"archivedAt",
"version",
"createdAt"
]
}
},
"required": [
"data"
]
}POST/clients/{id}/archiveArchive a client
Archive a client
Access: Entire organization only
Permissions: clients:read, clients:write · Success: 200 · Operation: archiveClient
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"archivedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"archivedAt",
"version",
"createdAt"
]
}
},
"required": [
"data"
]
}POST/clients/{id}/restoreRestore a client
Restore a client
Access: Entire organization only
Permissions: clients:read, clients:write · Success: 200 · Operation: restoreClient
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"archivedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"archivedAt",
"version",
"createdAt"
]
}
},
"required": [
"data"
]
}members
GET/membersDiscover membership IDs and user IDs for assignment
Discover membership IDs and user IDs for assignment
Access: Organization or selected project
Permissions: members:read · Success: 200 · Operation: listMembers
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"limit": {
"default": 50,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"type": "string",
"maxLength": 4000
}
},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"userId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"owner",
"admin",
"member"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"id",
"userId",
"name",
"role",
"version"
]
}
},
"page": {
"type": "object",
"properties": {
"nextCursor": {
"type": [
"string",
"null"
]
}
},
"required": [
"nextCursor"
]
},
"meta": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
},
"required": [
"data",
"page"
],
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
}
}PATCH/members/{id}Change a non-owner member's role
Change a non-owner member's role
Access: Entire organization only
Permissions: members:read, team:write · Success: 200 · Operation: updateMember
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"role": {
"type": "string",
"enum": [
"admin",
"member"
]
}
},
"required": [
"expectedVersion",
"role"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"userId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"owner",
"admin",
"member"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"id",
"userId",
"name",
"role",
"version"
]
}
},
"required": [
"data"
]
}DELETE/members/{id}Remove a non-owner member
Remove a non-owner member
Access: Entire organization only
Permissions: members:read, team:write · Success: 204 · Operation: removeMember
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "null"
}POST/members/{id}/reassign-tasksAtomically reassign selected tasks from a member
Atomically reassign selected tasks from a member
Access: Entire organization only
Permissions: members:read, team:write, tasks:read, tasks:write · Success: 200 · Operation: reassignMemberTasks
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"assigneeId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"tasks": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"id",
"expectedVersion"
],
"additionalProperties": false
}
}
},
"required": [
"assigneeId",
"tasks"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"assigneeId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentKeyId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeAgentName": {
"type": [
"string",
"null"
]
},
"dueOn": {
"type": [
"string",
"null"
]
},
"statusId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"statusCategory": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"result": {
"type": "string"
},
"completedAt": {
"type": [
"string",
"null"
]
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string"
},
"boardRank": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"tags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
}
}
},
"required": [
"id",
"title",
"description",
"projectId",
"assigneeId",
"assigneeAgentKeyId",
"assigneeAgentName",
"dueOn",
"statusId",
"statusCategory",
"result",
"completedAt",
"version",
"createdAt",
"boardRank",
"tags"
]
}
}
},
"required": [
"data"
]
}workflow
GET/workflowRead statuses, columns, and workflow version
Read statuses, columns, and workflow version
Access: Organization or selected project
Permissions: workflow:read · Success: 200 · Operation: getWorkflow
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"completedLimit": {
"type": "number"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string",
"maxLength": 60
},
"category": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"id",
"name",
"category",
"position"
]
}
},
"statuses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string",
"maxLength": 60
},
"category": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"columnId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"color": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"isDefault": {
"type": "boolean"
}
},
"required": [
"id",
"name",
"category",
"columnId",
"position",
"color",
"isDefault"
]
}
}
},
"required": [
"version",
"completedLimit",
"columns",
"statuses"
]
}
},
"required": [
"data"
]
}PUT/workflowAtomically save workflow configuration and replacement mappings
Atomically save workflow configuration and replacement mappings
Access: Entire organization only
Permissions: workflow:read, workflow:write · Success: 200 · Operation: saveWorkflow
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"completedLimit": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"columns": {
"maxItems": 12,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string",
"maxLength": 60
},
"category": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"id",
"name",
"category",
"position"
],
"additionalProperties": false
}
},
"statuses": {
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string",
"maxLength": 60
},
"category": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"columnId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"color": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"isDefault": {
"type": "boolean"
}
},
"required": [
"id",
"name",
"category",
"columnId",
"position",
"color",
"isDefault"
],
"additionalProperties": false
}
},
"replacements": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"expectedVersion",
"completedLimit",
"columns",
"statuses",
"replacements"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"completedLimit": {
"type": "number"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string",
"maxLength": 60
},
"category": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"id",
"name",
"category",
"position"
]
}
},
"statuses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string",
"maxLength": 60
},
"category": {
"type": "string",
"enum": [
"not_started",
"in_progress",
"completed"
]
},
"columnId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"color": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"isDefault": {
"type": "boolean"
}
},
"required": [
"id",
"name",
"category",
"columnId",
"position",
"color",
"isDefault"
]
}
}
},
"required": [
"version",
"completedLimit",
"columns",
"statuses"
]
}
},
"required": [
"data"
]
}time entries
GET/time-entriesRead creator-owned entries for an organization-local day
Entries belong only to the key creator. date defaults to the current organization-local date. meta.version is the shared time/timer version required by corrections and timer commands.
Access: Organization or selected project
Permissions: time:own:read · Success: 200 · Operation: listOwnTimeEntries
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"limit": {
"default": 50,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"type": "string",
"maxLength": 4000
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"startedAt": {
"type": "string"
},
"stoppedAt": {
"type": [
"string",
"null"
]
},
"note": {
"type": "string"
},
"billable": {
"type": "boolean"
}
},
"required": [
"id",
"taskId",
"projectId",
"startedAt",
"stoppedAt",
"note",
"billable"
]
}
},
"page": {
"type": "object",
"properties": {
"nextCursor": {
"type": [
"string",
"null"
]
}
},
"required": [
"nextCursor"
]
},
"meta": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
},
"required": [
"data",
"page"
],
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
}
}GET/time-entries/{id}Read a creator-owned time entry
Read a creator-owned time entry
Access: Organization or selected project
Permissions: time:own:read · Success: 200 · Operation: getOwnTimeEntry
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"startedAt": {
"type": "string"
},
"stoppedAt": {
"type": [
"string",
"null"
]
},
"note": {
"type": "string"
},
"billable": {
"type": "boolean"
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"id",
"taskId",
"projectId",
"startedAt",
"stoppedAt",
"note",
"billable",
"version"
]
}
},
"required": [
"data"
]
}POST/time-entriesCreate creator-owned manual time
Use taskId/projectId plus exact startedAt/stoppedAt, or workDate/durationMilliseconds. Existing overlap, date/DST, and submitted-week rules apply. expectedVersion is the shared time/timer version.
Access: Organization or selected project
Permissions: time:own:read, time:own:write · Success: 201 · Operation: createOwnTimeEntry
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"taskId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"startedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"stoppedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"workDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"durationMilliseconds": {
"type": "integer",
"minimum": 60000,
"maximum": 86400000
},
"note": {
"type": "string",
"maxLength": 5000
},
"billable": {
"type": "boolean"
},
"reason": {
"type": "string",
"maxLength": 500
}
},
"required": [
"expectedVersion",
"taskId",
"projectId"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"startedAt": {
"type": "string"
},
"stoppedAt": {
"type": [
"string",
"null"
]
},
"note": {
"type": "string"
},
"billable": {
"type": "boolean"
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"id",
"taskId",
"projectId",
"startedAt",
"stoppedAt",
"note",
"billable",
"version"
]
}
},
"required": [
"data"
]
}PATCH/time-entries/{id}Correct creator-owned time
Correct creator-owned time
Access: Organization or selected project
Permissions: time:own:read, time:own:write · Success: 200 · Operation: updateOwnTimeEntry
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"taskId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"startedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"stoppedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"note": {
"type": "string",
"maxLength": 5000
},
"billable": {
"type": "boolean"
},
"reason": {
"type": "string",
"maxLength": 500
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"startedAt": {
"type": "string"
},
"stoppedAt": {
"type": [
"string",
"null"
]
},
"note": {
"type": "string"
},
"billable": {
"type": "boolean"
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"id",
"taskId",
"projectId",
"startedAt",
"stoppedAt",
"note",
"billable",
"version"
]
}
},
"required": [
"data"
]
}DELETE/time-entries/{id}Delete creator-owned manual time
Delete creator-owned manual time
Access: Organization or selected project
Permissions: time:own:read, time:own:write · Success: 204 · Operation: deleteOwnTimeEntry
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"reason": {
"type": "string",
"maxLength": 500
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "null"
}timer
GET/timerRead the creator's current timer
Read the creator's current timer
Access: Organization or selected project
Permissions: timers:own:read · Success: 200 · Operation: getOwnTimer
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"mode": {
"type": "string",
"enum": [
"stopped",
"running",
"paused"
]
},
"sampledAt": {
"type": "string"
},
"elapsedSeconds": {
"type": "number"
},
"task": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectName": {
"type": "string"
},
"clientName": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"title",
"projectId",
"projectName",
"clientName"
]
},
{
"type": "null"
}
]
},
"resumeError": {
"type": [
"string",
"null"
]
},
"entry": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"note": {
"type": "string"
},
"startedAt": {
"type": "string"
},
"stoppedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"note",
"startedAt",
"stoppedAt"
]
},
{
"type": "null"
}
]
},
"taskSeconds": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
}
},
"required": [
"version",
"mode",
"sampledAt",
"elapsedSeconds",
"task",
"resumeError",
"entry",
"taskSeconds"
]
}
},
"required": [
"data"
]
}POST/timer/startStart or switch the creator's timer
Start or switch the creator's timer
Access: Organization or selected project
Permissions: timers:own:read, timers:own:write · Success: 200 · Operation: startOwnTimer
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"taskId": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"expectedVersion",
"taskId"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"mode": {
"type": "string",
"enum": [
"stopped",
"running",
"paused"
]
},
"sampledAt": {
"type": "string"
},
"elapsedSeconds": {
"type": "number"
},
"task": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectName": {
"type": "string"
},
"clientName": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"title",
"projectId",
"projectName",
"clientName"
]
},
{
"type": "null"
}
]
},
"resumeError": {
"type": [
"string",
"null"
]
},
"entry": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"note": {
"type": "string"
},
"startedAt": {
"type": "string"
},
"stoppedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"note",
"startedAt",
"stoppedAt"
]
},
{
"type": "null"
}
]
},
"taskSeconds": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
}
},
"required": [
"version",
"mode",
"sampledAt",
"elapsedSeconds",
"task",
"resumeError",
"entry",
"taskSeconds"
]
}
},
"required": [
"data"
]
}POST/timer/pausepause the creator's timer
pause the creator's timer
Access: Organization or selected project
Permissions: timers:own:read, timers:own:write · Success: 200 · Operation: pauseOwnTimer
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"mode": {
"type": "string",
"enum": [
"stopped",
"running",
"paused"
]
},
"sampledAt": {
"type": "string"
},
"elapsedSeconds": {
"type": "number"
},
"task": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectName": {
"type": "string"
},
"clientName": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"title",
"projectId",
"projectName",
"clientName"
]
},
{
"type": "null"
}
]
},
"resumeError": {
"type": [
"string",
"null"
]
},
"entry": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"note": {
"type": "string"
},
"startedAt": {
"type": "string"
},
"stoppedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"note",
"startedAt",
"stoppedAt"
]
},
{
"type": "null"
}
]
},
"taskSeconds": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
}
},
"required": [
"version",
"mode",
"sampledAt",
"elapsedSeconds",
"task",
"resumeError",
"entry",
"taskSeconds"
]
}
},
"required": [
"data"
]
}POST/timer/resumeresume the creator's timer
resume the creator's timer
Access: Organization or selected project
Permissions: timers:own:read, timers:own:write · Success: 200 · Operation: resumeOwnTimer
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"mode": {
"type": "string",
"enum": [
"stopped",
"running",
"paused"
]
},
"sampledAt": {
"type": "string"
},
"elapsedSeconds": {
"type": "number"
},
"task": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectName": {
"type": "string"
},
"clientName": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"title",
"projectId",
"projectName",
"clientName"
]
},
{
"type": "null"
}
]
},
"resumeError": {
"type": [
"string",
"null"
]
},
"entry": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"note": {
"type": "string"
},
"startedAt": {
"type": "string"
},
"stoppedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"note",
"startedAt",
"stoppedAt"
]
},
{
"type": "null"
}
]
},
"taskSeconds": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
}
},
"required": [
"version",
"mode",
"sampledAt",
"elapsedSeconds",
"task",
"resumeError",
"entry",
"taskSeconds"
]
}
},
"required": [
"data"
]
}POST/timer/stopstop the creator's timer
stop the creator's timer
Access: Organization or selected project
Permissions: timers:own:read, timers:own:write · Success: 200 · Operation: stopOwnTimer
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"mode": {
"type": "string",
"enum": [
"stopped",
"running",
"paused"
]
},
"sampledAt": {
"type": "string"
},
"elapsedSeconds": {
"type": "number"
},
"task": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectName": {
"type": "string"
},
"clientName": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"title",
"projectId",
"projectName",
"clientName"
]
},
{
"type": "null"
}
]
},
"resumeError": {
"type": [
"string",
"null"
]
},
"entry": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"note": {
"type": "string"
},
"startedAt": {
"type": "string"
},
"stoppedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"note",
"startedAt",
"stoppedAt"
]
},
{
"type": "null"
}
]
},
"taskSeconds": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
}
},
"required": [
"version",
"mode",
"sampledAt",
"elapsedSeconds",
"task",
"resumeError",
"entry",
"taskSeconds"
]
}
},
"required": [
"data"
]
}PATCH/timer/noteSave the creator's private active work note
Save the creator's private active work note
Access: Organization or selected project
Permissions: timers:own:read, timers:own:write · Success: 200 · Operation: updateOwnTimerNote
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"entryId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"note": {
"type": "string",
"maxLength": 5000
}
},
"required": [
"expectedVersion",
"entryId",
"note"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"mode": {
"type": "string",
"enum": [
"stopped",
"running",
"paused"
]
},
"sampledAt": {
"type": "string"
},
"elapsedSeconds": {
"type": "number"
},
"task": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectName": {
"type": "string"
},
"clientName": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"title",
"projectId",
"projectName",
"clientName"
]
},
{
"type": "null"
}
]
},
"resumeError": {
"type": [
"string",
"null"
]
},
"entry": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"note": {
"type": "string"
},
"startedAt": {
"type": "string"
},
"stoppedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"note",
"startedAt",
"stoppedAt"
]
},
{
"type": "null"
}
]
},
"taskSeconds": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
}
},
"required": [
"version",
"mode",
"sampledAt",
"elapsedSeconds",
"task",
"resumeError",
"entry",
"taskSeconds"
]
}
},
"required": [
"data"
]
}weeks
GET/weeks/{week}Read the creator's week and version
Read the creator's week and version
Access: Entire organization only
Permissions: reviews:own:read · Success: 200 · Operation: getOwnWeek
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"week": {
"type": "string"
},
"endsOn": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"timezone": {
"type": "string"
},
"sampledAt": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"locked": {
"type": "boolean"
}
},
"required": [
"date",
"seconds",
"billableSeconds",
"locked"
]
}
},
"review": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"draft",
"submitted",
"returned",
"approved"
]
},
"comment": {
"type": "string"
},
"submittedAt": {
"type": [
"string",
"null"
]
},
"reviewedAt": {
"type": [
"string",
"null"
]
},
"reviewerName": {
"type": [
"string",
"null"
]
}
},
"required": [
"status",
"comment",
"submittedAt",
"reviewedAt",
"reviewerName"
]
},
"hasRunning": {
"type": "boolean"
},
"hasOtherReviewer": {
"type": "boolean"
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
}
},
"required": [
"date",
"seconds",
"billableSeconds"
]
}
}
},
"required": [
"id",
"name",
"seconds",
"billableSeconds",
"days"
]
}
},
"outcomes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectName": {
"type": "string"
},
"completedAt": {
"type": "string"
},
"result": {
"type": "string"
},
"seconds": {
"type": "number"
}
},
"required": [
"id",
"title",
"projectId",
"projectName",
"completedAt",
"result",
"seconds"
]
}
}
},
"required": [
"week",
"endsOn",
"version",
"timezone",
"sampledAt",
"seconds",
"billableSeconds",
"days",
"review",
"hasRunning",
"hasOtherReviewer",
"projects",
"outcomes"
]
}
},
"required": [
"data"
]
}POST/weeks/{week}/submitsubmit the creator's whole week
submit the creator's whole week
Access: Entire organization only
Permissions: reviews:own:read, reviews:own:write · Success: 200 · Operation: submitOwnWeek
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"comment": {
"default": "",
"type": "string",
"maxLength": 2000
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"week": {
"type": "string"
},
"endsOn": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"timezone": {
"type": "string"
},
"sampledAt": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"locked": {
"type": "boolean"
}
},
"required": [
"date",
"seconds",
"billableSeconds",
"locked"
]
}
},
"review": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"draft",
"submitted",
"returned",
"approved"
]
},
"comment": {
"type": "string"
},
"submittedAt": {
"type": [
"string",
"null"
]
},
"reviewedAt": {
"type": [
"string",
"null"
]
},
"reviewerName": {
"type": [
"string",
"null"
]
}
},
"required": [
"status",
"comment",
"submittedAt",
"reviewedAt",
"reviewerName"
]
},
"hasRunning": {
"type": "boolean"
},
"hasOtherReviewer": {
"type": "boolean"
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
}
},
"required": [
"date",
"seconds",
"billableSeconds"
]
}
}
},
"required": [
"id",
"name",
"seconds",
"billableSeconds",
"days"
]
}
},
"outcomes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectName": {
"type": "string"
},
"completedAt": {
"type": "string"
},
"result": {
"type": "string"
},
"seconds": {
"type": "number"
}
},
"required": [
"id",
"title",
"projectId",
"projectName",
"completedAt",
"result",
"seconds"
]
}
}
},
"required": [
"week",
"endsOn",
"version",
"timezone",
"sampledAt",
"seconds",
"billableSeconds",
"days",
"review",
"hasRunning",
"hasOtherReviewer",
"projects",
"outcomes"
]
}
},
"required": [
"data"
]
}POST/weeks/{week}/withdrawwithdraw the creator's whole week
withdraw the creator's whole week
Access: Entire organization only
Permissions: reviews:own:read, reviews:own:write · Success: 200 · Operation: withdrawOwnWeek
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"comment": {
"default": "",
"type": "string",
"maxLength": 2000
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"week": {
"type": "string"
},
"endsOn": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"timezone": {
"type": "string"
},
"sampledAt": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"locked": {
"type": "boolean"
}
},
"required": [
"date",
"seconds",
"billableSeconds",
"locked"
]
}
},
"review": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"draft",
"submitted",
"returned",
"approved"
]
},
"comment": {
"type": "string"
},
"submittedAt": {
"type": [
"string",
"null"
]
},
"reviewedAt": {
"type": [
"string",
"null"
]
},
"reviewerName": {
"type": [
"string",
"null"
]
}
},
"required": [
"status",
"comment",
"submittedAt",
"reviewedAt",
"reviewerName"
]
},
"hasRunning": {
"type": "boolean"
},
"hasOtherReviewer": {
"type": "boolean"
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
}
},
"required": [
"date",
"seconds",
"billableSeconds"
]
}
}
},
"required": [
"id",
"name",
"seconds",
"billableSeconds",
"days"
]
}
},
"outcomes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectName": {
"type": "string"
},
"completedAt": {
"type": "string"
},
"result": {
"type": "string"
},
"seconds": {
"type": "number"
}
},
"required": [
"id",
"title",
"projectId",
"projectName",
"completedAt",
"result",
"seconds"
]
}
}
},
"required": [
"week",
"endsOn",
"version",
"timezone",
"sampledAt",
"seconds",
"billableSeconds",
"days",
"review",
"hasRunning",
"hasOtherReviewer",
"projects",
"outcomes"
]
}
},
"required": [
"data"
]
}reviews
GET/reviewsRead the submitted review queue for a week
Read the submitted review queue for a week
Access: Entire organization only
Permissions: reviews:team:read · Success: 200 · Operation: listReviews
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"week": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"week": {
"type": "string"
},
"timezone": {
"type": "string"
},
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"userId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"currentMember": {
"type": "boolean"
},
"seconds": {
"type": "number"
},
"status": {
"type": "string",
"enum": [
"submitted",
"returned",
"approved"
]
}
},
"required": [
"userId",
"name",
"currentMember",
"seconds",
"status"
]
}
}
},
"required": [
"week",
"timezone",
"rows"
]
}
},
"required": [
"data"
]
}GET/reviews/{userId}/{week}Read a team member's review without private work notes
Read a team member's review without private work notes
Access: Entire organization only
Permissions: reviews:team:read · Success: 200 · Operation: getReview
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"week": {
"type": "string"
},
"endsOn": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"timezone": {
"type": "string"
},
"sampledAt": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"locked": {
"type": "boolean"
}
},
"required": [
"date",
"seconds",
"billableSeconds",
"locked"
]
}
},
"review": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"draft",
"submitted",
"returned",
"approved"
]
},
"comment": {
"type": "string"
},
"submittedAt": {
"type": [
"string",
"null"
]
},
"reviewedAt": {
"type": [
"string",
"null"
]
},
"reviewerName": {
"type": [
"string",
"null"
]
}
},
"required": [
"status",
"comment",
"submittedAt",
"reviewedAt",
"reviewerName"
]
},
"hasRunning": {
"type": "boolean"
},
"hasOtherReviewer": {
"type": "boolean"
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
}
},
"required": [
"date",
"seconds",
"billableSeconds"
]
}
}
},
"required": [
"id",
"name",
"seconds",
"billableSeconds",
"days"
]
}
},
"outcomes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectName": {
"type": "string"
},
"completedAt": {
"type": "string"
},
"result": {
"type": "string"
},
"seconds": {
"type": "number"
}
},
"required": [
"id",
"title",
"projectId",
"projectName",
"completedAt",
"result",
"seconds"
]
}
},
"userId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"entries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskTitle": {
"type": "string"
},
"projectName": {
"type": "string"
},
"startedAt": {
"type": "string"
},
"stoppedAt": {
"type": [
"string",
"null"
]
},
"billable": {
"type": "boolean"
},
"seconds": {
"type": "number"
}
},
"required": [
"id",
"taskId",
"projectId",
"taskTitle",
"projectName",
"startedAt",
"stoppedAt",
"billable",
"seconds"
]
}
}
},
"required": [
"week",
"endsOn",
"version",
"timezone",
"sampledAt",
"seconds",
"billableSeconds",
"days",
"review",
"hasRunning",
"hasOtherReviewer",
"projects",
"outcomes",
"userId",
"name",
"entries"
]
}
},
"required": [
"data"
]
}POST/reviews/{userId}/{week}/approveapprove a team member's week
approve a team member's week
Access: Entire organization only
Permissions: reviews:team:read, reviews:team:write · Success: 200 · Operation: approveReview
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"comment": {
"default": "",
"type": "string",
"maxLength": 2000
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"week": {
"type": "string"
},
"endsOn": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"timezone": {
"type": "string"
},
"sampledAt": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"locked": {
"type": "boolean"
}
},
"required": [
"date",
"seconds",
"billableSeconds",
"locked"
]
}
},
"review": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"draft",
"submitted",
"returned",
"approved"
]
},
"comment": {
"type": "string"
},
"submittedAt": {
"type": [
"string",
"null"
]
},
"reviewedAt": {
"type": [
"string",
"null"
]
},
"reviewerName": {
"type": [
"string",
"null"
]
}
},
"required": [
"status",
"comment",
"submittedAt",
"reviewedAt",
"reviewerName"
]
},
"hasRunning": {
"type": "boolean"
},
"hasOtherReviewer": {
"type": "boolean"
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
}
},
"required": [
"date",
"seconds",
"billableSeconds"
]
}
}
},
"required": [
"id",
"name",
"seconds",
"billableSeconds",
"days"
]
}
},
"outcomes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectName": {
"type": "string"
},
"completedAt": {
"type": "string"
},
"result": {
"type": "string"
},
"seconds": {
"type": "number"
}
},
"required": [
"id",
"title",
"projectId",
"projectName",
"completedAt",
"result",
"seconds"
]
}
},
"userId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"entries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskTitle": {
"type": "string"
},
"projectName": {
"type": "string"
},
"startedAt": {
"type": "string"
},
"stoppedAt": {
"type": [
"string",
"null"
]
},
"billable": {
"type": "boolean"
},
"seconds": {
"type": "number"
}
},
"required": [
"id",
"taskId",
"projectId",
"taskTitle",
"projectName",
"startedAt",
"stoppedAt",
"billable",
"seconds"
]
}
}
},
"required": [
"week",
"endsOn",
"version",
"timezone",
"sampledAt",
"seconds",
"billableSeconds",
"days",
"review",
"hasRunning",
"hasOtherReviewer",
"projects",
"outcomes",
"userId",
"name",
"entries"
]
}
},
"required": [
"data"
]
}POST/reviews/{userId}/{week}/returnreturn a team member's week
return a team member's week
Access: Entire organization only
Permissions: reviews:team:read, reviews:team:write · Success: 200 · Operation: returnReview
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"comment": {
"default": "",
"type": "string",
"maxLength": 2000
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"week": {
"type": "string"
},
"endsOn": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"timezone": {
"type": "string"
},
"sampledAt": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"locked": {
"type": "boolean"
}
},
"required": [
"date",
"seconds",
"billableSeconds",
"locked"
]
}
},
"review": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"draft",
"submitted",
"returned",
"approved"
]
},
"comment": {
"type": "string"
},
"submittedAt": {
"type": [
"string",
"null"
]
},
"reviewedAt": {
"type": [
"string",
"null"
]
},
"reviewerName": {
"type": [
"string",
"null"
]
}
},
"required": [
"status",
"comment",
"submittedAt",
"reviewedAt",
"reviewerName"
]
},
"hasRunning": {
"type": "boolean"
},
"hasOtherReviewer": {
"type": "boolean"
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
}
},
"required": [
"date",
"seconds",
"billableSeconds"
]
}
}
},
"required": [
"id",
"name",
"seconds",
"billableSeconds",
"days"
]
}
},
"outcomes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectName": {
"type": "string"
},
"completedAt": {
"type": "string"
},
"result": {
"type": "string"
},
"seconds": {
"type": "number"
}
},
"required": [
"id",
"title",
"projectId",
"projectName",
"completedAt",
"result",
"seconds"
]
}
},
"userId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"entries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskTitle": {
"type": "string"
},
"projectName": {
"type": "string"
},
"startedAt": {
"type": "string"
},
"stoppedAt": {
"type": [
"string",
"null"
]
},
"billable": {
"type": "boolean"
},
"seconds": {
"type": "number"
}
},
"required": [
"id",
"taskId",
"projectId",
"taskTitle",
"projectName",
"startedAt",
"stoppedAt",
"billable",
"seconds"
]
}
}
},
"required": [
"week",
"endsOn",
"version",
"timezone",
"sampledAt",
"seconds",
"billableSeconds",
"days",
"review",
"hasRunning",
"hasOtherReviewer",
"projects",
"outcomes",
"userId",
"name",
"entries"
]
}
},
"required": [
"data"
]
}POST/reviews/{userId}/{week}/reopenreopen a team member's week
reopen a team member's week
Access: Entire organization only
Permissions: reviews:team:read, reviews:team:write · Success: 200 · Operation: reopenReview
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"comment": {
"default": "",
"type": "string",
"maxLength": 2000
}
},
"required": [
"expectedVersion"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"week": {
"type": "string"
},
"endsOn": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"timezone": {
"type": "string"
},
"sampledAt": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"locked": {
"type": "boolean"
}
},
"required": [
"date",
"seconds",
"billableSeconds",
"locked"
]
}
},
"review": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"draft",
"submitted",
"returned",
"approved"
]
},
"comment": {
"type": "string"
},
"submittedAt": {
"type": [
"string",
"null"
]
},
"reviewedAt": {
"type": [
"string",
"null"
]
},
"reviewerName": {
"type": [
"string",
"null"
]
}
},
"required": [
"status",
"comment",
"submittedAt",
"reviewedAt",
"reviewerName"
]
},
"hasRunning": {
"type": "boolean"
},
"hasOtherReviewer": {
"type": "boolean"
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
}
},
"required": [
"date",
"seconds",
"billableSeconds"
]
}
}
},
"required": [
"id",
"name",
"seconds",
"billableSeconds",
"days"
]
}
},
"outcomes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectName": {
"type": "string"
},
"completedAt": {
"type": "string"
},
"result": {
"type": "string"
},
"seconds": {
"type": "number"
}
},
"required": [
"id",
"title",
"projectId",
"projectName",
"completedAt",
"result",
"seconds"
]
}
},
"userId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"name": {
"type": "string"
},
"entries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskTitle": {
"type": "string"
},
"projectName": {
"type": "string"
},
"startedAt": {
"type": "string"
},
"stoppedAt": {
"type": [
"string",
"null"
]
},
"billable": {
"type": "boolean"
},
"seconds": {
"type": "number"
}
},
"required": [
"id",
"taskId",
"projectId",
"taskTitle",
"projectName",
"startedAt",
"stoppedAt",
"billable",
"seconds"
]
}
}
},
"required": [
"week",
"endsOn",
"version",
"timezone",
"sampledAt",
"seconds",
"billableSeconds",
"days",
"review",
"hasRunning",
"hasOtherReviewer",
"projects",
"outcomes",
"userId",
"name",
"entries"
]
}
},
"required": [
"data"
]
}reports
GET/reportsRead a report without private work notes
Read a report without private work notes
Access: Organization or selected project
Permissions: reports:read · Success: 200 · Operation: getReport
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"clientId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"memberId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"view": {
"type": "string",
"enum": [
"activity",
"completed",
"time"
]
}
},
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"orgId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"admin": {
"type": "boolean"
},
"timezone": {
"type": "string"
},
"sampledAt": {
"type": "string"
},
"filters": {
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"clientId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"memberId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"view": {
"type": "string",
"enum": [
"activity",
"completed",
"time"
]
}
}
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"runningSeconds": {
"type": "number"
},
"reviewSeconds": {
"type": "object",
"properties": {
"draft": {
"type": "number"
},
"submitted": {
"type": "number"
},
"returned": {
"type": "number"
},
"approved": {
"type": "number"
}
},
"required": [
"draft",
"submitted",
"returned",
"approved"
]
},
"tasks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"title": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectName": {
"type": "string"
},
"projectArchived": {
"type": "boolean"
},
"clientName": {
"type": [
"string",
"null"
]
},
"clientId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"enum": [
"open",
"completed"
]
},
"statusName": {
"type": "string"
},
"assigneeId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"assigneeName": {
"type": [
"string",
"null"
]
},
"completedAt": {
"type": [
"string",
"null"
]
},
"completedInPeriod": {
"type": "boolean"
},
"hasTimeInPeriod": {
"type": "boolean"
},
"result": {
"type": "string"
},
"seconds": {
"type": "number"
},
"billableSeconds": {
"type": "number"
},
"reviewSeconds": {
"type": "object",
"properties": {
"draft": {
"type": "number"
},
"submitted": {
"type": "number"
},
"returned": {
"type": "number"
},
"approved": {
"type": "number"
}
},
"required": [
"draft",
"submitted",
"returned",
"approved"
]
},
"slices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"entryId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"date": {
"type": "string"
},
"week": {
"type": "string"
},
"startedAt": {
"type": "string"
},
"stoppedAt": {
"type": [
"string",
"null"
]
},
"sliceStart": {
"type": "string"
},
"sliceEnd": {
"type": "string"
},
"seconds": {
"type": "number"
},
"userId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"memberName": {
"type": "string"
},
"clientId": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"clientName": {
"type": [
"string",
"null"
]
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectName": {
"type": "string"
},
"taskId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskTitle": {
"type": "string"
},
"billable": {
"type": "boolean"
},
"reviewStatus": {
"type": "string",
"enum": [
"draft",
"submitted",
"returned",
"approved"
]
},
"running": {
"type": "boolean"
}
},
"required": [
"entryId",
"date",
"week",
"startedAt",
"stoppedAt",
"sliceStart",
"sliceEnd",
"seconds",
"userId",
"memberName",
"clientId",
"clientName",
"projectId",
"projectName",
"taskId",
"taskTitle",
"billable",
"reviewStatus",
"running"
]
}
}
},
"required": [
"id",
"title",
"projectId",
"projectName",
"projectArchived",
"clientName",
"clientId",
"status",
"statusName",
"assigneeId",
"assigneeName",
"completedAt",
"completedInPeriod",
"hasTimeInPeriod",
"result",
"seconds",
"billableSeconds",
"reviewSeconds",
"slices"
]
}
},
"completedCount": {
"type": "number"
},
"tasksWithTimeCount": {
"type": "number"
},
"completedWithoutTimeCount": {
"type": "number"
},
"undatedCompletedCount": {
"type": "number"
},
"fingerprint": {
"type": "string"
}
},
"required": [
"orgId",
"admin",
"timezone",
"sampledAt",
"filters",
"seconds",
"billableSeconds",
"runningSeconds",
"reviewSeconds",
"tasks",
"completedCount",
"tasksWithTimeCount",
"completedWithoutTimeCount",
"undatedCompletedCount",
"fingerprint"
]
}
},
"required": [
"data"
]
}GET/reports/entries.csvExport a matching entries report snapshot
Export a matching entries report snapshot
Access: Organization or selected project
Permissions: reports:read · Success: 200 · Operation: exportEntriesCsv
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"clientId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"memberId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"view": {
"type": "string",
"enum": [
"activity",
"completed",
"time"
]
},
"sampledAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"fingerprint": {
"type": "string",
"pattern": "^[a-f\\d]{64}$"
}
},
"required": [
"sampledAt",
"fingerprint"
],
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string"
}GET/reports/tasks.csvExport a matching tasks report snapshot
Export a matching tasks report snapshot
Access: Organization or selected project
Permissions: reports:read · Success: 200 · Operation: exportTasksCsv
Query parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"clientId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"memberId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"view": {
"type": "string",
"enum": [
"activity",
"completed",
"time"
]
},
"sampledAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"fingerprint": {
"type": "string",
"pattern": "^[a-f\\d]{64}$"
}
},
"required": [
"sampledAt",
"fingerprint"
],
"additionalProperties": false
}Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string"
}POST/reports/client-summaryGenerate a client summary without sending it
Generate a client summary without sending it
Access: Organization or selected project
Permissions: reports:read · Success: 200 · Operation: createClientSummary
JSON body
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"clientId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"memberId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"view": {
"type": "string",
"enum": [
"activity",
"completed",
"time"
]
},
"sampledAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"fingerprint": {
"type": "string",
"pattern": "^[a-f\\d]{64}$"
},
"taskIds": {
"minItems": 1,
"maxItems": 10000,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"includeTime": {
"default": false,
"type": "boolean"
}
},
"required": [
"sampledAt",
"fingerprint",
"taskIds"
],
"additionalProperties": false
}Also send a UUID Idempotency-Key header.
Response schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"count": {
"type": "number"
}
},
"required": [
"text",
"count"
]
}
},
"required": [
"data"
]
}