{"openapi":"3.0.0","paths":{"/health/live":{"get":{"operationId":"HealthController_live","parameters":[],"responses":{"200":{"description":""}},"tags":["Health"]}},"/health/ready":{"get":{"operationId":"HealthController_ready","parameters":[],"responses":{"200":{"description":""}},"tags":["Health"]}},"/admin/stats":{"get":{"operationId":"AdminController_getStats","parameters":[],"responses":{"200":{"description":"Aggregate platform statistics (companies, users, kyc, recent logs)"}},"security":[{"bearer":[]}],"summary":"Get global platform statistics and KPI aggregates","tags":["Platform Administration"]}},"/admin/finance-summary":{"get":{"operationId":"AdminController_getFinanceSummary","parameters":[],"responses":{"200":{"description":"Aggregate platform subscription revenue figures"}},"security":[{"bearer":[]}],"summary":"Platform-wide finance breakdown (facture/encaisse/impayes/prevision)","tags":["Platform Administration"]}},"/admin/accountants":{"get":{"operationId":"AdminController_getAccountants","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Platform Administration"]},"post":{"operationId":"AdminController_createAccountant","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountantDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Platform Administration"]}},"/admin/accountants/clients":{"get":{"operationId":"AdminController_getAccountantClients","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Platform Administration"]}},"/admin/accountants/{userId}":{"patch":{"operationId":"AdminController_updateAccountant","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountantDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Platform Administration"]},"delete":{"operationId":"AdminController_removeAccountant","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Platform Administration"]}},"/admin/accountants/{userId}/resend-invite":{"post":{"operationId":"AdminController_resendAccountantInvite","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Platform Administration"]}},"/admin/accountants/{userId}/clients":{"put":{"operationId":"AdminController_assignAccountantClients","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignAccountantClientsDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Platform Administration"]}},"/admin/accountants/{userId}/cabinets":{"post":{"operationId":"AdminController_addAccountantCabinet","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddAccountantCabinetDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Admin: Add an accountant to another accounting firm","tags":["Platform Administration"]}},"/admin/accountants/{userId}/cabinets/{cabinetId}":{"delete":{"operationId":"AdminController_removeAccountantCabinet","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Admin: End an accountant's membership at one accounting firm","tags":["Platform Administration"]}},"/admin/cabinets":{"get":{"operationId":"OpsController_cabinets","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"post":{"operationId":"OpsController_createCabinet","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CabinetDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/cabinets/eligible":{"get":{"operationId":"AdminController_getEligibleCabinets","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Admin: List accounting firms with at least one validated accountant","tags":["Platform Administration"]}},"/admin/cabinets/print":{"get":{"operationId":"OpsController_printCabinets","parameters":[{"name":"ids","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/cabinets/{id}":{"get":{"operationId":"OpsController_cabinet","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"put":{"operationId":"OpsController_updateCabinet","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CabinetDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"delete":{"operationId":"OpsController_removeCabinet","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/cabinets/{id}/accountants":{"put":{"operationId":"ExtrasController_assignAccountants","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignAccountantsDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/companies":{"get":{"operationId":"AdminController_getCompanies","parameters":[{"name":"search","required":false,"in":"query","description":"Filter by name or matricule fiscal","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","description":"Filter by company status","schema":{"type":"string"}},{"name":"kycStatus","required":false,"in":"query","description":"Filter by KYC compliance status","schema":{"type":"string"}}],"responses":{"200":{"description":"List of tenant companies"}},"security":[{"bearer":[]}],"summary":"Admin: Search and list all tenant companies","tags":["Platform Administration"]},"post":{"operationId":"AdminController_createCompany","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCompanyAdminDto"}}}},"responses":{"201":{"description":"Company created"}},"security":[{"bearer":[]}],"summary":"Admin: Create a new tenant company record directly","tags":["Platform Administration"]}},"/admin/companies/print":{"get":{"operationId":"AdminController_printCompanies","parameters":[{"name":"ids","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Platform Administration"]}},"/admin/declarations":{"get":{"operationId":"OpsController_declarations","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/companies/{companyId}":{"patch":{"operationId":"AdminController_updateCompany","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCompanyAdminDto"}}}},"responses":{"200":{"description":"Company updated"},"404":{"description":"Company not found"}},"security":[{"bearer":[]}],"summary":"Admin: Edit core company identification fields","tags":["Platform Administration"]}},"/admin/companies/{companyId}/accountant":{"put":{"operationId":"AdminController_assignCompanyAccountant","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignCompanyAccountantDto"}}}},"responses":{"200":{"description":"Accountant assigned to company"},"404":{"description":"Company or accountant not found"}},"security":[{"bearer":[]}],"summary":"Admin: Assign an accountant to a company (company side)","tags":["Platform Administration"]},"delete":{"operationId":"AdminController_unassignCompanyAccountants","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Admin: Remove all accountant assignments from a company","tags":["Platform Administration"]}},"/admin/companies/{companyId}/firm":{"put":{"operationId":"AdminController_assignCompanyFirm","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignCompanyFirmDto"}}}},"responses":{"200":{"description":"Firm assigned to company"},"404":{"description":"Company or cabinet not found"}},"security":[{"bearer":[]}],"summary":"Admin: Assign (or unassign, with a null cabinetId) the accounting firm handling a company","tags":["Platform Administration"]}},"/admin/companies/{companyId}/plan":{"put":{"operationId":"AdminController_assignCompanyPlan","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignCompanyPlanDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Admin: Assign or change a company subscription plan","tags":["Platform Administration"]}},"/admin/companies/{companyId}/status":{"patch":{"operationId":"AdminController_updateCompanyStatus","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCompanyAdminStatusDto"}}}},"responses":{"200":{"description":"Company status updated"},"404":{"description":"Company not found"}},"security":[{"bearer":[]}],"summary":"Admin: Update company lifecycle status","tags":["Platform Administration"]}},"/admin/companies/{companyId}/document-requests":{"post":{"operationId":"AdminController_requestCompanyDocuments","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestCompanyDocumentsDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Admin: request documents from a company","tags":["Platform Administration"]}},"/admin/companies/{companyId}/access-reset":{"post":{"operationId":"AdminController_requestCompanyAccessReset","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Admin: send an access reset link to the company owner","tags":["Platform Administration"]}},"/admin/audit-logs":{"get":{"operationId":"AdminController_getAuditLogs","parameters":[{"name":"limit","required":false,"in":"query","description":"Number of audit entries to fetch","schema":{"example":50,"type":"string"}}],"responses":{"200":{"description":"List of audit entries"}},"security":[{"bearer":[]}],"summary":"Admin: Retrieve platform security and mutation audit logs","tags":["Platform Administration"]}},"/practice/cabinets/self":{"post":{"operationId":"AccountantOnboardingController_createOwnCabinet","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSelfServiceCabinetDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"An authenticated accountant creates a cabinet they administer","tags":["Accountant onboarding"]}},"/auth/register":{"post":{"operationId":"IdentityController_register","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterDto"}}}},"responses":{"201":{"description":""}},"tags":["Identity"]}},"/auth/verify-email":{"post":{"operationId":"IdentityController_verifyEmail","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailDto"}}}},"responses":{"204":{"description":""}},"tags":["Identity"]}},"/auth/resend-verification":{"post":{"operationId":"IdentityController_resendVerification","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordDto"}}}},"responses":{"204":{"description":""}},"tags":["Identity"]}},"/auth/forgot-password":{"post":{"operationId":"IdentityController_forgotPassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordDto"}}}},"responses":{"204":{"description":""}},"tags":["Identity"]}},"/auth/reset-password":{"post":{"operationId":"IdentityController_resetPassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordDto"}}}},"responses":{"204":{"description":""}},"tags":["Identity"]}},"/auth/login":{"post":{"operationId":"IdentityController_login","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginDto"}}}},"responses":{"201":{"description":""}},"tags":["Identity"]}},"/auth/refresh":{"post":{"operationId":"IdentityController_refresh","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshDto"}}}},"responses":{"201":{"description":""}},"tags":["Identity"]}},"/auth/logout":{"post":{"operationId":"IdentityController_logout","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshDto"}}}},"responses":{"204":{"description":""}},"tags":["Identity"]}},"/auth/me":{"get":{"operationId":"IdentityController_me","parameters":[],"responses":{"200":{"description":""}},"tags":["Identity"]}},"/auth/me/memberships":{"get":{"operationId":"IdentityController_myMemberships","parameters":[],"responses":{"200":{"description":""}},"tags":["Identity"]}},"/auth/me/locale":{"patch":{"operationId":"IdentityController_setLocale","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetLocaleDto"}}}},"responses":{"204":{"description":""}},"tags":["Identity"]}},"/auth/change-password":{"post":{"operationId":"IdentityController_changePassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordDto"}}}},"responses":{"204":{"description":""}},"tags":["Identity"]}},"/auth/mfa/enroll":{"post":{"operationId":"IdentityController_enrollMfa","parameters":[],"responses":{"201":{"description":""}},"tags":["Identity"]}},"/auth/mfa/confirm":{"post":{"operationId":"IdentityController_confirmMfa","parameters":[],"responses":{"204":{"description":""}},"tags":["Identity"]}},"/auth/mfa/status":{"get":{"operationId":"IdentityController_mfaStatus","parameters":[],"responses":{"200":{"description":""}},"tags":["Identity"]}},"/integrations/rne/lookup/{identifier}":{"get":{"operationId":"IntegrationsController_lookupRne","parameters":[{"name":"identifier","required":true,"in":"path","description":"Matricule Fiscal or Trade Register number","schema":{"type":"string"}}],"responses":{"200":{"description":"Verified enterprise profile"}},"security":[{"bearer":[]}],"summary":"Lookup company in Tunisian RNE business register by Matricule Fiscal or RC","tags":["Integrations & 3rd-Party APIs"]}},"/integrations/ttn/process-invoice":{"post":{"operationId":"IntegrationsController_processTtnInvoice","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TtnInvoiceDto"}}}},"responses":{"201":{"description":"TTN validation result with XML and QR code data URL"}},"security":[{"bearer":[]}],"summary":"Process invoice for TTN El-Fatura (validates, computes digest, and produces 2D QR code)","tags":["Integrations & 3rd-Party APIs"]}},"/integrations/tej/generate-certificate":{"post":{"operationId":"IntegrationsController_generateTejCertificate","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TejCertificateDto"}}}},"responses":{"201":{"description":"TEJ certificate result with totals, SHA-256 hash, and QR code"}},"security":[{"bearer":[]}],"summary":"Generate a TEJ-compliant electronic withholding tax certificate with QR verification","tags":["Integrations & 3rd-Party APIs"]}},"/integrations/sms/send-otp":{"post":{"operationId":"IntegrationsController_sendSmsOtp","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendOtpDto"}}}},"responses":{"201":{"description":"SMS dispatch confirmation"}},"security":[{"bearer":[]}],"summary":"Dispatch a 2FA OTP verification code via SMS (code is generated server-side)","tags":["Integrations & 3rd-Party APIs"]}},"/integrations/payments/init":{"post":{"operationId":"IntegrationsController_initPayment","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KonnectPaymentInitDto"}}}},"responses":{"201":{"description":"Payment gateway redirect URL and reference"}},"security":[{"bearer":[]}],"summary":"Initialize online payment via Konnect / Flouci in Tunisian Dinars","tags":["Integrations & 3rd-Party APIs"]}},"/practice/cabinets/{cabinetId}/requests":{"get":{"operationId":"RequestsController_getRequests","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"companyId","required":false,"in":"query","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List client requests","tags":["Practice - Client Requests"]},"post":{"operationId":"RequestsController_createRequest","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateClientRequestDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Create a client document or query request","tags":["Practice - Client Requests"]}},"/practice/cabinets/{cabinetId}/requests/{id}":{"get":{"operationId":"RequestsController_getRequest","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get client request details","tags":["Practice - Client Requests"]},"patch":{"operationId":"RequestsController_updateRequest","parameters":[{"name":"cabinetId","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/UpdateClientRequestDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Update a client request","tags":["Practice - Client Requests"]},"delete":{"operationId":"RequestsController_deleteRequest","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"summary":"Delete a client request","tags":["Practice - Client Requests"]}},"/practice/cabinets/{cabinetId}/requests/{id}/status":{"patch":{"operationId":"RequestsController_updateStatus","parameters":[{"name":"cabinetId","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/UpdateClientRequestStatusDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Update client request status","tags":["Practice - Client Requests"]}},"/practice/cabinets/{cabinetId}/requests/{id}/remind":{"post":{"operationId":"RequestsController_sendReminder","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Send a reminder for a client request","tags":["Practice - Client Requests"]}},"/practice/cabinets/{cabinetId}/requests/{id}/comments":{"post":{"operationId":"RequestsController_addComment","parameters":[{"name":"cabinetId","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/CreateClientRequestCommentDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Add a persisted comment to a client request","tags":["Practice - Client Requests"]}},"/practice/cabinets/{cabinetId}/requests/{id}/documents":{"post":{"operationId":"RequestsController_attachDocument","parameters":[{"name":"cabinetId","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/AttachClientRequestDocumentDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Attach a company-owned document to a client request","tags":["Practice - Client Requests"]}},"/practice/cabinets/{cabinetId}/dashboard":{"get":{"operationId":"WorkspaceController_getDashboard","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Real KPIs of the caller portfolio","tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/assistant/ask":{"post":{"operationId":"WorkspaceController_ask","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantQuestionDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Ask the assistant about the caller portfolio","tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/assistant/chat":{"post":{"operationId":"WorkspaceController_chat","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantChatDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Streaming assistant chat (AI SDK UI messages) with portfolio tools","tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/clients/{companyId}":{"get":{"operationId":"WorkspaceController_clientFile","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Client file overview: company, counters, assigned team, contacts","tags":["Practice - Workspace"]},"patch":{"operationId":"PortfolioController_updateClient","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePortfolioClientDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Update a client company in this cabinet","tags":["Practice - Portfolio"]}},"/practice/cabinets/{cabinetId}/clients/{companyId}/accounting-periods":{"get":{"operationId":"WorkspaceController_accountingPeriods","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Open accounting periods of a client","tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/declarations":{"get":{"operationId":"WorkspaceController_declarations","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"status","required":true,"in":"query","schema":{"type":"string"}},{"name":"type","required":true,"in":"query","schema":{"type":"string"}},{"name":"companyId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Declarations across the caller clients","tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/declarations/{id}":{"get":{"operationId":"WorkspaceController_declaration","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Declaration detail: versions, controls, transmissions","tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/clients/{companyId}/feedback":{"post":{"operationId":"WorkspaceController_feedback","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Record a client satisfaction rating for a team member","tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/documents/{id}/review":{"post":{"operationId":"WorkspaceController_review","parameters":[{"name":"cabinetId","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/ReviewDocumentDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Validate or reject a document from the review queue","tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/signatures":{"get":{"operationId":"WorkspaceController_signatures","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"status","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]},"post":{"operationId":"WorkspaceController_createSignature","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignatureDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/signatures/{id}/cancel":{"post":{"operationId":"WorkspaceController_cancelSignature","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/messages/threads":{"get":{"operationId":"WorkspaceController_threads","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]},"post":{"operationId":"WorkspaceController_createThread","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateThreadDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/messages/threads/{threadId}/messages":{"get":{"operationId":"WorkspaceController_messages","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"threadId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]},"post":{"operationId":"WorkspaceController_postMessage","parameters":[{"name":"cabinetId","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":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/messages/threads/{threadId}/messages/{messageId}/convert":{"post":{"operationId":"WorkspaceController_convert","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"threadId","required":true,"in":"path","schema":{"type":"string"}},{"name":"messageId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertMessageDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Create a task, request, mission or anomaly from a message","tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/reminder-rules":{"get":{"operationId":"WorkspaceController_listRules","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]},"post":{"operationId":"WorkspaceController_createRule","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReminderRuleDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/reminder-rules/{id}":{"get":{"operationId":"WorkspaceController_getRule","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]},"put":{"operationId":"WorkspaceController_updateRule","parameters":[{"name":"cabinetId","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/ReminderRuleDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]},"delete":{"operationId":"WorkspaceController_deleteRule","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/reminder-rules/{id}/active":{"patch":{"operationId":"WorkspaceController_setRuleActive","parameters":[{"name":"cabinetId","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/SetActiveDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/reminders":{"get":{"operationId":"WorkspaceController_listReminders","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/reminders/{id}/cancel":{"post":{"operationId":"WorkspaceController_cancelReminder","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/notifications":{"get":{"operationId":"WorkspaceController_listNotifications","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"archived","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/notifications/unread-count":{"get":{"operationId":"WorkspaceController_unreadCount","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/notifications/{id}":{"get":{"operationId":"WorkspaceController_getNotification","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/notifications/read-all":{"post":{"operationId":"WorkspaceController_readAll","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/notifications/{id}/read":{"patch":{"operationId":"WorkspaceController_markRead","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/notifications/{id}/archive":{"patch":{"operationId":"WorkspaceController_archive","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/team":{"get":{"operationId":"WorkspaceController_listTeam","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/team/invite":{"post":{"operationId":"WorkspaceController_inviteTeamMember","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteTeamMemberDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/team/absences":{"get":{"operationId":"WorkspaceController_listAbsences","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/team/roles":{"get":{"operationId":"WorkspaceController_listRoles","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/team/roles/{roleId}/permissions":{"patch":{"operationId":"WorkspaceController_updateRolePermissions","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"roleId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRolePermissionsDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/team/{userId}":{"get":{"operationId":"WorkspaceController_teamMember","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/team/{userId}/absences":{"post":{"operationId":"WorkspaceController_addAbsence","parameters":[{"name":"cabinetId","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/AbsenceDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/team/{userId}/absences/{id}":{"delete":{"operationId":"WorkspaceController_removeAbsence","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/team/{userId}/role":{"patch":{"operationId":"WorkspaceController_changeMemberRole","parameters":[{"name":"cabinetId","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/ChangeMemberRoleDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/team/{userId}/assignments":{"post":{"operationId":"WorkspaceController_assign","parameters":[{"name":"cabinetId","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/AssignClientDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/team/{userId}/assignments/{companyId}":{"delete":{"operationId":"WorkspaceController_unassign","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/settings":{"get":{"operationId":"WorkspaceController_getSettings","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/settings/cabinet":{"put":{"operationId":"WorkspaceController_updateCabinet","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCabinetDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/settings/profile":{"put":{"operationId":"WorkspaceController_updateProfile","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProfileDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/settings/notification-preferences":{"put":{"operationId":"WorkspaceController_setPreferences","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPreferencesDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/settings/operational/{kind}":{"get":{"operationId":"WorkspaceController_getOperationalSettings","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"kind","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]},"put":{"operationId":"WorkspaceController_updateOperationalSettings","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"kind","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationalSettingsDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Workspace"]}},"/practice/cabinets/{cabinetId}/documents":{"get":{"operationId":"LibraryController_list","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"zone","required":true,"in":"query","schema":{"type":"string"}},{"name":"status","required":true,"in":"query","schema":{"type":"string"}},{"name":"companyId","required":true,"in":"query","schema":{"type":"string"}},{"name":"mine","required":true,"in":"query","schema":{"type":"string"}},{"name":"review","required":true,"in":"query","schema":{"type":"string"}},{"name":"internal","required":true,"in":"query","schema":{"type":"string"}},{"name":"archived","required":true,"in":"query","schema":{"type":"string"}},{"name":"favorite","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Documents (zone, mine, review, internal, archived, favorite, companyId filters)","tags":["Practice - Documents library"]},"post":{"operationId":"LibraryController_create","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLibraryDocumentDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Documents library"]}},"/practice/cabinets/{cabinetId}/documents/presign-upload":{"post":{"operationId":"LibraryController_presign","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresignDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Documents library"]}},"/practice/cabinets/{cabinetId}/documents/{id}":{"get":{"operationId":"LibraryController_detail","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Documents library"]},"patch":{"operationId":"LibraryController_update","parameters":[{"name":"cabinetId","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/UpdateLibraryDocumentDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Documents library"]}},"/practice/cabinets/{cabinetId}/documents/{id}/download":{"get":{"operationId":"LibraryController_download","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Documents library"]}},"/practice/cabinets/{cabinetId}/documents/{id}/favorite":{"put":{"operationId":"LibraryController_favorite","parameters":[{"name":"cabinetId","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/FavoriteDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Documents library"]}},"/practice/cabinets/{cabinetId}/documents/{id}/comments":{"post":{"operationId":"LibraryController_comment","parameters":[{"name":"cabinetId","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/CommentDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Documents library"]}},"/practice/cabinets/{cabinetId}/documents/{id}/versions":{"post":{"operationId":"LibraryController_version","parameters":[{"name":"cabinetId","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/AddVersionDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Documents library"]}},"/practice/cabinets/{cabinetId}/document-folders":{"get":{"operationId":"LibraryController_folders","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"companyId","required":true,"in":"query","schema":{"type":"string"}},{"name":"internal","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Documents library"]},"post":{"operationId":"LibraryController_createFolder","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Documents library"]}},"/practice/cabinets/{cabinetId}/document-folders/{id}":{"put":{"operationId":"LibraryController_updateFolder","parameters":[{"name":"cabinetId","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/FolderDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Documents library"]},"delete":{"operationId":"LibraryController_deleteFolder","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Documents library"]}},"/companies/{companyId}/documents":{"get":{"operationId":"DocumentsController_getDocuments","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"zone","required":false,"in":"query","schema":{"enum":["operational","vault"],"type":"string"}},{"name":"category","required":false,"in":"query","description":"Document category","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"enum":["to_classify","processing","filed","to_correct"],"type":"string"}}],"responses":{"200":{"description":"List of documents"}},"security":[{"bearer":[]}],"summary":"List and filter indexed documents","tags":["Documents & Vault"]},"post":{"operationId":"DocumentsController_createDocument","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDocumentDto"}}}},"responses":{"201":{"description":"Document successfully registered and hashed"}},"security":[{"bearer":[]}],"summary":"Index and register a new document","tags":["Documents & Vault"]}},"/companies/{companyId}/documents/presign-upload":{"post":{"operationId":"DocumentsController_presignUpload","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresignUploadDto"}}}},"responses":{"201":{"description":"Presigned upload URL and assigned storageKey generated"}},"security":[{"bearer":[]}],"summary":"Obtain a signed Cloudinary upload (URL and form fields) for direct client-to-storage upload","tags":["Documents & Vault"]}},"/companies/{companyId}/documents/{id}/presign-download":{"get":{"operationId":"DocumentsController_presignDownload","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Document UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Presigned download URL"},"404":{"description":"Document not found"}},"security":[{"bearer":[]}],"summary":"Obtain a temporary presigned download URL for a document","tags":["Documents & Vault"]}},"/companies/{companyId}/documents/{id}/versions":{"get":{"operationId":"DocumentsController_getDocumentVersions","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Document UUID","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List retained versions of a document","tags":["Documents & Vault"]},"post":{"operationId":"DocumentsController_addDocumentVersion","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Document UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDocumentVersionDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Upload a new version of a document (the previous one is retained)","tags":["Documents & Vault"]}},"/companies/{companyId}/documents/{id}/versions/{version}/presign-download":{"get":{"operationId":"DocumentsController_presignVersionDownload","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"version","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Obtain a temporary URL for a retained document version","tags":["Documents & Vault"]}},"/companies/{companyId}/documents/{id}":{"get":{"operationId":"DocumentsController_getDocument","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Document UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Document metadata details"},"404":{"description":"Document not found"}},"security":[{"bearer":[]}],"summary":"Get document details by ID","tags":["Documents & Vault"]},"patch":{"operationId":"DocumentsController_updateDocument","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Document UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDocumentDto"}}}},"responses":{"200":{"description":"Document metadata successfully updated"},"404":{"description":"Document not found"}},"security":[{"bearer":[]}],"summary":"Update document metadata or status","tags":["Documents & Vault"]},"delete":{"operationId":"DocumentsController_deleteDocument","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Document UUID","schema":{"type":"string"}}],"responses":{"204":{"description":"Document deleted"}},"security":[{"bearer":[]}],"summary":"Remove a document","tags":["Documents & Vault"]}},"/companies/{companyId}/documents/{id}/extract":{"post":{"operationId":"DocumentsController_extractDocument","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Document UUID","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Run field extraction (text PDFs and images) and store the result on the document","tags":["Documents & Vault"]}},"/companies/{companyId}/documents/{id}/archive":{"post":{"operationId":"DocumentsController_archiveDocument","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Document UUID","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Archive a document while retaining its metadata and storage object","tags":["Documents & Vault"]}},"/admin/roles":{"get":{"operationId":"AccessController_roles","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"post":{"operationId":"AccessController_createRole","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/roles/{id}":{"get":{"operationId":"AccessController_role","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"patch":{"operationId":"AccessController_updateRole","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"delete":{"operationId":"AccessController_removeRole","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/roles/{id}/duplicate":{"post":{"operationId":"AccessController_duplicateRole","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/roles/{id}/members":{"put":{"operationId":"AccessController_roleMembers","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleMembersDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/platform-users":{"get":{"operationId":"AccessController_users","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/platform-members":{"get":{"operationId":"AccessController_members","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"post":{"operationId":"AccessController_invite","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteMemberDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/platform-members/{id}":{"patch":{"operationId":"AccessController_updateMember","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"delete":{"operationId":"AccessController_removeMember","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/doc-templates":{"get":{"operationId":"ContentController_templates","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"post":{"operationId":"ContentController_createTemplate","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/doc-templates/{id}":{"get":{"operationId":"ContentController_template","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"patch":{"operationId":"ContentController_updateTemplate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTemplateDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"delete":{"operationId":"ContentController_removeTemplate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/doc-templates/{id}/duplicate":{"post":{"operationId":"ContentController_duplicateTemplate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/fiscal-rules":{"get":{"operationId":"ContentController_rules","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"post":{"operationId":"ContentController_createRule","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFiscalRuleDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/fiscal-rules/{id}/versions":{"post":{"operationId":"ContentController_addVersion","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewVersionDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/fiscal-rules/versions/{id}/status":{"patch":{"operationId":"ContentController_versionStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionStatusDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/fiscal-rules/attachments/presign-upload":{"post":{"operationId":"ContentController_presignFiscalAttachment","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresignFiscalAttachmentDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/fiscal-rules/attachments/confirm":{"post":{"operationId":"ContentController_confirmFiscalAttachment","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmFiscalAttachmentDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/fiscal-rules/attachments/{id}/download":{"get":{"operationId":"ContentController_downloadFiscalAttachment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/settings/{section}":{"get":{"operationId":"ContentController_section","parameters":[{"name":"section","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"put":{"operationId":"ContentController_saveSection","parameters":[{"name":"section","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingsDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/settings/company/logo/presign":{"post":{"operationId":"ContentController_presignBrandLogo","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandLogoUploadDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/settings/company/logo/confirm":{"post":{"operationId":"ContentController_confirmBrandLogo","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandLogoConfirmDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/settings/company/logo/{id}/download":{"get":{"operationId":"ContentController_downloadBrandLogo","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/integrations":{"get":{"operationId":"ContentController_integrations","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/integrations/{id}":{"put":{"operationId":"ContentController_saveIntegration","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/integrations/{id}/test":{"post":{"operationId":"ContentController_testIntegration","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/settings/{section}/test":{"post":{"operationId":"ContentController_testSetting","parameters":[{"name":"section","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/tasks":{"get":{"operationId":"ContentController_tasks","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/tasks/{id}":{"patch":{"operationId":"ContentController_taskEnabled","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskEnabledDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/tasks/{id}/run":{"post":{"operationId":"ContentController_runTask","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/me/preferences":{"get":{"operationId":"ContentController_myPreferences","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"put":{"operationId":"ContentController_saveMyPreferences","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferencesDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/me/password":{"post":{"operationId":"ContentController_changePassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/me/notification-preferences":{"get":{"operationId":"ContentController_myNotifPrefs","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"put":{"operationId":"ContentController_saveMyNotifPrefs","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPrefsDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/audiences/estimate":{"post":{"operationId":"OutreachController_estimate","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudienceDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/announcements":{"get":{"operationId":"OutreachController_announcements","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"post":{"operationId":"OutreachController_createAnnouncement","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/announcements/{id}":{"put":{"operationId":"OutreachController_updateAnnouncement","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"delete":{"operationId":"OutreachController_removeAnnouncement","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/campaigns":{"get":{"operationId":"OutreachController_campaigns","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"post":{"operationId":"OutreachController_createCampaign","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/campaigns/{id}":{"put":{"operationId":"OutreachController_updateCampaign","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"delete":{"operationId":"OutreachController_removeCampaign","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/campaigns/{id}/send":{"post":{"operationId":"OutreachController_sendCampaign","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/campaigns/{id}/cancel":{"post":{"operationId":"OutreachController_cancelCampaign","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/email-templates":{"get":{"operationId":"OutreachController_emailTemplates","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"post":{"operationId":"OutreachController_createEmailTemplate","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/email-templates/{id}":{"put":{"operationId":"OutreachController_updateEmailTemplate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"delete":{"operationId":"OutreachController_removeEmailTemplate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/notifications":{"get":{"operationId":"OutreachController_notifications","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"post":{"operationId":"OutreachController_sendNotification","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendNotificationDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/notifications/mine":{"get":{"operationId":"OutreachController_myNotifications","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/notifications/{id}/read":{"patch":{"operationId":"OutreachController_markNotificationRead","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/support/tickets":{"get":{"operationId":"SupportAdminController_tickets","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/support/tickets/{id}":{"get":{"operationId":"SupportAdminController_ticket","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"patch":{"operationId":"SupportAdminController_updateTicket","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketUpdateDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/support/tickets/{id}/messages":{"post":{"operationId":"SupportAdminController_reply","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketMessageDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/support/agents":{"get":{"operationId":"SupportAdminController_agents","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"post":{"operationId":"SupportAdminController_createAgent","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/support/agents/{id}":{"patch":{"operationId":"SupportAdminController_updateAgent","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAgentDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/support/agents/{id}/status":{"patch":{"operationId":"SupportAdminController_agentStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentStatusDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/payments/{id}/confirm-transfer":{"post":{"operationId":"OpsController_confirmTransfer","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/plans":{"get":{"operationId":"OpsController_plans","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"post":{"operationId":"OpsController_createPlan","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/plans/{id}":{"put":{"operationId":"OpsController_updatePlan","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"delete":{"operationId":"OpsController_removePlan","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/finance/summary":{"get":{"operationId":"OpsController_summary","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/finance/invoices":{"get":{"operationId":"OpsController_invoices","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/finance/invoices/{id}":{"get":{"operationId":"OpsController_invoice","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/payments":{"get":{"operationId":"OpsController_payments","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/payments/{id}/receipt":{"get":{"operationId":"OpsController_paymentReceipt","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/documents":{"get":{"operationId":"OpsController_documents","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/companies/{id}/file":{"get":{"operationId":"OpsController_companyFile","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/companies/{id}/print":{"get":{"operationId":"OpsController_companyPrint","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/accountants/{id}/file":{"get":{"operationId":"OpsController_accountantFile","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/me/permissions":{"get":{"operationId":"ExtrasController_myPermissions","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/document-folders":{"get":{"operationId":"ExtrasController_folders","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"post":{"operationId":"ExtrasController_createFolder","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/document-folders/{id}":{"put":{"operationId":"ExtrasController_renameFolder","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"delete":{"operationId":"ExtrasController_removeFolder","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/documents/{id}/meta":{"patch":{"operationId":"ExtrasController_documentMeta","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentMetaDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/companies/{id}/notes":{"post":{"operationId":"ExtrasController_addNote","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/companies/{id}/notes/{noteId}":{"delete":{"operationId":"ExtrasController_removeNote","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"noteId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/finance/expenses":{"get":{"operationId":"ExtrasController_expenses","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"post":{"operationId":"ExtrasController_createExpense","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpenseDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/finance/expenses/{id}":{"put":{"operationId":"ExtrasController_updateExpense","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpenseDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]},"delete":{"operationId":"ExtrasController_removeExpense","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/assistant/ask":{"post":{"operationId":"ExtrasController_ask","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/admin/assistant/chat":{"post":{"operationId":"ExtrasController_chat","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantChatDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/companies/{companyId}/warehouses":{"get":{"operationId":"PortalController_warehouses","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]},"post":{"operationId":"PortalController_createWarehouse","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWarehouseDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/warehouses/{id}":{"patch":{"operationId":"PortalController_updateWarehouse","parameters":[{"name":"companyId","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/UpdateWarehouseDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/stock-movements":{"get":{"operationId":"PortalController_movements","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"articleId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]},"post":{"operationId":"PortalController_createMovement","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStockMovementDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/credit-notes":{"get":{"operationId":"PortalController_salesCreditNotes","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]},"post":{"operationId":"PortalController_createSalesCreditNote","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCreditNoteDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/credit-notes/{id}/cancel":{"post":{"operationId":"PortalController_cancelSalesCreditNote","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/purchase-credit-notes":{"get":{"operationId":"PortalController_purchaseCreditNotes","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]},"post":{"operationId":"PortalController_createPurchaseCreditNote","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePurchaseCreditNoteDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/bank-transactions":{"get":{"operationId":"PortalController_bankTransactions","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"treasuryAccountId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]},"post":{"operationId":"PortalController_createBankTransaction","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBankTransactionDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/bank-transactions/import-csv":{"post":{"operationId":"PortalController_importBankStatementCsv","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportBankStatementCsvDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/bank-transactions/{id}":{"patch":{"operationId":"PortalController_updateBankTransaction","parameters":[{"name":"companyId","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/UpdateBankTransactionDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]},"get":{"operationId":"PortalExtraController_bankTransaction","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/treasury/balances":{"get":{"operationId":"PortalController_balances","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/reports/trial-balance":{"get":{"operationId":"PortalController_trialBalance","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"from","required":true,"in":"query","schema":{"type":"string"}},{"name":"to","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/reports/income-statement":{"get":{"operationId":"PortalController_incomeStatement","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"from","required":true,"in":"query","schema":{"type":"string"}},{"name":"to","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/reports/balance-sheet":{"get":{"operationId":"PortalController_balanceSheet","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"to","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/reports/general-ledger":{"get":{"operationId":"PortalController_generalLedger","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"accountCode","required":true,"in":"query","schema":{"type":"string"}},{"name":"from","required":true,"in":"query","schema":{"type":"string"}},{"name":"to","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/reports/customer-balance":{"get":{"operationId":"PortalController_customerBalance","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/reports/supplier-balance":{"get":{"operationId":"PortalController_supplierBalance","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/reports/journals":{"get":{"operationId":"PortalExtraController_journals","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/reports/aged-balance":{"get":{"operationId":"PortalController_agedBalance","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/calendar":{"get":{"operationId":"PortalController_month","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"month","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/calendar/events":{"post":{"operationId":"PortalController_createEvent","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCalendarEventDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/calendar/events/{id}":{"delete":{"operationId":"PortalController_removeEvent","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/assistant/suggestions":{"get":{"operationId":"PortalController_suggestions","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/assistant/ask":{"post":{"operationId":"PortalController_ask","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskAssistantDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/assistant/chat":{"post":{"operationId":"PortalController_chat","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/accountant-space":{"get":{"operationId":"PortalController_accountantOverview","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/activity":{"get":{"operationId":"PortalController_activityFeed","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/accountant-space/cabinets":{"get":{"operationId":"PortalController_accountantDirectory","parameters":[{"name":"search","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/accountant-space/requests/{id}/respond":{"post":{"operationId":"PortalController_respondToRequest","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/accountant-space/links":{"post":{"operationId":"PortalController_inviteAccountant","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteAccountantDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/accountant-space/links/{id}":{"patch":{"operationId":"PortalController_respondToLink","parameters":[{"name":"companyId","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/RespondLinkDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/withholding-certificates":{"get":{"operationId":"PortalController_withholdings","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]},"post":{"operationId":"PortalController_generateWithholding","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTejDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/withholding-certificates/{id}":{"patch":{"operationId":"PortalController_updateWithholding","parameters":[{"name":"companyId","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/UpdateTejStatusDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]},"get":{"operationId":"PortalExtraController_withholding","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/ttn/invoices":{"get":{"operationId":"PortalController_ttnInvoices","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/ttn/invoices/{id}/submit":{"post":{"operationId":"PortalController_submitToTtn","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/declarations/compute":{"post":{"operationId":"PortalExtraController_computeDeclaration","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeDeclarationDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/declarations/{id}/approve":{"post":{"operationId":"PortalExtraController_approveDeclaration","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/declarations/{id}/request-correction":{"post":{"operationId":"PortalExtraController_requestDeclarationCorrection","parameters":[{"name":"companyId","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/RequestCorrectionDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/declarations/{id}/documents":{"get":{"operationId":"PortalExtraController_declarationDocuments","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/declaration-tasks":{"get":{"operationId":"PortalExtraController_tasks","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/declaration-tasks/{id}":{"patch":{"operationId":"PortalExtraController_updateTask","parameters":[{"name":"companyId","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/UpdateTaskDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/document-requests":{"get":{"operationId":"PortalExtraController_documentRequests","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/document-requests/{id}/answer":{"post":{"operationId":"PortalExtraController_answerDocumentRequest","parameters":[{"name":"companyId","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/AnswerDocumentRequestDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/notifications":{"get":{"operationId":"PortalExtraController_listNotifications","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/notifications/read-all":{"post":{"operationId":"PortalExtraController_readAll","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/notifications/{id}/read":{"post":{"operationId":"PortalExtraController_read","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/notifications/{id}/archive":{"post":{"operationId":"PortalExtraController_archive","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/pilotage/dashboard":{"get":{"operationId":"PortalExtraController_dashboard","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/pilotage/cash-plan":{"get":{"operationId":"PortalExtraController_cashPlan","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"months","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/pilotage/compliance":{"get":{"operationId":"PortalExtraController_compliance","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/sales/{id}/convert":{"post":{"operationId":"PortalExtraController_convert","parameters":[{"name":"companyId","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/ConvertSalesDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/supplier-orders":{"get":{"operationId":"PortalExtraController_orders","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]},"post":{"operationId":"PortalExtraController_createOrder","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSupplierOrderDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/supplier-orders/{id}":{"get":{"operationId":"PortalExtraController_order","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/supplier-orders/{id}/status":{"patch":{"operationId":"PortalExtraController_orderStatus","parameters":[{"name":"companyId","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/OrderStatusDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/receipt-notes":{"get":{"operationId":"PortalExtraController_receiptNotes","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]},"post":{"operationId":"PortalExtraController_createReceiptNote","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReceiptNoteDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/billing/invoices/{id}/pay":{"post":{"operationId":"PortalExtraController_pay","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/accountant-space/invoices/{id}/pay":{"post":{"operationId":"PortalExtraController_payCabinetInvoice","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/billing/subscriptions/checkout":{"post":{"operationId":"PortalExtraController_startSubscriptionCheckout","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartSubscriptionCheckoutDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/billing/payment-instructions":{"get":{"operationId":"PortalExtraController_paymentInstructions","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/billing/subscriptions/{id}/cancel":{"post":{"operationId":"PortalExtraController_cancelSubscription","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/billing/payments":{"get":{"operationId":"PortalExtraController_payments","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/billing/payments/{paymentRef}/sandbox-settlement":{"post":{"operationId":"PortalExtraController_settleSandboxPayment","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"paymentRef","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SandboxPaymentSettlementDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/companies/{companyId}/reports/documents-by-account":{"get":{"operationId":"PortalExtraController_documentsByAccount","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"accountCode","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/me/settings":{"get":{"operationId":"MeSettingsController_settings","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]},"patch":{"operationId":"MeSettingsController_update","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSettingsDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/me/notification-preferences":{"patch":{"operationId":"MeSettingsController_preference","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateNotificationPreferenceDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/me/avatar/presign-upload":{"post":{"operationId":"MeSettingsController_presignAvatar","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresignAvatarUploadDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/me/avatar/confirm":{"post":{"operationId":"MeSettingsController_confirmAvatar","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmAvatarUploadDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/me/avatar/{id}/download":{"get":{"operationId":"MeSettingsController_avatarDownload","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Client portal"]}},"/billing/payments/webhook":{"get":{"operationId":"PaymentWebhookController_webhook","parameters":[{"name":"payment_ref","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["PaymentWebhook"]}},"/practice/cabinets/{cabinetId}/invites":{"get":{"operationId":"CabinetInvitesController_list","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Pending client-initiated invites awaiting this cabinet’s answer","tags":["Practice - Cabinet invites"]}},"/practice/cabinets/{cabinetId}/invites/{linkId}/respond":{"post":{"operationId":"CabinetInvitesController_respond","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"linkId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RespondCabinetInviteDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Accept or reject a pending client-initiated invite","tags":["Practice - Cabinet invites"]}},"/billing/subscriptions":{"post":{"operationId":"PlatformBillingController_subscribe","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Subscribe company or cabinet to a plan","tags":["Billing - Subscriptions & AI Credits"]}},"/billing/subscriptions/{subscriberType}/{subscriberId}":{"get":{"operationId":"PlatformBillingController_getSubscription","parameters":[{"name":"subscriberType","required":true,"in":"path","schema":{"type":"string"}},{"name":"subscriberId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get active subscription for company or cabinet","tags":["Billing - Subscriptions & AI Credits"]}},"/billing/subscriptions/{id}/cancel":{"post":{"operationId":"PlatformBillingController_cancelSubscription","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Cancel a subscription","tags":["Billing - Subscriptions & AI Credits"]}},"/billing/ai-credits/{subscriberType}/{subscriberId}":{"get":{"operationId":"PlatformBillingController_getCreditBalance","parameters":[{"name":"subscriberType","required":true,"in":"path","schema":{"type":"string"}},{"name":"subscriberId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get AI credit balance","tags":["Billing - Subscriptions & AI Credits"]}},"/billing/ai-credits/{subscriberType}/{subscriberId}/transactions":{"get":{"operationId":"PlatformBillingController_getCreditTransactions","parameters":[{"name":"subscriberType","required":true,"in":"path","schema":{"type":"string"}},{"name":"subscriberId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List recent AI credit consumptions","tags":["Billing - Subscriptions & AI Credits"]}},"/billing/ai-credits/consume":{"post":{"operationId":"PlatformBillingController_consumeCredits","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsumeAiCreditDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Consume AI credits for an action","tags":["Billing - Subscriptions & AI Credits"]}},"/billing/ai-credits/top-up":{"post":{"operationId":"PlatformBillingController_topUpCredits","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopUpAiCreditDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Top up AI credits","tags":["Billing - Subscriptions & AI Credits"]}},"/billing/invoices/{subscriberType}/{subscriberId}":{"get":{"operationId":"PlatformBillingController_getInvoices","parameters":[{"name":"subscriberType","required":true,"in":"path","schema":{"type":"string"}},{"name":"subscriberId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List platform invoices for subscriber","tags":["Billing - Subscriptions & AI Credits"]}},"/companies/{companyId}/kyc":{"get":{"operationId":"KycController_getCompanyKyc","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"KYC dossier view"}},"security":[{"bearer":[]}],"summary":"Get the KYC dossier status and required documents of a company","tags":["Governance - KYC"]}},"/companies/{companyId}/kyc/submit":{"post":{"operationId":"KycController_submitKyc","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitKycDto"}}}},"responses":{"201":{"description":"KYC dossier marked for verification; returns the dossier view"},"400":{"description":"Required documents missing or expired"}},"security":[{"bearer":[]}],"summary":"Submit KYC dossier for compliance review","tags":["Governance - KYC"]}},"/companies/{companyId}/kyc/skip":{"post":{"description":"Records that the client chose to continue without filing the pieces. No document is marked provided and nothing is submitted for review; documents already uploaded are kept. Idempotent.","operationId":"KycController_skipKyc","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"responses":{"201":{"description":"Dossier recorded as skipped; returns the dossier view"}},"security":[{"bearer":[]}],"summary":"Pass the compliance step without submitting documents for review","tags":["Governance - KYC"]}},"/admin/kyc/files":{"get":{"operationId":"KycController_listKycFiles","parameters":[{"name":"status","required":false,"in":"query","description":"Filter by KYC status","schema":{"type":"string"}}],"responses":{"200":{"description":"List of KYC files"}},"security":[{"bearer":[]}],"summary":"Admin: List KYC dossier files pending review","tags":["Governance - KYC"]}},"/admin/kyc/files/{id}":{"get":{"operationId":"KycController_getKycFile","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Admin: Get a KYC dossier with documents and decision history","tags":["Governance - KYC"]}},"/admin/kyc/files/{id}/decide":{"post":{"operationId":"KycController_decideKyc","parameters":[{"name":"id","required":true,"in":"path","description":"KYC file UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycDecisionDto"}}}},"responses":{"201":{"description":"KYC decision recorded and company updated"},"404":{"description":"KYC file not found"}},"security":[{"bearer":[]}],"summary":"Admin: Record compliance decision on KYC dossier","tags":["Governance - KYC"]}},"/companies":{"post":{"operationId":"TenancyController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCompanyDto"}}}},"responses":{"201":{"description":""}},"tags":["Tenancy"]}},"/companies/{id}":{"get":{"operationId":"CompanyController_getCompany","parameters":[{"name":"id","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Company profile details"},"404":{"description":"Company not found"}},"security":[{"bearer":[]}],"summary":"Get company profile by ID","tags":["Companies"]},"patch":{"operationId":"CompanyController_updateCompany","parameters":[{"name":"id","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCompanyDto"}}}},"responses":{"200":{"description":"Company profile updated successfully"},"404":{"description":"Company not found"}},"security":[{"bearer":[]}],"summary":"Update company profile","tags":["Companies"]}},"/companies/{id}/representatives":{"get":{"operationId":"CompanyController_getRepresentatives","parameters":[{"name":"id","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Array of legal representatives"}},"security":[{"bearer":[]}],"summary":"List legal representatives for company","tags":["Companies"]},"post":{"operationId":"CompanyController_createRepresentative","parameters":[{"name":"id","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRepresentativeDto"}}}},"responses":{"201":{"description":"Legal representative created"}},"security":[{"bearer":[]}],"summary":"Add a new legal representative","tags":["Companies"]}},"/companies/{id}/bank-accounts":{"get":{"operationId":"CompanyController_getBankAccounts","parameters":[{"name":"id","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Array of company bank accounts"}},"security":[{"bearer":[]}],"summary":"List company bank accounts","tags":["Companies"]},"post":{"operationId":"CompanyController_createBankAccount","parameters":[{"name":"id","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBankAccountDto"}}}},"responses":{"201":{"description":"Company bank account registered"}},"security":[{"bearer":[]}],"summary":"Register a company bank account","tags":["Companies"]}},"/companies/{companyId}/fiscal-profile":{"get":{"operationId":"CompanyWorkspaceController_getFiscal","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]},"put":{"operationId":"CompanyWorkspaceController_putFiscal","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertFiscalProfileDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]}},"/companies/{companyId}/social-profile":{"get":{"operationId":"CompanyWorkspaceController_getSocial","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]},"put":{"operationId":"CompanyWorkspaceController_putSocial","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertSocialProfileDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]}},"/companies/{companyId}/representatives/{id}":{"patch":{"operationId":"CompanyWorkspaceController_updateRepresentative","parameters":[{"name":"companyId","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/UpdateRepresentativeDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]}},"/companies/{companyId}/bank-accounts/{id}":{"patch":{"operationId":"CompanyWorkspaceController_updateBankAccount","parameters":[{"name":"companyId","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/UpdateBankAccountDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]}},"/companies/{companyId}/bank-accounts/{id}/primary":{"post":{"operationId":"CompanyWorkspaceController_setPrimary","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]}},"/companies/{companyId}/legal-documents":{"get":{"operationId":"CompanyWorkspaceController_listLegalDocuments","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]}},"/companies/{companyId}/legal-documents/{id}":{"put":{"operationId":"CompanyWorkspaceController_updateLegalDocument","parameters":[{"name":"companyId","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/UpdateLegalDocumentDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Attach a new uploaded version to a legal document","tags":["Companies"]}},"/companies/{companyId}/change-requests":{"get":{"operationId":"CompanyWorkspaceController_listChangeRequests","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]},"post":{"operationId":"CompanyWorkspaceController_createChangeRequest","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChangeRequestDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]}},"/companies/{companyId}/members":{"get":{"operationId":"CompanyWorkspaceController_listMembers","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]},"post":{"operationId":"CompanyWorkspaceController_inviteMember","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteMemberDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]}},"/companies/{companyId}/members/{id}/resend-invite":{"post":{"operationId":"CompanyWorkspaceController_resendMemberInvite","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]}},"/companies/{companyId}/members/{id}":{"patch":{"operationId":"CompanyWorkspaceController_updateMember","parameters":[{"name":"companyId","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/UpdateMemberDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]}},"/companies/{companyId}/login-events":{"get":{"operationId":"CompanyWorkspaceController_listLoginEvents","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]}},"/companies/{companyId}/access-policy":{"get":{"operationId":"CompanyWorkspaceController_getAccessPolicy","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]},"put":{"operationId":"CompanyWorkspaceController_updateAccessPolicy","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccessPolicyDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Companies"]}},"/companies/{companyId}/customers":{"get":{"operationId":"CommercePartiesController_getCustomers","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"search","required":false,"in":"query","description":"Search term for name or code","schema":{"type":"string"}},{"name":"status","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"List of customers"}},"security":[{"bearer":[]}],"summary":"List all customers for company","tags":["Commerce - Parties"]},"post":{"operationId":"CommercePartiesController_createCustomer","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomerDto"}}}},"responses":{"201":{"description":"Customer successfully created"}},"security":[{"bearer":[]}],"summary":"Create a new customer","tags":["Commerce - Parties"]}},"/companies/{companyId}/customers/{id}":{"get":{"operationId":"CommercePartiesController_getCustomer","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Customer UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Customer details"},"404":{"description":"Customer not found"}},"security":[{"bearer":[]}],"summary":"Get customer by ID","tags":["Commerce - Parties"]},"patch":{"operationId":"CommercePartiesController_updateCustomer","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Customer UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomerDto"}}}},"responses":{"200":{"description":"Customer successfully updated"},"404":{"description":"Customer not found"}},"security":[{"bearer":[]}],"summary":"Update an existing customer","tags":["Commerce - Parties"]}},"/companies/{companyId}/suppliers":{"get":{"operationId":"CommercePartiesController_getSuppliers","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"search","required":false,"in":"query","description":"Search term for name or code","schema":{"type":"string"}},{"name":"status","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"List of suppliers"}},"security":[{"bearer":[]}],"summary":"List all suppliers for company","tags":["Commerce - Parties"]},"post":{"operationId":"CommercePartiesController_createSupplier","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSupplierDto"}}}},"responses":{"201":{"description":"Supplier successfully created"}},"security":[{"bearer":[]}],"summary":"Create a new supplier","tags":["Commerce - Parties"]}},"/companies/{companyId}/suppliers/{id}":{"get":{"operationId":"CommercePartiesController_getSupplier","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Supplier UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Supplier details"},"404":{"description":"Supplier not found"}},"security":[{"bearer":[]}],"summary":"Get supplier by ID","tags":["Commerce - Parties"]},"patch":{"operationId":"CommercePartiesController_updateSupplier","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Supplier UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSupplierDto"}}}},"responses":{"200":{"description":"Supplier successfully updated"},"404":{"description":"Supplier not found"}},"security":[{"bearer":[]}],"summary":"Update an existing supplier","tags":["Commerce - Parties"]}},"/companies/{companyId}/sales-documents":{"get":{"operationId":"SalesController_getSalesDocuments","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"kind","required":false,"in":"query","schema":{"enum":["invoice","quote","delivery_note","exit_note","order"],"type":"string"}},{"name":"status","required":false,"in":"query","description":"Filter by document status","schema":{"type":"string"}}],"responses":{"200":{"description":"List of sales documents"}},"security":[{"bearer":[]}],"summary":"List sales documents (invoices, quotes, orders)","tags":["Commerce - Sales"]},"post":{"operationId":"SalesController_createSalesDocument","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSalesDocumentDto"}}}},"responses":{"201":{"description":"Sales document created with assigned number"}},"security":[{"bearer":[]}],"summary":"Create a new sales document with line calculations","tags":["Commerce - Sales"]}},"/companies/{companyId}/sales-documents/fiscal-config":{"get":{"operationId":"SalesController_getFiscalConfig","parameters":[{"name":"date","required":true,"in":"query","schema":{"type":"string"}},{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Fiscal values used to compute documents (stamp duty, TVA rates)","tags":["Commerce - Sales"]}},"/companies/{companyId}/sales-documents/{id}":{"get":{"operationId":"SalesController_getSalesDocument","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Sales document UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Sales document details including lines"},"404":{"description":"Sales document not found"}},"security":[{"bearer":[]}],"summary":"Get sales document details by ID","tags":["Commerce - Sales"]}},"/companies/{companyId}/sales-documents/{id}/status":{"post":{"operationId":"SalesController_updateStatus","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Sales document UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSalesDocumentStatusDto"}}}},"responses":{"200":{"description":"Document status successfully updated"},"404":{"description":"Sales document not found"}},"security":[{"bearer":[]}],"summary":"Update sales document workflow status","tags":["Commerce - Sales"]}},"/companies/{companyId}/purchases":{"get":{"operationId":"PurchasesController_getPurchases","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","description":"Filter by invoice status","schema":{"type":"string"}}],"responses":{"200":{"description":"List of purchase invoices"}},"security":[{"bearer":[]}],"summary":"List purchase invoices","tags":["Commerce - Purchases"]},"post":{"operationId":"PurchasesController_createPurchase","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePurchaseInvoiceDto"}}}},"responses":{"201":{"description":"Purchase invoice successfully recorded"}},"security":[{"bearer":[]}],"summary":"Record a new purchase invoice","tags":["Commerce - Purchases"]}},"/companies/{companyId}/purchases/{id}":{"get":{"operationId":"PurchasesController_getPurchase","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Purchase invoice UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Purchase invoice details"},"404":{"description":"Purchase invoice not found"}},"security":[{"bearer":[]}],"summary":"Get purchase invoice details by ID","tags":["Commerce - Purchases"]},"patch":{"operationId":"PurchasesController_updatePurchase","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Purchase invoice UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePurchaseInvoiceDto"}}}},"responses":{"200":{"description":"Purchase invoice successfully updated"},"404":{"description":"Purchase invoice not found"}},"security":[{"bearer":[]}],"summary":"Update an existing purchase invoice","tags":["Commerce - Purchases"]},"delete":{"operationId":"PurchasesController_deletePurchase","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Purchase invoice UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Purchase invoice successfully voided"},"404":{"description":"Purchase invoice not found"}},"security":[{"bearer":[]}],"summary":"Void a purchase invoice (sets status to cancelled)","tags":["Commerce - Purchases"]}},"/companies/{companyId}/purchases/{id}/history":{"get":{"operationId":"PurchasesController_getPurchaseHistory","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get purchase invoice audit history","tags":["Commerce - Purchases"]}},"/companies/{companyId}/purchases/extract":{"post":{"operationId":"PurchasesController_extractPurchaseDocument","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractPurchaseDocumentDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Extract invoice fields from an uploaded document","tags":["Commerce - Purchases"]}},"/companies/{companyId}/purchases/{id}/duplicate":{"post":{"operationId":"PurchasesController_duplicatePurchase","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Duplicate a purchase invoice as a draft","tags":["Commerce - Purchases"]}},"/companies/{companyId}/articles":{"get":{"operationId":"InventoryController_getArticles","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"search","required":false,"in":"query","description":"Filter by SKU or article name","schema":{"type":"string"}}],"responses":{"200":{"description":"List of articles"}},"security":[{"bearer":[]}],"summary":"List all inventory articles","tags":["Commerce - Inventory"]},"post":{"operationId":"InventoryController_createArticle","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateArticleDto"}}}},"responses":{"201":{"description":"Article successfully created"}},"security":[{"bearer":[]}],"summary":"Create a new article","tags":["Commerce - Inventory"]}},"/companies/{companyId}/articles/{id}":{"get":{"operationId":"InventoryController_getArticle","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Article UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Article details"},"404":{"description":"Article not found"}},"security":[{"bearer":[]}],"summary":"Get article details by ID","tags":["Commerce - Inventory"]},"patch":{"operationId":"InventoryController_updateArticle","parameters":[{"name":"companyId","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/UpdateArticleDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Update article details (stock moves through stock movements)","tags":["Commerce - Inventory"]}},"/companies/{companyId}/receipts":{"get":{"operationId":"FinanceController_getReceipts","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"List of receipts"}},"security":[{"bearer":[]}],"summary":"List customer payment receipts","tags":["Finance & Treasury"]},"post":{"operationId":"FinanceController_createReceipt","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReceiptDto"}}}},"responses":{"201":{"description":"Receipt successfully recorded"}},"security":[{"bearer":[]}],"summary":"Record a new customer receipt (encaissement)","tags":["Finance & Treasury"]}},"/companies/{companyId}/receipts/{id}/cancel":{"post":{"operationId":"FinanceController_cancelReceipt","parameters":[{"name":"companyId","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/CancelFinanceOperationDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Cancel a receipt and reverse its invoice allocations","tags":["Finance & Treasury"]}},"/companies/{companyId}/disbursements":{"get":{"operationId":"FinanceController_getDisbursements","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"List of disbursements"}},"security":[{"bearer":[]}],"summary":"List supplier disbursements","tags":["Finance & Treasury"]},"post":{"operationId":"FinanceController_createDisbursement","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDisbursementDto"}}}},"responses":{"201":{"description":"Disbursement successfully recorded"}},"security":[{"bearer":[]}],"summary":"Record a new supplier disbursement (décaissement)","tags":["Finance & Treasury"]}},"/companies/{companyId}/disbursements/{id}/cancel":{"post":{"operationId":"FinanceController_cancelDisbursement","parameters":[{"name":"companyId","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/CancelFinanceOperationDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Cancel a disbursement","tags":["Finance & Treasury"]}},"/companies/{companyId}/disbursements/{id}/pay":{"post":{"operationId":"FinanceController_payDisbursement","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Mark a pending disbursement as paid","tags":["Finance & Treasury"]}},"/companies/{companyId}/cash-movements":{"get":{"operationId":"FinanceController_getCashMovements","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List cash-desk movements","tags":["Finance & Treasury"]},"post":{"operationId":"FinanceController_createCashMovement","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCashMovementDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Record a cash-desk movement","tags":["Finance & Treasury"]}},"/companies/{companyId}/treasury-accounts":{"get":{"operationId":"FinanceController_getTreasuryAccounts","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"List of treasury accounts"}},"security":[{"bearer":[]}],"summary":"List company treasury accounts (bank & cash)","tags":["Finance & Treasury"]},"post":{"operationId":"FinanceController_createTreasuryAccount","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTreasuryAccountDto"}}}},"responses":{"201":{"description":"Treasury account created"}},"security":[{"bearer":[]}],"summary":"Create a new treasury account","tags":["Finance & Treasury"]}},"/companies/{companyId}/accounting/accounts":{"get":{"operationId":"LedgerController_getAccounts","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"List of chart accounts"}},"security":[{"bearer":[]}],"summary":"List chart of accounts","tags":["Accounting - General Ledger"]},"post":{"operationId":"LedgerController_createAccount","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChartAccountDto"}}}},"responses":{"201":{"description":"Chart account created"}},"security":[{"bearer":[]}],"summary":"Create a new chart account","tags":["Accounting - General Ledger"]}},"/companies/{companyId}/accounting/journals":{"get":{"operationId":"LedgerController_getJournals","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"List of journals"}},"security":[{"bearer":[]}],"summary":"List accounting journals","tags":["Accounting - General Ledger"]},"post":{"operationId":"LedgerController_createJournal","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateJournalDto"}}}},"responses":{"201":{"description":"Journal created"}},"security":[{"bearer":[]}],"summary":"Create a new accounting journal","tags":["Accounting - General Ledger"]}},"/companies/{companyId}/accounting/entries":{"get":{"operationId":"LedgerController_getEntries","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"journalId","required":false,"in":"query","description":"Filter by journal UUID","schema":{"type":"string"}},{"name":"periodId","required":false,"in":"query","description":"Filter by period UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"List of accounting entries"}},"security":[{"bearer":[]}],"summary":"List journal entries","tags":["Accounting - General Ledger"]},"post":{"operationId":"LedgerController_createEntry","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountingEntryDto"}}}},"responses":{"201":{"description":"Accounting entry posted successfully"},"400":{"description":"Unbalanced entry: debits do not equal credits"}},"security":[{"bearer":[]}],"summary":"Post balanced double-entry accounting entry (debit === credit)","tags":["Accounting - General Ledger"]}},"/companies/{companyId}/accounting/entries/{id}":{"get":{"operationId":"LedgerController_getEntry","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Accounting entry UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Accounting entry with lines"},"404":{"description":"Entry not found"}},"security":[{"bearer":[]}],"summary":"Get accounting entry details with lines","tags":["Accounting - General Ledger"]}},"/companies/{companyId}/accounting/trial-balance":{"get":{"operationId":"LedgerController_getTrialBalance","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Aggregated trial balance per account","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TrialBalanceRowDto"}}}}}},"security":[{"bearer":[]}],"summary":"Calculate real-time trial balance (balance générale)","tags":["Accounting - General Ledger"]}},"/companies/{companyId}/accounting/post/sales/{id}":{"post":{"operationId":"LedgerController_postSalesDocument","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Sales document UUID","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Auto-post a sales invoice into the general ledger (Journal des Ventes VT)","tags":["Accounting - General Ledger"]}},"/companies/{companyId}/accounting/post/purchases/{id}":{"post":{"operationId":"LedgerController_postPurchaseInvoice","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Purchase invoice UUID","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Auto-post a purchase invoice into the general ledger (Journal des Achats AC)","tags":["Accounting - General Ledger"]}},"/companies/{companyId}/accounting/post/receipts/{id}":{"post":{"operationId":"LedgerController_postReceipt","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Receipt UUID","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Auto-post a customer payment receipt into the general ledger (Journal de Banque BQ)","tags":["Accounting - General Ledger"]}},"/companies/{companyId}/accounting/post/disbursements/{id}":{"post":{"operationId":"LedgerController_postDisbursement","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Disbursement UUID","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Auto-post a supplier disbursement into the general ledger (Journal de Banque BQ)","tags":["Accounting - General Ledger"]}},"/companies/{companyId}/declarations":{"get":{"operationId":"DeclarationsController_getDeclarations","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"type","required":false,"in":"query","description":"Declaration type (e.g. tva, cnss, is)","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","description":"Declaration status","schema":{"type":"string"}},{"name":"period","required":false,"in":"query","description":"Fiscal period (e.g. 2026-02)","schema":{"type":"string"}}],"responses":{"200":{"description":"List of declarations"}},"security":[{"bearer":[]}],"summary":"List tax declarations for company","tags":["Fiscal & Declarations"]},"post":{"operationId":"DeclarationsController_createDeclaration","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeclarationDto"}}}},"responses":{"201":{"description":"Declaration successfully initialized"}},"security":[{"bearer":[]}],"summary":"Create a new tax declaration","tags":["Fiscal & Declarations"]}},"/companies/{companyId}/declarations/{id}":{"get":{"operationId":"DeclarationsController_getDeclaration","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Declaration UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Declaration details"},"404":{"description":"Declaration not found"}},"security":[{"bearer":[]}],"summary":"Get declaration details by ID","tags":["Fiscal & Declarations"]}},"/companies/{companyId}/declarations/compute-vat":{"post":{"operationId":"DeclarationsController_computeVatDeclaration","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"period","required":true,"in":"query","description":"Period code e.g. 2026-01","schema":{"example":"2026-01","type":"string"}}],"responses":{"201":{"description":"Declaration computed and initialized"}},"security":[{"bearer":[]}],"summary":"Compute and generate monthly VAT return from commercial invoices","tags":["Fiscal & Declarations"]}},"/companies/{companyId}/declarations/{id}/status":{"patch":{"operationId":"DeclarationsController_updateStatus","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Declaration UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeclarationStatusDto"}}}},"responses":{"200":{"description":"Declaration status updated"},"404":{"description":"Declaration not found"}},"security":[{"bearer":[]}],"summary":"Advance declaration workflow status","tags":["Fiscal & Declarations"]}},"/practice/cabinets/{cabinetId}/clients":{"get":{"operationId":"PortfolioController_list","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Client companies the caller may work on in this cabinet, with per-client overdue status","tags":["Practice - Portfolio"]},"post":{"operationId":"PortfolioController_createClient","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortfolioClientDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Create and assign a client company in this cabinet","tags":["Practice - Portfolio"]}},"/practice/cabinets/{cabinetId}/clients/import":{"post":{"operationId":"PortfolioController_importClients","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportPortfolioClientsDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Bulk-create clients from parsed CSV rows (admin only)","tags":["Practice - Portfolio"]}},"/practice/cabinets/{cabinetId}/clients/invitations":{"post":{"operationId":"PortfolioController_inviteClient","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitePortfolioClientDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Invite a client user and create its cabinet company","tags":["Practice - Portfolio"]}},"/practice/cabinets/{cabinetId}/clients/{companyId}/status":{"patch":{"operationId":"PortfolioController_updateClientStatus","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePortfolioClientStatusDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Update a scoped client status in this cabinet","tags":["Practice - Portfolio"]}},"/practice/cabinets/{cabinetId}/documents-inbox":{"get":{"operationId":"PortfolioController_documentsInbox","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Documents needing action (to_classify / to_correct) across this cabinet's clients","tags":["Practice - Portfolio"]}},"/practice/cabinets/{cabinetId}/missions":{"get":{"operationId":"MissionsController_getMissions","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"companyId","required":false,"in":"query","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List all cabinet missions","tags":["Practice - Missions"]},"post":{"operationId":"MissionsController_createMission","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMissionDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Create a new mission","tags":["Practice - Missions"]}},"/practice/cabinets/{cabinetId}/missions/{id}":{"get":{"operationId":"MissionsController_getMission","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get mission details","tags":["Practice - Missions"]},"put":{"operationId":"MissionsController_updateMission","parameters":[{"name":"cabinetId","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/CreateMissionDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Update mission details","tags":["Practice - Missions"]},"patch":{"operationId":"MissionsController_patchMission","parameters":[{"name":"cabinetId","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/UpdateMissionDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Partially update mission details","tags":["Practice - Missions"]},"delete":{"operationId":"MissionsController_deleteMission","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"summary":"Delete (archive) a mission","tags":["Practice - Missions"]}},"/practice/cabinets/{cabinetId}/missions/{id}/status":{"patch":{"operationId":"MissionsController_updateStatus","parameters":[{"name":"cabinetId","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/UpdateMissionStatusDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Update mission status","tags":["Practice - Missions"]}},"/practice/cabinets/{cabinetId}/missions/{id}/checklist":{"get":{"operationId":"MissionsController_getChecklist","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get mission checklist items","tags":["Practice - Missions"]},"post":{"operationId":"MissionsController_addChecklistItem","parameters":[{"name":"cabinetId","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/AddChecklistItemDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Add a checklist item to mission","tags":["Practice - Missions"]}},"/practice/cabinets/{cabinetId}/missions/{id}/checklist/{itemId}":{"patch":{"operationId":"MissionsController_toggleChecklistItem","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"itemId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToggleChecklistItemDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Toggle checklist item completion","tags":["Practice - Missions"]}},"/practice/cabinets/{cabinetId}/tasks":{"get":{"operationId":"TasksController_getTasks","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"companyId","required":false,"in":"query","schema":{"type":"string"}},{"name":"assignedToUserId","required":false,"in":"query","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List cabinet tasks","tags":["Practice - Tasks"]},"post":{"operationId":"TasksController_createTask","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Create a new task","tags":["Practice - Tasks"]}},"/practice/cabinets/{cabinetId}/tasks/print":{"get":{"operationId":"TasksController_printTasks","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"ids","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Tasks"]}},"/practice/cabinets/{cabinetId}/tasks/export":{"get":{"operationId":"TasksController_exportTasks","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"ids","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Practice - Tasks"]}},"/practice/cabinets/{cabinetId}/tasks/{id}":{"get":{"operationId":"TasksController_getTask","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get task details","tags":["Practice - Tasks"]},"patch":{"operationId":"TasksController_updateTask","parameters":[{"name":"cabinetId","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/UpdateTaskDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Update a task","tags":["Practice - Tasks"]},"delete":{"operationId":"TasksController_deleteTask","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Delete (archive) a task","tags":["Practice - Tasks"]}},"/practice/cabinets/{cabinetId}/tasks/{id}/status":{"patch":{"operationId":"TasksController_updateStatus","parameters":[{"name":"cabinetId","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/UpdateTaskStatusDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Update task status","tags":["Practice - Tasks"]}},"/practice/cabinets/{cabinetId}/tasks/{id}/subtasks":{"get":{"operationId":"TasksController_getSubtasks","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get subtasks for a task","tags":["Practice - Tasks"]},"post":{"operationId":"TasksController_createSubtask","parameters":[{"name":"cabinetId","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/CreateSubtaskDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Create a subtask","tags":["Practice - Tasks"]}},"/practice/cabinets/{cabinetId}/tasks/{id}/comments":{"get":{"operationId":"TasksController_getComments","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get task comments","tags":["Practice - Tasks"]},"post":{"operationId":"TasksController_addComment","parameters":[{"name":"cabinetId","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/CreateTaskCommentDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Add a comment to task","tags":["Practice - Tasks"]}},"/practice/cabinets/{cabinetId}/calendar/events":{"get":{"operationId":"CalendarController_getEvents","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"startDate","required":false,"in":"query","schema":{"type":"string"}},{"name":"endDate","required":false,"in":"query","schema":{"type":"string"}},{"name":"companyId","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get calendar events for cabinet","tags":["Practice - Calendar"]},"post":{"operationId":"CalendarController_createEvent","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCalendarEventDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Create a calendar event","tags":["Practice - Calendar"]}},"/practice/cabinets/{cabinetId}/calendar/events/{id}":{"delete":{"operationId":"CalendarController_deleteEvent","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Delete a calendar event","tags":["Practice - Calendar"]}},"/practice/cabinets/{cabinetId}/fees/pricing":{"post":{"operationId":"FeesController_setPricing","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFeePricingDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Configure fee pricing for a client company","tags":["Practice - Fees & Invoicing"]},"get":{"operationId":"FeesController_listPricing","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List fee pricing of every client company","tags":["Practice - Fees & Invoicing"]}},"/practice/cabinets/{cabinetId}/fees/fiscal-config":{"get":{"operationId":"FeesController_fiscalConfig","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Fiscal rules used by cabinet screens (default base fee, retenue rates)","tags":["Practice - Fees & Invoicing"]}},"/practice/cabinets/{cabinetId}/fees/pricing/{companyId}":{"get":{"operationId":"FeesController_getPricing","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get fee pricing for a client company","tags":["Practice - Fees & Invoicing"]}},"/practice/cabinets/{cabinetId}/fees/calculate":{"post":{"operationId":"FeesController_calculateFee","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalculateFeeDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Calculate monthly accounting fee","tags":["Practice - Fees & Invoicing"]}},"/practice/cabinets/{cabinetId}/fees/invoices":{"get":{"operationId":"FeesController_getInvoices","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"companyId","required":false,"in":"query","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List cabinet invoices","tags":["Practice - Fees & Invoicing"]},"post":{"operationId":"FeesController_createInvoice","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCabinetInvoiceDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Create a cabinet invoice","tags":["Practice - Fees & Invoicing"]}},"/practice/cabinets/{cabinetId}/fees/invoices/{id}":{"get":{"operationId":"FeesController_getInvoice","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get cabinet invoice details","tags":["Practice - Fees & Invoicing"]}},"/practice/cabinets/{cabinetId}/fees/invoices/{id}/status":{"patch":{"operationId":"FeesController_updateInvoiceStatus","parameters":[{"name":"cabinetId","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/UpdateCabinetInvoiceStatusDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Update cabinet invoice status","tags":["Practice - Fees & Invoicing"]}},"/practice/cabinets/{cabinetId}/tickets":{"get":{"operationId":"PracticeSupportController_getTickets","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List support tickets raised by the caller","tags":["Practice - Support Tickets"]},"post":{"operationId":"PracticeSupportController_createTicket","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTicketDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Open a new support ticket with JCF","tags":["Practice - Support Tickets"]}},"/practice/cabinets/{cabinetId}/tickets/{id}":{"get":{"operationId":"PracticeSupportController_getTicket","parameters":[{"name":"cabinetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get a support ticket raised by the caller","tags":["Practice - Support Tickets"]}},"/practice/cabinets/{cabinetId}/tickets/{id}/messages":{"post":{"operationId":"PracticeSupportController_addMessage","parameters":[{"name":"cabinetId","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/CreateTicketMessageDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Reply to a support ticket","tags":["Practice - Support Tickets"]}},"/companies/{companyId}/tickets":{"get":{"operationId":"SupportController_getTickets","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","description":"Ticket status","schema":{"type":"string"}}],"responses":{"200":{"description":"List of support tickets"}},"security":[{"bearer":[]}],"summary":"List customer support tickets","tags":["Communications - Support Tickets"]},"post":{"operationId":"SupportController_createTicket","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTicketDto"}}}},"responses":{"201":{"description":"Ticket created with generated reference (TCK-XXXXX)"}},"security":[{"bearer":[]}],"summary":"Open a new support ticket","tags":["Communications - Support Tickets"]}},"/companies/{companyId}/tickets/{id}":{"get":{"operationId":"SupportController_getTicket","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Ticket UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Ticket details and messages"},"404":{"description":"Ticket not found"}},"security":[{"bearer":[]}],"summary":"Get support ticket details with message history","tags":["Communications - Support Tickets"]}},"/companies/{companyId}/tickets/{id}/messages":{"post":{"operationId":"SupportController_addMessage","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Ticket UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTicketMessageDto"}}}},"responses":{"201":{"description":"Ticket message appended"}},"security":[{"bearer":[]}],"summary":"Append a reply message to support ticket","tags":["Communications - Support Tickets"]}},"/companies/{companyId}/tickets/{id}/close":{"post":{"operationId":"SupportController_closeTicket","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"Ticket UUID","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Close a customer support ticket","tags":["Communications - Support Tickets"]}},"/companies/{companyId}/signatures":{"post":{"operationId":"SignatureController_create","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCompanySignatureDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Documents & Vault"]}},"/companies/{companyId}/messages/threads":{"get":{"operationId":"MessagingController_getThreads","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"enum":["open","closed"],"type":"string"}}],"responses":{"200":{"description":"List of message threads"}},"security":[{"bearer":[]}],"summary":"List message threads for company","tags":["Communications - Messaging"]},"post":{"operationId":"MessagingController_createThread","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateThreadDto"}}}},"responses":{"201":{"description":"Message thread created with initial message"}},"security":[{"bearer":[]}],"summary":"Create a new message thread","tags":["Communications - Messaging"]}},"/companies/{companyId}/messages/threads/{threadId}":{"get":{"operationId":"MessagingController_getThread","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"threadId","required":true,"in":"path","description":"Thread UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Thread details"},"404":{"description":"Thread not found"}},"security":[{"bearer":[]}],"summary":"Get thread details by ID","tags":["Communications - Messaging"]}},"/companies/{companyId}/messages/threads/{threadId}/messages":{"get":{"operationId":"MessagingController_getMessages","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"threadId","required":true,"in":"path","description":"Thread UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Chronological list of messages"}},"security":[{"bearer":[]}],"summary":"List all messages inside a thread","tags":["Communications - Messaging"]},"post":{"operationId":"MessagingController_sendMessage","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}},{"name":"threadId","required":true,"in":"path","description":"Thread UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageDto"}}}},"responses":{"201":{"description":"Message posted"}},"security":[{"bearer":[]}],"summary":"Post a reply message in a thread","tags":["Communications - Messaging"]}},"/companies/{companyId}/messages/stream/token":{"post":{"operationId":"MessagingController_getStreamToken","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"responses":{"201":{"description":"GetStream token and public API key"}},"security":[{"bearer":[]}],"summary":"Obtain GetStream authentication token for currently logged-in user","tags":["Communications - Messaging"]}},"/companies/{companyId}/messages/stream/channel":{"post":{"operationId":"MessagingController_getStreamCompanyChannel","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company UUID","schema":{"type":"string"}}],"responses":{"201":{"description":"Stream channel details and token"}},"security":[{"bearer":[]}],"summary":"Provision or retrieve GetStream channel for company client & accountant","tags":["Communications - Messaging"]}},"/realtime/token":{"post":{"operationId":"RealtimeController_token","parameters":[],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Stream token for the signed-in user (live notifications and messages)","tags":["Communications - Realtime"]}},"/billing/plans":{"get":{"operationId":"PlansController_getPlans","parameters":[{"name":"audience","required":false,"in":"query","schema":{"enum":["company","cabinet"],"type":"string"}},{"name":"includeInactive","required":false,"in":"query","description":"Admin-only: also return deactivated plans (default false).","schema":{"type":"boolean"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List available SaaS subscription plans","tags":["Billing - Plans"]},"post":{"operationId":"PlansController_createPlan","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePlanDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Create a new subscription plan","tags":["Billing - Plans"]}},"/billing/plans/{id}":{"get":{"operationId":"PlansController_getPlan","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get subscription plan by ID","tags":["Billing - Plans"]},"patch":{"operationId":"PlansController_updatePlan","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePlanDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Update an existing subscription plan","tags":["Billing - Plans"]},"delete":{"operationId":"PlansController_deletePlan","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Deactivate a subscription plan","tags":["Billing - Plans"]}},"/companies/{companyId}/employees":{"get":{"operationId":"PayrollController_employees","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List employees","tags":["Payroll"]},"post":{"operationId":"PayrollController_createEmployee","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEmployeeDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Payroll"]}},"/companies/{companyId}/employees/{id}":{"get":{"operationId":"PayrollController_employee","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Payroll"]},"patch":{"operationId":"PayrollController_updateEmployee","parameters":[{"name":"companyId","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/UpdateEmployeeDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Payroll"]},"delete":{"operationId":"PayrollController_deleteEmployee","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Delete an employee file that never entered payroll","tags":["Payroll"]}},"/companies/{companyId}/employees/{id}/exit":{"post":{"operationId":"PayrollController_exitEmployee","parameters":[{"name":"companyId","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/ExitEmployeeDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Declare an employee exit","tags":["Payroll"]}},"/companies/{companyId}/payroll/settings":{"get":{"operationId":"PayrollController_settings","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Statutory rates used by the payroll computation","tags":["Payroll"]}},"/companies/{companyId}/payroll/items":{"get":{"operationId":"PayrollController_payrollItems","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"kind","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List bonuses and in-kind benefits","tags":["Payroll"]},"post":{"operationId":"PayrollController_createPayrollItem","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePayrollItemDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Payroll"]}},"/companies/{companyId}/payroll/items/{id}":{"patch":{"operationId":"PayrollController_updatePayrollItem","parameters":[{"name":"companyId","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/UpdatePayrollItemDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Payroll"]},"delete":{"operationId":"PayrollController_deletePayrollItem","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Payroll"]}},"/companies/{companyId}/payslips":{"get":{"operationId":"PayrollController_payslips","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"period","required":true,"in":"query","schema":{"type":"string"}},{"name":"employeeId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Payroll"]}},"/companies/{companyId}/payslips/run":{"post":{"operationId":"PayrollController_run","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPayrollDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Compute the payslips of a period","tags":["Payroll"]}},"/companies/{companyId}/payslips/{id}/pay":{"post":{"operationId":"PayrollController_pay","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Payroll"]}},"/companies/{companyId}/cnss/declarations":{"get":{"operationId":"PayrollController_declarations","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Payroll"]},"post":{"operationId":"PayrollController_createDeclaration","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCnssDeclarationDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Build the CNSS declaration of a period from its payslips","tags":["Payroll"]}},"/companies/{companyId}/cnss/declarations/{id}":{"patch":{"operationId":"PayrollController_updateDeclaration","parameters":[{"name":"companyId","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/UpdateCnssDeclarationDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Payroll"]}},"/companies/{companyId}/cnss/state":{"get":{"operationId":"PayrollController_state","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"period","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Payroll"]}}},"info":{"title":"JCF Platform API","description":"Tunisian Accounting, Fiscal, and Tenancy ERP API Specification","version":"1.0","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http","name":"JWT","description":"Enter JWT token","in":"header"}},"schemas":{"CreateAccountantDto":{"type":"object","properties":{}},"UpdateAccountantDto":{"type":"object","properties":{}},"AssignAccountantClientsDto":{"type":"object","properties":{}},"AddAccountantCabinetDto":{"type":"object","properties":{}},"SaveCabinetDto":{"type":"object","properties":{"name":{"type":"string","description":"Cabinet legal or trade name"},"matriculeFiscal":{"type":"string","description":"Matricule fiscal / tax id"},"legalForm":{"type":"string"},"rneNumber":{"type":"string"},"addressLine":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"managerName":{"type":"string"},"status":{"type":"string","enum":["active","invited","suspended","archived"]}},"required":["name","matriculeFiscal","status"]},"AssignCabinetAccountantsDto":{"type":"object","properties":{}},"CreateCompanyAdminDto":{"type":"object","properties":{"name":{"type":"string","description":"Company legal or trade name"},"matriculeFiscal":{"type":"string","description":"Matricule fiscal / tax id"},"cnssNumber":{"type":"string","description":"CNSS number / social registration number"},"legalForm":{"type":"string","description":"Legal form (SARL, SUARL, SA, etc.)"},"rneNumber":{"type":"string","description":"RNE registry number"},"phone":{"type":"string","description":"Phone number"}},"required":["name","matriculeFiscal"]},"UpdateCompanyAdminDto":{"type":"object","properties":{"name":{"type":"string","description":"Company legal or trade name"},"matriculeFiscal":{"type":"string","description":"Matricule fiscal / tax id"},"cnssNumber":{"type":"string","description":"CNSS number / social registration number"},"legalForm":{"type":"string","description":"Legal form (SARL, SUARL, SA, etc.)"},"rneNumber":{"type":"string","description":"RNE registry number"},"phone":{"type":"string","description":"Phone number"}}},"AssignCompanyAccountantDto":{"type":"object","properties":{}},"AssignCompanyFirmDto":{"type":"object","properties":{"cabinetId":{"type":"object","description":"Accounting firm (cabinet) UUID - omit/null to unassign"}}},"AssignCompanyPlanDto":{"type":"object","properties":{"plan":{"type":"string","description":"Active company plan label"},"billingCycle":{"type":"string","enum":["monthly","quarterly","yearly"]}},"required":["plan"]},"UpdateCompanyAdminStatusDto":{"type":"object","properties":{"status":{"type":"string","description":"Tenant lifecycle status","enum":["onboarding","active","suspended","archived"],"example":"active"}},"required":["status"]},"RequestCompanyDocumentsDto":{"type":"object","properties":{"documents":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string"}},"note":{"type":"string","maxLength":1000}},"required":["documents"]},"CreateSelfServiceCabinetDto":{"type":"object","properties":{"name":{"type":"string","description":"Cabinet legal or trade name"},"matriculeFiscal":{"type":"string","description":"Matricule fiscal / tax id"},"legalForm":{"type":"string"},"rneNumber":{"type":"string"},"addressLine":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"managerName":{"type":"string"}},"required":["name","matriculeFiscal"]},"RegisterDto":{"type":"object","properties":{}},"VerifyEmailDto":{"type":"object","properties":{}},"ForgotPasswordDto":{"type":"object","properties":{}},"ResetPasswordDto":{"type":"object","properties":{}},"LoginDto":{"type":"object","properties":{}},"RefreshDto":{"type":"object","properties":{}},"SetLocaleDto":{"type":"object","properties":{}},"ChangePasswordDto":{"type":"object","properties":{}},"TtnInvoiceDto":{"type":"object","properties":{}},"TejCertificateDto":{"type":"object","properties":{}},"SendOtpDto":{"type":"object","properties":{}},"KonnectPaymentInitDto":{"type":"object","properties":{}},"CreateClientRequestDto":{"type":"object","properties":{"companyId":{"type":"string","example":"a0000000-0000-0000-0000-000000000001"},"type":{"type":"string","example":"document_request"},"subject":{"type":"string","example":"Merci de fournir la facture fournisseur F-2026-0088"},"amount":{"type":"number"},"docDate":{"type":"string","example":"2026-01-20"},"period":{"type":"string","example":"2026-01"},"isDocumentRequest":{"type":"boolean","default":true},"priority":{"type":"string","example":"high"},"deadline":{"type":"string","example":"2026-02-10"},"assignedToUserId":{"type":"string"}},"required":["companyId","type","subject"]},"UpdateClientRequestDto":{"type":"object","properties":{"companyId":{"type":"string","example":"a0000000-0000-0000-0000-000000000001"},"type":{"type":"string","example":"document_request"},"subject":{"type":"string","example":"Merci de fournir la facture fournisseur F-2026-0088"},"amount":{"type":"number"},"docDate":{"type":"string","example":"2026-01-20"},"period":{"type":"string","example":"2026-01"},"isDocumentRequest":{"type":"boolean","default":true},"priority":{"type":"string","example":"high"},"deadline":{"type":"string","example":"2026-02-10"},"assignedToUserId":{"type":"string"},"status":{"type":"string","enum":["draft","sent","viewed","awaiting_response","response_received","to_verify","processed","closed","reminder","cancelled"]}}},"UpdateClientRequestStatusDto":{"type":"object","properties":{"status":{"type":"string","enum":["draft","sent","viewed","awaiting_response","response_received","to_verify","processed","closed","reminder","cancelled"]}},"required":["status"]},"CreateClientRequestCommentDto":{"type":"object","properties":{"body":{"type":"string","maxLength":5000}},"required":["body"]},"AttachClientRequestDocumentDto":{"type":"object","properties":{"documentId":{"type":"string","description":"Company-owned document UUID"}},"required":["documentId"]},"AssistantQuestionDto":{"type":"object","properties":{}},"AssistantChatDto":{"type":"object","properties":{}},"FeedbackDto":{"type":"object","properties":{}},"ReviewDocumentDto":{"type":"object","properties":{}},"CreateSignatureDto":{"type":"object","properties":{}},"CreateThreadDto":{"type":"object","properties":{"subject":{"type":"string","description":"Thread subject or title","example":"Demande de justificatif fiscal TVA"},"contextType":{"type":"string","description":"Business context type (e.g. declaration, invoice, general)","example":"declaration"},"contextId":{"type":"string","description":"Linked context entity UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"},"initialMessage":{"type":"string","description":"Initial message body","example":"Pouvez-vous nous fournir la quittance de paiement ?"}},"required":["subject","contextType","initialMessage"]},"PostMessageDto":{"type":"object","properties":{}},"ConvertMessageDto":{"type":"object","properties":{}},"ReminderRuleDto":{"type":"object","properties":{}},"SetActiveDto":{"type":"object","properties":{}},"InviteTeamMemberDto":{"type":"object","properties":{}},"UpdateRolePermissionsDto":{"type":"object","properties":{}},"AbsenceDto":{"type":"object","properties":{}},"ChangeMemberRoleDto":{"type":"object","properties":{}},"AssignClientDto":{"type":"object","properties":{}},"UpdateCabinetDto":{"type":"object","properties":{}},"UpdateProfileDto":{"type":"object","properties":{}},"SetPreferencesDto":{"type":"object","properties":{}},"OperationalSettingsDto":{"type":"object","properties":{}},"PresignDto":{"type":"object","properties":{}},"CreateLibraryDocumentDto":{"type":"object","properties":{}},"UpdateLibraryDocumentDto":{"type":"object","properties":{}},"FavoriteDto":{"type":"object","properties":{}},"CommentDto":{"type":"object","properties":{}},"AddVersionDto":{"type":"object","properties":{}},"FolderDto":{"type":"object","properties":{}},"PresignUploadDto":{"type":"object","properties":{"fileName":{"type":"string","description":"Original file name","example":"facture_mars_2026.pdf"},"contentType":{"type":"string","description":"MIME type of the file","example":"application/pdf"},"zone":{"type":"string","description":"Destination storage zone","enum":["operational","vault"],"default":"vault"}},"required":["fileName","contentType"]},"AddDocumentVersionDto":{"type":"object","properties":{"fileName":{"type":"string","description":"File name of the new version"},"storageKey":{"type":"string","description":"Storage key returned by presign-upload"},"mimeType":{"type":"string","description":"MIME type"},"sizeBytes":{"type":"number","description":"File size in bytes"},"sha256Hex":{"type":"string","description":"SHA-256 of the file content (hex)"},"note":{"type":"string","description":"Why the file was replaced"}},"required":["fileName","storageKey"]},"CreateDocumentDto":{"type":"object","properties":{"fileName":{"type":"string","description":"Original file name","example":"contrat_bail_2026.pdf"},"storageKey":{"type":"string","description":"Storage object key (the Cloudinary public id, without the environment folder)","example":"vault/2026/03/contrat_bail_2026.pdf"},"mimeType":{"type":"string","description":"MIME type","example":"application/pdf","default":"application/octet-stream"},"sizeBytes":{"type":"number","description":"File size in bytes","example":1048576},"zone":{"type":"string","description":"Storage zone","enum":["operational","vault"],"example":"vault"},"category":{"type":"string","description":"Document category","example":"contracts"},"docType":{"type":"string","description":"Specific doc type (invoice, contract, id_card)","example":"contract"},"period":{"type":"string","description":"Fiscal period association (YYYY-MM)","example":"2026-03"},"sha256Hex":{"type":"string","description":"SHA-256 hexadecimal hash string for verification","example":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}},"required":["fileName","storageKey","zone"]},"UpdateDocumentDto":{"type":"object","properties":{"category":{"type":"string","description":"Document category","example":"contracts"},"docType":{"type":"string","description":"Specific doc type","example":"contract"},"period":{"type":"string","description":"Fiscal period association","example":"2026-03"},"status":{"type":"string","description":"Document processing status","enum":["to_classify","processing","filed","to_correct"],"example":"filed"}}},"CreateRoleDto":{"type":"object","properties":{}},"UpdateRoleDto":{"type":"object","properties":{}},"RoleMembersDto":{"type":"object","properties":{}},"InviteMemberDto":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string"},"role":{"type":"string"},"jobTitle":{"type":"string"}},"required":["name","email","role"]},"UpdateMemberDto":{"type":"object","properties":{"status":{"type":"string","enum":["active","suspended"]}},"required":["status"]},"TemplateDto":{"type":"object","properties":{}},"UpdateTemplateDto":{"type":"object","properties":{}},"CreateFiscalRuleDto":{"type":"object","properties":{}},"NewVersionDto":{"type":"object","properties":{}},"VersionStatusDto":{"type":"object","properties":{}},"PresignFiscalAttachmentDto":{"type":"object","properties":{}},"ConfirmFiscalAttachmentDto":{"type":"object","properties":{}},"SettingsDto":{"type":"object","properties":{}},"BrandLogoUploadDto":{"type":"object","properties":{}},"BrandLogoConfirmDto":{"type":"object","properties":{}},"IntegrationDto":{"type":"object","properties":{}},"TaskEnabledDto":{"type":"object","properties":{}},"PreferencesDto":{"type":"object","properties":{}},"PasswordDto":{"type":"object","properties":{}},"NotificationPrefsDto":{"type":"object","properties":{}},"AudienceDto":{"type":"object","properties":{}},"AnnouncementDto":{"type":"object","properties":{}},"CampaignDto":{"type":"object","properties":{}},"EmailTemplateDto":{"type":"object","properties":{}},"SendNotificationDto":{"type":"object","properties":{}},"TicketUpdateDto":{"type":"object","properties":{}},"TicketMessageDto":{"type":"object","properties":{}},"AgentDto":{"type":"object","properties":{}},"UpdateAgentDto":{"type":"object","properties":{}},"AgentStatusDto":{"type":"object","properties":{}},"PlanDto":{"type":"object","properties":{}},"CabinetDto":{"type":"object","properties":{}},"AssignAccountantsDto":{"type":"object","properties":{}},"DocumentMetaDto":{"type":"object","properties":{}},"NoteDto":{"type":"object","properties":{}},"ExpenseDto":{"type":"object","properties":{}},"AskDto":{"type":"object","properties":{}},"CreateWarehouseDto":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"UpdateWarehouseDto":{"type":"object","properties":{"name":{"type":"string"},"active":{"type":"boolean"}}},"CreateStockMovementDto":{"type":"object","properties":{"articleId":{"type":"string"},"warehouseId":{"type":"string"},"type":{"type":"string","enum":["in","out","adjustment","transfer"]},"quantity":{"type":"number"},"toWarehouseId":{"type":"string","description":"Required for a transfer"}},"required":["articleId","warehouseId","type","quantity"]},"CreateCreditNoteDto":{"type":"object","properties":{"invoiceId":{"type":"string"},"reason":{"type":"string"},"type":{"type":"string","enum":["total","partial"]},"amountHt":{"type":"number","description":"HT amount, required for a partial credit note"},"date":{"type":"string"}},"required":["invoiceId","reason","type","date"]},"CreatePurchaseCreditNoteDto":{"type":"object","properties":{"purchaseInvoiceId":{"type":"string"},"amountTtc":{"type":"number"},"amountTva":{"type":"number","description":"Exact VAT share; defaults to the invoice VAT ratio"},"date":{"type":"string"}},"required":["purchaseInvoiceId","amountTtc","date"]},"CreateBankTransactionDto":{"type":"object","properties":{"treasuryAccountId":{"type":"string"},"date":{"type":"string"},"label":{"type":"string"},"type":{"type":"string","enum":["customer_receipt","supplier_payment","bank_movement","tax_payment","withholding","bank_fee","unidentified"]},"counterparty":{"type":"string"},"amountIn":{"type":"number"},"amountOut":{"type":"number"}},"required":["treasuryAccountId","date","label","type"]},"ImportBankStatementCsvDto":{"type":"object","properties":{"treasuryAccountId":{"type":"string"},"fileName":{"type":"string","maxLength":200},"content":{"type":"string","description":"UTF-8 CSV content; maximum 2 MB.","maxLength":2000000}},"required":["treasuryAccountId","fileName","content"]},"UpdateBankTransactionDto":{"type":"object","properties":{"status":{"type":"string","enum":["reconciled","to_identify","evidence_required","under_review"]},"documentId":{"type":"object","description":"Company-owned evidence document UUID","nullable":true}}},"CreateCalendarEventDto":{"type":"object","properties":{"date":{"type":"string","example":"2026-02-15"},"time":{"type":"string","example":"10:00"},"title":{"type":"string","example":"Date limite dépôt déclaration mensuelle TVA janvier"},"type":{"type":"string","example":"fiscal_deadline"},"companyId":{"type":"string"},"source":{"type":"string","enum":["auto","manual"],"default":"manual"},"linkedEntityType":{"type":"string"},"linkedEntityId":{"type":"string"},"collaboratorUserIds":{"type":"array","items":{"type":"string"}}},"required":["date","title"]},"AskAssistantDto":{"type":"object","properties":{"question":{"type":"string"}},"required":["question"]},"InviteAccountantDto":{"type":"object","properties":{"matriculeFiscal":{"type":"string","description":"Cabinet's matricule fiscal"},"email":{"type":"string","description":"Email of the cabinet or of one of its accountants"},"external":{"type":"boolean","description":"The cabinet is unknown to JCF (« Autre »): allow creating an `invited` placeholder cabinet instead of rejecting the invite"}}},"RespondLinkDto":{"type":"object","properties":{"status":{"type":"string","enum":["accepted","rejected","revoked"]}},"required":["status"]},"GenerateTejDto":{"type":"object","properties":{"purchaseInvoiceId":{"type":"string"},"categoryCode":{"type":"string","enum":["01","02","03","04","05","06"]},"ratePercent":{"type":"number"},"issueDate":{"type":"string"}},"required":["purchaseInvoiceId","categoryCode","issueDate"]},"UpdateTejStatusDto":{"type":"object","properties":{"status":{"type":"string","enum":["validated","cancelled"]}},"required":["status"]},"ComputeDeclarationDto":{"type":"object","properties":{"type":{"type":"string","enum":["withholding","is","advance_payment","employer_declaration"]},"period":{"type":"string","example":"2026-07"}},"required":["type","period"]},"RequestCorrectionDto":{"type":"object","properties":{"topic":{"type":"string"}},"required":["topic"]},"UpdateTaskDto":{"type":"object","properties":{"title":{"type":"string","example":"Rapprochement bancaire janvier"},"description":{"type":"string"},"category":{"type":"string","example":"comptabilite"},"priority":{"type":"string","enum":["low","medium","high","urgent"],"default":"medium"},"companyId":{"type":"string"},"assignedToUserId":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"deadline":{"type":"string","example":"2026-02-15"},"missionId":{"type":"string"},"linkedEntityType":{"type":"string"},"linkedEntityId":{"type":"string"},"status":{"type":"string","enum":["new","waiting","in_progress","waiting_client","waiting_documents","in_review","ready_to_validate","approved","rejected","done","cancelled","overdue"]},"progress":{"type":"number","example":100},"validatedComment":{"type":"string"}}},"AnswerDocumentRequestDto":{"type":"object","properties":{"documentId":{"type":"string"}}},"ConvertSalesDto":{"type":"object","properties":{"kind":{"type":"string","enum":["invoice","order","delivery_note","exit_note"]}},"required":["kind"]},"OrderLineDto":{"type":"object","properties":{"label":{"type":"string"},"quantity":{"type":"number"},"unitPrice":{"type":"number"},"tvaRate":{"type":"number"}},"required":["label","quantity","unitPrice","tvaRate"]},"CreateSupplierOrderDto":{"type":"object","properties":{"supplierId":{"type":"string"},"issueDate":{"type":"string"},"reference":{"type":"string"},"projectRef":{"type":"string"},"priceMode":{"type":"string","enum":["ht","ttc"]},"discount":{"type":"number"},"lines":{"type":"array","items":{"$ref":"#/components/schemas/OrderLineDto"}}},"required":["supplierId","issueDate","priceMode","lines"]},"OrderStatusDto":{"type":"object","properties":{"status":{"type":"string","enum":["validated","sent","cancelled"]}},"required":["status"]},"CreateReceiptNoteDto":{"type":"object","properties":{"supplierOrderId":{"type":"string"},"date":{"type":"string"}},"required":["supplierOrderId","date"]},"StartSubscriptionCheckoutDto":{"type":"object","properties":{"planId":{"type":"string"},"billingCycle":{"type":"string","enum":["monthly","quarterly","yearly"]},"channel":{"type":"string","enum":["card","bank_transfer"]}},"required":["planId","billingCycle"]},"SandboxPaymentSettlementDto":{"type":"object","properties":{"status":{"type":"string","enum":["captured","failed"]}},"required":["status"]},"UpdateSettingsDto":{"type":"object","properties":{"locale":{"type":"string","enum":["fr","en","ar"]},"dateFormat":{"type":"string","enum":["dmy","mdy","ymd"]},"density":{"type":"string","enum":["compact","comfortable"]},"phone":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"photoDocumentId":{"type":"object","nullable":true},"jobTitle":{"type":"string"},"companyId":{"type":"string"}}},"UpdateNotificationPreferenceDto":{"type":"object","properties":{"type":{"type":"string"},"channel":{"type":"string","enum":["in_app","email","sms","push"]},"enabled":{"type":"boolean"}},"required":["type","channel","enabled"]},"PresignAvatarUploadDto":{"type":"object","properties":{"fileName":{"type":"string"},"contentType":{"type":"string"}},"required":["fileName","contentType"]},"ConfirmAvatarUploadDto":{"type":"object","properties":{"storageKey":{"type":"string"},"fileName":{"type":"string"},"mimeType":{"type":"string"},"sizeBytes":{"type":"number"}},"required":["storageKey","fileName"]},"RespondCabinetInviteDto":{"type":"object","properties":{"status":{"type":"string","enum":["accepted","rejected"]}},"required":["status"]},"SubscribeDto":{"type":"object","properties":{"subscriberType":{"type":"string","enum":["company","cabinet"],"default":"company"},"subscriberId":{"type":"string"},"planId":{"type":"string"},"billingCycle":{"type":"string","enum":["monthly","quarterly","yearly"],"default":"monthly"}},"required":["subscriberType","subscriberId","planId","billingCycle"]},"ConsumeAiCreditDto":{"type":"object","properties":{"subscriberType":{"type":"string","enum":["company","cabinet"],"default":"company"},"subscriberId":{"type":"string"},"actionKind":{"type":"string","enum":["assistant_question","invoice_explanation","document_analysis","financial_summary"],"example":"document_analysis"},"requestId":{"type":"string","example":"req-2026-001"},"userId":{"type":"string"}},"required":["subscriberType","subscriberId","actionKind","requestId","userId"]},"TopUpAiCreditDto":{"type":"object","properties":{"subscriberType":{"type":"string","enum":["company","cabinet"],"default":"company"},"subscriberId":{"type":"string"},"credits":{"type":"number","example":50}},"required":["subscriberType","subscriberId","credits"]},"SubmitKycDto":{"type":"object","properties":{"riskLevel":{"type":"string","description":"Estimated risk level","enum":["low","medium","high"],"example":"low","default":"low"},"sector":{"type":"string","description":"Business sector classification","example":"Ingénierie & Informatique"},"notes":{"type":"string","description":"Submission notes for KYC officer","example":"Dossier complet CIN gérant + Statuts RNE."}}},"KycDecisionDto":{"type":"object","properties":{"status":{"type":"string","description":"Compliance decision status","enum":["compliant","to_complete","rejected","suspended"],"example":"compliant"},"reason":{"type":"string","description":"Review decision rationale","example":"Pièces d’identité et registre de commerce conformes."}},"required":["status","reason"]},"CreateCompanyDto":{"type":"object","properties":{}},"UpdateCompanyDto":{"type":"object","properties":{"name":{"type":"string","description":"Company legal or trade name","example":"Société JCF S.A."},"legalForm":{"type":"string","description":"Legal form (SARL, SUARL, SA, etc.)","example":"SARL"},"activityType":{"type":"string","description":"Activity type description","example":"Conseil en technologies"},"sector":{"type":"string","description":"Sector of activity","example":"IT & Software"},"governorate":{"type":"string","description":"Governorate / Province in Tunisia","example":"Tunis"},"addressLine":{"type":"string","description":"Street address","example":"Les Berges du Lac 2"},"postalCode":{"type":"string","description":"Postal code","example":"1053"},"city":{"type":"string","description":"City","example":"Tunis"},"phone":{"type":"string","description":"Phone number","example":"+216 71 123 456"},"email":{"type":"string","description":"Official email address","example":"contact@jcf.tn"},"website":{"type":"string","description":"Website URL","example":"https://jcf.tn"},"logoDocumentId":{"type":"string","description":"Uploaded document used as the company logo"}}},"CreateRepresentativeDto":{"type":"object","properties":{"firstName":{"type":"string","description":"First name","example":"Farid"},"lastName":{"type":"string","description":"Last name","example":"Mansour"},"quality":{"type":"string","description":"Title or quality (Gérant, PDG, etc.)","example":"Gérant"},"email":{"type":"string","description":"Representative email","example":"farid@jcf.tn"},"phone":{"type":"string","description":"Representative phone","example":"+216 98 123 456"},"birthDate":{"type":"string","description":"Date of birth (YYYY-MM-DD)","example":"1985-05-12"},"nationality":{"type":"string","description":"Nationality","example":"Tunisienne"},"isPrimary":{"type":"boolean","description":"Whether this is the primary legal representative","example":true,"default":false}},"required":["firstName","lastName"]},"CreateBankAccountDto":{"type":"object","properties":{"bankName":{"type":"string","description":"Bank institution name","example":"BIAT"},"holder":{"type":"string","description":"Account holder legal title","example":"Société JCF SARL"},"ribLast4":{"type":"string","description":"Last 4 digits of RIB","example":"7890"},"currency":{"type":"string","description":"Account currency","example":"TND","default":"TND"},"isPrimary":{"type":"boolean","description":"Whether this is the primary bank account","example":true,"default":false}},"required":["bankName","holder"]},"UpsertFiscalProfileDto":{"type":"object","properties":{"situation":{"type":"string"},"regime":{"type":"string","enum":["forfaitaire","reel_simplifie","reel_normal"]},"tvaSubject":{"type":"boolean"},"tvaRate":{"type":"number"},"tvaPeriodicity":{"type":"string","enum":["monthly","quarterly"]},"primaryActivity":{"type":"string"},"secondaryActivities":{"type":"array","items":{"type":"string"}},"activityCode":{"type":"string"},"startDate":{"type":"string"},"taxNatures":{"type":"array","items":{"type":"string"}}}},"UpsertSocialProfileDto":{"type":"object","properties":{"isEmployer":{"type":"boolean"},"cnssNumber":{"type":"string"},"headcount":{"type":"number"},"fileStatus":{"type":"string","enum":["up_to_date","to_verify"]},"conventionCollective":{"type":"string"}}},"UpdateRepresentativeDto":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"quality":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"birthDate":{"type":"string"},"nationality":{"type":"string"},"idDocumentId":{"type":"string","description":"Uploaded identity document; puts the ID back under verification"},"idDocExpiresAt":{"type":"string"}}},"UpdateBankAccountDto":{"type":"object","properties":{"bankName":{"type":"string"},"holder":{"type":"string"},"ribLast4":{"type":"string"},"currency":{"type":"string"}}},"UpdateLegalDocumentDto":{"type":"object","properties":{"documentId":{"type":"string"},"validUntil":{"type":"string"}},"required":["documentId"]},"CreateChangeRequestDto":{"type":"object","properties":{"field":{"type":"string"},"requestedValue":{"type":"string"},"note":{"type":"string"}},"required":["field"]},"UpdateAccessPolicyDto":{"type":"object","properties":{"force2FA":{"type":"string","enum":["none","sensitive","all"]},"roleMatrix":{"type":"object","description":"role -> module -> allowed actions"},"sessionTimeoutMinutes":{"type":"object","minimum":5,"maximum":1440,"nullable":true}}},"CreateCustomerDto":{"type":"object","properties":{"code":{"type":"string","description":"Customer reference code - auto-generated when omitted","example":"CLI-0001"},"name":{"type":"string","description":"Customer company or person name","example":"Client Alpha SARL"},"email":{"type":"string","description":"Email address","example":"billing@alpha.tn"},"phone":{"type":"string","description":"Phone number","example":"+216 71 222 333"},"matriculeFiscal":{"type":"string","description":"Matricule Fiscal","example":"1234567/A/M/000"},"rneNumber":{"type":"string","description":"RNE registration number","example":"1234567A"},"billingAddress":{"type":"string","description":"Billing address","example":"Avenue Habib Bourguiba, Tunis"},"shippingAddress":{"type":"string","description":"Shipping address","example":"Zone Industrielle Charguia"},"paymentTerms":{"type":"string","description":"Payment terms (e.g. 30 days)","example":"30_days"},"defaultDiscountRate":{"type":"number","description":"Default commercial discount percentage","example":5},"tvaSubject":{"type":"boolean","description":"Whether the customer is subject to TVA","example":true,"default":true},"withholdingSubject":{"type":"boolean","description":"Subject to withholding tax"},"tvaExempt":{"type":"boolean","description":"TVA exempt customer"}},"required":["name","matriculeFiscal"]},"UpdateCustomerDto":{"type":"object","properties":{"name":{"type":"string","description":"Customer name","example":"Client Alpha SARL"},"email":{"type":"string","description":"Email","example":"billing@alpha.tn"},"phone":{"type":"string","description":"Phone","example":"+216 71 222 333"},"matriculeFiscal":{"type":"string","description":"Matricule Fiscal","example":"1234567/A/M/000"},"billingAddress":{"type":"string","description":"Billing address","example":"Avenue Habib Bourguiba"},"paymentTerms":{"type":"string","description":"Payment terms","example":"60_days"},"defaultDiscountRate":{"type":"number","description":"Default discount rate","example":10},"rneNumber":{"type":"string","description":"RNE registration number"},"shippingAddress":{"type":"string","description":"Shipping address"},"tvaSubject":{"type":"boolean","description":"Whether the customer is subject to TVA"},"withholdingSubject":{"type":"boolean","description":"Subject to withholding tax"},"tvaExempt":{"type":"boolean","description":"TVA exempt customer"},"status":{"type":"string","description":"Status","enum":["active","inactive","archived"]}}},"CreateSupplierDto":{"type":"object","properties":{"code":{"type":"string","description":"Supplier reference code","example":"FRS-0001"},"name":{"type":"string","description":"Supplier legal name","example":"Fournisseur Beta SA"},"email":{"type":"string","description":"Email","example":"orders@beta.tn"},"phone":{"type":"string","description":"Phone","example":"+216 71 888 999"},"matriculeFiscal":{"type":"string","description":"Matricule Fiscal","example":"9876543/B/M/000"},"rib":{"type":"string","description":"RIB","example":"08001000123456789012"},"rneNumber":{"type":"string","description":"RNE registration number"},"address":{"type":"string","description":"Postal address"},"paymentTerms":{"type":"string","description":"Payment terms","example":"cash"}},"required":["code","name"]},"UpdateSupplierDto":{"type":"object","properties":{"name":{"type":"string","description":"Supplier name","example":"Fournisseur Beta SA"},"email":{"type":"string","description":"Email","example":"contact@beta.tn"},"phone":{"type":"string","description":"Phone","example":"+216 71 888 999"},"matriculeFiscal":{"type":"string","description":"Matricule Fiscal","example":"9876543/B/M/000"},"rib":{"type":"string","description":"RIB","example":"08001000123456789012"},"rneNumber":{"type":"string","description":"RNE registration number"},"address":{"type":"string","description":"Postal address"},"paymentTerms":{"type":"string","description":"Payment terms","example":"30_days"},"status":{"type":"string","description":"Status","enum":["active","inactive","archived"]}}},"CreateSalesDocumentLineDto":{"type":"object","properties":{"label":{"type":"string","description":"Line item description","example":"Prestation de conseil technique"},"quantity":{"type":"number","description":"Quantity sold","example":2},"unitPrice":{"type":"number","description":"Unit price HT in TND","example":1200},"tvaRate":{"type":"number","description":"TVA rate percentage","enum":[0,7,13,19],"example":19},"discountRate":{"type":"number","description":"Line discount rate percentage","example":5},"articleId":{"type":"string","description":"Linked article UUID if from catalog","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"}},"required":["label","quantity","unitPrice","tvaRate"]},"CreateSalesDocumentDto":{"type":"object","properties":{"kind":{"type":"string","description":"Document kind","enum":["invoice","quote","delivery_note","exit_note","order"],"example":"invoice"},"customerId":{"type":"string","description":"Target customer UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"},"issueDate":{"type":"string","description":"Document issue date (YYYY-MM-DD)","example":"2026-03-01"},"dueDate":{"type":"string","description":"Payment due date (YYYY-MM-DD)","example":"2026-03-31"},"validUntil":{"type":"string","description":"Validity date for quotes (YYYY-MM-DD)","example":"2026-04-01"},"paymentTerms":{"type":"string","description":"Payment terms description","example":"30 jours fin de mois"},"notes":{"type":"string","description":"Public document notes","example":"Merci pour votre confiance."},"withholdingRate":{"type":"number","description":"Withholding tax rate (%) applied to the TTC"},"discountAmount":{"type":"number","description":"Global discount amount (HT)"},"status":{"type":"string","enum":["draft","sent"],"description":"Save as draft or issue right away"},"billingAddress":{"type":"string","description":"Billing address printed on the document"},"documentId":{"type":"string","description":"Attached company document UUID (uploaded via presign)"},"lines":{"description":"Itemized document lines","type":"array","items":{"$ref":"#/components/schemas/CreateSalesDocumentLineDto"}}},"required":["kind","customerId","issueDate","lines"]},"UpdateSalesDocumentStatusDto":{"type":"object","properties":{"status":{"type":"string","description":"Updated document status","enum":["draft","sent","accepted","refused","expired","paid","partially_paid","overdue","cancelled"],"example":"sent"}},"required":["status"]},"ExtractPurchaseDocumentDto":{"type":"object","properties":{"documentId":{"type":"string","description":"Company-owned document UUID to extract"}},"required":["documentId"]},"PurchaseInvoiceLineDto":{"type":"object","properties":{}},"CreatePurchaseInvoiceDto":{"type":"object","properties":{"supplierId":{"type":"string","description":"Supplier UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"},"number":{"type":"string","description":"Supplier invoice reference number","example":"FAC-2026-089"},"issueDate":{"type":"string","description":"Issue date (YYYY-MM-DD)","example":"2026-02-15"},"dueDate":{"type":"string","description":"Payment due date (YYYY-MM-DD)","example":"2026-03-15"},"amountHt":{"type":"number","description":"Total amount HT in TND","example":1500},"amountTva":{"type":"number","description":"Total TVA amount in TND","example":285},"amountTtc":{"type":"number","description":"Total amount TTC in TND","example":1785},"status":{"type":"string","description":"Invoice status","example":"draft","default":"draft"},"lines":{"type":"array","items":{"$ref":"#/components/schemas/PurchaseInvoiceLineDto"}},"paymentTerms":{"type":"string","description":"Payment terms shown on the supplier invoice"},"documentId":{"type":"string","description":"Linked uploaded invoice document UUID"}},"required":["supplierId","number","issueDate","amountHt","amountTva","amountTtc"]},"UpdatePurchaseInvoiceDto":{"type":"object","properties":{"supplierId":{"type":"string","description":"Supplier UUID"},"number":{"type":"string","description":"Supplier invoice reference number"},"issueDate":{"type":"string","description":"Issue date (YYYY-MM-DD)"},"dueDate":{"type":"string","description":"Payment due date (YYYY-MM-DD)"},"amountHt":{"type":"number","description":"Total amount HT in TND"},"amountTva":{"type":"number","description":"Total TVA amount in TND"},"amountTtc":{"type":"number","description":"Total amount TTC in TND"},"status":{"type":"string","description":"Invoice status","example":"draft"},"lines":{"type":"array","items":{"$ref":"#/components/schemas/PurchaseInvoiceLineDto"}},"paymentTerms":{"type":"string"},"documentId":{"type":"string","description":"Linked uploaded invoice document UUID"}}},"CreateArticleDto":{"type":"object","properties":{"sku":{"type":"string","description":"Stock Keeping Unit / Code","example":"ART-001"},"name":{"type":"string","description":"Product or article description","example":"Ordinateur Portable Dell Latitude"},"unit":{"type":"string","description":"Measurement unit","example":"unité"},"unitPrice":{"type":"number","description":"Unit selling price HT in TND","example":2450},"tvaRate":{"type":"number","description":"TVA rate percentage","example":19},"stock":{"type":"number","description":"Initial stock quantity","example":15,"default":0},"warehouseId":{"type":"string","description":"Assigned warehouse UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"}},"required":["sku","name","unitPrice","tvaRate"]},"UpdateArticleDto":{"type":"object","properties":{"sku":{"type":"string","description":"Stock Keeping Unit / Code","example":"ART-001"},"name":{"type":"string","description":"Product or article description","example":"Ordinateur Portable Dell Latitude"},"unit":{"type":"string","description":"Measurement unit","example":"unité"},"unitPrice":{"type":"number","description":"Unit selling price HT in TND","example":2450},"tvaRate":{"type":"number","description":"TVA rate percentage","example":19},"warehouseId":{"type":"string","description":"Assigned warehouse UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"}}},"CreateReceiptDto":{"type":"object","properties":{"reference":{"type":"string","description":"Receipt reference number","example":"ENC-2026-001"},"receiptDate":{"type":"string","description":"Receipt date (YYYY-MM-DD)","example":"2026-03-01"},"customerId":{"type":"string","description":"Paying customer UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"},"paymentMethod":{"type":"string","description":"Payment method","enum":["bank_transfer","cheque","cash","card","draft","direct_debit","other"],"example":"bank_transfer"},"amount":{"type":"number","description":"Received amount in TND","example":3571},"treasuryAccountId":{"type":"string","description":"Destination treasury account UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"},"paymentReference":{"type":"string","description":"External transaction or check number","example":"VIR-998811"},"notes":{"type":"string","description":"Internal notes","example":"Paiement intégral facture FAC-2026-0001"},"valueDate":{"type":"string","description":"Value date (YYYY-MM-DD)"},"invoiceId":{"type":"string","description":"Sales invoice to allocate the receipt to"},"documentId":{"type":"string","description":"Company-owned proof document UUID"}},"required":["reference","receiptDate","customerId","paymentMethod","amount","treasuryAccountId"]},"CancelFinanceOperationDto":{"type":"object","properties":{"reason":{"type":"string"}},"required":["reason"]},"CreateDisbursementDto":{"type":"object","properties":{"reference":{"type":"string","description":"Disbursement reference number","example":"DEC-2026-001"},"date":{"type":"string","description":"Disbursement date (YYYY-MM-DD)","example":"2026-03-05"},"supplierId":{"type":"string","description":"Beneficiary supplier UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"},"kind":{"type":"string","description":"Kind of disbursement","enum":["invoiced","uninvoiced"],"example":"invoiced","default":"invoiced"},"purchaseInvoiceId":{"type":"string","description":"Linked purchase invoice UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"},"paymentMethod":{"type":"string","description":"Payment method","enum":["bank_transfer","cheque","cash","card","draft","direct_debit","other"],"example":"bank_transfer"},"amount":{"type":"number","description":"Disbursed amount in TND","example":952},"treasuryAccountId":{"type":"string","description":"Source treasury account UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"},"status":{"type":"string","enum":["paid","to_pay"],"default":"paid"}},"required":["reference","date","supplierId","paymentMethod","amount","treasuryAccountId"]},"CreateCashMovementDto":{"type":"object","properties":{"treasuryAccountId":{"type":"string"},"operation":{"type":"string","enum":["cash_in","cash_out","deposit_to_bank","withdraw_from_bank","correction"]},"amount":{"type":"number","description":"Positive amount; a correction may be negative"},"label":{"type":"string"},"date":{"type":"string"},"counterpartAccountId":{"type":"string","description":"Bank account on the other side of a deposit/withdrawal"}},"required":["treasuryAccountId","operation","amount"]},"CreateTreasuryAccountDto":{"type":"object","properties":{"kind":{"type":"string","description":"Account type","enum":["bank","cash"],"example":"bank"},"label":{"type":"string","description":"Account label","example":"Compte Courant Principal"},"bankName":{"type":"string","description":"Bank institution name","example":"BIAT"},"currency":{"type":"string","description":"Account currency","example":"TND","default":"TND"},"openingBalance":{"type":"number","description":"Initial or opening balance in TND","example":10000,"default":0},"ibanLast4":{"type":"string","description":"Last 4 characters of the IBAN/RIB"}},"required":["kind"]},"CreateChartAccountDto":{"type":"object","properties":{"code":{"type":"string","description":"Account code according to plan comptable","example":"411000"},"label":{"type":"string","description":"Account label","example":"Clients"},"class":{"type":"number","description":"Account class (1 to 7)","example":4},"type":{"type":"string","description":"Account nature/type","enum":["asset","liability","equity","revenue","expense"],"example":"asset"},"parentId":{"type":"string","description":"Parent account UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"},"isLettrable":{"type":"boolean","description":"Whether this account supports lettrage","example":true,"default":false},"defaultTvaRate":{"type":"number","description":"Default TVA rate percentage","example":19}},"required":["code","label","class","type"]},"CreateJournalDto":{"type":"object","properties":{"code":{"type":"string","description":"Journal code","example":"VT"},"label":{"type":"string","description":"Journal label","example":"Journal des Ventes"},"type":{"type":"string","description":"Journal type","enum":["purchases","sales","bank","cash","misc"],"example":"sales"},"counterpartAccountId":{"type":"string","description":"Default counterpart account UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"}},"required":["code","label","type"]},"CreateEntryLineDto":{"type":"object","properties":{"accountId":{"type":"string","description":"Target chart account UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"},"label":{"type":"string","description":"Line label description","example":"Vente de services"},"debit":{"type":"number","description":"Debit amount in TND","example":1000,"default":0},"credit":{"type":"number","description":"Credit amount in TND","example":0,"default":0},"thirdPartyType":{"type":"string","description":"Auxiliary third party type (customer, supplier)","example":"customer"},"thirdPartyId":{"type":"string","description":"Auxiliary third party UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"}},"required":["accountId","debit","credit"]},"CreateAccountingEntryDto":{"type":"object","properties":{"journalId":{"type":"string","description":"Journal UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"},"periodId":{"type":"string","description":"Accounting period UUID. When omitted, the period covering `date` is resolved or created automatically.","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"},"date":{"type":"string","description":"Entry date (YYYY-MM-DD)","example":"2026-03-01"},"label":{"type":"string","description":"Entry piece label / description","example":"Facture client FAC-2026-0001"},"reference":{"type":"string","description":"Piece reference","example":"FAC-2026-0001"},"lines":{"description":"Balanced entry lines (sum debit must equal sum credit)","type":"array","items":{"$ref":"#/components/schemas/CreateEntryLineDto"}}},"required":["journalId","date","label","lines"]},"TrialBalanceRowDto":{"type":"object","properties":{"accountId":{"type":"string","description":"Account UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"},"accountCode":{"type":"string","description":"Account PGT code","example":"4111"},"accountLabel":{"type":"string","description":"Account label","example":"Clients"},"totalDebit":{"type":"number","description":"Total debit amount","example":1190},"totalCredit":{"type":"number","description":"Total credit amount","example":0},"balance":{"type":"number","description":"Net balance (debit - credit)","example":1190}},"required":["accountId","accountCode","accountLabel","totalDebit","totalCredit","balance"]},"CreateDeclarationDto":{"type":"object","properties":{"type":{"type":"string","description":"Fiscal declaration type","enum":["tva","cnss","is","irpp","withholding","tfp","foprolos","tcl","advance_payment","annual_return","employer_declaration"],"example":"tva"},"period":{"type":"string","description":"Fiscal period (YYYY-MM or YYYY-QX or YYYY)","example":"2026-02"},"periodicity":{"type":"string","description":"Periodicity","enum":["monthly","quarterly","annual"],"example":"monthly"},"dueDate":{"type":"string","description":"Official deadline date (YYYY-MM-DD)","example":"2026-03-28"},"amountDue":{"type":"number","description":"Net amount due in TND","example":570},"priorCredit":{"type":"number","description":"Prior tax credit reportable in TND","example":0},"data":{"type":"object","description":"Detailed fiscal calculation payload","example":{"caTotal":10000,"tvaCollectee":1900,"tvaDeductible":1330}},"assignedToUserId":{"type":"string","description":"Assigned accountant or user UUID","example":"d3b07384-d113-4045-8f43-a6fe0b66b7bb"}},"required":["type","period","periodicity","dueDate"]},"UpdateDeclarationStatusDto":{"type":"object","properties":{"status":{"type":"string","description":"Updated declaration workflow status","enum":["to_prepare","documents_required","in_preparation","ready_for_validation","client_approved","to_transmit","transmitting","submitted","rejected","correction_requested","to_pay","paid","archived"],"example":"submitted"},"receiptNumber":{"type":"string","description":"Official tax receipt or quittance number","example":"REC-TVA-202602-00123"},"paymentReference":{"type":"string","description":"Payment reference or bank receipt number","example":"PAY-BNK-9988"}},"required":["status"]},"CreatePortfolioClientDto":{"type":"object","properties":{}},"ImportPortfolioClientsDto":{"type":"object","properties":{"clients":{"type":"array","items":{"$ref":"#/components/schemas/CreatePortfolioClientDto"}}},"required":["clients"]},"InvitePortfolioClientDto":{"type":"object","properties":{}},"UpdatePortfolioClientDto":{"type":"object","properties":{}},"UpdatePortfolioClientStatusDto":{"type":"object","properties":{"status":{"type":"string","enum":["active","archived"]}},"required":["status"]},"CreateMissionDto":{"type":"object","properties":{"title":{"type":"string","example":"Tenue comptable exercice 2026"},"type":{"type":"string","example":"comptabilite"},"description":{"type":"string"},"notes":{"type":"string"},"companyId":{"type":"string","example":"a0000000-0000-0000-0000-000000000001"},"leadUserId":{"type":"string"},"startDate":{"type":"string","example":"2026-01-01"},"deadline":{"type":"string","example":"2026-12-31"},"priority":{"type":"string","example":"medium"},"budget":{"type":"number","example":2500},"planning":{"type":"object","description":"Wizard planning: fiscalDeadline, estimatedDays, recurrence, reminderDays, autoNotify, urgencyLevel, periodMonth, periodYear"}},"required":["title"]},"UpdateMissionDto":{"type":"object","properties":{"title":{"type":"string","example":"Tenue comptable exercice 2026"},"type":{"type":"string","example":"comptabilite"},"description":{"type":"string"},"notes":{"type":"string"},"companyId":{"type":"string","example":"a0000000-0000-0000-0000-000000000001"},"leadUserId":{"type":"string"},"startDate":{"type":"string","example":"2026-01-01"},"deadline":{"type":"string","example":"2026-12-31"},"priority":{"type":"string","example":"medium"},"budget":{"type":"number","example":2500},"planning":{"type":"object","description":"Wizard planning: fiscalDeadline, estimatedDays, recurrence, reminderDays, autoNotify, urgencyLevel, periodMonth, periodYear"}}},"UpdateMissionStatusDto":{"type":"object","properties":{"status":{"type":"string","enum":["to_start","in_progress","waiting_client","to_review","to_validate","blocked","overdue","done"]},"blockingReason":{"type":"string"},"progress":{"type":"number","example":100},"closureDerogation":{"type":"string","description":"Justification required when forcing a mission to \"done\" with incomplete checklist items."}},"required":["status"]},"AddChecklistItemDto":{"type":"object","properties":{"label":{"type":"string","example":"Collecte des relevés bancaires"},"isRequired":{"type":"boolean","default":true}},"required":["label"]},"ToggleChecklistItemDto":{"type":"object","properties":{"done":{"type":"boolean","example":true}},"required":["done"]},"CreateTaskDto":{"type":"object","properties":{"title":{"type":"string","example":"Rapprochement bancaire janvier"},"description":{"type":"string"},"category":{"type":"string","example":"comptabilite"},"priority":{"type":"string","enum":["low","medium","high","urgent"],"default":"medium"},"companyId":{"type":"string"},"assignedToUserId":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"deadline":{"type":"string","example":"2026-02-15"},"missionId":{"type":"string"},"linkedEntityType":{"type":"string"},"linkedEntityId":{"type":"string"}},"required":["title"]},"UpdateTaskStatusDto":{"type":"object","properties":{"status":{"type":"string","enum":["new","waiting","in_progress","waiting_client","waiting_documents","in_review","ready_to_validate","approved","rejected","done","cancelled","overdue"]},"progress":{"type":"number","example":100},"validatedComment":{"type":"string"}},"required":["status"]},"CreateSubtaskDto":{"type":"object","properties":{"title":{"type":"string","example":"Vérifier ligne débit 411"},"status":{"type":"string","example":"todo"},"assignedTo":{"type":"string"},"deadline":{"type":"string"},"notes":{"type":"string"}},"required":["title"]},"CreateTaskCommentDto":{"type":"object","properties":{"body":{"type":"string","example":"Justificatif reçu du client par email."},"authorUserId":{"type":"string"}},"required":["body","authorUserId"]},"SetFeePricingDto":{"type":"object","properties":{"companyId":{"type":"string","example":"a0000000-0000-0000-0000-000000000001"},"mode":{"type":"string","enum":["monthly_flat","hourly","per_mission"],"default":"monthly_flat"},"baseRate":{"type":"number","example":450},"periodicity":{"type":"string","example":"monthly"},"tvaRate":{"type":"number","example":19},"perEmployeeRate":{"type":"number","example":10},"perDocumentRate":{"type":"number","example":0.5}},"required":["companyId","mode","baseRate","tvaRate"]},"CalculateFeeDto":{"type":"object","properties":{"companyId":{"type":"string","example":"a0000000-0000-0000-0000-000000000001"},"period":{"type":"string","example":"2026-01"},"employeeCount":{"type":"number","example":5},"documentCount":{"type":"number","example":40}},"required":["companyId","period"]},"CabinetInvoiceLineDto":{"type":"object","properties":{"description":{"type":"string","example":"Honoraires comptables - Janvier 2026"},"quantity":{"type":"number","example":1},"unitPrice":{"type":"number","example":450},"tvaRate":{"type":"number","example":19}},"required":["description","quantity","unitPrice","tvaRate"]},"CreateCabinetInvoiceDto":{"type":"object","properties":{"companyId":{"type":"string","example":"a0000000-0000-0000-0000-000000000001"},"issueDate":{"type":"string","example":"2026-01-31"},"dueDate":{"type":"string","example":"2026-02-28"},"feeCalculationId":{"type":"string"},"paymentTerms":{"type":"string","example":"30 jours net"},"notes":{"type":"string"},"lines":{"type":"array","items":{"$ref":"#/components/schemas/CabinetInvoiceLineDto"}}},"required":["companyId","issueDate","lines"]},"UpdateCabinetInvoiceStatusDto":{"type":"object","properties":{"status":{"type":"string","enum":["draft","pending_review","validated","sent","paid","overdue","cancelled"]}},"required":["status"]},"CreateTicketDto":{"type":"object","properties":{"subject":{"type":"string","description":"Support ticket subject","example":"Incident de connexion bancaire BIAT"},"priority":{"type":"string","description":"Ticket urgency priority","enum":["low","medium","high","urgent"],"example":"medium","default":"medium"},"category":{"type":"string","description":"Ticket category","example":"technical","default":"general"},"initialMessage":{"type":"string","description":"Detailed problem description","example":"Le flux bancaire affiche une erreur de token depuis ce matin."}},"required":["subject","initialMessage"]},"CreateTicketMessageDto":{"type":"object","properties":{"body":{"type":"string","description":"Message content","example":"Le problème persiste malgré la réinitialisation du mot de passe."}},"required":["body"]},"CreateCompanySignatureDto":{"type":"object","properties":{}},"SendMessageDto":{"type":"object","properties":{"body":{"type":"string","description":"Message content","example":"Voici la quittance demandée en pièce jointe."},"documentIds":{"description":"Array of attached document UUIDs","example":["d3b07384-d113-4045-8f43-a6fe0b66b7bb"],"type":"array","items":{"type":"string"}}},"required":["body"]},"CreatePlanDto":{"type":"object","properties":{"code":{"type":"string","example":"pro_company"},"label":{"type":"string","example":"Forfait Pro Entreprise"},"audience":{"type":"string","enum":["company","cabinet"],"default":"company"},"priceMonthly":{"type":"number","example":49},"priceYearly":{"type":"number","example":490},"priceQuarterly":{"type":"number","example":20},"monthlyAiCredits":{"type":"number","example":100},"limits":{"type":"object"},"isActive":{"type":"boolean","default":true}},"required":["code","label","audience","priceMonthly","priceYearly","priceQuarterly","monthlyAiCredits"]},"UpdatePlanDto":{"type":"object","properties":{"code":{"type":"string","example":"pro_company"},"label":{"type":"string","example":"Forfait Pro Entreprise"},"audience":{"type":"string","enum":["company","cabinet"]},"priceMonthly":{"type":"number","example":49},"priceYearly":{"type":"number","example":490},"priceQuarterly":{"type":"number","example":20},"monthlyAiCredits":{"type":"number","example":100},"limits":{"type":"object"},"isActive":{"type":"boolean"}}},"EmployeeDocumentDto":{"type":"object","properties":{"type":{"type":"string"},"documentId":{"type":"string"},"fileName":{"type":"string"}},"required":["type","documentId","fileName"]},"EmployeeProfileDto":{"type":"object","properties":{"birthDate":{"type":"string"},"birthPlace":{"type":"string"},"cinIssueDate":{"type":"string"},"gender":{"type":"string","enum":["male","female"]},"nationality":{"type":"string"},"maritalStatus":{"type":"string"},"address":{"type":"string"},"city":{"type":"string"},"postalCode":{"type":"string"},"internalId":{"type":"string"},"category":{"type":"string"},"weeklyHours":{"type":"string"},"trialPeriod":{"type":"string"},"paymentMode":{"type":"string"},"rib":{"type":"string"},"cnssAffiliationDate":{"type":"string"},"cnssRegime":{"type":"string"},"documents":{"type":"array","items":{"$ref":"#/components/schemas/EmployeeDocumentDto"}}}},"CreateEmployeeDto":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"jobTitle":{"type":"string"},"department":{"type":"string"},"contractType":{"type":"string","enum":["cdi","cdd","sivp","karama","apprenticeship"]},"hireDate":{"type":"string"},"contractEndDate":{"type":"string"},"cnssNumber":{"type":"string"},"cin":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string"},"headOfFamily":{"type":"boolean"},"childrenCount":{"type":"number"},"grossSalary":{"type":"number"},"transportAllowance":{"type":"number"},"presenceAllowance":{"type":"number"},"cnssExempt":{"type":"boolean"},"profile":{"$ref":"#/components/schemas/EmployeeProfileDto"}},"required":["firstName","lastName","jobTitle","contractType","hireDate","grossSalary"]},"UpdateEmployeeDto":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"jobTitle":{"type":"string"},"department":{"type":"string"},"contractType":{"type":"string","enum":["cdi","cdd","sivp","karama","apprenticeship"]},"hireDate":{"type":"string"},"contractEndDate":{"type":"string"},"cnssNumber":{"type":"string"},"cin":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string"},"headOfFamily":{"type":"boolean"},"childrenCount":{"type":"number"},"grossSalary":{"type":"number"},"transportAllowance":{"type":"number"},"presenceAllowance":{"type":"number"},"cnssExempt":{"type":"boolean"},"profile":{"$ref":"#/components/schemas/EmployeeProfileDto"},"status":{"type":"string","enum":["active","suspended"]}}},"ExitEmployeeDto":{"type":"object","properties":{"exitDate":{"type":"string"},"reason":{"type":"string"}},"required":["exitDate","reason"]},"CreatePayrollItemDto":{"type":"object","properties":{"employeeId":{"type":"string"},"kind":{"type":"string","enum":["bonus","benefit"]},"label":{"type":"string"},"amount":{"type":"number"},"period":{"type":"string","example":"2026-07","description":"First (or only) period"},"recurring":{"type":"boolean"},"contributory":{"type":"boolean","description":"Benefit subject to CNSS"}},"required":["employeeId","kind","label","amount","period"]},"UpdatePayrollItemDto":{"type":"object","properties":{"employeeId":{"type":"string"},"kind":{"type":"string","enum":["bonus","benefit"]},"label":{"type":"string"},"amount":{"type":"number"},"period":{"type":"string","example":"2026-07","description":"First (or only) period"},"recurring":{"type":"boolean"},"contributory":{"type":"boolean","description":"Benefit subject to CNSS"}}},"RunPayrollDto":{"type":"object","properties":{"period":{"type":"string","example":"2026-07"}},"required":["period"]},"CreateCnssDeclarationDto":{"type":"object","properties":{"period":{"type":"string","example":"2026-07"}},"required":["period"]},"UpdateCnssDeclarationDto":{"type":"object","properties":{"status":{"type":"string","enum":["submitted","paid"]},"reference":{"type":"string"}},"required":["status"]}}}}