{"openapi":"3.1.0","info":{"title":"Taskz REST API","version":"1.0.0","description":"Programmatic access to a Taskz workspace. Authenticate with a REST Personal Access Token (Authorization: Bearer tzk_api_…). Pro workspaces only; every call is scope-gated and runs at the key owner's live permission ceiling."},"servers":[{"url":"https://localhost:3010/api/v1"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"tzk_api_…"}}},"security":[{"bearerAuth":[]}],"paths":{"/api/v1/analytics_activity":{"get":{"operationId":"analytics_activity","summary":"Activity-log analytics for a period: total actions, distinct active categories, and a breakdown of action counts by category.","tags":["Analytics"],"security":[{"bearerAuth":[]}],"x-scope":"analytics:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","enum":["24h","7d","30d","all"]}}]}},"/api/v1/analytics_overview":{"get":{"operationId":"analytics_overview","summary":"Workspace overview KPIs for a period (24h/7d/30d/all): active members, tasks completed, messages sent, and documents created.","tags":["Analytics"],"security":[{"bearerAuth":[]}],"x-scope":"analytics:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","enum":["24h","7d","30d","all"]}}]}},"/api/v1/analytics_storage":{"get":{"operationId":"analytics_storage","summary":"Per-category storage usage for the workspace in bytes: task attachments, message attachments, other, and the canonical total.","tags":["Analytics"],"security":[{"bearerAuth":[]}],"x-scope":"analytics:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/analytics_tasks":{"get":{"operationId":"analytics_tasks","summary":"Task analytics: open count, completed-in-period count, overdue count, plus a breakdown by status and by priority. Optionally scope to a single team.","tags":["Analytics"],"security":[{"bearerAuth":[]}],"x-scope":"analytics:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","enum":["24h","7d","30d","all"]}},{"name":"team_id","in":"query","required":false,"schema":{"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)$"}}]}},"/api/v1/audit_log":{"get":{"operationId":"audit_log","summary":"Read the workspace audit log, newest first. Optionally filter by category, acting user, period (24h/7d/30d/all), or a text search over entity name and action.","tags":["Analytics"],"security":[{"bearerAuth":[]}],"x-scope":"audit:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string","maxLength":50}},{"name":"user_id","in":"query","required":false,"schema":{"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)$"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","enum":["24h","7d","30d","all"]}},{"name":"search","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/billing_info":{"get":{"operationId":"billing_info","summary":"Read the workspace plan, subscription state, and usage (storage bytes, member count, AI request usage). Read-only — does not start checkout.","tags":["Billing"],"security":[{"bearerAuth":[]}],"x-scope":"billing:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/board_create":{"post":{"operationId":"board_create","summary":"Create a new board with a name and optional description/color.","tags":["Boards"],"security":[{"bearerAuth":[]}],"x-scope":"boards:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","maxLength":500},"color":{"type":"string","maxLength":20}},"required":["name"],"additionalProperties":false}}}}}},"/api/v1/board_custom_fields_list":{"get":{"operationId":"board_custom_fields_list","summary":"List the custom field definitions on a board (name, type, options, required), ordered by position.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"board_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/board_delete":{"post":{"operationId":"board_delete","summary":"Permanently delete a board and all of its lists and tasks. No undo.","tags":["Boards"],"security":[{"bearerAuth":[]}],"x-scope":"boards:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"board_id":{"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":["board_id"],"additionalProperties":false}}}}}},"/api/v1/board_get":{"get":{"operationId":"board_get","summary":"Get a single board including its lists (in order) so you know which list_id to target when creating or moving tasks.","tags":["Boards"],"security":[{"bearerAuth":[]}],"x-scope":"boards:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"board_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/board_labels_list":{"get":{"operationId":"board_labels_list","summary":"List the labels defined on a board (name, color, description), ordered by name.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"board_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/board_statuses_list":{"get":{"operationId":"board_statuses_list","summary":"List a board's statuses in order (the Status view groups tasks by these, distinct from lists/columns). Use a returned status id with task_update's status_id to set a task's exact status.","tags":["Boards"],"security":[{"bearerAuth":[]}],"x-scope":"boards:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"board_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/board_update":{"post":{"operationId":"board_update","summary":"Update a board's name, description, or color.","tags":["Boards"],"security":[{"bearerAuth":[]}],"x-scope":"boards:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"board_id":{"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)$"},"name":{"type":"string","minLength":1,"maxLength":100},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"color":{"type":"string","maxLength":20}},"required":["board_id"],"additionalProperties":false}}}}}},"/api/v1/boards_list":{"get":{"operationId":"boards_list","summary":"List boards in the workspace the user can see (open boards, boards they created, or boards their role can access).","tags":["Boards"],"security":[{"bearerAuth":[]}],"x-scope":"boards:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/channel_create":{"post":{"operationId":"channel_create","summary":"Create a channel. Pass is_private=true for an invite-only channel; you are auto-joined as the creator.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"channels:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","maxLength":500},"is_private":{"type":"boolean"}},"required":["name"],"additionalProperties":false}}}}}},"/api/v1/channel_delete":{"post":{"operationId":"channel_delete","summary":"Permanently delete a channel and all of its messages. No undo. Requires the delete-channels permission.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"channels:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"channel_id":{"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":["channel_id"],"additionalProperties":false}}}}}},"/api/v1/channel_get":{"get":{"operationId":"channel_get","summary":"Get a single channel and its members. Private channels require membership.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"messages:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"channel_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/channel_join":{"post":{"operationId":"channel_join","summary":"Join a public channel. Private channels can't be joined without an invite. Requires the join-channels permission.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"messages:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"channel_id":{"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":["channel_id"],"additionalProperties":false}}}}}},"/api/v1/channel_leave":{"post":{"operationId":"channel_leave","summary":"Leave a channel you're a member of.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"messages:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"channel_id":{"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":["channel_id"],"additionalProperties":false}}}}}},"/api/v1/channel_mark_read":{"post":{"operationId":"channel_mark_read","summary":"Mark a channel as read up to now for the calling user.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"messages:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"channel_id":{"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":["channel_id"],"additionalProperties":false}}}}}},"/api/v1/channel_messages":{"get":{"operationId":"channel_messages","summary":"List recent top-level messages in a channel, newest first. Requires view-messages permission and, for private channels, membership.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"messages:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"channel_id","in":"query","required":true,"schema":{"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)$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/channel_update":{"post":{"operationId":"channel_update","summary":"Update a channel's name, description, or topic.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"channels:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"channel_id":{"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)$"},"name":{"type":"string","minLength":1,"maxLength":80},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"topic":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]}},"required":["channel_id"],"additionalProperties":false}}}}}},"/api/v1/channels_list":{"get":{"operationId":"channels_list","summary":"List channels in the workspace. Private channels the user isn't a member of are omitted; channels the user's roles can't view are omitted.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"messages:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/chart_create":{"post":{"operationId":"chart_create","summary":"Create a new chart with a title, optional description, and chart type (defaults to bar). Set data/config afterward with chart_update.","tags":["Visualize"],"security":[{"bearerAuth":[]}],"x-scope":"visualize:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"chart_type":{"type":"string","enum":["bar","line","pie","donut","area","scatter","radar","heatmap","treemap","sankey"]}},"additionalProperties":false}}}}}},"/api/v1/chart_delete":{"post":{"operationId":"chart_delete","summary":"Move a chart to the trash (soft delete, recoverable).","tags":["Visualize"],"security":[{"bearerAuth":[]}],"x-scope":"visualize:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chart_id":{"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":["chart_id"],"additionalProperties":false}}}}}},"/api/v1/chart_get":{"get":{"operationId":"chart_get","summary":"Get a single chart including its type, data rows, and rendering config.","tags":["Visualize"],"security":[{"bearerAuth":[]}],"x-scope":"visualize:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"chart_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/chart_update":{"post":{"operationId":"chart_update","summary":"Update a chart's title, description, type, data rows, or rendering config. Pass data as an array of row objects and config as a settings object.","tags":["Visualize"],"security":[{"bearerAuth":[]}],"x-scope":"visualize:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chart_id":{"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)$"},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"chart_type":{"type":"string","enum":["bar","line","pie","donut","area","scatter","radar","heatmap","treemap","sankey"]},"data":{},"config":{}},"required":["chart_id"],"additionalProperties":false}}}}}},"/api/v1/charts_list":{"get":{"operationId":"charts_list","summary":"List charts in the workspace the user can see (open ones, ones they created, or ones their role/team can access). Excludes trashed charts. Returns metadata only, not the chart data/config.","tags":["Visualize"],"security":[{"bearerAuth":[]}],"x-scope":"visualize:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/custom_field_create":{"post":{"operationId":"custom_field_create","summary":"Create a custom field on a board. field_type is one of: text, longtext, number, date, dropdown, multi, link, email, person, checkbox. options is optional JSON (e.g. dropdown choices).","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"board_id":{"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)$"},"name":{"type":"string","minLength":1,"maxLength":100},"field_type":{"type":"string","enum":["text","longtext","number","date","dropdown","multi","link","email","person","checkbox"]},"options":{},"is_required":{"type":"boolean"}},"required":["board_id","name","field_type"],"additionalProperties":false}}}}}},"/api/v1/custom_field_delete":{"post":{"operationId":"custom_field_delete","summary":"Delete a custom field definition from a board. Cascades to all task values for that field. No undo.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:delete","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"field_id":{"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":["field_id"],"additionalProperties":false}}}}}},"/api/v1/custom_field_update":{"post":{"operationId":"custom_field_update","summary":"Update a custom field definition's name, options, position, or required flag.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"field_id":{"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)$"},"name":{"type":"string","minLength":1,"maxLength":100},"options":{},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"is_required":{"type":"boolean"}},"required":["field_id"],"additionalProperties":false}}}}}},"/api/v1/data_export_documents":{"get":{"operationId":"data_export_documents","summary":"Export the workspace document/folder tree metadata (title, type, created/updated). Excludes trashed documents. Owner/admin only.","tags":["Analytics"],"security":[{"bearerAuth":[]}],"x-scope":"analytics:export","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/data_export_full":{"get":{"operationId":"data_export_full","summary":"Export a full structured snapshot of the workspace: organization, members, boards, tasks, documents, teams, and labels. Owner/admin only.","tags":["Analytics"],"security":[{"bearerAuth":[]}],"x-scope":"analytics:export","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/data_export_members":{"get":{"operationId":"data_export_members","summary":"Export the member roster (name, email, system role, joined date, team memberships). Owner/admin only.","tags":["Analytics"],"security":[{"bearerAuth":[]}],"x-scope":"analytics:export","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/data_export_tasks":{"get":{"operationId":"data_export_tasks","summary":"Export every task in the workspace as a structured list (title, status, priority, dates, board, list, assignee, labels). Owner/admin only.","tags":["Analytics"],"security":[{"bearerAuth":[]}],"x-scope":"analytics:export","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/dm_create_or_get":{"post":{"operationId":"dm_create_or_get","summary":"Start a direct-message thread with one or more org members, or return the existing 1:1 thread. Requires send-messages permission.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"messages:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"member_ids":{"minItems":1,"maxItems":20,"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":["member_ids"],"additionalProperties":false}}}}}},"/api/v1/dm_messages":{"get":{"operationId":"dm_messages","summary":"List recent top-level messages in a DM thread, newest first. The caller must be a participant.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"messages:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"thread_id","in":"query","required":true,"schema":{"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)$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/dm_threads_list":{"get":{"operationId":"dm_threads_list","summary":"List the direct-message threads the calling user participates in, with the other members and last message.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"messages:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/doc_comment_add":{"post":{"operationId":"doc_comment_add","summary":"Add a comment to a document.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"document_id":{"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)$"},"content":{"type":"string","minLength":1,"maxLength":5000}},"required":["document_id","content"],"additionalProperties":false}}}}}},"/api/v1/doc_comment_delete":{"post":{"operationId":"doc_comment_delete","summary":"Delete a document comment. Only the comment's author or an org admin/owner may delete it.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:delete","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"comment_id":{"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":["comment_id"],"additionalProperties":false}}}}}},"/api/v1/doc_comment_resolve":{"post":{"operationId":"doc_comment_resolve","summary":"Mark a document comment as resolved.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"comment_id":{"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":["comment_id"],"additionalProperties":false}}}}}},"/api/v1/doc_comment_unresolve":{"post":{"operationId":"doc_comment_unresolve","summary":"Reopen a resolved document comment.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"comment_id":{"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":["comment_id"],"additionalProperties":false}}}}}},"/api/v1/doc_comments_list":{"get":{"operationId":"doc_comments_list","summary":"List comments on a document in chronological order. By default excludes resolved comments.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"document_id","in":"query","required":true,"schema":{"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)$"}},{"name":"include_resolved","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/doc_create":{"post":{"operationId":"doc_create","summary":"Create a new document (or folder) with a title and optional plain-text body. The body is converted to a minimal TipTap doc — do not pass JSON.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500},"content":{"type":"string"},"parent_id":{"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)$"},"is_folder":{"type":"boolean"}},"required":["title"],"additionalProperties":false}}}}}},"/api/v1/doc_favorite_toggle":{"post":{"operationId":"doc_favorite_toggle","summary":"Toggle the calling user's favorite flag on a document. Returns the new favorited state.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"document_id":{"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":["document_id"],"additionalProperties":false}}}}}},"/api/v1/doc_from_template":{"post":{"operationId":"doc_from_template","summary":"Create a new document from an existing template, optionally nested under a parent folder.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"template_id":{"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)$"},"parent_id":{"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":["template_id"],"additionalProperties":false}}}}}},"/api/v1/doc_get":{"get":{"operationId":"doc_get","summary":"Get a single document including its TipTap content (as stored JSON). Excludes trashed documents.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"document_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/doc_permanent_delete":{"post":{"operationId":"doc_permanent_delete","summary":"Permanently delete a trashed document and all its versions and descendants. No undo.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:purge","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"document_id":{"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":["document_id"],"additionalProperties":false}}}}}},"/api/v1/doc_restore":{"post":{"operationId":"doc_restore","summary":"Restore a trashed document (and its descendants) out of the trash. Restores to root if its parent is gone.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:delete","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"document_id":{"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":["document_id"],"additionalProperties":false}}}}}},"/api/v1/doc_soft_delete":{"post":{"operationId":"doc_soft_delete","summary":"Move a document (and, if it is a folder, its descendants) to the trash. Reversible via doc_restore.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:delete","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"document_id":{"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":["document_id"],"additionalProperties":false}}}}}},"/api/v1/doc_template_delete":{"post":{"operationId":"doc_template_delete","summary":"Permanently delete a document template. No undo.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:purge","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"template_id":{"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":["template_id"],"additionalProperties":false}}}}}},"/api/v1/doc_templates_list":{"get":{"operationId":"doc_templates_list","summary":"List the org's document templates with name, description, and category.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/doc_update":{"post":{"operationId":"doc_update","summary":"Update a document's title and/or body. Body is plain text — converted to a TipTap doc, replacing existing content. Do not pass JSON.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"document_id":{"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)$"},"title":{"type":"string","minLength":1,"maxLength":500},"content":{"type":"string"},"icon":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}]}},"required":["document_id"],"additionalProperties":false}}}}}},"/api/v1/doc_version_restore":{"post":{"operationId":"doc_version_restore","summary":"Restore a document to a saved version. The current content is snapshotted as a new version first.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"version_id":{"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":["version_id"],"additionalProperties":false}}}}}},"/api/v1/doc_version_save":{"post":{"operationId":"doc_version_save","summary":"Snapshot a document's current content as a new version in its history.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"document_id":{"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":["document_id"],"additionalProperties":false}}}}}},"/api/v1/doc_versions_list":{"get":{"operationId":"doc_versions_list","summary":"List saved version snapshots of a document, newest first, with version number, title, and timestamp.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"document_id","in":"query","required":true,"schema":{"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)$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/docs_favorites":{"get":{"operationId":"docs_favorites","summary":"List documents the calling user has favorited. Excludes trashed documents.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/docs_list":{"get":{"operationId":"docs_list","summary":"List documents and folders the user can see (open docs, docs they created, or docs their role can access). Excludes trashed documents.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"parent_id","in":"query","required":false,"schema":{"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)$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/docs_recent":{"get":{"operationId":"docs_recent","summary":"List the most recently updated documents the user can see. Excludes trashed documents.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50}}]}},"/api/v1/docs_search":{"get":{"operationId":"docs_search","summary":"Search documents by title and body text. Returns up to 20 matches the user can see, newest-updated first. Excludes trashed documents.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}]}},"/api/v1/docs_trash_list":{"get":{"operationId":"docs_trash_list","summary":"List soft-deleted documents in the trash (org-wide). Requires view-documents permission.","tags":["Documents"],"security":[{"bearerAuth":[]}],"x-scope":"docs:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/flowchart_create":{"post":{"operationId":"flowchart_create","summary":"Create a new flowchart with a title and optional description. The diagram starts empty.","tags":["Visualize"],"security":[{"bearerAuth":[]}],"x-scope":"visualize:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000}},"additionalProperties":false}}}}}},"/api/v1/flowchart_delete":{"post":{"operationId":"flowchart_delete","summary":"Move a flowchart to the trash (soft delete, recoverable).","tags":["Visualize"],"security":[{"bearerAuth":[]}],"x-scope":"visualize:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"flowchart_id":{"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":["flowchart_id"],"additionalProperties":false}}}}}},"/api/v1/flowchart_get":{"get":{"operationId":"flowchart_get","summary":"Get a single flowchart's title, description, and metadata. Does not return the raw Yjs/binary diagram state.","tags":["Visualize"],"security":[{"bearerAuth":[]}],"x-scope":"visualize:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"flowchart_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/flowchart_update":{"post":{"operationId":"flowchart_update","summary":"Update a flowchart's title or description.","tags":["Visualize"],"security":[{"bearerAuth":[]}],"x-scope":"visualize:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"flowchart_id":{"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)$"},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]}},"required":["flowchart_id"],"additionalProperties":false}}}}}},"/api/v1/flowcharts_list":{"get":{"operationId":"flowcharts_list","summary":"List flowcharts in the workspace the user can see (open ones, ones they created, or ones their role/team can access). Excludes trashed flowcharts. Returns metadata only, not the diagram contents.","tags":["Visualize"],"security":[{"bearerAuth":[]}],"x-scope":"visualize:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/form_create":{"post":{"operationId":"form_create","summary":"Create a new intake form on a board and target list. At least one field must map to 'title'. Resolve board_id/list_id via board_get first.","tags":["Forms"],"security":[{"bearerAuth":[]}],"x-scope":"forms:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"board_id":{"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)$"},"list_id":{"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)$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}]},"fields":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["text","textarea","select","date","number","email"]},"label":{"type":"string","minLength":1,"maxLength":200},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"}},"mapTo":{"anyOf":[{"anyOf":[{"type":"string","enum":["title","description","priority","dueDate"]},{"type":"string","pattern":"^custom:[0-9a-fA-F-]{36}$"}]},{"type":"null"}]}},"required":["id","type","label","mapTo"],"additionalProperties":false}},"is_public":{"type":"boolean"},"requires_approval":{"type":"boolean"},"approver_role_id":{"anyOf":[{"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)$"},{"type":"null"}]},"team_id":{"anyOf":[{"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)$"},{"type":"null"}]}},"required":["board_id","list_id","name","fields"],"additionalProperties":false}}}}}},"/api/v1/form_delete":{"post":{"operationId":"form_delete","summary":"Permanently delete a form. No undo. Does not delete tasks already created from its submissions.","tags":["Forms"],"security":[{"bearerAuth":[]}],"x-scope":"forms:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"form_id":{"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":["form_id"],"additionalProperties":false}}}}}},"/api/v1/form_get":{"get":{"operationId":"form_get","summary":"Get a single form by id including its field definitions, board, and target list.","tags":["Forms"],"security":[{"bearerAuth":[]}],"x-scope":"forms:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"form_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/form_submission_approve":{"post":{"operationId":"form_submission_approve","summary":"Approve a pending form submission. Creates the deferred task in the form's target list, links it on the submission, marks the submission approved, and increments the form's submit count.","tags":["Forms"],"security":[{"bearerAuth":[]}],"x-scope":"forms:approve","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"submission_id":{"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":["submission_id"],"additionalProperties":false}}}}}},"/api/v1/form_submission_reject":{"post":{"operationId":"form_submission_reject","summary":"Reject a pending form submission with an optional reason. Never creates a task and never increments the form's submit count.","tags":["Forms"],"security":[{"bearerAuth":[]}],"x-scope":"forms:approve","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"submission_id":{"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)$"},"reason":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}]}},"required":["submission_id"],"additionalProperties":false}}}}}},"/api/v1/form_submissions_list":{"get":{"operationId":"form_submissions_list","summary":"List submissions for a form, most recent first, with their status (pending | approved | rejected), submitter email, linked task id, and any rejection reason.","tags":["Forms"],"security":[{"bearerAuth":[]}],"x-scope":"forms:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"form_id","in":"query","required":true,"schema":{"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)$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/form_update":{"post":{"operationId":"form_update","summary":"Update a form's name, description, fields, active/public state, target list, or approval settings. If fields are provided, at least one must map to 'title'.","tags":["Forms"],"security":[{"bearerAuth":[]}],"x-scope":"forms:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"form_id":{"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)$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}]},"fields":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["text","textarea","select","date","number","email"]},"label":{"type":"string","minLength":1,"maxLength":200},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"}},"mapTo":{"anyOf":[{"anyOf":[{"type":"string","enum":["title","description","priority","dueDate"]},{"type":"string","pattern":"^custom:[0-9a-fA-F-]{36}$"}]},{"type":"null"}]}},"required":["id","type","label","mapTo"],"additionalProperties":false}},"is_active":{"type":"boolean"},"is_public":{"type":"boolean"},"list_id":{"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)$"},"requires_approval":{"type":"boolean"},"approver_role_id":{"anyOf":[{"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)$"},{"type":"null"}]}},"required":["form_id"],"additionalProperties":false}}}}}},"/api/v1/forms_list":{"get":{"operationId":"forms_list","summary":"List all intake forms in the workspace with their board, target list, active/public state, submit count, and approval settings.","tags":["Forms"],"security":[{"bearerAuth":[]}],"x-scope":"forms:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/get_current_date":{"get":{"operationId":"get_current_date","summary":"Return today's date in ISO 8601 (YYYY-MM-DD) and the server's UTC timestamp. Call this before computing relative dates like 'tomorrow' or 'next Friday'.","tags":["Identity"],"security":[{"bearerAuth":[]}],"x-scope":"identity:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/get_workspace":{"get":{"operationId":"get_workspace","summary":"Return basic info about the current workspace (organization): id, name, slug, and plan.","tags":["Identity"],"security":[{"bearerAuth":[]}],"x-scope":"identity:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/goal_create":{"post":{"operationId":"goal_create","summary":"Create a new goal/OKR with a target value and unit (percent | number | currency | tasks).","tags":["Goals"],"security":[{"bearerAuth":[]}],"x-scope":"goals:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"target_value":{"type":"integer","minimum":1,"maximum":9007199254740991},"unit":{"type":"string","enum":["percent","number","currency","tasks"]},"due_date":{"type":"string"}},"required":["name"],"additionalProperties":false}}}}}},"/api/v1/goal_delete":{"post":{"operationId":"goal_delete","summary":"Permanently delete a goal. No undo. The goal creator, an admin, or a role with goals:delete may delete.","tags":["Goals"],"security":[{"bearerAuth":[]}],"x-scope":"goals:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"goal_id":{"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":["goal_id"],"additionalProperties":false}}}}}},"/api/v1/goal_get":{"get":{"operationId":"goal_get","summary":"Get a single goal by id with its full detail.","tags":["Goals"],"security":[{"bearerAuth":[]}],"x-scope":"goals:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"goal_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/goal_update":{"post":{"operationId":"goal_update","summary":"Update a goal's name, description, target value, unit, due date, current value, or status. The goal creator, an admin, or a role with the goals:edit permission may update.","tags":["Goals"],"security":[{"bearerAuth":[]}],"x-scope":"goals:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"goal_id":{"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)$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"target_value":{"type":"integer","minimum":1,"maximum":9007199254740991},"current_value":{"type":"integer","minimum":0,"maximum":9007199254740991},"unit":{"type":"string","enum":["percent","number","currency","tasks"]},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","enum":["on_track","at_risk","behind","completed"]}},"required":["goal_id"],"additionalProperties":false}}}}}},"/api/v1/goal_update_progress":{"post":{"operationId":"goal_update_progress","summary":"Update a goal's current value and/or status (on_track | at_risk | behind | completed). The goal creator, an admin, or a role with goals:edit may update.","tags":["Goals"],"security":[{"bearerAuth":[]}],"x-scope":"goals:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"goal_id":{"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)$"},"current_value":{"type":"integer","minimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["on_track","at_risk","behind","completed"]}},"required":["goal_id"],"additionalProperties":false}}}}}},"/api/v1/goals_list":{"get":{"operationId":"goals_list","summary":"List all goals/OKRs in the workspace with their target value, stored current value, unit, status, and due date.","tags":["Goals"],"security":[{"bearerAuth":[]}],"x-scope":"goals:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/invite_link_generate":{"post":{"operationId":"invite_link_generate","summary":"Generate a shareable 30-day invite link that anyone can use to join this workspace. Generating an admin-role link requires you to be an owner or admin. Respects the free-tier seat cap.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"members:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["admin","member"]},"custom_role_id":{"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}}}}}},"/api/v1/invite_resend":{"post":{"operationId":"invite_resend","summary":"Re-send a still-pending invitation: rotates its token, resets the 7-day expiry, and emails it again.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"members:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invite_id":{"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":["invite_id"],"additionalProperties":false}}}}}},"/api/v1/invite_revoke":{"post":{"operationId":"invite_revoke","summary":"Revoke a pending invitation so its link can no longer be used.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"members:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invite_id":{"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":["invite_id"],"additionalProperties":false}}}}}},"/api/v1/invites_list":{"get":{"operationId":"invites_list","summary":"List invitations for this workspace (pending, accepted, expired, revoked) newest first.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"members:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","accepted","expired","revoked"]}}]}},"/api/v1/label_create":{"post":{"operationId":"label_create","summary":"Create a label on a board (unique name per board). color is a #rrggbb hex string.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"board_id":{"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)$"},"name":{"type":"string","minLength":1,"maxLength":100},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]}},"required":["board_id","name","color"],"additionalProperties":false}}}}}},"/api/v1/label_delete":{"post":{"operationId":"label_delete","summary":"Delete a board label. No undo.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:delete","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label_id":{"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":["label_id"],"additionalProperties":false}}}}}},"/api/v1/label_update":{"post":{"operationId":"label_update","summary":"Update a label's name, color, or description.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label_id":{"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)$"},"name":{"type":"string","minLength":1,"maxLength":100},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]}},"required":["label_id"],"additionalProperties":false}}}}}},"/api/v1/list_create":{"post":{"operationId":"list_create","summary":"Create a new list (column) on a board. Pass is_done=true if completing this list should mark tasks as done.","tags":["Boards"],"security":[{"bearerAuth":[]}],"x-scope":"boards:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"board_id":{"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)$"},"name":{"type":"string","minLength":1,"maxLength":80},"is_done":{"type":"boolean"}},"required":["board_id","name"],"additionalProperties":false}}}}}},"/api/v1/list_delete":{"post":{"operationId":"list_delete","summary":"Delete a list and every task in it. No undo.","tags":["Boards"],"security":[{"bearerAuth":[]}],"x-scope":"boards:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"list_id":{"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":["list_id"],"additionalProperties":false}}}}}},"/api/v1/list_member_directory":{"get":{"operationId":"list_member_directory","summary":"List organization members as a lightweight directory (user id, display name, username, role) for resolving an assignee or mention target. For emails, activity, and profile details use members_list (requires the 'Read members' scope).","tags":["Identity"],"security":[{"bearerAuth":[]}],"x-scope":"identity:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/list_update":{"post":{"operationId":"list_update","summary":"Update a list's name or done-state flag.","tags":["Boards"],"security":[{"bearerAuth":[]}],"x-scope":"boards:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"list_id":{"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)$"},"name":{"type":"string","minLength":1,"maxLength":80},"is_done":{"type":"boolean"}},"required":["list_id"],"additionalProperties":false}}}}}},"/api/v1/member_activity":{"get":{"operationId":"member_activity","summary":"Get a member's recent board activity (their actions across boards in this workspace), newest first.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"members:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"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)$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50}}]}},"/api/v1/member_bulk_invite":{"post":{"operationId":"member_bulk_invite","summary":"Invite multiple people at once by passing a list of email addresses. Inviting at the admin role requires you to be an owner or admin. Each invite is checked against the free-tier seat cap; returns per-email results.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"members:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"emails":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([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":["emails"],"additionalProperties":false}}}}}},"/api/v1/member_deactivate":{"post":{"operationId":"member_deactivate","summary":"Deactivate a member: they remain in the workspace but lose all access until reactivated. The primary owner cannot be deactivated (co-owners can, by an owner), and you cannot deactivate yourself.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"members:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"member_id":{"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":["member_id"],"additionalProperties":false}}}}}},"/api/v1/member_get":{"get":{"operationId":"member_get","summary":"Get a single workspace member (by org member id) with profile, system role, and assigned custom roles. Email is null for members who hide it unless you are owner/admin.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"members:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"member_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/member_invite":{"post":{"operationId":"member_invite","summary":"Invite a person by email to this workspace. Inviting at the admin role requires you to be an owner or admin. Respects the free-tier seat cap.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"members:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([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"]},"custom_role_id":{"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":["email"],"additionalProperties":false}}}}}},"/api/v1/member_job_title_set":{"post":{"operationId":"member_job_title_set","summary":"Set or clear a member's per-org job title. Pass an empty string to clear it (the display then falls back to a role's preset title, if any). Editing your own title requires the members edit_own_job_title permission; editing others requires edit_job_title (owner/admin always may).","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"members:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"member_id":{"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)$"},"job_title":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]}},"required":["member_id","job_title"],"additionalProperties":false}}}}}},"/api/v1/member_reactivate":{"post":{"operationId":"member_reactivate","summary":"Reactivate a previously deactivated member, restoring their access.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"members:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"member_id":{"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":["member_id"],"additionalProperties":false}}}}}},"/api/v1/member_remove":{"post":{"operationId":"member_remove","summary":"Permanently remove a member from this workspace. The primary owner cannot be removed (co-owners can, by an owner), and you cannot remove yourself. No undo.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"members:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"member_id":{"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":["member_id"],"additionalProperties":false}}}}}},"/api/v1/member_role_change":{"post":{"operationId":"member_role_change","summary":"Change a member's system role (admin or member). Promoting/demoting admins or owners is reserved to owners. Co-owners can be demoted here, but the primary owner's role can't be changed (use Transfer ownership).","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"members:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"member_id":{"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)$"},"role":{"type":"string","enum":["admin","member"]}},"required":["member_id","role"],"additionalProperties":false}}}}}},"/api/v1/member_roles_set":{"post":{"operationId":"member_roles_set","summary":"Replace the full set of custom roles assigned to a member. Pass an empty list to clear all of their custom roles. All roles must belong to this workspace.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"roles:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"member_id":{"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)$"},"role_ids":{"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":["member_id","role_ids"],"additionalProperties":false}}}}}},"/api/v1/members_list":{"get":{"operationId":"members_list","summary":"List the members of this workspace with display name, username, email, system role, and per-org job title. Emails of members who hide their email are returned as null unless you are an owner/admin.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"members:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"include_deactivated","in":"query","required":false,"schema":{"type":"boolean"}}]}},"/api/v1/message_delete":{"post":{"operationId":"message_delete","summary":"Delete a message. You may delete your own (needs delete-messages) or, with delete_others-messages, anyone's. Soft delete.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"messages:moderate","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"message_id":{"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":["message_id"],"additionalProperties":false}}}}}},"/api/v1/message_edit":{"post":{"operationId":"message_edit","summary":"Edit one of YOUR OWN messages. Requires edit-messages permission. To edit someone else's message use message_edit_others.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"messages:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"message_id":{"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)$"},"content":{"type":"string","minLength":1,"maxLength":4000}},"required":["message_id","content"],"additionalProperties":false}}}}}},"/api/v1/message_edit_others":{"post":{"operationId":"message_edit_others","summary":"Edit another member's message. Requires the edit_others-messages permission.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"messages:moderate","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"message_id":{"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)$"},"content":{"type":"string","minLength":1,"maxLength":4000}},"required":["message_id","content"],"additionalProperties":false}}}}}},"/api/v1/message_send":{"post":{"operationId":"message_send","summary":"Send a message to a channel OR a DM thread (exactly one of channel_id / thread_id). Optionally reply under a parent message. Requires send-messages permission and channel/DM access.","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"messages:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"channel_id":{"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)$"},"thread_id":{"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)$"},"content":{"type":"string","minLength":1,"maxLength":4000},"parent_message_id":{"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":["content"],"additionalProperties":false}}}}}},"/api/v1/my_tasks":{"get":{"operationId":"my_tasks","summary":"List tasks assigned to the calling user. Filter by status (default: only 'open').","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["open","done"]}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/overdue_tasks":{"get":{"operationId":"overdue_tasks","summary":"Get tasks past their due date and still open, limited to boards the user can see.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/role_create":{"post":{"operationId":"role_create","summary":"Create a new custom role with a name, hex color, optional description, and optional preset job title (shown to every member holding the role).","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"roles:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":50},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"job_title":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]}},"required":["name"],"additionalProperties":false}}}}}},"/api/v1/role_delete":{"post":{"operationId":"role_delete","summary":"Delete a custom role. Members holding it lose it. System roles cannot be deleted. No undo.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"roles:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role_id":{"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":["role_id"],"additionalProperties":false}}}}}},"/api/v1/role_permissions_get":{"get":{"operationId":"role_permissions_get","summary":"List the (resource_type, action) permission grants attached to a role.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"roles:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"role_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/role_permissions_set":{"post":{"operationId":"role_permissions_set","summary":"Replace the full permission set of a custom role with the given (resource_type, action) grants. Pass an empty list to clear all grants. System roles cannot be modified.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"roles:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role_id":{"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)$"},"permissions":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"resource_type":{"type":"string","enum":["boards","tasks","documents","channels","messages","teams","members","roles","timelines","ai","settings","visualize","forms","goals"]},"action":{"type":"string","enum":["view","create","edit","delete","assign","comment","permanent_delete","join","send","edit_others","delete_others","pin","manage_members","invite","remove","change_role","edit_own_job_title","edit_job_title","use","manage_billing","manage_roles","view_audit","export_data","approve_submissions","view_activity"]}},"required":["resource_type","action"],"additionalProperties":false}}},"required":["role_id","permissions"],"additionalProperties":false}}}}}},"/api/v1/role_update":{"post":{"operationId":"role_update","summary":"Update a custom role's name, color, description, or preset job title. Pass job_title as an empty string or null to clear the preset. System roles cannot be modified.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"roles:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role_id":{"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)$"},"name":{"type":"string","minLength":1,"maxLength":50},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"job_title":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]}},"required":["role_id"],"additionalProperties":false}}}}}},"/api/v1/roles_list":{"get":{"operationId":"roles_list","summary":"List the custom and system roles in this workspace, ordered by position.","tags":["Members & Roles"],"security":[{"bearerAuth":[]}],"x-scope":"roles:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/search_workspace":{"get":{"operationId":"search_workspace","summary":"Search tasks, documents, and boards by keyword. Returns up to 10 of each, filtered to what the user can see.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}]}},"/api/v1/subtasks_list":{"get":{"operationId":"subtasks_list","summary":"List the direct subtasks of a task (child cards whose parent is this task), in board order.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"task_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/task_assignee_add":{"post":{"operationId":"task_assignee_add","summary":"Add an org member as an assignee on a task. No-op if already assigned.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:assign","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"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)$"},"user_id":{"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":["task_id","user_id"],"additionalProperties":false}}}}}},"/api/v1/task_assignee_remove":{"post":{"operationId":"task_assignee_remove","summary":"Remove an assignee from a task.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:assign","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"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)$"},"user_id":{"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":["task_id","user_id"],"additionalProperties":false}}}}}},"/api/v1/task_assignees_list":{"get":{"operationId":"task_assignees_list","summary":"List all assignees on a task with their profile info.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"task_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/task_assignees_set":{"post":{"operationId":"task_assignees_set","summary":"Replace a task's assignees with the exact set of user_ids given (pass [] to clear all). All ids must be org members.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:assign","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"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)$"},"user_ids":{"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":["task_id","user_ids"],"additionalProperties":false}}}}}},"/api/v1/task_attachment_delete":{"post":{"operationId":"task_attachment_delete","summary":"Delete a task attachment record. The uploader may delete their own; otherwise board delete permission is required. No undo.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:delete","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"attachment_id":{"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":["attachment_id"],"additionalProperties":false}}}}}},"/api/v1/task_attachment_url":{"get":{"operationId":"task_attachment_url","summary":"Generate a short-lived (1 hour) signed URL to view or download a single task attachment. Set download=true to force a save dialog.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"attachment_id","in":"query","required":true,"schema":{"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)$"}},{"name":"download","in":"query","required":false,"schema":{"type":"boolean"}}]}},"/api/v1/task_attachments_list":{"get":{"operationId":"task_attachments_list","summary":"List file attachments on a task (file name, size, type, uploader, storage path). Use task_attachment_url to fetch a viewable URL.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"task_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/task_card_details":{"get":{"operationId":"task_card_details","summary":"Batched card detail for a task: recent comments, attachment file names, and blocked-by / blocks dependency titles.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"task_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/task_comment_add":{"post":{"operationId":"task_comment_add","summary":"Add a comment to a task.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"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)$"},"content":{"type":"string","minLength":1,"maxLength":4000}},"required":["task_id","content"],"additionalProperties":false}}}}}},"/api/v1/task_comment_delete":{"post":{"operationId":"task_comment_delete","summary":"Soft-delete a task comment. The author may delete their own; otherwise board delete permission is required.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:delete","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"comment_id":{"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":["comment_id"],"additionalProperties":false}}}}}},"/api/v1/task_comment_edit":{"post":{"operationId":"task_comment_edit","summary":"Edit a task comment. Only the comment's own author may edit it (author-only).","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"comment_id":{"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)$"},"content":{"type":"string","minLength":1,"maxLength":10000}},"required":["comment_id","content"],"additionalProperties":false}}}}}},"/api/v1/task_comments_list":{"get":{"operationId":"task_comments_list","summary":"List comments on a task in chronological order.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"task_id","in":"query","required":true,"schema":{"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)$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/task_create":{"post":{"operationId":"task_create","summary":"Create a new task in a board and list. Resolve list_id via board_get first.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"board_id":{"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)$"},"list_id":{"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)$"},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string"},"priority":{"type":"string","enum":["none","low","medium","high","urgent"]},"due_date":{"type":"string"},"start_date":{"type":"string"},"assignee_id":{"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":["board_id","list_id","title"],"additionalProperties":false}}}}}},"/api/v1/task_delete":{"post":{"operationId":"task_delete","summary":"Permanently delete a task. No undo.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:delete","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"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":["task_id"],"additionalProperties":false}}}}}},"/api/v1/task_dependencies_list":{"get":{"operationId":"task_dependencies_list","summary":"List a task's dependencies: tasks that block it (blockedBy) and tasks it blocks (blocks).","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"task_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/task_dependency_add":{"post":{"operationId":"task_dependency_add","summary":"Add a dependency: blocking_task_id must be completed before blocked_task_id. Both tasks must be on boards you can edit.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"blocking_task_id":{"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)$"},"blocked_task_id":{"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":["blocking_task_id","blocked_task_id"],"additionalProperties":false}}}}}},"/api/v1/task_dependency_remove":{"post":{"operationId":"task_dependency_remove","summary":"Remove a task dependency by its id.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dependency_id":{"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":["dependency_id"],"additionalProperties":false}}}}}},"/api/v1/task_field_clear":{"post":{"operationId":"task_field_clear","summary":"Clear a single custom field value from a task (the field definition stays on the board).","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"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)$"},"field_id":{"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":["task_id","field_id"],"additionalProperties":false}}}}}},"/api/v1/task_field_set":{"post":{"operationId":"task_field_set","summary":"Set (upsert) a custom field value on a task. value is JSON matching the field type (string, number, boolean, array, etc.).","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"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)$"},"field_id":{"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)$"},"value":{}},"required":["task_id","field_id","value"],"additionalProperties":false}}}}}},"/api/v1/task_field_values_list":{"get":{"operationId":"task_field_values_list","summary":"List the custom field values set on a task, each joined to its field name and type.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"task_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/task_is_watching":{"get":{"operationId":"task_is_watching","summary":"Check whether the calling user is watching a task.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"task_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/task_move":{"post":{"operationId":"task_move","summary":"Move a task to a different list on the same board.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"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)$"},"target_list_id":{"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":["task_id","target_list_id"],"additionalProperties":false}}}}}},"/api/v1/task_reference_link":{"post":{"operationId":"task_reference_link","summary":"Link a diagram (flowchart or chart) to a task. You must be able to view the referenced diagram.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"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)$"},"ref_type":{"type":"string","enum":["flowchart","chart"]},"ref_id":{"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":["task_id","ref_type","ref_id"],"additionalProperties":false}}}}}},"/api/v1/task_reference_unlink":{"post":{"operationId":"task_reference_unlink","summary":"Remove a diagram reference from a task by its reference id. The reference's creator (or a board editor) may remove it.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reference_id":{"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":["reference_id"],"additionalProperties":false}}}}}},"/api/v1/task_references_list":{"get":{"operationId":"task_references_list","summary":"List the diagrams (flowcharts / charts) linked to a task, hydrated with each target's title and type.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"task_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/task_time_entry_delete":{"post":{"operationId":"task_time_entry_delete","summary":"Delete a time entry and decrement the task's timeSpent. The logger may delete their own; otherwise board delete permission is required. No undo.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:delete","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entry_id":{"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":["entry_id"],"additionalProperties":false}}}}}},"/api/v1/task_time_list":{"get":{"operationId":"task_time_list","summary":"List time entries logged against a task, newest first, with the logging user's profile info.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"task_id","in":"query","required":true,"schema":{"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)$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/task_time_log":{"post":{"operationId":"task_time_log","summary":"Log time (in minutes) against a task as the calling user. Increments the task's running timeSpent. logged_at is an optional YYYY-MM-DD date.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"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)$"},"minutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"description":{"type":"string","maxLength":500},"logged_at":{"type":"string"}},"required":["task_id","minutes"],"additionalProperties":false}}}}}},"/api/v1/task_time_summary":{"get":{"operationId":"task_time_summary","summary":"Get a time-tracking summary for a task: total minutes logged, the task's running timeSpent, and the entry count.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"task_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/task_unwatch":{"post":{"operationId":"task_unwatch","summary":"Remove the calling user from a task's watchers.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"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":["task_id"],"additionalProperties":false}}}}}},"/api/v1/task_update":{"post":{"operationId":"task_update","summary":"Update a task's title, description, status, priority, dates, or assignee. Pass status_id to set the exact board status (discover ids via board_statuses_list); it takes precedence over the open/done `status` flag.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"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)$"},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","enum":["open","done"]},"status_id":{"anyOf":[{"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)$"},{"type":"null"}]},"priority":{"type":"string","enum":["none","low","medium","high","urgent"]},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}]},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}]},"assignee_id":{"anyOf":[{"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)$"},{"type":"null"}]}},"required":["task_id"],"additionalProperties":false}}}}}},"/api/v1/task_watch":{"post":{"operationId":"task_watch","summary":"Make the calling user a watcher of a task. No-op if already watching.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"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":["task_id"],"additionalProperties":false}}}}}},"/api/v1/task_watchers_list":{"get":{"operationId":"task_watchers_list","summary":"List the users watching a task (subscribed to its updates).","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"task_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/tasks_list":{"get":{"operationId":"tasks_list","summary":"List tasks in the workspace, optionally filtered by board, status, priority, or assignee. Only returns tasks on boards the user can see.","tags":["Tasks"],"security":[{"bearerAuth":[]}],"x-scope":"tasks:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"board_id","in":"query","required":false,"schema":{"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)$"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["open","done"]}},{"name":"priority","in":"query","required":false,"schema":{"type":"string","enum":["none","low","medium","high","urgent"]}},{"name":"assignee_id","in":"query","required":false,"schema":{"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)$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/team_activity":{"get":{"operationId":"team_activity","summary":"Get recent board activity for a team. Requires that the user can see the team AND holds the view_activity grant (owner/admin bypass).","tags":["Teams"],"security":[{"bearerAuth":[]}],"x-scope":"teams:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"team_id","in":"query","required":true,"schema":{"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)$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/team_boards":{"get":{"operationId":"team_boards","summary":"List the boards belonging to a team, with list and task counts. Requires that the user can see the team.","tags":["Teams"],"security":[{"bearerAuth":[]}],"x-scope":"teams:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"team_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/team_channels":{"get":{"operationId":"team_channels","summary":"List the channels belonging to a team. Requires that the user can see the team.","tags":["Teams"],"security":[{"bearerAuth":[]}],"x-scope":"teams:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"team_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/team_create":{"post":{"operationId":"team_create","summary":"Create a new team with a name, optional description, and color.","tags":["Teams"],"security":[{"bearerAuth":[]}],"x-scope":"teams:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}},"required":["name"],"additionalProperties":false}}}}}},"/api/v1/team_delete":{"post":{"operationId":"team_delete","summary":"Permanently delete a team. Its boards/channels/documents are detached (team_id set null), not deleted. No undo.","tags":["Teams"],"security":[{"bearerAuth":[]}],"x-scope":"teams:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"team_id":{"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":["team_id"],"additionalProperties":false}}}}}},"/api/v1/team_documents":{"get":{"operationId":"team_documents","summary":"List the documents belonging to a team (excluding trashed). Requires that the user can see the team.","tags":["Teams"],"security":[{"bearerAuth":[]}],"x-scope":"teams:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"team_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/team_get":{"get":{"operationId":"team_get","summary":"Get a single team with its members (display name, username, email). Requires that the user can see the team.","tags":["Teams"],"security":[{"bearerAuth":[]}],"x-scope":"teams:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"team_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/team_member_add":{"post":{"operationId":"team_member_add","summary":"Add an existing org member to a team. The target must already be an active org member.","tags":["Teams"],"security":[{"bearerAuth":[]}],"x-scope":"teams:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"team_id":{"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)$"},"user_id":{"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":["team_id","user_id"],"additionalProperties":false}}}}}},"/api/v1/team_member_remove":{"post":{"operationId":"team_member_remove","summary":"Remove a member from a team. Removing yourself (self-leave) is always allowed; removing others requires manage_members on the team. The team owner cannot be removed until ownership is transferred.","tags":["Teams"],"security":[{"bearerAuth":[]}],"x-scope":"teams:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"team_id":{"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)$"},"user_id":{"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":["team_id","user_id"],"additionalProperties":false}}}}}},"/api/v1/team_ownership_transfer":{"post":{"operationId":"team_ownership_transfer","summary":"Transfer team ownership to another current team member. Allowed for the current team owner or an org owner/admin. The new owner must already be a member of the team.","tags":["Teams"],"security":[{"bearerAuth":[]}],"x-scope":"teams:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"team_id":{"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)$"},"new_owner_id":{"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":["team_id","new_owner_id"],"additionalProperties":false}}}}}},"/api/v1/team_stats":{"get":{"operationId":"team_stats","summary":"Get aggregated counts for a team (tasks, open/completed/overdue, members, boards, channels). Requires that the user can see the team.","tags":["Teams"],"security":[{"bearerAuth":[]}],"x-scope":"teams:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"team_id","in":"query","required":true,"schema":{"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)$"}}]}},"/api/v1/team_update":{"post":{"operationId":"team_update","summary":"Update a team's name, description, or color.","tags":["Teams"],"security":[{"bearerAuth":[]}],"x-scope":"teams:manage","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"team_id":{"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)$"},"name":{"type":"string","minLength":1,"maxLength":80},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}},"required":["team_id"],"additionalProperties":false}}}}}},"/api/v1/teams_list":{"get":{"operationId":"teams_list","summary":"List the teams the user can see in this workspace. Owner/admin see every team; everyone else sees only teams they belong to. Includes member counts.","tags":["Teams"],"security":[{"bearerAuth":[]}],"x-scope":"teams:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/thread_replies":{"get":{"operationId":"thread_replies","summary":"List replies under a parent message in chronological order. The caller must be able to see the parent (channel membership / DM participation).","tags":["Messaging"],"security":[{"bearerAuth":[]}],"x-scope":"messages:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"parent_message_id","in":"query","required":true,"schema":{"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)$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}]}},"/api/v1/timeline_boards":{"get":{"operationId":"timeline_boards","summary":"List boards available as timeline filters (id, name, color). Returns nothing if the user can't view timelines.","tags":["Timelines"],"security":[{"bearerAuth":[]}],"x-scope":"timelines:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}},"/api/v1/timeline_task_dates_set":{"post":{"operationId":"timeline_task_dates_set","summary":"Set or clear a task's start date and/or due date on the timeline. Pass null for either to clear it. Dates are 'YYYY-MM-DD'.","tags":["Timelines"],"security":[{"bearerAuth":[]}],"x-scope":"timelines:write","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"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)$"},"start_date":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}]},"due_date":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}]}},"required":["task_id","start_date","due_date"],"additionalProperties":false}}}}}},"/api/v1/timeline_tasks":{"get":{"operationId":"timeline_tasks","summary":"List tasks that have a start date and/or due date so they can be plotted on the timeline. Only returns tasks on boards the user can see. Optionally filter by board, assignee, priority, or status.","tags":["Timelines"],"security":[{"bearerAuth":[]}],"x-scope":"timelines:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[{"name":"board_id","in":"query","required":false,"schema":{"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)$"}},{"name":"assignee_id","in":"query","required":false,"schema":{"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)$"}},{"name":"priority","in":"query","required":false,"schema":{"type":"string","enum":["none","low","medium","high","urgent"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["open","done"]}}]}},"/api/v1/whoami":{"get":{"operationId":"whoami","summary":"Return the calling user's identity in this org: user id, display name, email, and system role (owner / admin / member). Always available.","tags":["Identity"],"security":[{"bearerAuth":[]}],"x-scope":"identity:read","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters or request body"},"401":{"description":"Missing, invalid, revoked, or expired API key"},"402":{"description":"Workspace is not on the Pro plan"},"403":{"description":"Missing api:use permission or required scope"},"404":{"description":"Unknown endpoint or resource not accessible"},"429":{"description":"Rate limit or daily quota exceeded"}},"parameters":[]}}}}