openapi: 3.0.3 info: title: 'MegaKanban API' description: 'Documentação oficial da API para integrações externas.' version: 1.0.0 servers: - url: 'https://megakanban.com.br' tags: - name: Cards description: '' - name: Endpoints description: '' - name: Webhooks description: '' components: securitySchemes: default: type: http scheme: bearer description: 'Envie o token de API no header Authorization.' security: - default: [] paths: /api/cards: post: summary: 'Create a card' operationId: createACard description: '' parameters: [] responses: { } tags: - Cards requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The task title.' example: 'Integração ERP' description: type: string description: 'The task description (Markdown supported).' example: 'Eius et animi quos velit et.' nullable: true column_id: type: integer description: 'Column ID to place the card.' example: 12 start_date: type: date description: 'Task start date (YYYY-MM-DD).' example: '2026-02-01' nullable: true due_date: type: date description: 'Task due date (YYYY-MM-DD).' example: '2026-02-10' nullable: true required: - title - column_id '/api/cards/{slug}': patch: summary: 'Update a card' operationId: updateACard description: '' parameters: [] responses: { } tags: - Cards requestBody: required: false content: application/json: schema: type: object properties: title: type: string description: 'New title.' example: architecto description: type: string description: 'Updated description.' example: 'Eius et animi quos velit et.' nullable: true column_id: type: integer description: 'Column ID to move the card.' example: 16 start_date: type: date description: 'Updated start date (YYYY-MM-DD).' example: architecto nullable: true due_date: type: date description: 'Updated due date (YYYY-MM-DD).' example: architecto nullable: true parameters: - in: path name: slug description: 'The slug of the card.' example: migracao-dos-cards-do-trello-para-megakanban required: true schema: type: string - in: path name: card description: 'The card ID.' example: 5 required: true schema: type: integer /api/kanban/events: post: summary: '' operationId: postApiKanbanEvents description: '' parameters: [] responses: { } tags: - Endpoints '/api/drawings/{drawing_slug}/bootstrap': get: summary: '' operationId: getApiDrawingsDrawing_slugBootstrap description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints parameters: - in: path name: drawing_slug description: 'The slug of the drawing.' example: ambinte-de-teste required: true schema: type: string '/api/drawings/{drawing_slug}/preferences': patch: summary: '' operationId: patchApiDrawingsDrawing_slugPreferences description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: snap_grid: type: boolean description: '' example: false nullable: true snap_objects: type: boolean description: '' example: false nullable: true snap_angle: type: boolean description: '' example: false nullable: true snap_spacing: type: boolean description: '' example: true nullable: true grid_visible: type: boolean description: '' example: false nullable: true theme: type: string description: '' example: system enum: - light - dark - system nullable: true last_zoom: type: number description: 'Must be at least 0.1. Must not be greater than 4.' example: 4 nullable: true last_pan: type: object description: '' example: null properties: x: type: number description: '' example: 4326.41688 nullable: true 'y': type: number description: '' example: 4326.41688 nullable: true nullable: true parameters: - in: path name: drawing_slug description: 'The slug of the drawing.' example: ambinte-de-teste required: true schema: type: string '/api/drawings/{drawing_slug}/operations': post: summary: '' operationId: postApiDrawingsDrawing_slugOperations description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: operation_id: type: string description: 'Must not be greater than 80 characters.' example: b client_id: type: string description: 'Must not be greater than 80 characters.' example: 'n' nullable: true sent_at: type: string description: 'Must be a valid date.' example: '2026-03-03T11:29:16' nullable: true base_version: type: integer description: 'Must be at least 1.' example: 67 scene_version: type: integer description: 'Must be at least 1.' example: 66 nullable: true operations: type: array description: 'Must have at least 1 items. Must not have more than 50 items.' example: - [] items: type: object properties: type: type: string description: '' example: create enum: - create - update - delete - reorder - connect - disconnect - style - transform - viewport target_id: type: string description: 'Must not be greater than 80 characters.' example: 'n' nullable: true payload: type: object description: '' example: null properties: { } nullable: true required: - type scene_snapshot: type: object description: '' example: [] properties: elements: type: object description: '' example: null properties: { } nullable: true connections: type: object description: '' example: null properties: { } nullable: true summary: type: string description: 'Must not be greater than 240 characters.' example: b nullable: true required: - operation_id - base_version - operations - scene_snapshot parameters: - in: path name: drawing_slug description: 'The slug of the drawing.' example: ambinte-de-teste required: true schema: type: string '/api/drawings/{drawing_slug}/revisions': get: summary: '' operationId: getApiDrawingsDrawing_slugRevisions description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints parameters: - in: path name: drawing_slug description: 'The slug of the drawing.' example: ambinte-de-teste required: true schema: type: string '/api/drawings/{drawing_slug}/revisions/snapshot': post: summary: '' operationId: postApiDrawingsDrawing_slugRevisionsSnapshot description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: base_version: type: integer description: 'Must be at least 1.' example: 16 scene_snapshot: type: object description: '' example: [] properties: { } summary: type: string description: 'Must not be greater than 240 characters.' example: b nullable: true required: - base_version - scene_snapshot parameters: - in: path name: drawing_slug description: 'The slug of the drawing.' example: ambinte-de-teste required: true schema: type: string '/api/drawings/{drawing_slug}/revisions/restore': post: summary: '' operationId: postApiDrawingsDrawing_slugRevisionsRestore description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: base_version: type: integer description: 'Must be at least 1.' example: 16 version: type: integer description: 'Must be at least 1.' example: 22 summary: type: string description: 'Must not be greater than 240 characters.' example: g nullable: true required: - base_version - version parameters: - in: path name: drawing_slug description: 'The slug of the drawing.' example: ambinte-de-teste required: true schema: type: string '/api/drawings/{drawing_slug}/exports': post: summary: '' operationId: postApiDrawingsDrawing_slugExports description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: format: type: string description: '' example: svg enum: - svg - pdf - png scene_snapshot: type: object description: '' example: [] properties: { } options: type: object description: '' example: null properties: width: type: number description: 'Must be at least 200. Must not be greater than 12000.' example: 1 nullable: true height: type: number description: 'Must be at least 120. Must not be greater than 12000.' example: 22 nullable: true background_color: type: string description: 'Must not be greater than 20 characters.' example: gzmiyvdljnikhway nullable: true prefer_async: type: boolean description: '' example: true nullable: true nullable: true required: - format - scene_snapshot parameters: - in: path name: drawing_slug description: 'The slug of the drawing.' example: ambinte-de-teste required: true schema: type: string '/api/drawings/{drawing_slug}/exports/{drawingExport_id}': get: summary: '' operationId: getApiDrawingsDrawing_slugExportsDrawingExport_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints parameters: - in: path name: drawing_slug description: 'The slug of the drawing.' example: ambinte-de-teste required: true schema: type: string - in: path name: drawingExport_id description: 'The ID of the drawingExport.' example: 16 required: true schema: type: integer '/api/drawings/{drawing_slug}/exports/{drawingExport_id}/download': get: summary: '' operationId: getApiDrawingsDrawing_slugExportsDrawingExport_idDownload description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints parameters: - in: path name: drawing_slug description: 'The slug of the drawing.' example: ambinte-de-teste required: true schema: type: string - in: path name: drawingExport_id description: 'The ID of the drawingExport.' example: 16 required: true schema: type: integer '/api/drawings/{drawing_slug}/assets/upload': post: summary: '' operationId: postApiDrawingsDrawing_slugAssetsUpload description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: multipart/form-data: schema: type: object properties: file: type: string format: binary description: 'Must be a file.' required: - file parameters: - in: path name: drawing_slug description: 'The slug of the drawing.' example: ambinte-de-teste required: true schema: type: string '/api/drawings/{drawing_slug}/assets/youtube': post: summary: '' operationId: postApiDrawingsDrawing_slugAssetsYoutube description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: url: type: string description: '' example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html' required: - url parameters: - in: path name: drawing_slug description: 'The slug of the drawing.' example: ambinte-de-teste required: true schema: type: string /api/health: get: summary: '' operationId: getApiHealth description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: status: ok timestamp: 1772548156 properties: status: type: string example: ok timestamp: type: integer example: 1772548156 tags: - Endpoints /api/test-endpoint: get: summary: '' operationId: getApiTestEndpoint description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: 'Performance test successful' timestamp: 1772548156.6246 memory: 67633152 random: 681 properties: message: type: string example: 'Performance test successful' timestamp: type: number example: 1772548156.6246 memory: type: integer example: 67633152 random: type: integer example: 681 tags: - Endpoints '/api/webhooks/{board_slug}/{secret}': post: summary: "Create a card via webhook\n\nEndpoint to create a card in a board using the board webhook secret." operationId: createACardViaWebhookEndpointToCreateACardInABoardUsingTheBoardWebhookSecret description: '' parameters: [] responses: { } tags: - Webhooks requestBody: required: true content: application/json: schema: type: object properties: titulo: type: string description: 'Card title.' example: 'Lead do CRM' descricao: type: string description: 'Card description.' example: 'Novo lead importado' required: - titulo - descricao security: [] parameters: - in: path name: board_slug description: 'The slug of the board.' example: heavy-codes-projetos required: true schema: type: string - in: path name: secret description: 'Webhook secret.' example: 3y2Qf5xT8kVn9Zb1LpJq7mHrUeCt0AaXnR4y9sYp required: true schema: type: string - in: path name: board description: 'Board slug.' example: marketing required: true schema: type: string