openapi: 3.0.3 info: title: 'BS Homolog API Documentation' description: '' version: 1.0.0 servers: - url: 'https://api.bs-homolog.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: Files description: 'Endpoints for files' - name: Import description: 'Endpoints for managing NFe imports and product processing.' - name: Notifications description: 'Endpoints for user notifications' - name: 'Payment Receipts' description: 'Endpoints for payment receipts' - 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: 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: distinctio display_name: 'Aut aut harum consequatur aliquam voluptatum est.' - id: null name: sint display_name: 'Itaque nulla eveniet omnis dolor quia.' 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: distinctio display_name: 'Aut aut harum consequatur aliquam voluptatum est.' - id: null name: sint display_name: 'Itaque nulla eveniet omnis dolor quia.' items: type: object properties: id: type: string example: null name: type: string example: distinctio display_name: type: string example: 'Aut aut harum consequatur aliquam voluptatum est.' 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-11-30T03: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-11-30T03: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-11-30T03: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-11-30T03: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-11-30T03: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-13T03: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-10T03: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-13T03: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-10T03: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-13T03: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 - yearly 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-11-30T03: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-11-30T03: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 - yearly 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: 1 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: 1 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-15T14:37:50.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-07-05T09:27:10.000000Z' - id: fa253524-dd6a-3fdb-a788-0cabcf134db7 opened_by: null opened_at: '2019-04-24T14:23:29.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-15T14:37:50.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-07-05T09:27:10.000000Z' - id: fa253524-dd6a-3fdb-a788-0cabcf134db7 opened_by: null opened_at: '2019-04-24T14:23:29.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-15T14:37:50.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-07-05T09:27:10.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-15T14:37:50.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-07-05T09:27:10.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-15T14:37:50.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-07-05T09:27:10.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-15T14:37:50.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-07-05T09:27:10.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-15T14:37:50.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-07-05T09:27:10.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: 1 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: 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 - address '/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: 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 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: 1cb84941-0d38-3f36-a303-52c729118062 name: 'Dr. Aline Uchoa Marinho' file: id: null url: null extension: null created_at: null updated_at: null - id: 0aa2596d-721f-3edf-b368-2ae1f0283e9a name: 'Dr. Augusto Serna Filho' file: id: null url: null extension: 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: 1cb84941-0d38-3f36-a303-52c729118062 name: 'Dr. Aline Uchoa Marinho' file: id: null url: null extension: null created_at: null updated_at: null - id: 0aa2596d-721f-3edf-b368-2ae1f0283e9a name: 'Dr. Augusto Serna Filho' file: id: null url: null extension: null created_at: null updated_at: null items: type: object properties: id: type: string example: 1cb84941-0d38-3f36-a303-52c729118062 name: type: string example: 'Dr. Aline Uchoa Marinho' file: type: object properties: id: type: string example: null url: type: string example: null extension: 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}': 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/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: 1a8810c7-a4f4-4b78-86a2-e51fc330acff name: aut description: 'Nostrum qui commodi incidunt iure.' created_at: null updated_at: null - id: 70e60e79-6186-4ed8-b1ae-046e6425860c 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: 1a8810c7-a4f4-4b78-86a2-e51fc330acff name: aut description: 'Nostrum qui commodi incidunt iure.' created_at: null updated_at: null - id: 70e60e79-6186-4ed8-b1ae-046e6425860c name: odit description: 'Modi ipsum nostrum omnis autem et.' created_at: null updated_at: null items: type: object properties: id: type: string example: 1a8810c7-a4f4-4b78-86a2-e51fc330acff 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: b634995e-2503-43ac-9e6f-71b9ec450d76 name: aut description: 'Nostrum qui commodi incidunt iure.' created_at: null updated_at: null properties: data: type: object properties: id: type: string example: b634995e-2503-43ac-9e6f-71b9ec450d76 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: a2359255-77c0-4229-b524-f2d4df1b46ab name: 'Rodrigo Leon' cpf: 421.700.432-81 rg: '590214902' ctps: null phone: null birthdate: '1982-08-07' 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: 4d54c222-da9c-4039-ba84-14ec0d21fa0d 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: a2359255-77c0-4229-b524-f2d4df1b46ab name: 'Rodrigo Leon' cpf: 421.700.432-81 rg: '590214902' ctps: null phone: null birthdate: '1982-08-07' 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: 4d54c222-da9c-4039-ba84-14ec0d21fa0d 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: a2359255-77c0-4229-b524-f2d4df1b46ab 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-08-07' 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-14T16:40:48' 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: 88a8a182-73e1-4523-825d-a1d22d8fcf28 name: 'Rodrigo Leon' cpf: 421.700.432-81 rg: '590214902' ctps: null phone: null birthdate: '1982-08-07' 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: 88a8a182-73e1-4523-825d-a1d22d8fcf28 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-08-07' 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-14T16:40:48' 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: 1 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/{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/payment-receipts: get: summary: 'List payment receipts' operationId: listPaymentReceipts description: 'List all payment receipts with filters' 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 (searches in receiver name, document, and receipt number).' example: 'João Silva' required: false schema: type: string description: 'Search query (searches in receiver name, document, and receipt number).' example: 'João Silva' nullable: true - in: query name: employee_id description: 'Filter by employee ID. The id of an existing record in the employees table.' example: 1 required: false schema: type: integer description: 'Filter by employee ID. The id of an existing record in the employees table.' example: 1 nullable: false - in: query name: receiver_type description: 'Filter by receiver type.' example: employee required: false schema: type: string description: 'Filter by receiver type.' example: employee nullable: false enum: - employee - custom - in: query name: start_date description: 'Filter by issue date (start). O campo value deve ser uma data válida.' example: '2025-01-01' required: false schema: type: string description: 'Filter by issue date (start). O campo value deve ser uma data válida.' example: '2025-01-01' nullable: false - in: query name: end_date description: 'Filter by issue date (end). O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a start_date.' example: '2025-12-31' required: false schema: type: string description: 'Filter by issue date (end). O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a start_date.' example: '2025-12-31' nullable: false - in: query name: min_amount description: 'Filter by minimum amount. O campo value deve ser pelo menos 0.' example: 100.0 required: false schema: type: number description: 'Filter by minimum amount. O campo value deve ser pelo menos 0.' example: 100.0 nullable: false - in: query name: max_amount description: 'Filter by maximum amount. O campo value deve ser pelo menos 0.' example: 1000.0 required: false schema: type: number description: 'Filter by maximum amount. O campo value deve ser pelo menos 0.' example: 1000.0 nullable: false - in: query name: payment_method description: 'Filter by payment method.' example: PIX required: false schema: type: string description: 'Filter by payment method.' example: PIX nullable: false - in: query name: city description: 'Filter by city.' example: 'São Paulo' required: false schema: type: string description: 'Filter by city.' example: 'São Paulo' nullable: false - in: query name: search description: '' example: architecto required: false schema: type: string description: '' example: architecto nullable: false - in: query name: document description: '' example: architecto required: false schema: type: string description: '' example: architecto nullable: false - 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: 22 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: 22 nullable: false responses: 200: description: '' content: application/json: schema: type: object example: data: - id: null receipt_number: null receiver_type: null receiver: id: null name: null document: null payment: amount: 0 amount_in_words: null method: null description: null issuer: name: null document: null issue: date: null city: null state: null created_by: id: null name: null created_at: null updated_at: null - id: null receipt_number: null receiver_type: null receiver: id: null name: null document: null payment: amount: 0 amount_in_words: null method: null description: null issuer: name: null document: null issue: date: null city: null state: null created_by: id: null name: null created_at: null updated_at: null pagination: total: 2 count: 2 per_page: 10 current_page: 1 total_pages: 1 has_more_pages: false 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 receipt_number: null receiver_type: null receiver: id: null name: null document: null payment: amount: 0 amount_in_words: null method: null description: null issuer: name: null document: null issue: date: null city: null state: null created_by: id: null name: null created_at: null updated_at: null - id: null receipt_number: null receiver_type: null receiver: id: null name: null document: null payment: amount: 0 amount_in_words: null method: null description: null issuer: name: null document: null issue: date: null city: null state: null created_by: id: null name: null created_at: null updated_at: null items: type: object properties: id: type: string example: null receipt_number: type: string example: null receiver_type: type: string example: null receiver: type: object properties: id: type: string example: null name: type: string example: null document: type: string example: null payment: type: object properties: amount: type: integer example: 0 amount_in_words: type: string example: null method: type: string example: null description: type: string example: null issuer: type: object properties: name: type: string example: null document: type: string example: null issue: type: object properties: date: type: string example: null city: type: string example: null state: type: string example: null created_by: 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 pagination: type: object properties: total: type: integer example: 2 count: type: integer example: 2 per_page: type: integer example: 10 current_page: type: integer example: 1 total_pages: type: integer example: 1 has_more_pages: type: boolean example: false 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: - 'Payment Receipts' post: summary: 'Create payment receipt' operationId: createPaymentReceipt description: 'Create a new payment receipt' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Payment Receipts' requestBody: required: true content: application/json: schema: type: object properties: receiver_type: type: string description: 'Tipo de Recebedor.' example: 'Example Receiver type' nullable: false enum: - employee - custom employee_id: type: string description: 'Funcionário. This field is required when receiver_type is employee. The id of an existing record in the employees table.' example: 844c85f8-1f76-417d-95f4-ca45b947bd0d nullable: true receiver_name: type: string description: 'Nome do Recebedor. This field is required when receiver_type is custom. O campo value não pode ser superior a 255 caracteres.' example: 'Example Name' nullable: true receiver_document: type: string description: 'Documento do Recebedor. This field is required when receiver_type is custom. O campo value não pode ser superior a 255 caracteres.' example: 'Example Receiver document' nullable: true amount: type: number description: 'Valor. O campo value deve ser pelo menos 0.01.' example: 1.0 nullable: false amount_in_words: type: string description: 'Valor por Extenso.' example: 'Example Amount in words' nullable: false payment_method: type: string description: 'Método de Pagamento. O campo value não pode ser superior a 255 caracteres.' example: 'Example Payment method' nullable: false description: type: string description: Descrição. example: 'Example Description' nullable: false issuer_name: type: string description: 'Nome do Emissor. O campo value não pode ser superior a 255 caracteres.' example: 'Example Name' nullable: false issuer_document: type: string description: 'Documento do Emissor. O campo value não pode ser superior a 255 caracteres.' example: 'Example Issuer document' nullable: false issue_date: type: string description: 'Data de Emissão. O campo value deve ser uma data válida. O campo value deve ser uma data anterior ou igual a today.' example: '2024-01-01' nullable: false city: type: string description: 'Cidade. O campo value não pode ser superior a 255 caracteres.' example: 'Example City' nullable: false state: type: string description: 'Estado. O campo value não pode ser superior a 2 caracteres.' example: 'Example State' nullable: false required: - receiver_type - amount - payment_method - description - issuer_name - issuer_document - issue_date - city - state '/api/payment-receipts/{receipt}': get: summary: 'Show payment receipt' operationId: showPaymentReceipt description: 'Show a payment receipt' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: null receipt_number: null receiver_type: null receiver: id: null name: null document: null payment: amount: 0 amount_in_words: null method: null description: null issuer: name: null document: null issue: date: null city: null state: null created_by: id: null name: null created_at: null updated_at: null properties: data: type: object properties: id: type: string example: null receipt_number: type: string example: null receiver_type: type: string example: null receiver: type: object properties: id: type: string example: null name: type: string example: null document: type: string example: null payment: type: object properties: amount: type: integer example: 0 amount_in_words: type: string example: null method: type: string example: null description: type: string example: null issuer: type: object properties: name: type: string example: null document: type: string example: null issue: type: object properties: date: type: string example: null city: type: string example: null state: type: string example: null created_by: 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: - 'Payment Receipts' put: summary: 'Update payment receipt' operationId: updatePaymentReceipt description: 'Update a payment receipt' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: string properties: message: type: string example: string tags: - 'Payment Receipts' requestBody: required: false content: application/json: schema: type: object properties: receiver_type: type: string description: 'Tipo de Recebedor.' example: 'Example Receiver type' nullable: false enum: - employee - custom employee_id: type: string description: 'Funcionário. This field is required when receiver_type is employee. The id of an existing record in the employees table.' example: 99f62a43-7d24-4144-a192-da6e5922c79a nullable: true receiver_name: type: string description: 'Nome do Recebedor. This field is required when receiver_type is custom. O campo value não pode ser superior a 255 caracteres.' example: 'Example Name' nullable: true receiver_document: type: string description: 'Documento do Recebedor. This field is required when receiver_type is custom. O campo value não pode ser superior a 255 caracteres.' example: 'Example Receiver document' nullable: true amount: type: number description: 'Valor. O campo value deve ser pelo menos 0.01.' example: 1.0 nullable: false amount_in_words: type: string description: 'Valor por Extenso.' example: 'Example Amount in words' nullable: false payment_method: type: string description: 'Método de Pagamento. O campo value não pode ser superior a 255 caracteres.' example: 'Example Payment method' nullable: false description: type: string description: Descrição. example: 'Example Description' nullable: false issuer_name: type: string description: 'Nome do Emissor. O campo value não pode ser superior a 255 caracteres.' example: 'Example Name' nullable: false issuer_document: type: string description: 'Documento do Emissor. O campo value não pode ser superior a 255 caracteres.' example: 'Example Issuer document' nullable: false issue_date: type: string description: 'Data de Emissão. O campo value deve ser uma data válida. O campo value deve ser uma data anterior ou igual a today.' example: '2024-01-01' nullable: false city: type: string description: 'Cidade. O campo value não pode ser superior a 255 caracteres.' example: 'Example City' nullable: false state: type: string description: 'Estado. O campo value não pode ser superior a 2 caracteres.' example: 'Example State' nullable: false delete: summary: 'Delete payment receipt' operationId: deletePaymentReceipt description: 'Delete a payment receipt' parameters: [] responses: 204: description: '' content: application/json: schema: type: object nullable: true tags: - 'Payment Receipts' parameters: - in: path name: receipt description: 'Payment Receipt ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string '/api/employees/{employee_id}/receipts': get: summary: 'List employee receipts' operationId: listEmployeeReceipts description: 'List all payment receipts for a specific employee' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: null receipt_number: null receiver_type: null receiver: id: null name: null document: null payment: amount: 0 amount_in_words: null method: null description: null issuer: name: null document: null issue: date: null city: null state: null created_by: id: null name: null created_at: null updated_at: null - id: null receipt_number: null receiver_type: null receiver: id: null name: null document: null payment: amount: 0 amount_in_words: null method: null description: null issuer: name: null document: null issue: date: null city: null state: null created_by: id: null name: null created_at: null updated_at: null pagination: total: 2 count: 2 per_page: 10 current_page: 1 total_pages: 1 has_more_pages: false 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 receipt_number: null receiver_type: null receiver: id: null name: null document: null payment: amount: 0 amount_in_words: null method: null description: null issuer: name: null document: null issue: date: null city: null state: null created_by: id: null name: null created_at: null updated_at: null - id: null receipt_number: null receiver_type: null receiver: id: null name: null document: null payment: amount: 0 amount_in_words: null method: null description: null issuer: name: null document: null issue: date: null city: null state: null created_by: id: null name: null created_at: null updated_at: null items: type: object properties: id: type: string example: null receipt_number: type: string example: null receiver_type: type: string example: null receiver: type: object properties: id: type: string example: null name: type: string example: null document: type: string example: null payment: type: object properties: amount: type: integer example: 0 amount_in_words: type: string example: null method: type: string example: null description: type: string example: null issuer: type: object properties: name: type: string example: null document: type: string example: null issue: type: object properties: date: type: string example: null city: type: string example: null state: type: string example: null created_by: 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 pagination: type: object properties: total: type: integer example: 2 count: type: integer example: 2 per_page: type: integer example: 10 current_page: type: integer example: 1 total_pages: type: integer example: 1 has_more_pages: type: boolean example: false 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: - 'Payment Receipts' parameters: - in: path name: employee_id description: 'The ID of the employee.' example: 1 required: true schema: type: integer - in: path name: employee description: 'Employee ID' example: 019556e7-2e9f-777c-a177-30bbf0646c32 required: true schema: type: string /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: 62dd610c-4a82-34c4-975a-5cdb355260af name: quibusdam-ut display_name: 'similique officia sit' created_at: null updated_at: null - id: 77d2d404-3230-3975-81bf-a63880d5974b name: voluptas-assumenda-laborum display_name: 'aut commodi eligendi' 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: 62dd610c-4a82-34c4-975a-5cdb355260af name: quibusdam-ut display_name: 'similique officia sit' created_at: null updated_at: null - id: 77d2d404-3230-3975-81bf-a63880d5974b name: voluptas-assumenda-laborum display_name: 'aut commodi eligendi' created_at: null updated_at: null items: type: object properties: id: type: string example: 62dd610c-4a82-34c4-975a-5cdb355260af name: type: string example: quibusdam-ut display_name: type: string example: 'similique officia sit' 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 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 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' 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' 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: bfc53181-d647-36b2-9080-f9c2b76006f4 name: 'Sr. George de Souza Delvalle' code: PRD-265058 stock: 7365 product_family: id: a05b8477-4b08-4285-9041-8a41c4f6fba8 name: 'Elaine Kamila Serna Neto' product_brand: id: a05b8477-5584-4702-805f-496ab026b1b3 name: 'Liz Sueli Pacheco Neto' unit: id: a05b8477-5979-4dd2-a29c-e2ad7640ea53 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 - id: 241611a0-a07b-352b-9f83-f15a091959e3 name: 'Dr. Yasmin Duarte Queirós Filho' code: PRD-312753 stock: 49 product_family: id: a05b8477-5f33-42b3-8819-0e29ccf81caa name: 'Dr. Sérgio Hernani Pontes' product_brand: id: a05b8477-6270-4322-82eb-51fea0c4aec7 name: 'Dr. Iasmin Leon Neto' unit: id: a05b8477-652f-40c7-a3f5-a07ba0fee7f7 name: 'Sr. André Jimenes Prado Neto' abbreviation: 'Sr. Cristian Beltrão' image: id: null url: null description: 'Aut molestiae sunt suscipit doloribus fugiat.' 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' code: PRD-265058 stock: 7365 product_family: id: a05b8477-4b08-4285-9041-8a41c4f6fba8 name: 'Elaine Kamila Serna Neto' product_brand: id: a05b8477-5584-4702-805f-496ab026b1b3 name: 'Liz Sueli Pacheco Neto' unit: id: a05b8477-5979-4dd2-a29c-e2ad7640ea53 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 - id: 241611a0-a07b-352b-9f83-f15a091959e3 name: 'Dr. Yasmin Duarte Queirós Filho' code: PRD-312753 stock: 49 product_family: id: a05b8477-5f33-42b3-8819-0e29ccf81caa name: 'Dr. Sérgio Hernani Pontes' product_brand: id: a05b8477-6270-4322-82eb-51fea0c4aec7 name: 'Dr. Iasmin Leon Neto' unit: id: a05b8477-652f-40c7-a3f5-a07ba0fee7f7 name: 'Sr. André Jimenes Prado Neto' abbreviation: 'Sr. Cristian Beltrão' image: id: null url: null description: 'Aut molestiae sunt suscipit doloribus fugiat.' 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' code: type: string example: PRD-265058 stock: type: integer example: 7365 product_family: type: object properties: id: type: string example: a05b8477-4b08-4285-9041-8a41c4f6fba8 name: type: string example: 'Elaine Kamila Serna Neto' product_brand: type: object properties: id: type: string example: a05b8477-5584-4702-805f-496ab026b1b3 name: type: string example: 'Liz Sueli Pacheco Neto' unit: type: object properties: id: type: string example: a05b8477-5979-4dd2-a29c-e2ad7640ea53 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 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: a05b8477-708e-451e-bf0d-1aa26bb7a761 name: 'Elaine Kamila Serna Neto' product_brand: id: a05b8477-7337-4385-9f83-1b355a3af572 name: 'Liz Sueli Pacheco Neto' unit: id: a05b8477-756a-40f0-b240-6026f5f4ec54 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: a05b8477-708e-451e-bf0d-1aa26bb7a761 name: type: string example: 'Elaine Kamila Serna Neto' product_brand: type: object properties: id: type: string example: a05b8477-7337-4385-9f83-1b355a3af572 name: type: string example: 'Liz Sueli Pacheco Neto' unit: type: object properties: id: type: string example: a05b8477-756a-40f0-b240-6026f5f4ec54 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: 1 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/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: 25cab747-7694-31a8-af6b-cf648548a55e name: 'quasi laboriosam' slug: null description: 'Sit distinctio tenetur consequuntur sed. Enim totam atque magni beatae. Mollitia sunt magnam fugiat nemo. Rerum corporis dolore non ea vel iusto.' abbreviation: idk created_at: null updated_at: null - id: d67de751-ca68-3904-8fae-6db446b8ff7a name: 'dolorum illum' slug: null description: null abbreviation: yms 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: 25cab747-7694-31a8-af6b-cf648548a55e name: 'quasi laboriosam' slug: null description: 'Sit distinctio tenetur consequuntur sed. Enim totam atque magni beatae. Mollitia sunt magnam fugiat nemo. Rerum corporis dolore non ea vel iusto.' abbreviation: idk created_at: null updated_at: null - id: d67de751-ca68-3904-8fae-6db446b8ff7a name: 'dolorum illum' slug: null description: null abbreviation: yms created_at: null updated_at: null items: type: object properties: id: type: string example: 25cab747-7694-31a8-af6b-cf648548a55e name: type: string example: 'quasi laboriosam' slug: type: string example: null description: type: string example: 'Sit distinctio tenetur consequuntur sed. Enim totam atque magni beatae. Mollitia sunt magnam fugiat nemo. Rerum corporis dolore non ea vel iusto.' abbreviation: type: string example: idk 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: mitchell.matilda email: christian51@example.com image: id: null url: null sectors: [] roles: [] - id: 502eabbf-311f-3542-a47b-b2a14f5de904 name: 'Janick Schultz DDS' username: micaela88 email: kconsidine@example.net 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: mitchell.matilda email: christian51@example.com image: id: null url: null sectors: [] roles: [] - id: 502eabbf-311f-3542-a47b-b2a14f5de904 name: 'Janick Schultz DDS' username: micaela88 email: kconsidine@example.net 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: mitchell.matilda email: type: string example: christian51@example.com 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: - f2726f3d-9044-3663-bede-2a0f37053879 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: - 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/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: 1 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: 40ca43dc-04ad-3013-9e5a-29623bacd146 name: 'Dr. Mel Alícia Rios Filho' abbreviation: 'Sr. Ian Quintana' description: 'Harum fugit non dolorem et.' created_at: null updated_at: null - id: 043c4510-c1c5-3271-9263-95b3b164db80 name: 'Dr. Késia Montenegro' abbreviation: 'Thalita Rocha Rios' description: 'Repellat ullam ab iste.' 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: 40ca43dc-04ad-3013-9e5a-29623bacd146 name: 'Dr. Mel Alícia Rios Filho' abbreviation: 'Sr. Ian Quintana' description: 'Harum fugit non dolorem et.' created_at: null updated_at: null - id: 043c4510-c1c5-3271-9263-95b3b164db80 name: 'Dr. Késia Montenegro' abbreviation: 'Thalita Rocha Rios' description: 'Repellat ullam ab iste.' created_at: null updated_at: null items: type: object properties: id: type: string example: 40ca43dc-04ad-3013-9e5a-29623bacd146 name: type: string example: 'Dr. Mel Alícia Rios Filho' abbreviation: type: string example: 'Sr. Ian Quintana' description: type: string example: 'Harum fugit non dolorem et.' 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: libby.bradtke 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: - 3637ab3b-64aa-3e77-a6a7-c306cb6519a5 items: type: string roles: type: array description: 'UUID da função. The uuid of an existing record in the roles table.' example: - 43fd77a7-5d0e-3206-88ea-5c77b63072ad items: type: string required: - name - email - username '/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: torp.florence email: oking@example.net 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: torp.florence email: type: string example: oking@example.net 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: schmidt.elton 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: - 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 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: bfc53181-d647-36b2-9080-f9c2b76006f4 description: 'Sr. George de Souza Delvalle' work: id: null name: null documents: [] created_at: null updated_at: null - id: c68e0767-6220-31fb-a489-61093ff79529 description: 'Valentin Ramos Zamana' 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: bfc53181-d647-36b2-9080-f9c2b76006f4 description: 'Sr. George de Souza Delvalle' work: id: null name: null documents: [] created_at: null updated_at: null - id: c68e0767-6220-31fb-a489-61093ff79529 description: 'Valentin Ramos Zamana' work: id: null name: null documents: [] 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' 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: [] 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: [] 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: [] 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: [] 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: [] 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-14T16:40:49' 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: [] 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: [] 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-14T16:40:49' 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