uuid of an existing record in the permissions table.'
example:
- f136b691-9b08-3cd5-80e8-190cdc4952b8
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'
display_name:
type: string
description: 'Display name.'
example: 'Example Name'
permissions:
type: array
description: 'Permissions *. The uuid of an existing record in the permissions table.'
example:
- bfbf781a-9fe2-3f16-b890-a17520389f7a
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: 40fcf5ff-3c09-3518-b4f6-16cf037dc56b
name: aut
display_name: 'Dolores quas et consequatur officia soluta.'
permissions_count: null
properties:
data:
type: object
properties:
id:
type: string
example: 40fcf5ff-3c09-3518-b4f6-16cf037dc56b
name:
type: string
example: aut
display_name:
type: string
example: 'Dolores quas et consequatur officia soluta.'
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: et
display_name: 'Laborum et voluptatibus quos consequatur ut.'
-
id: null
name: ea
display_name: 'Nulla eligendi quam quam ut vel temporibus aspernatur.'
properties:
data:
type: array
example:
-
id: null
name: et
display_name: 'Laborum et voluptatibus quos consequatur ut.'
-
id: null
name: ea
display_name: 'Nulla eligendi quam quam ut vel temporibus aspernatur.'
items:
type: object
properties:
id:
type: string
example: null
name:
type: string
example: et
display_name:
type: string
example: 'Laborum et voluptatibus quos consequatur ut.'
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: cupiditate
display_name: 'Et ut error non.'
-
id: null
name: consequuntur
display_name: 'Fugiat atque aperiam quo accusamus ratione delectus ut.'
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: cupiditate
display_name: 'Et ut error non.'
-
id: null
name: consequuntur
display_name: 'Fugiat atque aperiam quo accusamus ratione delectus ut.'
items:
type: object
properties:
id:
type: string
example: null
name:
type: string
example: cupiditate
display_name:
type: string
example: 'Et ut error non.'
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'
display_name:
type: string
description: 'Display name.'
example: 'Example Name'
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'
display_name:
type: string
description: 'Display name.'
example: 'Example Name'
get:
summary: Show
operationId: show
description: 'Show a permission.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
name: ratione
display_name: 'Dignissimos ab placeat doloremque.'
properties:
data:
type: object
properties:
id:
type: string
example: null
name:
type: string
example: ratione
display_name:
type: string
example: 'Dignissimos ab placeat doloremque.'
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: 251d7c52-c400-3e6a-9b2a-72943d64e8c3
type: entrada
payment_method: boleto
amount: 7421.86
due_date: '2026-02-23T03:00:00.000000Z'
status: null
payment_date: null
description: 'Illum similique rerum quam corrupti nam qui porro autem.'
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: nihil
field2: 60
field3: false
notes: 'Quod omnis ipsa maxime accusantium.'
created_at: null
updated_at: null
-
id: 03686c74-923d-3483-91ca-37970c814bac
type: saída
payment_method: boleto
amount: 8147.94
due_date: '2026-02-16T03:00:00.000000Z'
status: null
payment_date: null
description: 'Odit eligendi voluptatibus pariatur sunt atque voluptas tempore consequatur animi et quibusdam.'
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: sed
field2: 81
field3: true
notes: 'Animi voluptatem quia est dicta.'
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: 251d7c52-c400-3e6a-9b2a-72943d64e8c3
type: entrada
payment_method: boleto
amount: 7421.86
due_date: '2026-02-23T03:00:00.000000Z'
status: null
payment_date: null
description: 'Illum similique rerum quam corrupti nam qui porro autem.'
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: nihil
field2: 60
field3: false
notes: 'Quod omnis ipsa maxime accusantium.'
created_at: null
updated_at: null
-
id: 03686c74-923d-3483-91ca-37970c814bac
type: saída
payment_method: boleto
amount: 8147.94
due_date: '2026-02-16T03:00:00.000000Z'
status: null
payment_date: null
description: 'Odit eligendi voluptatibus pariatur sunt atque voluptas tempore consequatur animi et quibusdam.'
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: sed
field2: 81
field3: true
notes: 'Animi voluptatem quia est dicta.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 251d7c52-c400-3e6a-9b2a-72943d64e8c3
type:
type: string
example: entrada
payment_method:
type: string
example: boleto
amount:
type: number
example: 7421.86
due_date:
type: string
example: '2026-02-23T03:00:00.000000Z'
status:
type: string
example: null
payment_date:
type: string
example: null
description:
type: string
example: 'Illum similique rerum quam corrupti nam qui porro autem.'
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: nihil
field2:
type: integer
example: 60
field3:
type: boolean
example: false
notes:
type: string
example: 'Quod omnis ipsa maxime accusantium.'
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:
- delectus
required: true
schema:
type: array
description: 'The uuid of an existing record in the account_payable_receivables table.'
example:
- delectus
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: sort_by
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: sort_desc
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: page
description: 'Page number. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Items per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 10
required: false
schema:
type: integer
description: 'Items per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 10
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
enum:
- entrada
- saída
nullable: true
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- eum
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- eum
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- saepe
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- saepe
items:
type: string
-
in: query
name: statuses
description: ''
example:
- pago
required: false
schema:
type: array
description: ''
example:
- pago
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
enum:
- cheque
- boleto
- outro
nullable: true
-
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: a4c95ab2-4bb6-30b1-977f-8a79339db0b4
type: entrada
payment_method: cheque
amount: 5820.43
due_date: '2026-02-27T03:00:00.000000Z'
status: null
payment_date: null
description: 'Provident molestiae sed vel sit libero id veritatis odio quas modi earum ab.'
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: ipsum
field2: 91
field3: false
notes: 'Eveniet at ex quidem maiores accusantium.'
created_at: null
updated_at: null
-
id: 9ff29e71-f528-3d6b-abcb-56425588f26d
type: entrada
payment_method: boleto
amount: 3347.46
due_date: '2026-02-23T03:00:00.000000Z'
status: null
payment_date: null
description: 'Corrupti ipsam blanditiis rerum dolorem fuga incidunt molestiae accusamus illum.'
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: dolor
field2: 92
field3: false
notes: 'Non id alias aut ea.'
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: a4c95ab2-4bb6-30b1-977f-8a79339db0b4
type: entrada
payment_method: cheque
amount: 5820.43
due_date: '2026-02-27T03:00:00.000000Z'
status: null
payment_date: null
description: 'Provident molestiae sed vel sit libero id veritatis odio quas modi earum ab.'
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: ipsum
field2: 91
field3: false
notes: 'Eveniet at ex quidem maiores accusantium.'
created_at: null
updated_at: null
-
id: 9ff29e71-f528-3d6b-abcb-56425588f26d
type: entrada
payment_method: boleto
amount: 3347.46
due_date: '2026-02-23T03:00:00.000000Z'
status: null
payment_date: null
description: 'Corrupti ipsam blanditiis rerum dolorem fuga incidunt molestiae accusamus illum.'
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: dolor
field2: 92
field3: false
notes: 'Non id alias aut ea.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: a4c95ab2-4bb6-30b1-977f-8a79339db0b4
type:
type: string
example: entrada
payment_method:
type: string
example: cheque
amount:
type: number
example: 5820.43
due_date:
type: string
example: '2026-02-27T03:00:00.000000Z'
status:
type: string
example: null
payment_date:
type: string
example: null
description:
type: string
example: 'Provident molestiae sed vel sit libero id veritatis odio quas modi earum ab.'
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: ipsum
field2:
type: integer
example: 91
field3:
type: boolean
example: false
notes:
type: string
example: 'Eveniet at ex quidem maiores accusantium.'
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'
enum:
- entrada
- saída
payment_method:
type: string
description: 'Forma de pagamento.'
example: 'Example Payment method'
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'
amount:
type: number
description: Valor.
example: 1.0
description:
type: string
description: Descrição.
example: 'Example Description'
supplier_id:
type: string
description: 'Fornecedor. The uuid of an existing record in the suppliers table.'
example: 4cdf0ba2-b032-311c-a9fe-185f00b3e91f
nullable: true
customer_id:
type: string
description: 'Cliente. The uuid of an existing record in the customers table.'
example: 8f0e9120-d573-35fc-a920-c0316bc9ed27
nullable: true
status:
type: string
description: Status.
example: 'Example Status'
enum:
- 'a vencer'
- pago
- vencido
- recebido
- cancelado
custom_fields:
type: object
description: 'Custom fields.'
example:
- example1
- example2
properties: { }
is_recurring:
type: boolean
description: 'Is recurring.'
example: false
recurrence_config:
type: object
description: 'Recurrence config.'
example:
- example1
- example2
properties:
frequency_type:
type: string
description: 'Recurrence config frequency type.'
example: 'Example Recurrence config frequency type'
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
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
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: c1f75e79-85dd-3160-aa0a-ee10dcc17b7d
type: entrada
payment_method: cheque
amount: 6909.54
due_date: '2026-02-15T03:00:00.000000Z'
status: null
payment_date: null
description: 'Dolorem reprehenderit provident delectus occaecati omnis nesciunt laudantium praesentium incidunt.'
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: perferendis
field2: 86
field3: false
notes: 'Eum autem repellendus autem quae aspernatur.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: c1f75e79-85dd-3160-aa0a-ee10dcc17b7d
type:
type: string
example: entrada
payment_method:
type: string
example: cheque
amount:
type: number
example: 6909.54
due_date:
type: string
example: '2026-02-15T03:00:00.000000Z'
status:
type: string
example: null
payment_date:
type: string
example: null
description:
type: string
example: 'Dolorem reprehenderit provident delectus occaecati omnis nesciunt laudantium praesentium incidunt.'
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: perferendis
field2:
type: integer
example: 86
field3:
type: boolean
example: false
notes:
type: string
example: 'Eum autem repellendus autem quae aspernatur.'
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'
enum:
- entrada
- saída
payment_method:
type: string
description: 'Payment method.'
example: 'Example Payment method'
enum:
- cheque
- boleto
- outro
due_date:
type: string
description: 'Due date. O campo value deve ser uma data válida.'
example: '2024-01-01'
amount:
type: number
description: Amount.
example: 1.0
description:
type: string
description: Description.
example: 'Example Description'
supplier_id:
type: string
description: 'Supplier id. The uuid of an existing record in the suppliers table.'
example: f0330a4b-702a-3fbf-a00b-7d9b6656b05f
nullable: true
customer_id:
type: string
description: 'Customer id. The uuid of an existing record in the customers table.'
example: 86e587af-3fb7-3810-ba1d-a5fc94109bac
nullable: true
status:
type: string
description: Status.
example: 'Example Status'
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'
custom_fields:
type: object
description: 'Custom fields.'
example:
- example1
- example2
properties: { }
is_recurring:
type: boolean
description: 'Is recurring.'
example: false
recurrence_config:
type: object
description: 'Recurrence config.'
example:
- example1
- example2
properties:
frequency_type:
type: string
description: 'Recurrence config frequency type.'
example: 'Example Recurrence config frequency type'
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
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
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: ratione
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: jordyn67@example.com
password:
type: string
description: 'User password.'
example: password
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: 6d88d807-76d1-3736-b81d-8627bb2a95db
name: 'Haleigh Zieme'
username: leola.pouros
email: abagail.macejkovic@example.com
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: 6d88d807-76d1-3736-b81d-8627bb2a95db
name:
type: string
example: 'Haleigh Zieme'
username:
type: string
example: leola.pouros
email:
type: string
example: abagail.macejkovic@example.com
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'
email:
type: string
description: 'E-mail. O campo value deve ser um endereço de e-mail válido.'
example: user@example.com
username:
type: string
description: Usuário.
example: considine.marge
password:
type: string
description: Password.
example: password123
image:
type: object
description: Imagem.
example:
- example1
- example2
properties:
path:
type: string
description: 'Caminho da imagem. This field is required when image is present.'
example: 'Example Image path'
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:
- 3eb5563b-9f30-348f-b9c5-592a1f26d18c
items:
type: string
roles:
type: array
description: 'UUID da função. The uuid of an existing record in the roles table.'
example:
- 337b32c2-422f-394e-aeb8-e6898b764485
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: namisbcichnd
value:
type: object
description: ''
example: []
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: quo
required: true
schema:
type: string
'/api/auth/{user}/token':
post:
summary: 'Generate user token'
operationId: generateUserToken
description: 'Generate a token for a specific user'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
token: string
userData:
id: uuid
name: string
username: string
email: string
ability:
- array
roles:
- array
preferences:
- array
sectors:
- array
image:
id: uuid
url: string
properties:
token:
type: string
example: string
userData:
type: object
properties:
id:
type: string
example: uuid
name:
type: string
example: string
username:
type: string
example: string
email:
type: string
example: string
ability:
type: array
example:
- array
items:
type: string
roles:
type: array
example:
- array
items:
type: string
preferences:
type: array
example:
- array
items:
type: string
sectors:
type: array
example:
- array
items:
type: string
image:
type: object
properties:
id:
type: string
example: uuid
url:
type: string
example: string
tags:
- Authentication
parameters:
-
in: path
name: user
description: 'User UUID'
example: 550e8400-e29b-41d4-a716-446655440000
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: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
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: 7500b9a0-8cab-3330-a7e7-36328e180eac
agency: '7276'
account: 2777378-7
type: poupança
balance: 2494.08
holder_type: pj
alias: ut
limit: 5940.78
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
-
id: ef29d2b1-e9bb-3adf-a482-b778667350f8
agency: '6804'
account: 2527135-5
type: poupança
balance: 8143.3
holder_type: pf
alias: provident
limit: 5955.43
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: 7500b9a0-8cab-3330-a7e7-36328e180eac
agency: '7276'
account: 2777378-7
type: poupança
balance: 2494.08
holder_type: pj
alias: ut
limit: 5940.78
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
-
id: ef29d2b1-e9bb-3adf-a482-b778667350f8
agency: '6804'
account: 2527135-5
type: poupança
balance: 8143.3
holder_type: pf
alias: provident
limit: 5955.43
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 7500b9a0-8cab-3330-a7e7-36328e180eac
agency:
type: string
example: '7276'
account:
type: string
example: 2777378-7
type:
type: string
example: poupança
balance:
type: number
example: 2494.08
holder_type:
type: string
example: pj
alias:
type: string
example: ut
limit:
type: number
example: 5940.78
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'
account:
type: string
description: Account.
example: 6687180-4
bank_id:
type: string
description: 'Bank id. The uuid of an existing record in the banks table.'
example: 8ae9236c-abe0-3fca-9365-ceed93998802
type:
type: string
description: Type.
example: 'Example Type'
enum:
- corrente
- poupança
holder_type:
type: string
description: 'Holder type.'
example: 'Example Holder type'
enum:
- pf
- pj
alias:
type: string
description: Alias.
example: 'Example Alias'
balance:
type: number
description: Balance.
example: 1.0
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'
account:
type: string
description: Account.
example: 4105402-1
bank_id:
type: string
description: 'Bank id. The uuid of an existing record in the banks table.'
example: 0e96d1e8-651f-3480-92a9-9cb48c374389
type:
type: string
description: Type.
example: 'Example Type'
enum:
- corrente
- poupança
holder_type:
type: string
description: 'Holder type.'
example: 'Example Holder type'
enum:
- pf
- pj
alias:
type: string
description: Alias.
example: 'Example Alias'
nullable: true
balance:
type: number
description: Balance.
example: 1.0
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: 7adb6673-1a45-3f9b-b846-d12cfc8cd3a6
agency: '9846'
account: 7563297-8
type: poupança
balance: 6717.7
holder_type: pj
alias: veniam
limit: 2779.69
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 7adb6673-1a45-3f9b-b846-d12cfc8cd3a6
agency:
type: string
example: '9846'
account:
type: string
example: 7563297-8
type:
type: string
example: poupança
balance:
type: number
example: 6717.7
holder_type:
type: string
example: pj
alias:
type: string
example: veniam
limit:
type: number
example: 2779.69
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: 19
required: true
schema:
type: integer
/api/banks:
get:
summary: 'List banks'
operationId: listBanks
description: 'List all banks'
parameters:
-
in: query
name: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
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: 21689d48-080d-339b-942a-bd7714e722b7
name: Ávila-Verdugo
code: '367'
-
id: 153c4603-153b-323a-9f54-b7012a072511
name: 'Saito e Vega'
code: '413'
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: 21689d48-080d-339b-942a-bd7714e722b7
name: Ávila-Verdugo
code: '367'
-
id: 153c4603-153b-323a-9f54-b7012a072511
name: 'Saito e Vega'
code: '413'
items:
type: object
properties:
id:
type: string
example: 21689d48-080d-339b-942a-bd7714e722b7
name:
type: string
example: Ávila-Verdugo
code:
type: string
example: '367'
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'
code:
type: string
description: 'Code. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Code'
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'
code:
type: string
description: 'Code. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Code'
get:
summary: 'Show bank'
operationId: showBank
description: 'Show a bank'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: b8487ccc-0955-3e1f-8b85-44d6a9e1f791
name: Aragão-Caldeira
code: '67'
properties:
data:
type: object
properties:
id:
type: string
example: b8487ccc-0955-3e1f-8b85-44d6a9e1f791
name:
type: string
example: Aragão-Caldeira
code:
type: string
example: '67'
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: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
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
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
nullable: true
-
in: query
name: description
description: 'Description .'
example: 'Accusamus voluptates et voluptatem dignissimos.'
required: false
schema:
type: string
description: 'Description .'
example: 'Accusamus voluptates et voluptatem dignissimos.'
-
in: query
name: categories
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- quo
required: false
schema:
type: array
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- quo
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:
- dolorem
required: false
schema:
type: array
description: 'The uuid of an existing record in the bank_accounts table.'
example:
- dolorem
items:
type: string
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- vel
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- vel
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- id
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- id
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- nihil
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- nihil
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: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
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
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
nullable: true
-
in: query
name: description
description: 'Description .'
example: 'Quia eaque cupiditate maxime sequi.'
required: false
schema:
type: string
description: 'Description .'
example: 'Quia eaque cupiditate maxime sequi.'
-
in: query
name: categories
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- doloremque
required: false
schema:
type: array
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- doloremque
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:
- dolore
required: false
schema:
type: array
description: 'The uuid of an existing record in the bank_accounts table.'
example:
- dolore
items:
type: string
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- quis
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- quis
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- officiis
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- officiis
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- modi
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- modi
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 11f72e1f-5f71-3eb0-8198-5d950944dce4
code: FC-86097427
type: pagamento
amount: -4032.6
description: 'Voluptate dolorum sint sit laboriosam culpa reiciendis tempore dicta.'
transaction_date: '2013-12-21T02:00:00.000000Z'
transaction_category:
id: null
name: null
type: null
created_at: null
updated_at: null
-
id: c1d164b7-2d0b-3469-a575-2b3fd016b709
code: FC-35728003
type: juros
amount: -9808.98
description: 'Eaque saepe debitis in est et ut.'
transaction_date: '2001-10-12T03: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: 11f72e1f-5f71-3eb0-8198-5d950944dce4
code: FC-86097427
type: pagamento
amount: -4032.6
description: 'Voluptate dolorum sint sit laboriosam culpa reiciendis tempore dicta.'
transaction_date: '2013-12-21T02:00:00.000000Z'
transaction_category:
id: null
name: null
type: null
created_at: null
updated_at: null
-
id: c1d164b7-2d0b-3469-a575-2b3fd016b709
code: FC-35728003
type: juros
amount: -9808.98
description: 'Eaque saepe debitis in est et ut.'
transaction_date: '2001-10-12T03: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: 11f72e1f-5f71-3eb0-8198-5d950944dce4
code:
type: string
example: FC-86097427
type:
type: string
example: pagamento
amount:
type: number
example: -4032.6
description:
type: string
example: 'Voluptate dolorum sint sit laboriosam culpa reiciendis tempore dicta.'
transaction_date:
type: string
example: '2013-12-21T02: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'
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: 15897815-5c58-3868-898d-3875ca19b50b
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: 564917b0-81d7-31bb-864c-244f3a1a709f
bank_account_id:
type: string
description: 'Bank account id. The uuid of an existing record in the bank_accounts table.'
example: 7eb1516f-298f-3030-b522-59ae663bc2af
nullable: true
customer_id:
type: string
description: 'Customer id. The uuid of an existing record in the customers table.'
example: 4cb82342-7a9c-37c0-bff3-dc21ec04761e
nullable: true
supplier_id:
type: string
description: 'Supplier id. The uuid of an existing record in the suppliers table.'
example: 1d169a40-59e2-3ace-bd77-3e25bc9e3756
nullable: true
work_id:
type: string
description: 'Work id. The uuid of an existing record in the works table.'
example: a20c6245-1204-397a-9cc0-06f18366352a
nullable: true
amount:
type: number
description: Amount.
example: 1.0
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'
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: aac67305-3fed-36ef-b1dc-65ce711f4031
code: FC-27220877
type: transferência
amount: -7786.03
description: 'Modi esse fuga porro.'
transaction_date: '2025-11-19T03: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: aac67305-3fed-36ef-b1dc-65ce711f4031
code:
type: string
example: FC-27220877
type:
type: string
example: transferência
amount:
type: number
example: -7786.03
description:
type: string
example: 'Modi esse fuga porro.'
transaction_date:
type: string
example: '2025-11-19T03: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'
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: 22c21bdc-2571-35d8-9a2c-0b0e08771b77
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: 28549b0b-b780-3bb1-8439-ebab5a312607
bank_account_id:
type: string
description: 'Bank account id. The uuid of an existing record in the bank_accounts table.'
example: 3d4f156a-019c-358c-9989-603d7a4936d7
nullable: true
customer_id:
type: string
description: 'Customer id. The uuid of an existing record in the customers table.'
example: 89086758-821b-3080-b6d4-ed221bd5a3cf
nullable: true
supplier_id:
type: string
description: 'Supplier id. The uuid of an existing record in the suppliers table.'
example: fe6808e9-d59d-30c3-af71-fe19b88c7457
nullable: true
work_id:
type: string
description: 'Work id. The uuid of an existing record in the works table.'
example: f0c57f32-4320-33da-a76a-2c4301b09515
nullable: true
amount:
type: number
description: Amount.
example: 1.0
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'
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: 15
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: 836dd81a-ce3a-3498-bff3-824882d5fc10
code: null
opened_by: null
opened_at: '2016-03-25T22:12:19.000000Z'
closed_by: null
closed_at: '1998-02-02T09:42:53.000000Z'
opening_balance: 9741.61
closing_balance: 9245.58
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
created_at: '1988-12-21T01:33:54.000000Z'
updated_at: '1971-10-04T18:41:18.000000Z'
-
id: ded2308f-b0d4-3ec2-aacc-3a97c0287b50
code: null
opened_by: null
opened_at: '1995-09-19T08:39:49.000000Z'
closed_by: null
closed_at: '1972-10-20T00:46:01.000000Z'
opening_balance: 5476.09
closing_balance: 5753.54
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
created_at: '1976-05-27T22:38:32.000000Z'
updated_at: '1986-06-15T18:03:33.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: 836dd81a-ce3a-3498-bff3-824882d5fc10
code: null
opened_by: null
opened_at: '2016-03-25T22:12:19.000000Z'
closed_by: null
closed_at: '1998-02-02T09:42:53.000000Z'
opening_balance: 9741.61
closing_balance: 9245.58
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
created_at: '1988-12-21T01:33:54.000000Z'
updated_at: '1971-10-04T18:41:18.000000Z'
-
id: ded2308f-b0d4-3ec2-aacc-3a97c0287b50
code: null
opened_by: null
opened_at: '1995-09-19T08:39:49.000000Z'
closed_by: null
closed_at: '1972-10-20T00:46:01.000000Z'
opening_balance: 5476.09
closing_balance: 5753.54
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
created_at: '1976-05-27T22:38:32.000000Z'
updated_at: '1986-06-15T18:03:33.000000Z'
items:
type: object
properties:
id:
type: string
example: 836dd81a-ce3a-3498-bff3-824882d5fc10
code:
type: string
example: null
opened_by:
type: string
example: null
opened_at:
type: string
example: '2016-03-25T22:12:19.000000Z'
closed_by:
type: string
example: null
closed_at:
type: string
example: '1998-02-02T09:42:53.000000Z'
opening_balance:
type: number
example: 9741.61
closing_balance:
type: number
example: 9245.58
total_income:
type: integer
example: 0
total_expense:
type: integer
example: 0
total_balance:
type: integer
example: 0
status:
type: string
example: Aberto
created_at:
type: string
example: '1988-12-21T01:33:54.000000Z'
updated_at:
type: string
example: '1971-10-04T18:41:18.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: 4ea006df-01a5-3c3f-a5ef-520289947879
code: null
opened_by: null
opened_at: '1984-02-14T15:46:48.000000Z'
closed_by: null
closed_at: '1994-08-26T08:55:27.000000Z'
opening_balance: 9120.88
closing_balance: 299.82
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
created_at: '1973-12-10T09:51:34.000000Z'
updated_at: '2009-06-09T11:58:35.000000Z'
properties:
data:
type: object
properties:
id:
type: string
example: 4ea006df-01a5-3c3f-a5ef-520289947879
code:
type: string
example: null
opened_by:
type: string
example: null
opened_at:
type: string
example: '1984-02-14T15:46:48.000000Z'
closed_by:
type: string
example: null
closed_at:
type: string
example: '1994-08-26T08:55:27.000000Z'
opening_balance:
type: number
example: 9120.88
closing_balance:
type: number
example: 299.82
total_income:
type: integer
example: 0
total_expense:
type: integer
example: 0
total_balance:
type: integer
example: 0
status:
type: string
example: Aberto
created_at:
type: string
example: '1973-12-10T09:51:34.000000Z'
updated_at:
type: string
example: '2009-06-09T11:58:35.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: 0c4c0715-9c11-3451-9ed6-747de9768ff7
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: 192f8c08-1f86-3980-81b7-c852fa19bba5
code: null
opened_by: null
opened_at: '1986-10-23T19:20:27.000000Z'
closed_by: null
closed_at: '2001-05-16T16:47:54.000000Z'
opening_balance: 3049.3
closing_balance: 8650.64
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
created_at: '1991-03-16T08:20:27.000000Z'
updated_at: '1978-06-19T12:51:30.000000Z'
properties:
data:
type: object
properties:
id:
type: string
example: 192f8c08-1f86-3980-81b7-c852fa19bba5
code:
type: string
example: null
opened_by:
type: string
example: null
opened_at:
type: string
example: '1986-10-23T19:20:27.000000Z'
closed_by:
type: string
example: null
closed_at:
type: string
example: '2001-05-16T16:47:54.000000Z'
opening_balance:
type: number
example: 3049.3
closing_balance:
type: number
example: 8650.64
total_income:
type: integer
example: 0
total_expense:
type: integer
example: 0
total_balance:
type: integer
example: 0
status:
type: string
example: Aberto
created_at:
type: string
example: '1991-03-16T08:20:27.000000Z'
updated_at:
type: string
example: '1978-06-19T12:51:30.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: 598fc51b-d320-3372-a2e1-6c13a3842aaa
required: true
schema:
type: integer
/api/customers:
get:
summary: 'List customers'
operationId: listCustomers
description: 'List all customers'
parameters:
-
in: query
name: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
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: fea4d50c-3031-3010-984a-9ce089a1ecfd
name: 'Sra. Thalita Suzana Jimenes Filho'
email: kevin62@example.net
phone: '(16) 93274-6759'
document: 467.467.578-20
type: pj
responsible: 'Dr. Marco Ferminiano Campos Jr.'
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: ba4ff3c5-ca07-34c7-9889-e545f9de953d
name: 'Sra. Giovanna Regina Salas Filho'
email: garcia.maria@example.org
phone: '(63) 94969-5262'
document: 575.116.364-89
type: pf
responsible: 'Sr. Gabriel de Souza Flores Sobrinho'
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: fea4d50c-3031-3010-984a-9ce089a1ecfd
name: 'Sra. Thalita Suzana Jimenes Filho'
email: kevin62@example.net
phone: '(16) 93274-6759'
document: 467.467.578-20
type: pj
responsible: 'Dr. Marco Ferminiano Campos Jr.'
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: ba4ff3c5-ca07-34c7-9889-e545f9de953d
name: 'Sra. Giovanna Regina Salas Filho'
email: garcia.maria@example.org
phone: '(63) 94969-5262'
document: 575.116.364-89
type: pf
responsible: 'Sr. Gabriel de Souza Flores Sobrinho'
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: fea4d50c-3031-3010-984a-9ce089a1ecfd
name:
type: string
example: 'Sra. Thalita Suzana Jimenes Filho'
email:
type: string
example: kevin62@example.net
phone:
type: string
example: '(16) 93274-6759'
document:
type: string
example: 467.467.578-20
type:
type: string
example: pj
responsible:
type: string
example: 'Dr. Marco Ferminiano Campos Jr.'
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'
email:
type: string
description: 'E-mail. O campo value deve ser um endereço de e-mail válido.'
example: user@example.com
phone:
type: string
description: Telefone.
example: '(11) 99999-9999'
document:
type: string
description: CPF/CNPJ.
example: 'Example Document'
type:
type: string
description: Tipo.
example: 'Example Type'
enum:
- pf
- pj
responsible:
type: string
description: Responsável.
example: 'Example Responsible'
nullable: true
image:
type: object
description: Imagem.
example:
- example1
- example2
properties:
path:
type: string
description: 'Caminho da imagem. This field is required when image is present.'
example: 'Example Image path'
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
properties:
street:
type: string
description: Rua.
example: 'Example Address street'
number:
type: string
description: Número.
example: 'Example Address number'
complement:
type: string
description: Complemento.
example: 'Example Address complement'
neighborhood:
type: string
description: Bairro.
example: 'Example Address neighborhood'
city:
type: string
description: Cidade.
example: 'Example Address city'
state:
type: string
description: Estado.
example: 'Example Address state'
zip_code:
type: string
description: CEP.
example: 'Example Address zip code'
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: a8f7ffb6-7149-3bfc-8fba-deed76148b79
name: 'Lia Ferreira Jr.'
email: wpacheco@example.net
phone: '(38) 95300-7281'
document: 987.161.741-00
type: pj
responsible: 'Dr. Pablo Montenegro Zambrano'
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: a8f7ffb6-7149-3bfc-8fba-deed76148b79
name:
type: string
example: 'Lia Ferreira Jr.'
email:
type: string
example: wpacheco@example.net
phone:
type: string
example: '(38) 95300-7281'
document:
type: string
example: 987.161.741-00
type:
type: string
example: pj
responsible:
type: string
example: 'Dr. Pablo Montenegro Zambrano'
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'
email:
type: string
description: 'E-mail. O campo value deve ser um endereço de e-mail válido.'
example: user@example.com
phone:
type: string
description: Telefone.
example: '(11) 99999-9999'
document:
type: string
description: CPF/CNPJ.
example: 'Example Document'
type:
type: string
description: Tipo.
example: 'Example Type'
enum:
- pf
- pj
responsible:
type: string
description: Responsável.
example: 'Example Responsible'
nullable: true
image:
type: object
description: Imagem.
example:
- example1
- example2
properties:
path:
type: string
description: 'Caminho da imagem. This field is required when image is present.'
example: 'Example Image path'
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
properties:
street:
type: string
description: Rua.
example: 'Example Address street'
number:
type: string
description: Número.
example: 'Example Address number'
complement:
type: string
description: Complemento.
example: 'Example Address complement'
neighborhood:
type: string
description: Bairro.
example: 'Example Address neighborhood'
city:
type: string
description: Cidade.
example: 'Example Address city'
state:
type: string
description: Estado.
example: 'Example Address state'
zip_code:
type: string
description: CEP.
example: 'Example Address zip code'
parameters:
-
in: path
name: id
description: 'The ID of the customer.'
example: 13
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: 81c0bf69-b3ac-3c4a-9bd4-379a1912ba7b
name: 'Sr. Horácio Cauan Saraiva'
description: 'Maiores tenetur rerum et vitae neque. Fuga porro ut exercitationem harum neque sed. Vitae inventore iure molestiae natus sint unde omnis.'
module: document
-
id: 88678bff-51e9-3cc2-b820-a39bff99c739
name: 'Dayana Barreto Ramires'
description: 'Sit nesciunt ut quae qui magni. In sed repellat provident sunt aut animi. Omnis est soluta dolor perferendis. Qui quis provident consequuntur.'
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: 81c0bf69-b3ac-3c4a-9bd4-379a1912ba7b
name: 'Sr. Horácio Cauan Saraiva'
description: 'Maiores tenetur rerum et vitae neque. Fuga porro ut exercitationem harum neque sed. Vitae inventore iure molestiae natus sint unde omnis.'
module: document
-
id: 88678bff-51e9-3cc2-b820-a39bff99c739
name: 'Dayana Barreto Ramires'
description: 'Sit nesciunt ut quae qui magni. In sed repellat provident sunt aut animi. Omnis est soluta dolor perferendis. Qui quis provident consequuntur.'
module: document
items:
type: object
properties:
id:
type: string
example: 81c0bf69-b3ac-3c4a-9bd4-379a1912ba7b
name:
type: string
example: 'Sr. Horácio Cauan Saraiva'
description:
type: string
example: 'Maiores tenetur rerum et vitae neque. Fuga porro ut exercitationem harum neque sed. Vitae inventore iure molestiae natus sint unde omnis.'
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'
description:
type: string
description: Description.
example: 'Example Description'
module:
type: string
description: Module.
example: 'Example Module'
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: ab31f0ac-fb73-37f1-be9f-cc3e089583aa
name: 'Deivid Chaves Espinoza Filho'
description: 'Aperiam sit nobis accusantium qui qui. Ratione enim id aperiam repudiandae. Dicta sit dolorem perferendis quia necessitatibus. Quos ut quo suscipit expedita.'
module: document
properties:
data:
type: object
properties:
id:
type: string
example: ab31f0ac-fb73-37f1-be9f-cc3e089583aa
name:
type: string
example: 'Deivid Chaves Espinoza Filho'
description:
type: string
example: 'Aperiam sit nobis accusantium qui qui. Ratione enim id aperiam repudiandae. Dicta sit dolorem perferendis quia necessitatibus. Quos ut quo suscipit expedita.'
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'
description:
type: string
description: Description.
example: 'Example Description'
module:
type: string
description: Module.
example: 'Example Module'
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: mollitia
required: true
schema:
type: string
/api/documents:
get:
summary: 'List documents'
operationId: listDocuments
description: 'List all documents'
parameters:
-
in: query
name: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
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:
- eaque
required: false
schema:
type: array
description: 'The uuid of an existing record in the document_categories table.'
example:
- eaque
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: et
required: false
schema:
type: string
description: 'Type of the related documentable entity. The type of an existing record in the documentables table.'
example: et
nullable: true
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- praesentium
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- praesentium
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- qui
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- qui
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 911425fd-f601-3a60-b269-43f4e30c0267
name: 'Eric Salas Esteves Sobrinho'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
-
id: 524c7c64-b0f8-3edb-a04a-59bb21f8880b
name: 'Jonas Leon Correia Jr.'
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: 911425fd-f601-3a60-b269-43f4e30c0267
name: 'Eric Salas Esteves Sobrinho'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
-
id: 524c7c64-b0f8-3edb-a04a-59bb21f8880b
name: 'Jonas Leon Correia Jr.'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 911425fd-f601-3a60-b269-43f4e30c0267
name:
type: string
example: 'Eric Salas Esteves Sobrinho'
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'
category_id:
type: string
description: 'Categoria. The uuid of an existing record in the document_categories table.'
example: 16015213-e605-3abc-bcdc-4244ca596d35
file:
type: object
description: Arquivo.
example:
- example1
- example2
properties:
path:
type: string
description: 'Caminho do arquivo. This field is required when file is present.'
example: 'Example File path'
name:
type: string
description: 'Nome do arquivo.'
example: 'Example Name'
extension:
type: string
description: 'Extensão do arquivo.'
example: 'Example File extension'
size:
type: string
description: 'Tamanho do arquivo.'
example: 'Example File size'
required:
- name
- extension
- size
documentable_type:
type: string
description: 'Tipo de relacionado do documento.'
example: 'Example Documentable type'
enum:
- customer
- work
- work_location
- supplier
- employee
documentable_id:
type: string
description: 'Relacionado do documento.'
example: 'Example Documentable id'
required:
- name
- category_id
- file
- documentable_type
- documentable_id
'/api/documents/{id}':
get:
summary: 'Get document'
operationId: getDocument
description: 'Get a document'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: fc6639a6-5396-399b-976d-02fa175eb5f2
name: 'Srta. Ariane Domingues'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: fc6639a6-5396-399b-976d-02fa175eb5f2
name:
type: string
example: 'Srta. Ariane Domingues'
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
tags:
- Documents
put:
summary: 'Update document'
operationId: updateDocument
description: 'Update a document'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- Documents
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Nome.
example: 'Example Name'
category_id:
type: string
description: 'Categoria. The uuid of an existing record in the document_categories table.'
example: d6250efa-8200-3930-ba21-e8ef29bf9c72
file:
type: object
description: Arquivo.
example:
- example1
- example2
properties:
path:
type: string
description: 'Caminho do arquivo. This field is required when file is present.'
example: 'Example File path'
name:
type: string
description: 'Nome do arquivo.'
example: 'Example Name'
extension:
type: string
description: 'Extensão do arquivo.'
example: 'Example File extension'
size:
type: string
description: 'Tamanho do arquivo.'
example: 'Example File size'
documentable_type:
type: string
description: 'Documentable type.'
example: 'Example Documentable type'
enum:
- customer
- work
- work_location
- supplier
- employee
documentable_id:
type: string
description: 'Documentable id.'
example: 'Example Documentable id'
parameters:
-
in: path
name: id
description: 'The ID of the document.'
example: 17
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: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
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: 2c2a8bdb-ad15-4702-b23b-e62e8e67df7f
name: ut
description: null
created_at: null
updated_at: null
-
id: d80c7cc7-09b0-40c9-80a3-2f51aa82a58c
name: tempora
description: 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: 2c2a8bdb-ad15-4702-b23b-e62e8e67df7f
name: ut
description: null
created_at: null
updated_at: null
-
id: d80c7cc7-09b0-40c9-80a3-2f51aa82a58c
name: tempora
description: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 2c2a8bdb-ad15-4702-b23b-e62e8e67df7f
name:
type: string
example: ut
description:
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:
- '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: 'Nome. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Name'
description:
type: string
description: Descrição.
example: 'Example Description'
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: 42ed66bb-564d-4454-9be7-4f4fe10eb025
name: odit
description: 'Perferendis laborum inventore in ea ullam.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 42ed66bb-564d-4454-9be7-4f4fe10eb025
name:
type: string
example: odit
description:
type: string
example: 'Perferendis laborum inventore in ea ullam.'
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: false
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'
description:
type: string
description: Descrição.
example: 'Example Description'
nullable: true
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: rerum
required: true
schema:
type: string
/api/employees:
get:
summary: 'List employees'
operationId: listEmployees
description: 'List all employees'
parameters:
-
in: query
name: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
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: 9beb9730-0924-4e1c-8d51-9f898680919e
name: 'José das Neves'
cpf: 492.007.449-92
rg: null
ctps: '865679545'
phone: '(28) 3193-5999'
birthdate: null
email: heloise48@example.com
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: 953340d2-3e61-4645-9ddd-d52e5ce3fa74
name: 'Sr. Inácio Santana Santiago'
cpf: 858.570.458-49
rg: null
ctps: '899918033'
phone: '(99) 3810-2253'
birthdate: null
email: miranda39@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
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: 9beb9730-0924-4e1c-8d51-9f898680919e
name: 'José das Neves'
cpf: 492.007.449-92
rg: null
ctps: '865679545'
phone: '(28) 3193-5999'
birthdate: null
email: heloise48@example.com
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: 953340d2-3e61-4645-9ddd-d52e5ce3fa74
name: 'Sr. Inácio Santana Santiago'
cpf: 858.570.458-49
rg: null
ctps: '899918033'
phone: '(99) 3810-2253'
birthdate: null
email: miranda39@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
items:
type: object
properties:
id:
type: string
example: 9beb9730-0924-4e1c-8d51-9f898680919e
name:
type: string
example: 'José das Neves'
cpf:
type: string
example: 492.007.449-92
rg:
type: string
example: null
ctps:
type: string
example: '865679545'
phone:
type: string
example: '(28) 3193-5999'
birthdate:
type: string
example: null
email:
type: string
example: heloise48@example.com
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: 'Nome. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Name'
cpf:
type: string
description: 'CPF. O campo value deve ser 14 caracteres.'
example: 'Example Cpf'
rg:
type: string
description: 'RG. O campo value não pode ser superior a 20 caracteres.'
example: 'Example Rg'
nullable: true
ctps:
type: string
description: 'CTPS. O campo value não pode ser superior a 20 caracteres.'
example: 'Example Ctps'
nullable: true
phone:
type: string
description: 'Telefone. O campo value não pode ser superior a 20 caracteres.'
example: '(11) 99999-9999'
nullable: true
birthdate:
type: string
description: 'Data de Nascimento. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
email:
type: string
description: 'E-mail. O campo value deve ser um endereço de e-mail válido.'
example: user@example.com
nullable: true
employee_role_id:
type: string
description: 'Cargo. The uuid of an existing record in the employee_roles table.'
example: d53896b6-58fc-48ec-84e3-3ea1cd997080
address:
type: object
description: Endereço.
example:
- example1
- example2
properties:
street:
type: string
description: Rua.
example: 'Example Address street'
nullable: true
number:
type: string
description: Número.
example: 'Example Address number'
nullable: true
complement:
type: string
description: Complemento.
example: 'Example Address complement'
nullable: true
neighborhood:
type: string
description: Bairro.
example: 'Example Address neighborhood'
nullable: true
city:
type: string
description: Cidade.
example: 'Example Address city'
nullable: true
state:
type: string
description: Estado.
example: 'Example Address state'
nullable: true
zip_code:
type: string
description: CEP.
example: 'Example Address zip code'
nullable: true
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: 0efdb39d-e41e-418c-8158-524b3ef4b07b
name: 'Sandra Ariane Balestero Jr.'
cpf: 465.898.151-00
rg: '968196152'
ctps: '358698736'
phone: null
birthdate: '1998-06-29'
email: hlovato@example.com
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: 0efdb39d-e41e-418c-8158-524b3ef4b07b
name:
type: string
example: 'Sandra Ariane Balestero Jr.'
cpf:
type: string
example: 465.898.151-00
rg:
type: string
example: '968196152'
ctps:
type: string
example: '358698736'
phone:
type: string
example: null
birthdate:
type: string
example: '1998-06-29'
email:
type: string
example: hlovato@example.com
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: false
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'
cpf:
type: string
description: 'CPF. O campo value deve ser 14 caracteres.'
example: 'Example Cpf'
rg:
type: string
description: 'RG. O campo value não pode ser superior a 20 caracteres.'
example: 'Example Rg'
nullable: true
ctps:
type: string
description: 'CTPS. O campo value não pode ser superior a 20 caracteres.'
example: 'Example Ctps'
nullable: true
phone:
type: string
description: 'Telefone. O campo value não pode ser superior a 20 caracteres.'
example: '(11) 99999-9999'
nullable: true
birthdate:
type: string
description: 'Data de Nascimento. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
email:
type: string
description: 'E-mail. O campo value deve ser um endereço de e-mail válido.'
example: user@example.com
nullable: true
employee_role_id:
type: string
description: 'Cargo. The uuid of an existing record in the employee_roles table.'
example: 686a3d2e-743b-47e0-97b4-44ce47311c15
address:
type: object
description: Endereço.
example:
- example1
- example2
properties:
street:
type: string
description: Rua.
example: 'Example Address street'
number:
type: string
description: Número.
example: 'Example Address number'
complement:
type: string
description: Complemento.
example: 'Example Address complement'
neighborhood:
type: string
description: Bairro.
example: 'Example Address neighborhood'
city:
type: string
description: Cidade.
example: 'Example Address city'
state:
type: string
description: Estado.
example: 'Example Address state'
zip_code:
type: string
description: CEP.
example: 'Example Address zip code'
parameters:
-
in: path
name: id
description: 'The ID of the employee.'
example: 5
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: 74509f1e-ea5a-3c22-b4ab-87f928cd4cc3
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: 00729e01-dccb-39fb-a7a4-77c88b8f10af
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: cbe898a6-3f7b-3c1b-b7c6-06cf7dc5cc8f
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'
mimetype:
type: string
description: Mimetype.
example: 'Example Mimetype'
public:
type: boolean
description: Public.
example: 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
properties:
url:
type: string
example: string
path:
type: string
example: string
headers:
type: string
example: array
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'
mimetype:
type: string
description: 'Files * mimetype.'
example: 'Example Files * mimetype'
public:
type: boolean
description: 'Files * public.'
example: 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
original_filename:
type: string
description: 'Original filename of the uploaded NFe'
example: nota_fiscal_001.xml
import_type:
type: string
description: 'Type of import (currently only "nfe" is supported)'
example: nfe
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: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
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
-
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
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
enum:
- initial_load
- stock_update
- nfe
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: aut
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: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
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
-
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
enum:
- pending
- processed
nullable: true
-
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
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: rerum
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:
- aut
items:
type: string
required:
- mappings
parameters:
-
in: path
name: importId
description: ''
example: iure
required: true
schema:
type: string
/api/notifications:
get:
summary: 'List notifications'
operationId: listNotifications
description: 'List user notifications'
parameters:
-
in: query
name: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
-
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
enum:
- all
- read
- unread
nullable: true
-
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: 'notificação. O campo value deve ser um UUID válido.'
example:
- 'Example Notifications *'
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: 'notificação. O campo value deve ser um UUID válido.'
example:
- 'Example Notifications *'
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: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
-
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 UUID. The uuid of an existing record in the employees table.'
example: a01edd80-bf3e-40f7-8613-ccb4be5831b3
required: false
schema:
type: string
description: 'Filter by employee UUID. The uuid of an existing record in the employees table.'
example: a01edd80-bf3e-40f7-8613-ccb4be5831b3
-
in: query
name: receiver_type
description: 'Filter by receiver type.'
example: employee
required: false
schema:
type: string
description: 'Filter by receiver type.'
example: employee
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'
-
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'
-
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
-
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
-
in: query
name: payment_method
description: 'Filter by payment method.'
example: PIX
required: false
schema:
type: string
description: 'Filter by payment method.'
example: PIX
-
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'
-
in: query
name: search
description: ''
example: magni
required: false
schema:
type: string
description: ''
example: magni
-
in: query
name: document
description: ''
example: quisquam
required: false
schema:
type: string
description: ''
example: quisquam
-
in: query
name: work_id
description: 'Filter by work UUID. O campo value deve ser um UUID válido. The uuid of an existing record in the works table.'
example: a01edd80-bf3e-40f7-8613-ccb4be5831b3
required: false
schema:
type: string
description: 'Filter by work UUID. O campo value deve ser um UUID válido. The uuid of an existing record in the works table.'
example: a01edd80-bf3e-40f7-8613-ccb4be5831b3
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 1becbf85-58f2-3c22-93b7-2664bc69ead7
receipt_number: REC-7558
receiver_type: employee
receiver:
id: null
name: 'Mavis Hand'
document: 570.344.918-36
payment:
amount: 2339.34
amount_in_words: 'Valor por extenso de teste'
method: 'Transferência Bancária'
description: 'Nisi nihil eaque eos veritatis impedit impedit voluptatibus.'
issuer:
name: 'Hudson, Heidenreich and Bosco'
document: 36.582.121/5692-89
issue:
date: '2026-01-06'
city: 'Port Winonaside'
state: SC
created_by:
id: a0fe5a55-9283-4a44-a003-efbf7b4f98a4
name: 'Naomie Olson'
created_at: null
updated_at: null
-
id: 2d4ddb4f-1e88-30d5-a82d-301e7716f874
receipt_number: REC-3191
receiver_type: custom
receiver:
id: null
name: 'Lou Harris'
document: 181.218.219-71
payment:
amount: 8233.23
amount_in_words: 'Valor por extenso de teste'
method: Dinheiro
description: 'Fugit ut sint aliquid nesciunt qui totam quia natus.'
issuer:
name: 'Howell, Friesen and Tromp'
document: 44.214.430/9278-26
issue:
date: '2026-01-27'
city: Emmanuelstad
state: CE
created_by:
id: a0fe5a55-9be3-42d6-8f92-3dcfeeea720a
name: 'Chadrick Kuhlman'
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: 1becbf85-58f2-3c22-93b7-2664bc69ead7
receipt_number: REC-7558
receiver_type: employee
receiver:
id: null
name: 'Mavis Hand'
document: 570.344.918-36
payment:
amount: 2339.34
amount_in_words: 'Valor por extenso de teste'
method: 'Transferência Bancária'
description: 'Nisi nihil eaque eos veritatis impedit impedit voluptatibus.'
issuer:
name: 'Hudson, Heidenreich and Bosco'
document: 36.582.121/5692-89
issue:
date: '2026-01-06'
city: 'Port Winonaside'
state: SC
created_by:
id: a0fe5a55-9283-4a44-a003-efbf7b4f98a4
name: 'Naomie Olson'
created_at: null
updated_at: null
-
id: 2d4ddb4f-1e88-30d5-a82d-301e7716f874
receipt_number: REC-3191
receiver_type: custom
receiver:
id: null
name: 'Lou Harris'
document: 181.218.219-71
payment:
amount: 8233.23
amount_in_words: 'Valor por extenso de teste'
method: Dinheiro
description: 'Fugit ut sint aliquid nesciunt qui totam quia natus.'
issuer:
name: 'Howell, Friesen and Tromp'
document: 44.214.430/9278-26
issue:
date: '2026-01-27'
city: Emmanuelstad
state: CE
created_by:
id: a0fe5a55-9be3-42d6-8f92-3dcfeeea720a
name: 'Chadrick Kuhlman'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 1becbf85-58f2-3c22-93b7-2664bc69ead7
receipt_number:
type: string
example: REC-7558
receiver_type:
type: string
example: employee
receiver:
type: object
properties:
id:
type: string
example: null
name:
type: string
example: 'Mavis Hand'
document:
type: string
example: 570.344.918-36
payment:
type: object
properties:
amount:
type: number
example: 2339.34
amount_in_words:
type: string
example: 'Valor por extenso de teste'
method:
type: string
example: 'Transferência Bancária'
description:
type: string
example: 'Nisi nihil eaque eos veritatis impedit impedit voluptatibus.'
issuer:
type: object
properties:
name:
type: string
example: 'Hudson, Heidenreich and Bosco'
document:
type: string
example: 36.582.121/5692-89
issue:
type: object
properties:
date:
type: string
example: '2026-01-06'
city:
type: string
example: 'Port Winonaside'
state:
type: string
example: SC
created_by:
type: object
properties:
id:
type: string
example: a0fe5a55-9283-4a44-a003-efbf7b4f98a4
name:
type: string
example: 'Naomie Olson'
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'
enum:
- employee
- custom
employee_id:
type: string
description: 'Funcionário. This field is required when receiver_type is employee. The uuid of an existing record in the employees table.'
example: 918547a1-b468-4c4a-846a-3c1cf2c126a7
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
amount_in_words:
type: string
description: 'Valor por Extenso.'
example: 'Example Amount in words'
payment_method:
type: string
description: 'Método de Pagamento. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Payment method'
description:
type: string
description: Descrição.
example: 'Example Description'
issuer_name:
type: string
description: 'Nome do Emissor. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Name'
issuer_document:
type: string
description: 'Documento do Emissor. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Issuer document'
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'
city:
type: string
description: 'Cidade. O campo value não pode ser superior a 255 caracteres.'
example: 'Example City'
state:
type: string
description: 'Estado. O campo value não pode ser superior a 2 caracteres.'
example: 'Example State'
work_id:
type: string
description: 'Obra. O campo value deve ser um UUID válido. The uuid of an existing record in the works table.'
example: 0bb15b7a-395e-3bb8-a621-189d202d5701
nullable: true
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: b7b4da15-5980-359f-bebb-03843a9e80a2
receipt_number: REC-8450
receiver_type: custom
receiver:
id: null
name: 'Aiyana Fadel'
document: 146.025.660-73
payment:
amount: 9513.2
amount_in_words: 'Valor por extenso de teste'
method: Dinheiro
description: 'Et rem quisquam fugiat error.'
issuer:
name: Jenkins-Vandervort
document: 27.617.602/2300-16
issue:
date: '2026-01-14'
city: 'South Nicoside'
state: SP
created_by:
id: a0fe5a55-a2a6-4cf7-a655-f5d7a07184e1
name: 'Freddie Daniel PhD'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: b7b4da15-5980-359f-bebb-03843a9e80a2
receipt_number:
type: string
example: REC-8450
receiver_type:
type: string
example: custom
receiver:
type: object
properties:
id:
type: string
example: null
name:
type: string
example: 'Aiyana Fadel'
document:
type: string
example: 146.025.660-73
payment:
type: object
properties:
amount:
type: number
example: 9513.2
amount_in_words:
type: string
example: 'Valor por extenso de teste'
method:
type: string
example: Dinheiro
description:
type: string
example: 'Et rem quisquam fugiat error.'
issuer:
type: object
properties:
name:
type: string
example: Jenkins-Vandervort
document:
type: string
example: 27.617.602/2300-16
issue:
type: object
properties:
date:
type: string
example: '2026-01-14'
city:
type: string
example: 'South Nicoside'
state:
type: string
example: SP
created_by:
type: object
properties:
id:
type: string
example: a0fe5a55-a2a6-4cf7-a655-f5d7a07184e1
name:
type: string
example: 'Freddie Daniel PhD'
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'
enum:
- employee
- custom
employee_id:
type: string
description: 'Funcionário. This field is required when receiver_type is employee. The uuid of an existing record in the employees table.'
example: a1d92ee8-55ec-4ff7-8ff1-517fd04961a1
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
amount_in_words:
type: string
description: 'Valor por Extenso.'
example: 'Example Amount in words'
payment_method:
type: string
description: 'Método de Pagamento. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Payment method'
description:
type: string
description: Descrição.
example: 'Example Description'
issuer_name:
type: string
description: 'Nome do Emissor. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Name'
issuer_document:
type: string
description: 'Documento do Emissor. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Issuer document'
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'
city:
type: string
description: 'Cidade. O campo value não pode ser superior a 255 caracteres.'
example: 'Example City'
state:
type: string
description: 'Estado. O campo value não pode ser superior a 2 caracteres.'
example: 'Example State'
work_id:
type: string
description: 'Obra. O campo value deve ser um UUID válido. The uuid of an existing record in the works table.'
example: 3207b730-5f94-3958-b61f-91e3041eb5f0
nullable: true
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: 2b110533-5f3b-3ef4-a1d2-bb189a09d80a
receipt_number: REC-1811
receiver_type: custom
receiver:
id: null
name: 'Matteo Schulist'
document: 596.327.587-29
payment:
amount: 214.48
amount_in_words: 'Valor por extenso de teste'
method: PIX
description: 'Nisi et saepe illo id et assumenda.'
issuer:
name: 'Boyle, Mueller and Gulgowski'
document: 60.068.733/7303-30
issue:
date: '2026-01-19'
city: 'North Maxine'
state: MG
created_by:
id: a0fe5a55-b8fa-43bb-8773-1f0bfbad4cac
name: 'Prof. Nico Sporer IV'
created_at: null
updated_at: null
-
id: df66270f-0e26-303d-907a-ad5ec71b203e
receipt_number: REC-2221
receiver_type: employee
receiver:
id: null
name: 'Rhett Aufderhar'
document: 643.754.130-10
payment:
amount: 9173.85
amount_in_words: 'Valor por extenso de teste'
method: 'Transferência Bancária'
description: 'Corrupti necessitatibus sed qui similique eum omnis.'
issuer:
name: Braun-Shields
document: 29.330.409/0587-90
issue:
date: '2026-01-30'
city: Nikkomouth
state: SC
created_by:
id: a0fe5a55-bb92-4b4f-be1e-5563bd005b3d
name: 'Prof. Rachael Haag'
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: 2b110533-5f3b-3ef4-a1d2-bb189a09d80a
receipt_number: REC-1811
receiver_type: custom
receiver:
id: null
name: 'Matteo Schulist'
document: 596.327.587-29
payment:
amount: 214.48
amount_in_words: 'Valor por extenso de teste'
method: PIX
description: 'Nisi et saepe illo id et assumenda.'
issuer:
name: 'Boyle, Mueller and Gulgowski'
document: 60.068.733/7303-30
issue:
date: '2026-01-19'
city: 'North Maxine'
state: MG
created_by:
id: a0fe5a55-b8fa-43bb-8773-1f0bfbad4cac
name: 'Prof. Nico Sporer IV'
created_at: null
updated_at: null
-
id: df66270f-0e26-303d-907a-ad5ec71b203e
receipt_number: REC-2221
receiver_type: employee
receiver:
id: null
name: 'Rhett Aufderhar'
document: 643.754.130-10
payment:
amount: 9173.85
amount_in_words: 'Valor por extenso de teste'
method: 'Transferência Bancária'
description: 'Corrupti necessitatibus sed qui similique eum omnis.'
issuer:
name: Braun-Shields
document: 29.330.409/0587-90
issue:
date: '2026-01-30'
city: Nikkomouth
state: SC
created_by:
id: a0fe5a55-bb92-4b4f-be1e-5563bd005b3d
name: 'Prof. Rachael Haag'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 2b110533-5f3b-3ef4-a1d2-bb189a09d80a
receipt_number:
type: string
example: REC-1811
receiver_type:
type: string
example: custom
receiver:
type: object
properties:
id:
type: string
example: null
name:
type: string
example: 'Matteo Schulist'
document:
type: string
example: 596.327.587-29
payment:
type: object
properties:
amount:
type: number
example: 214.48
amount_in_words:
type: string
example: 'Valor por extenso de teste'
method:
type: string
example: PIX
description:
type: string
example: 'Nisi et saepe illo id et assumenda.'
issuer:
type: object
properties:
name:
type: string
example: 'Boyle, Mueller and Gulgowski'
document:
type: string
example: 60.068.733/7303-30
issue:
type: object
properties:
date:
type: string
example: '2026-01-19'
city:
type: string
example: 'North Maxine'
state:
type: string
example: MG
created_by:
type: object
properties:
id:
type: string
example: a0fe5a55-b8fa-43bb-8773-1f0bfbad4cac
name:
type: string
example: 'Prof. Nico Sporer IV'
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: 12
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: b5cb0617-9514-314c-b33d-2d5c355608fa
name: dolor-voluptatem-suscipit
display_name: 'dolorem voluptates amet'
created_at: null
updated_at: null
-
id: 10d874fe-4de4-3e57-accb-0c9dfa40821e
name: cupiditate-ullam
display_name: 'vitae qui voluptas'
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: b5cb0617-9514-314c-b33d-2d5c355608fa
name: dolor-voluptatem-suscipit
display_name: 'dolorem voluptates amet'
created_at: null
updated_at: null
-
id: 10d874fe-4de4-3e57-accb-0c9dfa40821e
name: cupiditate-ullam
display_name: 'vitae qui voluptas'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: b5cb0617-9514-314c-b33d-2d5c355608fa
name:
type: string
example: dolor-voluptatem-suscipit
display_name:
type: string
example: 'dolorem voluptates amet'
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'
display_name:
type: string
description: 'Display name. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Name'
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'
display_name:
type: string
description: 'Display name. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Name'
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: bd307914-5a80-3b36-a1c7-d311048b469f
name: molestiae-laboriosam
display_name: 'at dignissimos nulla'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: bd307914-5a80-3b36-a1c7-d311048b469f
name:
type: string
example: molestiae-laboriosam
display_name:
type: string
example: 'at dignissimos nulla'
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: 75e713fb-0890-35eb-bef6-3e792c254fe7
name: 'Dr. Fabiano Denis Fontes Jr.'
created_at: null
updated_at: null
-
id: 5eb19425-edfa-3cfd-9748-96c81a0d7faa
name: 'Srta. Tatiana Arruda Fonseca'
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: 75e713fb-0890-35eb-bef6-3e792c254fe7
name: 'Dr. Fabiano Denis Fontes Jr.'
created_at: null
updated_at: null
-
id: 5eb19425-edfa-3cfd-9748-96c81a0d7faa
name: 'Srta. Tatiana Arruda Fonseca'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 75e713fb-0890-35eb-bef6-3e792c254fe7
name:
type: string
example: 'Dr. Fabiano Denis Fontes Jr.'
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: Nome.
example: 'Example Name'
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: 2d57a584-e4ab-3423-a1c8-2012e03eef36
name: 'Cristóvão Richard Casanova'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 2d57a584-e4ab-3423-a1c8-2012e03eef36
name:
type: string
example: 'Cristóvão Richard Casanova'
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: Nome.
example: 'Example Name'
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: rerum
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: 27d67f9d-98fd-326e-9795-248f2184e9db
name: 'Deivid da Cruz Uchoa Sobrinho'
created_at: null
updated_at: null
-
id: c0db01d5-fd95-334c-ace8-4a45f6e03b5d
name: 'Noelí Valência Neto'
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: 27d67f9d-98fd-326e-9795-248f2184e9db
name: 'Deivid da Cruz Uchoa Sobrinho'
created_at: null
updated_at: null
-
id: c0db01d5-fd95-334c-ace8-4a45f6e03b5d
name: 'Noelí Valência Neto'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 27d67f9d-98fd-326e-9795-248f2184e9db
name:
type: string
example: 'Deivid da Cruz Uchoa Sobrinho'
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: Nome.
example: 'Example Name'
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: e4957dbe-edae-34b6-a13b-9fc9145e2808
name: 'Sr. Wellington Azevedo Madeira'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: e4957dbe-edae-34b6-a13b-9fc9145e2808
name:
type: string
example: 'Sr. Wellington Azevedo Madeira'
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: Nome.
example: 'Example Name'
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: praesentium
required: true
schema:
type: string
/api/product-quantity-lists:
get:
summary: 'List product quantity lists'
operationId: listProductQuantityLists
description: 'List all product quantity lists'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 7adedfe0-665a-3329-ac0f-485af29c6dca
name: 'Vero neque voluptates repellat.'
description: 'Fugit qui rerum nihil architecto sapiente vel unde. Aut amet necessitatibus ut blanditiis. Omnis ut enim amet dolorem porro quod vel. Impedit inventore perspiciatis aspernatur error molestiae beatae et. Cum accusamus magnam asperiores maxime.'
work:
id: a0fe5a56-2ec5-4a2c-8a23-4e636220fe4f
name: 'Leonardo Ferreira Jr.'
user:
id: a0fe5a56-33a2-4074-a76f-accb334f39ad
name: 'Troy Kuvalis'
created_at: null
updated_at: null
-
id: da633ec5-b821-3b27-89c8-1f212356451e
name: 'Deserunt expedita incidunt.'
description: null
work:
id: a0fe5a56-3701-49db-a92e-683da566e08a
name: 'Dr. Vinícius Salazar da Cruz Jr.'
user:
id: a0fe5a56-39c3-4307-932a-3f94defa8dea
name: 'Russ McClure'
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: 7adedfe0-665a-3329-ac0f-485af29c6dca
name: 'Vero neque voluptates repellat.'
description: 'Fugit qui rerum nihil architecto sapiente vel unde. Aut amet necessitatibus ut blanditiis. Omnis ut enim amet dolorem porro quod vel. Impedit inventore perspiciatis aspernatur error molestiae beatae et. Cum accusamus magnam asperiores maxime.'
work:
id: a0fe5a56-2ec5-4a2c-8a23-4e636220fe4f
name: 'Leonardo Ferreira Jr.'
user:
id: a0fe5a56-33a2-4074-a76f-accb334f39ad
name: 'Troy Kuvalis'
created_at: null
updated_at: null
-
id: da633ec5-b821-3b27-89c8-1f212356451e
name: 'Deserunt expedita incidunt.'
description: null
work:
id: a0fe5a56-3701-49db-a92e-683da566e08a
name: 'Dr. Vinícius Salazar da Cruz Jr.'
user:
id: a0fe5a56-39c3-4307-932a-3f94defa8dea
name: 'Russ McClure'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 7adedfe0-665a-3329-ac0f-485af29c6dca
name:
type: string
example: 'Vero neque voluptates repellat.'
description:
type: string
example: 'Fugit qui rerum nihil architecto sapiente vel unde. Aut amet necessitatibus ut blanditiis. Omnis ut enim amet dolorem porro quod vel. Impedit inventore perspiciatis aspernatur error molestiae beatae et. Cum accusamus magnam asperiores maxime.'
work:
type: object
properties:
id:
type: string
example: a0fe5a56-2ec5-4a2c-8a23-4e636220fe4f
name:
type: string
example: 'Leonardo Ferreira Jr.'
user:
type: object
properties:
id:
type: string
example: a0fe5a56-33a2-4074-a76f-accb334f39ad
name:
type: string
example: 'Troy Kuvalis'
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 Quantity Lists'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
q:
type: string
description: Busca.
example: 'Example Q'
nullable: true
work_id:
type: string
description: 'Obra. The uuid of an existing record in the works table.'
example: 37bd900f-865e-3ff1-8fbc-c38e003c7a3b
nullable: true
user_id:
type: string
description: 'Usuário. The uuid of an existing record in the users table.'
example: 7a8fcb24-08da-3fe2-b4c5-2541b49a23c4
nullable: true
responsible_id:
type: string
description: 'Responsável. The uuid of an existing record in the users table.'
example: f1b11af5-d70b-36ff-afa1-f342118ebcf6
nullable: true
per_page:
type: integer
description: 'Itens por página. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 1
sort:
type: string
description: Ordenação.
example: 'Example Sort'
sort_desc:
type: boolean
description: 'Ordem decrescente.'
example: false
post:
summary: 'Create product quantity list'
operationId: createProductQuantityList
description: 'Create a new product quantity list'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Product Quantity Lists'
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: true
description:
type: string
description: Descrição.
example: 'Example Description'
nullable: true
work_id:
type: string
description: 'Obra. The uuid of an existing record in the works table.'
example: a448b074-340f-335d-8ccc-b50375b9f045
items:
type: array
description: Itens.
example:
- null
- null
items:
type: object
properties:
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 7e62242d-6d31-3431-bee7-0659b2e720e9
quantity:
type: number
description: 'Quantidade. O campo value deve ser pelo menos 0.0001.'
example: 1.0
observation:
type: string
description: Observação.
example: 'Example Items * observation'
nullable: true
required:
- product_id
- quantity
required:
- work_id
'/api/product-quantity-lists/{productQuantityList}':
get:
summary: 'Show product quantity list'
operationId: showProductQuantityList
description: 'Show a product quantity list'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: eb83995d-8a55-3fa5-93aa-c576abe7e53d
name: 'Veniam ut voluptatibus.'
description: 'Incidunt soluta et veniam deleniti cupiditate iure. Architecto cumque soluta illo libero. Autem ab ut corrupti ut voluptas velit voluptates.'
work:
id: a0fe5a56-3f70-4a93-bba1-d88784976881
name: 'Raquel Soto Jr.'
user:
id: a0fe5a56-4217-45ae-8a47-e09971d5b05e
name: 'Grover Lesch'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: eb83995d-8a55-3fa5-93aa-c576abe7e53d
name:
type: string
example: 'Veniam ut voluptatibus.'
description:
type: string
example: 'Incidunt soluta et veniam deleniti cupiditate iure. Architecto cumque soluta illo libero. Autem ab ut corrupti ut voluptas velit voluptates.'
work:
type: object
properties:
id:
type: string
example: a0fe5a56-3f70-4a93-bba1-d88784976881
name:
type: string
example: 'Raquel Soto Jr.'
user:
type: object
properties:
id:
type: string
example: a0fe5a56-4217-45ae-8a47-e09971d5b05e
name:
type: string
example: 'Grover Lesch'
created_at:
type: string
example: null
updated_at:
type: string
example: null
tags:
- 'Product Quantity Lists'
put:
summary: 'Update product quantity list'
operationId: updateProductQuantityList
description: 'Update a product quantity list. Can include items to replace all items in the list.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Product Quantity Lists'
requestBody:
required: false
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: true
description:
type: string
description: Descrição.
example: 'Example Description'
nullable: true
items:
type: array
description: Itens.
example:
- null
- null
items:
type: object
properties:
id:
type: string
description: 'ID do Item. The uuid of an existing record in the product_quantity_list_items table.'
example: c5fb4283-b02d-322b-ae60-c4158fdd386a
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: acd4c14d-a501-30d1-bb1a-4f5f2e6fc06b
quantity:
type: number
description: 'Quantidade. O campo value deve ser pelo menos 0.0001.'
example: 1.0
observation:
type: string
description: Observação.
example: 'Example Items * observation'
nullable: true
required:
- product_id
- quantity
delete:
summary: 'Delete product quantity list'
operationId: deleteProductQuantityList
description: 'Delete a product quantity list'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'Product Quantity Lists'
parameters:
-
in: path
name: productQuantityList
description: 'Product Quantity List UUID'
example: necessitatibus
required: true
schema:
type: string
'/api/product-quantity-lists/{productQuantityList}/items':
get:
summary: 'List items'
operationId: listItems
description: 'List all items from a product quantity list with pagination'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: b2e86d61-8572-3421-a6fd-f1ce381f611c
product:
id: a0fe5a56-540b-4f13-85cf-47b62c9969f7
name: 'Aparecida Duarte Neto'
code: PRD-371762
unit:
id: a0fe5a56-524e-435c-8af7-f10d9358821b
name: 'Dr. Maísa Queirós'
abbreviation: 'Sr. Isaac Pontes Filho'
quantity: 76.2701
observation: null
created_at: null
updated_at: null
-
id: 9de5423c-cd4e-30ef-beda-5f5e84b50044
product:
id: a0fe5a56-610b-4cfa-bd68-6ad03524e3a6
name: 'Dr. Elizabeth Serna Ortiz Filho'
code: PRD-149033
unit:
id: a0fe5a56-5ffe-404d-b7b1-ffe833f31c63
name: 'Tiago Francisco Rangel'
abbreviation: 'Sr. Samuel Maurício Toledo Neto'
quantity: 939.033
observation: 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: b2e86d61-8572-3421-a6fd-f1ce381f611c
product:
id: a0fe5a56-540b-4f13-85cf-47b62c9969f7
name: 'Aparecida Duarte Neto'
code: PRD-371762
unit:
id: a0fe5a56-524e-435c-8af7-f10d9358821b
name: 'Dr. Maísa Queirós'
abbreviation: 'Sr. Isaac Pontes Filho'
quantity: 76.2701
observation: null
created_at: null
updated_at: null
-
id: 9de5423c-cd4e-30ef-beda-5f5e84b50044
product:
id: a0fe5a56-610b-4cfa-bd68-6ad03524e3a6
name: 'Dr. Elizabeth Serna Ortiz Filho'
code: PRD-149033
unit:
id: a0fe5a56-5ffe-404d-b7b1-ffe833f31c63
name: 'Tiago Francisco Rangel'
abbreviation: 'Sr. Samuel Maurício Toledo Neto'
quantity: 939.033
observation: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: b2e86d61-8572-3421-a6fd-f1ce381f611c
product:
type: object
properties:
id:
type: string
example: a0fe5a56-540b-4f13-85cf-47b62c9969f7
name:
type: string
example: 'Aparecida Duarte Neto'
code:
type: string
example: PRD-371762
unit:
type: object
properties:
id:
type: string
example: a0fe5a56-524e-435c-8af7-f10d9358821b
name:
type: string
example: 'Dr. Maísa Queirós'
abbreviation:
type: string
example: 'Sr. Isaac Pontes Filho'
quantity:
type: number
example: 76.2701
observation:
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:
- 'Product Quantity Lists'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
per_page:
type: integer
description: 'Itens por página. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 1
q:
type: string
description: 'Busca. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Q'
post:
summary: 'Add items to list'
operationId: addItemsToList
description: 'Add one or more product items to the list'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data: array
properties:
data:
type: string
example: array
tags:
- 'Product Quantity Lists'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
items:
type: array
description: 'Itens. O campo value deve ter pelo menos 1 itens.'
example:
- null
- null
items:
type: object
properties:
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 890b7f32-13ec-3140-b2c5-57c27334d93e
quantity:
type: number
description: 'Quantidade. O campo value deve ser pelo menos 0.0001.'
example: 1.0
observation:
type: string
description: Observação.
example: 'Example Items * observation'
nullable: true
required:
- product_id
- quantity
required:
- items
delete:
summary: 'Remove items'
operationId: removeItems
description: 'Remove one or more product items from the list'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
deleted: integer
properties:
deleted:
type: string
example: integer
tags:
- 'Product Quantity Lists'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
items:
type: array
description: 'Item. The uuid of an existing record in the product_quantity_list_items table.'
example:
- 9c61d5e1-b9ff-34fe-a855-601ea2e15137
items:
type: string
required:
- items
parameters:
-
in: path
name: productQuantityList
description: 'Product Quantity List UUID'
example: sed
required: true
schema:
type: string
'/api/product-quantity-lists/items/{id}':
put:
summary: 'Update item'
operationId: updateItem
description: 'Update a product item in the list'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Product Quantity Lists'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
quantity:
type: number
description: 'Quantidade. O campo value deve ser pelo menos 0.0001.'
example: 1.0
observation:
type: string
description: Observação.
example: 'Example Observation'
nullable: true
parameters:
-
in: path
name: id
description: 'The ID of the item.'
example: ipsum
required: true
schema:
type: string
-
in: path
name: item
description: 'Product Quantity List Item UUID'
example: hic
required: true
schema:
type: string
'/api/product-quantity-lists/{productQuantityList}/sync-items':
put:
summary: 'Sync items'
operationId: syncItems
description: 'Replace all items in the list'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Product Quantity Lists'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
items:
type: array
description: Itens.
example:
- null
- null
items:
type: object
properties:
id:
type: string
description: 'ID do Item. The uuid of an existing record in the product_quantity_list_items table.'
example: cbd0367e-8466-335d-9a1c-1f283f08b4ea
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 060fc3e6-4bc4-376a-91fc-a6f6cf61a2a3
quantity:
type: number
description: 'Quantidade. O campo value deve ser pelo menos 0.0001.'
example: 1.0
observation:
type: string
description: Observação.
example: 'Example Items * observation'
nullable: true
required:
- product_id
- quantity
required:
- items
parameters:
-
in: path
name: productQuantityList
description: 'Product Quantity List UUID'
example: et
required: true
schema:
type: string
'/api/product-requests/items/{item}/fulfill':
post:
summary: 'Fulfill item'
operationId: fulfillItem
description: 'Fulfill a product request item via transfer or allocation'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Product Request Fulfillment'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fulfillment_type:
type: string
description: 'Tipo de atendimento.'
example: 'Example Fulfillment type'
enum:
- transfer
- entry
stock_id:
type: string
description: 'Estoque de destino. This field is required when fulfillment_type is transfer. The uuid of an existing record in the stocks table.'
example: 7fa54529-c48a-34b4-8164-7930e131ff53
nullable: true
quantity:
type: number
description: 'Quantidade. O campo value deve ser pelo menos 0.0001.'
example: 1.0
source_stock_id:
type: string
description: 'Estoque de origem. This field is required when fulfillment_type is transfer. The value and stock_id must be different. The uuid of an existing record in the stocks table.'
example: 460ac283-80df-3700-ae7b-ae810c7b01e9
nullable: true
reason:
type: string
description: 'Motivo. O campo value não pode ser superior a 500 caracteres.'
example: 'Example Reason'
nullable: true
required:
- fulfillment_type
- quantity
parameters:
-
in: path
name: item
description: 'Product Request Item UUID'
example: labore
required: true
schema:
type: string
'/api/product-requests/items/{item}/fulfillments':
get:
summary: 'List item fulfillments'
operationId: listItemFulfillments
description: 'List all fulfillments for a product request item'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 34539a81-225c-3ea2-8621-6ddcbc69a93f
quantity: 56.6834
fulfilled_at: '2026-01-21T05:56:57.000000Z'
created_at: null
-
id: 5d95a1d0-69be-3bbe-96d0-b1be34ccf269
quantity: 75.3034
fulfilled_at: '2026-01-12T06:04:18.000000Z'
created_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: 34539a81-225c-3ea2-8621-6ddcbc69a93f
quantity: 56.6834
fulfilled_at: '2026-01-21T05:56:57.000000Z'
created_at: null
-
id: 5d95a1d0-69be-3bbe-96d0-b1be34ccf269
quantity: 75.3034
fulfilled_at: '2026-01-12T06:04:18.000000Z'
created_at: null
items:
type: object
properties:
id:
type: string
example: 34539a81-225c-3ea2-8621-6ddcbc69a93f
quantity:
type: number
example: 56.6834
fulfilled_at:
type: string
example: '2026-01-21T05:56:57.000000Z'
created_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 Request Fulfillment'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
per_page:
type: integer
description: 'Per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 1
nullable: true
page:
type: integer
description: 'Page. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
parameters:
-
in: path
name: item
description: 'Product Request Item UUID'
example: quisquam
required: true
schema:
type: string
'/api/product-requests/items/{id}':
get:
summary: 'Get item with fulfillment details'
operationId: getItemWithFulfillmentDetails
description: 'Get a single product request item with its fulfillment details'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: a6de3819-98e6-37ed-bf04-4c7c3a683448
product:
id: a0fe5a59-51b1-431b-8062-3e20f76fbe5b
name: 'Sr. Diego Bonilha Vasques'
code: PRD-757465
unit:
id: a0fe5a59-507e-43b4-85db-d16e9ce9a86d
name: 'Flávia Verdugo'
abbreviation: 'Léia Santiago Saito Jr.'
quantity: 377.4986
quantity_fulfilled: 0
quantity_pending: 377.4986
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Qui autem alias reprehenderit nobis itaque maiores.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: a6de3819-98e6-37ed-bf04-4c7c3a683448
product:
type: object
properties:
id:
type: string
example: a0fe5a59-51b1-431b-8062-3e20f76fbe5b
name:
type: string
example: 'Sr. Diego Bonilha Vasques'
code:
type: string
example: PRD-757465
unit:
type: object
properties:
id:
type: string
example: a0fe5a59-507e-43b4-85db-d16e9ce9a86d
name:
type: string
example: 'Flávia Verdugo'
abbreviation:
type: string
example: 'Léia Santiago Saito Jr.'
quantity:
type: number
example: 377.4986
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 377.4986
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
type: string
example: 'Qui autem alias reprehenderit nobis itaque maiores.'
created_at:
type: string
example: null
updated_at:
type: string
example: null
tags:
- 'Product Request Fulfillment'
put:
summary: 'Update item'
operationId: updateItem
description: 'Update a product item in the request'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Product Requests'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
quantity:
type: number
description: 'Quantidade. O campo value deve ser pelo menos 0.0001.'
example: 1.0
observation:
type: string
description: Observação.
example: 'Example Observation'
nullable: true
parameters:
-
in: path
name: id
description: 'The ID of the item.'
example: sunt
required: true
schema:
type: string
-
in: path
name: item
description: 'Product Request Item UUID'
example: ullam
required: true
schema:
type: string
'/api/product-requests/{productRequest}/pending-items':
get:
summary: 'List pending items'
operationId: listPendingItems
description: 'List all pending items from a product request'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: b6a2c86b-fe66-39f0-b50f-8a3b6d5666fd
product:
id: a0fe5a59-6692-4cf6-be76-ad9f97bbab34
name: 'Alexa Ávila Barreto Neto'
code: PRD-731747
unit:
id: a0fe5a59-6556-4995-9ee4-9629358c06c3
name: 'Cléber Sebastião Faria'
abbreviation: 'Lara Fonseca Alves'
quantity: 199.9573
quantity_fulfilled: 0
quantity_pending: 199.9573
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: 751cd274-0ba1-374a-af21-95c591a94043
product:
id: a0fe5a59-7d7c-44ae-94b2-994ac77f5424
name: 'Dr. Ian Padrão Sobrinho'
code: PRD-833794
unit:
id: a0fe5a59-7c52-45cb-8901-45893f9cc224
name: 'Sra. Stefany Galindo Jr.'
abbreviation: 'Fernando Pedro Romero Neto'
quantity: 888.9575
quantity_fulfilled: 0
quantity_pending: 888.9575
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Deleniti in aliquid facilis et consequuntur non.'
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: b6a2c86b-fe66-39f0-b50f-8a3b6d5666fd
product:
id: a0fe5a59-6692-4cf6-be76-ad9f97bbab34
name: 'Alexa Ávila Barreto Neto'
code: PRD-731747
unit:
id: a0fe5a59-6556-4995-9ee4-9629358c06c3
name: 'Cléber Sebastião Faria'
abbreviation: 'Lara Fonseca Alves'
quantity: 199.9573
quantity_fulfilled: 0
quantity_pending: 199.9573
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: 751cd274-0ba1-374a-af21-95c591a94043
product:
id: a0fe5a59-7d7c-44ae-94b2-994ac77f5424
name: 'Dr. Ian Padrão Sobrinho'
code: PRD-833794
unit:
id: a0fe5a59-7c52-45cb-8901-45893f9cc224
name: 'Sra. Stefany Galindo Jr.'
abbreviation: 'Fernando Pedro Romero Neto'
quantity: 888.9575
quantity_fulfilled: 0
quantity_pending: 888.9575
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Deleniti in aliquid facilis et consequuntur non.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: b6a2c86b-fe66-39f0-b50f-8a3b6d5666fd
product:
type: object
properties:
id:
type: string
example: a0fe5a59-6692-4cf6-be76-ad9f97bbab34
name:
type: string
example: 'Alexa Ávila Barreto Neto'
code:
type: string
example: PRD-731747
unit:
type: object
properties:
id:
type: string
example: a0fe5a59-6556-4995-9ee4-9629358c06c3
name:
type: string
example: 'Cléber Sebastião Faria'
abbreviation:
type: string
example: 'Lara Fonseca Alves'
quantity:
type: number
example: 199.9573
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 199.9573
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
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:
- 'Product Request Fulfillment'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
per_page:
type: integer
description: 'Per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 1
nullable: true
page:
type: integer
description: 'Page. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
parameters:
-
in: path
name: productRequest
description: 'Product Request UUID'
example: modi
required: true
schema:
type: string
'/api/product-requests/pending-by-product/{product}':
get:
summary: 'List pending items by product'
operationId: listPendingItemsByProduct
description: 'List all pending product request items for a specific product'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: a5968b1a-e753-364b-ab53-964b0597fe66
product:
id: a0fe5a59-924d-410e-9441-d779beb1bdf1
name: 'Dr. Heloísa Marin Jr.'
code: PRD-743383
unit:
id: a0fe5a59-9120-40d0-b847-59930e857e9a
name: 'Sra. Isadora Chaves'
abbreviation: 'Hosana Suelen Guerra Neto'
quantity: 825.6572
quantity_fulfilled: 0
quantity_pending: 825.6572
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: 0f608365-44ce-3c8e-a80e-574c89208351
product:
id: a0fe5a59-a137-4dab-8e87-53e625bd973b
name: 'Dr. Júlia Ramos Assunção'
code: PRD-755925
unit:
id: a0fe5a59-a02c-4871-88a1-a2dd737e4b94
name: 'Noel Serna Sandoval Filho'
abbreviation: 'Luiz Hernani da Cruz'
quantity: 806.7745
quantity_fulfilled: 0
quantity_pending: 806.7745
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: a5968b1a-e753-364b-ab53-964b0597fe66
product:
id: a0fe5a59-924d-410e-9441-d779beb1bdf1
name: 'Dr. Heloísa Marin Jr.'
code: PRD-743383
unit:
id: a0fe5a59-9120-40d0-b847-59930e857e9a
name: 'Sra. Isadora Chaves'
abbreviation: 'Hosana Suelen Guerra Neto'
quantity: 825.6572
quantity_fulfilled: 0
quantity_pending: 825.6572
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: 0f608365-44ce-3c8e-a80e-574c89208351
product:
id: a0fe5a59-a137-4dab-8e87-53e625bd973b
name: 'Dr. Júlia Ramos Assunção'
code: PRD-755925
unit:
id: a0fe5a59-a02c-4871-88a1-a2dd737e4b94
name: 'Noel Serna Sandoval Filho'
abbreviation: 'Luiz Hernani da Cruz'
quantity: 806.7745
quantity_fulfilled: 0
quantity_pending: 806.7745
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: a5968b1a-e753-364b-ab53-964b0597fe66
product:
type: object
properties:
id:
type: string
example: a0fe5a59-924d-410e-9441-d779beb1bdf1
name:
type: string
example: 'Dr. Heloísa Marin Jr.'
code:
type: string
example: PRD-743383
unit:
type: object
properties:
id:
type: string
example: a0fe5a59-9120-40d0-b847-59930e857e9a
name:
type: string
example: 'Sra. Isadora Chaves'
abbreviation:
type: string
example: 'Hosana Suelen Guerra Neto'
quantity:
type: number
example: 825.6572
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 825.6572
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
type: string
example: null
created_at:
type: string
example: null
updated_at:
type: string
example: null
tags:
- 'Product Request Fulfillment'
parameters:
-
in: path
name: product
description: 'Product UUID'
example: soluta
required: true
schema:
type: string
/api/product-requests:
get:
summary: 'List product requests'
operationId: listProductRequests
description: 'List all product requests'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 20630e51-c7ae-377c-ba0c-ca664cd1274e
code: null
name: 'Illo ipsa sed et.'
description: 'Porro neque eaque dignissimos est enim reprehenderit. Qui possimus illum autem quia fugit. In impedit iusto accusantium aspernatur dolores quis sit soluta. Nobis aliquid aut error est.'
work:
id: a0fe5a57-5a49-4337-b288-937e7172066a
name: 'Renato Madeira Saraiva'
user:
id: a0fe5a57-5cdf-4563-b38b-5ecd98f8c5a0
name: 'Prof. Rey Aufderhar IV'
status:
id: a0fe5a57-5f5f-4cb1-ad63-794d98f13fe3
description: 'Verônica Jimenes'
color: '#c0b5d9'
text_color: '#8fa7fc'
priority: high
priority_label: Alta
needed_at: null
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
-
id: 55c749c7-e931-3b47-8608-9ecb1cf53df0
code: null
name: 'Ut ut ad.'
description: null
work:
id: a0fe5a57-62c2-409d-a4da-a23628b215cd
name: 'Sr. Sebastião Delgado Sobrinho'
user:
id: a0fe5a57-6535-4cce-aa57-9cee8de41e48
name: 'Mr. Louie Hoppe'
status:
id: a0fe5a57-66e2-4db2-bb44-97ca44cd3da0
description: 'Srta. Agustina Carmona'
color: '#3e3cbe'
text_color: '#0f6e16'
priority: urgent
priority_label: Urgente
needed_at: null
approved_at: null
rejection_reason: 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: 20630e51-c7ae-377c-ba0c-ca664cd1274e
code: null
name: 'Illo ipsa sed et.'
description: 'Porro neque eaque dignissimos est enim reprehenderit. Qui possimus illum autem quia fugit. In impedit iusto accusantium aspernatur dolores quis sit soluta. Nobis aliquid aut error est.'
work:
id: a0fe5a57-5a49-4337-b288-937e7172066a
name: 'Renato Madeira Saraiva'
user:
id: a0fe5a57-5cdf-4563-b38b-5ecd98f8c5a0
name: 'Prof. Rey Aufderhar IV'
status:
id: a0fe5a57-5f5f-4cb1-ad63-794d98f13fe3
description: 'Verônica Jimenes'
color: '#c0b5d9'
text_color: '#8fa7fc'
priority: high
priority_label: Alta
needed_at: null
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
-
id: 55c749c7-e931-3b47-8608-9ecb1cf53df0
code: null
name: 'Ut ut ad.'
description: null
work:
id: a0fe5a57-62c2-409d-a4da-a23628b215cd
name: 'Sr. Sebastião Delgado Sobrinho'
user:
id: a0fe5a57-6535-4cce-aa57-9cee8de41e48
name: 'Mr. Louie Hoppe'
status:
id: a0fe5a57-66e2-4db2-bb44-97ca44cd3da0
description: 'Srta. Agustina Carmona'
color: '#3e3cbe'
text_color: '#0f6e16'
priority: urgent
priority_label: Urgente
needed_at: null
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 20630e51-c7ae-377c-ba0c-ca664cd1274e
code:
type: string
example: null
name:
type: string
example: 'Illo ipsa sed et.'
description:
type: string
example: 'Porro neque eaque dignissimos est enim reprehenderit. Qui possimus illum autem quia fugit. In impedit iusto accusantium aspernatur dolores quis sit soluta. Nobis aliquid aut error est.'
work:
type: object
properties:
id:
type: string
example: a0fe5a57-5a49-4337-b288-937e7172066a
name:
type: string
example: 'Renato Madeira Saraiva'
user:
type: object
properties:
id:
type: string
example: a0fe5a57-5cdf-4563-b38b-5ecd98f8c5a0
name:
type: string
example: 'Prof. Rey Aufderhar IV'
status:
type: object
properties:
id:
type: string
example: a0fe5a57-5f5f-4cb1-ad63-794d98f13fe3
description:
type: string
example: 'Verônica Jimenes'
color:
type: string
example: '#c0b5d9'
text_color:
type: string
example: '#8fa7fc'
priority:
type: string
example: high
priority_label:
type: string
example: Alta
needed_at:
type: string
example: null
approved_at:
type: string
example: null
rejection_reason:
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:
- 'Product Requests'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
sort_by:
type: string
description: 'Sort by.'
example: 'Example Sort by'
nullable: true
sort_desc:
type: boolean
description: 'Sort desc.'
example: false
nullable: true
page:
type: integer
description: 'Page. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
per_page:
type: integer
description: 'Per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 1
nullable: true
q:
type: string
description: Busca.
example: 'Example Q'
nullable: true
work_id:
type: string
description: 'Obra. The uuid of an existing record in the works table.'
example: 40370f0d-e85e-30a1-866a-73edf97049e5
nullable: true
work_location_id:
type: string
description: 'Local da obra. The uuid of an existing record in the work_locations table.'
example: 4399a48a-90b9-3095-b867-0947576d04a5
nullable: true
user_id:
type: string
description: 'Usuário. The uuid of an existing record in the users table.'
example: aa2de154-55b0-385c-a5bc-ee80acc3b43e
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: c8215ceb-ada3-3d4b-9c41-c7d3e184ef2f
nullable: true
priority:
type: string
description: Prioridade.
example: 'Example Priority'
enum:
- low
- medium
- high
- urgent
nullable: true
needed_at_from:
type: string
description: 'Data de necessidade inicial. O campo value deve ser uma data válida.'
example: 'Example Needed at from'
nullable: true
needed_at_to:
type: string
description: 'Data de necessidade final. O campo value deve ser uma data válida.'
example: 'Example Needed at to'
nullable: true
responsible_id:
type: string
description: 'Responsável. The uuid of an existing record in the users table.'
example: ec28ae5f-afc6-3695-9cf7-8e86ff6f777f
nullable: true
post:
summary: 'Create product request'
operationId: createProductRequest
description: 'Create a new product request'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Product Requests'
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: true
description:
type: string
description: Descrição.
example: 'Example Description'
nullable: true
work_id:
type: string
description: 'Obra. The uuid of an existing record in the works table.'
example: 8c5c512f-5912-38ea-8506-fe549afa82a7
work_location_id:
type: string
description: 'Local da obra. The uuid of an existing record in the work_locations table.'
example: b2dbb2da-69e0-3ae6-8c19-a2b89f1eb103
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: c47c7c49-9cb0-3e32-8031-5962f3100877
nullable: true
priority:
type: string
description: Prioridade.
example: 'Example Priority'
enum:
- low
- medium
- high
- urgent
needed_at:
type: string
description: 'Data de necessidade. O campo value deve ser uma data válida.'
example: 'Example Needed at'
nullable: true
items:
type: array
description: Itens.
example:
- null
- null
items:
type: object
properties:
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 5945d16a-78b9-3850-b348-3eac634f8abf
quantity:
type: number
description: 'Quantidade. O campo value deve ser pelo menos 0.0001.'
example: 1.0
observation:
type: string
description: Observação.
example: 'Example Items * observation'
nullable: true
required:
- product_id
- quantity
required:
- work_id
'/api/product-requests/{productRequest}':
get:
summary: 'Show product request'
operationId: showProductRequest
description: 'Show a product request'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: f3bbef15-f355-31d3-8325-fbbc670d0452
code: null
name: 'Libero eaque quia eum.'
description: 'In delectus et ipsa molestiae qui molestiae. Dolorem pariatur error quam rerum quisquam. Id voluptas debitis excepturi architecto facilis in est. Labore accusantium aut quo quo molestiae nisi natus.'
work:
id: a0fe5a57-6db8-49a5-96d9-876b1425b9bd
name: 'Dr. Pedro da Silva Alves Neto'
user:
id: a0fe5a57-7050-44e1-a952-fbdb90e8f9d9
name: 'Prof. Nickolas Treutel III'
status:
id: a0fe5a57-71eb-4bd2-bbdb-709d6a2ff558
description: 'Thaís Aline Madeira'
color: '#62cd0b'
text_color: '#c5fa37'
priority: low
priority_label: Baixa
needed_at: '2026-02-20'
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: f3bbef15-f355-31d3-8325-fbbc670d0452
code:
type: string
example: null
name:
type: string
example: 'Libero eaque quia eum.'
description:
type: string
example: 'In delectus et ipsa molestiae qui molestiae. Dolorem pariatur error quam rerum quisquam. Id voluptas debitis excepturi architecto facilis in est. Labore accusantium aut quo quo molestiae nisi natus.'
work:
type: object
properties:
id:
type: string
example: a0fe5a57-6db8-49a5-96d9-876b1425b9bd
name:
type: string
example: 'Dr. Pedro da Silva Alves Neto'
user:
type: object
properties:
id:
type: string
example: a0fe5a57-7050-44e1-a952-fbdb90e8f9d9
name:
type: string
example: 'Prof. Nickolas Treutel III'
status:
type: object
properties:
id:
type: string
example: a0fe5a57-71eb-4bd2-bbdb-709d6a2ff558
description:
type: string
example: 'Thaís Aline Madeira'
color:
type: string
example: '#62cd0b'
text_color:
type: string
example: '#c5fa37'
priority:
type: string
example: low
priority_label:
type: string
example: Baixa
needed_at:
type: string
example: '2026-02-20'
approved_at:
type: string
example: null
rejection_reason:
type: string
example: null
created_at:
type: string
example: null
updated_at:
type: string
example: null
tags:
- 'Product Requests'
put:
summary: 'Update product request'
operationId: updateProductRequest
description: 'Update a product request. Can include items to replace all items in the request.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Product Requests'
requestBody:
required: false
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: true
description:
type: string
description: Descrição.
example: 'Example Description'
nullable: true
work_id:
type: string
description: 'Obra. The uuid of an existing record in the works table.'
example: cb2e6eba-b322-35bd-ac55-1dccb7f9e53b
work_location_id:
type: string
description: 'Local da obra. The uuid of an existing record in the work_locations table.'
example: 15bb88dc-6138-36a3-9cca-fbea1994f2bf
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: 87497cef-bee9-3c26-bf5b-f36260e66073
priority:
type: string
description: Prioridade.
example: 'Example Priority'
enum:
- low
- medium
- high
- urgent
needed_at:
type: string
description: 'Data de necessidade. O campo value deve ser uma data válida.'
example: 'Example Needed at'
nullable: true
items:
type: array
description: Itens.
example:
- null
- null
items:
type: object
properties:
id:
type: string
description: 'ID do Item. The uuid of an existing record in the product_request_items table.'
example: 9ed1a899-88a6-3dac-8dd0-041e5bd098af
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 68677d1a-0762-33d2-ad54-9e6303c82ae0
quantity:
type: number
description: 'Quantidade. O campo value deve ser pelo menos 0.0001.'
example: 1.0
observation:
type: string
description: Observação.
example: 'Example Items * observation'
nullable: true
required:
- product_id
- quantity
delete:
summary: 'Delete product request'
operationId: deleteProductRequest
description: 'Delete a product request'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'Product Requests'
parameters:
-
in: path
name: productRequest
description: 'Product Request UUID'
example: maxime
required: true
schema:
type: string
'/api/product-requests/{productRequest}/items':
get:
summary: 'List items'
operationId: listItems
description: 'List all items from a product request with pagination'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 29904e55-9be0-3c20-b479-e8b08650be5a
product:
id: a0fe5a57-8d0b-41d4-aa25-fd48656d7107
name: 'Anita Branco'
code: PRD-185728
unit:
id: a0fe5a57-8be2-48d4-a020-1aa4419dda95
name: 'Sebastião Franco Casanova Jr.'
abbreviation: 'Mauro Henrique de Freitas Sobrinho'
quantity: 736.6417
quantity_fulfilled: 0
quantity_pending: 736.6417
is_fulfilled: false
is_partially_fulfilled: false
observation: 'At quo voluptatem et veniam deserunt natus mollitia est.'
created_at: null
updated_at: null
-
id: a0d58854-9686-3084-9471-d6dfdb9d68f0
product:
id: a0fe5a57-9dc5-48e8-82a8-9c11f97792eb
name: 'Sra. Daiane Zambrano Flores'
code: PRD-427690
unit:
id: a0fe5a57-9c2b-4b32-8133-7fb2b7181268
name: 'Dr. Evandro Queirós'
abbreviation: 'Sra. Stephany Simone Valentin Jr.'
quantity: 525.3459
quantity_fulfilled: 0
quantity_pending: 525.3459
is_fulfilled: false
is_partially_fulfilled: false
observation: 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: 29904e55-9be0-3c20-b479-e8b08650be5a
product:
id: a0fe5a57-8d0b-41d4-aa25-fd48656d7107
name: 'Anita Branco'
code: PRD-185728
unit:
id: a0fe5a57-8be2-48d4-a020-1aa4419dda95
name: 'Sebastião Franco Casanova Jr.'
abbreviation: 'Mauro Henrique de Freitas Sobrinho'
quantity: 736.6417
quantity_fulfilled: 0
quantity_pending: 736.6417
is_fulfilled: false
is_partially_fulfilled: false
observation: 'At quo voluptatem et veniam deserunt natus mollitia est.'
created_at: null
updated_at: null
-
id: a0d58854-9686-3084-9471-d6dfdb9d68f0
product:
id: a0fe5a57-9dc5-48e8-82a8-9c11f97792eb
name: 'Sra. Daiane Zambrano Flores'
code: PRD-427690
unit:
id: a0fe5a57-9c2b-4b32-8133-7fb2b7181268
name: 'Dr. Evandro Queirós'
abbreviation: 'Sra. Stephany Simone Valentin Jr.'
quantity: 525.3459
quantity_fulfilled: 0
quantity_pending: 525.3459
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 29904e55-9be0-3c20-b479-e8b08650be5a
product:
type: object
properties:
id:
type: string
example: a0fe5a57-8d0b-41d4-aa25-fd48656d7107
name:
type: string
example: 'Anita Branco'
code:
type: string
example: PRD-185728
unit:
type: object
properties:
id:
type: string
example: a0fe5a57-8be2-48d4-a020-1aa4419dda95
name:
type: string
example: 'Sebastião Franco Casanova Jr.'
abbreviation:
type: string
example: 'Mauro Henrique de Freitas Sobrinho'
quantity:
type: number
example: 736.6417
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 736.6417
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
type: string
example: 'At quo voluptatem et veniam deserunt natus mollitia est.'
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 Requests'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
q:
type: string
description: Busca.
example: 'Example Q'
nullable: true
per_page:
type: integer
description: 'Itens por página. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 1
post:
summary: 'Add items to request'
operationId: addItemsToRequest
description: 'Add one or more product items to the request'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data: array
properties:
data:
type: string
example: array
tags:
- 'Product Requests'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
items:
type: array
description: 'Itens. O campo value deve ter pelo menos 1 itens.'
example:
- null
- null
items:
type: object
properties:
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 323c33d9-6f81-3872-b2f9-39314e569391
quantity:
type: number
description: 'Quantidade. O campo value deve ser pelo menos 0.0001.'
example: 1.0
observation:
type: string
description: Observação.
example: 'Example Items * observation'
nullable: true
required:
- product_id
- quantity
required:
- items
delete:
summary: 'Remove items'
operationId: removeItems
description: 'Remove one or more product items from the request'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
deleted: integer
properties:
deleted:
type: string
example: integer
tags:
- 'Product Requests'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
items:
type: array
description: 'Item. The uuid of an existing record in the product_request_items table.'
example:
- 2451ad32-e7e6-3ead-8bc1-aff4abd50c21
items:
type: string
required:
- items
parameters:
-
in: path
name: productRequest
description: 'Product Request UUID'
example: corporis
required: true
schema:
type: string
'/api/product-requests/{productRequest}/approve':
post:
summary: 'Approve product request'
operationId: approveProductRequest
description: 'Approve a product request'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Product Requests'
parameters:
-
in: path
name: productRequest
description: 'Product Request UUID'
example: dolorum
required: true
schema:
type: string
'/api/product-requests/{productRequest}/reject':
post:
summary: 'Reject product request'
operationId: rejectProductRequest
description: 'Reject a product request with a reason'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Product Requests'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
reason:
type: string
description: 'Motivo da rejeição. O campo value não pode ser superior a 1000 caracteres.'
example: 'Example Reason'
required:
- reason
parameters:
-
in: path
name: productRequest
description: 'Product Request UUID'
example: et
required: true
schema:
type: string
'/api/product-requests/{productRequest}/sync-items':
put:
summary: 'Sync items'
operationId: syncItems
description: 'Replace all items in the request'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Product Requests'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
items:
type: array
description: Itens.
example:
- null
- null
items:
type: object
properties:
id:
type: string
description: 'ID do Item. The uuid of an existing record in the product_request_items table.'
example: fa21eede-fb2b-39a3-b392-1913f79f10cc
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 85f117eb-3d35-31e3-9fc9-cfd87c2ee23b
quantity:
type: number
description: 'Quantidade. O campo value deve ser pelo menos 0.0001.'
example: 1.0
observation:
type: string
description: Observação.
example: 'Example Items * observation'
nullable: true
required:
- product_id
- quantity
required:
- items
parameters:
-
in: path
name: productRequest
description: 'Product Request UUID'
example: repellat
required: true
schema:
type: string
/api/products:
get:
summary: 'List products'
operationId: listProducts
description: 'List all products'
parameters:
-
in: query
name: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
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: f3755390-7b1d-371b-9054-53d95ff76e6d
name: 'Dr. Tomás Toledo Filho'
code: PRD-972111
stock: 241514
product_family:
id: a0fe5a55-d5d3-4580-8ed2-f9b8072a17ea
name: 'Sr. Elias Fábio Deverso'
product_brand:
id: a0fe5a55-d8e8-4444-acaa-302e4566583e
name: 'Lavínia Olívia Balestero Sobrinho'
unit:
id: a0fe5a55-db7d-4b2d-85f4-bd19a5679b98
name: 'Sra. Cristiana Zamana Valentin Sobrinho'
abbreviation: 'Dr. Luciano Duarte Chaves Jr.'
image:
id: null
url: null
description: 'Ea accusamus praesentium qui aperiam.'
created_at: null
updated_at: null
-
id: e8637b3c-644c-3c83-90a1-7c02d032b4b6
name: 'Dr. Késia Ferreira Sobrinho'
code: PRD-669103
stock: 32
product_family:
id: a0fe5a55-dfa6-41ba-b523-ab7086d1b75f
name: 'Wesley Flores Fernandes'
product_brand:
id: a0fe5a55-e146-4014-99bc-0cc8ecadb10a
name: 'Dr. Regina Gabi Casanova'
unit:
id: a0fe5a55-e2f1-4ca1-acf7-2ccabacf37f1
name: 'Dr. Giovana Uchoa Marés'
abbreviation: 'Afonso Santiago Gil Jr.'
image:
id: null
url: null
description: 'Et voluptate eveniet ullam et temporibus iure aut.'
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: f3755390-7b1d-371b-9054-53d95ff76e6d
name: 'Dr. Tomás Toledo Filho'
code: PRD-972111
stock: 241514
product_family:
id: a0fe5a55-d5d3-4580-8ed2-f9b8072a17ea
name: 'Sr. Elias Fábio Deverso'
product_brand:
id: a0fe5a55-d8e8-4444-acaa-302e4566583e
name: 'Lavínia Olívia Balestero Sobrinho'
unit:
id: a0fe5a55-db7d-4b2d-85f4-bd19a5679b98
name: 'Sra. Cristiana Zamana Valentin Sobrinho'
abbreviation: 'Dr. Luciano Duarte Chaves Jr.'
image:
id: null
url: null
description: 'Ea accusamus praesentium qui aperiam.'
created_at: null
updated_at: null
-
id: e8637b3c-644c-3c83-90a1-7c02d032b4b6
name: 'Dr. Késia Ferreira Sobrinho'
code: PRD-669103
stock: 32
product_family:
id: a0fe5a55-dfa6-41ba-b523-ab7086d1b75f
name: 'Wesley Flores Fernandes'
product_brand:
id: a0fe5a55-e146-4014-99bc-0cc8ecadb10a
name: 'Dr. Regina Gabi Casanova'
unit:
id: a0fe5a55-e2f1-4ca1-acf7-2ccabacf37f1
name: 'Dr. Giovana Uchoa Marés'
abbreviation: 'Afonso Santiago Gil Jr.'
image:
id: null
url: null
description: 'Et voluptate eveniet ullam et temporibus iure aut.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: f3755390-7b1d-371b-9054-53d95ff76e6d
name:
type: string
example: 'Dr. Tomás Toledo Filho'
code:
type: string
example: PRD-972111
stock:
type: integer
example: 241514
product_family:
type: object
properties:
id:
type: string
example: a0fe5a55-d5d3-4580-8ed2-f9b8072a17ea
name:
type: string
example: 'Sr. Elias Fábio Deverso'
product_brand:
type: object
properties:
id:
type: string
example: a0fe5a55-d8e8-4444-acaa-302e4566583e
name:
type: string
example: 'Lavínia Olívia Balestero Sobrinho'
unit:
type: object
properties:
id:
type: string
example: a0fe5a55-db7d-4b2d-85f4-bd19a5679b98
name:
type: string
example: 'Sra. Cristiana Zamana Valentin Sobrinho'
abbreviation:
type: string
example: 'Dr. Luciano Duarte Chaves Jr.'
image:
type: object
properties:
id:
type: string
example: null
url:
type: string
example: null
description:
type: string
example: 'Ea accusamus praesentium qui aperiam.'
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: 'Nome. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Name'
product_family_id:
type: string
description: 'Família do Produto. The uuid of an existing record in the product_families table.'
example: 12eec4c5-c6c9-3e3b-a650-4f517910f924
product_brand_id:
type: string
description: 'Marca do Produto. The uuid of an existing record in the product_brands table.'
example: 9f94f1c4-512c-3b13-ba4d-d357055ae699
unit_id:
type: string
description: 'Unidade. The uuid of an existing record in the units table.'
example: b6f67c33-7960-3d54-be91-262ed741f720
description:
type: string
description: Descrição.
example: 'Example Description'
nullable: true
stock:
type: number
description: 'Estoque. O campo value deve ser pelo menos 0.'
example: 1.0
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: 09f758fb-0b57-3932-b58c-2650680430d2
name: 'Ivan Neves Neto'
code: PRD-822709
stock: 583
product_family:
id: a0fe5a55-ea0d-490a-90c4-448b86b93d73
name: 'Franco Queirós Sobrinho'
product_brand:
id: a0fe5a55-ebf8-4eae-899d-15c4b3dce46e
name: 'Dr. Jean Santos Jr.'
unit:
id: a0fe5a55-edd8-4ade-b4f4-1eda3e333f42
name: 'Milene de Souza Reis Sobrinho'
abbreviation: 'André Urias Dominato Jr.'
image:
id: null
url: null
description: 'Iusto necessitatibus non aut.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 09f758fb-0b57-3932-b58c-2650680430d2
name:
type: string
example: 'Ivan Neves Neto'
code:
type: string
example: PRD-822709
stock:
type: integer
example: 583
product_family:
type: object
properties:
id:
type: string
example: a0fe5a55-ea0d-490a-90c4-448b86b93d73
name:
type: string
example: 'Franco Queirós Sobrinho'
product_brand:
type: object
properties:
id:
type: string
example: a0fe5a55-ebf8-4eae-899d-15c4b3dce46e
name:
type: string
example: 'Dr. Jean Santos Jr.'
unit:
type: object
properties:
id:
type: string
example: a0fe5a55-edd8-4ade-b4f4-1eda3e333f42
name:
type: string
example: 'Milene de Souza Reis Sobrinho'
abbreviation:
type: string
example: 'André Urias Dominato Jr.'
image:
type: object
properties:
id:
type: string
example: null
url:
type: string
example: null
description:
type: string
example: 'Iusto necessitatibus non aut.'
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: false
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'
product_family_id:
type: string
description: 'Família do Produto. The uuid of an existing record in the product_families table.'
example: 0f7de137-2ea1-3361-a352-e04002bf2171
product_brand_id:
type: string
description: 'Marca do Produto. The uuid of an existing record in the product_brands table.'
example: 8641c926-40d4-3b79-951a-2cd0e7bee75e
unit_id:
type: string
description: 'Unidade. The uuid of an existing record in the units table.'
example: 2ef93c8e-7b87-3a92-8da7-b8b14b1a620e
stock:
type: number
description: 'Estoque. O campo value deve ser pelo menos 0.'
example: 1.0
description:
type: string
description: Descrição.
example: 'Example Description'
nullable: true
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: cupiditate
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: quia
required: true
schema:
type: string
/api/sectors:
get:
summary: 'List sectors'
operationId: listSectors
description: 'List all sectors'
parameters:
-
in: query
name: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
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: 52adea07-df0b-3a74-9618-fedeae3738e5
name: 'sint recusandae'
slug: null
description: 'Vero consequatur et atque possimus. Voluptas ipsa eum alias repellat nemo est. Voluptatem sapiente molestiae et beatae officia ut.'
abbreviation: rsb
created_at: null
updated_at: null
-
id: 32a5681e-eb79-3460-aa11-fd776b236d16
name: 'quo occaecati'
slug: null
description: 'Voluptatum nihil non perferendis vero ex cum qui. Ea nihil et labore cumque expedita consequatur itaque. Qui sed nisi delectus veniam et.'
abbreviation: gdw
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: 52adea07-df0b-3a74-9618-fedeae3738e5
name: 'sint recusandae'
slug: null
description: 'Vero consequatur et atque possimus. Voluptas ipsa eum alias repellat nemo est. Voluptatem sapiente molestiae et beatae officia ut.'
abbreviation: rsb
created_at: null
updated_at: null
-
id: 32a5681e-eb79-3460-aa11-fd776b236d16
name: 'quo occaecati'
slug: null
description: 'Voluptatum nihil non perferendis vero ex cum qui. Ea nihil et labore cumque expedita consequatur itaque. Qui sed nisi delectus veniam et.'
abbreviation: gdw
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 52adea07-df0b-3a74-9618-fedeae3738e5
name:
type: string
example: 'sint recusandae'
slug:
type: string
example: null
description:
type: string
example: 'Vero consequatur et atque possimus. Voluptas ipsa eum alias repellat nemo est. Voluptatem sapiente molestiae et beatae officia ut.'
abbreviation:
type: string
example: rsb
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'
slug:
type: string
description: 'Slug. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Slug'
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
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
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: 471268b0-9723-3d70-b311-d882e7ddce31
name: 'nostrum iusto'
slug: null
description: null
abbreviation: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 471268b0-9723-3d70-b311-d882e7ddce31
name:
type: string
example: 'nostrum iusto'
slug:
type: string
example: null
description:
type: string
example: null
abbreviation:
type: string
example: null
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: false
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'
slug:
type: string
description: 'Slug. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Slug'
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
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
nullable: true
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: 12
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: 91c03aff-e18c-3960-9c34-8a4907e97350
name: 'Marcel Beier'
username: ryann.heaney
email: lon.robel@example.org
image:
id: null
url: null
sectors: []
roles: []
-
id: 4d793472-61e1-3ad0-8aec-4319e4331b8f
name: "Dr. Adolphus O'Keefe"
username: pdoyle
email: fdeckow@example.com
image:
id: null
url: null
sectors: []
roles: []
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: 91c03aff-e18c-3960-9c34-8a4907e97350
name: 'Marcel Beier'
username: ryann.heaney
email: lon.robel@example.org
image:
id: null
url: null
sectors: []
roles: []
-
id: 4d793472-61e1-3ad0-8aec-4319e4331b8f
name: "Dr. Adolphus O'Keefe"
username: pdoyle
email: fdeckow@example.com
image:
id: null
url: null
sectors: []
roles: []
items:
type: object
properties:
id:
type: string
example: 91c03aff-e18c-3960-9c34-8a4907e97350
name:
type: string
example: 'Marcel Beier'
username:
type: string
example: ryann.heaney
email:
type: string
example: lon.robel@example.org
image:
type: object
properties:
id:
type: string
example: null
url:
type: string
example: null
sectors:
type: array
example: []
roles:
type: array
example: []
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
next:
type: string
example: null
meta:
type: object
properties:
current_page:
type: integer
example: 1
from:
type: integer
example: 1
last_page:
type: integer
example: 1
links:
type: array
example:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
items:
type: object
properties:
url:
type: string
example: null
label:
type: string
example: '« Anterior'
page:
type: string
example: null
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 10
to:
type: integer
example: 2
total:
type: integer
example: 2
tags:
- Sectors
parameters:
-
in: path
name: sector
description: 'Sector UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/sectors/{sector}/users/attach':
post:
summary: 'Attach users to sector'
operationId: attachUsersToSector
description: 'Attach users to a sector without removing existing ones. Expects an array of user UUIDs in the "users" field.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Users attached successfully'
properties:
message:
type: string
example: 'Users attached successfully'
tags:
- Sectors
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
users:
type: array
description: 'UUID do usuário. The uuid of an existing record in the users table.'
example:
- c6a2cbbb-3904-3621-8988-a1d31b58cf9e
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:
- c8a9ee18-296c-3547-9238-e87a10f6d499
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:
- c3a26ac0-edfd-3080-842c-b0c5ab663e78
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: 'tempora mollitia'
slug: dolorum-est-magnam-a-sed-sint-impedit
-
name: 'sapiente iure'
slug: rerum-est-eos-iste-culpa-neque
properties:
data:
type: array
example:
-
name: 'tempora mollitia'
slug: dolorum-est-magnam-a-sed-sint-impedit
-
name: 'sapiente iure'
slug: rerum-est-eos-iste-culpa-neque
items:
type: object
properties:
name:
type: string
example: 'tempora mollitia'
slug:
type: string
example: dolorum-est-magnam-a-sed-sint-impedit
tags:
- 'Status Modules'
/api/statuses:
get:
summary: 'List statuses'
operationId: listStatuses
description: 'List all statuses'
parameters:
-
in: query
name: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
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
-
in: query
name: module
description: 'Filter by module slug. The slug of an existing record in the status_modules table.'
example: work
required: false
schema:
type: string
description: 'Filter by module slug. The slug of an existing record in the status_modules table.'
example: work
nullable: true
-
in: query
name: sector_id
description: 'Filter by sector UUID. The uuid of an existing record in the sectors table.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: false
schema:
type: string
description: 'Filter by sector UUID. The uuid of an existing record in the sectors table.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 274386de-38e8-3860-b164-c3171da3b084
description: 'Sr. Nero de Aguiar'
abbreviation: quod
color: '#a28fa6'
text_color: '#a496cf'
module:
name: 'Solicitação de Produtos'
slug: product_request
created_at: null
updated_at: null
-
id: 7fcc245a-9685-382e-9d1f-9f64424827fd
description: 'Dr. Giovanna Laura Queirós Filho'
abbreviation: voluptas
color: '#4d4a83'
text_color: '#57c2a7'
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: 274386de-38e8-3860-b164-c3171da3b084
description: 'Sr. Nero de Aguiar'
abbreviation: quod
color: '#a28fa6'
text_color: '#a496cf'
module:
name: 'Solicitação de Produtos'
slug: product_request
created_at: null
updated_at: null
-
id: 7fcc245a-9685-382e-9d1f-9f64424827fd
description: 'Dr. Giovanna Laura Queirós Filho'
abbreviation: voluptas
color: '#4d4a83'
text_color: '#57c2a7'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 274386de-38e8-3860-b164-c3171da3b084
description:
type: string
example: 'Sr. Nero de Aguiar'
abbreviation:
type: string
example: quod
color:
type: string
example: '#a28fa6'
text_color:
type: string
example: '#a496cf'
module:
type: object
properties:
name:
type: string
example: 'Solicitação de Produtos'
slug:
type: string
example: product_request
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: 'Descrição. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Description'
abbreviation:
type: string
description: 'Abreviação. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Abbreviation'
module:
type: string
description: Módulo.
example: 'Example Module'
sector_id:
type: string
description: 'Setor. The uuid of an existing record in the sectors table.'
example: 07e8f149-56cd-3822-83a8-aaf5c272920c
color:
type: string
description: Cor.
example: 'Example Color'
nullable: true
text_color:
type: string
description: 'Cor do texto.'
example: 'Example Text color'
nullable: true
order:
type: integer
description: 'Ordem. O campo value deve ser pelo menos 0.'
example: 1
nullable: true
is_initial:
type: boolean
description: 'Status inicial.'
example: false
nullable: true
is_final:
type: boolean
description: 'Status final.'
example: false
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: c7a9b650-6ccd-30fa-bde8-9656fc9db417
description: 'Sr. Christian Ortega Souza'
abbreviation: assumenda
color: '#563658'
text_color: '#9603a7'
module:
name: 'Solicitação de Produtos'
slug: product_request
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: c7a9b650-6ccd-30fa-bde8-9656fc9db417
description:
type: string
example: 'Sr. Christian Ortega Souza'
abbreviation:
type: string
example: assumenda
color:
type: string
example: '#563658'
text_color:
type: string
example: '#9603a7'
module:
type: object
properties:
name:
type: string
example: 'Solicitação de Produtos'
slug:
type: string
example: product_request
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: false
content:
application/json:
schema:
type: object
properties:
description:
type: string
description: 'Descrição. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Description'
abbreviation:
type: string
description: 'Abreviação. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Abbreviation'
module:
type: string
description: Módulo.
example: 'Example Module'
sector_id:
type: string
description: 'Setor. The uuid of an existing record in the sectors table.'
example: 120fe5a0-fc60-3ed4-8552-ee325eb538bb
color:
type: string
description: Cor.
example: 'Example Color'
nullable: true
text_color:
type: string
description: 'Cor do texto.'
example: 'Example Text color'
nullable: true
order:
type: integer
description: 'Ordem. O campo value deve ser pelo menos 0.'
example: 1
is_initial:
type: boolean
description: 'Status inicial.'
example: false
is_final:
type: boolean
description: 'Status final.'
example: false
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/stocks/available-for-transfer:
get:
summary: 'List stocks available for transfer'
operationId: listStocksAvailableForTransfer
description: 'Returns a list of stock items from other works that have the specified product available for transfer'
parameters:
-
in: query
name: product_id
description: 'Product UUID to search for. O campo value deve ser um UUID válido. The uuid of an existing record in the products table.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
description: 'Product UUID to search for. O campo value deve ser um UUID válido. The uuid of an existing record in the products table.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
-
in: query
name: exclude_work_id
description: 'Work UUID to exclude from results (usually the requesting work). O campo value deve ser um UUID válido. The uuid of an existing record in the works table.'
example: 019556e7-2e9f-777c-a177-30bbf0646c33
required: false
schema:
type: string
description: 'Work UUID to exclude from results (usually the requesting work). O campo value deve ser um UUID válido. The uuid of an existing record in the works table.'
example: 019556e7-2e9f-777c-a177-30bbf0646c33
nullable: true
-
in: query
name: min_quantity
description: 'Minimum quantity available. O campo value deve ser pelo menos 0.0001.'
example: 1.0
required: false
schema:
type: number
description: 'Minimum quantity available. O campo value deve ser pelo menos 0.0001.'
example: 1.0
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: cd71d7bb-09ec-30df-8d51-17742e327657
quantity: 947.4738
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: 524f02ae-2058-3933-9802-43cd02be0fce
quantity: 132.8627
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: cd71d7bb-09ec-30df-8d51-17742e327657
quantity: 947.4738
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: 524f02ae-2058-3933-9802-43cd02be0fce
quantity: 132.8627
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: cd71d7bb-09ec-30df-8d51-17742e327657
quantity:
type: number
example: 947.4738
min_quantity:
type: string
example: null
max_quantity:
type: string
example: null
below_minimum:
type: boolean
example: false
above_maximum:
type: boolean
example: false
created_at:
type: string
example: null
updated_at:
type: string
example: null
tags:
- Stock
/api/stocks:
get:
summary: 'List stocks'
operationId: listStocks
description: 'Returns a paginated list of stocks'
parameters:
-
in: query
name: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 10
required: false
schema:
type: integer
description: 'Number of items per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 10
-
in: query
name: q
description: 'Search by stock name. O campo value não pode ser superior a 255 caracteres.'
example: 'Main Stock'
required: false
schema:
type: string
description: 'Search by stock name. O campo value não pode ser superior a 255 caracteres.'
example: 'Main Stock'
nullable: true
-
in: query
name: module
description: 'Filter by module type (e.g., work, customer). O campo value não pode ser superior a 100 caracteres.'
example: work
required: false
schema:
type: string
description: 'Filter by module type (e.g., work, customer). O campo value não pode ser superior a 100 caracteres.'
example: work
nullable: true
-
in: query
name: is_active
description: 'Filter by active status.'
example: true
required: false
schema:
type: boolean
description: 'Filter by active status.'
example: true
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 643dbd85-a7a3-3788-b3ae-37f4682779f7
name: 'Estoque Rodrigues Ltda.'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
-
id: 5ca7293c-125f-39ca-9269-7eced22525ee
name: 'Estoque Soto Comercial Ltda.'
module: work
is_active: true
is_main: false
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: 643dbd85-a7a3-3788-b3ae-37f4682779f7
name: 'Estoque Rodrigues Ltda.'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
-
id: 5ca7293c-125f-39ca-9269-7eced22525ee
name: 'Estoque Soto Comercial Ltda.'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 643dbd85-a7a3-3788-b3ae-37f4682779f7
name:
type: string
example: 'Estoque Rodrigues Ltda.'
module:
type: string
example: work
is_active:
type: boolean
example: true
is_main:
type: boolean
example: false
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:
- Stock
post:
summary: 'Create stock'
operationId: createStock
description: 'Creates a new stock linked to a module'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: e63fe2d4-7738-3e98-8858-e4df1bbfa30d
name: 'Estoque Grego Ltda.'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: e63fe2d4-7738-3e98-8858-e4df1bbfa30d
name:
type: string
example: 'Estoque Grego Ltda.'
module:
type: string
example: work
is_active:
type: boolean
example: true
is_main:
type: boolean
example: false
created_at:
type: string
example: null
updated_at:
type: string
example: null
tags:
- Stock
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'
module:
type: string
description: 'módulo. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Module'
id:
type: string
description: identificador.
example: 'Example Id'
is_active:
type: boolean
description: ativo.
example: false
required:
- name
- module
- id
/api/stocks/main:
get:
summary: 'Get main stock'
operationId: getMainStock
description: 'Returns the main stock'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: a853b31e-e7c1-3644-bccd-5284f32a8192
name: 'Estoque Santana e Domingues'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: a853b31e-e7c1-3644-bccd-5284f32a8192
name:
type: string
example: 'Estoque Santana e Domingues'
module:
type: string
example: work
is_active:
type: boolean
example: true
is_main:
type: boolean
example: false
created_at:
type: string
example: null
updated_at:
type: string
example: null
tags:
- Stock
'/api/stocks/{id}':
get:
summary: 'Show stock'
operationId: showStock
description: 'Returns details of a specific stock'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 34e368ff-ae92-355e-8401-9f2dc807d05b
name: 'Estoque Balestero-Godói'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 34e368ff-ae92-355e-8401-9f2dc807d05b
name:
type: string
example: 'Estoque Balestero-Godói'
module:
type: string
example: work
is_active:
type: boolean
example: true
is_main:
type: boolean
example: false
created_at:
type: string
example: null
updated_at:
type: string
example: null
tags:
- Stock
put:
summary: 'Update stock'
operationId: updateStock
description: 'Updates an existing stock'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: aac07f0d-55d2-31cd-9957-c83394f11822
name: 'Estoque Rezende-Ferminiano'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: aac07f0d-55d2-31cd-9957-c83394f11822
name:
type: string
example: 'Estoque Rezende-Ferminiano'
module:
type: string
example: work
is_active:
type: boolean
example: true
is_main:
type: boolean
example: false
created_at:
type: string
example: null
updated_at:
type: string
example: null
tags:
- Stock
requestBody:
required: false
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'
is_active:
type: boolean
description: ativo.
example: false
delete:
summary: 'Delete stock'
operationId: deleteStock
description: 'Removes a stock (soft delete)'
parameters: []
responses: { }
tags:
- Stock
parameters:
-
in: path
name: id
description: 'The ID of the stock.'
example: 1
required: true
schema:
type: integer
-
in: path
name: stock
description: 'Stock UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/stocks/{stock}/items':
get:
summary: 'List stock items'
operationId: listStockItems
description: 'Returns a paginated list of items/products in a stock'
parameters:
-
in: query
name: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 10
required: false
schema:
type: integer
description: 'Number of items per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 10
-
in: query
name: q
description: 'Search by product name. O campo value não pode ser superior a 255 caracteres.'
example: Cement
required: false
schema:
type: string
description: 'Search by product name. O campo value não pode ser superior a 255 caracteres.'
example: Cement
nullable: true
-
in: query
name: below_minimum
description: 'Filter items below minimum quantity.'
example: true
required: false
schema:
type: boolean
description: 'Filter items below minimum quantity.'
example: true
nullable: true
-
in: query
name: above_maximum
description: 'Filter items above maximum quantity.'
example: false
required: false
schema:
type: boolean
description: 'Filter items above maximum quantity.'
example: false
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: debbc399-9a6b-3527-9af0-8c5372245e14
quantity: 481.3322
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: de91186a-9764-36be-aae8-c5c8e9dc9a8f
quantity: 19.303
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
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: debbc399-9a6b-3527-9af0-8c5372245e14
quantity: 481.3322
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: de91186a-9764-36be-aae8-c5c8e9dc9a8f
quantity: 19.303
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: debbc399-9a6b-3527-9af0-8c5372245e14
quantity:
type: number
example: 481.3322
min_quantity:
type: string
example: null
max_quantity:
type: string
example: null
below_minimum:
type: boolean
example: false
above_maximum:
type: boolean
example: false
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:
- Stock
parameters:
-
in: path
name: stock
description: 'Stock UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/stocks/{stock_id}/items/{id}':
patch:
summary: 'Update stock item'
operationId: updateStockItem
description: 'Updates min/max quantity thresholds for a stock item'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: f6bf0986-8f3c-3cfd-b7f1-9ef44b32653e
quantity: 597.109
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: f6bf0986-8f3c-3cfd-b7f1-9ef44b32653e
quantity:
type: number
example: 597.109
min_quantity:
type: string
example: null
max_quantity:
type: string
example: null
below_minimum:
type: boolean
example: false
above_maximum:
type: boolean
example: false
created_at:
type: string
example: null
updated_at:
type: string
example: null
tags:
- Stock
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
min_quantity:
type: number
description: 'Minimum quantity threshold for low stock alert. O campo value deve ser pelo menos 0.'
example: 10.0
nullable: true
max_quantity:
type: number
description: 'Maximum quantity threshold for over stock alert. O campo value deve ser pelo menos 0.'
example: 100.0
nullable: true
parameters:
-
in: path
name: stock_id
description: 'The ID of the stock.'
example: 1
required: true
schema:
type: integer
-
in: path
name: id
description: 'The ID of the item.'
example: dolor
required: true
schema:
type: string
-
in: path
name: stock
description: 'Stock UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
-
in: path
name: item
description: 'Stock item UUID'
example: 019556e7-3a1b-888d-b288-41ccf0757d43
required: true
schema:
type: string
'/api/stocks/{stock}/summary':
get:
summary: 'Stock summary'
operationId: stockSummary
description: 'Returns a summary with totals and alerts for the stock'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
total_products: 15
total_quantity: 1250.5
items_below_minimum: 3
items_above_maximum: 1
properties:
data:
type: object
properties:
total_products:
type: integer
example: 15
total_quantity:
type: number
example: 1250.5
items_below_minimum:
type: integer
example: 3
items_above_maximum:
type: integer
example: 1
tags:
- Stock
parameters:
-
in: path
name: stock
description: 'Stock UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/stocks/{stock_id}/movements':
get:
summary: 'List movements'
operationId: listMovements
description: 'Returns a paginated list of movements for a stock'
parameters:
-
in: query
name: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 10
required: false
schema:
type: integer
description: 'Number of items per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 10
-
in: query
name: type
description: 'Filter by movement type (entry, consumption, transfer_in, transfer_out, adjustment_up, adjustment_down). O campo value não pode ser superior a 50 caracteres.'
example: entry
required: false
schema:
type: string
description: 'Filter by movement type (entry, consumption, transfer_in, transfer_out, adjustment_up, adjustment_down). O campo value não pode ser superior a 50 caracteres.'
example: entry
nullable: true
-
in: query
name: product_id
description: 'Filter by product UUID. O campo value deve ser um UUID válido.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: false
schema:
type: string
description: 'Filter by product UUID. O campo value deve ser um UUID válido.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
nullable: true
-
in: query
name: date_start
description: 'Filter movements 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 movements 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 movements 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 movements 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
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 01205e02-966f-3e5c-a3a4-8ca2e37b56a1
code: MOV-095391
type: 'entrada transferência'
type_name: TRANSFER_IN
is_entry: true
is_exit: false
quantity: 29.9644
previous_quantity: 651.5154
new_quantity: 681.4798
reason: null
movement_date: '2026-01-16T22:05:56.000000Z'
created_at: null
-
id: ccabef2c-2553-34cd-9f94-0c536fee6b08
code: MOV-015852
type: devolução
type_name: RETURN
is_entry: true
is_exit: false
quantity: 66.1574
previous_quantity: 693.3235
new_quantity: 759.4809
reason: null
movement_date: '2026-01-30T12:31:02.000000Z'
created_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: 01205e02-966f-3e5c-a3a4-8ca2e37b56a1
code: MOV-095391
type: 'entrada transferência'
type_name: TRANSFER_IN
is_entry: true
is_exit: false
quantity: 29.9644
previous_quantity: 651.5154
new_quantity: 681.4798
reason: null
movement_date: '2026-01-16T22:05:56.000000Z'
created_at: null
-
id: ccabef2c-2553-34cd-9f94-0c536fee6b08
code: MOV-015852
type: devolução
type_name: RETURN
is_entry: true
is_exit: false
quantity: 66.1574
previous_quantity: 693.3235
new_quantity: 759.4809
reason: null
movement_date: '2026-01-30T12:31:02.000000Z'
created_at: null
items:
type: object
properties:
id:
type: string
example: 01205e02-966f-3e5c-a3a4-8ca2e37b56a1
code:
type: string
example: MOV-095391
type:
type: string
example: 'entrada transferência'
type_name:
type: string
example: TRANSFER_IN
is_entry:
type: boolean
example: true
is_exit:
type: boolean
example: false
quantity:
type: number
example: 29.9644
previous_quantity:
type: number
example: 651.5154
new_quantity:
type: number
example: 681.4798
reason:
type: string
example: null
movement_date:
type: string
example: '2026-01-16T22:05:56.000000Z'
created_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:
- 'Stock Movements'
post:
summary: 'Create movement'
operationId: createMovement
description: 'Creates a new entry or exit movement in the stock'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: caf8e5b6-c108-3c47-833d-ee4aba609f1e
code: MOV-535089
type: 'ajuste entrada'
type_name: ADJUSTMENT_IN
is_entry: true
is_exit: false
quantity: 43.274
previous_quantity: 664.2579
new_quantity: 707.5319
reason: null
movement_date: '2026-02-03T16:28:23.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: caf8e5b6-c108-3c47-833d-ee4aba609f1e
code:
type: string
example: MOV-535089
type:
type: string
example: 'ajuste entrada'
type_name:
type: string
example: ADJUSTMENT_IN
is_entry:
type: boolean
example: true
is_exit:
type: boolean
example: false
quantity:
type: number
example: 43.274
previous_quantity:
type: number
example: 664.2579
new_quantity:
type: number
example: 707.5319
reason:
type: string
example: null
movement_date:
type: string
example: '2026-02-03T16:28:23.000000Z'
created_at:
type: string
example: null
tags:
- 'Stock Movements'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
product_id:
type: string
description: 'produto. The uuid of an existing record in the products table.'
example: f46e5198-f7a7-34b1-8e1f-d7ba446c1fb2
type:
type: string
description: 'tipo de movimentação.'
example: 'Example Type'
enum:
- compra
- produção
- devolução
- consumo
- venda
- perda
- vencido
- alocação
quantity:
type: number
description: quantidade.
example: 1.0
reason:
type: string
description: 'motivo. O campo value não pode ser superior a 500 caracteres.'
example: 'Example Reason'
nullable: true
reference_type:
type: string
description: 'tipo de referência. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Reference type'
nullable: true
reference_id:
type: integer
description: referência.
example: 1
nullable: true
movement_date:
type: string
description: 'data da movimentação. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
required:
- product_id
- type
- quantity
parameters:
-
in: path
name: stock_id
description: 'The ID of the stock.'
example: 1
required: true
schema:
type: integer
-
in: path
name: stock
description: 'Stock UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/stocks/{stock}/movements/transfer':
post:
summary: 'Transfer between stocks'
operationId: transferBetweenStocks
description: 'Transfers products from one stock to another'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 187a8459-b960-37d8-9136-4e555b5ff77c
code: MOV-565344
type: consumo
type_name: CONSUMPTION
is_entry: false
is_exit: true
quantity: 50.2305
previous_quantity: 509.8281
new_quantity: 459.5976
reason: 'Repellendus veniam et cupiditate illum odit rerum ut ratione.'
movement_date: '2026-01-19T08:12:56.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 187a8459-b960-37d8-9136-4e555b5ff77c
code:
type: string
example: MOV-565344
type:
type: string
example: consumo
type_name:
type: string
example: CONSUMPTION
is_entry:
type: boolean
example: false
is_exit:
type: boolean
example: true
quantity:
type: number
example: 50.2305
previous_quantity:
type: number
example: 509.8281
new_quantity:
type: number
example: 459.5976
reason:
type: string
example: 'Repellendus veniam et cupiditate illum odit rerum ut ratione.'
movement_date:
type: string
example: '2026-01-19T08:12:56.000000Z'
created_at:
type: string
example: null
tags:
- 'Stock Movements'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
product_id:
type: string
description: 'produto. The uuid of an existing record in the products table.'
example: 4b21876e-41c2-3a28-af15-6b0d53d3e7c7
destination_stock_id:
type: string
description: 'estoque de destino. The value and stock must be different. The uuid of an existing record in the stocks table.'
example: bc50e127-3de5-31c5-98d0-d0ef5eb456fc
quantity:
type: number
description: quantidade.
example: 1.0
reason:
type: string
description: 'motivo. O campo value não pode ser superior a 500 caracteres.'
example: 'Example Reason'
nullable: true
movement_date:
type: string
description: 'data da movimentação. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
required:
- product_id
- destination_stock_id
- quantity
parameters:
-
in: path
name: stock
description: 'Source stock UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/stocks/{stock}/movements/inventory':
post:
summary: 'Inventory adjustment'
operationId: inventoryAdjustment
description: 'Performs inventory adjustment to correct stock quantity'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: d4c00d1c-98cf-3898-abce-3c62458e1d38
code: MOV-514503
type: devolução
type_name: RETURN
is_entry: true
is_exit: false
quantity: 38.0588
previous_quantity: 981.2712
new_quantity: 1019.33
reason: null
movement_date: '2026-01-29T21:32:42.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: d4c00d1c-98cf-3898-abce-3c62458e1d38
code:
type: string
example: MOV-514503
type:
type: string
example: devolução
type_name:
type: string
example: RETURN
is_entry:
type: boolean
example: true
is_exit:
type: boolean
example: false
quantity:
type: number
example: 38.0588
previous_quantity:
type: number
example: 981.2712
new_quantity:
type: number
example: 1019.33
reason:
type: string
example: null
movement_date:
type: string
example: '2026-01-29T21:32:42.000000Z'
created_at:
type: string
example: null
tags:
- 'Stock Movements'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
product_id:
type: string
description: 'produto. The uuid of an existing record in the products table.'
example: f21d10f3-39f7-33d3-95ff-a181b087534f
new_quantity:
type: number
description: 'nova quantidade.'
example: 1.0
reason:
type: string
description: 'motivo. O campo value não pode ser superior a 500 caracteres.'
example: 'Example Reason'
nullable: true
movement_date:
type: string
description: 'data da movimentação. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
required:
- product_id
- new_quantity
parameters:
-
in: path
name: stock
description: 'Stock UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
/api/stock-movements/purchase:
post:
summary: 'Purchase entry'
operationId: purchaseEntry
description: 'Registers a purchase entry directly into the main stock'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 5802dadf-c858-39ae-89dd-6a69f3ed7aa7
code: MOV-372576
type: vencido
type_name: EXPIRED
is_entry: false
is_exit: true
quantity: 4.2351
previous_quantity: 798.392
new_quantity: 794.1569
reason: 'Sint culpa at vero repellat dolorum minus.'
movement_date: '2026-02-03T05:16:57.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 5802dadf-c858-39ae-89dd-6a69f3ed7aa7
code:
type: string
example: MOV-372576
type:
type: string
example: vencido
type_name:
type: string
example: EXPIRED
is_entry:
type: boolean
example: false
is_exit:
type: boolean
example: true
quantity:
type: number
example: 4.2351
previous_quantity:
type: number
example: 798.392
new_quantity:
type: number
example: 794.1569
reason:
type: string
example: 'Sint culpa at vero repellat dolorum minus.'
movement_date:
type: string
example: '2026-02-03T05:16:57.000000Z'
created_at:
type: string
example: null
tags:
- 'Stock Movements'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
product_id:
type: string
description: 'produto. The uuid of an existing record in the products table.'
example: 75ec5a04-c97c-36f8-a8de-f65bb13fe6e0
quantity:
type: number
description: 'quantidade. O campo value deve ser pelo menos 0.0001.'
example: 1.0
reason:
type: string
description: 'motivo. O campo value não pode ser superior a 500 caracteres.'
example: 'Example Reason'
nullable: true
movement_date:
type: string
description: 'data do movimento. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
required:
- product_id
- quantity
'/api/stock-movements/{movement}':
get:
summary: 'Show movement'
operationId: showMovement
description: 'Returns details of a specific movement'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 5fcbcf91-1c4e-3f0c-8452-f9b87d6a83b8
code: MOV-055278
type: consumo
type_name: CONSUMPTION
is_entry: false
is_exit: true
quantity: 31.1777
previous_quantity: 117.4917
new_quantity: 86.314
reason: 'Voluptatem repellendus cupiditate soluta qui.'
movement_date: '2026-01-30T02:06:07.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 5fcbcf91-1c4e-3f0c-8452-f9b87d6a83b8
code:
type: string
example: MOV-055278
type:
type: string
example: consumo
type_name:
type: string
example: CONSUMPTION
is_entry:
type: boolean
example: false
is_exit:
type: boolean
example: true
quantity:
type: number
example: 31.1777
previous_quantity:
type: number
example: 117.4917
new_quantity:
type: number
example: 86.314
reason:
type: string
example: 'Voluptatem repellendus cupiditate soluta qui.'
movement_date:
type: string
example: '2026-01-30T02:06:07.000000Z'
created_at:
type: string
example: null
tags:
- 'Stock Movements'
parameters:
-
in: path
name: movement
description: 'Movement UUID'
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: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
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: 9c4b0dff-23f2-3828-b32c-3eaa0fc65ea3
name: 'Sr. Martinho Urias'
email: uchoa.livia@example.org
phone: '(47) 2039-4368'
document: 68.415.649/0001-07
type: pf
responsible: 'Luis Alves'
image:
id: null
url: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
-
id: e343bf64-0cb8-3b6d-ba40-73848ab7202b
name: 'Michael Santiago'
email: enzo30@example.org
phone: '(87) 4201-8558'
document: 92.492.129/0001-82
type: pf
responsible: 'Clarice Heloise Marques Neto'
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: 9c4b0dff-23f2-3828-b32c-3eaa0fc65ea3
name: 'Sr. Martinho Urias'
email: uchoa.livia@example.org
phone: '(47) 2039-4368'
document: 68.415.649/0001-07
type: pf
responsible: 'Luis Alves'
image:
id: null
url: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
-
id: e343bf64-0cb8-3b6d-ba40-73848ab7202b
name: 'Michael Santiago'
email: enzo30@example.org
phone: '(87) 4201-8558'
document: 92.492.129/0001-82
type: pf
responsible: 'Clarice Heloise Marques Neto'
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: 9c4b0dff-23f2-3828-b32c-3eaa0fc65ea3
name:
type: string
example: 'Sr. Martinho Urias'
email:
type: string
example: uchoa.livia@example.org
phone:
type: string
example: '(47) 2039-4368'
document:
type: string
example: 68.415.649/0001-07
type:
type: string
example: pf
responsible:
type: string
example: 'Luis Alves'
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'
email:
type: string
description: 'E-mail. O campo value deve ser um endereço de e-mail válido.'
example: user@example.com
phone:
type: string
description: Telefone.
example: '(11) 99999-9999'
document:
type: string
description: CPF/CNPJ.
example: 'Example Document'
type:
type: string
description: Tipo.
example: 'Example Type'
enum:
- pf
- pj
responsible:
type: string
description: Responsável.
example: 'Example Responsible'
nullable: true
image:
type: object
description: Imagem.
example:
- example1
- example2
properties:
path:
type: string
description: 'Caminho da imagem. This field is required when image is present.'
example: 'Example Image path'
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
properties:
street:
type: string
description: Rua.
example: 'Example Address street'
number:
type: string
description: Número.
example: 'Example Address number'
complement:
type: string
description: Complemento.
example: 'Example Address complement'
neighborhood:
type: string
description: Bairro.
example: 'Example Address neighborhood'
city:
type: string
description: Cidade.
example: 'Example Address city'
state:
type: string
description: Estado.
example: 'Example Address state'
zip_code:
type: string
description: CEP.
example: 'Example Address zip code'
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: 0c1768fe-3f23-32b8-bb44-4427cde0bb0f
name: 'Dr. Dayana Saraiva Cervantes'
email: dpaz@example.com
phone: '(73) 4947-1233'
document: 20.792.315/0001-26
type: pj
responsible: 'Violeta Emanuelly Romero Jr.'
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: 0c1768fe-3f23-32b8-bb44-4427cde0bb0f
name:
type: string
example: 'Dr. Dayana Saraiva Cervantes'
email:
type: string
example: dpaz@example.com
phone:
type: string
example: '(73) 4947-1233'
document:
type: string
example: 20.792.315/0001-26
type:
type: string
example: pj
responsible:
type: string
example: 'Violeta Emanuelly Romero Jr.'
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'
email:
type: string
description: 'E-mail. O campo value deve ser um endereço de e-mail válido.'
example: user@example.com
phone:
type: string
description: Telefone.
example: '(11) 99999-9999'
document:
type: string
description: CPF/CNPJ.
example: 'Example Document'
type:
type: string
description: Tipo.
example: 'Example Type'
enum:
- pf
- pj
responsible:
type: string
description: Responsável.
example: 'Example Responsible'
nullable: true
image:
type: object
description: Imagem.
example:
- example1
- example2
properties:
path:
type: string
description: 'Caminho da imagem. This field is required when image is present.'
example: 'Example Image path'
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
properties:
street:
type: string
description: Rua.
example: 'Example Address street'
number:
type: string
description: Número.
example: 'Example Address number'
complement:
type: string
description: Complemento.
example: 'Example Address complement'
neighborhood:
type: string
description: Bairro.
example: 'Example Address neighborhood'
city:
type: string
description: Cidade.
example: 'Example Address city'
state:
type: string
description: Estado.
example: 'Example Address state'
zip_code:
type: string
description: CEP.
example: 'Example Address zip code'
parameters:
-
in: path
name: id
description: 'The ID of the supplier.'
example: 19
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: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
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
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 9d34afd9-7f7c-31c9-bd3c-16ab03b20b8e
name: 'Filipe Godói Sobrinho'
description: 'Dolores et vero et autem esse. Consequuntur assumenda dolores deleniti voluptatum qui magnam. Esse quod dolor nisi magnam. Corrupti repudiandae eaque praesentium tempore nisi fugit.'
type: ajuste
-
id: 3e43b349-262a-3626-8efb-61aaaaf7f551
name: 'Dr. Carlos Marcos Mascarenhas Neto'
description: 'Dolorem accusantium aut perferendis nulla sapiente. Autem est minima omnis distinctio voluptate similique aut. Est alias dolorem voluptas illum.'
type: pagamento
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: 9d34afd9-7f7c-31c9-bd3c-16ab03b20b8e
name: 'Filipe Godói Sobrinho'
description: 'Dolores et vero et autem esse. Consequuntur assumenda dolores deleniti voluptatum qui magnam. Esse quod dolor nisi magnam. Corrupti repudiandae eaque praesentium tempore nisi fugit.'
type: ajuste
-
id: 3e43b349-262a-3626-8efb-61aaaaf7f551
name: 'Dr. Carlos Marcos Mascarenhas Neto'
description: 'Dolorem accusantium aut perferendis nulla sapiente. Autem est minima omnis distinctio voluptate similique aut. Est alias dolorem voluptas illum.'
type: pagamento
items:
type: object
properties:
id:
type: string
example: 9d34afd9-7f7c-31c9-bd3c-16ab03b20b8e
name:
type: string
example: 'Filipe Godói Sobrinho'
description:
type: string
example: 'Dolores et vero et autem esse. Consequuntur assumenda dolores deleniti voluptatum qui magnam. Esse quod dolor nisi magnam. Corrupti repudiandae eaque praesentium tempore nisi fugit.'
type:
type: string
example: ajuste
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'
description:
type: string
description: Description.
example: 'Example Description'
type:
type: string
description: Type.
example: 'Example Type'
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: 786dabd6-f172-3524-b396-63a9a3daf646
name: 'Dr. Silvana Neves'
description: 'Iusto et reprehenderit esse. Sit vero natus sed dolorem ullam. Itaque quasi accusamus laborum id voluptas ea.'
type: saque
properties:
data:
type: object
properties:
id:
type: string
example: 786dabd6-f172-3524-b396-63a9a3daf646
name:
type: string
example: 'Dr. Silvana Neves'
description:
type: string
example: 'Iusto et reprehenderit esse. Sit vero natus sed dolorem ullam. Itaque quasi accusamus laborum id voluptas ea.'
type:
type: string
example: saque
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'
description:
type: string
description: Description.
example: 'Example Description'
type:
type: string
description: Type.
example: 'Example Type'
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: impedit
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: d700315a-3313-3a7f-b004-ec77c8e3ee06
name: 'Sandro Máximo Santiago'
abbreviation: 'Roberto Zamana'
description: 'Vitae quo odit beatae ad.'
created_at: null
updated_at: null
-
id: b5326cf0-eb0d-3071-ad5d-c3111b0c78d0
name: 'Srta. Viviane Yohanna Jimenes'
abbreviation: 'Dr. Thomas William Rico Sobrinho'
description: 'Iure ut sit sit laborum.'
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: d700315a-3313-3a7f-b004-ec77c8e3ee06
name: 'Sandro Máximo Santiago'
abbreviation: 'Roberto Zamana'
description: 'Vitae quo odit beatae ad.'
created_at: null
updated_at: null
-
id: b5326cf0-eb0d-3071-ad5d-c3111b0c78d0
name: 'Srta. Viviane Yohanna Jimenes'
abbreviation: 'Dr. Thomas William Rico Sobrinho'
description: 'Iure ut sit sit laborum.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: d700315a-3313-3a7f-b004-ec77c8e3ee06
name:
type: string
example: 'Sandro Máximo Santiago'
abbreviation:
type: string
example: 'Roberto Zamana'
description:
type: string
example: 'Vitae quo odit beatae ad.'
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: 'Nome da unidade.'
example: 'Example Name'
abbreviation:
type: string
description: Abreviação.
example: 'Example Abbreviation'
description:
type: string
description: Descrição.
example: 'Example Description'
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: e773c4f1-f155-3142-ae07-6759f59f1c1a
name: 'Dr. Francisco Murilo Fidalgo'
abbreviation: 'Dr. Carlos Bittencourt'
description: 'Natus aut voluptatum cumque.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: e773c4f1-f155-3142-ae07-6759f59f1c1a
name:
type: string
example: 'Dr. Francisco Murilo Fidalgo'
abbreviation:
type: string
example: 'Dr. Carlos Bittencourt'
description:
type: string
example: 'Natus aut voluptatum cumque.'
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: 'Nome da unidade.'
example: 'Example Name'
abbreviation:
type: string
description: Abreviação.
example: 'Example Abbreviation'
description:
type: string
description: Descrição.
example: 'Example Description'
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: sed
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: et
required: true
schema:
type: string
/api/users:
get:
summary: 'List users'
operationId: listUsers
description: 'List all users'
parameters:
-
in: query
name: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search query by name or email.'
example: 'John Doe'
required: false
schema:
type: string
description: 'Search query by name or email.'
example: 'John Doe'
nullable: true
-
in: query
name: sector_id
description: 'Filter by sector UUID. The uuid of an existing record in the sectors table.'
example: 123e4567-e89b-12d3-a456-426614174000
required: false
schema:
type: string
description: 'Filter by sector UUID. The uuid of an existing record in the sectors table.'
example: 123e4567-e89b-12d3-a456-426614174000
nullable: true
-
in: query
name: role
description: 'Filter by role name. The name of an existing record in the roles table.'
example: ADMIN
required: false
schema:
type: string
description: 'Filter by role name. The name of an existing record in the roles table.'
example: ADMIN
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: b293640e-81dd-3023-a80c-b1c4273cf2ff
name: 'Aimee Johns IV'
username: edwin.howell
email: buckridge.maude@example.com
image:
id: null
url: null
sectors: []
roles: []
-
id: e126642e-bab0-3b09-a6ff-45d12240a013
name: 'Charles Carroll'
username: nschmitt
email: ggoyette@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: b293640e-81dd-3023-a80c-b1c4273cf2ff
name: 'Aimee Johns IV'
username: edwin.howell
email: buckridge.maude@example.com
image:
id: null
url: null
sectors: []
roles: []
-
id: e126642e-bab0-3b09-a6ff-45d12240a013
name: 'Charles Carroll'
username: nschmitt
email: ggoyette@example.net
image:
id: null
url: null
sectors: []
roles: []
items:
type: object
properties:
id:
type: string
example: b293640e-81dd-3023-a80c-b1c4273cf2ff
name:
type: string
example: 'Aimee Johns IV'
username:
type: string
example: edwin.howell
email:
type: string
example: buckridge.maude@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:
- 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'
email:
type: string
description: 'E-mail. O campo value deve ser um endereço de e-mail válido.'
example: user@example.com
username:
type: string
description: Usuário.
example: mayert.rahul
image:
type: object
description: Imagem.
example:
- example1
- example2
properties:
path:
type: string
description: 'Caminho da imagem. This field is required when image is present.'
example: 'Example Image path'
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:
- ec6625cc-15c4-35a3-b912-c0c282013ce0
items:
type: string
roles:
type: array
description: 'UUID da função. The uuid of an existing record in the roles table.'
example:
- 56c5b20a-5817-31c5-9160-cb92779adf41
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: e2581fad-98a4-3cbd-a03e-a1a49c72eea8
name: 'Eladio Howe III'
username: rice.johnathon
email: spinka.vincenzo@example.net
image:
id: null
url: null
sectors: []
roles: []
properties:
data:
type: object
properties:
id:
type: string
example: e2581fad-98a4-3cbd-a03e-a1a49c72eea8
name:
type: string
example: 'Eladio Howe III'
username:
type: string
example: rice.johnathon
email:
type: string
example: spinka.vincenzo@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'
email:
type: string
description: 'E-mail. O campo value deve ser um endereço de e-mail válido.'
example: user@example.com
username:
type: string
description: Usuário.
example: hermann73
password:
type: string
description: Password.
example: password123
image:
type: object
description: Imagem.
example:
- example1
- example2
properties:
path:
type: string
description: 'Caminho da imagem. This field is required when image is present.'
example: 'Example Image path'
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:
- f33cfc36-2b67-386c-8c9e-f7b1d1fee6f3
items:
type: string
roles:
type: array
description: 'UUID da função. The uuid of an existing record in the roles table.'
example:
- 2f0d20ea-d3b9-3ea5-aea6-9b94f6dab936
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:
- 7663c44d-1fd9-30cf-8779-8e4c9430e72f
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: sit
display_name: 'Tempore aut totam atque.'
-
id: null
name: itaque
display_name: 'Aut non commodi hic quia maxime corporis est.'
properties:
data:
type: array
example:
-
id: null
name: sit
display_name: 'Tempore aut totam atque.'
-
id: null
name: itaque
display_name: 'Aut non commodi hic quia maxime corporis est.'
items:
type: object
properties:
id:
type: string
example: null
name:
type: string
example: sit
display_name:
type: string
example: 'Tempore aut totam atque.'
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: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
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: 2478ebb0-4dee-3431-8a1f-3790f3b4cdad
description: 'Sra. Jaqueline Espinoza Jr.'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
-
id: 86927304-1d30-3b35-a2a6-6fb0e35819c8
description: 'Srta. Analu de Oliveira'
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: 2478ebb0-4dee-3431-8a1f-3790f3b4cdad
description: 'Sra. Jaqueline Espinoza Jr.'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
-
id: 86927304-1d30-3b35-a2a6-6fb0e35819c8
description: 'Srta. Analu de Oliveira'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 2478ebb0-4dee-3431-8a1f-3790f3b4cdad
description:
type: string
example: 'Sra. Jaqueline Espinoza Jr.'
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: 'Descrição. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Description'
work_id:
type: string
description: 'Obra. The uuid of an existing record in the works table.'
example: 0ff4280b-e9eb-36c4-b000-997a6a14c983
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: 9c14fe53-3698-3aad-a4c8-f40eaa17d14a
description: 'Eliane de Aguiar Prado'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 9c14fe53-3698-3aad-a4c8-f40eaa17d14a
description:
type: string
example: 'Eliane de Aguiar Prado'
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: false
content:
application/json:
schema:
type: object
properties:
description:
type: string
description: 'Descrição. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Description'
work_id:
type: string
description: 'Obra. The uuid of an existing record in the works table.'
example: ad92ef61-f1c6-3d9c-8b97-c3356f1c9e7f
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: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
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: customer_id
description: 'Filter by customer UUID. The uuid of an existing record in the customers table.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: false
schema:
type: string
description: 'Filter by customer UUID. The uuid of an existing record in the customers table.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
nullable: true
-
in: query
name: status_id
description: 'Filter by status UUID. The uuid of an existing record in the statuses table.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: false
schema:
type: string
description: 'Filter by status UUID. The uuid of an existing record in the statuses table.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
nullable: true
-
in: query
name: responsible_id
description: 'Filter by responsible user UUID. Only works if user has "work view-all" permission. The uuid of an existing record in the users table.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: false
schema:
type: string
description: 'Filter by responsible user UUID. Only works if user has "work view-all" permission. The uuid of an existing record in the users table.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
nullable: true
-
in: query
name: no_responsible
description: 'Filter works without any responsible users.'
example: true
required: false
schema:
type: boolean
description: 'Filter works without any responsible users.'
example: true
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: ea2b88cc-acbb-33df-847c-44d638ccc411
name: 'Jaqueline Arruda Rosa'
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
documents: []
locations: []
product_quantity_lists_count: 0
product_quantity_list_items_count: 0
documents_count: 0
locations_documents_count: 0
total_documents_count: 0
started_at:
date: '2004-08-14 06:12:59.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
-
id: 346e7656-ce76-34a5-a565-41f709630bfa
name: 'Dr. Gian Mendonça Soto'
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
documents: []
locations: []
product_quantity_lists_count: 0
product_quantity_list_items_count: 0
documents_count: 0
locations_documents_count: 0
total_documents_count: 0
started_at:
date: '1998-08-24 21:10:14.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: ea2b88cc-acbb-33df-847c-44d638ccc411
name: 'Jaqueline Arruda Rosa'
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
documents: []
locations: []
product_quantity_lists_count: 0
product_quantity_list_items_count: 0
documents_count: 0
locations_documents_count: 0
total_documents_count: 0
started_at:
date: '2004-08-14 06:12:59.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
-
id: 346e7656-ce76-34a5-a565-41f709630bfa
name: 'Dr. Gian Mendonça Soto'
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
documents: []
locations: []
product_quantity_lists_count: 0
product_quantity_list_items_count: 0
documents_count: 0
locations_documents_count: 0
total_documents_count: 0
started_at:
date: '1998-08-24 21:10:14.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: ea2b88cc-acbb-33df-847c-44d638ccc411
name:
type: string
example: 'Jaqueline Arruda Rosa'
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: []
product_quantity_lists_count:
type: integer
example: 0
product_quantity_list_items_count:
type: integer
example: 0
documents_count:
type: integer
example: 0
locations_documents_count:
type: integer
example: 0
total_documents_count:
type: integer
example: 0
started_at:
type: object
properties:
date:
type: string
example: '2004-08-14 06:12:59.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: 'Nome. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Name'
customer_id:
type: string
description: 'Cliente. The uuid of an existing record in the customers table.'
example: ff01b03d-4931-32ed-9c34-4eda75d5386e
status_id:
type: string
description: 'Status id. The uuid of an existing record in the statuses table.'
example: 50f92aca-7ccd-3028-9f25-2eb8276617d2
started_at:
type: string
description: 'Início da obra. O campo value deve ser uma data válida.'
example: 'Example Started at'
nullable: true
address:
type: object
description: Endereço.
example:
- example1
- example2
properties:
street:
type: string
description: Rua.
example: 'Example Address street'
number:
type: string
description: Número.
example: 'Example Address number'
complement:
type: string
description: Complemento.
example: 'Example Address complement'
neighborhood:
type: string
description: Bairro.
example: 'Example Address neighborhood'
city:
type: string
description: Cidade.
example: 'Example Address city'
state:
type: string
description: Estado.
example: 'Example Address state'
zip_code:
type: string
description: CEP.
example: 'Example Address zip code'
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: a591e4af-34cc-3c14-93d7-e4e4fe9b87fb
name: 'Sr. Cristiano de Arruda Jr.'
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
documents: []
locations: []
product_quantity_lists_count: 0
product_quantity_list_items_count: 0
documents_count: 0
locations_documents_count: 0
total_documents_count: 0
started_at:
date: '1986-09-22 21:47:41.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: a591e4af-34cc-3c14-93d7-e4e4fe9b87fb
name:
type: string
example: 'Sr. Cristiano de Arruda Jr.'
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: []
product_quantity_lists_count:
type: integer
example: 0
product_quantity_list_items_count:
type: integer
example: 0
documents_count:
type: integer
example: 0
locations_documents_count:
type: integer
example: 0
total_documents_count:
type: integer
example: 0
started_at:
type: object
properties:
date:
type: string
example: '1986-09-22 21:47:41.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: false
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'
customer_id:
type: string
description: 'Cliente. The uuid of an existing record in the customers table.'
example: 4de3d39b-c310-3e6e-a2b3-4ecbce7a5665
status_id:
type: string
description: 'Status id. The uuid of an existing record in the statuses table.'
example: 0c6123d3-48e4-3121-bc95-18aae49c655d
started_at:
type: string
description: 'Início da obra. O campo value deve ser uma data válida.'
example: 'Example Started at'
nullable: true
address:
type: object
description: Endereço.
example:
- example1
- example2
properties:
street:
type: string
description: Rua.
example: 'Example Address street'
number:
type: string
description: Número.
example: 'Example Address number'
complement:
type: string
description: Complemento.
example: 'Example Address complement'
neighborhood:
type: string
description: Bairro.
example: 'Example Address neighborhood'
city:
type: string
description: Cidade.
example: 'Example Address city'
state:
type: string
description: Estado.
example: 'Example Address state'
zip_code:
type: string
description: CEP.
example: 'Example Address zip code'
delete:
summary: 'Delete work'
operationId: deleteWork
description: 'Delete a work'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Works
parameters:
-
in: path
name: id
description: 'The ID of the work.'
example: 1
required: true
schema:
type: integer
-
in: path
name: work
description: 'Work ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/works/{work}/responsibles':
get:
summary: 'List work responsibles'
operationId: listWorkResponsibles
description: 'List all users responsible for a work'
parameters:
-
in: query
name: sort_by
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: sort_desc
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: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). 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 items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search by name or email.'
example: John
required: false
schema:
type: string
description: 'Search by name or email.'
example: John
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: a97637c1-ecf6-3836-930b-25ddfdbb304c
name: 'Dr. Aiyana Emard I'
username: mhuels
email: adolphus.volkman@example.net
image:
id: null
url: null
sectors: []
roles: []
-
id: 65b6b00a-0567-3032-b2e7-e9fdf2dc82d7
name: 'Janie Hoeger'
username: lucas.skiles
email: murazik.jacynthe@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: a97637c1-ecf6-3836-930b-25ddfdbb304c
name: 'Dr. Aiyana Emard I'
username: mhuels
email: adolphus.volkman@example.net
image:
id: null
url: null
sectors: []
roles: []
-
id: 65b6b00a-0567-3032-b2e7-e9fdf2dc82d7
name: 'Janie Hoeger'
username: lucas.skiles
email: murazik.jacynthe@example.net
image:
id: null
url: null
sectors: []
roles: []
items:
type: object
properties:
id:
type: string
example: a97637c1-ecf6-3836-930b-25ddfdbb304c
name:
type: string
example: 'Dr. Aiyana Emard I'
username:
type: string
example: mhuels
email:
type: string
example: adolphus.volkman@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:
- Works
parameters:
-
in: path
name: work
description: 'Work UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/works/{work}/responsibles/attach':
post:
summary: 'Attach responsibles to work'
operationId: attachResponsiblesToWork
description: 'Attach users as responsibles to a work without removing existing ones'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Responsibles attached successfully'
properties:
message:
type: string
example: 'Responsibles attached successfully'
tags:
- Works
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
users:
type: array
description: 'UUID do usuário. The uuid of an existing record in the users table.'
example:
- e01e6f00-9ac3-32df-844c-8c69bc87f691
items:
type: string
parameters:
-
in: path
name: work
description: 'Work UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/works/{work}/responsibles/detach':
post:
summary: 'Detach responsibles from work'
operationId: detachResponsiblesFromWork
description: 'Remove specific users as responsibles from a work'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Responsibles detached successfully'
properties:
message:
type: string
example: 'Responsibles detached successfully'
tags:
- Works
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
users:
type: array
description: 'UUID do usuário. The uuid of an existing record in the users table.'
example:
- 672a45bd-b937-3a98-aa9e-49ee8eebdb2a
items:
type: string
parameters:
-
in: path
name: work
description: 'Work UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/works/{work}/responsibles/sync':
post:
summary: 'Sync work responsibles'
operationId: syncWorkResponsibles
description: 'Replace all responsibles of a work with the provided list'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Responsibles synchronized successfully'
properties:
message:
type: string
example: 'Responsibles synchronized successfully'
tags:
- Works
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
users:
type: array
description: 'UUID do usuário. The uuid of an existing record in the users table.'
example:
- 66b7c2a3-0b95-3603-8305-4b52cc411ebb
items:
type: string
parameters:
-
in: path
name: work
description: 'Work UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string