{ "openapi": "3.0.3", "info": { "title": "Kaneo API", "description": "Kaneo Project Management API - Manage projects, tasks, labels, and more", "version": "1.0.0" }, "servers": [ { "url": "https://cloud.kaneo.app/api", "description": "Kaneo API Server" } ], "components": { "securitySchemes": { "bearerAuth": { "type": "http", "scheme": "bearer", "description": "Bearer token authentication" }, "apiKeyCookie": { "type": "apiKey", "in": "cookie", "name": "apiKeyCookie", "description": "API Key authentication via cookie" } }, "schemas": { "Organization": { "type": "object", "properties": { "id": { "type": "string", "nullable": true }, "name": { "type": "string" }, "slug": { "type": "string" }, "logo": { "type": "string", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "metadata": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true } }, "required": [ "name", "slug", "createdAt" ] }, "Team": { "type": "object", "properties": { "id": { "type": "string", "nullable": true }, "name": { "type": "string" }, "organizationId": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time", "nullable": true } }, "required": [ "name", "organizationId", "createdAt" ] } } }, "security": [ { "bearerAuth": [] } ], "paths": { "/instance/status": { "get": { "operationId": "getInstanceStatus", "tags": [ "Instance" ], "description": "Public instance setup status. When hasUsers is false the next signup becomes the instance admin.", "security": [], "responses": { "200": { "description": "Instance status", "content": { "application/json": { "schema": { "type": "object", "properties": { "hasUsers": { "type": "boolean" }, "hasAdmin": { "type": "boolean" } }, "required": [ "hasUsers", "hasAdmin" ] } } } } }, "summary": "Get Instance Status" } }, "/auth/get-session": { "get": { "operationId": "getSession", "tags": [ "Authentication" ], "description": "Get the current authenticated session", "security": [], "responses": { "200": { "description": "Current session details or null when unauthenticated", "content": { "application/json": { "schema": { "type": "object" } } } } }, "summary": "Get Session" } }, "/asset/{id}": { "get": { "operationId": "getAsset", "tags": [ "Assets" ], "description": "Download an uploaded asset by ID", "security": [], "responses": { "200": { "description": "The requested asset binary stream", "content": { "*/*": { "schema": { "type": "string", "format": "binary" } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Get Asset" } }, "/config": { "get": { "operationId": "getConfig", "tags": [ "Config" ], "description": "Get application settings and configuration", "responses": { "200": { "description": "Application settings", "content": { "application/json": { "schema": { "type": "object", "properties": { "disableRegistration": { "type": "boolean", "nullable": true }, "disablePasswordRegistration": { "type": "boolean", "nullable": true }, "disableEmailOtpSignIn": { "type": "boolean", "nullable": true }, "isDemoMode": { "type": "boolean" }, "hasSmtp": { "type": "boolean" }, "hasGithubSignIn": { "type": "boolean", "nullable": true }, "hasGoogleSignIn": { "type": "boolean", "nullable": true }, "hasDiscordSignIn": { "type": "boolean", "nullable": true }, "hasCustomOAuth": { "type": "boolean", "nullable": true }, "hasGuestAccess": { "type": "boolean", "nullable": true }, "disableLoginForm": { "type": "boolean", "nullable": true }, "customOAuthAutoLogin": { "type": "boolean", "nullable": true }, "customOAuthLogoutUrl": { "type": "string", "nullable": true } }, "required": [ "disableRegistration", "disablePasswordRegistration", "disableEmailOtpSignIn", "isDemoMode", "hasSmtp", "hasGithubSignIn", "hasGoogleSignIn", "hasDiscordSignIn", "hasCustomOAuth", "hasGuestAccess", "disableLoginForm", "customOAuthAutoLogin", "customOAuthLogoutUrl" ] } } } } }, "summary": "Get Config" } }, "/auth/device": { "get": { "operationId": "getDeviceAuthorizationPage", "tags": [ "Authentication" ], "description": "Redirect browser-based device authorization requests to the web UI", "security": [], "parameters": [ { "in": "query", "name": "user_code", "schema": { "type": "string" } }, { "in": "query", "name": "ui", "schema": { "enum": [ "1" ], "type": "string" } } ], "responses": { "200": { "description": "Device authorization payload from Better Auth", "content": { "application/json": { "schema": { "type": "object" } } } }, "302": { "description": "Redirects the browser to the web app device screen" } }, "summary": "Get Device Authorization Page" } }, "/oauth/id-token": { "get": { "operationId": "getOAuthIdToken", "tags": [ "Authentication" ], "description": "Get the id_token for the current user's custom OAuth account", "responses": { "200": { "description": "The id_token if available", "content": { "application/json": { "schema": { "type": "object", "properties": { "idToken": { "type": "string", "nullable": true } }, "required": [ "idToken" ] } } } } }, "summary": "Get OAuth Id Token" } }, "/project": { "get": { "operationId": "listProjects", "tags": [ "Projects" ], "description": "Get all projects in a workspace", "responses": { "200": { "description": "List of projects with statistics", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "workspaceId": { "type": "string" }, "slug": { "type": "string" }, "icon": { "type": "string", "nullable": true }, "name": { "type": "string" }, "description": { "type": "string", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "isPublic": { "type": "boolean", "nullable": true }, "archivedAt": { "nullable": true } }, "required": [ "id", "workspaceId", "slug", "icon", "name", "description", "createdAt", "isPublic", "archivedAt" ] } } } } } }, "parameters": [ { "in": "query", "name": "workspaceId", "schema": { "type": "string" }, "required": true }, { "in": "query", "name": "includeArchived", "schema": { "type": "string" } } ], "summary": "List Projects" }, "post": { "operationId": "createProject", "tags": [ "Projects" ], "description": "Create a new project in a workspace", "responses": { "200": { "description": "Project created successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "workspaceId": { "type": "string" }, "slug": { "type": "string" }, "icon": { "type": "string", "nullable": true }, "name": { "type": "string" }, "description": { "type": "string", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "isPublic": { "type": "boolean", "nullable": true }, "archivedAt": { "nullable": true } }, "required": [ "id", "workspaceId", "slug", "icon", "name", "description", "createdAt", "isPublic", "archivedAt" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "workspaceId": { "type": "string" }, "icon": { "type": "string" }, "slug": { "type": "string" } }, "required": [ "name", "workspaceId", "icon", "slug" ] } } } }, "summary": "Create Project" } }, "/project/{id}": { "get": { "operationId": "getProject", "tags": [ "Projects" ], "description": "Get a specific project by ID", "responses": { "200": { "description": "Project details", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "workspaceId": { "type": "string" }, "slug": { "type": "string" }, "icon": { "type": "string", "nullable": true }, "name": { "type": "string" }, "description": { "type": "string", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "isPublic": { "type": "boolean", "nullable": true }, "archivedAt": { "nullable": true } }, "required": [ "id", "workspaceId", "slug", "icon", "name", "description", "createdAt", "isPublic", "archivedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Get Project" }, "put": { "operationId": "updateProject", "tags": [ "Projects" ], "description": "Update an existing project", "responses": { "200": { "description": "Project updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "workspaceId": { "type": "string" }, "slug": { "type": "string" }, "icon": { "type": "string", "nullable": true }, "name": { "type": "string" }, "description": { "type": "string", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "isPublic": { "type": "boolean", "nullable": true }, "archivedAt": { "nullable": true } }, "required": [ "id", "workspaceId", "slug", "icon", "name", "description", "createdAt", "isPublic", "archivedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "icon": { "type": "string" }, "slug": { "type": "string" }, "description": { "type": "string" }, "isPublic": { "type": "boolean" } }, "required": [ "name", "icon", "slug", "description", "isPublic" ] } } } }, "summary": "Update Project" }, "delete": { "operationId": "deleteProject", "tags": [ "Projects" ], "description": "Delete a project by ID", "responses": { "200": { "description": "Project deleted successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "workspaceId": { "type": "string" }, "slug": { "type": "string" }, "icon": { "type": "string", "nullable": true }, "name": { "type": "string" }, "description": { "type": "string", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "isPublic": { "type": "boolean", "nullable": true }, "archivedAt": { "nullable": true } }, "required": [ "id", "workspaceId", "slug", "icon", "name", "description", "createdAt", "isPublic", "archivedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Delete Project" } }, "/project/{id}/archive": { "put": { "operationId": "archiveProject", "tags": [ "Projects" ], "description": "Archive a project by ID", "responses": { "200": { "description": "Project archived successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "workspaceId": { "type": "string" }, "slug": { "type": "string" }, "icon": { "type": "string", "nullable": true }, "name": { "type": "string" }, "description": { "type": "string", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "isPublic": { "type": "boolean", "nullable": true }, "archivedAt": { "nullable": true } }, "required": [ "id", "workspaceId", "slug", "icon", "name", "description", "createdAt", "isPublic", "archivedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Archive Project" } }, "/project/{id}/unarchive": { "put": { "operationId": "unarchiveProject", "tags": [ "Projects" ], "description": "Unarchive a project by ID", "responses": { "200": { "description": "Project unarchived successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "workspaceId": { "type": "string" }, "slug": { "type": "string" }, "icon": { "type": "string", "nullable": true }, "name": { "type": "string" }, "description": { "type": "string", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "isPublic": { "type": "boolean", "nullable": true }, "archivedAt": { "nullable": true } }, "required": [ "id", "workspaceId", "slug", "icon", "name", "description", "createdAt", "isPublic", "archivedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Unarchive Project" } }, "/task/tasks/{projectId}": { "get": { "operationId": "listTasks", "tags": [ "Tasks" ], "description": "Get all tasks for a specific project", "responses": { "200": { "description": "Project with tasks organized by columns", "content": { "application/json": { "schema": { "type": "object" } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true }, { "in": "query", "name": "status", "schema": { "type": "string" } }, { "in": "query", "name": "priority", "schema": { "type": "string" } }, { "in": "query", "name": "assigneeId", "schema": { "type": "string" } }, { "in": "query", "name": "page", "schema": { "type": "string" } }, { "in": "query", "name": "limit", "schema": { "type": "string" } }, { "in": "query", "name": "sortBy", "schema": { "enum": [ "createdAt", "priority", "dueDate", "position", "title", "number" ], "type": "string" } }, { "in": "query", "name": "sortOrder", "schema": { "enum": [ "asc", "desc" ], "type": "string" } }, { "in": "query", "name": "dueBefore", "schema": { "type": "string" } }, { "in": "query", "name": "dueAfter", "schema": { "type": "string" } } ], "summary": "List Tasks" } }, "/task/bulk": { "patch": { "operationId": "bulkUpdateTasks", "tags": [ "Tasks" ], "description": "Perform bulk operations on multiple tasks", "responses": { "200": { "description": "Bulk operation completed successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "updatedCount": { "type": "number" } }, "required": [ "success", "updatedCount" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "taskIds": { "type": "array", "items": { "type": "string" }, "minItems": 1 }, "operation": { "enum": [ "updateStatus", "updatePriority", "updateAssignee", "delete", "addLabel", "removeLabel", "updateDueDate" ], "type": "string" }, "value": { "type": "string", "nullable": true } }, "required": [ "taskIds", "operation" ] } } } }, "summary": "Bulk Update Tasks" } }, "/task/{projectId}": { "post": { "operationId": "createTask", "tags": [ "Tasks" ], "description": "Create a new task in a project", "responses": { "200": { "description": "Task created successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "position": { "type": "number", "nullable": true }, "number": { "type": "number", "nullable": true }, "userId": { "type": "string", "nullable": true }, "title": { "type": "string" }, "description": { "type": "string", "nullable": true }, "status": { "type": "string" }, "priority": { "enum": [ "no-priority", "low", "medium", "high", "urgent" ], "type": "string" }, "startDate": { "type": "string", "format": "date-time" }, "dueDate": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "position", "number", "userId", "title", "description", "status", "priority", "createdAt" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "title": { "type": "string" }, "description": { "type": "string" }, "startDate": { "type": "string" }, "dueDate": { "type": "string" }, "priority": { "enum": [ "no-priority", "low", "medium", "high", "urgent" ], "type": "string" }, "status": { "type": "string" }, "userId": { "type": "string" } }, "required": [ "title", "description", "priority", "status" ] } } } }, "parameters": [ { "schema": { "type": "string" }, "in": "path", "name": "projectId", "required": true } ], "summary": "Create Task" } }, "/task/{id}": { "get": { "operationId": "getTask", "tags": [ "Tasks" ], "description": "Get a specific task by ID", "responses": { "200": { "description": "Task details", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "position": { "type": "number", "nullable": true }, "number": { "type": "number", "nullable": true }, "userId": { "type": "string", "nullable": true }, "title": { "type": "string" }, "description": { "type": "string", "nullable": true }, "status": { "type": "string" }, "priority": { "enum": [ "no-priority", "low", "medium", "high", "urgent" ], "type": "string" }, "startDate": { "type": "string", "format": "date-time" }, "dueDate": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "position", "number", "userId", "title", "description", "status", "priority", "createdAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Get Task" }, "put": { "operationId": "updateTask", "tags": [ "Tasks" ], "description": "Update all fields of a task", "responses": { "200": { "description": "Task updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "position": { "type": "number", "nullable": true }, "number": { "type": "number", "nullable": true }, "userId": { "type": "string", "nullable": true }, "title": { "type": "string" }, "description": { "type": "string", "nullable": true }, "status": { "type": "string" }, "priority": { "enum": [ "no-priority", "low", "medium", "high", "urgent" ], "type": "string" }, "startDate": { "type": "string", "format": "date-time" }, "dueDate": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "position", "number", "userId", "title", "description", "status", "priority", "createdAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "title": { "type": "string" }, "description": { "type": "string" }, "startDate": { "type": "string" }, "dueDate": { "type": "string" }, "priority": { "enum": [ "no-priority", "low", "medium", "high", "urgent" ], "type": "string" }, "status": { "type": "string" }, "projectId": { "type": "string" }, "position": { "type": "number" }, "userId": { "type": "string" } }, "required": [ "title", "description", "priority", "status", "projectId", "position" ] } } } }, "summary": "Update Task" }, "delete": { "operationId": "deleteTask", "tags": [ "Tasks" ], "description": "Delete a task by ID", "responses": { "200": { "description": "Task deleted successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "position": { "type": "number", "nullable": true }, "number": { "type": "number", "nullable": true }, "userId": { "type": "string", "nullable": true }, "title": { "type": "string" }, "description": { "type": "string", "nullable": true }, "status": { "type": "string" }, "priority": { "enum": [ "no-priority", "low", "medium", "high", "urgent" ], "type": "string" }, "startDate": { "type": "string", "format": "date-time" }, "dueDate": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "position", "number", "userId", "title", "description", "status", "priority", "createdAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Delete Task" } }, "/task/move/{id}": { "put": { "operationId": "moveTask", "tags": [ "Tasks" ], "description": "Move a task to another project", "responses": { "200": { "description": "Task moved successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "task": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "position": { "type": "number", "nullable": true }, "number": { "type": "number", "nullable": true }, "userId": { "type": "string", "nullable": true }, "title": { "type": "string" }, "description": { "type": "string", "nullable": true }, "status": { "type": "string" }, "priority": { "enum": [ "no-priority", "low", "medium", "high", "urgent" ], "type": "string" }, "startDate": { "type": "string", "format": "date-time" }, "dueDate": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "position", "number", "userId", "title", "description", "status", "priority", "createdAt" ] }, "sourceProjectId": { "type": "string" }, "destinationProjectId": { "type": "string" } }, "required": [ "task", "sourceProjectId", "destinationProjectId" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "destinationProjectId": { "type": "string" }, "destinationStatus": { "type": "string" } }, "required": [ "destinationProjectId" ] } } } }, "summary": "Move Task" } }, "/task/export/{projectId}": { "get": { "operationId": "exportTasks", "tags": [ "Tasks" ], "description": "Export all tasks from a project", "responses": { "200": { "description": "Exported tasks data", "content": { "application/json": { "schema": { "type": "object" } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "summary": "Export Tasks" } }, "/task/import/{projectId}": { "post": { "operationId": "importTasks", "tags": [ "Tasks" ], "description": "Import multiple tasks into a project", "responses": { "200": { "description": "Tasks imported successfully", "content": { "application/json": { "schema": { "type": "object" } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "tasks": { "type": "array", "items": { "type": "object", "properties": { "title": { "type": "string" }, "description": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string" }, "startDate": { "type": "string", "nullable": true }, "dueDate": { "type": "string", "nullable": true }, "userId": { "type": "string", "nullable": true } }, "required": [ "title", "status" ] } } }, "required": [ "tasks" ] } } } }, "summary": "Import Tasks" } }, "/task/status/{id}": { "put": { "operationId": "updateTaskStatus", "tags": [ "Tasks" ], "description": "Update only the status of a task", "responses": { "200": { "description": "Task status updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "position": { "type": "number", "nullable": true }, "number": { "type": "number", "nullable": true }, "userId": { "type": "string", "nullable": true }, "title": { "type": "string" }, "description": { "type": "string", "nullable": true }, "status": { "type": "string" }, "priority": { "enum": [ "no-priority", "low", "medium", "high", "urgent" ], "type": "string" }, "startDate": { "type": "string", "format": "date-time" }, "dueDate": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "position", "number", "userId", "title", "description", "status", "priority", "createdAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string" } }, "required": [ "status" ] } } } }, "summary": "Update Task Status" } }, "/task/priority/{id}": { "put": { "operationId": "updateTaskPriority", "tags": [ "Tasks" ], "description": "Update only the priority of a task", "responses": { "200": { "description": "Task priority updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "position": { "type": "number", "nullable": true }, "number": { "type": "number", "nullable": true }, "userId": { "type": "string", "nullable": true }, "title": { "type": "string" }, "description": { "type": "string", "nullable": true }, "status": { "type": "string" }, "priority": { "enum": [ "no-priority", "low", "medium", "high", "urgent" ], "type": "string" }, "startDate": { "type": "string", "format": "date-time" }, "dueDate": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "position", "number", "userId", "title", "description", "status", "priority", "createdAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "priority": { "enum": [ "no-priority", "low", "medium", "high", "urgent" ], "type": "string" } }, "required": [ "priority" ] } } } }, "summary": "Update Task Priority" } }, "/task/assignee/{id}": { "put": { "operationId": "updateTaskAssignee", "tags": [ "Tasks" ], "description": "Assign or unassign a task to a user", "responses": { "200": { "description": "Task assignee updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "position": { "type": "number", "nullable": true }, "number": { "type": "number", "nullable": true }, "userId": { "type": "string", "nullable": true }, "title": { "type": "string" }, "description": { "type": "string", "nullable": true }, "status": { "type": "string" }, "priority": { "enum": [ "no-priority", "low", "medium", "high", "urgent" ], "type": "string" }, "startDate": { "type": "string", "format": "date-time" }, "dueDate": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "position", "number", "userId", "title", "description", "status", "priority", "createdAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "userId": { "type": "string", "nullable": true } }, "required": [ "userId" ] } } } }, "summary": "Update Task Assignee" } }, "/task/due-date/{id}": { "put": { "operationId": "updateTaskDueDate", "tags": [ "Tasks" ], "description": "Update only the due date of a task", "responses": { "200": { "description": "Task due date updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "position": { "type": "number", "nullable": true }, "number": { "type": "number", "nullable": true }, "userId": { "type": "string", "nullable": true }, "title": { "type": "string" }, "description": { "type": "string", "nullable": true }, "status": { "type": "string" }, "priority": { "enum": [ "no-priority", "low", "medium", "high", "urgent" ], "type": "string" }, "startDate": { "type": "string", "format": "date-time" }, "dueDate": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "position", "number", "userId", "title", "description", "status", "priority", "createdAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "dueDate": { "type": "string" } } } } } }, "summary": "Update Task Due Date" } }, "/task/title/{id}": { "put": { "operationId": "updateTaskTitle", "tags": [ "Tasks" ], "description": "Update only the title of a task", "responses": { "200": { "description": "Task title updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "position": { "type": "number", "nullable": true }, "number": { "type": "number", "nullable": true }, "userId": { "type": "string", "nullable": true }, "title": { "type": "string" }, "description": { "type": "string", "nullable": true }, "status": { "type": "string" }, "priority": { "enum": [ "no-priority", "low", "medium", "high", "urgent" ], "type": "string" }, "startDate": { "type": "string", "format": "date-time" }, "dueDate": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "position", "number", "userId", "title", "description", "status", "priority", "createdAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "title": { "type": "string" } }, "required": [ "title" ] } } } }, "summary": "Update Task Title" } }, "/task/image-upload/{id}": { "put": { "operationId": "createTaskImageUpload", "tags": [ "Tasks" ], "description": "Create a presigned image upload URL for a task description or comment", "responses": { "200": { "description": "Image upload URL created successfully", "content": { "application/json": { "schema": { "type": "object" } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "filename": { "type": "string" }, "contentType": { "type": "string" }, "size": { "type": "number" }, "surface": { "enum": [ "description", "comment" ], "type": "string" } }, "required": [ "filename", "contentType", "size", "surface" ] } } } }, "summary": "Create Task Image Upload" } }, "/task/image-upload/{id}/finalize": { "post": { "operationId": "finalizeTaskImageUpload", "tags": [ "Tasks" ], "description": "Finalize an uploaded task image and create a private asset record", "responses": { "200": { "description": "Image upload finalized successfully", "content": { "application/json": { "schema": { "type": "object" } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "key": { "type": "string" }, "filename": { "type": "string" }, "contentType": { "type": "string" }, "size": { "type": "number" }, "surface": { "enum": [ "description", "comment" ], "type": "string" } }, "required": [ "key", "filename", "contentType", "size", "surface" ] } } } }, "summary": "Finalize Task Image Upload" } }, "/task/description/{id}": { "put": { "operationId": "updateTaskDescription", "tags": [ "Tasks" ], "description": "Update only the description of a task", "responses": { "200": { "description": "Task description updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "position": { "type": "number", "nullable": true }, "number": { "type": "number", "nullable": true }, "userId": { "type": "string", "nullable": true }, "title": { "type": "string" }, "description": { "type": "string", "nullable": true }, "status": { "type": "string" }, "priority": { "enum": [ "no-priority", "low", "medium", "high", "urgent" ], "type": "string" }, "startDate": { "type": "string", "format": "date-time" }, "dueDate": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "position", "number", "userId", "title", "description", "status", "priority", "createdAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "description": { "type": "string" } }, "required": [ "description" ] } } } }, "summary": "Update Task Description" } }, "/column/{projectId}": { "get": { "operationId": "getColumns", "tags": [ "Columns" ], "description": "Get all columns for a project", "responses": { "200": { "description": "List of columns ordered by position", "content": { "application/json": { "schema": { "type": "object" } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "summary": "Get Columns" }, "post": { "operationId": "createColumn", "tags": [ "Columns" ], "description": "Create a new column in a project", "responses": { "200": { "description": "Column created successfully", "content": { "application/json": { "schema": { "type": "object" } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "icon": { "type": "string" }, "color": { "type": "string" }, "isFinal": { "type": "boolean" } }, "required": [ "name" ] } } } }, "summary": "Create Column" } }, "/column/reorder/{projectId}": { "put": { "operationId": "reorderColumns", "tags": [ "Columns" ], "description": "Reorder columns in a project", "responses": { "200": { "description": "Columns reordered successfully", "content": { "application/json": { "schema": { "type": "object" } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "columns": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "position": { "type": "number" } }, "required": [ "id", "position" ] } } }, "required": [ "columns" ] } } } }, "summary": "Reorder Columns" } }, "/column/{id}": { "put": { "operationId": "updateColumn", "tags": [ "Columns" ], "description": "Update a column", "responses": { "200": { "description": "Column updated successfully", "content": { "application/json": { "schema": { "type": "object" } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "icon": { "type": "string", "nullable": true }, "color": { "type": "string", "nullable": true }, "isFinal": { "type": "boolean" } } } } } }, "summary": "Update Column" }, "delete": { "operationId": "deleteColumn", "tags": [ "Columns" ], "description": "Delete a column", "responses": { "200": { "description": "Column deleted successfully", "content": { "application/json": { "schema": { "type": "object" } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Delete Column" } }, "/activity/{taskId}": { "get": { "operationId": "getActivities", "tags": [ "Activity" ], "description": "Get all activities for a specific task", "responses": { "200": { "description": "List of activities for the task", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "type": { "enum": [ "comment", "task", "status_changed", "priority_changed", "unassigned", "assignee_changed", "due_date_changed", "title_changed", "description_changed", "create" ], "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "userId": { "type": "string", "nullable": true }, "content": { "type": "string", "nullable": true }, "eventData": { "type": "object", "additionalProperties": true, "nullable": true }, "externalUserName": { "type": "string", "nullable": true }, "externalUserAvatar": { "type": "string", "nullable": true }, "externalSource": { "type": "string", "nullable": true }, "externalUrl": { "type": "string", "nullable": true } }, "required": [ "id", "taskId", "type", "createdAt", "userId", "content", "eventData", "externalUserName", "externalUserAvatar", "externalSource", "externalUrl" ] } } } } } }, "parameters": [ { "in": "path", "name": "taskId", "schema": { "type": "string" }, "required": true } ], "summary": "Get Activities" } }, "/activity/create": { "post": { "operationId": "createActivity", "tags": [ "Activity" ], "description": "Create a new activity (system-generated event)", "responses": { "200": { "description": "Activity created successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "type": { "enum": [ "comment", "task", "status_changed", "priority_changed", "unassigned", "assignee_changed", "due_date_changed", "title_changed", "description_changed", "create" ], "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "userId": { "type": "string", "nullable": true }, "content": { "type": "string", "nullable": true }, "eventData": { "type": "object", "additionalProperties": true, "nullable": true }, "externalUserName": { "type": "string", "nullable": true }, "externalUserAvatar": { "type": "string", "nullable": true }, "externalSource": { "type": "string", "nullable": true }, "externalUrl": { "type": "string", "nullable": true } }, "required": [ "id", "taskId", "type", "createdAt", "userId", "content", "eventData", "externalUserName", "externalUserAvatar", "externalSource", "externalUrl" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "taskId": { "type": "string" }, "userId": { "type": "string" }, "message": { "type": "string", "nullable": true }, "type": { "type": "string" }, "eventData": { "type": "object", "additionalProperties": true, "nullable": true } }, "required": [ "taskId", "userId", "message", "type" ] } } } }, "summary": "Create Activity" } }, "/activity/comment": { "post": { "operationId": "createComment", "tags": [ "Activity" ], "description": "Create a new comment on a task", "responses": { "200": { "description": "Comment created successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "type": { "enum": [ "comment", "task", "status_changed", "priority_changed", "unassigned", "assignee_changed", "due_date_changed", "title_changed", "description_changed", "create" ], "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "userId": { "type": "string", "nullable": true }, "content": { "type": "string", "nullable": true }, "eventData": { "type": "object", "additionalProperties": true, "nullable": true }, "externalUserName": { "type": "string", "nullable": true }, "externalUserAvatar": { "type": "string", "nullable": true }, "externalSource": { "type": "string", "nullable": true }, "externalUrl": { "type": "string", "nullable": true } }, "required": [ "id", "taskId", "type", "createdAt", "userId", "content", "eventData", "externalUserName", "externalUserAvatar", "externalSource", "externalUrl" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "taskId": { "type": "string" }, "comment": { "type": "string" } }, "required": [ "taskId", "comment" ] } } } }, "summary": "Create Comment" }, "put": { "operationId": "updateComment", "tags": [ "Activity" ], "description": "Update an existing comment", "responses": { "200": { "description": "Comment updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "type": { "enum": [ "comment", "task", "status_changed", "priority_changed", "unassigned", "assignee_changed", "due_date_changed", "title_changed", "description_changed", "create" ], "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "userId": { "type": "string", "nullable": true }, "content": { "type": "string", "nullable": true }, "eventData": { "type": "object", "additionalProperties": true, "nullable": true }, "externalUserName": { "type": "string", "nullable": true }, "externalUserAvatar": { "type": "string", "nullable": true }, "externalSource": { "type": "string", "nullable": true }, "externalUrl": { "type": "string", "nullable": true } }, "required": [ "id", "taskId", "type", "createdAt", "userId", "content", "eventData", "externalUserName", "externalUserAvatar", "externalSource", "externalUrl" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "activityId": { "type": "string" }, "comment": { "type": "string" } }, "required": [ "activityId", "comment" ] } } } }, "summary": "Update Comment" }, "delete": { "operationId": "deleteComment", "tags": [ "Activity" ], "description": "Delete a comment", "responses": { "200": { "description": "Comment deleted successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "type": { "enum": [ "comment", "task", "status_changed", "priority_changed", "unassigned", "assignee_changed", "due_date_changed", "title_changed", "description_changed", "create" ], "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "userId": { "type": "string", "nullable": true }, "content": { "type": "string", "nullable": true }, "eventData": { "type": "object", "additionalProperties": true, "nullable": true }, "externalUserName": { "type": "string", "nullable": true }, "externalUserAvatar": { "type": "string", "nullable": true }, "externalSource": { "type": "string", "nullable": true }, "externalUrl": { "type": "string", "nullable": true } }, "required": [ "id", "taskId", "type", "createdAt", "userId", "content", "eventData", "externalUserName", "externalUserAvatar", "externalSource", "externalUrl" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "activityId": { "type": "string" } }, "required": [ "activityId" ] } } } }, "summary": "Delete Comment" } }, "/comment/{taskId}": { "get": { "operationId": "getTaskComments", "tags": [ "Comments" ], "description": "Get all comments for a specific task", "responses": { "200": { "description": "List of comments for the task", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "userId": { "type": "string" }, "content": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "user": { "type": "object", "properties": { "name": { "type": "string" }, "image": { "type": "string", "nullable": true } }, "required": [ "name", "image" ] } }, "required": [ "id", "taskId", "userId", "content", "createdAt", "updatedAt" ] } } } } } }, "parameters": [ { "in": "path", "name": "taskId", "schema": { "type": "string" }, "required": true } ], "summary": "Get Task Comments" }, "post": { "operationId": "createTaskComment", "tags": [ "Comments" ], "description": "Create a new comment on a task", "responses": { "200": { "description": "Comment created successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "userId": { "type": "string" }, "content": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "user": { "type": "object", "properties": { "name": { "type": "string" }, "image": { "type": "string", "nullable": true } }, "required": [ "name", "image" ] } }, "required": [ "id", "taskId", "userId", "content", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "taskId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "content": { "type": "string", "minLength": 1 } }, "required": [ "content" ] } } } }, "summary": "Create Task Comment" } }, "/comment/{id}": { "put": { "operationId": "updateTaskComment", "tags": [ "Comments" ], "description": "Update an existing comment (author only)", "responses": { "200": { "description": "Comment updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "userId": { "type": "string" }, "content": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "user": { "type": "object", "properties": { "name": { "type": "string" }, "image": { "type": "string", "nullable": true } }, "required": [ "name", "image" ] } }, "required": [ "id", "taskId", "userId", "content", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "content": { "type": "string", "minLength": 1 } }, "required": [ "content" ] } } } }, "summary": "Update Task Comment" }, "delete": { "operationId": "deleteTaskComment", "tags": [ "Comments" ], "description": "Delete a comment (author only)", "responses": { "200": { "description": "Comment deleted successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "userId": { "type": "string" }, "content": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "user": { "type": "object", "properties": { "name": { "type": "string" }, "image": { "type": "string", "nullable": true } }, "required": [ "name", "image" ] } }, "required": [ "id", "taskId", "userId", "content", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Delete Task Comment" } }, "/time-entry/task/{taskId}": { "get": { "operationId": "getTaskTimeEntries", "tags": [ "Time Entries" ], "description": "Get all time entries for a specific task", "responses": { "200": { "description": "List of time entries for the task", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "userId": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true }, "startTime": { "type": "string", "format": "date-time" }, "endTime": { "type": "string", "format": "date-time" }, "duration": { "type": "number", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "taskId", "userId", "description", "startTime", "duration", "createdAt", "updatedAt" ] } } } } } }, "parameters": [ { "in": "path", "name": "taskId", "schema": { "type": "string" }, "required": true } ], "summary": "Get Task Time Entries" } }, "/time-entry/{id}": { "get": { "operationId": "getTimeEntry", "tags": [ "Time Entries" ], "description": "Get a specific time entry by ID", "responses": { "200": { "description": "Time entry details", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "userId": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true }, "startTime": { "type": "string", "format": "date-time" }, "endTime": { "type": "string", "format": "date-time" }, "duration": { "type": "number", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "taskId", "userId", "description", "startTime", "duration", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Get Time Entry" }, "put": { "operationId": "updateTimeEntry", "tags": [ "Time Entries" ], "description": "Update an existing time entry", "responses": { "200": { "description": "Time entry updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "userId": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true }, "startTime": { "type": "string", "format": "date-time" }, "endTime": { "type": "string", "format": "date-time" }, "duration": { "type": "number", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "taskId", "userId", "description", "startTime", "duration", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "startTime": { "type": "string" }, "endTime": { "type": "string" }, "description": { "type": "string" } }, "required": [ "startTime" ] } } } }, "summary": "Update Time Entry" } }, "/time-entry": { "post": { "operationId": "createTimeEntry", "tags": [ "Time Entries" ], "description": "Create a new time entry for a task", "responses": { "200": { "description": "Time entry created successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "userId": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true }, "startTime": { "type": "string", "format": "date-time" }, "endTime": { "type": "string", "format": "date-time" }, "duration": { "type": "number", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "taskId", "userId", "description", "startTime", "duration", "createdAt", "updatedAt" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "taskId": { "type": "string" }, "startTime": { "type": "string" }, "endTime": { "type": "string" }, "description": { "type": "string" } }, "required": [ "taskId", "startTime" ] } } } }, "summary": "Create Time Entry" } }, "/label/task/{taskId}": { "get": { "operationId": "getTaskLabels", "tags": [ "Labels" ], "description": "Get all labels assigned to a specific task", "responses": { "200": { "description": "List of labels for the task", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "color": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "taskId": { "type": "string", "nullable": true }, "workspaceId": { "type": "string", "nullable": true } }, "required": [ "id", "name", "color", "createdAt", "taskId", "workspaceId" ] } } } } } }, "parameters": [ { "in": "path", "name": "taskId", "schema": { "type": "string" }, "required": true } ], "summary": "Get Task Labels" } }, "/label/workspace/{workspaceId}": { "get": { "operationId": "getWorkspaceLabels", "tags": [ "Labels" ], "description": "Get all labels for a specific workspace", "responses": { "200": { "description": "List of labels in the workspace", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "color": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "taskId": { "type": "string", "nullable": true }, "workspaceId": { "type": "string", "nullable": true } }, "required": [ "id", "name", "color", "createdAt", "taskId", "workspaceId" ] } } } } } }, "parameters": [ { "in": "path", "name": "workspaceId", "schema": { "type": "string" }, "required": true } ], "summary": "Get Workspace Labels" } }, "/label": { "post": { "operationId": "createLabel", "tags": [ "Labels" ], "description": "Create a new label in a workspace", "responses": { "200": { "description": "Label created successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "color": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "taskId": { "type": "string", "nullable": true }, "workspaceId": { "type": "string", "nullable": true } }, "required": [ "id", "name", "color", "createdAt", "taskId", "workspaceId" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "color": { "type": "string" }, "workspaceId": { "type": "string" }, "taskId": { "type": "string" } }, "required": [ "name", "color", "workspaceId" ] } } } }, "summary": "Create Label" } }, "/label/{id}": { "get": { "operationId": "getLabel", "tags": [ "Labels" ], "description": "Get a specific label by ID", "responses": { "200": { "description": "Label details", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "color": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "taskId": { "type": "string", "nullable": true }, "workspaceId": { "type": "string", "nullable": true } }, "required": [ "id", "name", "color", "createdAt", "taskId", "workspaceId" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Get Label" }, "put": { "operationId": "updateLabel", "tags": [ "Labels" ], "description": "Update an existing label", "responses": { "200": { "description": "Label updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "color": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "taskId": { "type": "string", "nullable": true }, "workspaceId": { "type": "string", "nullable": true } }, "required": [ "id", "name", "color", "createdAt", "taskId", "workspaceId" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "color": { "type": "string" } }, "required": [ "name", "color" ] } } } }, "summary": "Update Label" }, "delete": { "operationId": "deleteLabel", "tags": [ "Labels" ], "description": "Delete a label by ID", "responses": { "200": { "description": "Label deleted successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "color": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "taskId": { "type": "string", "nullable": true }, "workspaceId": { "type": "string", "nullable": true } }, "required": [ "id", "name", "color", "createdAt", "taskId", "workspaceId" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Delete Label" } }, "/label/{id}/task": { "put": { "operationId": "attachLabelToTask", "tags": [ "Labels" ], "description": "Attach an existing label to a task", "responses": { "200": { "description": "Label attached to task successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "color": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "taskId": { "type": "string", "nullable": true }, "workspaceId": { "type": "string", "nullable": true } }, "required": [ "id", "name", "color", "createdAt", "taskId", "workspaceId" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "taskId": { "type": "string" } }, "required": [ "taskId" ] } } } }, "summary": "Attach Label To Task" }, "delete": { "operationId": "detachLabelFromTask", "tags": [ "Labels" ], "description": "Detach a label from its current task", "responses": { "200": { "description": "Label detached from task successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "color": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "taskId": { "type": "string", "nullable": true }, "workspaceId": { "type": "string", "nullable": true } }, "required": [ "id", "name", "color", "createdAt", "taskId", "workspaceId" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Detach Label From Task" } }, "/notification": { "get": { "operationId": "listNotifications", "tags": [ "Notifications" ], "description": "Get all notifications for the current user", "responses": { "200": { "description": "List of notifications", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "userId": { "type": "string" }, "title": { "type": "string", "nullable": true }, "content": { "type": "string", "nullable": true }, "type": { "enum": [ "info", "task_created", "workspace_created", "task_status_changed", "task_assignee_changed", "time_entry_created", "due_date_reminder", "task_overdue", "task_mention" ], "type": "string" }, "eventData": { "type": "object", "additionalProperties": true, "nullable": true }, "isRead": { "type": "boolean" }, "resourceId": { "type": "string" }, "resourceType": { "enum": [ "task", "workspace" ], "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "userId", "title", "content", "type", "eventData", "createdAt", "updatedAt" ] } } } } } }, "summary": "List Notifications" }, "post": { "operationId": "createNotification", "tags": [ "Notifications" ], "description": "Create a new notification for a user", "responses": { "200": { "description": "Notification created successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "userId": { "type": "string" }, "title": { "type": "string", "nullable": true }, "content": { "type": "string", "nullable": true }, "type": { "enum": [ "info", "task_created", "workspace_created", "task_status_changed", "task_assignee_changed", "time_entry_created", "due_date_reminder", "task_overdue", "task_mention" ], "type": "string" }, "eventData": { "type": "object", "additionalProperties": true, "nullable": true }, "isRead": { "type": "boolean" }, "resourceId": { "type": "string" }, "resourceType": { "enum": [ "task", "workspace" ], "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "userId", "title", "content", "type", "eventData", "createdAt", "updatedAt" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "title": { "type": "string", "nullable": true }, "message": { "type": "string", "nullable": true }, "type": { "type": "string" }, "eventData": { "type": "object", "additionalProperties": true, "nullable": true }, "relatedEntityId": { "type": "string" }, "relatedEntityType": { "type": "string" } }, "required": [ "type" ] } } } }, "summary": "Create Notification" } }, "/notification/{id}/read": { "patch": { "operationId": "markNotificationAsRead", "tags": [ "Notifications" ], "description": "Mark a specific notification as read", "responses": { "200": { "description": "Notification marked as read", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "userId": { "type": "string" }, "title": { "type": "string", "nullable": true }, "content": { "type": "string", "nullable": true }, "type": { "enum": [ "info", "task_created", "workspace_created", "task_status_changed", "task_assignee_changed", "time_entry_created", "due_date_reminder", "task_overdue", "task_mention" ], "type": "string" }, "eventData": { "type": "object", "additionalProperties": true, "nullable": true }, "isRead": { "type": "boolean" }, "resourceId": { "type": "string" }, "resourceType": { "enum": [ "task", "workspace" ], "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "userId", "title", "content", "type", "eventData", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Mark Notification As Read" } }, "/notification/read-all": { "patch": { "operationId": "markAllNotificationsAsRead", "tags": [ "Notifications" ], "description": "Mark all notifications as read for the current user", "responses": { "200": { "description": "All notifications marked as read", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "count": { "type": "number" } }, "required": [ "success" ] } } } } }, "summary": "Mark All Notifications As Read" } }, "/notification/clear-all": { "delete": { "operationId": "clearAllNotifications", "tags": [ "Notifications" ], "description": "Clear all notifications for the current user", "responses": { "200": { "description": "All notifications cleared", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "count": { "type": "number" } }, "required": [ "success" ] } } } } }, "summary": "Clear All Notifications" } }, "/notification-preferences": { "get": { "operationId": "getNotificationPreferences", "tags": [ "Notification Preferences" ], "description": "Get notification delivery preferences for the current user", "responses": { "200": { "description": "Notification preferences", "content": { "application/json": { "schema": { "type": "object", "properties": { "emailAddress": { "type": "string", "nullable": true }, "emailEnabled": { "type": "boolean" }, "ntfyEnabled": { "type": "boolean" }, "ntfyConfigured": { "type": "boolean" }, "ntfyServerUrl": { "type": "string", "nullable": true }, "ntfyTopic": { "type": "string", "nullable": true }, "ntfyTokenConfigured": { "type": "boolean" }, "maskedNtfyToken": { "type": "string", "nullable": true }, "gotifyEnabled": { "type": "boolean" }, "gotifyConfigured": { "type": "boolean" }, "gotifyServerUrl": { "type": "string", "nullable": true }, "gotifyTokenConfigured": { "type": "boolean" }, "maskedGotifyToken": { "type": "string", "nullable": true }, "webhookEnabled": { "type": "boolean" }, "webhookConfigured": { "type": "boolean" }, "webhookUrl": { "type": "string", "nullable": true }, "webhookSecretConfigured": { "type": "boolean" }, "maskedWebhookSecret": { "type": "string", "nullable": true }, "workspaces": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "workspaceId": { "type": "string" }, "workspaceName": { "type": "string" }, "isActive": { "type": "boolean" }, "emailEnabled": { "type": "boolean" }, "ntfyEnabled": { "type": "boolean" }, "gotifyEnabled": { "type": "boolean" }, "webhookEnabled": { "type": "boolean" }, "projectMode": { "enum": [ "all", "selected" ], "type": "string" }, "selectedProjectIds": { "type": "array", "items": { "type": "string" } }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "workspaceId", "workspaceName", "isActive", "emailEnabled", "ntfyEnabled", "gotifyEnabled", "webhookEnabled", "projectMode", "selectedProjectIds", "createdAt", "updatedAt" ] } }, "createdAt": { "nullable": true }, "updatedAt": { "nullable": true } }, "required": [ "emailAddress", "emailEnabled", "ntfyEnabled", "ntfyConfigured", "ntfyServerUrl", "ntfyTopic", "ntfyTokenConfigured", "maskedNtfyToken", "gotifyEnabled", "gotifyConfigured", "gotifyServerUrl", "gotifyTokenConfigured", "maskedGotifyToken", "webhookEnabled", "webhookConfigured", "webhookUrl", "webhookSecretConfigured", "maskedWebhookSecret", "workspaces", "createdAt", "updatedAt" ] } } } }, "400": { "description": "Validation error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } } } }, "summary": "Get Notification Preferences" }, "put": { "operationId": "updateNotificationPreferences", "tags": [ "Notification Preferences" ], "description": "Update global notification delivery preferences", "responses": { "200": { "description": "Updated notification preferences", "content": { "application/json": { "schema": { "type": "object", "properties": { "emailAddress": { "type": "string", "nullable": true }, "emailEnabled": { "type": "boolean" }, "ntfyEnabled": { "type": "boolean" }, "ntfyConfigured": { "type": "boolean" }, "ntfyServerUrl": { "type": "string", "nullable": true }, "ntfyTopic": { "type": "string", "nullable": true }, "ntfyTokenConfigured": { "type": "boolean" }, "maskedNtfyToken": { "type": "string", "nullable": true }, "gotifyEnabled": { "type": "boolean" }, "gotifyConfigured": { "type": "boolean" }, "gotifyServerUrl": { "type": "string", "nullable": true }, "gotifyTokenConfigured": { "type": "boolean" }, "maskedGotifyToken": { "type": "string", "nullable": true }, "webhookEnabled": { "type": "boolean" }, "webhookConfigured": { "type": "boolean" }, "webhookUrl": { "type": "string", "nullable": true }, "webhookSecretConfigured": { "type": "boolean" }, "maskedWebhookSecret": { "type": "string", "nullable": true }, "workspaces": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "workspaceId": { "type": "string" }, "workspaceName": { "type": "string" }, "isActive": { "type": "boolean" }, "emailEnabled": { "type": "boolean" }, "ntfyEnabled": { "type": "boolean" }, "gotifyEnabled": { "type": "boolean" }, "webhookEnabled": { "type": "boolean" }, "projectMode": { "enum": [ "all", "selected" ], "type": "string" }, "selectedProjectIds": { "type": "array", "items": { "type": "string" } }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "workspaceId", "workspaceName", "isActive", "emailEnabled", "ntfyEnabled", "gotifyEnabled", "webhookEnabled", "projectMode", "selectedProjectIds", "createdAt", "updatedAt" ] } }, "createdAt": { "nullable": true }, "updatedAt": { "nullable": true } }, "required": [ "emailAddress", "emailEnabled", "ntfyEnabled", "ntfyConfigured", "ntfyServerUrl", "ntfyTopic", "ntfyTokenConfigured", "maskedNtfyToken", "gotifyEnabled", "gotifyConfigured", "gotifyServerUrl", "gotifyTokenConfigured", "maskedGotifyToken", "webhookEnabled", "webhookConfigured", "webhookUrl", "webhookSecretConfigured", "maskedWebhookSecret", "workspaces", "createdAt", "updatedAt" ] } } } }, "400": { "description": "Validation error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "emailEnabled": { "type": "boolean" }, "ntfyEnabled": { "type": "boolean" }, "ntfyServerUrl": { "type": "string", "nullable": true }, "ntfyTopic": { "type": "string", "nullable": true }, "ntfyToken": { "type": "string", "nullable": true }, "gotifyEnabled": { "type": "boolean" }, "gotifyServerUrl": { "type": "string", "nullable": true }, "gotifyToken": { "type": "string", "nullable": true }, "webhookEnabled": { "type": "boolean" }, "webhookUrl": { "type": "string", "nullable": true }, "webhookSecret": { "type": "string", "nullable": true } } } } } }, "summary": "Update Notification Preferences" } }, "/notification-preferences/workspaces/{workspaceId}": { "put": { "operationId": "upsertNotificationPreferenceWorkspaceRule", "tags": [ "Notification Preferences" ], "description": "Create or update a workspace notification rule", "responses": { "200": { "description": "Updated notification preferences", "content": { "application/json": { "schema": { "type": "object", "properties": { "emailAddress": { "type": "string", "nullable": true }, "emailEnabled": { "type": "boolean" }, "ntfyEnabled": { "type": "boolean" }, "ntfyConfigured": { "type": "boolean" }, "ntfyServerUrl": { "type": "string", "nullable": true }, "ntfyTopic": { "type": "string", "nullable": true }, "ntfyTokenConfigured": { "type": "boolean" }, "maskedNtfyToken": { "type": "string", "nullable": true }, "gotifyEnabled": { "type": "boolean" }, "gotifyConfigured": { "type": "boolean" }, "gotifyServerUrl": { "type": "string", "nullable": true }, "gotifyTokenConfigured": { "type": "boolean" }, "maskedGotifyToken": { "type": "string", "nullable": true }, "webhookEnabled": { "type": "boolean" }, "webhookConfigured": { "type": "boolean" }, "webhookUrl": { "type": "string", "nullable": true }, "webhookSecretConfigured": { "type": "boolean" }, "maskedWebhookSecret": { "type": "string", "nullable": true }, "workspaces": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "workspaceId": { "type": "string" }, "workspaceName": { "type": "string" }, "isActive": { "type": "boolean" }, "emailEnabled": { "type": "boolean" }, "ntfyEnabled": { "type": "boolean" }, "gotifyEnabled": { "type": "boolean" }, "webhookEnabled": { "type": "boolean" }, "projectMode": { "enum": [ "all", "selected" ], "type": "string" }, "selectedProjectIds": { "type": "array", "items": { "type": "string" } }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "workspaceId", "workspaceName", "isActive", "emailEnabled", "ntfyEnabled", "gotifyEnabled", "webhookEnabled", "projectMode", "selectedProjectIds", "createdAt", "updatedAt" ] } }, "createdAt": { "nullable": true }, "updatedAt": { "nullable": true } }, "required": [ "emailAddress", "emailEnabled", "ntfyEnabled", "ntfyConfigured", "ntfyServerUrl", "ntfyTopic", "ntfyTokenConfigured", "maskedNtfyToken", "gotifyEnabled", "gotifyConfigured", "gotifyServerUrl", "gotifyTokenConfigured", "maskedGotifyToken", "webhookEnabled", "webhookConfigured", "webhookUrl", "webhookSecretConfigured", "maskedWebhookSecret", "workspaces", "createdAt", "updatedAt" ] } } } }, "400": { "description": "Validation error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } } } }, "parameters": [ { "in": "path", "name": "workspaceId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "isActive": { "type": "boolean" }, "emailEnabled": { "type": "boolean" }, "ntfyEnabled": { "type": "boolean" }, "gotifyEnabled": { "type": "boolean" }, "webhookEnabled": { "type": "boolean" }, "projectMode": { "enum": [ "all", "selected" ], "type": "string" }, "selectedProjectIds": { "type": "array", "items": { "type": "string" } } }, "required": [ "isActive", "emailEnabled", "ntfyEnabled", "gotifyEnabled", "webhookEnabled", "projectMode" ] } } } }, "summary": "Upsert Notification Preference Workspace Rule" }, "delete": { "operationId": "deleteNotificationPreferenceWorkspaceRule", "tags": [ "Notification Preferences" ], "description": "Delete a workspace notification rule", "responses": { "200": { "description": "Updated notification preferences", "content": { "application/json": { "schema": { "type": "object", "properties": { "emailAddress": { "type": "string", "nullable": true }, "emailEnabled": { "type": "boolean" }, "ntfyEnabled": { "type": "boolean" }, "ntfyConfigured": { "type": "boolean" }, "ntfyServerUrl": { "type": "string", "nullable": true }, "ntfyTopic": { "type": "string", "nullable": true }, "ntfyTokenConfigured": { "type": "boolean" }, "maskedNtfyToken": { "type": "string", "nullable": true }, "gotifyEnabled": { "type": "boolean" }, "gotifyConfigured": { "type": "boolean" }, "gotifyServerUrl": { "type": "string", "nullable": true }, "gotifyTokenConfigured": { "type": "boolean" }, "maskedGotifyToken": { "type": "string", "nullable": true }, "webhookEnabled": { "type": "boolean" }, "webhookConfigured": { "type": "boolean" }, "webhookUrl": { "type": "string", "nullable": true }, "webhookSecretConfigured": { "type": "boolean" }, "maskedWebhookSecret": { "type": "string", "nullable": true }, "workspaces": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "workspaceId": { "type": "string" }, "workspaceName": { "type": "string" }, "isActive": { "type": "boolean" }, "emailEnabled": { "type": "boolean" }, "ntfyEnabled": { "type": "boolean" }, "gotifyEnabled": { "type": "boolean" }, "webhookEnabled": { "type": "boolean" }, "projectMode": { "enum": [ "all", "selected" ], "type": "string" }, "selectedProjectIds": { "type": "array", "items": { "type": "string" } }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "workspaceId", "workspaceName", "isActive", "emailEnabled", "ntfyEnabled", "gotifyEnabled", "webhookEnabled", "projectMode", "selectedProjectIds", "createdAt", "updatedAt" ] } }, "createdAt": { "nullable": true }, "updatedAt": { "nullable": true } }, "required": [ "emailAddress", "emailEnabled", "ntfyEnabled", "ntfyConfigured", "ntfyServerUrl", "ntfyTopic", "ntfyTokenConfigured", "maskedNtfyToken", "gotifyEnabled", "gotifyConfigured", "gotifyServerUrl", "gotifyTokenConfigured", "maskedGotifyToken", "webhookEnabled", "webhookConfigured", "webhookUrl", "webhookSecretConfigured", "maskedWebhookSecret", "workspaces", "createdAt", "updatedAt" ] } } } }, "400": { "description": "Validation error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } } }, "404": { "description": "Workspace rule not found", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } } } }, "parameters": [ { "in": "path", "name": "workspaceId", "schema": { "type": "string" }, "required": true } ], "summary": "Delete Notification Preference Workspace Rule" } }, "/search": { "get": { "operationId": "globalSearch", "tags": [ "Search" ], "description": "Search across tasks, projects, workspaces, comments, and activities", "responses": { "200": { "description": "Search results", "content": { "application/json": { "schema": { "type": "object", "properties": { "tasks": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "position": { "type": "number", "nullable": true }, "number": { "type": "number", "nullable": true }, "userId": { "type": "string", "nullable": true }, "title": { "type": "string" }, "description": { "type": "string", "nullable": true }, "status": { "type": "string" }, "priority": { "enum": [ "no-priority", "low", "medium", "high", "urgent" ], "type": "string" }, "startDate": { "type": "string", "format": "date-time" }, "dueDate": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "position", "number", "userId", "title", "description", "status", "priority", "createdAt" ] } }, "projects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "workspaceId": { "type": "string" }, "slug": { "type": "string" }, "icon": { "type": "string", "nullable": true }, "name": { "type": "string" }, "description": { "type": "string", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "isPublic": { "type": "boolean", "nullable": true }, "archivedAt": { "nullable": true } }, "required": [ "id", "workspaceId", "slug", "icon", "name", "description", "createdAt", "isPublic", "archivedAt" ] } }, "workspaces": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" }, "logo": { "type": "string", "nullable": true }, "metadata": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "name", "slug", "logo", "metadata", "description", "createdAt" ] } }, "comments": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "type": { "enum": [ "comment", "task", "status_changed", "priority_changed", "unassigned", "assignee_changed", "due_date_changed", "title_changed", "description_changed", "create" ], "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "userId": { "type": "string", "nullable": true }, "content": { "type": "string", "nullable": true }, "eventData": { "type": "object", "additionalProperties": true, "nullable": true }, "externalUserName": { "type": "string", "nullable": true }, "externalUserAvatar": { "type": "string", "nullable": true }, "externalSource": { "type": "string", "nullable": true }, "externalUrl": { "type": "string", "nullable": true } }, "required": [ "id", "taskId", "type", "createdAt", "userId", "content", "eventData", "externalUserName", "externalUserAvatar", "externalSource", "externalUrl" ] } }, "activities": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "type": { "enum": [ "comment", "task", "status_changed", "priority_changed", "unassigned", "assignee_changed", "due_date_changed", "title_changed", "description_changed", "create" ], "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "userId": { "type": "string", "nullable": true }, "content": { "type": "string", "nullable": true }, "eventData": { "type": "object", "additionalProperties": true, "nullable": true }, "externalUserName": { "type": "string", "nullable": true }, "externalUserAvatar": { "type": "string", "nullable": true }, "externalSource": { "type": "string", "nullable": true }, "externalUrl": { "type": "string", "nullable": true } }, "required": [ "id", "taskId", "type", "createdAt", "userId", "content", "eventData", "externalUserName", "externalUserAvatar", "externalSource", "externalUrl" ] } } } } } } } }, "parameters": [ { "in": "query", "name": "q", "schema": { "type": "string", "minLength": 1 }, "required": true }, { "in": "query", "name": "type", "schema": { "enum": [ "all", "tasks", "projects", "workspaces", "comments", "activities" ], "default": "all", "type": "string" } }, { "in": "query", "name": "workspaceId", "schema": { "type": "string" } }, { "in": "query", "name": "projectId", "schema": { "type": "string" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "minimum": 1, "maximum": 50, "default": 20 } }, { "in": "query", "name": "userEmail", "schema": { "type": "string", "format": "email" } } ], "summary": "Global Search" } }, "/github-integration/app-info": { "get": { "operationId": "getGitHubAppInfo", "tags": [ "GitHub" ], "description": "Get GitHub app configuration information", "responses": { "200": { "description": "GitHub app information", "content": { "application/json": { "schema": { "type": "object", "properties": { "appName": { "type": "string", "nullable": true } }, "required": [ "appName" ] } } } } }, "summary": "Get Git Hub App Info" } }, "/github-integration/repositories": { "get": { "operationId": "listGitHubRepositories", "tags": [ "GitHub" ], "description": "List all accessible GitHub repositories", "responses": { "200": { "description": "List of repositories", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string" }, "full_name": { "type": "string" }, "owner": { "type": "object", "properties": { "login": { "type": "string" } }, "required": [ "login" ] }, "private": { "type": "boolean" }, "html_url": { "type": "string" } }, "required": [ "id", "name", "full_name", "owner", "private", "html_url" ] } } } } } }, "summary": "List Git Hub Repositories" } }, "/github-integration/verify": { "post": { "operationId": "verifyGitHubInstallation", "tags": [ "GitHub" ], "description": "Verify GitHub app installation for a repository", "responses": { "200": { "description": "Verification result", "content": { "application/json": { "schema": { "type": "object", "properties": { "installed": { "type": "boolean" }, "message": { "type": "string" } }, "required": [ "installed" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "repositoryOwner": { "type": "string", "minLength": 1 }, "repositoryName": { "type": "string", "minLength": 1 } }, "required": [ "repositoryOwner", "repositoryName" ] } } } }, "summary": "Verify Git Hub Installation" } }, "/github-integration/project/{projectId}": { "get": { "operationId": "getGitHubIntegration", "tags": [ "GitHub" ], "description": "Get GitHub integration for a project", "responses": { "200": { "description": "GitHub integration details", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "repositoryOwner": { "type": "string" }, "repositoryName": { "type": "string" }, "installationId": { "type": "number", "nullable": true }, "branchPattern": { "type": "string" }, "commentTaskLinkOnGitHubIssue": { "type": "boolean" }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "repositoryOwner", "repositoryName", "installationId", "isActive", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "summary": "Get Git Hub Integration" }, "post": { "operationId": "createGitHubIntegration", "tags": [ "GitHub" ], "description": "Create a new GitHub integration for a project", "responses": { "200": { "description": "Integration created successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "repositoryOwner": { "type": "string" }, "repositoryName": { "type": "string" }, "installationId": { "type": "number", "nullable": true }, "branchPattern": { "type": "string" }, "commentTaskLinkOnGitHubIssue": { "type": "boolean" }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "repositoryOwner", "repositoryName", "installationId", "isActive", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "repositoryOwner": { "type": "string", "minLength": 1 }, "repositoryName": { "type": "string", "minLength": 1 } }, "required": [ "repositoryOwner", "repositoryName" ] } } } }, "summary": "Create Git Hub Integration" }, "patch": { "operationId": "updateGitHubIntegration", "tags": [ "GitHub" ], "description": "Update GitHub integration settings", "responses": { "200": { "description": "Integration updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "repositoryOwner": { "type": "string" }, "repositoryName": { "type": "string" }, "installationId": { "type": "number", "nullable": true }, "branchPattern": { "type": "string" }, "commentTaskLinkOnGitHubIssue": { "type": "boolean" }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "repositoryOwner", "repositoryName", "installationId", "isActive", "createdAt", "updatedAt" ] } } } }, "404": { "description": "Integration not found", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } }, "required": [ "error" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "isActive": { "type": "boolean" }, "commentTaskLinkOnGitHubIssue": { "type": "boolean" } } } } } }, "summary": "Update Git Hub Integration" }, "delete": { "operationId": "deleteGitHubIntegration", "tags": [ "GitHub" ], "description": "Delete GitHub integration for a project", "responses": { "200": { "description": "Integration deleted successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "repositoryOwner": { "type": "string" }, "repositoryName": { "type": "string" }, "installationId": { "type": "number", "nullable": true }, "branchPattern": { "type": "string" }, "commentTaskLinkOnGitHubIssue": { "type": "boolean" }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "repositoryOwner", "repositoryName", "installationId", "isActive", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "summary": "Delete Git Hub Integration" } }, "/github-integration/import-issues": { "post": { "operationId": "importGitHubIssues", "tags": [ "GitHub" ], "description": "Import GitHub issues as tasks", "responses": { "200": { "description": "Issues imported successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "imported": { "type": "number" }, "skipped": { "type": "number" }, "errors": { "type": "array", "items": { "type": "string" } } }, "required": [ "imported", "skipped" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "projectId": { "type": "string" } }, "required": [ "projectId" ] } } } }, "summary": "Import Git Hub Issues" } }, "/gitea-integration/repositories": { "post": { "operationId": "listGiteaRepositories", "tags": [ "Gitea" ], "description": "List repositories accessible with a Gitea token", "responses": { "200": { "description": "Repositories", "content": { "application/json": { "schema": { "type": "object", "properties": { "repositories": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string" }, "full_name": { "type": "string" }, "owner": { "type": "object", "properties": { "login": { "type": "string" } }, "required": [ "login" ] }, "private": { "type": "boolean" }, "html_url": { "type": "string" } }, "required": [ "id", "name", "full_name", "owner", "private", "html_url" ] } } }, "required": [ "repositories" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "baseUrl": { "type": "string", "minLength": 1 }, "accessToken": { "type": "string", "minLength": 1 } }, "required": [ "baseUrl", "accessToken" ] } } } }, "summary": "List Gitea Repositories" } }, "/gitea-integration/verify": { "post": { "operationId": "verifyGiteaAccess", "tags": [ "Gitea" ], "description": "Verify Gitea token and repository access", "responses": { "200": { "description": "Verification result", "content": { "application/json": { "schema": { "type": "object", "properties": { "isInstalled": { "type": "boolean" }, "hasRequiredPermissions": { "type": "boolean" }, "repositoryExists": { "type": "boolean" }, "repositoryPrivate": { "type": "boolean", "nullable": true }, "missingPermissions": { "type": "array", "items": { "type": "string" } }, "message": { "type": "string" } }, "required": [ "isInstalled", "hasRequiredPermissions", "repositoryExists", "repositoryPrivate", "missingPermissions", "message" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "baseUrl": { "type": "string", "minLength": 1 }, "accessToken": { "type": "string", "minLength": 1 }, "repositoryOwner": { "type": "string", "minLength": 1 }, "repositoryName": { "type": "string", "minLength": 1 } }, "required": [ "baseUrl", "accessToken", "repositoryOwner", "repositoryName" ] } } } }, "summary": "Verify Gitea Access" } }, "/gitea-integration/project/{projectId}": { "get": { "operationId": "getGiteaIntegration", "tags": [ "Gitea" ], "description": "Get Gitea integration for a project", "responses": { "200": { "description": "Gitea integration details", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "baseUrl": { "type": "string" }, "repositoryOwner": { "type": "string" }, "repositoryName": { "type": "string" }, "maskedAccessToken": { "type": "string" }, "webhookUrl": { "type": "string" }, "webhookSecret": { "type": "string" }, "branchPattern": { "type": "string" }, "commentTaskLinkOnGiteaIssue": { "type": "boolean" }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "baseUrl", "repositoryOwner", "repositoryName", "maskedAccessToken", "isActive", "createdAt", "updatedAt" ], "nullable": true } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "summary": "Get Gitea Integration" }, "post": { "operationId": "createGiteaIntegration", "tags": [ "Gitea" ], "description": "Create or update Gitea integration for a project", "responses": { "200": { "description": "Integration saved", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "baseUrl": { "type": "string" }, "repositoryOwner": { "type": "string" }, "repositoryName": { "type": "string" }, "maskedAccessToken": { "type": "string" }, "webhookUrl": { "type": "string" }, "webhookSecret": { "type": "string" }, "branchPattern": { "type": "string" }, "commentTaskLinkOnGiteaIssue": { "type": "boolean" }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "baseUrl", "repositoryOwner", "repositoryName", "maskedAccessToken", "isActive", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "baseUrl": { "type": "string", "minLength": 1 }, "accessToken": { "type": "string" }, "repositoryOwner": { "type": "string", "minLength": 1 }, "repositoryName": { "type": "string", "minLength": 1 } }, "required": [ "baseUrl", "repositoryOwner", "repositoryName" ] } } } }, "summary": "Create Gitea Integration" }, "patch": { "operationId": "updateGiteaIntegration", "tags": [ "Gitea" ], "description": "Update Gitea integration settings", "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "baseUrl": { "type": "string" }, "repositoryOwner": { "type": "string" }, "repositoryName": { "type": "string" }, "maskedAccessToken": { "type": "string" }, "webhookUrl": { "type": "string" }, "webhookSecret": { "type": "string" }, "branchPattern": { "type": "string" }, "commentTaskLinkOnGiteaIssue": { "type": "boolean" }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "baseUrl", "repositoryOwner", "repositoryName", "maskedAccessToken", "isActive", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "isActive": { "type": "boolean" }, "commentTaskLinkOnGiteaIssue": { "type": "boolean" } } } } } }, "summary": "Update Gitea Integration" }, "delete": { "operationId": "deleteGiteaIntegration", "tags": [ "Gitea" ], "description": "Delete Gitea integration for a project", "responses": { "200": { "description": "Deleted", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" } }, "required": [ "success", "message" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "summary": "Delete Gitea Integration" } }, "/gitea-integration/import-issues": { "post": { "operationId": "importGiteaIssues", "tags": [ "Gitea" ], "description": "Import Gitea issues as tasks", "responses": { "200": { "description": "Import result", "content": { "application/json": { "schema": { "type": "object", "properties": { "imported": { "type": "number" }, "updated": { "type": "number" }, "skipped": { "type": "number" }, "errors": { "type": "array", "items": { "type": "string" } } }, "required": [ "imported", "updated", "skipped" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "projectId": { "type": "string" } }, "required": [ "projectId" ] } } } }, "summary": "Import Gitea Issues" } }, "/generic-webhook-integration/project/{projectId}": { "get": { "operationId": "getGenericWebhookIntegration", "tags": [ "Generic Webhook" ], "description": "Get generic outgoing webhook integration for a project", "responses": { "200": { "description": "Generic webhook integration details", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "webhookConfigured": { "type": "boolean" }, "maskedWebhookUrl": { "type": "string", "nullable": true }, "secretConfigured": { "type": "boolean" }, "maskedSecret": { "type": "string", "nullable": true }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } }, "required": [ "taskCreated", "taskStatusChanged", "taskPriorityChanged", "taskTitleChanged", "taskDescriptionChanged", "taskCommentCreated" ] }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "webhookConfigured", "maskedWebhookUrl", "secretConfigured", "maskedSecret", "events", "isActive", "createdAt", "updatedAt" ], "nullable": true } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "summary": "Get Generic Webhook Integration" }, "post": { "operationId": "createGenericWebhookIntegration", "tags": [ "Generic Webhook" ], "description": "Create or replace a generic outgoing webhook integration", "responses": { "200": { "description": "Generic webhook integration created successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "webhookConfigured": { "type": "boolean" }, "maskedWebhookUrl": { "type": "string", "nullable": true }, "secretConfigured": { "type": "boolean" }, "maskedSecret": { "type": "string", "nullable": true }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } }, "required": [ "taskCreated", "taskStatusChanged", "taskPriorityChanged", "taskTitleChanged", "taskDescriptionChanged", "taskCommentCreated" ] }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "webhookConfigured", "maskedWebhookUrl", "secretConfigured", "maskedSecret", "events", "isActive", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "webhookUrl": { "type": "string", "minLength": 1 }, "secret": { "type": "string" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } } } }, "required": [ "webhookUrl" ] } } } }, "summary": "Create Generic Webhook Integration" }, "patch": { "operationId": "updateGenericWebhookIntegration", "tags": [ "Generic Webhook" ], "description": "Update generic outgoing webhook settings", "responses": { "200": { "description": "Generic webhook integration updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "webhookConfigured": { "type": "boolean" }, "maskedWebhookUrl": { "type": "string", "nullable": true }, "secretConfigured": { "type": "boolean" }, "maskedSecret": { "type": "string", "nullable": true }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } }, "required": [ "taskCreated", "taskStatusChanged", "taskPriorityChanged", "taskTitleChanged", "taskDescriptionChanged", "taskCommentCreated" ] }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "webhookConfigured", "maskedWebhookUrl", "secretConfigured", "maskedSecret", "events", "isActive", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "webhookUrl": { "type": "string" }, "secret": { "type": "string", "nullable": true }, "isActive": { "type": "boolean" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } } } } } } } }, "summary": "Update Generic Webhook Integration" }, "delete": { "operationId": "deleteGenericWebhookIntegration", "tags": [ "Generic Webhook" ], "description": "Delete generic outgoing webhook integration for a project", "responses": { "200": { "description": "Generic webhook integration deleted successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" } }, "required": [ "success" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "summary": "Delete Generic Webhook Integration" } }, "/discord-integration/project/{projectId}": { "get": { "operationId": "getDiscordIntegration", "tags": [ "Discord" ], "description": "Get Discord integration for a project", "responses": { "200": { "description": "Discord integration details", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "channelName": { "type": "string", "nullable": true }, "webhookConfigured": { "type": "boolean" }, "maskedWebhookUrl": { "type": "string" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } }, "required": [ "taskCreated", "taskStatusChanged", "taskPriorityChanged", "taskTitleChanged", "taskDescriptionChanged", "taskCommentCreated" ] }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "channelName", "webhookConfigured", "maskedWebhookUrl", "events", "isActive", "createdAt", "updatedAt" ], "nullable": true } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "summary": "Get Discord Integration" }, "post": { "operationId": "createDiscordIntegration", "tags": [ "Discord" ], "description": "Create or replace a Discord integration for a project", "responses": { "200": { "description": "Discord integration created successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "channelName": { "type": "string", "nullable": true }, "webhookConfigured": { "type": "boolean" }, "maskedWebhookUrl": { "type": "string" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } }, "required": [ "taskCreated", "taskStatusChanged", "taskPriorityChanged", "taskTitleChanged", "taskDescriptionChanged", "taskCommentCreated" ] }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "channelName", "webhookConfigured", "maskedWebhookUrl", "events", "isActive", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "webhookUrl": { "type": "string", "minLength": 1 }, "channelName": { "type": "string" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } } } }, "required": [ "webhookUrl" ] } } } }, "summary": "Create Discord Integration" }, "patch": { "operationId": "updateDiscordIntegration", "tags": [ "Discord" ], "description": "Update Discord integration settings", "responses": { "200": { "description": "Discord integration updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "channelName": { "type": "string", "nullable": true }, "webhookConfigured": { "type": "boolean" }, "maskedWebhookUrl": { "type": "string" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } }, "required": [ "taskCreated", "taskStatusChanged", "taskPriorityChanged", "taskTitleChanged", "taskDescriptionChanged", "taskCommentCreated" ] }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "channelName", "webhookConfigured", "maskedWebhookUrl", "events", "isActive", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "webhookUrl": { "type": "string" }, "channelName": { "type": "string", "nullable": true }, "isActive": { "type": "boolean" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } } } } } } } }, "summary": "Update Discord Integration" }, "delete": { "operationId": "deleteDiscordIntegration", "tags": [ "Discord" ], "description": "Delete Discord integration for a project", "responses": { "200": { "description": "Discord integration deleted successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" } }, "required": [ "success" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "summary": "Delete Discord Integration" } }, "/slack-integration/project/{projectId}": { "get": { "operationId": "getSlackIntegration", "tags": [ "Slack" ], "description": "Get Slack integration for a project", "responses": { "200": { "description": "Slack integration details", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "channelName": { "type": "string", "nullable": true }, "webhookConfigured": { "type": "boolean" }, "maskedWebhookUrl": { "type": "string" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } }, "required": [ "taskCreated", "taskStatusChanged", "taskPriorityChanged", "taskTitleChanged", "taskDescriptionChanged", "taskCommentCreated" ] }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "channelName", "webhookConfigured", "maskedWebhookUrl", "events", "isActive", "createdAt", "updatedAt" ], "nullable": true } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "summary": "Get Slack Integration" }, "post": { "operationId": "createSlackIntegration", "tags": [ "Slack" ], "description": "Create or replace a Slack integration for a project", "responses": { "200": { "description": "Slack integration created successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "channelName": { "type": "string", "nullable": true }, "webhookConfigured": { "type": "boolean" }, "maskedWebhookUrl": { "type": "string" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } }, "required": [ "taskCreated", "taskStatusChanged", "taskPriorityChanged", "taskTitleChanged", "taskDescriptionChanged", "taskCommentCreated" ] }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "channelName", "webhookConfigured", "maskedWebhookUrl", "events", "isActive", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "webhookUrl": { "type": "string", "minLength": 1 }, "channelName": { "type": "string" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } } } }, "required": [ "webhookUrl" ] } } } }, "summary": "Create Slack Integration" }, "patch": { "operationId": "updateSlackIntegration", "tags": [ "Slack" ], "description": "Update Slack integration settings", "responses": { "200": { "description": "Slack integration updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "channelName": { "type": "string", "nullable": true }, "webhookConfigured": { "type": "boolean" }, "maskedWebhookUrl": { "type": "string" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } }, "required": [ "taskCreated", "taskStatusChanged", "taskPriorityChanged", "taskTitleChanged", "taskDescriptionChanged", "taskCommentCreated" ] }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "channelName", "webhookConfigured", "maskedWebhookUrl", "events", "isActive", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "webhookUrl": { "type": "string" }, "channelName": { "type": "string", "nullable": true }, "isActive": { "type": "boolean" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } } } } } } } }, "summary": "Update Slack Integration" }, "delete": { "operationId": "deleteSlackIntegration", "tags": [ "Slack" ], "description": "Delete Slack integration for a project", "responses": { "200": { "description": "Slack integration deleted successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" } }, "required": [ "success" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "summary": "Delete Slack Integration" } }, "/telegram-integration/project/{projectId}": { "get": { "operationId": "getTelegramIntegration", "tags": [ "Telegram" ], "description": "Get Telegram integration for a project", "responses": { "200": { "description": "Telegram integration details", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "chatId": { "type": "string" }, "threadId": { "type": "number", "nullable": true }, "chatLabel": { "type": "string", "nullable": true }, "botTokenConfigured": { "type": "boolean" }, "maskedBotToken": { "type": "string" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } }, "required": [ "taskCreated", "taskStatusChanged", "taskPriorityChanged", "taskTitleChanged", "taskDescriptionChanged", "taskCommentCreated" ] }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "chatId", "threadId", "chatLabel", "botTokenConfigured", "maskedBotToken", "events", "isActive", "createdAt", "updatedAt" ] } } } }, "404": { "description": "Telegram integration not found" } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "summary": "Get Telegram Integration" }, "post": { "operationId": "createTelegramIntegration", "tags": [ "Telegram" ], "description": "Create or replace a Telegram integration for a project", "responses": { "200": { "description": "Telegram integration created successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "chatId": { "type": "string" }, "threadId": { "type": "number", "nullable": true }, "chatLabel": { "type": "string", "nullable": true }, "botTokenConfigured": { "type": "boolean" }, "maskedBotToken": { "type": "string" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } }, "required": [ "taskCreated", "taskStatusChanged", "taskPriorityChanged", "taskTitleChanged", "taskDescriptionChanged", "taskCommentCreated" ] }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "chatId", "threadId", "chatLabel", "botTokenConfigured", "maskedBotToken", "events", "isActive", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "botToken": { "type": "string", "minLength": 1 }, "chatId": { "type": "string", "minLength": 1 }, "threadId": { "type": "number" }, "chatLabel": { "type": "string" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } } } }, "required": [ "botToken", "chatId" ] } } } }, "summary": "Create Telegram Integration" }, "patch": { "operationId": "updateTelegramIntegration", "tags": [ "Telegram" ], "description": "Update Telegram integration settings", "responses": { "200": { "description": "Telegram integration updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "chatId": { "type": "string" }, "threadId": { "type": "number", "nullable": true }, "chatLabel": { "type": "string", "nullable": true }, "botTokenConfigured": { "type": "boolean" }, "maskedBotToken": { "type": "string" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } }, "required": [ "taskCreated", "taskStatusChanged", "taskPriorityChanged", "taskTitleChanged", "taskDescriptionChanged", "taskCommentCreated" ] }, "isActive": { "type": "boolean", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "projectId", "chatId", "threadId", "chatLabel", "botTokenConfigured", "maskedBotToken", "events", "isActive", "createdAt", "updatedAt" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "botToken": { "type": "string" }, "chatId": { "type": "string" }, "threadId": { "type": "number", "nullable": true }, "chatLabel": { "type": "string", "nullable": true }, "isActive": { "type": "boolean" }, "events": { "type": "object", "properties": { "taskCreated": { "type": "boolean" }, "taskStatusChanged": { "type": "boolean" }, "taskPriorityChanged": { "type": "boolean" }, "taskTitleChanged": { "type": "boolean" }, "taskDescriptionChanged": { "type": "boolean" }, "taskCommentCreated": { "type": "boolean" } } } } } } } }, "summary": "Update Telegram Integration" }, "delete": { "operationId": "deleteTelegramIntegration", "tags": [ "Telegram" ], "description": "Delete Telegram integration for a project", "responses": { "200": { "description": "Telegram integration deleted successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" } }, "required": [ "success" ] } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "summary": "Delete Telegram Integration" } }, "/task-relation/{taskId}": { "get": { "operationId": "getTaskRelations", "tags": [ "Task Relations" ], "description": "Get all relations for a task", "responses": { "200": { "description": "Task relations with associated task data", "content": { "application/json": { "schema": { "type": "object" } } } } }, "parameters": [ { "in": "path", "name": "taskId", "schema": { "type": "string" }, "required": true } ], "summary": "Get Task Relations" } }, "/task-relation": { "post": { "operationId": "createTaskRelation", "tags": [ "Task Relations" ], "description": "Create a relation between two tasks", "responses": { "200": { "description": "Task relation created successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "sourceTaskId": { "type": "string" }, "targetTaskId": { "type": "string" }, "relationType": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "sourceTaskId", "targetTaskId", "relationType", "createdAt" ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "sourceTaskId": { "type": "string" }, "targetTaskId": { "type": "string" }, "relationType": { "enum": [ "subtask", "blocks", "related" ], "type": "string" } }, "required": [ "sourceTaskId", "targetTaskId", "relationType" ] } } } }, "summary": "Create Task Relation" } }, "/task-relation/{id}": { "delete": { "operationId": "deleteTaskRelation", "tags": [ "Task Relations" ], "description": "Delete a task relation", "responses": { "200": { "description": "Task relation deleted successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "sourceTaskId": { "type": "string" }, "targetTaskId": { "type": "string" }, "relationType": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "sourceTaskId", "targetTaskId", "relationType", "createdAt" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Delete Task Relation" } }, "/external-link/task/{taskId}": { "get": { "operationId": "getExternalLinksByTask", "tags": [ "External Links" ], "description": "Get all external links for a task", "responses": { "200": { "description": "External links for the task", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "taskId": { "type": "string" }, "integrationId": { "type": "string" }, "resourceType": { "type": "string" }, "externalId": { "type": "string" }, "url": { "type": "string" }, "title": { "type": "string", "nullable": true }, "metadata": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "taskId", "integrationId", "resourceType", "externalId", "url", "title", "metadata", "createdAt", "updatedAt" ] } } } } } }, "parameters": [ { "in": "path", "name": "taskId", "schema": { "type": "string" }, "required": true } ], "summary": "Get External Links By Task" } }, "/workflow-rule/{projectId}": { "get": { "operationId": "getWorkflowRules", "tags": [ "Workflow Rules" ], "description": "Get all workflow rules for a project", "responses": { "200": { "description": "List of workflow rules", "content": { "application/json": { "schema": { "type": "object" } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "summary": "Get Workflow Rules" }, "put": { "operationId": "upsertWorkflowRule", "tags": [ "Workflow Rules" ], "description": "Create or update a workflow rule", "responses": { "200": { "description": "Workflow rule upserted successfully", "content": { "application/json": { "schema": { "type": "object" } } } } }, "parameters": [ { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "integrationType": { "type": "string" }, "eventType": { "type": "string" }, "columnId": { "type": "string" } }, "required": [ "integrationType", "eventType", "columnId" ] } } } }, "summary": "Upsert Workflow Rule" } }, "/workflow-rule/{id}": { "delete": { "operationId": "deleteWorkflowRule", "tags": [ "Workflow Rules" ], "description": "Delete a workflow rule", "responses": { "200": { "description": "Workflow rule deleted successfully", "content": { "application/json": { "schema": { "type": "object" } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Delete Workflow Rule" } }, "/invitation/pending": { "get": { "operationId": "getUserPendingInvitations", "tags": [ "Invitations" ], "description": "Get all pending invitations for the current user", "responses": { "200": { "description": "List of pending invitations", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "email": { "type": "string" }, "workspaceId": { "type": "string" }, "workspaceName": { "type": "string" }, "inviterName": { "type": "string" }, "expiresAt": { "type": "string" }, "createdAt": { "type": "string" }, "status": { "type": "string" } }, "required": [ "id", "email", "workspaceId", "workspaceName", "inviterName", "expiresAt", "createdAt", "status" ] } } } } } }, "summary": "Get User Pending Invitations" } }, "/invitation/{id}": { "get": { "operationId": "getInvitationDetails", "tags": [ "Invitations" ], "description": "Get details of a specific invitation by ID", "responses": { "200": { "description": "Invitation details", "content": { "application/json": { "schema": { "type": "object", "properties": { "valid": { "type": "boolean" }, "invitation": { "type": "object", "properties": { "id": { "type": "string" }, "email": { "type": "string" }, "workspaceName": { "type": "string" }, "inviterName": { "type": "string" }, "expiresAt": { "type": "string" }, "status": { "type": "string" }, "expired": { "type": "boolean" } }, "required": [ "id", "email", "workspaceName", "inviterName", "expiresAt", "status", "expired" ] }, "error": { "type": "string" } }, "required": [ "valid" ] } } } } }, "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "summary": "Get Invitation Details" } }, "/workspace/{workspaceId}/members": { "get": { "operationId": "getWorkspaceMembers", "tags": [ "Workspaces" ], "description": "Get all members of a workspace", "responses": { "200": { "description": "List of workspace members", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "email": { "type": "string" }, "image": { "type": "string", "nullable": true }, "role": { "type": "string" } }, "required": [ "id", "name", "email", "image", "role" ] } } } } } }, "parameters": [ { "in": "path", "name": "workspaceId", "schema": { "type": "string" }, "required": true } ], "summary": "Get Workspace Members" } }, "/auth/organization/create": { "post": { "tags": [ "Organization Management" ], "description": "Create an organization", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the organization" }, "slug": { "type": "string", "description": "The slug of the organization" }, "userId": { "type": "string", "description": "The user id of the organization creator. If not provided, the current user will be used. Should only be used by admins or when called by the server. server-only. Eg: \"user-id\"", "nullable": true }, "logo": { "type": "string", "description": "The logo of the organization", "nullable": true }, "metadata": { "type": "string", "description": "The metadata of the organization", "nullable": true }, "keepCurrentActiveOrganization": { "type": "boolean", "description": "Whether to keep the current active organization active after creating a new one. Eg: true", "nullable": true }, "description": { "type": "string", "nullable": true } }, "required": [ "name", "slug" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Organization" } ], "type": "object", "description": "The organization that was created" } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "createOrganization", "summary": "Create Organization" } }, "/auth/organization/update": { "post": { "tags": [ "Organization Management" ], "description": "Update an organization", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "description": { "type": "string", "nullable": true }, "name": { "type": "string", "description": "The name of the organization", "nullable": true }, "slug": { "type": "string", "description": "The slug of the organization", "nullable": true }, "logo": { "type": "string", "description": "The logo of the organization", "nullable": true }, "metadata": { "type": "string", "description": "The metadata of the organization", "nullable": true } } }, "organizationId": { "type": "string", "description": "The organization ID. Eg: \"org-id\"", "nullable": true } }, "required": [ "data" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Organization" } ], "type": "object", "description": "The updated organization" } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "updateOrganization", "summary": "Update Organization" } }, "/auth/organization/delete": { "post": { "tags": [ "Organization Management" ], "description": "Delete an organization", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "organizationId": { "type": "string", "description": "The organization id to delete" } }, "required": [ "organizationId" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "string", "description": "The organization id that was deleted" } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "deleteOrganization", "summary": "Delete Organization" } }, "/auth/organization/set-active": { "post": { "tags": [ "Organization Management" ], "description": "Set the active organization", "operationId": "setOrganizationActive", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "organizationId": { "type": "string", "nullable": true }, "organizationSlug": { "type": "string", "description": "The organization slug to set as active. It can be null to unset the active organization if organizationId is not provided. Eg: \"org-slug\"", "nullable": true } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Organization" } ], "type": "object", "description": "The organization" } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "summary": "Set Organization Active" } }, "/auth/organization/get-full-organization": { "get": { "tags": [ "Organization Management" ], "description": "Get the full organization", "operationId": "getOrganizationFullOrganization", "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Organization" } ], "type": "object", "description": "The organization" } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "summary": "Get Organization Full Organization" } }, "/auth/organization/list": { "get": { "tags": [ "Organization Management" ], "description": "List all organizations", "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Organization" } } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "listOrganization", "summary": "List Organization" } }, "/auth/organization/invite-member": { "post": { "tags": [ "Organization Management" ], "description": "Create an invitation to an organization", "operationId": "inviteOrganizationMember", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "email": { "type": "string", "description": "The email address of the user to invite" }, "role": { "type": "string", "description": "The role(s) to assign to the user. It can be `admin`, `member`, owner. Eg: \"member\"" }, "organizationId": { "type": "string", "description": "The organization ID to invite the user to", "nullable": true }, "resend": { "type": "boolean", "description": "Resend the invitation email, if the user is already invited. Eg: true", "nullable": true }, "teamId": { "type": "string" } }, "required": [ "email", "role", "teamId" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "email": { "type": "string" }, "role": { "type": "string" }, "organizationId": { "type": "string" }, "inviterId": { "type": "string" }, "status": { "type": "string" }, "expiresAt": { "type": "string" }, "createdAt": { "type": "string" } }, "required": [ "id", "email", "role", "organizationId", "inviterId", "status", "expiresAt", "createdAt" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "summary": "Invite Organization Member" } }, "/auth/organization/cancel-invitation": { "post": { "tags": [ "Organization Management" ], "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "invitationId": { "type": "string", "description": "The ID of the invitation to cancel" } }, "required": [ "invitationId" ] } } } }, "responses": { "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "cancelOrganizationInvitation", "summary": "Cancel Organization Invitation" } }, "/auth/organization/accept-invitation": { "post": { "tags": [ "Organization Management" ], "description": "Accept an invitation to an organization", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "invitationId": { "type": "string", "description": "The ID of the invitation to accept" } }, "required": [ "invitationId" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "invitation": { "type": "object" }, "member": { "type": "object" } } } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "acceptOrganizationInvitation", "summary": "Accept Organization Invitation" } }, "/auth/organization/get-invitation": { "get": { "tags": [ "Organization Management" ], "description": "Get an invitation by ID", "security": [ { "bearerAuth": [] } ], "parameters": [ { "name": "id", "in": "query", "schema": { "type": "string", "description": "The ID of the invitation to get" }, "required": true } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "email": { "type": "string" }, "role": { "type": "string" }, "organizationId": { "type": "string" }, "inviterId": { "type": "string" }, "status": { "type": "string" }, "expiresAt": { "type": "string" }, "organizationName": { "type": "string" }, "organizationSlug": { "type": "string" }, "inviterEmail": { "type": "string" } }, "required": [ "id", "email", "role", "organizationId", "inviterId", "status", "expiresAt", "organizationName", "organizationSlug", "inviterEmail" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "getOrganizationInvitation", "summary": "Get Organization Invitation" } }, "/auth/organization/reject-invitation": { "post": { "tags": [ "Organization Management" ], "description": "Reject an invitation to an organization", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "invitationId": { "type": "string", "description": "The ID of the invitation to reject" } }, "required": [ "invitationId" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "invitation": { "type": "object" }, "member": { "type": "object", "nullable": true } } } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "rejectOrganizationInvitation", "summary": "Reject Organization Invitation" } }, "/auth/organization/list-invitations": { "get": { "tags": [ "Organization Management" ], "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "listOrganizationInvitations", "summary": "List Organization Invitations" } }, "/auth/organization/get-active-member": { "get": { "tags": [ "Organization Management" ], "description": "Get the member details of the active organization", "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "userId": { "type": "string" }, "organizationId": { "type": "string" }, "role": { "type": "string" } }, "required": [ "id", "userId", "organizationId", "role" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "getOrganizationActiveMember", "summary": "Get Organization Active Member" } }, "/auth/organization/check-slug": { "post": { "tags": [ "Organization Management" ], "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "slug": { "type": "string", "description": "The organization slug to check. Eg: \"my-org\"" } }, "required": [ "slug" ] } } } }, "responses": { "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "checkOrganizationSlug", "summary": "Check Organization Slug" } }, "/auth/organization/remove-member": { "post": { "tags": [ "Organization Management" ], "description": "Remove a member from an organization", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "memberIdOrEmail": { "type": "string", "description": "The ID or email of the member to remove" }, "organizationId": { "type": "string", "description": "The ID of the organization to remove the member from. If not provided, the active organization will be used. Eg: \"org-id\"", "nullable": true } }, "required": [ "memberIdOrEmail" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "member": { "type": "object", "properties": { "id": { "type": "string" }, "userId": { "type": "string" }, "organizationId": { "type": "string" }, "role": { "type": "string" } }, "required": [ "id", "userId", "organizationId", "role" ] } }, "required": [ "member" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "removeOrganizationMember", "summary": "Remove Organization Member" } }, "/auth/organization/update-member-role": { "post": { "tags": [ "Organization Management" ], "description": "Update the role of a member in an organization", "operationId": "updateOrganizationMemberRole", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "role": { "type": "string", "description": "The new role to be applied. This can be a string or array of strings representing the roles. Eg: [\"admin\", \"sale\"]" }, "memberId": { "type": "string", "description": "The member id to apply the role update to. Eg: \"member-id\"" }, "organizationId": { "type": "string", "description": "An optional organization ID which the member is a part of to apply the role update. If not provided, you must provide session headers to get the active organization. Eg: \"organization-id\"", "nullable": true } }, "required": [ "role", "memberId" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "member": { "type": "object", "properties": { "id": { "type": "string" }, "userId": { "type": "string" }, "organizationId": { "type": "string" }, "role": { "type": "string" } }, "required": [ "id", "userId", "organizationId", "role" ] } }, "required": [ "member" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "summary": "Update Organization Member Role" } }, "/auth/organization/leave": { "post": { "tags": [ "Organization Management" ], "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "organizationId": { "type": "string", "description": "The organization Id for the member to leave. Eg: \"organization-id\"" } }, "required": [ "organizationId" ] } } } }, "responses": { "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "leaveOrganization", "summary": "Leave Organization" } }, "/auth/organization/list-user-invitations": { "get": { "tags": [ "Organization Management" ], "description": "List all invitations a user has received", "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "email": { "type": "string" }, "role": { "type": "string" }, "organizationId": { "type": "string" }, "organizationName": { "type": "string" }, "inviterId": { "type": "string", "description": "The ID of the user who created the invitation" }, "teamId": { "type": "string", "description": "The ID of the team associated with the invitation", "nullable": true }, "status": { "type": "string" }, "expiresAt": { "type": "string" }, "createdAt": { "type": "string" } }, "required": [ "id", "email", "role", "organizationId", "organizationName", "inviterId", "status", "expiresAt", "createdAt" ] } } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "listOrganizationUserInvitations", "summary": "List Organization User Invitations" } }, "/auth/organization/list-members": { "get": { "tags": [ "Organization Management" ], "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "listOrganizationMembers", "summary": "List Organization Members" } }, "/auth/organization/get-active-member-role": { "get": { "tags": [ "Organization Management" ], "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "getOrganizationActiveMemberRole", "summary": "Get Organization Active Member Role" } }, "/auth/organization/create-team": { "post": { "tags": [ "Organization Management" ], "description": "Create a new team within an organization", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the team. Eg: \"my-team\"" }, "organizationId": { "type": "string", "description": "The organization ID which the team will be created in. Defaults to the active organization. Eg: \"organization-id\"", "nullable": true } }, "required": [ "name" ] } } } }, "responses": { "200": { "description": "Team created successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the created team" }, "name": { "type": "string", "description": "Name of the team" }, "organizationId": { "type": "string", "description": "ID of the organization the team belongs to" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when the team was created" }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp when the team was last updated" } }, "required": [ "id", "name", "organizationId", "createdAt", "updatedAt" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "createOrganizationTeam", "summary": "Create Organization Team" } }, "/auth/organization/list-teams": { "get": { "tags": [ "Organization Management" ], "description": "List all teams in an organization", "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "200": { "description": "Teams retrieved successfully", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the team" }, "name": { "type": "string", "description": "Name of the team" }, "organizationId": { "type": "string", "description": "ID of the organization the team belongs to" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when the team was created" }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp when the team was last updated" } }, "required": [ "id", "name", "organizationId", "createdAt", "updatedAt" ] }, "description": "Array of team objects within the organization" } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "listOrganizationTeams", "summary": "List Organization Teams" } }, "/auth/organization/remove-team": { "post": { "tags": [ "Organization Management" ], "description": "Remove a team from an organization", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "teamId": { "type": "string", "description": "The team ID of the team to remove. Eg: \"team-id\"" }, "organizationId": { "type": "string", "description": "The organization ID which the team falls under. If not provided, it will default to the user's active organization. Eg: \"organization-id\"", "nullable": true } }, "required": [ "teamId" ] } } } }, "responses": { "200": { "description": "Team removed successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string", "description": "Confirmation message indicating successful removal", "enum": [ "Team removed successfully." ] } }, "required": [ "message" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "removeOrganizationTeam", "summary": "Remove Organization Team" } }, "/auth/organization/update-team": { "post": { "tags": [ "Organization Management" ], "description": "Update an existing team in an organization", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "teamId": { "type": "string", "description": "The ID of the team to be updated. Eg: \"team-id\"" }, "data": { "type": "object", "properties": { "id": { "type": "string", "nullable": true }, "name": { "type": "string", "nullable": true }, "organizationId": { "type": "string", "nullable": true }, "createdAt": { "type": "string", "nullable": true }, "updatedAt": { "type": "string", "nullable": true } } } }, "required": [ "teamId", "data" ] } } } }, "responses": { "200": { "description": "Team updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the updated team" }, "name": { "type": "string", "description": "Updated name of the team" }, "organizationId": { "type": "string", "description": "ID of the organization the team belongs to" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when the team was created" }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp when the team was last updated" } }, "required": [ "id", "name", "organizationId", "createdAt", "updatedAt" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "updateOrganizationTeam", "summary": "Update Organization Team" } }, "/auth/organization/set-active-team": { "post": { "tags": [ "Organization Management" ], "description": "Set the active team for the current active organization", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "teamId": { "type": "string", "nullable": true } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Team" } ], "type": "object", "description": "The team" } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "setOrganizationActiveTeam", "summary": "Set Organization Active Team" } }, "/auth/organization/list-user-teams": { "get": { "tags": [ "Organization Management" ], "description": "List all teams that the current user is a part of.", "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "200": { "description": "Teams retrieved successfully", "content": { "application/json": { "schema": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/Team" } ], "type": "object", "description": "The team" }, "description": "Array of team objects within the organization" } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "listOrganizationUserTeams", "summary": "List Organization User Teams" } }, "/auth/organization/list-team-members": { "get": { "tags": [ "Organization Management" ], "description": "List the members of the given team.", "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "200": { "description": "Teams retrieved successfully", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "description": "The team member", "properties": { "id": { "type": "string", "description": "Unique identifier of the team member" }, "userId": { "type": "string", "description": "The user ID of the team member" }, "teamId": { "type": "string", "description": "The team ID of the team the team member is in" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when the team member was created" } }, "required": [ "id", "userId", "teamId", "createdAt" ] }, "description": "Array of team member objects within the team" } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "listOrganizationTeamMembers", "summary": "List Organization Team Members" } }, "/auth/organization/add-team-member": { "post": { "tags": [ "Organization Management" ], "description": "The newly created member", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "teamId": { "type": "string", "description": "The team the user should be a member of." }, "userId": { "type": "string", "description": "The user Id which represents the user to be added as a member." }, "organizationId": { "type": "string", "description": "The organization ID which the team falls under. If not provided, it will default to the user's active organization.", "nullable": true } }, "required": [ "teamId", "userId" ] } } } }, "responses": { "200": { "description": "Team member created successfully", "content": { "application/json": { "schema": { "type": "object", "description": "The team member", "properties": { "id": { "type": "string", "description": "Unique identifier of the team member" }, "userId": { "type": "string", "description": "The user ID of the team member" }, "teamId": { "type": "string", "description": "The team ID of the team the team member is in" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when the team member was created" } }, "required": [ "id", "userId", "teamId", "createdAt" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "addOrganizationTeamMember", "summary": "Add Organization Team Member" } }, "/auth/organization/remove-team-member": { "post": { "tags": [ "Organization Management" ], "description": "Remove a member from a team", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "teamId": { "type": "string", "description": "The team the user should be removed from." }, "userId": { "type": "string", "description": "The user which should be removed from the team." }, "organizationId": { "type": "string", "description": "The organization ID which the team falls under. If not provided, it will default to the user's active organization.", "nullable": true } }, "required": [ "teamId", "userId" ] } } } }, "responses": { "200": { "description": "Team member removed successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string", "description": "Confirmation message indicating successful removal", "enum": [ "Team member removed successfully." ] } }, "required": [ "message" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "removeOrganizationTeamMember", "summary": "Remove Organization Team Member" } }, "/auth/organization/create-role": { "post": { "tags": [ "Organization Management" ], "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "organizationId": { "type": "string", "nullable": true }, "role": { "type": "string", "description": "The name of the role to create" }, "permission": { "type": "string", "description": "The permission to assign to the role" }, "additionalFields": { "type": "object", "properties": {}, "nullable": true } }, "required": [ "role", "permission" ] } } } }, "responses": { "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "createOrganizationRole", "summary": "Create Organization Role" } }, "/auth/organization/delete-role": { "post": { "tags": [ "Organization Management" ], "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "deleteOrganizationRole", "summary": "Delete Organization Role" } }, "/auth/organization/list-roles": { "get": { "tags": [ "Organization Management" ], "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "listOrganizationRoles", "summary": "List Organization Roles" } }, "/auth/organization/get-role": { "get": { "tags": [ "Organization Management" ], "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "getOrganizationRole", "summary": "Get Organization Role" } }, "/auth/organization/update-role": { "post": { "tags": [ "Organization Management" ], "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "updateOrganizationRole", "summary": "Update Organization Role" } }, "/auth/organization/has-permission": { "post": { "tags": [ "Organization Management" ], "description": "Check if the user has permission", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "permission": { "type": "object", "description": "The permission to check", "deprecated": true }, "permissions": { "type": "object", "description": "The permission to check" } }, "required": [ "permissions" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" }, "success": { "type": "boolean" } }, "required": [ "success" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } }, "operationId": "hasOrganizationPermission", "summary": "Check Organization Permission" } } }, "tags": [ { "name": "Organization Management" } ] }