{"openapi":"3.0.0","info":{"version":"1.0.0","title":"Orsane API"},"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Personal API key. Manage your keys in Settings → API Keys."}},"schemas":{},"parameters":{}},"paths":{"/v1/me":{"get":{"tags":["Me"],"summary":"Get the authenticated caller","description":"Returns the user the API key belongs to, the team the key is bound to, and the user's role in that team. Use this on app startup to identify the caller without storing it alongside the key.","responses":{"200":{"description":"Caller identity.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"404":{"description":"Membership not found (the key's user is no longer in the bound team).","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}}}}},"/v1/lists":{"get":{"tags":["Lists"],"summary":"List task lists","description":"Returns every non-archived task list the authenticated user is a member of, scoped to their current organization.","responses":{"200":{"description":"Task lists the authenticated user has access to.","content":{"application/json":{"schema":{"_def":{"type":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}}}}}}},"post":{"tags":["Lists"],"summary":"Create a task list","description":"Creates a new task list in the organization the API key is bound to. The API key's owner is automatically granted access to the new list. Defaults `color` to `Green` when omitted. Connected web clients receive a realtime event.","requestBody":{"content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"responses":{"201":{"description":"Task list created successfully.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}}}}},"/v1/lists/{listId}":{"get":{"tags":["Lists"],"summary":"Get a task list by id","description":"Returns a single task list. The API key's owner must be a member of the list — even archived lists they belong to can be fetched here.","parameters":[{"in":"path","name":"listId","required":true,"description":"Numeric ID of the list to fetch.","schema":{"type":"string","pattern":"^\\d+$","example":"1"}}],"responses":{"200":{"description":"Task list detail.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"403":{"description":"The API key's owner does not have access to this list.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"404":{"description":"List not found.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}}}},"patch":{"tags":["Lists"],"summary":"Update a task list","description":"Updates attributes of an existing task list. Only fields you provide are changed. The API key's owner must be a member of the list. Use the dedicated archive/unarchive endpoints to change archive state. Connected web clients receive a realtime event.","parameters":[{"in":"path","name":"listId","required":true,"description":"Numeric ID of the list to update.","schema":{"type":"string","pattern":"^\\d+$","example":"1"}}],"requestBody":{"content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"responses":{"200":{"description":"Task list updated.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"403":{"description":"The API key's owner does not have access to this list.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"404":{"description":"List not found.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}}}}},"/v1/lists/{listId}/archive":{"post":{"tags":["Lists"],"summary":"Archive a task list","description":"Archives a task list. The API key's owner must be a member of the list. Archived lists no longer appear in `GET /v1/lists` or in the web sidebar, but their tasks remain accessible. Idempotent — archiving an already-archived list returns success. Connected web clients receive a realtime event.","parameters":[{"in":"path","name":"listId","required":true,"description":"Numeric ID of the list to archive.","schema":{"type":"string","pattern":"^\\d+$","example":"1"}}],"responses":{"200":{"description":"Task list archived.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"403":{"description":"The API key's owner does not have access to this list.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"404":{"description":"List not found.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}}}}},"/v1/lists/{listId}/unarchive":{"post":{"tags":["Lists"],"summary":"Unarchive a task list","description":"Restores a previously-archived task list. The API key's owner must be a member of the list. Idempotent — unarchiving a non-archived list returns success. Connected web clients receive a realtime event so the list reappears in their sidebar.","parameters":[{"in":"path","name":"listId","required":true,"description":"Numeric ID of the list to unarchive.","schema":{"type":"string","pattern":"^\\d+$","example":"1"}}],"responses":{"200":{"description":"Task list unarchived.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"403":{"description":"The API key's owner does not have access to this list.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"404":{"description":"List not found.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}}}}},"/v1/task-statuses":{"get":{"tags":["Task statuses"],"summary":"List task statuses","description":"Returns every task status configured in the organization the API key is bound to, ordered by `order` ascending.","responses":{"200":{"description":"Task statuses for the organization.","content":{"application/json":{"schema":{"_def":{"type":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}}}}}}}},"/v1/users":{"get":{"tags":["Users"],"summary":"List users in the organization","description":"Returns every user that is a member of the organization the API key is bound to, with their workspace role.","responses":{"200":{"description":"Members of the organization.","content":{"application/json":{"schema":{"_def":{"type":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}}}}}}}},"/v1/tasks":{"get":{"tags":["Tasks"],"summary":"List tasks","description":"Returns every task in the organization that the API key's owner has access to: tasks they created, tasks they're assigned to, or tasks attached to a non-archived list they're a member of. Soft-deleted tasks and tasks reachable only through archived lists are never included. All filters compose with AND; array filters (`taskListId`, `assigneeId`, `taskStatusId`, `priority`) match any of the supplied values.","parameters":[{"in":"query","name":"taskListId","required":false,"description":"Task list ID to filter on. Repeat the parameter to match any of several lists.","schema":{"type":"array","items":{"type":"string","pattern":"^\\d+$"}}},{"in":"query","name":"query","required":false,"description":"Free-text title filter (case-insensitive substring match).","schema":{"type":"string"}},{"in":"query","name":"assigneeId","required":false,"description":"User ID to filter on. Repeat the parameter to match any of several assignees.","schema":{"type":"array","items":{"type":"string"}}},{"in":"query","name":"taskStatusId","required":false,"description":"Status ID to filter on. Repeat the parameter to match any of several statuses.","schema":{"type":"array","items":{"type":"string","pattern":"^\\d+$"}}},{"in":"query","name":"isCompleted","required":false,"description":"`true` returns only completed tasks; `false` returns only non-completed tasks; omit to return both.","schema":{"type":"string","enum":["true","false"]}},{"in":"query","name":"priority","required":false,"description":"Priority to filter on. Repeat the parameter to match any of several priorities.","schema":{"type":"array","items":{"type":"string","enum":["low","medium","high","urgent"]}}},{"in":"query","name":"dueDateFrom","required":false,"description":"Inclusive lower bound for `dueDate` (ISO date `YYYY-MM-DD`).","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"in":"query","name":"dueDateTo","required":false,"description":"Inclusive upper bound for `dueDate` (ISO date `YYYY-MM-DD`).","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"in":"query","name":"limit","required":false,"description":"Hard cap on the number of returned tasks. Integer between 1 and 1000. Defaults to 1000.","schema":{"type":"string","pattern":"^\\d+$"}}],"responses":{"200":{"description":"Tasks the API key's owner has access to.","content":{"application/json":{"schema":{"_def":{"type":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}}}}}}},"post":{"tags":["Tasks"],"summary":"Create a task","description":"Creates a new task in the organization the API key is bound to. The task is auto-numbered. If `taskStatusId` is omitted, the organization's default status is used. Pass `taskListIds` to attach the task to one or more lists, `parentId` to make it a subtask. Pass `description` as CommonMark markdown to set the task body. Connected web clients in the workspace receive a realtime event.","requestBody":{"content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":{"shape":{"title":{"_def":{"checks":[{"kind":"min","value":1}],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"description":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional","description":"Task body as CommonMark markdown."},"~standard":{"version":1,"vendor":"zod"}},"priority":{"_def":{"innerType":{"_def":{"innerType":{"_def":{"values":["low","medium","high","urgent"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodNullable"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"dueDate":{"_def":{"innerType":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodNullable"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"assigneeIds":{"_def":{"innerType":{"_def":{"type":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"taskStatusId":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"parentId":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"taskListIds":{"_def":{"innerType":{"_def":{"type":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},"keys":["title","description","priority","dueDate","assigneeIds","taskStatusId","parentId","taskListIds"]}}}}},"responses":{"201":{"description":"Task created successfully.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}}}}},"/v1/tasks/{taskId}":{"get":{"tags":["Tasks"],"summary":"Get a task by id","description":"Returns the full detail for a single task, including status, assignees, attached lists, parent task reference, subtask count, and rich-text description. The authenticated user must have access to the task — they created it, are assigned to it, or belong to one of its lists.","parameters":[{"in":"path","name":"taskId","required":true,"description":"Numeric ID of the task","schema":{"type":"string","pattern":"^\\d+$","example":"1"}}],"responses":{"200":{"description":"Retrieve detailed information for a single task.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"403":{"description":"The caller does not have access to this task.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"404":{"description":"Task not found.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}}}},"delete":{"tags":["Tasks"],"summary":"Delete a task","description":"Permanently deletes a task. The API key's owner must have access — they created it, are assigned to it, or belong to one of its lists. Connected web clients in the workspace receive a realtime event so the task disappears from their UI.","parameters":[{"in":"path","name":"taskId","required":true,"description":"Numeric ID of the task to delete.","schema":{"type":"string","pattern":"^\\d+$","example":"1"}}],"responses":{"200":{"description":"Task deleted successfully.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"403":{"description":"The API key's owner does not have access to this task.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"404":{"description":"Task not found.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}}}},"patch":{"tags":["Tasks"],"summary":"Update a task","description":"Updates attributes of an existing task. Only fields you provide are changed; pass `null` to clear a nullable field. Provide `assigneeIds` to replace the current assignee set in one go (omit it to leave assignees untouched). Connected web clients in the workspace receive a realtime event.","parameters":[{"in":"path","name":"taskId","required":true,"description":"Numeric ID of the task to update.","schema":{"type":"string","pattern":"^\\d+$","example":"1"}}],"requestBody":{"content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"responses":{"200":{"description":"Task updated successfully.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"403":{"description":"The API key's owner does not have access to this task.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}},"404":{"description":"Task not found.","content":{"application/json":{"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}}}}}}}}