kaneo
GitHub🎯 All you need. Nothing you don't. Open source project management that works for you, not against you.
Kaneo API Specification
Located in apps/docs/openapi.json on branch HEAD
3.0.3
JSON
105 Endpoints
448.7 KB
Operations & Route Endpoints (100)
Raw JSON Specification
{
"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"
}
]
}