{"openapi":"3.0.0","paths":{"/healthz":{"get":{"operationId":"HealthController_health","parameters":[],"responses":{"200":{"description":""}},"tags":["Health"]}},"/v1/workspaces/{ws}/audit-logs":{"get":{"operationId":"AuditController_list","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"action","required":false,"in":"query","schema":{"type":"string"}},{"name":"actorId","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["audit"]}},"/v1/auth/signup":{"post":{"operationId":"AuthController_signup","parameters":[{"name":"accept-language","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupDto"}}}},"responses":{"201":{"description":""}},"tags":["auth"]}},"/v1/auth/login":{"post":{"operationId":"AuthController_login","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginDto"}}}},"responses":{"200":{"description":""}},"tags":["auth"]}},"/v1/auth/google":{"post":{"operationId":"AuthController_google","parameters":[{"name":"accept-language","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleLoginDto"}}}},"responses":{"200":{"description":""}},"tags":["auth"]}},"/v1/auth/totp/verify":{"post":{"operationId":"AuthController_verifyTotpLogin","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TotpLoginDto"}}}},"responses":{"200":{"description":""}},"tags":["auth"]}},"/v1/auth/totp/setup":{"post":{"operationId":"AuthController_setupTotp","parameters":[],"responses":{"201":{"description":""}},"tags":["auth"]}},"/v1/auth/totp/enable":{"post":{"operationId":"AuthController_enableTotp","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TotpCodeDto"}}}},"responses":{"204":{"description":""}},"tags":["auth"]}},"/v1/auth/totp/disable":{"post":{"operationId":"AuthController_disableTotp","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TotpCodeDto"}}}},"responses":{"204":{"description":""}},"tags":["auth"]}},"/v1/auth/refresh":{"post":{"operationId":"AuthController_refresh","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshDto"}}}},"responses":{"200":{"description":""}},"tags":["auth"]}},"/v1/auth/logout":{"post":{"operationId":"AuthController_logout","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshDto"}}}},"responses":{"204":{"description":""}},"tags":["auth"]}},"/v1/me":{"get":{"operationId":"AuthController_me","parameters":[],"responses":{"200":{"description":""}},"tags":["auth"]},"patch":{"operationId":"AuthController_updateMe","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMeDto"}}}},"responses":{"200":{"description":""}},"tags":["auth"]}},"/v1/me/change-password/request-code":{"post":{"operationId":"AuthController_requestPasswordChangeCode","parameters":[],"responses":{"204":{"description":""}},"tags":["auth"]}},"/v1/me/change-password":{"post":{"operationId":"AuthController_changePassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordDto"}}}},"responses":{"204":{"description":""}},"tags":["auth"]}},"/v1/auth/verify-email":{"post":{"operationId":"AuthController_verifyEmail","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailDto"}}}},"responses":{"200":{"description":""}},"tags":["auth"]}},"/v1/auth/resend-verification":{"post":{"operationId":"AuthController_resendVerification","parameters":[],"responses":{"204":{"description":""}},"tags":["auth"]}},"/v1/auth/resend-verification-email":{"post":{"operationId":"AuthController_resendVerificationByEmail","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResendVerificationDto"}}}},"responses":{"204":{"description":""}},"tags":["auth"]}},"/v1/auth/request-password-reset":{"post":{"operationId":"AuthController_requestPasswordReset","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestPasswordResetDto"}}}},"responses":{"204":{"description":""}},"tags":["auth"]}},"/v1/auth/reset-password":{"post":{"operationId":"AuthController_resetPassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordDto"}}}},"responses":{"200":{"description":""}},"tags":["auth"]}},"/v1/auth/find-id":{"post":{"operationId":"AuthController_findId","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindIdDto"}}}},"responses":{"200":{"description":""}},"tags":["auth"]}},"/v1/workspaces":{"post":{"operationId":"WorkspacesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkspaceDto"}}}},"responses":{"201":{"description":""}},"tags":["workspaces"]},"get":{"operationId":"WorkspacesController_list","parameters":[],"responses":{"200":{"description":""}},"tags":["workspaces"]}},"/v1/workspaces/{ws}":{"get":{"operationId":"WorkspacesController_get","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["workspaces"]},"patch":{"operationId":"WorkspacesController_update","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkspaceDto"}}}},"responses":{"200":{"description":""}},"tags":["workspaces"]},"delete":{"operationId":"WorkspacesController_remove","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteWorkspaceDto"}}}},"responses":{"204":{"description":""}},"tags":["workspaces"]}},"/v1/workspaces/{ws}/members":{"get":{"operationId":"WorkspacesController_members","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["workspaces"]}},"/v1/workspaces/{ws}/members/{userId}":{"patch":{"operationId":"WorkspacesController_updateMember","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberDto"}}}},"responses":{"200":{"description":""}},"tags":["workspaces"]},"delete":{"operationId":"WorkspacesController_removeMember","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["workspaces"]}},"/v1/workspaces/{ws}/invitations":{"post":{"operationId":"WorkspacesController_invite","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInvitationDto"}}}},"responses":{"201":{"description":""}},"tags":["workspaces"]},"get":{"operationId":"WorkspacesController_invitations","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["workspaces"]}},"/v1/workspaces/{ws}/invitations/{id}":{"delete":{"operationId":"WorkspacesController_revokeInvitation","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["workspaces"]}},"/v1/invitations/{token}":{"get":{"operationId":"WorkspacesController_invitationInfo","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["workspaces"]}},"/v1/invitations/{token}/accept":{"post":{"operationId":"WorkspacesController_accept","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["workspaces"]}},"/v1/workspaces/{ws}/groups":{"post":{"operationId":"WorkspacesController_createGroup","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGroupDto"}}}},"responses":{"201":{"description":""}},"tags":["workspaces"]},"get":{"operationId":"WorkspacesController_groups","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["workspaces"]}},"/v1/workspaces/{ws}/groups/{groupId}":{"patch":{"operationId":"WorkspacesController_updateGroup","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"groupId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGroupDto"}}}},"responses":{"200":{"description":""}},"tags":["workspaces"]},"delete":{"operationId":"WorkspacesController_deleteGroup","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"groupId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["workspaces"]}},"/v1/workspaces/{ws}/groups/{groupId}/members":{"post":{"operationId":"WorkspacesController_addGroupMember","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"groupId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupMemberDto"}}}},"responses":{"201":{"description":""}},"tags":["workspaces"]}},"/v1/workspaces/{ws}/groups/{groupId}/members/{userId}":{"delete":{"operationId":"WorkspacesController_removeGroupMember","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"groupId","required":true,"in":"path","schema":{"type":"string"}},{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["workspaces"]}},"/v1/workspaces/{ws}/api-keys":{"post":{"operationId":"ApiKeysController_create","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyDto"}}}},"responses":{"201":{"description":""}},"tags":["api-keys"]},"get":{"operationId":"ApiKeysController_list","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["api-keys"]}},"/v1/workspaces/{ws}/api-keys/{id}":{"delete":{"operationId":"ApiKeysController_revoke","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["api-keys"]}},"/v1/me/api-keys":{"post":{"operationId":"ApiKeysController_createAccountKey","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyDto"}}}},"responses":{"201":{"description":""}},"tags":["api-keys"]},"get":{"operationId":"ApiKeysController_listAccountKeys","parameters":[],"responses":{"200":{"description":""}},"tags":["api-keys"]}},"/v1/me/api-keys/{id}":{"delete":{"operationId":"ApiKeysController_revokeAccountKey","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["api-keys"]}},"/v1/nodes/{id}/permissions":{"get":{"operationId":"PermissionsController_list","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["permissions"]},"post":{"operationId":"PermissionsController_set","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPermissionDto"}}}},"responses":{"201":{"description":""}},"tags":["permissions"]},"delete":{"operationId":"PermissionsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemovePermissionDto"}}}},"responses":{"204":{"description":""}},"tags":["permissions"]}},"/v1/nodes/{id}/visibility":{"post":{"operationId":"PermissionsController_setVisibility","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetVisibilityDto"}}}},"responses":{"201":{"description":""}},"tags":["permissions"]}},"/v1/nodes/{id}/restrict":{"post":{"operationId":"PermissionsController_setRestricted","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetRestrictedDto"}}}},"responses":{"201":{"description":""}},"tags":["permissions"]}},"/v1/nodes/{id}/share-links":{"post":{"operationId":"PermissionsController_createShareLink","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateShareLinkDto"}}}},"responses":{"201":{"description":""}},"tags":["permissions"]},"get":{"operationId":"PermissionsController_listShareLinks","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["permissions"]}},"/v1/share-links/{linkId}":{"delete":{"operationId":"PermissionsController_revokeShareLink","parameters":[{"name":"linkId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["permissions"]}},"/v1/shared/{token}":{"get":{"operationId":"PermissionsController_shared","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["permissions"]}},"/v1/workspaces/{ws}/nodes":{"post":{"operationId":"TreeController_create","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNodeDto"}}}},"responses":{"201":{"description":""}},"tags":["tree"]}},"/v1/workspaces/{ws}/tree":{"get":{"operationId":"TreeController_list","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"rootId","required":false,"in":"query","schema":{"type":"string"}},{"name":"depth","required":false,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["tree"]}},"/v1/workspaces/{ws}/tags":{"get":{"operationId":"TreeController_tags","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["tree"]}},"/v1/workspaces/{ws}/nodes/by-path":{"get":{"operationId":"TreeController_byPath","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"path","required":true,"in":"query","schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"description":""}},"tags":["tree"]}},"/v1/workspaces/{ws}/trash":{"get":{"operationId":"TreeController_trash","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["tree"]}},"/v1/nodes/{id}":{"patch":{"operationId":"TreeController_rename","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenameNodeDto"}}}},"responses":{"200":{"description":""}},"tags":["tree"]},"delete":{"operationId":"TreeController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["tree"]}},"/v1/nodes/{id}/move":{"post":{"operationId":"TreeController_move","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveNodeDto"}}}},"responses":{"201":{"description":""}},"tags":["tree"]}},"/v1/nodes/{id}/reorder":{"post":{"operationId":"TreeController_reorder","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderNodeDto"}}}},"responses":{"201":{"description":""}},"tags":["tree"]}},"/v1/nodes/{id}/restore":{"post":{"operationId":"TreeController_restore","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["tree"]}},"/v1/nodes/{id}/purge":{"delete":{"operationId":"TreeController_purge","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["tree"]}},"/v1/nodes/{id}/duplicate":{"post":{"operationId":"TreeController_duplicate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DuplicateNodeDto"}}}},"responses":{"201":{"description":""}},"tags":["tree"]}},"/v1/documents/{id}":{"get":{"operationId":"DocumentsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["documents"]},"put":{"operationId":"DocumentsController_put","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"if-match","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutDocumentDto"}},"text/markdown":{"schema":{"$ref":"#/components/schemas/PutDocumentDto"}}}},"responses":{"200":{"description":""}},"tags":["documents"]},"patch":{"operationId":"DocumentsController_patch","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"if-match","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchDocumentDto"}}}},"responses":{"200":{"description":""}},"tags":["documents"]}},"/v1/documents/{id}/append":{"post":{"operationId":"DocumentsController_append","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppendDocumentDto"}}}},"responses":{"200":{"description":""}},"tags":["documents"]}},"/v1/documents/{id}/versions":{"get":{"operationId":"DocumentsController_versions","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["documents"]}},"/v1/documents/{id}/versions/{vid}":{"get":{"operationId":"DocumentsController_version","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"vid","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["documents"]}},"/v1/documents/{id}/versions/{from}/diff/{to}":{"get":{"operationId":"DocumentsController_diff","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"from","required":true,"in":"path","schema":{"type":"string"}},{"name":"to","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["documents"]}},"/v1/documents/{id}/versions/{vid}/restore":{"post":{"operationId":"DocumentsController_restore","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"vid","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["documents"]}},"/v1/workspaces/{ws}/import":{"post":{"operationId":"DocumentsController_importZip","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"rootPath","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["documents"]}},"/v1/workspaces/{ws}/import/notion":{"post":{"operationId":"DocumentsController_importNotion","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"rootPath","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["documents"]}},"/v1/workspaces/{ws}/import/notion-api":{"post":{"operationId":"DocumentsController_importNotionApi","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotionApiImportDto"}}}},"responses":{"201":{"description":""}},"tags":["documents"]}},"/v1/workspaces/{ws}/import/jobs/{jobId}":{"get":{"operationId":"DocumentsController_importJob","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"jobId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["documents"]}},"/v1/workspaces/{ws}/export":{"get":{"operationId":"DocumentsController_exportZip","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"rootId","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["documents"]}},"/v1/workspaces/{ws}/search":{"get":{"operationId":"DocumentsController_search","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"q","required":true,"in":"query","schema":{"minLength":1,"maxLength":200,"type":"string"}},{"name":"in","required":false,"in":"query","schema":{"type":"string","enum":["title","content","all"]}}],"responses":{"200":{"description":""}},"tags":["documents"]}},"/v1/attachments/presign":{"post":{"operationId":"AttachmentsController_presign","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresignDto"}}}},"responses":{"201":{"description":""}},"tags":["attachments"]}},"/v1/attachments/{id}/complete":{"post":{"operationId":"AttachmentsController_complete","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["attachments"]}},"/v1/attachments/upload":{"post":{"operationId":"AttachmentsController_upload","parameters":[{"name":"filename","required":true,"in":"query","schema":{"maxLength":255,"type":"string"}},{"name":"mimeType","required":true,"in":"query","schema":{"maxLength":120,"type":"string"}},{"name":"workspaceId","required":true,"in":"query","schema":{"type":"string"}},{"name":"nodeId","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["attachments"]}},"/v1/attachments/{id}":{"get":{"operationId":"AttachmentsController_download","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["attachments"]},"delete":{"operationId":"AttachmentsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["attachments"]}},"/v1/attachments/{id}/raw":{"get":{"operationId":"AttachmentsController_raw","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["attachments"]}},"/v1/workspaces/{ws}/databases":{"post":{"operationId":"DatabasesController_create","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDatabaseDto"}}}},"responses":{"201":{"description":""}},"tags":["databases"]}},"/v1/databases/{id}":{"get":{"operationId":"DatabasesController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["databases"]},"patch":{"operationId":"DatabasesController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchDatabaseDto"}}}},"responses":{"200":{"description":""}},"tags":["databases"]}},"/v1/databases/{id}/rows":{"get":{"description":"Returns all rows of the database in position order.","operationId":"DatabasesController_rows","parameters":[{"name":"id","required":true,"in":"path","description":"Database node id.","schema":{"type":"string"}}],"responses":{"200":{"description":"The database rows."},"404":{"description":"Database not found or not visible."}},"summary":"List database rows","tags":["databases"]},"post":{"description":"Appends a row (or inserts at `position`). Values are validated against the database properties.","operationId":"DatabasesController_createRow","parameters":[{"name":"id","required":true,"in":"path","description":"Database node id.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRowDto"}}}},"responses":{"201":{"description":"The created row."},"404":{"description":"Database not found or not visible."}},"summary":"Create a database row","tags":["databases"]}},"/v1/databases/{id}/rows/{rowId}":{"patch":{"description":"Merge-patches a row: only the passed `values` keys change, `null` deletes a key.","operationId":"DatabasesController_updateRowByDatabase","parameters":[{"name":"id","required":true,"in":"path","description":"Database node id.","schema":{"type":"string"}},{"name":"rowId","required":true,"in":"path","description":"Row id (must belong to the database).","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchRowDto"}}}},"responses":{"200":{"description":"The updated row."},"404":{"description":"Database or row not found."}},"summary":"Update a database row","tags":["databases"]},"delete":{"description":"Deletes the row; its linked page (if any) is moved to the trash.","operationId":"DatabasesController_deleteRowByDatabase","parameters":[{"name":"id","required":true,"in":"path","description":"Database node id.","schema":{"type":"string"}},{"name":"rowId","required":true,"in":"path","description":"Row id (must belong to the database).","schema":{"type":"string"}}],"responses":{"204":{"description":"The row was deleted."},"404":{"description":"Database or row not found."}},"summary":"Delete a database row","tags":["databases"]}},"/v1/database-rows/{rowId}":{"patch":{"operationId":"DatabasesController_updateRow","parameters":[{"name":"rowId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchRowDto"}}}},"responses":{"200":{"description":""}},"tags":["databases"]},"delete":{"operationId":"DatabasesController_deleteRow","parameters":[{"name":"rowId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["databases"]}},"/v1/database-rows/{rowId}/page":{"post":{"operationId":"DatabasesController_createRowPage","parameters":[{"name":"rowId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["databases"]}},"/v1/workspaces/{ws}/lineage":{"post":{"operationId":"LineageController_add","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddEdgeDto"}}}},"responses":{"201":{"description":""}},"tags":["lineage"]},"get":{"operationId":"LineageController_trace","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"kind","required":true,"in":"query","schema":{"type":"string","enum":["node","row","logentry"]}},{"name":"id","required":true,"in":"query","schema":{"type":"string"}},{"name":"direction","required":false,"in":"query","schema":{"type":"string","enum":["upstream","downstream","both"]}},{"name":"depth","required":false,"in":"query","schema":{"minimum":1,"maximum":20,"type":"number"}}],"responses":{"200":{"description":""}},"tags":["lineage"]}},"/v1/workspaces/{ws}/lineage/edges":{"get":{"operationId":"LineageController_edges","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"kind","required":true,"in":"query","schema":{"type":"string","enum":["node","row","logentry"]}},{"name":"id","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["lineage"]}},"/v1/workspaces/{ws}/lineage/{id}":{"delete":{"operationId":"LineageController_remove","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["lineage"]}},"/v1/workspaces/{ws}/logs":{"post":{"operationId":"LogsController_create","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLogDto"}}}},"responses":{"201":{"description":""}},"tags":["logs"]}},"/v1/logs/{id}":{"get":{"operationId":"LogsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["logs"]},"patch":{"operationId":"LogsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchLogDto"}}}},"responses":{"200":{"description":""}},"tags":["logs"]}},"/v1/logs/{id}/entries":{"post":{"operationId":"LogsController_ingest","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppendEntriesDto"}}}},"responses":{"201":{"description":""}},"tags":["logs"]},"get":{"operationId":"LogsController_entries","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"from","required":false,"in":"query","schema":{"type":"string"}},{"name":"to","required":false,"in":"query","schema":{"type":"string"}},{"name":"source","required":false,"in":"query","schema":{"type":"string"}},{"name":"level","required":false,"in":"query","schema":{"type":"string"}},{"name":"anomalyOnly","required":false,"in":"query","schema":{"type":"boolean"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":1000,"type":"number"}},{"name":"order","required":false,"in":"query","schema":{"type":"string","enum":["asc","desc"]}}],"responses":{"200":{"description":""}},"tags":["logs"]},"delete":{"operationId":"LogsController_wipe","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["logs"]}},"/v1/logs/{id}/import":{"post":{"operationId":"LogsController_importLogs","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportLogCsvDto"}}}},"responses":{"201":{"description":""}},"tags":["logs"]}},"/v1/logs/{id}/stats":{"get":{"operationId":"LogsController_stats","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"from","required":false,"in":"query","schema":{"type":"string"}},{"name":"to","required":false,"in":"query","schema":{"type":"string"}},{"name":"groupBy","required":false,"in":"query","schema":{"type":"string","enum":["hour","day","source","level"]}},{"name":"field","required":false,"in":"query","schema":{"type":"string"}},{"name":"metric","required":false,"in":"query","schema":{"type":"string","enum":["count","avg","max","min","sum"]}}],"responses":{"200":{"description":""}},"tags":["logs"]}},"/v1/workspaces/{ws}/rca-reports":{"get":{"operationId":"RcaController_list","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"storeId","required":false,"in":"query","description":"Restrict to reports for one LOG store node id.","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["rca"]}},"/v1/workspaces/{ws}/rca-reports/{id}":{"get":{"operationId":"RcaController_get","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["rca"]}},"/v1/workspaces/{ws}/templates":{"get":{"operationId":"TemplatesController_list","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["templates"]},"post":{"operationId":"TemplatesController_create","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTemplateDto"}}}},"responses":{"201":{"description":""}},"tags":["templates"]}},"/v1/workspaces/{ws}/templates/{id}":{"patch":{"operationId":"TemplatesController_update","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTemplateDto"}}}},"responses":{"200":{"description":""}},"tags":["templates"]},"delete":{"operationId":"TemplatesController_remove","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["templates"]}},"/v1/workspaces/{ws}/templates/{id}/apply":{"post":{"operationId":"TemplatesController_apply","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyTemplateDto"}}}},"responses":{"201":{"description":""}},"tags":["templates"]}},"/v1/workspaces/{ws}/templates/from-node/{nodeId}":{"post":{"operationId":"TemplatesController_saveFromNode","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"nodeId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveFromNodeDto"}}}},"responses":{"201":{"description":""}},"tags":["templates"]}},"/v1/documents/{id}/comments":{"post":{"operationId":"CommentsController_create","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommentDto"}}}},"responses":{"201":{"description":""}},"tags":["comments"]},"get":{"operationId":"CommentsController_list","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"blockId","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["comments"]}},"/v1/comments/{commentId}":{"patch":{"operationId":"CommentsController_update","parameters":[{"name":"commentId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCommentDto"}}}},"responses":{"200":{"description":""}},"tags":["comments"]},"delete":{"operationId":"CommentsController_remove","parameters":[{"name":"commentId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["comments"]}},"/v1/notifications":{"get":{"operationId":"NotificationsController_list","parameters":[],"responses":{"200":{"description":""}},"tags":["notifications"]}},"/v1/notifications/{id}/read":{"post":{"operationId":"NotificationsController_read","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["notifications"]}},"/v1/notifications/read-all":{"post":{"operationId":"NotificationsController_readAll","parameters":[],"responses":{"204":{"description":""}},"tags":["notifications"]}},"/v1/workspaces/{ws}/issue-trackers":{"post":{"operationId":"IssuesController_create","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueTrackerDto"}}}},"responses":{"201":{"description":""}},"tags":["issues"]}},"/v1/issue-trackers/{id}":{"get":{"operationId":"IssuesController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["issues"]},"patch":{"operationId":"IssuesController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchIssueTrackerDto"}}}},"responses":{"200":{"description":""}},"tags":["issues"]}},"/v1/issue-trackers/{id}/stream":{"get":{"operationId":"IssuesController_stream","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["issues"]}},"/v1/issue-trackers/{id}/issues":{"get":{"description":"Filter by state (default OPEN; ALL for both), label id, assignee, or a title/#number query.","operationId":"IssuesController_list","parameters":[{"name":"id","required":true,"in":"path","description":"Issue tracker node id.","schema":{"type":"string"}},{"name":"state","required":false,"in":"query","schema":{"type":"string","enum":["OPEN","CLOSED","ALL"]}},{"name":"label","required":false,"in":"query","description":"Label id filter.","schema":{"type":"string"}},{"name":"assigneeId","required":false,"in":"query","schema":{"type":"string"}},{"name":"q","required":false,"in":"query","description":"Title substring / #number search.","schema":{"maxLength":200,"type":"string"}},{"name":"type","required":false,"in":"query","description":"Issue type id filter (ISSUE-P1).","schema":{"type":"string"}},{"name":"parentId","required":false,"in":"query","description":"Sub-issues of this parent only.","schema":{"type":"string"}}],"responses":{"200":{"description":"The issues, newest number first."}},"summary":"List issues","tags":["issues"]},"post":{"description":"Opens a new issue with the next #number on the tracker.","operationId":"IssuesController_createIssue","parameters":[{"name":"id","required":true,"in":"path","description":"Issue tracker node id.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueDto"}}}},"responses":{"201":{"description":"The created issue."}},"summary":"Create an issue","tags":["issues"]}},"/v1/issues/{issueId}":{"get":{"operationId":"IssuesController_getIssue","parameters":[{"name":"issueId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["issues"]},"patch":{"operationId":"IssuesController_updateIssue","parameters":[{"name":"issueId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchIssueDto"}}}},"responses":{"200":{"description":""}},"tags":["issues"]},"delete":{"operationId":"IssuesController_deleteIssue","parameters":[{"name":"issueId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["issues"]}},"/v1/issues/{issueId}/activities":{"get":{"operationId":"IssuesController_activities","parameters":[{"name":"issueId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["issues"]}},"/v1/issue-trackers/{id}/inbound":{"post":{"operationId":"IssuesController_enableInbound","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["issues"]},"get":{"operationId":"IssuesController_getInbound","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["issues"]},"delete":{"operationId":"IssuesController_disableInbound","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["issues"]}},"/v1/public/issue-hooks/{token}":{"post":{"operationId":"IssuesController_inbound","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["issues"]}},"/v1/workspaces/{ws}/webhooks":{"post":{"operationId":"WebhooksController_create","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDto"}}}},"responses":{"201":{"description":""}},"tags":["webhooks"]},"get":{"operationId":"WebhooksController_list","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["webhooks"]}},"/v1/workspaces/{ws}/webhooks/{id}":{"patch":{"operationId":"WebhooksController_update","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDto"}}}},"responses":{"200":{"description":""}},"tags":["webhooks"]},"delete":{"operationId":"WebhooksController_remove","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["webhooks"]}},"/v1/workspaces/{ws}/webhooks/{id}/deliveries":{"get":{"operationId":"WebhooksController_deliveries","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["webhooks"]}},"/v1/workspaces/{ws}/webhooks/{id}/deliveries/{deliveryId}/redeliver":{"post":{"operationId":"WebhooksController_redeliver","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"deliveryId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["webhooks"]}},"/v1/documents/{id}/extraction":{"get":{"operationId":"ExtractionController_status","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["extraction"]}},"/v1/documents/{id}/extraction/rerun":{"post":{"operationId":"ExtractionController_rerun","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["extraction"]}},"/v1/workspaces/{ws}/graph-sync":{"post":{"operationId":"ExtractionController_setWorkspaceGraphSync","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GraphSyncDto"}}}},"responses":{"201":{"description":""}},"tags":["extraction"]}},"/v1/nodes/{id}/graph-sync":{"post":{"operationId":"ExtractionController_setNodeGraphSync","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GraphSyncDto"}}}},"responses":{"201":{"description":""}},"tags":["extraction"]}},"/v1/workspaces/{ws}/graph-status":{"get":{"operationId":"ExtractionController_graphStatus","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["extraction"]}},"/v1/workspaces/{ws}/extraction/history":{"get":{"operationId":"ExtractionController_syncHistory","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["extraction"]}},"/v1/workspaces/{ws}/extraction/rebuild":{"post":{"operationId":"ExtractionController_rebuild","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["extraction"]}},"/v1/workspaces/{ws}/extraction/progress":{"get":{"operationId":"ExtractionController_progress","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["extraction"]}},"/v1/workspaces/{ws}/schema":{"get":{"operationId":"ExtractionController_schema","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["extraction"]},"post":{"operationId":"ExtractionController_addType","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSchemaTypeDto"}}}},"responses":{"201":{"description":""}},"tags":["extraction"]}},"/v1/workspaces/{ws}/schema/{typeId}":{"put":{"operationId":"ExtractionController_review","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"typeId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewSchemaTypeDto"}}}},"responses":{"200":{"description":""}},"tags":["extraction"]},"delete":{"operationId":"ExtractionController_removeType","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"typeId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["extraction"]}},"/v1/workspaces/{ws}/ask/threads":{"post":{"operationId":"AskController_createThread","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateThreadDto"}}}},"responses":{"201":{"description":""}},"tags":["ask"]},"get":{"operationId":"AskController_listThreads","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["ask"]}},"/v1/workspaces/{ws}/ask/threads/{id}":{"get":{"operationId":"AskController_getThread","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["ask"]},"delete":{"operationId":"AskController_deleteThread","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["ask"]}},"/v1/workspaces/{ws}/ask/threads/{threadId}/messages":{"post":{"operationId":"AskController_postMessage","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"threadId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostMessageDto"}}}},"responses":{"201":{"description":""}},"tags":["ask"]}},"/v1/workspaces/{ws}/chat/threads":{"post":{"operationId":"ChatController_createThread","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["chat"]},"get":{"operationId":"ChatController_listThreads","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["chat"]}},"/v1/workspaces/{ws}/chat/threads/{id}":{"get":{"operationId":"ChatController_getThread","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["chat"]},"delete":{"operationId":"ChatController_deleteThread","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["chat"]}},"/v1/workspaces/{ws}/chat/threads/{id}/messages":{"post":{"operationId":"ChatController_postMessage","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostChatMessageDto"}}}},"responses":{"201":{"description":""}},"tags":["chat"]}},"/v1/workspaces/{ws}/spreadsheets":{"get":{"operationId":"SpreadsheetsController_list","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["spreadsheets"]},"post":{"operationId":"SpreadsheetsController_create","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSpreadsheetDto"}}}},"responses":{"201":{"description":""}},"tags":["spreadsheets"]}},"/v1/spreadsheets/{id}":{"get":{"operationId":"SpreadsheetsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["spreadsheets"]},"patch":{"operationId":"SpreadsheetsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchSpreadsheetDto"}}}},"responses":{"200":{"description":""}},"tags":["spreadsheets"]}},"/v1/spreadsheets/{id}/sheets":{"post":{"operationId":"SpreadsheetsController_createSheet","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSheetDto"}}}},"responses":{"201":{"description":""}},"tags":["spreadsheets"]}},"/v1/spreadsheets/{id}/sheets/{sheetId}":{"patch":{"operationId":"SpreadsheetsController_patchSheet","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"sheetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchSheetDto"}}}},"responses":{"200":{"description":""}},"tags":["spreadsheets"]},"delete":{"operationId":"SpreadsheetsController_deleteSheet","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"sheetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["spreadsheets"]}},"/v1/spreadsheets/{id}/sheets/{sheetId}/cells":{"patch":{"operationId":"SpreadsheetsController_patchCells","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"sheetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchCellsDto"}}}},"responses":{"200":{"description":""}},"tags":["spreadsheets"]}},"/v1/spreadsheets/{id}/export":{"get":{"operationId":"SpreadsheetsController_export","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"format","required":false,"in":"query","schema":{"type":"string","enum":["csv","xlsx"]}},{"name":"sheetId","required":false,"in":"query","description":"csv: which sheet to export (defaults to the first). xlsx: limit to one sheet (defaults to all).","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["spreadsheets"]}},"/v1/spreadsheets/{id}/import":{"post":{"operationId":"SpreadsheetsController_import","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportSpreadsheetDto"}}}},"responses":{"201":{"description":""}},"tags":["spreadsheets"]}},"/v1/workspaces/{ws}/whiteboards":{"post":{"operationId":"WhiteboardsController_create","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWhiteboardDto"}}}},"responses":{"201":{"description":""}},"tags":["whiteboards"]}},"/v1/whiteboards/{id}":{"get":{"operationId":"WhiteboardsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["whiteboards"]},"patch":{"operationId":"WhiteboardsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchWhiteboardDto"}}}},"responses":{"200":{"description":""}},"tags":["whiteboards"]}},"/v1/workspaces/{ws}/forms":{"post":{"operationId":"FormsController_create","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFormDto"}}}},"responses":{"201":{"description":""}},"tags":["forms"]}},"/v1/forms/{id}":{"get":{"operationId":"FormsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["forms"]},"patch":{"operationId":"FormsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchFormDto"}}}},"responses":{"200":{"description":""}},"tags":["forms"]}},"/v1/forms/{id}/responses":{"get":{"operationId":"FormsController_responses","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["forms"]},"post":{"operationId":"FormsController_createResponse","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFormResponseDto"}}}},"responses":{"201":{"description":""}},"tags":["forms"]}},"/v1/forms/{id}/share":{"post":{"operationId":"FormsController_issueShare","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["forms"]},"get":{"operationId":"FormsController_listShare","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["forms"]}},"/v1/form-share-links/{linkId}":{"delete":{"operationId":"FormsController_revokeShare","parameters":[{"name":"linkId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["forms"]}},"/v1/public/forms/{token}":{"get":{"operationId":"FormsController_publicForm","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["forms"]}},"/v1/public/forms/{token}/responses":{"post":{"operationId":"FormsController_submitPublic","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFormResponseDto"}}}},"responses":{"201":{"description":""}},"tags":["forms"]}},"/v1/workspaces/{ws}/ingestion-sources":{"post":{"operationId":"IngestionController_create","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIngestionSourceDto"}}}},"responses":{"201":{"description":""}},"tags":["ingestion-sources"]},"get":{"operationId":"IngestionController_list","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["ingestion-sources"]}},"/v1/workspaces/{ws}/ingestion-sources/{id}":{"get":{"operationId":"IngestionController_get","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["ingestion-sources"]},"patch":{"operationId":"IngestionController_patch","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchIngestionSourceDto"}}}},"responses":{"200":{"description":""}},"tags":["ingestion-sources"]},"delete":{"operationId":"IngestionController_remove","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["ingestion-sources"]}},"/graphql/sdl":{"get":{"operationId":"DocsController_sdl","parameters":[],"responses":{"200":{"description":""}},"tags":["Docs"]}},"/llms.txt":{"get":{"operationId":"DocsController_llmsTxt","parameters":[],"responses":{"200":{"description":""}},"tags":["Docs"]}},"/pricing.md":{"get":{"operationId":"DocsController_pricingMd","parameters":[],"responses":{"200":{"description":""}},"tags":["Docs"]}},"/v1/workspaces/{ws}/billing":{"get":{"operationId":"BillingController_getStatus","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["billing"]}},"/v1/workspaces/{ws}/billing/usage":{"get":{"operationId":"BillingController_usage","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"string"}},{"name":"pageSize","required":true,"in":"query","schema":{"type":"string"}},{"name":"kind","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["billing"]}},"/v1/plans":{"get":{"operationId":"PaddleController_getPlans","parameters":[],"responses":{"200":{"description":""}},"tags":["billing"]}},"/v1/workspaces/{ws}/billing/checkout":{"post":{"operationId":"PaddleController_checkout","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCheckoutDto"}}}},"responses":{"201":{"description":""}},"tags":["billing"]}},"/v1/workspaces/{ws}/billing/dev-complete":{"post":{"operationId":"PaddleController_devComplete","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCheckoutDto"}}}},"responses":{"201":{"description":""}},"tags":["billing"]}},"/v1/paddle/webhook":{"post":{"operationId":"PaddleController_webhook","parameters":[],"responses":{"200":{"description":""}},"tags":["billing"]}},"/v1/admin/auth/request-code":{"post":{"operationId":"AdminAuthController_requestCode","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminRequestCodeDto"}}}},"responses":{"200":{"description":""}},"tags":["admin-auth"]}},"/v1/admin/auth/verify-code":{"post":{"operationId":"AdminAuthController_verifyCode","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminVerifyCodeDto"}}}},"responses":{"200":{"description":""}},"tags":["admin-auth"]}},"/v1/admin/me":{"get":{"operationId":"AdminController_me","parameters":[],"responses":{"200":{"description":""}},"tags":["admin"]}},"/v1/admin/metrics/overview":{"get":{"operationId":"AdminController_overview","parameters":[{"name":"range","required":false,"in":"query","schema":{"type":"string","enum":["7d","30d","90d","12m"]}}],"responses":{"200":{"description":""}},"tags":["admin"]}},"/v1/admin/users":{"get":{"operationId":"AdminController_users","parameters":[{"name":"page","required":false,"in":"query","schema":{"minimum":1,"type":"number"}},{"name":"pageSize","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"type":"number"}},{"name":"q","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["admin"]}},"/v1/admin/workspaces":{"get":{"operationId":"AdminController_workspaces","parameters":[{"name":"page","required":false,"in":"query","schema":{"minimum":1,"type":"number"}},{"name":"pageSize","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"type":"number"}},{"name":"q","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["admin"]}},"/v1/admin/workspaces/{id}/usage":{"get":{"operationId":"AdminController_workspaceUsage","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"minimum":1,"type":"number"}},{"name":"pageSize","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"type":"number"}},{"name":"q","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["admin"]}},"/v1/admin/workspaces/{id}/credits/reset":{"post":{"operationId":"AdminController_resetCredits","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["admin"]}},"/v1/admin/workspaces/{id}/credits/graph/reset":{"post":{"operationId":"AdminController_resetGraphCredits","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["admin"]}},"/v1/admin/workspaces/{id}/credits/grant":{"post":{"operationId":"AdminController_grantCredits","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantCreditsDto"}}}},"responses":{"201":{"description":""}},"tags":["admin"]}},"/v1/analytics/pageview":{"post":{"operationId":"AnalyticsController_pageview","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageViewDto"}}}},"responses":{"204":{"description":""}},"tags":["analytics"]}},"/v1/diagnose":{"post":{"operationId":"DiagnoseController_run","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagnoseRequestDto"}}}},"responses":{"201":{"description":""}},"tags":["diagnose"]}},"/v1/scaffold/workspace":{"post":{"operationId":"ScaffoldController_createWorkspace","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScaffoldWorkspaceDto"}}}},"responses":{"201":{"description":""}},"tags":["scaffold"]}},"/v1/scaffold/plan":{"post":{"operationId":"ScaffoldController_planStandalone","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScaffoldPlanDto"}}}},"responses":{"201":{"description":""}},"tags":["scaffold"]}},"/v1/workspaces/{ws}/scaffold/plan":{"post":{"operationId":"ScaffoldController_plan","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScaffoldPlanDto"}}}},"responses":{"201":{"description":""}},"tags":["scaffold"]}},"/v1/workspaces/{ws}/scaffold/apply":{"post":{"operationId":"ScaffoldController_apply","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScaffoldApplyDto"}}}},"responses":{"201":{"description":""}},"tags":["scaffold"]}},"/v1/workspaces/{ws}/crms":{"post":{"description":"Creates a CRM node — a full sales workspace with companies, contacts, deal pipelines (kanban), activity timeline and follow-up tasks. Omit pipelines for a default 5-stage sales pipeline.","operationId":"CrmController_create","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCrmDto"}}}},"responses":{"201":{"description":"The created CRM (detail shape)."}},"summary":"Create a CRM","tags":["crm"]}},"/v1/crms/{id}":{"get":{"description":"Pipelines, custom field defs and record counts.","operationId":"CrmController_get","parameters":[{"name":"id","required":true,"in":"path","description":"CRM node id.","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Get a CRM","tags":["crm"]},"patch":{"description":"Replace pipelines / custom field definitions / config. Deals pointing at a removed stage are moved to the first stage of their (or the first) pipeline.","operationId":"CrmController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchCrmDto"}}}},"responses":{"200":{"description":""}},"summary":"Update a CRM","tags":["crm"]}},"/v1/crms/{id}/summary":{"get":{"description":"Pipeline value & weighted forecast per stage, win rate, won-by-month (6mo), task and lifecycle counts.","operationId":"CrmController_summary","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"CRM dashboard summary","tags":["crm"]}},"/v1/crms/{id}/companies":{"get":{"description":"Filter by q (name/domain), owner, tag.","operationId":"CrmController_listCompanies","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"q","required":false,"in":"query","description":"Name/domain substring search.","schema":{"maxLength":200,"type":"string"}},{"name":"ownerId","required":false,"in":"query","schema":{"type":"string"}},{"name":"tag","required":false,"in":"query","schema":{"type":"string"}},{"name":"sort","required":false,"in":"query","schema":{"type":"string","enum":["name","createdAt","updatedAt"]}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":500,"type":"number"}},{"name":"offset","required":false,"in":"query","schema":{"minimum":0,"type":"number"}}],"responses":{"200":{"description":""}},"summary":"List companies","tags":["crm"]},"post":{"operationId":"CrmController_createCompany","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCompanyDto"}}}},"responses":{"201":{"description":""}},"summary":"Create a company","tags":["crm"]}},"/v1/crm-companies/{companyId}":{"get":{"description":"Record + contacts, deals, timeline, open tasks.","operationId":"CrmController_getCompany","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Company detail","tags":["crm"]},"patch":{"operationId":"CrmController_updateCompany","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchCompanyDto"}}}},"responses":{"200":{"description":""}},"tags":["crm"]},"delete":{"operationId":"CrmController_deleteCompany","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["crm"]}},"/v1/crms/{id}/contacts":{"get":{"description":"Filter by q (name/email), company, lifecycleStage, leadStatus, owner, tag; sort by leadScore.","operationId":"CrmController_listContacts","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"q","required":false,"in":"query","description":"Name/email substring search.","schema":{"maxLength":200,"type":"string"}},{"name":"companyId","required":false,"in":"query","schema":{"type":"string"}},{"name":"lifecycleStage","required":false,"in":"query","schema":{"type":"string","enum":["lead","mql","sql","opportunity","customer","evangelist"]}},{"name":"leadStatus","required":false,"in":"query","schema":{"type":"string","enum":["new","attempting","connected","open_deal","unqualified"]}},{"name":"ownerId","required":false,"in":"query","schema":{"type":"string"}},{"name":"tag","required":false,"in":"query","schema":{"type":"string"}},{"name":"sort","required":false,"in":"query","schema":{"type":"string","enum":["name","createdAt","updatedAt","leadScore"]}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":500,"type":"number"}},{"name":"offset","required":false,"in":"query","schema":{"minimum":0,"type":"number"}}],"responses":{"200":{"description":""}},"summary":"List contacts","tags":["crm"]},"post":{"description":"Auto-links to a company by email domain when companyId is omitted. Lead score is computed server-side.","operationId":"CrmController_createContact","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContactDto"}}}},"responses":{"201":{"description":""}},"summary":"Create a contact","tags":["crm"]}},"/v1/crm-contacts/{contactId}":{"get":{"description":"Record + company, deals, timeline, open tasks.","operationId":"CrmController_getContact","parameters":[{"name":"contactId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Contact detail","tags":["crm"]},"patch":{"operationId":"CrmController_updateContact","parameters":[{"name":"contactId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchContactDto"}}}},"responses":{"200":{"description":""}},"tags":["crm"]},"delete":{"operationId":"CrmController_deleteContact","parameters":[{"name":"contactId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["crm"]}},"/v1/crms/{id}/deals":{"get":{"description":"Defaults to open deals; status=won|lost|all for others. Filter by pipeline/stage/owner/company/contact/tag; sort=position for board order.","operationId":"CrmController_listDeals","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"q","required":false,"in":"query","schema":{"maxLength":200,"type":"string"}},{"name":"pipelineId","required":false,"in":"query","schema":{"type":"string"}},{"name":"stageId","required":false,"in":"query","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["open","won","lost","all"]}},{"name":"ownerId","required":false,"in":"query","schema":{"type":"string"}},{"name":"companyId","required":false,"in":"query","schema":{"type":"string"}},{"name":"contactId","required":false,"in":"query","schema":{"type":"string"}},{"name":"tag","required":false,"in":"query","schema":{"type":"string"}},{"name":"sort","required":false,"in":"query","schema":{"type":"string","enum":["name","value","createdAt","updatedAt","expectedCloseDate","position"]}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":500,"type":"number"}},{"name":"offset","required":false,"in":"query","schema":{"minimum":0,"type":"number"}}],"responses":{"200":{"description":""}},"summary":"List deals","tags":["crm"]},"post":{"description":"Defaults to the first pipeline/stage. Logs a \"created\" timeline entry.","operationId":"CrmController_createDeal","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDealDto"}}}},"responses":{"201":{"description":""}},"summary":"Create a deal","tags":["crm"]}},"/v1/crm-deals/{dealId}":{"get":{"description":"Record + participants, timeline, open tasks.","operationId":"CrmController_getDeal","parameters":[{"name":"dealId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Deal detail","tags":["crm"]},"patch":{"description":"status=won|lost closes it (closedAt + optional wonLostReason); status=open reopens.","operationId":"CrmController_updateDeal","parameters":[{"name":"dealId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchDealDto"}}}},"responses":{"200":{"description":""}},"summary":"Update a deal","tags":["crm"]},"delete":{"operationId":"CrmController_deleteDeal","parameters":[{"name":"dealId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["crm"]}},"/v1/crm-deals/{dealId}/move":{"post":{"description":"Reassign stage (and optionally pipeline) + column position. Logs a stage_change timeline entry.","operationId":"CrmController_moveDeal","parameters":[{"name":"dealId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveDealDto"}}}},"responses":{"201":{"description":""}},"summary":"Move a deal (kanban)","tags":["crm"]}},"/v1/crms/{id}/activities":{"get":{"description":"Newest first. Filter by contactId/companyId/dealId/type — a record page shows its own slice.","operationId":"CrmController_listActivities","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"contactId","required":false,"in":"query","schema":{"type":"string"}},{"name":"companyId","required":false,"in":"query","schema":{"type":"string"}},{"name":"dealId","required":false,"in":"query","schema":{"type":"string"}},{"name":"type","required":false,"in":"query","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":500,"type":"number"}},{"name":"offset","required":false,"in":"query","schema":{"minimum":0,"type":"number"}}],"responses":{"200":{"description":""}},"summary":"List timeline activities","tags":["crm"]},"post":{"description":"type=note|call|email|meeting with any subset of contact/company/deal links.","operationId":"CrmController_createActivity","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateActivityDto"}}}},"responses":{"201":{"description":""}},"summary":"Log an activity","tags":["crm"]}},"/v1/crm-activities/{activityId}":{"delete":{"operationId":"CrmController_deleteActivity","parameters":[{"name":"activityId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["crm"]}},"/v1/crms/{id}/tasks":{"get":{"description":"Defaults to open tasks, due-date ascending. due=overdue|today|upcoming for follow-up queues.","operationId":"CrmController_listTasks","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["open","done","all"]}},{"name":"assigneeId","required":false,"in":"query","schema":{"type":"string"}},{"name":"due","required":false,"in":"query","description":"Due filter: overdue | today | upcoming (open tasks only).","schema":{"type":"string","enum":["overdue","today","upcoming"]}},{"name":"contactId","required":false,"in":"query","schema":{"type":"string"}},{"name":"companyId","required":false,"in":"query","schema":{"type":"string"}},{"name":"dealId","required":false,"in":"query","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":500,"type":"number"}},{"name":"offset","required":false,"in":"query","schema":{"minimum":0,"type":"number"}}],"responses":{"200":{"description":""}},"summary":"List tasks","tags":["crm"]},"post":{"description":"Defaults assignee to the caller.","operationId":"CrmController_createTask","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskDto"}}}},"responses":{"201":{"description":""}},"summary":"Create a task","tags":["crm"]}},"/v1/crm-tasks/{taskId}":{"patch":{"description":"status=done stamps completedAt + a task_done timeline entry.","operationId":"CrmController_updateTask","parameters":[{"name":"taskId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchTaskDto"}}}},"responses":{"200":{"description":""}},"summary":"Update a task","tags":["crm"]},"delete":{"operationId":"CrmController_deleteTask","parameters":[{"name":"taskId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["crm"]}},"/v1/crms/{id}/export":{"get":{"description":"entity=contact|company|deal.","operationId":"CrmController_exportCsv","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"entity","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Export CSV","tags":["crm"]}},"/v1/crms/{id}/import":{"post":{"description":"Client-parsed CSV rows: { entity, rows: [{column: value}] }. Company names are matched/created; per-row errors are reported.","operationId":"CrmController_importRows","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRowsDto"}}}},"responses":{"201":{"description":""}},"summary":"Bulk import rows","tags":["crm"]}},"/v1/workspaces/{ws}/presentations":{"post":{"operationId":"PresentationsController_create","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePresentationDto"}}}},"responses":{"201":{"description":""}},"tags":["presentations"]}},"/v1/presentations/{id}":{"get":{"operationId":"PresentationsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["presentations"]},"patch":{"operationId":"PresentationsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchPresentationDto"}}}},"responses":{"200":{"description":""}},"tags":["presentations"]}},"/v1/presentations/{id}/slides":{"post":{"operationId":"PresentationsController_appendSlides","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppendSlidesDto"}}}},"responses":{"201":{"description":""}},"tags":["presentations"]}},"/v1/presentations/{id}/slides/{slideId}":{"patch":{"operationId":"PresentationsController_updateSlide","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"slideId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSlideDto"}}}},"responses":{"200":{"description":""}},"tags":["presentations"]}},"/v1/presentations/{id}/reorder":{"post":{"operationId":"PresentationsController_reorder","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderSlidesDto"}}}},"responses":{"201":{"description":""}},"tags":["presentations"]}},"/v1/presentations/{id}/publish":{"post":{"operationId":"PresentationsController_publish","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["presentations"]}},"/v1/presentations/{id}/public":{"patch":{"operationId":"PresentationsController_setPublic","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresentationPublicSettingsDto"}}}},"responses":{"200":{"description":""}},"tags":["presentations"]}},"/v1/presentations/{id}/public-status":{"get":{"operationId":"PresentationsController_publicStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["presentations"]}},"/v1/public/presentations/{slug}":{"get":{"operationId":"PresentationsController_publicDeck","parameters":[{"name":"slug","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["presentations"]}},"/v1/workspaces/{ws}/images/generate":{"post":{"operationId":"ImagesController_generate","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageDto"}}}},"responses":{"201":{"description":""}},"tags":["Images"]}},"/v1/workspaces/{ws}/images/describe":{"post":{"operationId":"ImagesController_describe","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DescribeImageDto"}}}},"responses":{"201":{"description":""}},"tags":["Images"]}},"/v1/workspaces/{ws}/images/remove-background":{"post":{"operationId":"ImagesController_removeBackground","parameters":[{"name":"ws","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveBackgroundDto"}}}},"responses":{"201":{"description":""}},"tags":["Images"]}},"/v1/admin/reengage/targets":{"get":{"operationId":"AdminReengageController_targets","parameters":[],"responses":{"200":{"description":""}},"tags":["admin"]}},"/v1/admin/reengage/queue":{"get":{"operationId":"AdminReengageController_queue","parameters":[{"name":"status","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["admin"]}},"/v1/admin/reengage/approve-all":{"post":{"operationId":"AdminReengageController_approveAll","parameters":[],"responses":{"201":{"description":""}},"tags":["admin"]}},"/v1/admin/reengage/{id}/approve":{"post":{"operationId":"AdminReengageController_approve","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["admin"]}},"/v1/admin/reengage/{id}/skip":{"post":{"operationId":"AdminReengageController_skip","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["admin"]}},"/v1/reengage/targets":{"get":{"operationId":"ReengageBotController_targets","parameters":[],"responses":{"200":{"description":""}},"tags":["reengage"]}},"/v1/reengage/queue":{"post":{"operationId":"ReengageBotController_queue","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueDraftDto"}}}},"responses":{"201":{"description":""}},"tags":["reengage"]}},"/v1/unsubscribe":{"get":{"operationId":"UnsubscribeController_unsubscribe","parameters":[{"name":"token","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["reengage"]}},"/v1/documents/{id}/publish":{"post":{"operationId":"PublicDocsController_publish","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["public-docs"]}},"/v1/documents/{id}/public":{"patch":{"operationId":"PublicDocsController_setPublic","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicSettingsDto"}}}},"responses":{"200":{"description":""}},"tags":["public-docs"]}},"/v1/documents/{id}/public-status":{"get":{"operationId":"PublicDocsController_publicStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["public-docs"]}},"/v1/documents/{id}/commits":{"get":{"operationId":"PublicDocsController_listCommits","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["OPEN","MERGED","REJECTED"]}}],"responses":{"200":{"description":""}},"tags":["public-docs"]}},"/v1/documents/{id}/commits/{cid}":{"get":{"operationId":"PublicDocsController_getCommit","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"cid","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["public-docs"]}},"/v1/documents/{id}/commits/{cid}/merge":{"post":{"operationId":"PublicDocsController_mergeCommit","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"cid","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["public-docs"]}},"/v1/documents/{id}/commits/{cid}/reject":{"post":{"operationId":"PublicDocsController_rejectCommit","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"cid","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["public-docs"]}},"/v1/public/docs/{slug}":{"get":{"operationId":"PublicDocsController_publicDocument","parameters":[{"name":"slug","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["public-docs"]}},"/v1/public/docs/{slug}/commits":{"post":{"operationId":"PublicDocsController_proposeCommit","parameters":[{"name":"slug","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposeCommitDto"}}}},"responses":{"201":{"description":""}},"tags":["public-docs"]}},"/.well-known/oauth-authorization-server":{"get":{"operationId":"McpOAuthController_authServerMetadata","parameters":[],"responses":{"200":{"description":""}},"tags":["McpOAuth"]}},"/.well-known/oauth-protected-resource":{"get":{"operationId":"McpOAuthController_protectedResourceMetadata","parameters":[],"responses":{"200":{"description":""}},"tags":["McpOAuth"]}},"/mcp/register":{"post":{"operationId":"McpOAuthController_register","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterClientDto"}}}},"responses":{"201":{"description":""}},"tags":["McpOAuth"]}},"/mcp/authorize":{"get":{"operationId":"McpOAuthController_authorize","parameters":[],"responses":{"200":{"description":""}},"tags":["McpOAuth"]}},"/mcp/oauth/consent":{"post":{"operationId":"McpOAuthController_consent","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsentDto"}}}},"responses":{"201":{"description":""}},"tags":["McpOAuth"]}},"/mcp/oauth/workspaces":{"get":{"operationId":"McpOAuthController_grantableWorkspaces","parameters":[],"responses":{"200":{"description":""}},"tags":["McpOAuth"]}},"/mcp/token":{"post":{"operationId":"McpOAuthController_token","parameters":[],"responses":{"200":{"description":""}},"tags":["McpOAuth"]}},"/mcp/revoke":{"post":{"operationId":"McpOAuthController_revoke","parameters":[],"responses":{"200":{"description":""}},"tags":["McpOAuth"]}},"/mcp":{"get":{"operationId":"McpTransportController_handle_get","parameters":[],"responses":{"200":{"description":""}},"tags":["McpTransport"]},"post":{"operationId":"McpTransportController_handle_post","parameters":[],"responses":{"200":{"description":""}},"tags":["McpTransport"]},"put":{"operationId":"McpTransportController_handle_put","parameters":[],"responses":{"200":{"description":""}},"tags":["McpTransport"]},"delete":{"operationId":"McpTransportController_handle_delete","parameters":[],"responses":{"200":{"description":""}},"tags":["McpTransport"]},"patch":{"operationId":"McpTransportController_handle_patch","parameters":[],"responses":{"200":{"description":""}},"tags":["McpTransport"]},"options":{"operationId":"McpTransportController_handle_options","parameters":[],"responses":{"200":{"description":""}},"tags":["McpTransport"]},"head":{"operationId":"McpTransportController_handle_head","parameters":[],"responses":{"200":{"description":""}},"tags":["McpTransport"]},"search":{"operationId":"McpTransportController_handle_search","parameters":[],"responses":{"200":{"description":""}},"tags":["McpTransport"]}}},"info":{"title":"Rootr API","description":"Markdown document CRUD + knowledge graph API. Authenticate with a JWT (Authorization: Bearer) or a workspace API key (X-Api-Key).","version":"1.0","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"},"api-key":{"type":"apiKey","in":"header","name":"X-Api-Key"}},"schemas":{"SignupDto":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":8,"maxLength":128},"name":{"type":"string","minLength":1,"maxLength":80}},"required":["email","password","name"]},"LoginDto":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string"}},"required":["email","password"]},"GoogleLoginDto":{"type":"object","properties":{"credential":{"type":"string","description":"The ID token (JWT credential) returned by Google Identity Services in the browser.","minLength":1,"maxLength":4096}},"required":["credential"]},"TotpLoginDto":{"type":"object","properties":{"tempToken":{"type":"string"},"code":{"type":"string","minLength":6,"maxLength":6}},"required":["tempToken","code"]},"TotpCodeDto":{"type":"object","properties":{"code":{"type":"string","minLength":6,"maxLength":6}},"required":["code"]},"RefreshDto":{"type":"object","properties":{"refreshToken":{"type":"string"}},"required":["refreshToken"]},"UpdateMeDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"avatarUrl":{"type":"string"},"preferredLocale":{"type":"string","description":"Synced from the frontend's language switcher so mail/error locale follows the account, not just the browser cookie.","enum":["en","ko"]}}},"ChangePasswordDto":{"type":"object","properties":{"currentPassword":{"type":"string"},"newPassword":{"type":"string","minLength":8,"maxLength":128},"code":{"type":"string","description":"Emailed verification code — requested via POST /me/change-password/request-code.","minLength":6,"maxLength":6}},"required":["currentPassword","newPassword","code"]},"VerifyEmailDto":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"]},"ResendVerificationDto":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"required":["email"]},"RequestPasswordResetDto":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"required":["email"]},"ResetPasswordDto":{"type":"object","properties":{"token":{"type":"string"},"newPassword":{"type":"string","minLength":8,"maxLength":128}},"required":["token","newPassword"]},"FindIdDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80}},"required":["name"]},"CreateWorkspaceDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"slug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{1,38}[a-z0-9]$"}},"required":["name"]},"UpdateWorkspaceDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"defaultVisibility":{"type":"string","enum":["PUBLIC","PRIVATE"]}}},"DeleteWorkspaceDto":{"type":"object","properties":{"confirmName":{"type":"string","description":"Safety: must retype the workspace name."}},"required":["confirmName"]},"UpdateMemberDto":{"type":"object","properties":{"role":{"type":"string","enum":["OWNER","ADMIN","MEMBER","VIEWER"]}},"required":["role"]},"CreateInvitationDto":{"type":"object","properties":{"email":{"type":"string","format":"email"},"role":{"type":"string","default":"MEMBER","enum":["OWNER","ADMIN","MEMBER","VIEWER"]}},"required":["email","role"]},"CreateGroupDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80}},"required":["name"]},"GroupMemberDto":{"type":"object","properties":{"userId":{"type":"string"}},"required":["userId"]},"CreateApiKeyDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"scopes":{"type":"array","minItems":1,"items":{"type":"string","enum":["docs:read","docs:write","graph:read","ask","workspaces:create","webhooks:manage"]}}},"required":["name","scopes"]},"SetVisibilityDto":{"type":"object","properties":{"visibility":{"type":"string","nullable":true,"enum":["PUBLIC","PRIVATE"]}}},"SetRestrictedDto":{"type":"object","properties":{"restricted":{"type":"boolean"}},"required":["restricted"]},"SetPermissionDto":{"type":"object","properties":{"subjectType":{"type":"string","enum":["USER","GROUP"]},"subjectId":{"type":"string"},"level":{"type":"string","enum":["NONE","READ","COMMENT","WRITE","MANAGE"]}},"required":["subjectType","subjectId","level"]},"RemovePermissionDto":{"type":"object","properties":{"subjectType":{"type":"string","enum":["USER","GROUP"]},"subjectId":{"type":"string"}},"required":["subjectType","subjectId"]},"CreateShareLinkDto":{"type":"object","properties":{"expiresAt":{"type":"string"}}},"CreateNodeDto":{"type":"object","properties":{"type":{"type":"string","enum":["FOLDER","DOCUMENT","DATABASE","LOG","SPREADSHEET","WHITEBOARD","FORM","ISSUE_TRACKER","PRESENTATION","CRM"]},"name":{"type":"string"},"parentId":{"type":"string","description":"Either parentId or path must locate the target folder."},"path":{"type":"string","description":"Full path incl. name, e.g. /ops/incidents/outage.md — wins over parentId+name.","maxLength":2000},"createParents":{"type":"boolean"},"autoRename":{"type":"boolean","description":"On sibling name conflict: false → 409, true → \" (2)\" suffix."},"content":{"type":"string","description":"Initial markdown for DOCUMENT nodes."},"icon":{"type":"string","maxLength":16}},"required":["type"]},"RenameNodeDto":{"type":"object","properties":{"name":{"type":"string"},"icon":{"type":"string","maxLength":16},"tags":{"description":"NODE-TAGS — full replacement list. Each tag is trimmed, must be 1-30\nchars, max 20 tags, case-insensitive duplicates dropped (first spelling\nwins) — enforced in TreeService.sanitizeTags.","maxItems":20,"type":"array","items":{"type":"string"}}}},"MoveNodeDto":{"type":"object","properties":{"newParentId":{"type":"string","nullable":true,"description":"null → workspace root"},"position":{"type":"number"}}},"ReorderNodeDto":{"type":"object","properties":{"position":{"type":"number"}},"required":["position"]},"DuplicateNodeDto":{"type":"object","properties":{"deep":{"type":"boolean"},"targetWorkspaceId":{"type":"string"}}},"PutDocumentDto":{"type":"object","properties":{"content":{"type":"string"}}},"AppendDocumentDto":{"type":"object","properties":{"content":{"type":"string"},"underHeading":{"type":"string","description":"e.g. \"## ✅ 승인 대기\" (or just the heading text) — appends at that section's end"},"createIfMissing":{"type":"boolean","description":"default true: a missing underHeading section is created at the document end"}},"required":["content"]},"PatchDocumentDto":{"type":"object","properties":{"op":{"type":"string","enum":["replace","append","prepend"]},"heading":{"type":"string"},"content":{"type":"string"},"createIfMissing":{"type":"boolean"},"find":{"type":"string"},"replace":{"type":"string"},"replaceAll":{"type":"boolean"},"ifMatch":{"type":"string","description":"body-level alternative to the If-Match header, for clients that can't set headers easily"}}},"NotionApiImportDto":{"type":"object","properties":{"token":{"type":"string"},"rootPath":{"type":"string"}},"required":["token"]},"PresignDto":{"type":"object","properties":{"filename":{"type":"string","maxLength":255},"mimeType":{"type":"string","maxLength":120},"size":{"type":"number","minimum":1,"maximum":20971520},"workspaceId":{"type":"string"},"nodeId":{"type":"string","description":"Document node the attachment belongs to (optional at presign time)."}},"required":["filename","mimeType","size","workspaceId"]},"CreateDatabaseDto":{"type":"object","properties":{"name":{"type":"string"},"parentId":{"type":"string","description":"Either parentId or path must locate the target parent."},"path":{"type":"string","description":"Full path incl. name — wins over parentId+name.","maxLength":2000},"createParents":{"type":"boolean"},"autoRename":{"type":"boolean","description":"On sibling name conflict: false → 409, true → \" (2)\" suffix."},"icon":{"type":"string","maxLength":16},"properties":{"description":"Property definitions; defaults to a single 'title' property \"Name\".","type":"array","items":{"type":"object"}},"views":{"description":"View definitions; defaults to a single table view.","type":"array","items":{"type":"object"}}}},"PatchDatabaseDto":{"type":"object","properties":{"properties":{"type":"array","items":{"type":"object"}},"views":{"type":"array","items":{"type":"object"}},"icon":{"type":"string","maxLength":16}}},"CreateRowDto":{"type":"object","properties":{"values":{"type":"object","additionalProperties":true},"position":{"type":"number"}}},"PatchRowDto":{"type":"object","properties":{"values":{"type":"object","additionalProperties":true,"description":"Merge semantics: only passed keys change; null deletes the key."},"position":{"type":"number"}}},"DataRefDto":{"type":"object","properties":{"kind":{"type":"string","enum":["node","row","logentry"]},"id":{"type":"string"}},"required":["kind","id"]},"AddEdgeDto":{"type":"object","properties":{"from":{"$ref":"#/components/schemas/DataRefDto"},"to":{"$ref":"#/components/schemas/DataRefDto"},"relation":{"type":"string","description":"Ontology relation type (CORE_RELATION_TYPES ∪ workspace APPROVED RELATION)."},"transform":{"type":"string","description":"Free-text description of the transformation/tool that produced the edge."},"meta":{"type":"object","additionalProperties":true}},"required":["from","to","relation"]},"CreateLogDto":{"type":"object","properties":{"name":{"type":"string"},"parentId":{"type":"string"},"path":{"type":"string"},"icon":{"type":"string"},"fields":{"type":"array","items":{"type":"object"}},"config":{"type":"object","additionalProperties":true},"createParents":{"type":"boolean"},"autoRename":{"type":"boolean"}}},"PatchLogDto":{"type":"object","properties":{"fields":{"type":"array","items":{"type":"object"}},"config":{"type":"object","additionalProperties":true},"icon":{"type":"string"}}},"LogEntryInput":{"type":"object","properties":{"ts":{"type":"string"},"source":{"type":"string"},"level":{"type":"string"},"message":{"type":"string"},"data":{"type":"object","additionalProperties":true},"externalKey":{"type":"string"}}},"AppendEntriesDto":{"type":"object","properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/LogEntryInput"}}},"required":["entries"]},"ImportLogCsvDto":{"type":"object","properties":{"format":{"type":"string","enum":["csv","parquet"]},"csv":{"type":"string"},"parquet":{"type":"string","description":"Parquet file, base64-encoded (binary can't travel as raw JSON text)."},"mapping":{"type":"object","additionalProperties":{"type":"string"}},"hasHeader":{"type":"boolean"},"externalKeyColumn":{"type":"string"}}},"CreateTemplateDto":{"type":"object","properties":{"name":{"type":"string"},"emoji":{"type":"string"},"description":{"type":"string"},"kind":{"type":"string","enum":["document","database","tree"]},"spec":{"type":"object","additionalProperties":true}},"required":["name","kind","spec"]},"UpdateTemplateDto":{"type":"object","properties":{"name":{"type":"string"},"emoji":{"type":"string"},"description":{"type":"string"},"kind":{"type":"string","enum":["document","database","tree"]},"spec":{"type":"object","additionalProperties":true}}},"ApplyTemplateDto":{"type":"object","properties":{"parentId":{"type":"string"}}},"SaveFromNodeDto":{"type":"object","properties":{"name":{"type":"string"},"emoji":{"type":"string"},"description":{"type":"string"}}},"CreateCommentDto":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":4000},"blockId":{"type":"string"},"parentId":{"type":"string"}},"required":["body"]},"UpdateCommentDto":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":4000},"resolved":{"type":"boolean"}}},"CreateIssueTrackerDto":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"path":{"type":"string"},"parentId":{"type":"string"},"icon":{"type":"string"},"labels":{"type":"object","description":"[{ id?, name, color? }] — validated by issue-schema.validateLabels."},"types":{"type":"object","description":"[{ id?, name, color? }] — validated by issue-schema.validateTypes. Omit for the default bug/feature/task set."},"config":{"type":"object"},"createParents":{"type":"boolean"},"autoRename":{"type":"boolean"}}},"PatchIssueTrackerDto":{"type":"object","properties":{"labels":{"type":"object"},"types":{"type":"object","description":"[{ id?, name, color? }] — validated by issue-schema.validateTypes."},"config":{"type":"object"},"icon":{"type":"string"}}},"CreateIssueDto":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"body":{"type":"string","maxLength":100000},"labels":{"description":"Label ids (must exist on the tracker).","type":"array","items":{"type":"string"}},"assigneeId":{"type":"string"},"type":{"type":"string","description":"Issue type id — must be defined on the tracker's `types` (ISSUE-P1)."},"parentIssueId":{"type":"string","description":"Parent issue id (same tracker) — creates this as a sub-issue."}},"required":["title"]},"PatchIssueDto":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"body":{"type":"string","maxLength":100000},"labels":{"type":"array","items":{"type":"string"}},"assigneeId":{"type":"string","nullable":true,"description":"null clears the assignee."},"state":{"type":"string","enum":["OPEN","CLOSED"]},"stateReason":{"type":"string","nullable":true,"description":"Close reason; defaults to 'completed' when closing. null clears.","enum":["completed","not_planned","duplicate"]},"type":{"type":"string","nullable":true,"description":"Issue type id — must be defined on the tracker's `types`. null clears the type."},"parentIssueId":{"type":"string","nullable":true,"description":"null detaches from the parent (no longer a sub-issue)."}}},"CreateWebhookDto":{"type":"object","properties":{"name":{"type":"string","description":"WHK-SCOPE — display label, e.g. \"marketing agent\".","maxLength":100},"url":{"type":"string","format":"uri"},"events":{"type":"array","description":"WHK-UNIFY — subscribable names only. Content changes of every node type\n(issues, database rows, spreadsheets, …) arrive as `document.updated`\nwith the specific mutation in `data.change`.","minItems":1,"items":{"type":"string","enum":["document.created","document.updated","document.moved","document.deleted","comment.created","extraction.completed","extraction.failed","log.anomaly.rca","scaffold.applied"]}},"scopeNodeId":{"type":"string","nullable":true,"description":"WHK-SCOPE — restrict to a node's subtree; null/omit = whole workspace."},"debounceSeconds":{"type":"number","description":"WHK-SCOPE — coalescing window (seconds, 0-600). 0 = deliver immediately.","minimum":0,"maximum":600},"filterTags":{"description":"WHK-TAGS — only deliver events whose node (or an ancestor folder) has at\nleast one of these tags (case-insensitive OR; AND with scopeNodeId).\nEmpty/omitted = no tag filtering.","maxItems":20,"type":"array","items":{"type":"string","maxLength":30}}},"required":["url","events"]},"UpdateWebhookDto":{"type":"object","properties":{"name":{"type":"string","maxLength":100},"url":{"type":"string","format":"uri"},"events":{"type":"array","minItems":1,"items":{"type":"string","enum":["document.created","document.updated","document.moved","document.deleted","comment.created","extraction.completed","extraction.failed","log.anomaly.rca","scaffold.applied"]}},"scopeNodeId":{"type":"string","nullable":true,"description":"null clears the scope back to whole-workspace."},"debounceSeconds":{"type":"number","minimum":0,"maximum":600},"filterTags":{"nullable":true,"description":"WHK-TAGS — [] or null clears the tag filter.","maxItems":20,"type":"array","items":{"type":"string","maxLength":30}},"active":{"type":"boolean"}}},"GraphSyncDto":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"]},"CreateSchemaTypeDto":{"type":"object","properties":{"kind":{"type":"string","enum":["ENTITY","RELATION"]},"name":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{1,40}$"}},"required":["kind","name"]},"ReviewSchemaTypeDto":{"type":"object","properties":{"status":{"type":"string","enum":["CORE","APPROVED","PROPOSED","REJECTED"]}},"required":["status"]},"CreateThreadDto":{"type":"object","properties":{"question":{"type":"string","description":"Optional first question — used to derive the thread title.","maxLength":4000}}},"AskScopeDto":{"type":"object","properties":{"pathPrefix":{"type":"string","maxLength":2000},"tags":{"type":"array","items":{"type":"string"}}}},"PostMessageDto":{"type":"object","properties":{"question":{"type":"string","minLength":1,"maxLength":4000},"scope":{"$ref":"#/components/schemas/AskScopeDto"}},"required":["question"]},"PostChatMessageDto":{"type":"object","properties":{"content":{"type":"string","minLength":1,"maxLength":8000},"contextNodeId":{"type":"string","description":"Node the user currently has open — injected into the agent's context.","maxLength":64},"refNodeIds":{"description":"@mentioned node references attached to the message (max 5).","maxItems":5,"type":"array","items":{"type":"string","maxLength":64}}},"required":["content"]},"CreateSpreadsheetDto":{"type":"object","properties":{"name":{"type":"string"},"parentId":{"type":"string","description":"Either parentId or path must locate the target parent."},"path":{"type":"string","description":"Full path incl. name — wins over parentId+name.","maxLength":2000},"createParents":{"type":"boolean"},"autoRename":{"type":"boolean","description":"On sibling name conflict: false -> 409, true -> \" (2)\" suffix."},"icon":{"type":"string","maxLength":16},"data":{"type":"object","properties":{"sheets":{"type":"array","items":{"type":"object"}}},"required":[]},"config":{"type":"object","additionalProperties":true}}},"PatchSpreadsheetDto":{"type":"object","properties":{"sheets":{"description":"Full sheets replace (rare — prefer the cells/sheet endpoints for incremental edits).","type":"array","items":{"type":"object"}},"config":{"type":"object","additionalProperties":true},"icon":{"type":"string","maxLength":16}}},"CreateSheetDto":{"type":"object","properties":{"name":{"type":"string"},"rowCount":{"type":"number","minimum":1,"maximum":10000},"colCount":{"type":"number","minimum":1,"maximum":500}}},"PatchSheetDto":{"type":"object","properties":{"name":{"type":"string"},"rowCount":{"type":"number","minimum":1,"maximum":10000},"colCount":{"type":"number","minimum":1,"maximum":500},"rowSizes":{"type":"object","additionalProperties":{"type":"number"},"description":"Per-row heights px, keyed by row-index string (Wave 4b). Deep-validated in validateSheet."},"colSizes":{"type":"object","additionalProperties":{"type":"number"},"description":"Per-column widths px, keyed by col-index string (Wave 4b)."},"merges":{"description":"Merged-cell ranges (Wave 4b). Deep-validated in validateSheet.","type":"array","items":{"type":"object"}}}},"PatchCellsDto":{"type":"object","properties":{"cells":{"type":"object","additionalProperties":true}},"required":["cells"]},"ImportSpreadsheetDto":{"type":"object","properties":{"format":{"type":"string","enum":["xlsx","csv","tsv"]},"xlsx":{"type":"string","description":"xlsx file, base64-encoded (binary can't travel as raw JSON text)."},"text":{"type":"string","description":"Raw CSV/TSV text."},"sheetId":{"type":"string","description":"Target existing sheet id; if omitted a new sheet is created."},"sheetName":{"type":"string","description":"Name for the newly created sheet when `sheetId` is omitted.","maxLength":200},"xlsxSheetName":{"type":"string","description":"xlsx only — which worksheet to import; defaults to the first one."}},"required":["format"]},"CreateWhiteboardDto":{"type":"object","properties":{"name":{"type":"string"},"parentId":{"type":"string","description":"Either parentId or path must locate the target parent."},"path":{"type":"string","description":"Full path incl. name — wins over parentId+name.","maxLength":2000},"createParents":{"type":"boolean"},"autoRename":{"type":"boolean","description":"On sibling name conflict: false → 409, true → \" (2)\" suffix."},"icon":{"type":"string","maxLength":16},"scene":{"type":"object","additionalProperties":true,"description":"Initial scene; defaults to an empty board."},"config":{"type":"object","additionalProperties":true}}},"PatchWhiteboardDto":{"type":"object","properties":{"scene":{"type":"object","additionalProperties":true},"config":{"type":"object","additionalProperties":true},"icon":{"type":"string","maxLength":16}}},"CreateFormDto":{"type":"object","properties":{"name":{"type":"string"},"parentId":{"type":"string","description":"Either parentId or path must locate the target parent."},"path":{"type":"string","description":"Full path incl. name — wins over parentId+name.","maxLength":2000},"createParents":{"type":"boolean"},"autoRename":{"type":"boolean","description":"On sibling name conflict: false → 409, true → \" (2)\" suffix."},"icon":{"type":"string","maxLength":16},"fields":{"description":"Field definitions; defaults to an empty array (form under construction).","type":"array","items":{"type":"object"}},"targetDatabaseId":{"type":"string","description":"DATABASE node id whose rows should mirror this form's responses."},"config":{"type":"object","additionalProperties":true}}},"PatchFormDto":{"type":"object","properties":{"fields":{"type":"array","items":{"type":"object"}},"targetDatabaseId":{"type":"string","nullable":true},"config":{"type":"object","additionalProperties":true},"icon":{"type":"string","maxLength":16}}},"CreateFormResponseDto":{"type":"object","properties":{"values":{"type":"object","additionalProperties":true}},"required":["values"]},"CreateIngestionSourceDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"type":{"type":"string","enum":["mqtt","kafka","opcua"]},"enabled":{"type":"boolean"},"config":{"type":"object","additionalProperties":true,"description":"Connector-specific: for 'mqtt', { url, topics: [{ topic, logId, ...mapping }] }."}},"required":["name","type","config"]},"PatchIngestionSourceDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"enabled":{"type":"boolean"},"config":{"type":"object","additionalProperties":true}}},"CreateCheckoutDto":{"type":"object","properties":{"planId":{"type":"string"},"seats":{"type":"number","minimum":1},"interval":{"description":"Billing cadence — \"month\" (default) or \"year\" (annual, ~17% off).","enum":["month","year"],"type":"string"}},"required":["planId"]},"AdminRequestCodeDto":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"required":["email"]},"AdminVerifyCodeDto":{"type":"object","properties":{"email":{"type":"string","format":"email"},"code":{"type":"string","minLength":6,"maxLength":6}},"required":["email","code"]},"GrantCreditsDto":{"type":"object","properties":{"amount":{"type":"number","minimum":1}},"required":["amount"]},"PageViewDto":{"type":"object","properties":{"path":{"type":"string","maxLength":512},"referrer":{"type":"string","maxLength":512},"visitorId":{"type":"string","maxLength":64}},"required":["path"]},"DiagnoseRequestDto":{"type":"object","properties":{"text":{"type":"string","minLength":20,"maxLength":8000},"locale":{"type":"string","description":"UI locale, so the model is nudged to answer in the same language even for short/ambiguous input.","enum":["en","ko"]}},"required":["text"]},"ScaffoldDatabaseDto":{"type":"object","properties":{"properties":{"description":"Column defs: [{ id, name, type: title|text|number|select|multi_select|date|checkbox|person, options?:[{name,color}] }]. First must be type 'title'.","maxItems":50,"type":"array","items":{"type":"object"}},"views":{"description":"View defs: [{ id, name, type: table|board|gallery|calendar|timeline, config?:{groupBy,dateProp,endDateProp,sort} }].","maxItems":20,"type":"array","items":{"type":"object"}},"rows":{"type":"array","items":{"type":"object","properties":{"values":{"type":"object","additionalProperties":true}},"required":["values"]}}},"required":["properties","views"]},"ScaffoldSpreadsheetDto":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true},"config":{"type":"object","additionalProperties":true}}},"ScaffoldWhiteboardDto":{"type":"object","properties":{"scene":{"type":"object","additionalProperties":true},"config":{"type":"object","additionalProperties":true}}},"ScaffoldFormDto":{"type":"object","properties":{"fields":{"maxItems":50,"type":"array","items":{"type":"object"}},"targetDatabaseId":{"type":"string","maxLength":200},"config":{"type":"object","additionalProperties":true}},"required":["fields"]},"ScaffoldIssuesDto":{"type":"object","properties":{"labels":{"description":"Label defs: [{ id?, name, color? }]. Omit for the default bug/enhancement/question set.","maxItems":100,"type":"array","items":{"type":"object"}},"types":{"description":"Issue type defs: [{ id?, name, color? }]. Omit for the default bug/feature/task set.","maxItems":25,"type":"array","items":{"type":"object"}},"config":{"type":"object","additionalProperties":true}}},"ScaffoldCrmDto":{"type":"object","properties":{"pipelines":{"description":"Pipeline defs: [{ id?, name, stages:[{ id?, name, probability(0-100), color? }] }]. Omit for the default 5-stage Sales Pipeline (Lead In 10%→Qualified 25%→Meeting 40%→Proposal 60%→Negotiation 80%). Validated by crm-schema's validatePipelines.","maxItems":20,"type":"array","items":{"type":"object"}},"fields":{"type":"object","additionalProperties":true,"description":"Custom field defs: { contact?:[{id?,name,type:text|number|select|date|url|checkbox,options?}], company?:[...], deal?:[...] }."},"config":{"type":"object","additionalProperties":true}}},"ScaffoldNodeDto":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"content":{"type":"string","description":"Markdown body — for DOCUMENT nodes (narrative pages).","maxLength":200000},"icon":{"type":"string","maxLength":16},"database":{"description":"Makes this node a DATABASE (mutually exclusive with children/content).","allOf":[{"$ref":"#/components/schemas/ScaffoldDatabaseDto"}]},"spreadsheet":{"description":"Makes this node a SPREADSHEET (mutually exclusive with the other type payloads).","allOf":[{"$ref":"#/components/schemas/ScaffoldSpreadsheetDto"}]},"whiteboard":{"description":"Makes this node a WHITEBOARD (mutually exclusive with the other type payloads).","allOf":[{"$ref":"#/components/schemas/ScaffoldWhiteboardDto"}]},"form":{"description":"Makes this node a FORM (mutually exclusive with the other type payloads).","allOf":[{"$ref":"#/components/schemas/ScaffoldFormDto"}]},"issues":{"description":"Makes this node an ISSUE_TRACKER (mutually exclusive with the other type payloads).","allOf":[{"$ref":"#/components/schemas/ScaffoldIssuesDto"}]},"crm":{"description":"Makes this node a CRM (mutually exclusive with the other type payloads).","allOf":[{"$ref":"#/components/schemas/ScaffoldCrmDto"}]},"children":{"maxItems":200,"type":"array","items":{"$ref":"#/components/schemas/ScaffoldNodeDto"}}},"required":["name"]},"ScaffoldWorkspaceDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"intent":{"type":"string","maxLength":2000},"rootPath":{"type":"string","maxLength":1000},"tree":{"maxItems":200,"type":"array","items":{"$ref":"#/components/schemas/ScaffoldNodeDto"}}},"required":["name","tree"]},"ScaffoldPlanDto":{"type":"object","properties":{"intent":{"type":"string","description":"Natural-language request, e.g. \"프로젝트 관리 워크스페이스 만들어줘\".","maxLength":2000},"locale":{"type":"string","description":"Optional 'en' | 'ko' override; otherwise inferred from the intent text.","maxLength":8}},"required":["intent"]},"ScaffoldApplyDto":{"type":"object","properties":{"intent":{"type":"string","description":"The natural-language request that produced this tree (for audit/telemetry).","maxLength":2000},"rootPath":{"type":"string","description":"Optional folder to create and nest the tree under, e.g. \"/프로젝트 관리\".","maxLength":1000},"tree":{"maxItems":200,"type":"array","items":{"$ref":"#/components/schemas/ScaffoldNodeDto"}}},"required":["tree"]},"CreateCrmDto":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"path":{"type":"string"},"parentId":{"type":"string"},"icon":{"type":"string"},"pipelines":{"type":"object","description":"[{ id?, name, stages: [{ id?, name, probability?, color? }] }] — validated by crm-schema.validatePipelines."},"fields":{"type":"object","description":"{ contact?: FieldDef[], company?: FieldDef[], deal?: FieldDef[] } — validated by crm-schema.validateCrmFields."},"config":{"type":"object"},"createParents":{"type":"boolean"},"autoRename":{"type":"boolean"}}},"PatchCrmDto":{"type":"object","properties":{"pipelines":{"type":"object"},"fields":{"type":"object"},"config":{"type":"object"},"icon":{"type":"string"}}},"CreateCompanyDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":300},"domain":{"type":"string","maxLength":300},"industry":{"type":"string","maxLength":200},"size":{"type":"string","maxLength":100},"address":{"type":"string","maxLength":1000},"description":{"type":"string","maxLength":10000},"ownerId":{"type":"string"},"source":{"type":"string","maxLength":200},"tags":{"type":"array","items":{"type":"string"}},"custom":{"type":"object","description":"{fieldId: value} — validated against the CRM's company field defs."}},"required":["name"]},"PatchCompanyDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":300},"domain":{"type":"string","nullable":true},"industry":{"type":"string","nullable":true},"size":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"ownerId":{"type":"string","nullable":true},"source":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"string"}},"custom":{"type":"object"}}},"CreateContactDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":300},"email":{"type":"string","maxLength":320},"phone":{"type":"string","maxLength":50},"title":{"type":"string","maxLength":200},"companyId":{"type":"string"},"lifecycleStage":{"type":"string","enum":["lead","mql","sql","opportunity","customer","evangelist"]},"leadStatus":{"type":"string","enum":["new","attempting","connected","open_deal","unqualified"]},"ownerId":{"type":"string"},"source":{"type":"string","maxLength":200},"linkedinUrl":{"type":"string","maxLength":500},"tags":{"type":"array","items":{"type":"string"}},"custom":{"type":"object"}},"required":["name"]},"PatchContactDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":300},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"companyId":{"type":"string","nullable":true,"description":"null detaches the contact from its company."},"lifecycleStage":{"type":"string","enum":["lead","mql","sql","opportunity","customer","evangelist"]},"leadStatus":{"type":"string","nullable":true},"ownerId":{"type":"string","nullable":true},"source":{"type":"string","nullable":true},"linkedinUrl":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"string"}},"custom":{"type":"object"}}},"DealContactLinkDto":{"type":"object","properties":{"contactId":{"type":"string"},"role":{"type":"string","maxLength":50}},"required":["contactId"]},"CreateDealDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":300},"value":{"type":"number","minimum":0},"currency":{"type":"string","maxLength":10},"pipelineId":{"type":"string","description":"Defaults to the first pipeline."},"stageId":{"type":"string","description":"Defaults to the pipeline's first stage."},"probability":{"type":"number","minimum":0,"maximum":100},"expectedCloseDate":{"type":"string"},"priority":{"type":"string","enum":["low","medium","high"]},"ownerId":{"type":"string"},"source":{"type":"string","maxLength":200},"tags":{"type":"array","items":{"type":"string"}},"companyId":{"type":"string"},"primaryContactId":{"type":"string"},"contacts":{"description":"Extra participants with roles: [{ contactId, role? }].","type":"array","items":{"$ref":"#/components/schemas/DealContactLinkDto"}},"custom":{"type":"object"}},"required":["name"]},"PatchDealDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":300},"value":{"type":"number","minimum":0},"currency":{"type":"string","maxLength":10},"status":{"type":"string","description":"won/lost sets closedAt (+reason); open reopens.","enum":["open","won","lost"]},"wonLostReason":{"type":"string","nullable":true,"maxLength":500},"probability":{"type":"number","nullable":true,"description":"null reverts to the stage's default probability."},"expectedCloseDate":{"type":"string","nullable":true},"priority":{"type":"string","nullable":true},"ownerId":{"type":"string","nullable":true},"source":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"string"}},"companyId":{"type":"string","nullable":true},"primaryContactId":{"type":"string","nullable":true},"contacts":{"description":"Full replacement of the participants list.","type":"array","items":{"$ref":"#/components/schemas/DealContactLinkDto"}},"custom":{"type":"object"}}},"MoveDealDto":{"type":"object","properties":{"stageId":{"type":"string","description":"Target stage (same or another pipeline of this CRM)."},"pipelineId":{"type":"string"},"position":{"type":"number","description":"Board ordering within the target column."}},"required":["stageId"]},"CreateActivityDto":{"type":"object","properties":{"type":{"type":"string","enum":["note","call","email","meeting"]},"subject":{"type":"string","maxLength":300},"body":{"type":"string","maxLength":50000},"occurredAt":{"type":"string"},"contactId":{"type":"string"},"companyId":{"type":"string"},"dealId":{"type":"string"}},"required":["type"]},"CreateTaskDto":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"type":{"type":"string","enum":["todo","call","email","meeting"]},"dueAt":{"type":"string"},"assigneeId":{"type":"string"},"contactId":{"type":"string"},"companyId":{"type":"string"},"dealId":{"type":"string"}},"required":["title"]},"PatchTaskDto":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"type":{"type":"string","enum":["todo","call","email","meeting"]},"status":{"type":"string","description":"done stamps completedAt (+ a task_done timeline entry); open clears it.","enum":["open","done"]},"dueAt":{"type":"string","nullable":true},"assigneeId":{"type":"string","nullable":true},"contactId":{"type":"string","nullable":true},"companyId":{"type":"string","nullable":true},"dealId":{"type":"string","nullable":true}}},"ImportRowsDto":{"type":"object","properties":{"entity":{"type":"string","enum":["contact","company","deal"]},"rows":{"description":"Parsed rows (client parses CSV): array of column→value objects.","type":"array","items":{"type":"object"}}},"required":["entity","rows"]},"CreatePresentationDto":{"type":"object","properties":{"name":{"type":"string"},"parentId":{"type":"string","description":"Either parentId or path must locate the target parent."},"path":{"type":"string","description":"Full path incl. name — wins over parentId+name.","maxLength":2000},"createParents":{"type":"boolean"},"autoRename":{"type":"boolean","description":"On sibling name conflict: false → 409, true → \" (2)\" suffix."},"icon":{"type":"string","maxLength":16},"theme":{"type":"object","additionalProperties":true,"description":"Design theme (Outlier theme.json shape); defaults applied for missing keys."},"slides":{"description":"Initial slides; defaults to an empty deck.","type":"array","items":{"type":"object"}},"config":{"type":"object","additionalProperties":true}}},"PatchPresentationDto":{"type":"object","properties":{"theme":{"type":"object","additionalProperties":true},"slides":{"description":"Full replacement of the slides array.","type":"array","items":{"type":"object"}},"config":{"type":"object","additionalProperties":true},"icon":{"type":"string","maxLength":16}}},"AppendSlidesDto":{"type":"object","properties":{"slides":{"type":"array","items":{"type":"object"}}},"required":["slides"]},"UpdateSlideDto":{"type":"object","properties":{"slide":{"type":"object","additionalProperties":true,"description":"Partial slide fields to merge into the slide with this id."}},"required":["slide"]},"ReorderSlidesDto":{"type":"object","properties":{"order":{"description":"Slide ids in the desired order; must be a permutation of existing ids.","type":"array","items":{"type":"string"}}},"required":["order"]},"PresentationPublicSettingsDto":{"type":"object","properties":{"isPublic":{"type":"boolean"},"expiresAt":{"type":"string","nullable":true}}},"GenerateImageDto":{"type":"object","properties":{"prompt":{"type":"string","minLength":2,"maxLength":2000},"nodeId":{"type":"string","description":"Optional node to attach the image to (permission-checked)."},"context":{"type":"object","properties":{"title":{"type":"string"},"points":{"type":"array","items":{"type":"string"}},"palette":{"type":"array","items":{"type":"string"}},"images":{"type":"array","items":{"type":"string"}}},"required":[]}},"required":["prompt"]},"DescribeImageDto":{"type":"object","properties":{"attachmentId":{"type":"string"},"nodeId":{"type":"string"}},"required":["attachmentId"]},"RemoveBackgroundDto":{"type":"object","properties":{"attachmentId":{"type":"string"},"nodeId":{"type":"string"}},"required":["attachmentId"]},"QueueDraftDto":{"type":"object","properties":{"userId":{"type":"string"},"email":{"type":"string","format":"email"},"subject":{"type":"string","minLength":1,"maxLength":300},"bodyHtml":{"type":"string","minLength":1},"lang":{"type":"string","enum":["ko","en"]},"kind":{"type":"string","description":"Segment kind: 'reengage' (new) · 'reengage_7d' · 'reengage_30d'. Defaults to 'reengage'.","enum":["reengage","reengage_7d","reengage_30d"]},"domainInfo":{"type":"object","additionalProperties":true},"personalization":{"type":"object","additionalProperties":true}},"required":["email","subject","bodyHtml"]},"PublicSettingsDto":{"type":"object","properties":{"isPublic":{"type":"boolean"},"allowCommits":{"type":"boolean"},"expiresAt":{"type":"string","nullable":true}}},"ProposeCommitDto":{"type":"object","properties":{"contentMd":{"type":"string"},"message":{"type":"string","maxLength":500}},"required":["contentMd"]},"RegisterClientDto":{"type":"object","properties":{"client_name":{"type":"string"},"redirect_uris":{"type":"array","items":{"type":"string"}}},"required":["redirect_uris"]},"ConsentDto":{"type":"object","properties":{"clientId":{"type":"string"},"redirectUri":{"type":"string"},"codeChallenge":{"type":"string"},"codeChallengeMethod":{"type":"string"},"workspaceId":{"type":"string"},"permission":{"type":"string","enum":["read","write"]},"state":{"type":"string"}},"required":["clientId","redirectUri","codeChallenge","workspaceId","permission"]}}}}