openapi: 3.0.3 info: title: 'Gestao de Arquivos API Documentation' description: '' version: 1.0.0 servers: - url: 'https://api.gestao-arquivos.pensou.app.br' tags: - name: ACL description: 'Endpoints for managing roles and permissions.' - name: 'Accounts Payable Receivable' description: 'Endpoints for accounts payable receivable' - name: Authentication description: 'Endpoints for authentication' - name: 'Bank Accounts' description: 'Endpoints for bank accounts' - name: Banks description: 'Endpoints for banks' - name: CEP description: '' - name: 'Cash Flow' description: 'Endpoints for cash flow' - name: 'Cash Session' description: 'Endpoints for cash session' - name: Customers description: 'Endpoints for customers' - name: 'Document Categories' description: 'Endpoints for document categories' - name: Documents description: 'Endpoints for documents' - name: 'Employee Roles' description: 'Endpoints for employee roles' - name: Employees description: 'Endpoints for employees' - name: Endpoints description: '' - name: 'File Versions' description: 'Endpoints for file version management' - name: Files description: 'Endpoints for files' - name: Import description: 'Endpoints for managing NFe imports and product processing.' - name: Notifications description: 'Endpoints for user notifications' - name: 'Permission Groups' description: 'Endpoints for permission groups' - name: 'Product Brands' description: 'Endpoints for product brands' - name: 'Product Families' description: 'Endpoints for product families' - name: Products description: 'Endpoints for products' - name: 'Public Documents' description: 'Public endpoints for shared documents' - name: 'Public Single-Use Links' description: 'Public single-use endpoints for documentables' - name: Responsible description: 'Endpoints for responsible' - name: Sectors description: 'Endpoints for sectors' - name: 'Status Modules' description: 'Endpoints for modules that have status' - name: Statuses description: 'Endpoints for statuses' - name: Suppliers description: 'Endpoints for suppliers' - name: 'System Types' description: 'Endpoints for system types' - name: 'Transaction Categories' description: 'Endpoints for transaction categories' - name: Units description: 'Endpoints for units' - name: Users description: 'Endpoints for users' - name: 'Work Locations' description: 'Endpoints for work locations' - name: Works description: 'Endpoints for works' components: securitySchemes: default: type: http scheme: bearer description: '' security: - default: [] paths: /api/acl/roles: get: summary: List operationId: list description: 'List roles.' parameters: - in: query name: q description: 'Search query.' example: 'Role name' required: false schema: type: string description: 'Search query.' example: 'Role name' nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: quidem display_name: 'Qui commodi incidunt iure odit.' permissions_count: null - id: fa253524-dd6a-3fdb-a788-0cabcf134db7 name: modi display_name: 'Nostrum omnis autem et consequatur aut.' permissions_count: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: quidem display_name: 'Qui commodi incidunt iure odit.' permissions_count: null - id: fa253524-dd6a-3fdb-a788-0cabcf134db7 name: modi display_name: 'Nostrum omnis autem et consequatur aut.' permissions_count: null items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: quidem display_name: type: string example: 'Qui commodi incidunt iure odit.' permissions_count: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - ACL post: summary: Create operationId: create description: 'Create a new role.' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - ACL requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Name. example: 'Example Name' nullable: false display_name: type: string description: 'Display name.' example: 'Example Name' nullable: false permissions: type: array description: 'Permissions *. The uuid of an existing record in the permissions table.' example: - bfc53181-d647-36b2-9080-f9c2b76006f4 items: type: string required: - name - display_name '/api/acl/roles/{id}': put: summary: Update operationId: update description: 'Update a role.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - ACL requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: Name. example: 'Example Name' nullable: false display_name: type: string description: 'Display name.' example: 'Example Name' nullable: false permissions: type: array description: 'Permissions *. The uuid of an existing record in the permissions table.' example: - bfc53181-d647-36b2-9080-f9c2b76006f4 items: type: string get: summary: Show operationId: show description: 'Show a role.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: quidem display_name: 'Qui commodi incidunt iure odit.' permissions_count: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: quidem display_name: type: string example: 'Qui commodi incidunt iure odit.' permissions_count: type: string example: null tags: - ACL parameters: - in: path name: id description: 'The ID of the role.' example: 1 required: true schema: type: integer '/api/acl/roles/{role}/permissions': get: summary: 'Role Permissions' operationId: rolePermissions description: 'List permissions associated with a role.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: null name: quidem display_name: 'Qui commodi incidunt iure odit.' - id: null name: modi display_name: 'Nostrum omnis autem et consequatur aut.' properties: data: type: array example: - id: null name: quidem display_name: 'Qui commodi incidunt iure odit.' - id: null name: modi display_name: 'Nostrum omnis autem et consequatur aut.' items: type: object properties: id: type: string example: null name: type: string example: quidem display_name: type: string example: 'Qui commodi incidunt iure odit.' tags: - ACL parameters: - in: path name: role description: 'The role.' example: 1 required: true schema: type: integer '/api/acl/roles/{role}': delete: summary: Delete operationId: delete description: 'Delete a role.' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - ACL parameters: - in: path name: role description: 'The role.' example: 1 required: true schema: type: integer /api/acl/permissions: get: summary: List operationId: list description: 'List permissions.' parameters: - in: query name: q description: 'Search query.' example: 'Permission name' required: false schema: type: string description: 'Search query.' example: 'Permission name' nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: null name: quia display_name: 'Molestiae reprehenderit nulla deleniti quo qui.' - id: null name: possimus display_name: 'Delectus id facilis unde.' links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: null name: quia display_name: 'Molestiae reprehenderit nulla deleniti quo qui.' - id: null name: possimus display_name: 'Delectus id facilis unde.' items: type: object properties: id: type: string example: null name: type: string example: quia display_name: type: string example: 'Molestiae reprehenderit nulla deleniti quo qui.' links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - ACL post: summary: Create operationId: create description: 'Create a new permission.' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - ACL requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Name. example: 'Example Name' nullable: false display_name: type: string description: 'Display name.' example: 'Example Name' nullable: false required: - name - display_name '/api/acl/permissions/{id}': put: summary: Update operationId: update description: 'Update a permission.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - ACL requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: Name. example: 'Example Name' nullable: false display_name: type: string description: 'Display name.' example: 'Example Name' nullable: false get: summary: Show operationId: show description: 'Show a permission.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: null name: quidem display_name: 'Qui commodi incidunt iure odit.' properties: data: type: object properties: id: type: string example: null name: type: string example: quidem display_name: type: string example: 'Qui commodi incidunt iure odit.' tags: - ACL parameters: - in: path name: id description: 'The ID of the permission.' example: 1 required: true schema: type: integer '/api/acl/permissions/{permission}': delete: summary: Delete operationId: delete description: 'Delete a permission.' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - ACL parameters: - in: path name: permission description: 'The permission.' example: 1 required: true schema: type: integer /api/accounts-payable-receivable/reminders: get: summary: 'List reminders for accounts payable receivable' operationId: listRemindersForAccountsPayableReceivable description: 'List reminders for accounts payable receivable that are about to expire soon' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 type: saída payment_method: cheque amount: 6092.26 due_date: '2025-12-12T03:00:00.000000Z' status: null payment_date: null description: 'Iure odit et et modi ipsum nostrum omnis autem et consequatur aut dolores.' is_recurring: null recurrence_config: null parent_id: null recurrence_order: 1 total_recurrences: null children_count: 0 remaining_recurrences: null has_children: false field1: enim field2: 62 field3: true notes: 'Veniam corporis dolorem mollitia.' created_at: null updated_at: null - id: 0733da06-3f67-3b0d-b923-684c336397e5 type: saída payment_method: boleto amount: 8204.46 due_date: '2025-12-13T03:00:00.000000Z' status: null payment_date: null description: 'Fugit qui repudiandae laboriosam est alias tenetur ratione nemo voluptate.' is_recurring: null recurrence_config: null parent_id: null recurrence_order: 1 total_recurrences: null children_count: 0 remaining_recurrences: null has_children: false field1: accusamus field2: 84 field3: true notes: 'Modi rerum ex repellendus assumenda et tenetur.' created_at: null updated_at: null properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 type: saída payment_method: cheque amount: 6092.26 due_date: '2025-12-12T03:00:00.000000Z' status: null payment_date: null description: 'Iure odit et et modi ipsum nostrum omnis autem et consequatur aut dolores.' is_recurring: null recurrence_config: null parent_id: null recurrence_order: 1 total_recurrences: null children_count: 0 remaining_recurrences: null has_children: false field1: enim field2: 62 field3: true notes: 'Veniam corporis dolorem mollitia.' created_at: null updated_at: null - id: 0733da06-3f67-3b0d-b923-684c336397e5 type: saída payment_method: boleto amount: 8204.46 due_date: '2025-12-13T03:00:00.000000Z' status: null payment_date: null description: 'Fugit qui repudiandae laboriosam est alias tenetur ratione nemo voluptate.' is_recurring: null recurrence_config: null parent_id: null recurrence_order: 1 total_recurrences: null children_count: 0 remaining_recurrences: null has_children: false field1: accusamus field2: 84 field3: true notes: 'Modi rerum ex repellendus assumenda et tenetur.' created_at: null updated_at: null items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 type: type: string example: saída payment_method: type: string example: cheque amount: type: number example: 6092.26 due_date: type: string example: '2025-12-12T03:00:00.000000Z' status: type: string example: null payment_date: type: string example: null description: type: string example: 'Iure odit et et modi ipsum nostrum omnis autem et consequatur aut dolores.' is_recurring: type: string example: null recurrence_config: type: string example: null parent_id: type: string example: null recurrence_order: type: integer example: 1 total_recurrences: type: string example: null children_count: type: integer example: 0 remaining_recurrences: type: string example: null has_children: type: boolean example: false field1: type: string example: enim field2: type: integer example: 62 field3: type: boolean example: true notes: type: string example: 'Veniam corporis dolorem mollitia.' created_at: type: string example: null updated_at: type: string example: null tags: - 'Accounts Payable Receivable' /api/accounts-payable-receivable/reminders/mark-as-read: post: summary: 'Mark reminders as read' operationId: markRemindersAsRead description: 'Mark reminders for accounts payable receivable as read' parameters: - in: query name: items description: 'The uuid of an existing record in the account_payable_receivables table.' example: - architecto required: true schema: type: array description: 'The uuid of an existing record in the account_payable_receivables table.' example: - architecto items: type: string responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Accounts Payable Receivable' /api/accounts-payable-receivable: get: summary: 'List accounts payable receivable' operationId: listAccountsPayableReceivable description: 'List all accounts payable receivable' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: Salary required: false schema: type: string description: 'Search query.' example: Salary nullable: true - in: query name: type description: Type. example: entrada required: false schema: type: string description: Type. example: entrada nullable: true enum: - entrada - saída - in: query name: customers description: 'The uuid of an existing record in the customers table.' example: - architecto required: false schema: type: array description: 'The uuid of an existing record in the customers table.' example: - architecto items: type: string - in: query name: suppliers description: 'The uuid of an existing record in the suppliers table.' example: - architecto required: false schema: type: array description: 'The uuid of an existing record in the suppliers table.' example: - architecto items: type: string - in: query name: statuses description: '' example: - recebido required: false schema: type: array description: '' example: - recebido items: type: string enum: - 'a vencer' - pago - vencido - recebido - cancelado nullable: true - in: query name: payment_method description: 'Payment method.' example: cheque required: false schema: type: string description: 'Payment method.' example: cheque nullable: true enum: - cheque - boleto - outro - in: query name: date_start description: 'Start date. O campo value deve ser uma data válida.' example: '2023-01-01' required: false schema: type: string description: 'Start date. O campo value deve ser uma data válida.' example: '2023-01-01' nullable: true - in: query name: date_end description: 'End date. O campo value deve ser uma data válida.' example: '2023-12-31' required: false schema: type: string description: 'End date. O campo value deve ser uma data válida.' example: '2023-12-31' nullable: true - in: query name: has_children description: 'Filter accounts that have recurring children.' example: false required: false schema: type: boolean description: 'Filter accounts that have recurring children.' example: false nullable: true - in: query name: is_recurring description: 'Filter by recurring status (true: only recurring, false: only non-recurring, null: all).' example: false required: false schema: type: boolean description: 'Filter by recurring status (true: only recurring, false: only non-recurring, null: all).' example: false nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: a4855dc5-0acb-33c3-b921-f4291f719ca0 type: saída payment_method: cheque amount: 5750.1 due_date: '2025-12-26T03:00:00.000000Z' status: null payment_date: null description: 'Sunt nihil accusantium harum mollitia modi deserunt aut.' is_recurring: null recurrence_config: null parent_id: null recurrence_order: 1 total_recurrences: null children_count: 0 remaining_recurrences: null has_children: false field1: ab field2: 49 field3: true notes: 'Iure odit et et modi ipsum nostrum omnis.' created_at: null updated_at: null - id: 59183559-65ff-3076-b8ca-d2d03d26a42a type: entrada payment_method: boleto amount: 8676.17 due_date: '2025-12-22T03:00:00.000000Z' status: null payment_date: null description: 'Quis adipisci molestias fugit deleniti distinctio eum doloremque id aut libero.' is_recurring: null recurrence_config: null parent_id: null recurrence_order: 1 total_recurrences: null children_count: 0 remaining_recurrences: null has_children: false field1: aliquam field2: 75 field3: true notes: 'Mollitia deleniti nemo odit quia officia.' created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: a4855dc5-0acb-33c3-b921-f4291f719ca0 type: saída payment_method: cheque amount: 5750.1 due_date: '2025-12-26T03:00:00.000000Z' status: null payment_date: null description: 'Sunt nihil accusantium harum mollitia modi deserunt aut.' is_recurring: null recurrence_config: null parent_id: null recurrence_order: 1 total_recurrences: null children_count: 0 remaining_recurrences: null has_children: false field1: ab field2: 49 field3: true notes: 'Iure odit et et modi ipsum nostrum omnis.' created_at: null updated_at: null - id: 59183559-65ff-3076-b8ca-d2d03d26a42a type: entrada payment_method: boleto amount: 8676.17 due_date: '2025-12-22T03:00:00.000000Z' status: null payment_date: null description: 'Quis adipisci molestias fugit deleniti distinctio eum doloremque id aut libero.' is_recurring: null recurrence_config: null parent_id: null recurrence_order: 1 total_recurrences: null children_count: 0 remaining_recurrences: null has_children: false field1: aliquam field2: 75 field3: true notes: 'Mollitia deleniti nemo odit quia officia.' created_at: null updated_at: null items: type: object properties: id: type: string example: a4855dc5-0acb-33c3-b921-f4291f719ca0 type: type: string example: saída payment_method: type: string example: cheque amount: type: number example: 5750.1 due_date: type: string example: '2025-12-26T03:00:00.000000Z' status: type: string example: null payment_date: type: string example: null description: type: string example: 'Sunt nihil accusantium harum mollitia modi deserunt aut.' is_recurring: type: string example: null recurrence_config: type: string example: null parent_id: type: string example: null recurrence_order: type: integer example: 1 total_recurrences: type: string example: null children_count: type: integer example: 0 remaining_recurrences: type: string example: null has_children: type: boolean example: false field1: type: string example: ab field2: type: integer example: 49 field3: type: boolean example: true notes: type: string example: 'Iure odit et et modi ipsum nostrum omnis.' created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Accounts Payable Receivable' post: summary: 'Create accounts payable receivable' operationId: createAccountsPayableReceivable description: 'Create a new accounts payable receivable' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Accounts Payable Receivable' requestBody: required: true content: application/json: schema: type: object properties: type: type: string description: Tipo. example: 'Example Type' nullable: false enum: - entrada - saída payment_method: type: string description: 'Forma de pagamento.' example: 'Example Payment method' nullable: false enum: - cheque - boleto - outro due_date: type: string description: 'Data de vencimento. O campo value deve ser uma data válida.' example: '2024-01-01' nullable: false amount: type: number description: Valor. example: 1.0 nullable: false description: type: string description: Descrição. example: 'Example Description' nullable: false supplier_id: type: string description: 'Fornecedor. The uuid of an existing record in the suppliers table.' example: bfc53181-d647-36b2-9080-f9c2b76006f4 nullable: true customer_id: type: string description: 'Cliente. The uuid of an existing record in the customers table.' example: c71cb930-01f3-381c-9172-e1c70e63388f nullable: true status: type: string description: Status. example: 'Example Status' nullable: false enum: - 'a vencer' - pago - vencido - recebido - cancelado custom_fields: type: object description: 'Custom fields.' example: - example1 - example2 nullable: false properties: { } is_recurring: type: boolean description: 'Is recurring.' example: false nullable: false recurrence_config: type: object description: 'Recurrence config.' example: - example1 - example2 nullable: false properties: frequency_type: type: string description: 'Recurrence config frequency type.' example: 'Example Recurrence config frequency type' nullable: false enum: - monthly - weekly - biweekly frequency_value: type: integer description: 'Recurrence config frequency value. O campo value deve ser pelo menos 0. O campo value não pode ser superior a 31.' example: 1 nullable: false end_date: type: string description: 'Recurrence config end date. O campo value deve ser uma data válida. O campo value deve ser uma data posterior a due_date.' example: '2024-01-01' nullable: true max_occurrences: type: integer description: 'Recurrence config max occurrences. O campo value deve ser pelo menos 1.' example: 1 nullable: true generation_days_ahead: type: integer description: 'Recurrence config generation days ahead. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 30.' example: 1 nullable: false required: - type - payment_method - due_date - amount - description '/api/accounts-payable-receivable/{accountPayableReceivable}': get: summary: 'Get accounts payable receivable' operationId: getAccountsPayableReceivable description: 'Get an accounts payable receivable' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 type: saída payment_method: cheque amount: 6092.26 due_date: '2025-12-12T03:00:00.000000Z' status: null payment_date: null description: 'Iure odit et et modi ipsum nostrum omnis autem et consequatur aut dolores.' is_recurring: null recurrence_config: null parent_id: null recurrence_order: 1 total_recurrences: null children_count: 0 remaining_recurrences: null has_children: false field1: enim field2: 62 field3: true notes: 'Veniam corporis dolorem mollitia.' created_at: null updated_at: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 type: type: string example: saída payment_method: type: string example: cheque amount: type: number example: 6092.26 due_date: type: string example: '2025-12-12T03:00:00.000000Z' status: type: string example: null payment_date: type: string example: null description: type: string example: 'Iure odit et et modi ipsum nostrum omnis autem et consequatur aut dolores.' is_recurring: type: string example: null recurrence_config: type: string example: null parent_id: type: string example: null recurrence_order: type: integer example: 1 total_recurrences: type: string example: null children_count: type: integer example: 0 remaining_recurrences: type: string example: null has_children: type: boolean example: false field1: type: string example: enim field2: type: integer example: 62 field3: type: boolean example: true notes: type: string example: 'Veniam corporis dolorem mollitia.' created_at: type: string example: null updated_at: type: string example: null tags: - 'Accounts Payable Receivable' put: summary: 'Update accounts payable receivable' operationId: updateAccountsPayableReceivable description: 'Update an accounts payable receivable' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Accounts Payable Receivable' requestBody: required: false content: application/json: schema: type: object properties: type: type: string description: Type. example: 'Example Type' nullable: false enum: - entrada - saída payment_method: type: string description: 'Payment method.' example: 'Example Payment method' nullable: false enum: - cheque - boleto - outro due_date: type: string description: 'Due date. O campo value deve ser uma data válida.' example: '2024-01-01' nullable: false amount: type: number description: Amount. example: 1.0 nullable: false description: type: string description: Description. example: 'Example Description' nullable: false supplier_id: type: string description: 'Supplier id. The uuid of an existing record in the suppliers table.' example: bfc53181-d647-36b2-9080-f9c2b76006f4 nullable: true customer_id: type: string description: 'Customer id. The uuid of an existing record in the customers table.' example: c71cb930-01f3-381c-9172-e1c70e63388f nullable: true status: type: string description: Status. example: 'Example Status' nullable: false enum: - 'a vencer' - pago - vencido - recebido - cancelado payment_date: type: string description: 'Payment date. O campo value deve ser uma data válida.' example: '2024-01-01' nullable: false custom_fields: type: object description: 'Custom fields.' example: - example1 - example2 nullable: false properties: { } is_recurring: type: boolean description: 'Is recurring.' example: false nullable: false recurrence_config: type: object description: 'Recurrence config.' example: - example1 - example2 nullable: false properties: frequency_type: type: string description: 'Recurrence config frequency type.' example: 'Example Recurrence config frequency type' nullable: false enum: - monthly - weekly - biweekly frequency_value: type: integer description: 'Recurrence config frequency value. O campo value deve ser pelo menos 0. O campo value não pode ser superior a 31.' example: 1 nullable: false end_date: type: string description: 'Recurrence config end date. O campo value deve ser uma data válida. O campo value deve ser uma data posterior a due_date.' example: '2024-01-01' nullable: true max_occurrences: type: integer description: 'Recurrence config max occurrences. O campo value deve ser pelo menos 1.' example: 1 nullable: true generation_days_ahead: type: integer description: 'Recurrence config generation days ahead. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 30.' example: 1 nullable: false delete: summary: 'Delete accounts payable receivable' operationId: deleteAccountsPayableReceivable description: 'Delete an accounts payable receivable' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Accounts Payable Receivable' parameters: - in: path name: accountPayableReceivable description: '' example: architecto required: true schema: type: string /api/auth/login: post: summary: Login operationId: login description: 'Login with email and password' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: token: string properties: token: type: string example: string tags: - Authentication requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: '' example: gbailey@example.net nullable: false password: type: string description: 'User password.' example: password nullable: false required: - email - password security: [] /api/auth/user: get: summary: Me operationId: me description: 'Get the current user' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Miss Pearl Hauck' username: pfritsch email: leo34@example.net ability: - action: read subject: Auth - action: listar subject: padrão roles: [] preferences: [] sectors: [] image: id: null url: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Miss Pearl Hauck' username: type: string example: pfritsch email: type: string example: leo34@example.net ability: type: array example: - action: read subject: Auth - action: listar subject: padrão items: type: object properties: action: type: string example: read subject: type: string example: Auth roles: type: array example: [] preferences: type: array example: [] sectors: type: array example: [] image: type: object properties: id: type: string example: null url: type: string example: null tags: - Authentication put: summary: 'Update Profile' operationId: updateProfile description: 'Update the current user profile' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - Authentication requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: Nome. example: 'Example Name' nullable: false email: type: string description: 'E-mail. O campo value deve ser um endereço de e-mail válido.' example: user@example.com nullable: false username: type: string description: Usuário. example: christian51 nullable: false password: type: string description: Password. example: password123 nullable: false image: type: object description: Imagem. example: - example1 - example2 nullable: false properties: path: type: string description: 'Caminho da imagem. This field is required when image is present.' example: 'Example Image path' nullable: false name: type: string description: 'Nome da imagem.' example: 'Example Name' nullable: true extension: type: string description: 'Extensão da imagem.' example: 'Example Image extension' nullable: true size: type: string description: 'Tamanho da imagem.' example: 'Example Image size' nullable: true sectors: type: array description: 'UUID do setor. The uuid of an existing record in the sectors table.' example: - 3457a2ff-ae91-3fa6-b7ef-d2a3b0cb075b items: type: string roles: type: array description: 'UUID da função. The uuid of an existing record in the roles table.' example: - 3637ab3b-64aa-3e77-a6a7-c306cb6519a5 items: type: string /api/auth/logout: post: summary: Logout operationId: logout description: 'Logout the current user' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - Authentication /api/auth/preferences: get: summary: 'Get user preferences' operationId: getUserPreferences description: 'Get all user preferences' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: theme: dark language: pt-br notifications: email: true sms: false properties: theme: type: string example: dark language: type: string example: pt-br notifications: type: object properties: email: type: boolean example: true sms: type: boolean example: false tags: - Authentication post: summary: 'Set user preference' operationId: setUserPreference description: 'Set or update a user preference' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: 'Preference saved successfully' properties: message: type: string example: 'Preference saved successfully' tags: - Authentication requestBody: required: true content: application/json: schema: type: object properties: key: type: string description: 'O campo value não pode ser superior a 255 caracteres.' example: b nullable: false value: type: object description: '' example: [] nullable: false properties: { } required: - key - value '/api/auth/preferences/{key}': delete: summary: 'Delete user preference' operationId: deleteUserPreference description: 'Delete a specific user preference' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: 'Preference deleted successfully' properties: message: type: string example: 'Preference deleted successfully' tags: - Authentication parameters: - in: path name: key description: '' example: architecto required: true schema: type: string /api/bank-accounts/balance-summary: get: summary: 'Get bank account balance summary' operationId: getBankAccountBalanceSummary description: 'Get the balance summary of all bank accounts' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: totalBalancePositive: number totalBalanceNegative: number totalLimit: number sumLimitAndBalancePositive: number accounts: '*': id: string bank: string balance: number limit: number properties: data: type: object properties: totalBalancePositive: type: string example: number totalBalanceNegative: type: string example: number totalLimit: type: string example: number sumLimitAndBalancePositive: type: string example: number accounts: type: object properties: '*': type: object properties: id: type: string example: string bank: type: string example: string balance: type: string example: number limit: type: string example: number tags: - 'Bank Accounts' /api/bank-accounts: get: summary: 'List bank accounts' operationId: listBankAccounts description: 'List all bank accounts' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: name required: false schema: type: string description: 'Search query.' example: name nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 agency: '0949' account: 2170043-2 type: poupança balance: 4254.04 holder_type: pf alias: iure limit: 1223.92 bank: id: null name: null code: null created_at: null updated_at: null - id: fa253524-dd6a-3fdb-a788-0cabcf134db7 agency: '1627' account: 5913505-2 type: corrente balance: 442.88 holder_type: pf alias: et limit: 4927.89 bank: id: null name: null code: null created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 agency: '0949' account: 2170043-2 type: poupança balance: 4254.04 holder_type: pf alias: iure limit: 1223.92 bank: id: null name: null code: null created_at: null updated_at: null - id: fa253524-dd6a-3fdb-a788-0cabcf134db7 agency: '1627' account: 5913505-2 type: corrente balance: 442.88 holder_type: pf alias: et limit: 4927.89 bank: id: null name: null code: null created_at: null updated_at: null items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 agency: type: string example: '0949' account: type: string example: 2170043-2 type: type: string example: poupança balance: type: number example: 4254.04 holder_type: type: string example: pf alias: type: string example: iure limit: type: number example: 1223.92 bank: type: object properties: id: type: string example: null name: type: string example: null code: type: string example: null created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Bank Accounts' post: summary: 'Create bank account' operationId: createBankAccount description: 'Create a new bank account' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Bank Accounts' requestBody: required: true content: application/json: schema: type: object properties: agency: type: string description: Agency. example: 'Example Agency' nullable: false account: type: string description: Account. example: 2170043-2 nullable: false bank_id: type: string description: 'Bank id. The uuid of an existing record in the banks table.' example: fa253524-dd6a-3fdb-a788-0cabcf134db7 nullable: false type: type: string description: Type. example: 'Example Type' nullable: false enum: - corrente - poupança holder_type: type: string description: 'Holder type.' example: 'Example Holder type' nullable: false enum: - pf - pj alias: type: string description: Alias. example: 'Example Alias' nullable: false balance: type: number description: Balance. example: 1.0 nullable: false limit: type: number description: Limit. example: 1.0 nullable: true required: - agency - account - bank_id - type - holder_type - alias - balance '/api/bank-accounts/{bankAccount}': put: summary: 'Update bank account' operationId: updateBankAccount description: 'Update a bank account' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Bank Accounts' requestBody: required: false content: application/json: schema: type: object properties: agency: type: string description: Agency. example: 'Example Agency' nullable: false account: type: string description: Account. example: 2170043-2 nullable: false bank_id: type: string description: 'Bank id. The uuid of an existing record in the banks table.' example: fa253524-dd6a-3fdb-a788-0cabcf134db7 nullable: false type: type: string description: Type. example: 'Example Type' nullable: false enum: - corrente - poupança holder_type: type: string description: 'Holder type.' example: 'Example Holder type' nullable: false enum: - pf - pj alias: type: string description: Alias. example: 'Example Alias' nullable: true balance: type: number description: Balance. example: 1.0 nullable: false limit: type: number description: Limit. example: 1.0 nullable: true get: summary: 'Show bank account' operationId: showBankAccount description: 'Show a bank account' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 agency: '0949' account: 2170043-2 type: poupança balance: 4254.04 holder_type: pf alias: iure limit: 1223.92 bank: id: null name: null code: null created_at: null updated_at: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 agency: type: string example: '0949' account: type: string example: 2170043-2 type: type: string example: poupança balance: type: number example: 4254.04 holder_type: type: string example: pf alias: type: string example: iure limit: type: number example: 1223.92 bank: type: object properties: id: type: string example: null name: type: string example: null code: type: string example: null created_at: type: string example: null updated_at: type: string example: null tags: - 'Bank Accounts' delete: summary: 'Delete bank account' operationId: deleteBankAccount description: 'Delete a bank account' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Bank Accounts' parameters: - in: path name: bankAccount description: '' example: 16 required: true schema: type: integer /api/banks: get: summary: 'List banks' operationId: listBanks description: 'List all banks' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: 'Permission name' required: false schema: type: string description: 'Search query.' example: 'Permission name' nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Cortês Comercial Ltda.' code: '881' - id: 0a9446d3-4070-3757-8926-67a9d2adbc0e name: 'Urias e Caldeira' code: '744' links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Cortês Comercial Ltda.' code: '881' - id: 0a9446d3-4070-3757-8926-67a9d2adbc0e name: 'Urias e Caldeira' code: '744' items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Cortês Comercial Ltda.' code: type: string example: '881' links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - Banks post: summary: 'Create bank' operationId: createBank description: 'Create a new bank' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Banks requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Name. O campo value não pode ser superior a 255 caracteres.' example: 'Example Name' nullable: false code: type: string description: 'Code. O campo value não pode ser superior a 255 caracteres.' example: 'Example Code' nullable: false required: - name - code '/api/banks/{bank}': put: summary: 'Update bank' operationId: updateBank description: 'Update a bank' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Banks requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'Name. O campo value não pode ser superior a 255 caracteres.' example: 'Example Name' nullable: false code: type: string description: 'Code. O campo value não pode ser superior a 255 caracteres.' example: 'Example Code' nullable: false get: summary: 'Show bank' operationId: showBank description: 'Show a bank' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Cortês Comercial Ltda.' code: '881' properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Cortês Comercial Ltda.' code: type: string example: '881' tags: - Banks delete: summary: 'Delete bank' operationId: deleteBank description: 'Delete a bank' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - Banks parameters: - in: path name: bank description: 'The bank.' example: 1 required: true schema: type: integer '/api/cep/{cep}': get: summary: 'Search CEP' operationId: searchCEP description: 'Search for address information by CEP (Brazilian postal code)' parameters: [] responses: 200: description: '' content: application/json: schema: oneOf: - description: 'CEP found successfully' type: object example: data: cep: '01001000' street: 'Praça da Sé' district: Sé city: 'São Paulo' state: SP complement: 'lado ímpar' ibge: '3550308' ddd: '11' siafi: '7107' properties: data: type: object properties: cep: type: string example: '01001000' street: type: string example: 'Praça da Sé' district: type: string example: Sé city: type: string example: 'São Paulo' state: type: string example: SP complement: type: string example: 'lado ímpar' ibge: type: string example: '3550308' ddd: type: string example: '11' siafi: type: string example: '7107' - description: 'CEP not found' type: object example: data: cep: '99999999' street: null district: null city: null state: null complement: null ibge: null ddd: null siafi: null properties: data: type: object properties: cep: type: string example: '99999999' street: type: string example: null district: type: string example: null city: type: string example: null state: type: string example: null complement: type: string example: null ibge: type: string example: null ddd: type: string example: null siafi: type: string example: null tags: - CEP parameters: - in: path name: cep description: 'CEP to search for' example: '01001000' required: true schema: type: string /api/cash-flows/summary: get: summary: 'Get cash flow summary' operationId: getCashFlowSummary description: 'Get cash flow summary' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: Salary required: false schema: type: string description: 'Search query.' example: Salary nullable: true - in: query name: cash_session description: 'Cash session. The uuid of an existing record in the cash_sessions table.' example: uuid required: false schema: type: string description: 'Cash session. The uuid of an existing record in the cash_sessions table.' example: uuid nullable: true - in: query name: type description: 'Cash flow type.' example: entrada required: false schema: type: string description: 'Cash flow type.' example: entrada nullable: true enum: - entrada - saída - tarifa - depósito - saque - transferência - pagamento - juros - ajuste - in: query name: description description: 'Description .' example: 'Eius et animi quos velit et.' required: false schema: type: string description: 'Description .' example: 'Eius et animi quos velit et.' nullable: false - in: query name: categories description: 'The uuid of an existing record in the transaction_categories table.' example: - architecto required: false schema: type: array description: 'The uuid of an existing record in the transaction_categories table.' example: - architecto items: type: string - in: query name: date_start description: 'Start date. O campo value deve ser uma data válida.' example: '2021-01-01' required: false schema: type: string description: 'Start date. O campo value deve ser uma data válida.' example: '2021-01-01' nullable: true - in: query name: date_end description: 'End date. O campo value deve ser uma data válida.' example: '2021-01-31' required: false schema: type: string description: 'End date. O campo value deve ser uma data válida.' example: '2021-01-31' nullable: true - in: query name: bank_accounts description: 'The uuid of an existing record in the bank_accounts table.' example: - architecto required: false schema: type: array description: 'The uuid of an existing record in the bank_accounts table.' example: - architecto items: type: string - in: query name: customers description: 'The uuid of an existing record in the customers table.' example: - architecto required: false schema: type: array description: 'The uuid of an existing record in the customers table.' example: - architecto items: type: string - in: query name: suppliers description: 'The uuid of an existing record in the suppliers table.' example: - architecto required: false schema: type: array description: 'The uuid of an existing record in the suppliers table.' example: - architecto items: type: string - in: query name: works description: 'The uuid of an existing record in the works table.' example: - architecto required: false schema: type: array description: 'The uuid of an existing record in the works table.' example: - architecto items: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: total_income: number total_expense: number total_fee: number total_balance: number properties: data: type: object properties: total_income: type: string example: number total_expense: type: string example: number total_fee: type: string example: number total_balance: type: string example: number tags: - 'Cash Flow' /api/cash-flows: get: summary: 'List cash flow' operationId: listCashFlow description: 'List all cash flow' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: Salary required: false schema: type: string description: 'Search query.' example: Salary nullable: true - in: query name: cash_session description: 'Cash session. The uuid of an existing record in the cash_sessions table.' example: uuid required: false schema: type: string description: 'Cash session. The uuid of an existing record in the cash_sessions table.' example: uuid nullable: true - in: query name: type description: 'Cash flow type.' example: entrada required: false schema: type: string description: 'Cash flow type.' example: entrada nullable: true enum: - entrada - saída - tarifa - depósito - saque - transferência - pagamento - juros - ajuste - in: query name: description description: 'Description .' example: 'Eius et animi quos velit et.' required: false schema: type: string description: 'Description .' example: 'Eius et animi quos velit et.' nullable: false - in: query name: categories description: 'The uuid of an existing record in the transaction_categories table.' example: - architecto required: false schema: type: array description: 'The uuid of an existing record in the transaction_categories table.' example: - architecto items: type: string - in: query name: date_start description: 'Start date. O campo value deve ser uma data válida.' example: '2021-01-01' required: false schema: type: string description: 'Start date. O campo value deve ser uma data válida.' example: '2021-01-01' nullable: true - in: query name: date_end description: 'End date. O campo value deve ser uma data válida.' example: '2021-01-31' required: false schema: type: string description: 'End date. O campo value deve ser uma data válida.' example: '2021-01-31' nullable: true - in: query name: bank_accounts description: 'The uuid of an existing record in the bank_accounts table.' example: - architecto required: false schema: type: array description: 'The uuid of an existing record in the bank_accounts table.' example: - architecto items: type: string - in: query name: customers description: 'The uuid of an existing record in the customers table.' example: - architecto required: false schema: type: array description: 'The uuid of an existing record in the customers table.' example: - architecto items: type: string - in: query name: suppliers description: 'The uuid of an existing record in the suppliers table.' example: - architecto required: false schema: type: array description: 'The uuid of an existing record in the suppliers table.' example: - architecto items: type: string - in: query name: works description: 'The uuid of an existing record in the works table.' example: - architecto required: false schema: type: array description: 'The uuid of an existing record in the works table.' example: - architecto items: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: - id: a4855dc5-0acb-33c3-b921-f4291f719ca0 type: tarifa amount: -8754.55 description: 'Et fugiat sunt nihil accusantium.' transaction_date: '1990-07-03T03:00:00.000000Z' transaction_category: id: null name: null type: null created_at: null updated_at: null - id: cd1eb1ea-4697-3b9a-9dd0-988044a83af6 type: entrada amount: 6303.26 description: 'Provident perspiciatis quo omnis nostrum aut adipisci quidem.' transaction_date: '2015-01-19T02:00:00.000000Z' transaction_category: id: null name: null type: null created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: a4855dc5-0acb-33c3-b921-f4291f719ca0 type: tarifa amount: -8754.55 description: 'Et fugiat sunt nihil accusantium.' transaction_date: '1990-07-03T03:00:00.000000Z' transaction_category: id: null name: null type: null created_at: null updated_at: null - id: cd1eb1ea-4697-3b9a-9dd0-988044a83af6 type: entrada amount: 6303.26 description: 'Provident perspiciatis quo omnis nostrum aut adipisci quidem.' transaction_date: '2015-01-19T02:00:00.000000Z' transaction_category: id: null name: null type: null created_at: null updated_at: null items: type: object properties: id: type: string example: a4855dc5-0acb-33c3-b921-f4291f719ca0 type: type: string example: tarifa amount: type: number example: -8754.55 description: type: string example: 'Et fugiat sunt nihil accusantium.' transaction_date: type: string example: '1990-07-03T03:00:00.000000Z' transaction_category: type: object properties: id: type: string example: null name: type: string example: null type: type: string example: null created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Cash Flow' post: summary: 'Create cash flow' operationId: createCashFlow description: 'Create a new cash flow' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Cash Flow' requestBody: required: true content: application/json: schema: type: object properties: type: type: string description: Type. example: 'Example Type' nullable: false enum: - entrada - saída - tarifa - depósito - saque - transferência - pagamento - juros - ajuste cash_session_id: type: string description: 'Cash session id. The uuid of an existing record in the cash_sessions table.' example: bfc53181-d647-36b2-9080-f9c2b76006f4 nullable: false transaction_category_id: type: string description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.' example: fa253524-dd6a-3fdb-a788-0cabcf134db7 nullable: false bank_account_id: type: string description: 'Bank account id. The uuid of an existing record in the bank_accounts table.' example: 45d1e1f4-e38d-3971-92c7-6d933b3b67fa nullable: true customer_id: type: string description: 'Customer id. The uuid of an existing record in the customers table.' example: 8c352249-2535-3e45-8de4-d6620458a778 nullable: true supplier_id: type: string description: 'Supplier id. The uuid of an existing record in the suppliers table.' example: 61733391-0acb-3d07-80fa-6a559e639b13 nullable: true work_id: type: string description: 'Work id. The uuid of an existing record in the works table.' example: 338aa13c-ee9b-3c59-9dad-eeca56f85ba2 nullable: true amount: type: number description: Amount. example: 1.0 nullable: false description: type: string description: Description. example: 'Example Description' nullable: true transaction_date: type: string description: 'Transaction date. O campo value deve ser uma data válida.' example: '2024-01-01' nullable: false required: - type - cash_session_id - amount - transaction_date '/api/cash-flows/{cashFlow}': get: summary: 'Show cash flow' operationId: showCashFlow description: 'Show a cash flow' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 type: transferência amount: -6620.31 description: 'Commodi incidunt iure odit.' transaction_date: '1977-08-15T03:00:00.000000Z' transaction_category: id: null name: null type: null created_at: null updated_at: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 type: type: string example: transferência amount: type: number example: -6620.31 description: type: string example: 'Commodi incidunt iure odit.' transaction_date: type: string example: '1977-08-15T03:00:00.000000Z' transaction_category: type: object properties: id: type: string example: null name: type: string example: null type: type: string example: null created_at: type: string example: null updated_at: type: string example: null tags: - 'Cash Flow' put: summary: 'Update cash flow' operationId: updateCashFlow description: 'Update a cash flow' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Cash Flow' requestBody: required: false content: application/json: schema: type: object properties: type: type: string description: Type. example: 'Example Type' nullable: false enum: - entrada - saída - tarifa - depósito - saque - transferência - pagamento - juros - ajuste cash_session_id: type: string description: 'Cash session id. The uuid of an existing record in the cash_sessions table.' example: bfc53181-d647-36b2-9080-f9c2b76006f4 nullable: false transaction_category_id: type: string description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.' example: fa253524-dd6a-3fdb-a788-0cabcf134db7 nullable: false bank_account_id: type: string description: 'Bank account id. The uuid of an existing record in the bank_accounts table.' example: 45d1e1f4-e38d-3971-92c7-6d933b3b67fa nullable: true customer_id: type: string description: 'Customer id. The uuid of an existing record in the customers table.' example: 8c352249-2535-3e45-8de4-d6620458a778 nullable: true supplier_id: type: string description: 'Supplier id. The uuid of an existing record in the suppliers table.' example: 61733391-0acb-3d07-80fa-6a559e639b13 nullable: true work_id: type: string description: 'Work id. The uuid of an existing record in the works table.' example: 338aa13c-ee9b-3c59-9dad-eeca56f85ba2 nullable: true amount: type: number description: Amount. example: 1.0 nullable: false description: type: string description: Description. example: 'Example Description' nullable: true transaction_date: type: string description: 'Transaction date. O campo value deve ser uma data válida.' example: '2024-01-01' nullable: false delete: summary: 'Delete cash flow' operationId: deleteCashFlow description: 'Delete a cash flow' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Cash Flow' parameters: - in: path name: cashFlow description: '' example: 16 required: true schema: type: integer /api/cash-sessions: get: summary: 'List cash session' operationId: listCashSession description: 'List all cash session' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 opened_by: null opened_at: '2023-05-03T11:09:18.000000Z' closed_by: null closed_at: '2020-05-23T06:21:42.000000Z' opening_balance: 3669.26 closing_balance: 6620.31 total_income: 0 total_expense: 0 total_balance: 0 status: Fechado created_at: '1983-05-17T03:07:42.000000Z' updated_at: '1990-06-23T05:58:38.000000Z' - id: fa253524-dd6a-3fdb-a788-0cabcf134db7 opened_by: null opened_at: '2019-04-12T10:54:57.000000Z' closed_by: null closed_at: '2009-07-27T04:40:06.000000Z' opening_balance: 8853.25 closing_balance: 275.37 total_income: 0 total_expense: 0 total_balance: 0 status: Fechado created_at: '2003-07-15T08:01:07.000000Z' updated_at: '2019-08-30T13:55:51.000000Z' links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 opened_by: null opened_at: '2023-05-03T11:09:18.000000Z' closed_by: null closed_at: '2020-05-23T06:21:42.000000Z' opening_balance: 3669.26 closing_balance: 6620.31 total_income: 0 total_expense: 0 total_balance: 0 status: Fechado created_at: '1983-05-17T03:07:42.000000Z' updated_at: '1990-06-23T05:58:38.000000Z' - id: fa253524-dd6a-3fdb-a788-0cabcf134db7 opened_by: null opened_at: '2019-04-12T10:54:57.000000Z' closed_by: null closed_at: '2009-07-27T04:40:06.000000Z' opening_balance: 8853.25 closing_balance: 275.37 total_income: 0 total_expense: 0 total_balance: 0 status: Fechado created_at: '2003-07-15T08:01:07.000000Z' updated_at: '2019-08-30T13:55:51.000000Z' items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 opened_by: type: string example: null opened_at: type: string example: '2023-05-03T11:09:18.000000Z' closed_by: type: string example: null closed_at: type: string example: '2020-05-23T06:21:42.000000Z' opening_balance: type: number example: 3669.26 closing_balance: type: number example: 6620.31 total_income: type: integer example: 0 total_expense: type: integer example: 0 total_balance: type: integer example: 0 status: type: string example: Fechado created_at: type: string example: '1983-05-17T03:07:42.000000Z' updated_at: type: string example: '1990-06-23T05:58:38.000000Z' links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Cash Session' /api/cash-sessions/open: post: summary: 'Open cash session' operationId: openCashSession description: 'Open a new cash session' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 opened_by: null opened_at: '2023-05-03T11:09:18.000000Z' closed_by: null closed_at: '2020-05-23T06:21:42.000000Z' opening_balance: 3669.26 closing_balance: 6620.31 total_income: 0 total_expense: 0 total_balance: 0 status: Fechado created_at: '1983-05-17T03:07:42.000000Z' updated_at: '1990-06-23T05:58:38.000000Z' properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 opened_by: type: string example: null opened_at: type: string example: '2023-05-03T11:09:18.000000Z' closed_by: type: string example: null closed_at: type: string example: '2020-05-23T06:21:42.000000Z' opening_balance: type: number example: 3669.26 closing_balance: type: number example: 6620.31 total_income: type: integer example: 0 total_expense: type: integer example: 0 total_balance: type: integer example: 0 status: type: string example: Fechado created_at: type: string example: '1983-05-17T03:07:42.000000Z' updated_at: type: string example: '1990-06-23T05:58:38.000000Z' tags: - 'Cash Session' '/api/cash-sessions/close/{uuid}': post: summary: 'Close cash session' operationId: closeCashSession description: 'Close a cash session' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Cash Session' parameters: - in: path name: uuid description: '' example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed required: true schema: type: string '/api/cash-sessions/{uuid}': get: summary: 'Show cash session' operationId: showCashSession description: 'Show a cash session' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 opened_by: null opened_at: '2023-05-03T11:09:18.000000Z' closed_by: null closed_at: '2020-05-23T06:21:42.000000Z' opening_balance: 3669.26 closing_balance: 6620.31 total_income: 0 total_expense: 0 total_balance: 0 status: Fechado created_at: '1983-05-17T03:07:42.000000Z' updated_at: '1990-06-23T05:58:38.000000Z' properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 opened_by: type: string example: null opened_at: type: string example: '2023-05-03T11:09:18.000000Z' closed_by: type: string example: null closed_at: type: string example: '2020-05-23T06:21:42.000000Z' opening_balance: type: number example: 3669.26 closing_balance: type: number example: 6620.31 total_income: type: integer example: 0 total_expense: type: integer example: 0 total_balance: type: integer example: 0 status: type: string example: Fechado created_at: type: string example: '1983-05-17T03:07:42.000000Z' updated_at: type: string example: '1990-06-23T05:58:38.000000Z' tags: - 'Cash Session' delete: summary: 'Delete cash session' operationId: deleteCashSession description: 'Delete a cash session' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Cash Session' parameters: - in: path name: uuid description: '' example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed required: true schema: type: integer /api/customers: get: summary: 'List customers' operationId: listCustomers description: 'List all customers' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: 'Customer name' required: false schema: type: string description: 'Search query.' example: 'Customer name' nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' email: yohanna44@example.org phone: '(94) 94866-9606' document: 790.915.066-01 type: pj responsible: 'Sra. Katherine de Arruda' image: id: null url: null address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null documents_count: 0 - id: c71cb930-01f3-381c-9172-e1c70e63388f name: 'Liz Sueli Pacheco Neto' email: jrosa@example.net phone: '(49) 3996-5127' document: 869.737.788-95 type: pf responsible: 'Sr. Rodrigo Gil' image: id: null url: null address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null documents_count: 0 links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' email: yohanna44@example.org phone: '(94) 94866-9606' document: 790.915.066-01 type: pj responsible: 'Sra. Katherine de Arruda' image: id: null url: null address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null documents_count: 0 - id: c71cb930-01f3-381c-9172-e1c70e63388f name: 'Liz Sueli Pacheco Neto' email: jrosa@example.net phone: '(49) 3996-5127' document: 869.737.788-95 type: pf responsible: 'Sr. Rodrigo Gil' image: id: null url: null address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null documents_count: 0 items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' email: type: string example: yohanna44@example.org phone: type: string example: '(94) 94866-9606' document: type: string example: 790.915.066-01 type: type: string example: pj responsible: type: string example: 'Sra. Katherine de Arruda' image: type: object properties: id: type: string example: null url: type: string example: null address: type: object properties: street: type: string example: null number: type: string example: null complement: type: string example: null neighborhood: type: string example: null city: type: string example: null state: type: string example: null zip_code: type: string example: null documents_count: type: integer example: 0 links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - Customers post: summary: 'Create customer' operationId: createCustomer description: 'Create a new customer' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Customers requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Nome. example: 'Example Name' nullable: false email: type: string description: 'E-mail. O campo value deve ser um endereço de e-mail válido.' example: user@example.com nullable: false phone: type: string description: Telefone. example: '(11) 99999-9999' nullable: false document: type: string description: CPF/CNPJ. example: 'Example Document' nullable: false type: type: string description: Tipo. example: 'Example Type' nullable: false enum: - pf - pj responsible: type: string description: Responsável. example: 'Example Responsible' nullable: true image: type: object description: Imagem. example: - example1 - example2 nullable: false properties: path: type: string description: 'Caminho da imagem. This field is required when image is present.' example: 'Example Image path' nullable: false name: type: string description: 'Nome da imagem.' example: 'Example Name' nullable: true extension: type: string description: 'Extensão da imagem.' example: 'Example Image extension' nullable: true size: type: string description: 'Tamanho da imagem.' example: 'Example Image size' nullable: true address: type: object description: Endereço. example: - example1 - example2 nullable: true properties: street: type: string description: 'Rua. This field is required when address is present.' example: 'Example Address street' nullable: false number: type: string description: 'Número. This field is required when address is present.' example: 'Example Address number' nullable: false complement: type: string description: Complemento. example: 'Example Address complement' nullable: true neighborhood: type: string description: 'Bairro. This field is required when address is present.' example: 'Example Address neighborhood' nullable: false city: type: string description: 'Cidade. This field is required when address is present.' example: 'Example Address city' nullable: false state: type: string description: 'Estado. This field is required when address is present.' example: 'Example Address state' nullable: false zip_code: type: string description: 'CEP. This field is required when address is present.' example: 'Example Address zip code' nullable: false required: - name - document - type '/api/customers/{id}': get: summary: 'Get customer' operationId: getCustomer description: 'Get a customer' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' email: yohanna44@example.org phone: '(94) 94866-9606' document: 790.915.066-01 type: pj responsible: 'Sra. Katherine de Arruda' image: id: null url: null address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null documents_count: 0 properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' email: type: string example: yohanna44@example.org phone: type: string example: '(94) 94866-9606' document: type: string example: 790.915.066-01 type: type: string example: pj responsible: type: string example: 'Sra. Katherine de Arruda' image: type: object properties: id: type: string example: null url: type: string example: null address: type: object properties: street: type: string example: null number: type: string example: null complement: type: string example: null neighborhood: type: string example: null city: type: string example: null state: type: string example: null zip_code: type: string example: null documents_count: type: integer example: 0 tags: - Customers put: summary: 'Update customer' operationId: updateCustomer description: 'Update a customer' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Customers requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: Nome. example: 'Example Name' nullable: false email: type: string description: 'E-mail. O campo value deve ser um endereço de e-mail válido.' example: user@example.com nullable: false phone: type: string description: Telefone. example: '(11) 99999-9999' nullable: false document: type: string description: CPF/CNPJ. example: 'Example Document' nullable: false type: type: string description: Tipo. example: 'Example Type' nullable: false enum: - pf - pj responsible: type: string description: Responsável. example: 'Example Responsible' nullable: true image: type: object description: Imagem. example: - example1 - example2 nullable: false properties: path: type: string description: 'Caminho da imagem. This field is required when image is present.' example: 'Example Image path' nullable: false name: type: string description: 'Nome da imagem.' example: 'Example Name' nullable: true extension: type: string description: 'Extensão da imagem.' example: 'Example Image extension' nullable: true size: type: string description: 'Tamanho da imagem.' example: 'Example Image size' nullable: true address: type: object description: Endereço. example: - example1 - example2 nullable: true properties: street: type: string description: 'Rua. This field is required when address is present.' example: 'Example Address street' nullable: false number: type: string description: 'Número. This field is required when address is present.' example: 'Example Address number' nullable: false complement: type: string description: Complemento. example: 'Example Address complement' nullable: true neighborhood: type: string description: 'Bairro. This field is required when address is present.' example: 'Example Address neighborhood' nullable: false city: type: string description: 'Cidade. This field is required when address is present.' example: 'Example Address city' nullable: false state: type: string description: 'Estado. This field is required when address is present.' example: 'Example Address state' nullable: false zip_code: type: string description: 'CEP. This field is required when address is present.' example: 'Example Address zip code' nullable: false parameters: - in: path name: id description: 'The ID of the customer.' example: 1 required: true schema: type: integer - in: path name: customer description: 'Customer ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/customers/{customer}': delete: summary: 'Delete customer' operationId: deleteCustomer description: 'Delete a customer' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - Customers parameters: - in: path name: customer description: 'Customer ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string /api/document-categories: get: summary: 'List document categories' operationId: listDocumentCategories description: 'List all document categories' parameters: - in: query name: q description: 'Search query.' example: Contracts required: false schema: type: string description: 'Search query.' example: Contracts nullable: true - in: query name: module description: 'Filter by module.' example: employee required: false schema: type: string description: 'Filter by module.' example: employee nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' description: 'Et et modi ipsum nostrum. Autem et consequatur aut dolores enim non facere tempora.' module: document - id: 690f4e21-70e0-3516-8ade-d6c679dacb9e name: 'Juliano Cléber Dias Filho' description: 'Fugit qui repudiandae laboriosam est alias. Ratione nemo voluptate accusamus ut et recusandae modi rerum. Repellendus assumenda et tenetur ab reiciendis.' module: document links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' description: 'Et et modi ipsum nostrum. Autem et consequatur aut dolores enim non facere tempora.' module: document - id: 690f4e21-70e0-3516-8ade-d6c679dacb9e name: 'Juliano Cléber Dias Filho' description: 'Fugit qui repudiandae laboriosam est alias. Ratione nemo voluptate accusamus ut et recusandae modi rerum. Repellendus assumenda et tenetur ab reiciendis.' module: document items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' description: type: string example: 'Et et modi ipsum nostrum. Autem et consequatur aut dolores enim non facere tempora.' module: type: string example: document links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Document Categories' post: summary: 'Create document category' operationId: createDocumentCategory description: 'Create a new document category' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Document Categories' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Name. example: 'Example Name' nullable: false description: type: string description: Description. example: 'Example Description' nullable: false module: type: string description: Module. example: 'Example Module' nullable: false required: - name - module '/api/document-categories/{documentCategory}': get: summary: 'Show document category' operationId: showDocumentCategory description: 'Show a document category' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' description: 'Et et modi ipsum nostrum. Autem et consequatur aut dolores enim non facere tempora.' module: document properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' description: type: string example: 'Et et modi ipsum nostrum. Autem et consequatur aut dolores enim non facere tempora.' module: type: string example: document tags: - 'Document Categories' put: summary: 'Update document category' operationId: updateDocumentCategory description: 'Update a document category' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Document Categories' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Name. example: 'Example Name' nullable: false description: type: string description: Description. example: 'Example Description' nullable: false module: type: string description: Module. example: 'Example Module' nullable: false required: - name - module delete: summary: 'Delete document category' operationId: deleteDocumentCategory description: 'Delete a document category' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - 'Document Categories' parameters: - in: path name: documentCategory description: 'Document category UUID' example: architecto required: true schema: type: string /api/documents: get: summary: 'List documents' operationId: listDocuments description: 'List all documents' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: '' example: 'Document name' required: false schema: type: string description: '' example: 'Document name' nullable: true - in: query name: categories description: 'The uuid of an existing record in the document_categories table.' example: - architecto required: false schema: type: array description: 'The uuid of an existing record in the document_categories table.' example: - architecto items: type: string - in: query name: documentable_type description: 'Type of the related documentable entity. The type of an existing record in the documentables table.' example: architecto required: false schema: type: string description: 'Type of the related documentable entity. The type of an existing record in the documentables table.' example: architecto nullable: true - in: query name: customers description: 'The uuid of an existing record in the customers table.' example: - architecto required: false schema: type: array description: 'The uuid of an existing record in the customers table.' example: - architecto items: type: string - in: query name: suppliers description: 'The uuid of an existing record in the suppliers table.' example: - architecto required: false schema: type: array description: 'The uuid of an existing record in the suppliers table.' example: - architecto items: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: - id: a4855dc5-0acb-33c3-b921-f4291f719ca0 name: 'Sr. Emerson Torres Ferminiano' file: id: null url: null extension: null current_version: null created_at: null share_token: null is_shared_active: null created_at: null updated_at: null - id: 5707ca55-f609-3528-be8b-1baeaee1567e name: 'Srta. Rayane Galindo' file: id: null url: null extension: null current_version: null created_at: null share_token: null is_shared_active: null created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: a4855dc5-0acb-33c3-b921-f4291f719ca0 name: 'Sr. Emerson Torres Ferminiano' file: id: null url: null extension: null current_version: null created_at: null share_token: null is_shared_active: null created_at: null updated_at: null - id: 5707ca55-f609-3528-be8b-1baeaee1567e name: 'Srta. Rayane Galindo' file: id: null url: null extension: null current_version: null created_at: null share_token: null is_shared_active: null created_at: null updated_at: null items: type: object properties: id: type: string example: a4855dc5-0acb-33c3-b921-f4291f719ca0 name: type: string example: 'Sr. Emerson Torres Ferminiano' file: type: object properties: id: type: string example: null url: type: string example: null extension: type: string example: null current_version: type: string example: null created_at: type: string example: null share_token: type: string example: null is_shared_active: type: string example: null created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - Documents post: summary: 'Create document' operationId: createDocument description: 'Create a new document' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Documents requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Nome. example: 'Example Name' nullable: false category_id: type: string description: 'Categoria. The uuid of an existing record in the document_categories table.' example: bfc53181-d647-36b2-9080-f9c2b76006f4 nullable: false file: type: object description: Arquivo. example: - example1 - example2 nullable: false properties: path: type: string description: 'Caminho do arquivo. This field is required when file is present.' example: 'Example File path' nullable: false name: type: string description: 'Nome do arquivo.' example: 'Example Name' nullable: false extension: type: string description: 'Extensão do arquivo.' example: 'Example File extension' nullable: false size: type: string description: 'Tamanho do arquivo.' example: 'Example File size' nullable: false required: - name - extension - size documentable_type: type: string description: 'Tipo de relacionado do documento.' example: 'Example Documentable type' nullable: false enum: - customer - work - work_location - supplier - employee documentable_id: type: string description: 'Relacionado do documento.' example: 'Example Documentable id' nullable: false required: - name - category_id - file - documentable_type - documentable_id '/api/documents/{id}': get: summary: 'Get document' operationId: getDocument description: 'Get a document' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' file: id: null url: null extension: null current_version: null created_at: null share_token: null is_shared_active: null created_at: null updated_at: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' file: type: object properties: id: type: string example: null url: type: string example: null extension: type: string example: null current_version: type: string example: null created_at: type: string example: null share_token: type: string example: null is_shared_active: type: string example: null created_at: type: string example: null updated_at: type: string example: null tags: - Documents put: summary: 'Update document' operationId: updateDocument description: 'Update a document' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Documents requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: Nome. example: 'Example Name' nullable: false category_id: type: string description: 'Categoria. The uuid of an existing record in the document_categories table.' example: bfc53181-d647-36b2-9080-f9c2b76006f4 nullable: false file: type: object description: Arquivo. example: - example1 - example2 nullable: false properties: path: type: string description: 'Caminho do arquivo. This field is required when file is present.' example: 'Example File path' nullable: false name: type: string description: 'Nome do arquivo.' example: 'Example Name' nullable: false extension: type: string description: 'Extensão do arquivo.' example: 'Example File extension' nullable: false size: type: string description: 'Tamanho do arquivo.' example: 'Example File size' nullable: false documentable_type: type: string description: 'Documentable type.' example: 'Example Documentable type' nullable: false enum: - customer - work - work_location - supplier - employee documentable_id: type: string description: 'Documentable id.' example: 'Example Documentable id' nullable: false parameters: - in: path name: id description: 'The ID of the document.' example: 1 required: true schema: type: integer - in: path name: document description: 'Document ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/documents/{document}': delete: summary: 'Delete document' operationId: deleteDocument description: 'Delete a document' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - Documents parameters: - in: path name: document description: 'Document ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/documents/{document}/share': post: summary: 'Generate share link' operationId: generateShareLink description: 'Generate a unique share link for a document' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string token: string properties: message: type: string example: string token: type: string example: string tags: - Documents delete: summary: 'Revoke share link' operationId: revokeShareLink description: 'Revoke the share link for a document' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Documents parameters: - in: path name: document description: 'Document ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string /api/employee-roles: get: summary: 'List employee roles' operationId: listEmployeeRoles description: 'List all employee roles' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: Manager required: false schema: type: string description: 'Search query.' example: Manager nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 0e218834-b721-40c9-af4b-3e0249bcdfbf name: aut description: 'Nostrum qui commodi incidunt iure.' created_at: null updated_at: null - id: 6346ae41-0804-4c11-855e-082a343e844c name: odit description: 'Modi ipsum nostrum omnis autem et.' created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: 0e218834-b721-40c9-af4b-3e0249bcdfbf name: aut description: 'Nostrum qui commodi incidunt iure.' created_at: null updated_at: null - id: 6346ae41-0804-4c11-855e-082a343e844c name: odit description: 'Modi ipsum nostrum omnis autem et.' created_at: null updated_at: null items: type: object properties: id: type: string example: 0e218834-b721-40c9-af4b-3e0249bcdfbf name: type: string example: aut description: type: string example: 'Nostrum qui commodi incidunt iure.' created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Employee Roles' post: summary: 'Create employee role' operationId: createEmployeeRole description: 'Create a new employee role' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Employee Roles' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'O campo value não pode ser superior a 255 caracteres.' example: b nullable: false description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true required: - name '/api/employee-roles/{employeeRole}': get: summary: 'Show employee role' operationId: showEmployeeRole description: 'Show an employee role' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 4766267c-3591-408f-83a8-132492795d0d name: aut description: 'Nostrum qui commodi incidunt iure.' created_at: null updated_at: null properties: data: type: object properties: id: type: string example: 4766267c-3591-408f-83a8-132492795d0d name: type: string example: aut description: type: string example: 'Nostrum qui commodi incidunt iure.' created_at: type: string example: null updated_at: type: string example: null tags: - 'Employee Roles' put: summary: 'Update employee role' operationId: updateEmployeeRole description: 'Update an employee role' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Employee Roles' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'O campo value não pode ser superior a 255 caracteres.' example: b nullable: false description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true required: - name delete: summary: 'Delete employee role' operationId: deleteEmployeeRole description: 'Delete an employee role' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - 'Employee Roles' parameters: - in: path name: employeeRole description: 'Employee Role UUID' example: architecto required: true schema: type: string /api/employees: get: summary: 'List employees' operationId: listEmployees description: 'List all employees' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: 'João Silva' required: false schema: type: string description: 'Search query.' example: 'João Silva' nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 1d5e2817-579c-4012-b392-ee69ab424bc5 name: 'Rodrigo Leon' cpf: 421.700.432-81 rg: '590214902' ctps: null phone: null birthdate: '1982-07-26' email: valdez.jacomo@example.org address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null employee_role: id: null name: null created_at: null updated_at: null - id: 448f262c-ba9c-4be4-a621-427b9088d76a name: 'Elaine Kamila Serna Neto' cpf: 323.759.947-24 rg: '504415490' ctps: '691282316' phone: '(93) 3757-0170' birthdate: null email: null address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null employee_role: id: null name: null created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: 1d5e2817-579c-4012-b392-ee69ab424bc5 name: 'Rodrigo Leon' cpf: 421.700.432-81 rg: '590214902' ctps: null phone: null birthdate: '1982-07-26' email: valdez.jacomo@example.org address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null employee_role: id: null name: null created_at: null updated_at: null - id: 448f262c-ba9c-4be4-a621-427b9088d76a name: 'Elaine Kamila Serna Neto' cpf: 323.759.947-24 rg: '504415490' ctps: '691282316' phone: '(93) 3757-0170' birthdate: null email: null address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null employee_role: id: null name: null created_at: null updated_at: null items: type: object properties: id: type: string example: 1d5e2817-579c-4012-b392-ee69ab424bc5 name: type: string example: 'Rodrigo Leon' cpf: type: string example: 421.700.432-81 rg: type: string example: '590214902' ctps: type: string example: null phone: type: string example: null birthdate: type: string example: '1982-07-26' email: type: string example: valdez.jacomo@example.org address: type: object properties: street: type: string example: null number: type: string example: null complement: type: string example: null neighborhood: type: string example: null city: type: string example: null state: type: string example: null zip_code: type: string example: null employee_role: type: object properties: id: type: string example: null name: type: string example: null created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - Employees post: summary: 'Create employee' operationId: createEmployee description: 'Create a new employee' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Employees requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'O campo value não pode ser superior a 255 caracteres.' example: b nullable: false cpf: type: string description: 'O campo value deve ser 14 caracteres.' example: ngzmiyvdljnikh nullable: false rg: type: string description: 'O campo value não pode ser superior a 20 caracteres.' example: waykcmyuwpwlvqwr nullable: true ctps: type: string description: 'O campo value não pode ser superior a 20 caracteres.' example: sitcpscqldzsnrwt nullable: true phone: type: string description: 'O campo value não pode ser superior a 20 caracteres.' example: ujwvlxjklqppwqbe nullable: true birthdate: type: string description: 'O campo value deve ser uma data válida.' example: '2025-11-26T20:09:21' nullable: true email: type: string description: 'O campo value deve ser um endereço de e-mail válido.' example: kutch.cynthia@example.org nullable: true employee_role_id: type: string description: 'The uuid of an existing record in the employee_roles table.' example: architecto nullable: false address: type: object description: '' example: null nullable: true properties: street: type: string description: '' example: null nullable: true number: type: string description: '' example: null nullable: true complement: type: string description: '' example: null nullable: true neighborhood: type: string description: '' example: null nullable: true city: type: string description: '' example: null nullable: true state: type: string description: '' example: null nullable: true zip_code: type: string description: '' example: null nullable: true required: - name - cpf - employee_role_id '/api/employees/{id}': get: summary: 'Show employee' operationId: showEmployee description: 'Show an employee' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 1c9da60a-dab3-4798-9600-a2e895861542 name: 'Rodrigo Leon' cpf: 421.700.432-81 rg: '590214902' ctps: null phone: null birthdate: '1982-07-26' email: valdez.jacomo@example.org address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null employee_role: id: null name: null created_at: null updated_at: null properties: data: type: object properties: id: type: string example: 1c9da60a-dab3-4798-9600-a2e895861542 name: type: string example: 'Rodrigo Leon' cpf: type: string example: 421.700.432-81 rg: type: string example: '590214902' ctps: type: string example: null phone: type: string example: null birthdate: type: string example: '1982-07-26' email: type: string example: valdez.jacomo@example.org address: type: object properties: street: type: string example: null number: type: string example: null complement: type: string example: null neighborhood: type: string example: null city: type: string example: null state: type: string example: null zip_code: type: string example: null employee_role: type: object properties: id: type: string example: null name: type: string example: null created_at: type: string example: null updated_at: type: string example: null tags: - Employees put: summary: 'Update employee' operationId: updateEmployee description: 'Update an employee' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Employees requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'O campo value não pode ser superior a 255 caracteres.' example: b nullable: false cpf: type: string description: 'O campo value deve ser 14 caracteres.' example: ngzmiyvdljnikh nullable: false rg: type: string description: 'O campo value não pode ser superior a 20 caracteres.' example: waykcmyuwpwlvqwr nullable: true ctps: type: string description: 'O campo value não pode ser superior a 20 caracteres.' example: sitcpscqldzsnrwt nullable: true phone: type: string description: 'O campo value não pode ser superior a 20 caracteres.' example: ujwvlxjklqppwqbe nullable: true birthdate: type: string description: 'O campo value deve ser uma data válida.' example: '2025-11-26T20:09:21' nullable: true email: type: string description: 'O campo value deve ser um endereço de e-mail válido.' example: kutch.cynthia@example.org nullable: true employee_role_id: type: string description: 'The uuid of an existing record in the employee_roles table.' example: architecto nullable: false address: type: object description: '' example: null nullable: false properties: street: type: string description: '' example: null nullable: false number: type: string description: '' example: null nullable: false complement: type: string description: '' example: null nullable: false neighborhood: type: string description: '' example: null nullable: false city: type: string description: '' example: null nullable: false state: type: string description: '' example: null nullable: false zip_code: type: string description: '' example: null nullable: false required: - name - cpf - employee_role_id parameters: - in: path name: id description: 'The ID of the employee.' example: 16 required: true schema: type: integer - in: path name: employee description: 'Employee ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/employees/{employee}': delete: summary: 'Delete employee' operationId: deleteEmployee description: 'Delete an employee' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - Employees parameters: - in: path name: employee description: 'Employee ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string /api/reports/cash-flow: get: summary: '' operationId: getApiReportsCashFlow description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/reports/accounts-payable-receivable: get: summary: '' operationId: getApiReportsAccountsPayableReceivable description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/up: get: summary: '' operationId: getApiUp description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: 'API is running' properties: message: type: string example: 'API is running' tags: - Endpoints security: [] '/api/files/{fileUuid}/versions': post: summary: 'Create version' operationId: createVersion description: 'Create a new version and update file with new data' parameters: [] responses: 201: description: '' content: application/json: schema: type: object nullable: true tags: - 'File Versions' requestBody: required: true content: application/json: schema: type: object properties: path: type: string description: Path. example: 'Example Path' nullable: false size: type: string description: Size. example: 'Example Size' nullable: false extension: type: string description: Extension. example: 'Example Extension' nullable: false responsible_user_id: type: string description: 'Responsible user id. O campo value deve ser um UUID válido. The uuid of an existing record in the users table.' example: bfc53181-d647-36b2-9080-f9c2b76006f4 nullable: true required: - path - size - extension get: summary: 'List versions' operationId: listVersions description: 'List all versions of a file' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: string version_number: integer name: string size: string extension: string created_by: object created_at: datetime properties: data: type: array example: - id: string version_number: integer name: string size: string extension: string created_by: object created_at: datetime items: type: object properties: id: type: string example: string version_number: type: string example: integer name: type: string example: string size: type: string example: string extension: type: string example: string created_by: type: string example: object created_at: type: string example: datetime tags: - 'File Versions' parameters: - in: path name: fileUuid description: 'The UUID of the file to version' example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed required: true schema: type: string '/api/file-versions/{versionUuid}': get: summary: 'Get version' operationId: getVersion description: 'Get details of a specific version' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: string version_number: integer name: string size: string extension: string created_by: object created_at: datetime properties: id: type: string example: string version_number: type: string example: integer name: type: string example: string size: type: string example: string extension: type: string example: string created_by: type: string example: object created_at: type: string example: datetime tags: - 'File Versions' delete: summary: 'Delete version' operationId: deleteVersion description: 'Soft delete a specific version' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - 'File Versions' parameters: - in: path name: versionUuid description: 'The UUID of the version' example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed required: true schema: type: string '/api/file-versions/{versionUuid}/restore': post: summary: 'Restore version' operationId: restoreVersion description: 'Restore a version as the current file' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: 'Version restored successfully' properties: message: type: string example: 'Version restored successfully' tags: - 'File Versions' parameters: - in: path name: versionUuid description: 'The UUID of the version to restore' example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed required: true schema: type: string '/api/file-versions/{versionUuid}/download': get: summary: 'Download version' operationId: downloadVersion description: 'Generate signed URL for downloading a specific version' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: url: string filename: string size: string version_number: integer properties: url: type: string example: string filename: type: string example: string size: type: string example: string version_number: type: string example: integer tags: - 'File Versions' parameters: - in: path name: versionUuid description: 'The UUID of the version to download' example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed required: true schema: type: string '/api/files/{uuid}': delete: summary: 'Delete file' operationId: deleteFile description: 'Delete a file' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - Files parameters: - in: path name: uuid description: '' example: 1 required: true schema: type: integer '/api/files/{uuid}/info': get: summary: 'Get file info' operationId: getFileInfo description: 'Get file information' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: uuid: string name: string size: integer type: string extension: string path: string properties: uuid: type: string example: string name: type: string example: string size: type: string example: integer type: type: string example: string extension: type: string example: string path: type: string example: string tags: - Files parameters: - in: path name: uuid description: '' example: 1 required: true schema: type: integer '/api/files/{uuid}/download': get: summary: 'Generate download URL' operationId: generateDownloadURL description: 'Generate a signed URL for downloading a file' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: url: string filename: string size: integer type: string properties: url: type: string example: string filename: type: string example: string size: type: string example: integer type: type: string example: string tags: - Files parameters: - in: path name: uuid description: 'The UUID of the file to download' example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed required: true schema: type: string /api/files/generate-upload-url: post: summary: 'Generate upload URL' operationId: generateUploadURL description: 'Generate a signed URL for uploading a file' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: url: string path: string headers: array properties: url: type: string example: string path: type: string example: string headers: type: string example: array tags: - Files requestBody: required: true content: application/json: schema: type: object properties: path: type: string description: Path. example: 'Example Path' nullable: false mimetype: type: string description: Mimetype. example: 'Example Mimetype' nullable: false public: type: boolean description: Public. example: false nullable: false required: - path - mimetype - public /api/files/generate-bulk-upload-url: post: summary: 'Generate bulk upload URL' operationId: generateBulkUploadURL description: 'Generate signed URLs for uploading multiple files' parameters: [] responses: 200: description: '' content: application/json: schema: type: array items: type: object example: - url: string path: string headers: array tags: - Files requestBody: required: true content: application/json: schema: type: object properties: files: type: array description: Files. example: - null - null items: type: object properties: path: type: string description: 'Files * path.' example: 'Example Files * path' nullable: false mimetype: type: string description: 'Files * mimetype.' example: 'Example Files * mimetype' nullable: false public: type: boolean description: 'Files * public.' example: false nullable: false required: - path - mimetype - public required: - files /api/imports/nfe/products: post: summary: 'Create NFe Import' operationId: createNFeImport description: 'Upload and process a Brazilian NFe (Nota Fiscal Eletrônica) XML file. The file should be uploaded to S3 first, then this endpoint processes it asynchronously.' parameters: [] responses: 201: description: 'Import created successfully' content: application/json: schema: type: object example: import_id: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a status: pending channel: import-progress.9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a properties: import_id: type: string example: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a status: type: string example: pending channel: type: string example: import-progress.9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a 404: description: 'File not found in S3' content: application/json: schema: type: object example: error: 'Arquivo não encontrado no S3' properties: error: type: string example: 'Arquivo não encontrado no S3' 422: description: 'Invalid XML or not a valid NFe' content: application/json: schema: type: object example: error: 'Arquivo XML inválido ou não é uma NFe' properties: error: type: string example: 'Arquivo XML inválido ou não é uma NFe' tags: - Import requestBody: required: true content: application/json: schema: type: object properties: s3_file_path: type: string description: 'Path to the NFe XML file in S3 storage' example: imports/nfe_12345.xml nullable: false original_filename: type: string description: 'Original filename of the uploaded NFe' example: nota_fiscal_001.xml nullable: false import_type: type: string description: 'Type of import (currently only "nfe" is supported)' example: nfe nullable: false required: - s3_file_path - original_filename - import_type /api/imports: get: summary: 'List User Imports' operationId: listUserImports description: 'List all NFe imports for the authenticated user with filtering and pagination options.' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: status description: 'Filter imports by status (pending, processing, completed, failed).' example: completed required: false schema: type: string description: 'Filter imports by status (pending, processing, completed, failed).' example: completed nullable: false enum: - pending - processing - completed - failed - in: query name: import_type description: 'Filter imports by type.' example: nfe required: false schema: type: string description: 'Filter imports by type.' example: nfe nullable: false enum: - initial_load - stock_update - nfe - in: query name: per_page description: 'Number of imports per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.' example: 15 required: false schema: type: integer description: 'Number of imports per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.' example: 15 nullable: false responses: 200: description: 'Imports retrieved successfully' content: application/json: schema: type: object example: data: - id: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a status: completed import_type: nfe original_filename: nota_fiscal_001.xml nfe_number: '123456' nfe_date: '2023-12-01' total_products: 15 processed_products: 15 progress_percentage: 100.0 imported_at: '2023-12-01T10:30:00.000Z' supplier: name: 'Fornecedor Ltda' document: '12345678000199' properties: data: type: array example: - id: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a status: completed import_type: nfe original_filename: nota_fiscal_001.xml nfe_number: '123456' nfe_date: '2023-12-01' total_products: 15 processed_products: 15 progress_percentage: 100 imported_at: '2023-12-01T10:30:00.000Z' supplier: name: 'Fornecedor Ltda' document: '12345678000199' items: type: object properties: id: type: string example: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a status: type: string example: completed import_type: type: string example: nfe original_filename: type: string example: nota_fiscal_001.xml nfe_number: type: string example: '123456' nfe_date: type: string example: '2023-12-01' total_products: type: integer example: 15 processed_products: type: integer example: 15 progress_percentage: type: number example: 100.0 imported_at: type: string example: '2023-12-01T10:30:00.000Z' supplier: type: object properties: name: type: string example: 'Fornecedor Ltda' document: type: string example: '12345678000199' tags: - Import '/api/imports/{importId}': get: summary: 'Get Import Details' operationId: getImportDetails description: 'Retrieve detailed information about a specific NFe import, including progress and supplier data.' parameters: [] responses: 200: description: 'Import details retrieved successfully' content: application/json: schema: type: object example: import_id: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a status: completed import_type: nfe original_filename: nota_fiscal_001.xml nfe_number: '123456' nfe_date: '2023-12-01' total_products: 15 processed_products: 10 progress_percentage: 66.67 imported_by: 'João Silva' imported_at: '2023-12-01T10:30:00.000Z' supplier: id: supplier-uuid name: 'Fornecedor Ltda' document: '12345678000199' channel: import-progress.9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a properties: import_id: type: string example: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a status: type: string example: completed import_type: type: string example: nfe original_filename: type: string example: nota_fiscal_001.xml nfe_number: type: string example: '123456' nfe_date: type: string example: '2023-12-01' total_products: type: integer example: 15 processed_products: type: integer example: 10 progress_percentage: type: number example: 66.67 imported_by: type: string example: 'João Silva' imported_at: type: string example: '2023-12-01T10:30:00.000Z' supplier: type: object properties: id: type: string example: supplier-uuid name: type: string example: 'Fornecedor Ltda' document: type: string example: '12345678000199' channel: type: string example: import-progress.9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a tags: - Import parameters: - in: path name: importId description: '' example: architecto required: true schema: type: string '/api/imports/{importId}/products': get: summary: 'Get Import Products' operationId: getImportProducts description: 'List all products from a specific NFe import with filtering and pagination options.' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: status description: 'Filter products by processing status (pending, processed).' example: pending required: false schema: type: string description: 'Filter products by processing status (pending, processed).' example: pending nullable: true enum: - pending - processed - in: query name: q description: 'Search products by name / code / EAN. O campo value não pode ser superior a 255 caracteres.' example: 'Produto ABC' required: false schema: type: string description: 'Search products by name / code / EAN. O campo value não pode ser superior a 255 caracteres.' example: 'Produto ABC' nullable: true - in: query name: per_page description: 'Number of products per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.' example: 15 required: false schema: type: integer description: 'Number of products per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.' example: 15 nullable: false responses: 200: description: 'Products retrieved successfully' content: application/json: schema: type: object example: import: id: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a total_products: 15 processed_products: 10 progress_percentage: 66.67 products: data: - id: product-uuid supplier_product_code: ABC123 ean_code: '7891234567890' name: 'Nome do Produto' unit: UN quantity: 10 unit_price: 15.5 total_price: 155.0 is_processed: false system_product: null linked_at: null linked_by: null pagination: current_page: 1 per_page: 15 total: 15 last_page: 1 properties: import: type: object properties: id: type: string example: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a total_products: type: integer example: 15 processed_products: type: integer example: 10 progress_percentage: type: number example: 66.67 products: type: object properties: data: type: array example: - id: product-uuid supplier_product_code: ABC123 ean_code: '7891234567890' name: 'Nome do Produto' unit: UN quantity: 10 unit_price: 15.5 total_price: 155 is_processed: false system_product: null linked_at: null linked_by: null items: type: object properties: id: type: string example: product-uuid supplier_product_code: type: string example: ABC123 ean_code: type: string example: '7891234567890' name: type: string example: 'Nome do Produto' unit: type: string example: UN quantity: type: integer example: 10 unit_price: type: number example: 15.5 total_price: type: number example: 155.0 is_processed: type: boolean example: false system_product: type: string example: null linked_at: type: string example: null linked_by: type: string example: null pagination: type: object properties: current_page: type: integer example: 1 per_page: type: integer example: 15 total: type: integer example: 15 last_page: type: integer example: 1 tags: - Import parameters: - in: path name: importId description: '' example: architecto required: true schema: type: string '/api/imports/{importId}/products/link': post: summary: 'Link Products' operationId: linkProducts description: 'Inicia, de forma assíncrona, a vinculação de produtos do fornecedor a produtos do sistema ou criação de novos itens no estoque. Retorna 202 com o canal para acompanhar o progresso.' parameters: [] responses: 202: description: 'Linking accepted and started asynchronously' content: application/json: schema: type: object example: message: 'Vinculação de produtos iniciada com sucesso' total_mappings: 2 channel: 'imports.{import-uuid}' properties: message: type: string example: 'Vinculação de produtos iniciada com sucesso' total_mappings: type: integer example: 2 channel: type: string example: 'imports.{import-uuid}' 422: description: 'Error linking products' content: application/json: schema: type: object example: error: 'Erro ao vincular produtos: Product not found' properties: error: type: string example: 'Erro ao vincular produtos: Product not found' tags: - Import requestBody: required: true content: application/json: schema: type: object properties: mappings: type: array description: 'Array of product mappings' example: - architecto items: type: string required: - mappings parameters: - in: path name: importId description: '' example: architecto required: true schema: type: string /api/notifications: get: summary: 'List notifications' operationId: listNotifications description: 'List user notifications' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: per_page description: 'O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.' example: 1 required: false schema: type: integer description: 'O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.' example: 1 nullable: false - in: query name: module description: 'Filter by module name. O campo value não pode ser superior a 100 caracteres.' example: CashFlow required: false schema: type: string description: 'Filter by module name. O campo value não pode ser superior a 100 caracteres.' example: CashFlow nullable: true - in: query name: type description: 'Filter by type (ex.: info, success, warning, error). O campo value não pode ser superior a 100 caracteres.' example: success required: false schema: type: string description: 'Filter by type (ex.: info, success, warning, error). O campo value não pode ser superior a 100 caracteres.' example: success nullable: true - in: query name: priority description: 'Filter by priority number. O campo value deve ser pelo menos 0. O campo value não pode ser superior a 255.' example: 10 required: false schema: type: integer description: 'Filter by priority number. O campo value deve ser pelo menos 0. O campo value não pode ser superior a 255.' example: 10 nullable: true - in: query name: unread_only description: 'Only unread notifications when true.' example: true required: false schema: type: boolean description: 'Only unread notifications when true.' example: true nullable: true - in: query name: read_status description: 'Filter by read status (all, read, unread).' example: unread required: false schema: type: string description: 'Filter by read status (all, read, unread).' example: unread nullable: true enum: - all - read - unread - in: query name: date_start description: 'Filter notifications created from this date (YYYY-MM-DD). O campo value deve ser uma data válida.' example: '2024-01-01' required: false schema: type: string description: 'Filter notifications created from this date (YYYY-MM-DD). O campo value deve ser uma data válida.' example: '2024-01-01' nullable: true - in: query name: date_end description: 'Filter notifications created until this date (YYYY-MM-DD). O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a date_start.' example: '2024-12-31' required: false schema: type: string description: 'Filter notifications created until this date (YYYY-MM-DD). O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a date_start.' example: '2024-12-31' nullable: true - in: query name: q description: 'Search by title/message. O campo value não pode ser superior a 255 caracteres.' example: 'erro faturamento' required: false schema: type: string description: 'Search by title/message. O campo value não pode ser superior a 255 caracteres.' example: 'erro faturamento' nullable: true responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Notifications /api/notifications/mark-as-read: post: summary: 'Mark notifications as read' operationId: markNotificationsAsRead description: 'Mark one or many notifications as read' parameters: [] responses: { } tags: - Notifications requestBody: required: true content: application/json: schema: type: object properties: notifications: type: array description: 'O campo value deve ser um UUID válido.' example: - 6ff8f7f6-1eb3-3525-be4a-3932c805afed items: type: string required: - notifications /api/notifications/mark-as-unread: post: summary: 'Mark notifications as unread' operationId: markNotificationsAsUnread description: 'Mark one or many notifications as unread' parameters: [] responses: { } tags: - Notifications requestBody: required: true content: application/json: schema: type: object properties: notifications: type: array description: 'O campo value deve ser um UUID válido.' example: - 6ff8f7f6-1eb3-3525-be4a-3932c805afed items: type: string required: - notifications /api/notifications/mark-all-as-read: post: summary: 'Mark all notifications as read' operationId: markAllNotificationsAsRead description: 'Mark all user notifications as read' parameters: [] responses: { } tags: - Notifications /api/notifications/unread-count: get: summary: 'Unread notifications count' operationId: unreadNotificationsCount description: 'Count of unread notifications for the user' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Notifications /api/permission-groups: get: summary: 'List permission groups' operationId: listPermissionGroups description: 'List all permission groups' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: nostrum-qui display_name: 'commodi incidunt iure' active: null permissions_count: 0 created_at: null updated_at: null - id: d9be5934-80e7-34a9-a136-841b5f0aea83 name: modi-ipsum display_name: 'nostrum omnis autem' active: null permissions_count: 0 created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: nostrum-qui display_name: 'commodi incidunt iure' active: null permissions_count: 0 created_at: null updated_at: null - id: d9be5934-80e7-34a9-a136-841b5f0aea83 name: modi-ipsum display_name: 'nostrum omnis autem' active: null permissions_count: 0 created_at: null updated_at: null items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: nostrum-qui display_name: type: string example: 'commodi incidunt iure' active: type: string example: null permissions_count: type: integer example: 0 created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Permission Groups' post: summary: 'Create permission group' operationId: createPermissionGroup description: 'Create a new permission group' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Permission Groups' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Name. O campo value não pode ser superior a 255 caracteres.' example: 'Example Name' nullable: false display_name: type: string description: 'Display name. O campo value não pode ser superior a 255 caracteres.' example: 'Example Name' nullable: false active: type: boolean description: Active. example: false nullable: true required: - name - display_name '/api/permission-groups/{permissionGroup}': put: summary: 'Update permission group' operationId: updatePermissionGroup description: 'Update a permission group' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Permission Groups' requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'Name. O campo value não pode ser superior a 255 caracteres.' example: 'Example Name' nullable: false display_name: type: string description: 'Display name. O campo value não pode ser superior a 255 caracteres.' example: 'Example Name' nullable: false active: type: boolean description: Active. example: false nullable: false get: summary: 'Show permission group' operationId: showPermissionGroup description: 'Show a permission group' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: nostrum-qui display_name: 'commodi incidunt iure' active: null permissions_count: 0 created_at: null updated_at: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: nostrum-qui display_name: type: string example: 'commodi incidunt iure' active: type: string example: null permissions_count: type: integer example: 0 created_at: type: string example: null updated_at: type: string example: null tags: - 'Permission Groups' delete: summary: 'Delete permission group' operationId: deletePermissionGroup description: 'Delete a permission group' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - 'Permission Groups' parameters: - in: path name: permissionGroup description: '' example: 1 required: true schema: type: integer /api/product-brands: get: summary: 'List product brands' operationId: listProductBrands description: 'List all product brands' parameters: - in: query name: q description: '' example: Structure required: false schema: type: string description: '' example: Structure nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' created_at: null updated_at: null - id: c68e0767-6220-31fb-a489-61093ff79529 name: 'Valentin Ramos Zamana' created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' created_at: null updated_at: null - id: c68e0767-6220-31fb-a489-61093ff79529 name: 'Valentin Ramos Zamana' created_at: null updated_at: null items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Product Brands' post: summary: 'Create product brand' operationId: createProductBrand description: 'Create a new product brand' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Product Brands' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: '' example: architecto nullable: false required: - name '/api/product-brands/{productBrand}': get: summary: 'Show product brand' operationId: showProductBrand description: 'Show a product brand' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' created_at: null updated_at: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' created_at: type: string example: null updated_at: type: string example: null tags: - 'Product Brands' put: summary: 'Update product brand' operationId: updateProductBrand description: 'Update a product brand' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Product Brands' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: '' example: architecto nullable: false required: - name delete: summary: 'Delete product brand' operationId: deleteProductBrand description: 'Delete a product brand' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - 'Product Brands' parameters: - in: path name: productBrand description: 'Product brand UUID' example: architecto required: true schema: type: string /api/product-families: get: summary: 'List product families' operationId: listProductFamilies description: 'List all product families' parameters: - in: query name: q description: '' example: Structure required: false schema: type: string description: '' example: Structure nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' created_at: null updated_at: null - id: c68e0767-6220-31fb-a489-61093ff79529 name: 'Valentin Ramos Zamana' created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' created_at: null updated_at: null - id: c68e0767-6220-31fb-a489-61093ff79529 name: 'Valentin Ramos Zamana' created_at: null updated_at: null items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Product Families' post: summary: 'Create product family' operationId: createProductFamily description: 'Create a new product family' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Product Families' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: '' example: architecto nullable: false required: - name '/api/product-families/{productFamily}': get: summary: 'Show product family' operationId: showProductFamily description: 'Show a product family' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' created_at: null updated_at: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' created_at: type: string example: null updated_at: type: string example: null tags: - 'Product Families' put: summary: 'Update product family' operationId: updateProductFamily description: 'Update a product family' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Product Families' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: '' example: architecto nullable: false required: - name delete: summary: 'Delete product family' operationId: deleteProductFamily description: 'Delete a product family' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - 'Product Families' parameters: - in: path name: productFamily description: 'Product family UUID' example: architecto required: true schema: type: string /api/products: get: summary: 'List products' operationId: listProducts description: 'List all products' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: Brick required: false schema: type: string description: 'Search query.' example: Brick nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 14b4c183-e92e-3290-9479-d6b89634223b name: 'Cléber Abreu Gonçalves Filho' code: PRD-027212 stock: 2924672 product_family: id: a073f2db-a391-4b2c-804a-404306d27dec name: 'Josué Queirós Filho' product_brand: id: a073f2db-aab1-44a2-8934-2e13cf30f287 name: 'Srta. Suellen Cynthia Barreto Filho' unit: id: a073f2db-ade1-4d70-ba82-f94e9e59da8d name: 'Sr. Rogério Arruda' abbreviation: 'Sra. Cláudia Isadora Torres Neto' image: id: null url: null description: 'Reiciendis magni voluptatem tempore voluptates culpa.' created_at: null updated_at: null - id: 0b3ddfcf-3cec-37df-8e23-4ca508067f65 name: 'Dr. Ruth Débora Valentin Neto' code: PRD-387419 stock: 75250168 product_family: id: a073f2db-b226-4c9d-85bd-1a96a3193e85 name: 'Srta. Bianca Benez Velasques Filho' product_brand: id: a073f2db-b4f7-4c48-afb3-c315757d500f name: 'Dr. Júlia Miranda Escobar Sobrinho' unit: id: a073f2db-b792-4174-9b69-9eecd4b328ae name: 'Betina Carrara Arruda' abbreviation: 'Dener Padrão Chaves' image: id: null url: null description: 'Unde eaque quis reprehenderit porro est minus consequatur cum.' created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: 14b4c183-e92e-3290-9479-d6b89634223b name: 'Cléber Abreu Gonçalves Filho' code: PRD-027212 stock: 2924672 product_family: id: a073f2db-a391-4b2c-804a-404306d27dec name: 'Josué Queirós Filho' product_brand: id: a073f2db-aab1-44a2-8934-2e13cf30f287 name: 'Srta. Suellen Cynthia Barreto Filho' unit: id: a073f2db-ade1-4d70-ba82-f94e9e59da8d name: 'Sr. Rogério Arruda' abbreviation: 'Sra. Cláudia Isadora Torres Neto' image: id: null url: null description: 'Reiciendis magni voluptatem tempore voluptates culpa.' created_at: null updated_at: null - id: 0b3ddfcf-3cec-37df-8e23-4ca508067f65 name: 'Dr. Ruth Débora Valentin Neto' code: PRD-387419 stock: 75250168 product_family: id: a073f2db-b226-4c9d-85bd-1a96a3193e85 name: 'Srta. Bianca Benez Velasques Filho' product_brand: id: a073f2db-b4f7-4c48-afb3-c315757d500f name: 'Dr. Júlia Miranda Escobar Sobrinho' unit: id: a073f2db-b792-4174-9b69-9eecd4b328ae name: 'Betina Carrara Arruda' abbreviation: 'Dener Padrão Chaves' image: id: null url: null description: 'Unde eaque quis reprehenderit porro est minus consequatur cum.' created_at: null updated_at: null items: type: object properties: id: type: string example: 14b4c183-e92e-3290-9479-d6b89634223b name: type: string example: 'Cléber Abreu Gonçalves Filho' code: type: string example: PRD-027212 stock: type: integer example: 2924672 product_family: type: object properties: id: type: string example: a073f2db-a391-4b2c-804a-404306d27dec name: type: string example: 'Josué Queirós Filho' product_brand: type: object properties: id: type: string example: a073f2db-aab1-44a2-8934-2e13cf30f287 name: type: string example: 'Srta. Suellen Cynthia Barreto Filho' unit: type: object properties: id: type: string example: a073f2db-ade1-4d70-ba82-f94e9e59da8d name: type: string example: 'Sr. Rogério Arruda' abbreviation: type: string example: 'Sra. Cláudia Isadora Torres Neto' image: type: object properties: id: type: string example: null url: type: string example: null description: type: string example: 'Reiciendis magni voluptatem tempore voluptates culpa.' created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - Products post: summary: 'Create product' operationId: createProduct description: 'Create a new product' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Products requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'O campo value não pode ser superior a 255 caracteres.' example: b nullable: false product_family_id: type: string description: 'The uuid of an existing record in the product_families table.' example: architecto nullable: false product_brand_id: type: string description: 'The uuid of an existing record in the product_brands table.' example: architecto nullable: false unit_id: type: string description: 'The uuid of an existing record in the units table.' example: architecto nullable: false description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true stock: type: number description: 'O campo value deve ser pelo menos 0.' example: 60 nullable: false required: - name - product_family_id - product_brand_id - unit_id - stock '/api/products/{id}': get: summary: 'Show product' operationId: showProduct description: 'Show a product' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' code: PRD-265058 stock: 7365 product_family: id: a073f2db-c276-4d6b-b157-e80db0350ca6 name: 'Elaine Kamila Serna Neto' product_brand: id: a073f2db-c516-4134-a115-9c21bbf35079 name: 'Liz Sueli Pacheco Neto' unit: id: a073f2db-c7c9-4a8f-983f-d8adf8b6f0a3 name: 'Mia Letícia Velasques Jr.' abbreviation: 'Srta. Talita Zambrano' image: id: null url: null description: 'Odit et et modi.' created_at: null updated_at: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' code: type: string example: PRD-265058 stock: type: integer example: 7365 product_family: type: object properties: id: type: string example: a073f2db-c276-4d6b-b157-e80db0350ca6 name: type: string example: 'Elaine Kamila Serna Neto' product_brand: type: object properties: id: type: string example: a073f2db-c516-4134-a115-9c21bbf35079 name: type: string example: 'Liz Sueli Pacheco Neto' unit: type: object properties: id: type: string example: a073f2db-c7c9-4a8f-983f-d8adf8b6f0a3 name: type: string example: 'Mia Letícia Velasques Jr.' abbreviation: type: string example: 'Srta. Talita Zambrano' image: type: object properties: id: type: string example: null url: type: string example: null description: type: string example: 'Odit et et modi.' created_at: type: string example: null updated_at: type: string example: null tags: - Products put: summary: 'Update product ' operationId: updateProduct description: 'Update a product ' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Products requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'O campo value não pode ser superior a 255 caracteres.' example: b nullable: false product_family_id: type: string description: 'The uuid of an existing record in the product_families table.' example: architecto nullable: false product_brand_id: type: string description: 'The uuid of an existing record in the product_brands table.' example: architecto nullable: false unit_id: type: string description: 'The uuid of an existing record in the units table.' example: architecto nullable: false stock: type: number description: 'O campo value deve ser pelo menos 0.' example: 39 nullable: false description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true required: - name - product_family_id - product_brand_id - unit_id - stock parameters: - in: path name: id description: 'The ID of the product.' example: 16 required: true schema: type: integer - in: path name: product description: 'Product UUID' example: architecto required: true schema: type: string '/api/products/{product}': delete: summary: 'Delete product' operationId: deleteProduct description: 'Delete a product' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - Products parameters: - in: path name: product description: 'Product UUID' example: architecto required: true schema: type: string '/api/public/documents/{token}': get: summary: 'Get shared document' operationId: getSharedDocument description: 'Get a shared document by token' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' category: null created_at: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' category: type: string example: null created_at: type: string example: null tags: - 'Public Documents' security: [] parameters: - in: path name: token description: 'Share token' example: abc123... required: true schema: type: string '/api/public/single-use/work-locations/{token}': get: summary: 'Get work location by single-use token' operationId: getWorkLocationBySingleUseToken description: 'Get a work location by single-use token (consumed after first access)' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: c68e0767-6220-31fb-a489-61093ff79529 description: 'Valentin Ramos Zamana' created_at: null properties: data: type: object properties: id: type: string example: c68e0767-6220-31fb-a489-61093ff79529 description: type: string example: 'Valentin Ramos Zamana' created_at: type: string example: null tags: - 'Public Single-Use Links' security: [] parameters: - in: path name: token description: 'Single-use token' example: abc123... required: true schema: type: string /api/responsibles: get: summary: 'List responsibles' operationId: listResponsibles description: 'List all responsibles' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: 'Responsible name, email, phone or role' required: false schema: type: string description: 'Search query.' example: 'Responsible name, email, phone or role' nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' email: yohanna44@example.org phone: '(94) 94866-9606' role: consequatur created_at: null updated_at: null - id: ac9e0973-adfe-32df-ade4-9b9752e8c6ad name: 'Srta. Maitê Simone Rangel' email: sandra09@example.com phone: '(98) 4569-6081' role: doloremque created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' email: yohanna44@example.org phone: '(94) 94866-9606' role: consequatur created_at: null updated_at: null - id: ac9e0973-adfe-32df-ade4-9b9752e8c6ad name: 'Srta. Maitê Simone Rangel' email: sandra09@example.com phone: '(98) 4569-6081' role: doloremque created_at: null updated_at: null items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' email: type: string example: yohanna44@example.org phone: type: string example: '(94) 94866-9606' role: type: string example: consequatur created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - Responsible post: summary: 'Create responsible' operationId: createResponsible description: 'Create a new responsible' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Responsible requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Nome. example: 'Example Name' nullable: false role: type: string description: Cargo. example: 'Example Role' nullable: false email: type: string description: 'E-mail. This field is required when phone is not present. O campo value deve ser um endereço de e-mail válido.' example: user@example.com nullable: true phone: type: string description: 'Telefone. This field is required when email is not present.' example: '(11) 99999-9999' nullable: true works: type: array description: 'Works *. The uuid of an existing record in the works table.' example: - bfc53181-d647-36b2-9080-f9c2b76006f4 items: type: string required: - name - role '/api/responsibles/{id}': get: summary: 'Get responsible' operationId: getResponsible description: 'Get a responsible' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' email: yohanna44@example.org phone: '(94) 94866-9606' role: consequatur created_at: null updated_at: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' email: type: string example: yohanna44@example.org phone: type: string example: '(94) 94866-9606' role: type: string example: consequatur created_at: type: string example: null updated_at: type: string example: null tags: - Responsible put: summary: 'Update responsible' operationId: updateResponsible description: 'Update a responsible' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Responsible requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: Nome. example: 'Example Name' nullable: false role: type: string description: Cargo. example: 'Example Role' nullable: false email: type: string description: 'E-mail. This field is required when phone is not present. O campo value deve ser um endereço de e-mail válido.' example: user@example.com nullable: false phone: type: string description: 'Telefone. This field is required when email is not present.' example: '(11) 99999-9999' nullable: false works: type: array description: 'Works *. The uuid of an existing record in the works table.' example: - bfc53181-d647-36b2-9080-f9c2b76006f4 items: type: string delete: summary: 'Delete responsible' operationId: deleteResponsible description: 'Delete a responsible' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - Responsible parameters: - in: path name: id description: 'The ID of the responsible.' example: 1 required: true schema: type: integer - in: path name: responsible description: 'Responsible ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string /api/sectors: get: summary: 'List sectors' operationId: listSectors description: 'List all sectors' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: Tecnologia required: false schema: type: string description: 'Search query.' example: Tecnologia nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 64f1adb5-7b95-3449-b01a-4c084f085f3e name: 'unde odit' slug: null description: null abbreviation: xst created_at: null updated_at: null - id: 87184676-116c-34a2-9f1e-3843ea379587 name: 'quo adipisci' slug: null description: 'Expedita delectus et vitae voluptas consectetur. Consectetur praesentium delectus impedit itaque ullam. Optio veritatis delectus provident quia voluptatum quia expedita illum.' abbreviation: null created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: 64f1adb5-7b95-3449-b01a-4c084f085f3e name: 'unde odit' slug: null description: null abbreviation: xst created_at: null updated_at: null - id: 87184676-116c-34a2-9f1e-3843ea379587 name: 'quo adipisci' slug: null description: 'Expedita delectus et vitae voluptas consectetur. Consectetur praesentium delectus impedit itaque ullam. Optio veritatis delectus provident quia voluptatum quia expedita illum.' abbreviation: null created_at: null updated_at: null items: type: object properties: id: type: string example: 64f1adb5-7b95-3449-b01a-4c084f085f3e name: type: string example: 'unde odit' slug: type: string example: null description: type: string example: null abbreviation: type: string example: xst created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - Sectors post: summary: 'Create sector' operationId: createSector description: 'Create a new sector' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Sectors requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Nome. O campo value não pode ser superior a 255 caracteres.' example: 'Example Name' nullable: false slug: type: string description: 'Slug. O campo value não pode ser superior a 255 caracteres.' example: 'Example Slug' nullable: false description: type: string description: Descrição. example: 'Example Description' nullable: true abbreviation: type: string description: 'Abreviação. O campo value não pode ser superior a 10 caracteres.' example: 'Example Abbreviation' nullable: true image: type: object description: Imagem. example: - example1 - example2 nullable: true properties: path: type: string description: 'Caminho da imagem. O campo value não pode ser superior a 255 caracteres.' example: 'Example Image path' nullable: true url: type: string description: 'URL da imagem. Must be a valid URL.' example: 'https://example.com' nullable: true name: type: string description: 'Nome da imagem. O campo value não pode ser superior a 255 caracteres.' example: 'Example Name' nullable: true size: type: string description: 'Tamanho da imagem. O campo value não pode ser superior a 50 caracteres.' example: 'Example Image size' nullable: true extension: type: string description: 'Extensão da imagem. O campo value não pode ser superior a 10 caracteres.' example: 'Example Image extension' nullable: true required: - name '/api/sectors/{id}': get: summary: 'Get sector' operationId: getSector description: 'Get a sector' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'quidem nostrum' slug: null description: null abbreviation: qwr created_at: null updated_at: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'quidem nostrum' slug: type: string example: null description: type: string example: null abbreviation: type: string example: qwr created_at: type: string example: null updated_at: type: string example: null tags: - Sectors put: summary: 'Update sector' operationId: updateSector description: 'Update a sector' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Sectors requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Nome. O campo value não pode ser superior a 255 caracteres.' example: 'Example Name' nullable: false slug: type: string description: 'Slug. O campo value não pode ser superior a 255 caracteres.' example: 'Example Slug' nullable: false description: type: string description: Descrição. example: 'Example Description' nullable: true abbreviation: type: string description: 'Abreviação. O campo value não pode ser superior a 10 caracteres.' example: 'Example Abbreviation' nullable: true image: type: object description: Imagem. example: - example1 - example2 nullable: true properties: path: type: string description: 'Caminho da imagem. O campo value não pode ser superior a 255 caracteres.' example: 'Example Image path' nullable: true url: type: string description: 'URL da imagem. Must be a valid URL.' example: 'https://example.com' nullable: true name: type: string description: 'Nome da imagem. O campo value não pode ser superior a 255 caracteres.' example: 'Example Name' nullable: true size: type: string description: 'Tamanho da imagem. O campo value não pode ser superior a 50 caracteres.' example: 'Example Image size' nullable: true extension: type: string description: 'Extensão da imagem. O campo value não pode ser superior a 10 caracteres.' example: 'Example Image extension' nullable: true required: - name delete: summary: 'Delete sector' operationId: deleteSector description: 'Delete a sector' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - Sectors parameters: - in: path name: id description: 'The ID of the sector.' example: 1 required: true schema: type: integer - in: path name: sector description: 'Sector ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/sectors/{sector}/users': get: summary: 'List sector users' operationId: listSectorUsers description: 'List all users assigned to a sector' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Miss Pearl Hauck' username: pauline09 email: mitchell.matilda@example.org image: id: null url: null sectors: [] roles: [] - id: f2726f3d-9044-3663-bede-2a0f37053879 name: 'Mrs. Abbey Gaylord MD' username: madisen51 email: qankunding@example.com image: id: null url: null sectors: [] roles: [] links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Miss Pearl Hauck' username: pauline09 email: mitchell.matilda@example.org image: id: null url: null sectors: [] roles: [] - id: f2726f3d-9044-3663-bede-2a0f37053879 name: 'Mrs. Abbey Gaylord MD' username: madisen51 email: qankunding@example.com image: id: null url: null sectors: [] roles: [] items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Miss Pearl Hauck' username: type: string example: pauline09 email: type: string example: mitchell.matilda@example.org image: type: object properties: id: type: string example: null url: type: string example: null sectors: type: array example: [] roles: type: array example: [] links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - Sectors parameters: - in: path name: sector description: 'Sector UUID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/sectors/{sector}/users/attach': post: summary: 'Attach users to sector' operationId: attachUsersToSector description: 'Attach users to a sector without removing existing ones. Expects an array of user UUIDs in the "users" field.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: 'Users attached successfully' properties: message: type: string example: 'Users attached successfully' tags: - Sectors requestBody: required: false content: application/json: schema: type: object properties: users: type: array description: 'UUID do usuário. The uuid of an existing record in the users table.' example: - 9e13baad-9e20-392f-94ab-6047f7ff6a83 items: type: string parameters: - in: path name: sector description: 'Sector UUID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/sectors/{sector}/users/detach': post: summary: 'Detach users from sector' operationId: detachUsersFromSector description: 'Remove specific users from a sector. Expects an array of user UUIDs in the "users" field.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: 'Users detached successfully' properties: message: type: string example: 'Users detached successfully' tags: - Sectors requestBody: required: false content: application/json: schema: type: object properties: users: type: array description: 'UUID do usuário. The uuid of an existing record in the users table.' example: - c7bf1d68-67aa-3fb7-979d-eaef8e3908bc items: type: string parameters: - in: path name: sector description: 'Sector UUID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/sectors/{sector}/users/sync': post: summary: 'Sync sector users' operationId: syncSectorUsers description: 'Replace all sector users with the provided list. Expects an array of user UUIDs in the "users" field.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: 'Users synchronized successfully' properties: message: type: string example: 'Users synchronized successfully' tags: - Sectors requestBody: required: false content: application/json: schema: type: object properties: users: type: array description: 'UUID do usuário. The uuid of an existing record in the users table.' example: - ea57fb8f-9953-354e-9184-d01c4ec16bb0 items: type: string parameters: - in: path name: sector description: 'Sector UUID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string /api/status-modules: get: summary: 'List status modules' operationId: listStatusModules description: 'List all modules that have status functionality' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - name: 'aut adipisci' slug: nostrum-qui-commodi-incidunt-iure - name: 'omnis autem' slug: consequatur-aut-dolores-enim-non-facere-tempora properties: data: type: array example: - name: 'aut adipisci' slug: nostrum-qui-commodi-incidunt-iure - name: 'omnis autem' slug: consequatur-aut-dolores-enim-non-facere-tempora items: type: object properties: name: type: string example: 'aut adipisci' slug: type: string example: nostrum-qui-commodi-incidunt-iure tags: - 'Status Modules' /api/statuses: get: summary: 'List statuses' operationId: listStatuses description: 'List all statuses' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: 'Em andamento' required: false schema: type: string description: 'Search query.' example: 'Em andamento' nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 description: 'Sr. George de Souza Delvalle' abbreviation: iure color: '#aa8e3f' text_color: '#559641' created_at: null updated_at: null - id: 665a39c0-48af-31f1-a546-aa4f41372488 description: 'Sra. Jéssica Sepúlveda Jr.' abbreviation: aut color: '#005d49' text_color: '#8a9b1e' module: name: Obras slug: work created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 description: 'Sr. George de Souza Delvalle' abbreviation: iure color: '#aa8e3f' text_color: '#559641' created_at: null updated_at: null - id: 665a39c0-48af-31f1-a546-aa4f41372488 description: 'Sra. Jéssica Sepúlveda Jr.' abbreviation: aut color: '#005d49' text_color: '#8a9b1e' module: name: Obras slug: work created_at: null updated_at: null items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 description: type: string example: 'Sr. George de Souza Delvalle' abbreviation: type: string example: iure color: type: string example: '#aa8e3f' text_color: type: string example: '#559641' created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - Statuses post: summary: 'Create status' operationId: createStatus description: 'Create a new status' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Statuses requestBody: required: true content: application/json: schema: type: object properties: description: type: string description: 'O campo value não pode ser superior a 255 caracteres.' example: 'Eius et animi quos velit et.' nullable: false abbreviation: type: string description: 'O campo value não pode ser superior a 255 caracteres.' example: v nullable: false module: type: string description: '' example: architecto nullable: false sector_id: type: string description: 'The uuid of an existing record in the sectors table.' example: architecto nullable: false color: type: string description: '' example: architecto nullable: true text_color: type: string description: '' example: architecto nullable: true required: - description - abbreviation - module - sector_id '/api/statuses/{id}': get: summary: 'Get status' operationId: getStatus description: 'Get a status' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 description: 'Sr. George de Souza Delvalle' abbreviation: iure color: '#aa8e3f' text_color: '#559641' created_at: null updated_at: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 description: type: string example: 'Sr. George de Souza Delvalle' abbreviation: type: string example: iure color: type: string example: '#aa8e3f' text_color: type: string example: '#559641' created_at: type: string example: null updated_at: type: string example: null tags: - Statuses put: summary: 'Update status' operationId: updateStatus description: 'Update a status' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Statuses requestBody: required: true content: application/json: schema: type: object properties: description: type: string description: 'O campo value não pode ser superior a 255 caracteres.' example: 'Eius et animi quos velit et.' nullable: false abbreviation: type: string description: 'O campo value não pode ser superior a 255 caracteres.' example: v nullable: false module: type: string description: '' example: architecto nullable: false sector_id: type: string description: 'The uuid of an existing record in the sectors table.' example: architecto nullable: false color: type: string description: '' example: architecto nullable: true text_color: type: string description: '' example: architecto nullable: true required: - description - abbreviation - module - sector_id parameters: - in: path name: id description: 'The ID of the status.' example: 1 required: true schema: type: integer - in: path name: status description: 'Status ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/statuses/{status}': delete: summary: 'Delete status' operationId: deleteStatus description: 'Delete a status' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - Statuses parameters: - in: path name: status description: 'Status ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string /api/suppliers: get: summary: 'List suppliers' operationId: listSuppliers description: 'List all suppliers' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: 'Supplier name' required: false schema: type: string description: 'Search query.' example: 'Supplier name' nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' email: yohanna44@example.org phone: '(94) 94866-9606' document: 90.915.066/0001-02 type: pj responsible: 'Sra. Katherine de Arruda' image: id: null url: null address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null - id: c71cb930-01f3-381c-9172-e1c70e63388f name: 'Liz Sueli Pacheco Neto' email: jrosa@example.net phone: '(49) 3996-5127' document: 69.737.788/0001-10 type: pf responsible: 'Sr. Rodrigo Gil' image: id: null url: null address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' email: yohanna44@example.org phone: '(94) 94866-9606' document: 90.915.066/0001-02 type: pj responsible: 'Sra. Katherine de Arruda' image: id: null url: null address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null - id: c71cb930-01f3-381c-9172-e1c70e63388f name: 'Liz Sueli Pacheco Neto' email: jrosa@example.net phone: '(49) 3996-5127' document: 69.737.788/0001-10 type: pf responsible: 'Sr. Rodrigo Gil' image: id: null url: null address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' email: type: string example: yohanna44@example.org phone: type: string example: '(94) 94866-9606' document: type: string example: 90.915.066/0001-02 type: type: string example: pj responsible: type: string example: 'Sra. Katherine de Arruda' image: type: object properties: id: type: string example: null url: type: string example: null address: type: object properties: street: type: string example: null number: type: string example: null complement: type: string example: null neighborhood: type: string example: null city: type: string example: null state: type: string example: null zip_code: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - Suppliers post: summary: 'Create supplier' operationId: createSupplier description: 'Create a new supplier' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Suppliers requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Nome. example: 'Example Name' nullable: false email: type: string description: 'E-mail. O campo value deve ser um endereço de e-mail válido.' example: user@example.com nullable: false phone: type: string description: Telefone. example: '(11) 99999-9999' nullable: false document: type: string description: CPF/CNPJ. example: 'Example Document' nullable: false type: type: string description: Tipo. example: 'Example Type' nullable: false enum: - pf - pj responsible: type: string description: Responsável. example: 'Example Responsible' nullable: true image: type: object description: Imagem. example: - example1 - example2 nullable: false properties: path: type: string description: 'Caminho da imagem. This field is required when image is present.' example: 'Example Image path' nullable: false name: type: string description: 'Nome da imagem.' example: 'Example Name' nullable: true extension: type: string description: 'Extensão da imagem.' example: 'Example Image extension' nullable: true size: type: string description: 'Tamanho da imagem.' example: 'Example Image size' nullable: true address: type: object description: Endereço. example: - example1 - example2 nullable: false properties: street: type: string description: Rua. example: 'Example Address street' nullable: false number: type: string description: Número. example: 'Example Address number' nullable: false complement: type: string description: Complemento. example: 'Example Address complement' nullable: false neighborhood: type: string description: Bairro. example: 'Example Address neighborhood' nullable: false city: type: string description: Cidade. example: 'Example Address city' nullable: false state: type: string description: Estado. example: 'Example Address state' nullable: false zip_code: type: string description: CEP. example: 'Example Address zip code' nullable: false required: - street - number - neighborhood - city - state - zip_code required: - name - document - type '/api/suppliers/{id}': get: summary: 'Get supplier' operationId: getSupplier description: 'Get a supplier' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' email: yohanna44@example.org phone: '(94) 94866-9606' document: 90.915.066/0001-02 type: pj responsible: 'Sra. Katherine de Arruda' image: id: null url: null address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' email: type: string example: yohanna44@example.org phone: type: string example: '(94) 94866-9606' document: type: string example: 90.915.066/0001-02 type: type: string example: pj responsible: type: string example: 'Sra. Katherine de Arruda' image: type: object properties: id: type: string example: null url: type: string example: null address: type: object properties: street: type: string example: null number: type: string example: null complement: type: string example: null neighborhood: type: string example: null city: type: string example: null state: type: string example: null zip_code: type: string example: null tags: - Suppliers put: summary: 'Update supplier' operationId: updateSupplier description: 'Update a supplier' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Suppliers requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: Nome. example: 'Example Name' nullable: false email: type: string description: 'E-mail. O campo value deve ser um endereço de e-mail válido.' example: user@example.com nullable: false phone: type: string description: Telefone. example: '(11) 99999-9999' nullable: false document: type: string description: CPF/CNPJ. example: 'Example Document' nullable: false type: type: string description: Tipo. example: 'Example Type' nullable: false enum: - pf - pj responsible: type: string description: Responsável. example: 'Example Responsible' nullable: true image: type: object description: Imagem. example: - example1 - example2 nullable: false properties: path: type: string description: 'Caminho da imagem. This field is required when image is present.' example: 'Example Image path' nullable: false name: type: string description: 'Nome da imagem.' example: 'Example Name' nullable: true extension: type: string description: 'Extensão da imagem.' example: 'Example Image extension' nullable: true size: type: string description: 'Tamanho da imagem.' example: 'Example Image size' nullable: true address: type: object description: Endereço. example: - example1 - example2 nullable: false properties: street: type: string description: Rua. example: 'Example Address street' nullable: false number: type: string description: Número. example: 'Example Address number' nullable: false complement: type: string description: Complemento. example: 'Example Address complement' nullable: false neighborhood: type: string description: Bairro. example: 'Example Address neighborhood' nullable: false city: type: string description: Cidade. example: 'Example Address city' nullable: false state: type: string description: Estado. example: 'Example Address state' nullable: false zip_code: type: string description: CEP. example: 'Example Address zip code' nullable: false parameters: - in: path name: id description: 'The ID of the supplier.' example: 16 required: true schema: type: integer - in: path name: supplier description: 'Supplier ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/suppliers/{supplier}': delete: summary: 'Delete supplier' operationId: deleteSupplier description: 'Delete a supplier' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - Suppliers parameters: - in: path name: supplier description: 'Supplier ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string /api/system-types: get: summary: 'System Types' operationId: systemTypes description: 'Get the system types' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: bankAccountTypes: key: value fileTypes: key: value legalEntityTypes: key: value transactionTypes: key: value properties: data: type: object properties: bankAccountTypes: type: object properties: key: type: string example: value fileTypes: type: object properties: key: type: string example: value legalEntityTypes: type: object properties: key: type: string example: value transactionTypes: type: object properties: key: type: string example: value tags: - 'System Types' /api/transaction-categories: get: summary: 'List transaction categories' operationId: listTransactionCategories description: 'List all transaction categories' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: Salary required: false schema: type: string description: 'Search query.' example: Salary nullable: true - in: query name: type description: 'Transaction type.' example: entrada required: false schema: type: string description: 'Transaction type.' example: entrada nullable: true enum: - entrada - saída - tarifa - depósito - saque - transferência - pagamento - juros - ajuste responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' description: 'Et et modi ipsum nostrum. Autem et consequatur aut dolores enim non facere tempora.' type: saída - id: 8529678e-de6b-32f2-9f70-231a0d681563 name: 'Dr. Erik Dias Feliciano' description: 'Qui repudiandae laboriosam est alias. Ratione nemo voluptate accusamus ut et recusandae modi rerum. Repellendus assumenda et tenetur ab reiciendis.' type: saída links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' description: 'Et et modi ipsum nostrum. Autem et consequatur aut dolores enim non facere tempora.' type: saída - id: 8529678e-de6b-32f2-9f70-231a0d681563 name: 'Dr. Erik Dias Feliciano' description: 'Qui repudiandae laboriosam est alias. Ratione nemo voluptate accusamus ut et recusandae modi rerum. Repellendus assumenda et tenetur ab reiciendis.' type: saída items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' description: type: string example: 'Et et modi ipsum nostrum. Autem et consequatur aut dolores enim non facere tempora.' type: type: string example: saída links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Transaction Categories' post: summary: 'Create transaction category' operationId: createTransactionCategory description: 'Create a new transaction category' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Transaction Categories' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Name. example: 'Example Name' nullable: false description: type: string description: Description. example: 'Example Description' nullable: false type: type: string description: Type. example: 'Example Type' nullable: false enum: - entrada - saída - tarifa - depósito - saque - transferência - pagamento - juros - ajuste required: - name - type '/api/transaction-categories/{transactionCategory}': get: summary: 'Show transaction category' operationId: showTransactionCategory description: 'Show a transaction category' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' description: 'Et et modi ipsum nostrum. Autem et consequatur aut dolores enim non facere tempora.' type: saída properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' description: type: string example: 'Et et modi ipsum nostrum. Autem et consequatur aut dolores enim non facere tempora.' type: type: string example: saída tags: - 'Transaction Categories' put: summary: 'Update transaction category' operationId: updateTransactionCategory description: 'Update a transaction category' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Transaction Categories' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Name. example: 'Example Name' nullable: false description: type: string description: Description. example: 'Example Description' nullable: false type: type: string description: Type. example: 'Example Type' nullable: false enum: - entrada - saída - tarifa - depósito - saque - transferência - pagamento - juros - ajuste required: - name - type delete: summary: 'Delete transaction category' operationId: deleteTransactionCategory description: 'Delete a transaction category' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - 'Transaction Categories' parameters: - in: path name: transactionCategory description: 'Transaction category UUID' example: architecto required: true schema: type: string /api/units: get: summary: 'List units' operationId: listUnits description: 'List all units' parameters: - in: query name: q description: '' example: Structure required: false schema: type: string description: '' example: Structure nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' abbreviation: 'Edilson Caldeira Filho' description: 'Id aut libero aliquam veniam.' created_at: null updated_at: null - id: 2024410d-26cd-3763-b1f0-31011d306e58 name: 'Dr. Luciano Valência Delvalle' abbreviation: 'Erik Matheus Feliciano Filho' description: 'Et error neque recusandae et.' created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' abbreviation: 'Edilson Caldeira Filho' description: 'Id aut libero aliquam veniam.' created_at: null updated_at: null - id: 2024410d-26cd-3763-b1f0-31011d306e58 name: 'Dr. Luciano Valência Delvalle' abbreviation: 'Erik Matheus Feliciano Filho' description: 'Et error neque recusandae et.' created_at: null updated_at: null items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' abbreviation: type: string example: 'Edilson Caldeira Filho' description: type: string example: 'Id aut libero aliquam veniam.' created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - Units post: summary: 'Create unit' operationId: createUnit description: 'Create a new unit' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Units requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: '' example: architecto nullable: false abbreviation: type: string description: '' example: architecto nullable: false description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true required: - name - abbreviation '/api/units/{id}': get: summary: 'Show unit' operationId: showUnit description: 'Show a unit' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' abbreviation: 'Edilson Caldeira Filho' description: 'Id aut libero aliquam veniam.' created_at: null updated_at: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' abbreviation: type: string example: 'Edilson Caldeira Filho' description: type: string example: 'Id aut libero aliquam veniam.' created_at: type: string example: null updated_at: type: string example: null tags: - Units put: summary: 'Update unit' operationId: updateUnit description: 'Update a unit' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Units requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: '' example: architecto nullable: false abbreviation: type: string description: '' example: architecto nullable: false description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true required: - name - abbreviation parameters: - in: path name: id description: 'The ID of the unit.' example: 1 required: true schema: type: integer - in: path name: unit description: 'Unit UUID' example: architecto required: true schema: type: string '/api/units/{unit}': delete: summary: 'Delete unit' operationId: deleteUnit description: 'Delete a unit' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - Units parameters: - in: path name: unit description: 'Unit UUID' example: architecto required: true schema: type: string /api/users: get: summary: 'List users' operationId: listUsers description: 'List all users' parameters: - in: query name: q description: 'Search query.' example: 'User name' required: false schema: type: string description: 'Search query.' example: 'User name' nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Miss Pearl Hauck' username: balistreri.josiane email: wbatz@example.net image: id: null url: null sectors: [] roles: [] - id: 8529678e-de6b-32f2-9f70-231a0d681563 name: 'Gerhard Beier' username: doris.franecki email: pagac.skylar@example.org image: id: null url: null sectors: [] roles: [] links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Miss Pearl Hauck' username: balistreri.josiane email: wbatz@example.net image: id: null url: null sectors: [] roles: [] - id: 8529678e-de6b-32f2-9f70-231a0d681563 name: 'Gerhard Beier' username: doris.franecki email: pagac.skylar@example.org image: id: null url: null sectors: [] roles: [] items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Miss Pearl Hauck' username: type: string example: balistreri.josiane email: type: string example: wbatz@example.net image: type: object properties: id: type: string example: null url: type: string example: null sectors: type: array example: [] roles: type: array example: [] links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - Users post: summary: 'Create user' operationId: createUser description: 'Create a new user' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Users requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Nome. example: 'Example Name' nullable: false email: type: string description: 'E-mail. O campo value deve ser um endereço de e-mail válido.' example: user@example.com nullable: false username: type: string description: Usuário. example: schmidt.elton nullable: false image: type: object description: Imagem. example: - example1 - example2 nullable: false properties: path: type: string description: 'Caminho da imagem. This field is required when image is present.' example: 'Example Image path' nullable: false name: type: string description: 'Nome da imagem.' example: 'Example Name' nullable: true extension: type: string description: 'Extensão da imagem.' example: 'Example Image extension' nullable: true size: type: string description: 'Tamanho da imagem.' example: 'Example Image size' nullable: true sectors: type: array description: 'UUID do setor. The uuid of an existing record in the sectors table.' example: - 067d00f5-e958-3b01-bc80-7e5e367be869 items: type: string roles: type: array description: 'UUID da função. The uuid of an existing record in the roles table.' example: - af49b819-28db-33bd-b66b-66e0bad1c5fa items: type: string required: - name - email - username /api/users/technical: get: summary: 'List technical users' operationId: listTechnicalUsers description: 'List all users from the technical sector' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Miss Pearl Hauck' email: oking@example.net - id: 0733da06-3f67-3b0d-b923-684c336397e5 name: 'Vito Bradtke' email: skylar.kuvalis@example.net properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Miss Pearl Hauck' email: oking@example.net - id: 0733da06-3f67-3b0d-b923-684c336397e5 name: 'Vito Bradtke' email: skylar.kuvalis@example.net items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Miss Pearl Hauck' email: type: string example: oking@example.net tags: - Users '/api/users/{id}': get: summary: 'Get user' operationId: getUser description: 'Get a user' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Miss Pearl Hauck' username: libby.bradtke email: torp.florence@example.org image: id: null url: null sectors: [] roles: [] properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Miss Pearl Hauck' username: type: string example: libby.bradtke email: type: string example: torp.florence@example.org image: type: object properties: id: type: string example: null url: type: string example: null sectors: type: array example: [] roles: type: array example: [] tags: - Users put: summary: 'Update user' operationId: updateUser description: 'Update a user' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Users requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: Nome. example: 'Example Name' nullable: false email: type: string description: 'E-mail. O campo value deve ser um endereço de e-mail válido.' example: user@example.com nullable: false username: type: string description: Usuário. example: franecki.brennon nullable: false password: type: string description: Password. example: password123 nullable: false image: type: object description: Imagem. example: - example1 - example2 nullable: false properties: path: type: string description: 'Caminho da imagem. This field is required when image is present.' example: 'Example Image path' nullable: false name: type: string description: 'Nome da imagem.' example: 'Example Name' nullable: true extension: type: string description: 'Extensão da imagem.' example: 'Example Image extension' nullable: true size: type: string description: 'Tamanho da imagem.' example: 'Example Image size' nullable: true sectors: type: array description: 'UUID do setor. The uuid of an existing record in the sectors table.' example: - 4d08ad85-13a7-32e9-86de-fb3dca87190a items: type: string roles: type: array description: 'UUID da função. The uuid of an existing record in the roles table.' example: - 143f14ee-91a0-3454-b6d3-a0238f33b92b items: type: string parameters: - in: path name: id description: 'The ID of the user.' example: 1 required: true schema: type: integer '/api/users/{user}': delete: summary: 'Delete user' operationId: deleteUser description: 'Delete a user' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Users parameters: - in: path name: user description: 'The user.' example: 1 required: true schema: type: integer '/api/users/{user}/password-reset': put: summary: 'Reset user password' operationId: resetUserPassword description: 'Reset a user password' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: 'Password reset successfully to foobaar' properties: message: type: string example: 'Password reset successfully to foobaar' tags: - Users parameters: - in: path name: user description: 'User ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/users/{user}/permissions': put: summary: 'Attach permissions to user' operationId: attachPermissionsToUser description: 'Attach direct permissions to a user' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: 'Permissions attached successfully' properties: message: type: string example: 'Permissions attached successfully' tags: - Users requestBody: required: false content: application/json: schema: type: object properties: permissions: type: array description: 'UUID da permissão. The uuid of an existing record in the permissions table.' example: - bfc53181-d647-36b2-9080-f9c2b76006f4 items: type: string get: summary: 'List user direct permissions' operationId: listUserDirectPermissions description: 'List direct permissions associated with a user' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: null name: quidem display_name: 'Qui commodi incidunt iure odit.' - id: null name: modi display_name: 'Nostrum omnis autem et consequatur aut.' properties: data: type: array example: - id: null name: quidem display_name: 'Qui commodi incidunt iure odit.' - id: null name: modi display_name: 'Nostrum omnis autem et consequatur aut.' items: type: object properties: id: type: string example: null name: type: string example: quidem display_name: type: string example: 'Qui commodi incidunt iure odit.' tags: - Users parameters: - in: path name: user description: 'The user.' example: 1 required: true schema: type: integer /api/work-locations: get: summary: 'List work locations' operationId: listWorkLocations description: 'List all work locations' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: Tecnologia required: false schema: type: string description: 'Search query.' example: Tecnologia nullable: true - in: query name: work description: 'Work. The uuid of an existing record in the works table.' example: uuid required: false schema: type: string description: 'Work. The uuid of an existing record in the works table.' example: uuid nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 6023129e-4a4c-3fb7-aabd-6705713f48df description: 'Robson Deivid Gonçalves' work: id: null name: null documents: [] created_at: null updated_at: null - id: b3cdfe01-3e7d-3d5c-b9e1-6ae6f47fb11f description: 'Dr. James Teles Neto' work: id: null name: null documents: [] created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: 6023129e-4a4c-3fb7-aabd-6705713f48df description: 'Robson Deivid Gonçalves' work: id: null name: null documents: [] created_at: null updated_at: null - id: b3cdfe01-3e7d-3d5c-b9e1-6ae6f47fb11f description: 'Dr. James Teles Neto' work: id: null name: null documents: [] created_at: null updated_at: null items: type: object properties: id: type: string example: 6023129e-4a4c-3fb7-aabd-6705713f48df description: type: string example: 'Robson Deivid Gonçalves' work: type: object properties: id: type: string example: null name: type: string example: null documents: type: array example: [] created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Work Locations' post: summary: 'Create work location' operationId: createWorkLocation description: 'Create a new work location' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Work Locations' requestBody: required: true content: application/json: schema: type: object properties: description: type: string description: 'O campo value não pode ser superior a 255 caracteres.' example: 'Eius et animi quos velit et.' nullable: false work_id: type: string description: 'The uuid of an existing record in the works table.' example: architecto nullable: false required: - description - work_id '/api/work-locations/{workLocation}': get: summary: 'Get work location' operationId: getWorkLocation description: 'Get a work location' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 description: 'Sr. George de Souza Delvalle' work: id: null name: null documents: [] created_at: null updated_at: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 description: type: string example: 'Sr. George de Souza Delvalle' work: type: object properties: id: type: string example: null name: type: string example: null documents: type: array example: [] created_at: type: string example: null updated_at: type: string example: null tags: - 'Work Locations' put: summary: 'Update work location' operationId: updateWorkLocation description: 'Update a work location' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Work Locations' requestBody: required: true content: application/json: schema: type: object properties: description: type: string description: 'O campo value não pode ser superior a 255 caracteres.' example: 'Eius et animi quos velit et.' nullable: false work_id: type: string description: 'The uuid of an existing record in the works table.' example: null nullable: false required: - description delete: summary: 'Delete work location' operationId: deleteWorkLocation description: 'Delete a work location' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - 'Work Locations' parameters: - in: path name: workLocation description: 'Work Location ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string /api/works: get: summary: 'List works' operationId: listWorks description: 'List all works' parameters: - in: query name: sortBy description: 'Field to sort by.' example: created_at required: false schema: type: string description: 'Field to sort by.' example: created_at nullable: true - in: query name: sortDesc description: 'Sort order (true for descending, false for ascending).' example: true required: false schema: type: boolean description: 'Sort order (true for descending, false for ascending).' example: true nullable: true - in: query name: q description: 'Search query.' example: Tecnologia required: false schema: type: string description: 'Search query.' example: Tecnologia nullable: true responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null documents: [] locations: [] responsibles: [] started_at: date: '1983-05-17 00:07:42.000000' timezone_type: 3 timezone: America/Sao_Paulo created_at: null updated_at: null - id: d9be5934-80e7-34a9-a136-841b5f0aea83 name: 'Wilson Zamana Valdez Sobrinho' address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null documents: [] locations: [] responsibles: [] started_at: date: '2009-07-27 01:40:06.000000' timezone_type: 3 timezone: America/Sao_Paulo created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null documents: [] locations: [] responsibles: [] started_at: date: '1983-05-17 00:07:42.000000' timezone_type: 3 timezone: America/Sao_Paulo created_at: null updated_at: null - id: d9be5934-80e7-34a9-a136-841b5f0aea83 name: 'Wilson Zamana Valdez Sobrinho' address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null documents: [] locations: [] responsibles: [] started_at: date: '2009-07-27 01:40:06.000000' timezone_type: 3 timezone: America/Sao_Paulo created_at: null updated_at: null items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' address: type: object properties: street: type: string example: null number: type: string example: null complement: type: string example: null neighborhood: type: string example: null city: type: string example: null state: type: string example: null zip_code: type: string example: null documents: type: array example: [] locations: type: array example: [] responsibles: type: array example: [] started_at: type: object properties: date: type: string example: '1983-05-17 00:07:42.000000' timezone_type: type: integer example: 3 timezone: type: string example: America/Sao_Paulo created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - Works post: summary: 'Create work' operationId: createWork description: 'Create a new work' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Works requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'O campo value não pode ser superior a 255 caracteres.' example: b nullable: false customer_id: type: string description: 'The uuid of an existing record in the customers table.' example: architecto nullable: false status_id: type: string description: 'The uuid of an existing record in the statuses table.' example: architecto nullable: false started_at: type: string description: 'O campo value deve ser uma data válida.' example: '2025-11-26T20:09:22' nullable: true address: type: object description: '' example: [] nullable: false properties: street: type: string description: '' example: architecto nullable: false number: type: string description: '' example: architecto nullable: false complement: type: string description: '' example: null nullable: false neighborhood: type: string description: '' example: architecto nullable: false city: type: string description: '' example: architecto nullable: false state: type: string description: '' example: architecto nullable: false zip_code: type: string description: '' example: architecto nullable: false required: - street - number - neighborhood - city - state - zip_code required: - name - customer_id - status_id - address '/api/works/{id}': get: summary: 'Get work' operationId: getWork description: 'Get a work' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' address: street: null number: null complement: null neighborhood: null city: null state: null zip_code: null documents: [] locations: [] responsibles: [] started_at: date: '1983-05-17 00:07:42.000000' timezone_type: 3 timezone: America/Sao_Paulo created_at: null updated_at: null properties: data: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' address: type: object properties: street: type: string example: null number: type: string example: null complement: type: string example: null neighborhood: type: string example: null city: type: string example: null state: type: string example: null zip_code: type: string example: null documents: type: array example: [] locations: type: array example: [] responsibles: type: array example: [] started_at: type: object properties: date: type: string example: '1983-05-17 00:07:42.000000' timezone_type: type: integer example: 3 timezone: type: string example: America/Sao_Paulo created_at: type: string example: null updated_at: type: string example: null tags: - Works put: summary: 'Update work' operationId: updateWork description: 'Update a work' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - Works requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'O campo value não pode ser superior a 255 caracteres.' example: b nullable: false customer_id: type: string description: 'The uuid of an existing record in the customers table.' example: architecto nullable: false status_id: type: string description: 'The uuid of an existing record in the statuses table.' example: architecto nullable: false started_at: type: string description: 'O campo value deve ser uma data válida.' example: '2025-11-26T20:09:22' nullable: true address: type: object description: '' example: null nullable: false properties: street: type: string description: '' example: null nullable: false number: type: string description: '' example: null nullable: false complement: type: string description: '' example: null nullable: false neighborhood: type: string description: '' example: null nullable: false city: type: string description: '' example: null nullable: false state: type: string description: '' example: null nullable: false zip_code: type: string description: '' example: null nullable: false required: - name - customer_id - status_id delete: summary: 'Delete work' operationId: deleteWork description: 'Delete a work' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - Works parameters: - in: path name: id description: 'The ID of the work.' example: 1 required: true schema: type: integer - in: path name: work description: 'Work ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/works/{work}/responsibles': get: summary: 'List work responsibles' operationId: listWorkResponsibles description: 'List all responsibles assigned to a work' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' email: yohanna44@example.org phone: '(94) 94866-9606' role: consequatur created_at: null updated_at: null - id: ac9e0973-adfe-32df-ade4-9b9752e8c6ad name: 'Srta. Maitê Simone Rangel' email: sandra09@example.com phone: '(98) 4569-6081' role: doloremque created_at: null updated_at: null links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: array example: - id: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' email: yohanna44@example.org phone: '(94) 94866-9606' role: consequatur created_at: null updated_at: null - id: ac9e0973-adfe-32df-ade4-9b9752e8c6ad name: 'Srta. Maitê Simone Rangel' email: sandra09@example.com phone: '(98) 4569-6081' role: doloremque created_at: null updated_at: null items: type: object properties: id: type: string example: bfc53181-d647-36b2-9080-f9c2b76006f4 name: type: string example: 'Sr. George de Souza Delvalle' email: type: string example: yohanna44@example.org phone: type: string example: '(94) 94866-9606' role: type: string example: consequatur created_at: type: string example: null updated_at: type: string example: null links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Anterior' page: null active: false - url: '/?page=1' label: '1' page: 1 active: true - url: null label: 'Próximo »' page: null active: false items: type: object properties: url: type: string example: null label: type: string example: '« Anterior' page: type: string example: null active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - Works parameters: - in: path name: work description: 'Work UUID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/works/{work}/responsibles/attach': post: summary: 'Attach responsibles to work' operationId: attachResponsiblesToWork description: 'Attach responsibles to a work without removing existing ones. Expects an array of responsible UUIDs in the "responsibles" field.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: 'Responsibles attached successfully' properties: message: type: string example: 'Responsibles attached successfully' tags: - Works requestBody: required: false content: application/json: schema: type: object properties: responsibles: type: array description: 'UUID do responsável. The uuid of an existing record in the responsibles table.' example: - bfc53181-d647-36b2-9080-f9c2b76006f4 items: type: string parameters: - in: path name: work description: 'Work UUID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/works/{work}/responsibles/detach': post: summary: 'Detach responsibles from work' operationId: detachResponsiblesFromWork description: 'Remove specific responsibles from a work. Expects an array of responsible UUIDs in the "responsibles" field.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: 'Responsibles detached successfully' properties: message: type: string example: 'Responsibles detached successfully' tags: - Works requestBody: required: false content: application/json: schema: type: object properties: responsibles: type: array description: 'UUID do responsável. The uuid of an existing record in the responsibles table.' example: - bfc53181-d647-36b2-9080-f9c2b76006f4 items: type: string parameters: - in: path name: work description: 'Work UUID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/works/{work}/responsibles/sync': post: summary: 'Sync work responsibles' operationId: syncWorkResponsibles description: 'Replace all work responsibles with the provided list. Expects an array of responsible UUIDs in the "responsibles" field.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: 'Responsibles synchronized successfully' properties: message: type: string example: 'Responsibles synchronized successfully' tags: - Works requestBody: required: false content: application/json: schema: type: object properties: responsibles: type: array description: 'UUID do responsável. The uuid of an existing record in the responsibles table.' example: - bfc53181-d647-36b2-9080-f9c2b76006f4 items: type: string parameters: - in: path name: work description: 'Work UUID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string