uuid of an existing record in the permissions table.'
example:
- 3ada3ecf-409f-30c3-b208-7a88f4be4724
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:
- d34162fb-0b0c-372e-ae38-5ac47946f1a9
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: 07750ebd-c711-3e75-9327-780cc69fdf69
name: sint-6a723f63ef0cd
display_name: 'Nostrum soluta id sed occaecati voluptatum voluptatem ratione cum.'
permissions_count: null
properties:
data:
type: object
properties:
id:
type: string
example: 07750ebd-c711-3e75-9327-780cc69fdf69
name:
type: string
example: sint-6a723f63ef0cd
display_name:
type: string
example: 'Nostrum soluta id sed occaecati voluptatum voluptatem ratione cum.'
permissions_count:
type: string
example: null
nullable: true
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: modi
display_name: 'Facilis vel deleniti voluptas qui omnis.'
-
id: null
name: amet
display_name: 'Et sit totam iusto blanditiis.'
properties:
data:
type: array
example:
-
id: null
name: modi
display_name: 'Facilis vel deleniti voluptas qui omnis.'
-
id: null
name: amet
display_name: 'Et sit totam iusto blanditiis.'
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: modi
display_name:
type: string
example: 'Facilis vel deleniti voluptas qui omnis.'
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: ex
display_name: 'Sint atque voluptatem quis blanditiis.'
-
id: null
name: ipsum
display_name: 'Omnis qui eius aut quia voluptatum perferendis.'
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: ex
display_name: 'Sint atque voluptatem quis blanditiis.'
-
id: null
name: ipsum
display_name: 'Omnis qui eius aut quia voluptatum perferendis.'
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: ex
display_name:
type: string
example: 'Sint atque voluptatem quis blanditiis.'
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: corporis
display_name: 'Incidunt error laboriosam qui vitae dolores.'
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: corporis
display_name:
type: string
example: 'Incidunt error laboriosam qui vitae dolores.'
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: 491447ac-ea5b-3988-a7f3-1377fb5f48f0
code: null
type: entrada
payment_method: boleto
amount: 6059.32
due_date: '2026-08-22T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Qui maiores officiis aut in et dolores nam consequatur blanditiis reiciendis sed quia.'
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: qui
field2: 71
field3: true
notes: 'Consequatur quia aspernatur et hic quam ut.'
created_at: null
updated_at: null
-
id: 0a8638c0-7459-3700-b526-e96f0216ecbb
code: null
type: entrada
payment_method: cheque
amount: 9475.44
due_date: '2026-08-13T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Quisquam dolores voluptas et incidunt esse est aut vel eos esse quibusdam sit.'
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: quas
field2: 37
field3: true
notes: 'Atque rerum modi qui eum.'
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: 491447ac-ea5b-3988-a7f3-1377fb5f48f0
code: null
type: entrada
payment_method: boleto
amount: 6059.32
due_date: '2026-08-22T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Qui maiores officiis aut in et dolores nam consequatur blanditiis reiciendis sed quia.'
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: qui
field2: 71
field3: true
notes: 'Consequatur quia aspernatur et hic quam ut.'
created_at: null
updated_at: null
-
id: 0a8638c0-7459-3700-b526-e96f0216ecbb
code: null
type: entrada
payment_method: cheque
amount: 9475.44
due_date: '2026-08-13T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Quisquam dolores voluptas et incidunt esse est aut vel eos esse quibusdam sit.'
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: quas
field2: 37
field3: true
notes: 'Atque rerum modi qui eum.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 491447ac-ea5b-3988-a7f3-1377fb5f48f0
code:
type: string
example: null
nullable: true
type:
type: string
example: entrada
payment_method:
type: string
example: boleto
amount:
type: number
example: 6059.32
due_date:
type: string
example: '2026-08-22T03:00:00.000000Z'
status:
type: string
example: null
nullable: true
payment_date:
type: string
example: null
nullable: true
protest_date:
type: string
example: null
nullable: true
paid_amount:
type: string
example: null
nullable: true
interest_amount:
type: string
example: null
nullable: true
penalty_amount:
type: string
example: null
nullable: true
notary_fee_amount:
type: string
example: null
nullable: true
description:
type: string
example: 'Qui maiores officiis aut in et dolores nam consequatur blanditiis reiciendis sed quia.'
is_recurring:
type: string
example: null
nullable: true
recurrence_config:
type: string
example: null
nullable: true
parent_id:
type: string
example: null
nullable: true
recurrence_order:
type: integer
example: 1
total_recurrences:
type: string
example: null
nullable: true
children_count:
type: integer
example: 0
remaining_recurrences:
type: string
example: null
nullable: true
has_children:
type: boolean
example: false
field1:
type: string
example: qui
field2:
type: integer
example: 71
field3:
type: boolean
example: true
notes:
type: string
example: 'Consequatur quia aspernatur et hic quam ut.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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:
- odio
required: true
schema:
type: array
description: 'The uuid of an existing record in the account_payable_receivables table.'
example:
- odio
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/protests/summary:
get:
summary: 'Get protest summary'
operationId: getProtestSummary
description: 'Get summary of accounts with protest status'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
to_protest_count: integer
protested_count: integer
protesting_today_count: integer
total_protest_amount: float
properties:
to_protest_count:
type: string
example: integer
protested_count:
type: string
example: integer
protesting_today_count:
type: string
example: integer
total_protest_amount:
type: string
example: float
tags:
- 'Accounts Payable Receivable'
/api/accounts-payable-receivable/protests:
get:
summary: 'List protested accounts'
operationId: listProtestedAccounts
description: 'List accounts with protest date that are not paid/canceled'
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: code
description: 'Filter by account code.'
example: CPR-000123
required: false
schema:
type: string
description: 'Filter by account code.'
example: CPR-000123
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:
- maiores
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- maiores
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- itaque
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- itaque
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- exercitationem
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- exercitationem
items:
type: string
-
in: query
name: statuses
description: ''
example:
- 'a vencer'
required: false
schema:
type: array
description: ''
example:
- 'a vencer'
items:
type: string
enum:
- 'a vencer'
- pago
- pago_sem_lancamento
- vencido
- recebido
- cancelado
- 'a protestar'
- protestado
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: protest_date_start
description: 'O campo value deve ser uma data válida.'
example: '2026-08-04T16:37:08'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-08-04T16:37:08'
nullable: true
-
in: query
name: protest_date_end
description: 'O campo value deve ser uma data válida.'
example: '2026-08-04T16:37:08'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-08-04T16:37:08'
nullable: true
-
in: query
name: has_protest
description: ''
example: true
required: false
schema:
type: boolean
description: ''
example: true
nullable: true
-
in: query
name: has_children
description: 'Filter accounts that have recurring children.'
example: true
required: false
schema:
type: boolean
description: 'Filter accounts that have recurring children.'
example: true
nullable: true
-
in: query
name: is_recurring
description: 'Filter by recurring status (true: only recurring, false: only non-recurring, null: all).'
example: true
required: false
schema:
type: boolean
description: 'Filter by recurring status (true: only recurring, false: only non-recurring, null: all).'
example: true
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 5e64316e-474a-391f-901b-cc78212f2c9d
code: null
type: saída
payment_method: boleto
amount: 3528.81
due_date: '2026-08-20T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Qui modi ea ut provident quia fugit sapiente minus ut iste eius quae.'
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: suscipit
field2: 75
field3: false
notes: 'Et fugiat tenetur fugit omnis.'
created_at: null
updated_at: null
-
id: 50d8c26e-4ea1-399e-af3d-710a4decbcde
code: null
type: entrada
payment_method: cheque
amount: 2698.18
due_date: '2026-08-28T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Repellat blanditiis sequi et dicta possimus est aut quasi aperiam atque nulla sequi ex.'
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: exercitationem
field2: 95
field3: true
notes: 'Odio et doloribus odit qui.'
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: 5e64316e-474a-391f-901b-cc78212f2c9d
code: null
type: saída
payment_method: boleto
amount: 3528.81
due_date: '2026-08-20T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Qui modi ea ut provident quia fugit sapiente minus ut iste eius quae.'
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: suscipit
field2: 75
field3: false
notes: 'Et fugiat tenetur fugit omnis.'
created_at: null
updated_at: null
-
id: 50d8c26e-4ea1-399e-af3d-710a4decbcde
code: null
type: entrada
payment_method: cheque
amount: 2698.18
due_date: '2026-08-28T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Repellat blanditiis sequi et dicta possimus est aut quasi aperiam atque nulla sequi ex.'
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: exercitationem
field2: 95
field3: true
notes: 'Odio et doloribus odit qui.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 5e64316e-474a-391f-901b-cc78212f2c9d
code:
type: string
example: null
nullable: true
type:
type: string
example: saída
payment_method:
type: string
example: boleto
amount:
type: number
example: 3528.81
due_date:
type: string
example: '2026-08-20T03:00:00.000000Z'
status:
type: string
example: null
nullable: true
payment_date:
type: string
example: null
nullable: true
protest_date:
type: string
example: null
nullable: true
paid_amount:
type: string
example: null
nullable: true
interest_amount:
type: string
example: null
nullable: true
penalty_amount:
type: string
example: null
nullable: true
notary_fee_amount:
type: string
example: null
nullable: true
description:
type: string
example: 'Qui modi ea ut provident quia fugit sapiente minus ut iste eius quae.'
is_recurring:
type: string
example: null
nullable: true
recurrence_config:
type: string
example: null
nullable: true
parent_id:
type: string
example: null
nullable: true
recurrence_order:
type: integer
example: 1
total_recurrences:
type: string
example: null
nullable: true
children_count:
type: integer
example: 0
remaining_recurrences:
type: string
example: null
nullable: true
has_children:
type: boolean
example: false
field1:
type: string
example: suscipit
field2:
type: integer
example: 75
field3:
type: boolean
example: false
notes:
type: string
example: 'Et fugiat tenetur fugit omnis.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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'
/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: code
description: 'Filter by account code.'
example: CPR-000123
required: false
schema:
type: string
description: 'Filter by account code.'
example: CPR-000123
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:
- suscipit
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- suscipit
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
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- ut
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- ut
items:
type: string
-
in: query
name: statuses
description: ''
example:
- 'a vencer'
required: false
schema:
type: array
description: ''
example:
- 'a vencer'
items:
type: string
enum:
- 'a vencer'
- pago
- pago_sem_lancamento
- vencido
- recebido
- cancelado
- 'a protestar'
- protestado
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: protest_date_start
description: 'O campo value deve ser uma data válida.'
example: '2026-08-04T16:37:08'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-08-04T16:37:08'
nullable: true
-
in: query
name: protest_date_end
description: 'O campo value deve ser uma data válida.'
example: '2026-08-04T16:37:08'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-08-04T16:37:08'
nullable: true
-
in: query
name: has_protest
description: ''
example: true
required: false
schema:
type: boolean
description: ''
example: true
nullable: true
-
in: query
name: has_children
description: 'Filter accounts that have recurring children.'
example: true
required: false
schema:
type: boolean
description: 'Filter accounts that have recurring children.'
example: true
nullable: true
-
in: query
name: is_recurring
description: 'Filter by recurring status (true: only recurring, false: only non-recurring, null: all).'
example: true
required: false
schema:
type: boolean
description: 'Filter by recurring status (true: only recurring, false: only non-recurring, null: all).'
example: true
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: f7b94f07-1526-3427-ad3e-62eea59785a1
code: null
type: entrada
payment_method: cheque
amount: 4306.4
due_date: '2026-08-23T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Unde deserunt nostrum dolores eius et nihil est itaque aut eveniet.'
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: expedita
field2: 39
field3: true
notes: 'Quos quia repellendus repellat.'
created_at: null
updated_at: null
-
id: 9787968c-518e-32d8-bb54-b5a601ba63e0
code: null
type: entrada
payment_method: boleto
amount: 5030.95
due_date: '2026-08-26T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Error dolores labore doloremque eum a et ullam at quaerat sed sit.'
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: temporibus
field2: 74
field3: true
notes: 'Nesciunt qui illo quia et pariatur ipsum nobis.'
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: f7b94f07-1526-3427-ad3e-62eea59785a1
code: null
type: entrada
payment_method: cheque
amount: 4306.4
due_date: '2026-08-23T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Unde deserunt nostrum dolores eius et nihil est itaque aut eveniet.'
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: expedita
field2: 39
field3: true
notes: 'Quos quia repellendus repellat.'
created_at: null
updated_at: null
-
id: 9787968c-518e-32d8-bb54-b5a601ba63e0
code: null
type: entrada
payment_method: boleto
amount: 5030.95
due_date: '2026-08-26T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Error dolores labore doloremque eum a et ullam at quaerat sed sit.'
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: temporibus
field2: 74
field3: true
notes: 'Nesciunt qui illo quia et pariatur ipsum nobis.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: f7b94f07-1526-3427-ad3e-62eea59785a1
code:
type: string
example: null
nullable: true
type:
type: string
example: entrada
payment_method:
type: string
example: cheque
amount:
type: number
example: 4306.4
due_date:
type: string
example: '2026-08-23T03:00:00.000000Z'
status:
type: string
example: null
nullable: true
payment_date:
type: string
example: null
nullable: true
protest_date:
type: string
example: null
nullable: true
paid_amount:
type: string
example: null
nullable: true
interest_amount:
type: string
example: null
nullable: true
penalty_amount:
type: string
example: null
nullable: true
notary_fee_amount:
type: string
example: null
nullable: true
description:
type: string
example: 'Unde deserunt nostrum dolores eius et nihil est itaque aut eveniet.'
is_recurring:
type: string
example: null
nullable: true
recurrence_config:
type: string
example: null
nullable: true
parent_id:
type: string
example: null
nullable: true
recurrence_order:
type: integer
example: 1
total_recurrences:
type: string
example: null
nullable: true
children_count:
type: integer
example: 0
remaining_recurrences:
type: string
example: null
nullable: true
has_children:
type: boolean
example: false
field1:
type: string
example: expedita
field2:
type: integer
example: 39
field3:
type: boolean
example: true
notes:
type: string
example: 'Quos quia repellendus repellat.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 51464b5f-18bb-364d-8345-047729bd5702
nullable: true
customer_id:
type: string
description: 'Cliente. The uuid of an existing record in the customers table.'
example: b915e833-aa36-36f5-b106-78833477454e
nullable: true
work_id:
type: string
description: 'Obra. The uuid of an existing record in the works table.'
example: 98b08130-6722-3780-ad27-cb98cc63b703
nullable: true
status:
type: string
description: Status.
example: 'Example Status'
enum:
- 'a vencer'
- pago
- vencido
- recebido
- cancelado
- 'a protestar'
- protestado
protest_date:
type: string
description: 'Protest date. O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a due_date.'
example: '2024-01-01'
nullable: true
bank_account_id:
type: string
description: 'Bank account id. The uuid of an existing record in the bank_accounts table.'
example: d0a04ee9-3990-3233-95af-9b0ed9df8c55
nullable: true
custom_fields:
type: object
description: 'Custom fields.'
example:
- example1
- example2
properties: { }
is_recurring:
type: boolean
description: 'Is recurring.'
example: true
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/import-nfe:
post:
summary: 'Import NFe installments'
operationId: importNFeInstallments
description: 'Gera contas a pagar para as parcelas selecionadas de uma nota fiscal. A obra é opcional: quando omitida, só é herdada se a NF tiver exatamente uma obra vinculada.'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
total: integer
properties:
message:
type: string
example: string
total:
type: string
example: integer
tags:
- 'Accounts Payable Receivable'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fiscal_document_id:
type: string
description: 'The uuid of an existing record in the fiscal_documents table.'
example: earum
installment_ids:
type: array
description: 'The uuid of an existing record in the fiscal_document_installments table.'
example:
- tempore
items:
type: string
payment_method:
type: string
description: ''
example: cheque
enum:
- cheque
- boleto
- outro
nullable: true
work_id:
type: string
description: 'The uuid of an existing record in the works table.'
example: iste
nullable: true
required:
- fiscal_document_id
'/api/accounts-payable-receivable/{accountPayableReceivable}/history':
get:
summary: 'Get account history'
operationId: getAccountHistory
description: 'Get the activity log history for an account payable receivable'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Accounts Payable Receivable'
parameters:
-
in: path
name: accountPayableReceivable
description: ''
example: est
required: true
schema:
type: string
'/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: e3ffb713-f130-37b0-941e-21cbcc50933d
code: null
type: entrada
payment_method: cheque
amount: 3252.7
due_date: '2026-08-30T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Aspernatur animi rerum deserunt aut vel sequi consectetur ipsam.'
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: saepe
field2: 52
field3: false
notes: 'Error sed cupiditate qui eveniet.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: e3ffb713-f130-37b0-941e-21cbcc50933d
code:
type: string
example: null
nullable: true
type:
type: string
example: entrada
payment_method:
type: string
example: cheque
amount:
type: number
example: 3252.7
due_date:
type: string
example: '2026-08-30T03:00:00.000000Z'
status:
type: string
example: null
nullable: true
payment_date:
type: string
example: null
nullable: true
protest_date:
type: string
example: null
nullable: true
paid_amount:
type: string
example: null
nullable: true
interest_amount:
type: string
example: null
nullable: true
penalty_amount:
type: string
example: null
nullable: true
notary_fee_amount:
type: string
example: null
nullable: true
description:
type: string
example: 'Aspernatur animi rerum deserunt aut vel sequi consectetur ipsam.'
is_recurring:
type: string
example: null
nullable: true
recurrence_config:
type: string
example: null
nullable: true
parent_id:
type: string
example: null
nullable: true
recurrence_order:
type: integer
example: 1
total_recurrences:
type: string
example: null
nullable: true
children_count:
type: integer
example: 0
remaining_recurrences:
type: string
example: null
nullable: true
has_children:
type: boolean
example: false
field1:
type: string
example: saepe
field2:
type: integer
example: 52
field3:
type: boolean
example: false
notes:
type: string
example: 'Error sed cupiditate qui eveniet.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: 0fad8a50-3b49-3b6e-bae0-e26e51e68698
nullable: true
customer_id:
type: string
description: 'Customer id. The uuid of an existing record in the customers table.'
example: fff994fa-7a52-31c9-8bb8-4de814fa95fe
nullable: true
work_id:
type: string
description: 'Work id. The uuid of an existing record in the works table.'
example: 393f481e-8c5d-391a-b339-fc018ffc2006
nullable: true
status:
type: string
description: Status.
example: 'Example Status'
enum:
- 'a vencer'
- pago
- vencido
- recebido
- cancelado
- 'a protestar'
- protestado
payment_date:
type: string
description: 'Payment date. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
protest_date:
type: string
description: 'Protest date. O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a due_date.'
example: '2024-01-01'
nullable: true
paid_amount:
type: number
description: 'Paid amount. O campo value deve ser pelo menos 0.'
example: 1.0
nullable: true
interest_amount:
type: number
description: 'Interest amount. O campo value deve ser pelo menos 0.'
example: 1.0
nullable: true
penalty_amount:
type: number
description: 'Penalty amount. O campo value deve ser pelo menos 0.'
example: 1.0
nullable: true
notary_fee_amount:
type: number
description: 'Notary fee amount. O campo value deve ser pelo menos 0.'
example: 1.0
nullable: true
bank_account_id:
type: string
description: 'Bank account id. The uuid of an existing record in the bank_accounts table.'
example: 7b4d784f-adb7-3e4b-a3cc-718dea8d2564
nullable: true
custom_fields:
type: object
description: 'Custom fields.'
example:
- example1
- example2
properties: { }
is_recurring:
type: boolean
description: 'Is recurring.'
example: true
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: est
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: esperanza.wolf@example.net
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: 94177f3a-e02d-3283-bcb9-69ede3c7b5e3
name: 'Hellen Hansen'
username: tziemann
email: kennedi.reynolds@example.org
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: 94177f3a-e02d-3283-bcb9-69ede3c7b5e3
name:
type: string
example: 'Hellen Hansen'
username:
type: string
example: tziemann
email:
type: string
example: kennedi.reynolds@example.org
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
nullable: true
url:
type: string
example: null
nullable: true
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'
certification:
type: string
description: 'Certificação. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Certification'
nullable: true
crea:
type: string
description: 'CREA. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Crea'
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
username:
type: string
description: Usuário.
example: joesph.mcdermott
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:
- 7b70d32e-25c1-3d1f-894c-16cf441643da
items:
type: string
roles:
type: array
description: 'UUID da função. The uuid of an existing record in the roles table.'
example:
- 1cf8af83-d1d5-393d-b9a8-fb40b1e9d2e6
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: pfdrbbckcwrmlf
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: porro
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/transfers:
post:
summary: 'Transfer between bank accounts'
operationId: transferBetweenBankAccounts
description: 'Transfers funds from a source account to a destination account'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
data: object
properties:
message:
type: string
example: string
data:
type: string
example: object
tags:
- 'Bank Account Movements'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
source_id:
type: string
description: 'Source id. The value and destination_id must be different. The uuid of an existing record in the bank_accounts table.'
example: 'Example Source id'
destination_id:
type: string
description: 'Destination id. The uuid of an existing record in the bank_accounts table.'
example: 'Example Destination id'
amount:
type: number
description: Amount.
example: 1.0
description:
type: string
description: 'Description. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Description'
nullable: true
transaction_date:
type: string
description: 'Transaction date. Must be a valid date in the format Y-m-d H:i:s.'
example: '2024-01-01'
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: 'Example Transaction category id'
nullable: true
required:
- source_id
- destination_id
- amount
- transaction_date
'/api/bank-accounts/transfers/{bankTransfer}':
delete:
summary: 'Delete a bank transfer'
operationId: deleteABankTransfer
description: 'Reverts a transfer by deleting both cash flows and the transfer record'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Bank Account Movements'
parameters:
-
in: path
name: bankTransfer
description: ''
example: aut
required: true
schema:
type: string
'/api/bank-accounts/{bankAccount}/deposit':
post:
summary: 'Deposit into bank account'
operationId: depositIntoBankAccount
description: 'Adds funds to a bank account'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Bank Account Movements'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
amount:
type: number
description: Amount.
example: 1.0
description:
type: string
description: 'Description. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Description'
nullable: true
transaction_date:
type: string
description: 'Transaction date. Must be a valid date in the format Y-m-d H:i:s.'
example: '2024-01-01'
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: 'Example Transaction category id'
nullable: true
required:
- amount
- transaction_date
parameters:
-
in: path
name: bankAccount
description: ''
example: 11
required: true
schema:
type: integer
'/api/bank-accounts/{bankAccount}/withdraw':
post:
summary: 'Withdraw from bank account'
operationId: withdrawFromBankAccount
description: 'Removes funds from a bank account'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Bank Account Movements'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
amount:
type: number
description: Amount.
example: 1.0
description:
type: string
description: 'Description. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Description'
nullable: true
transaction_date:
type: string
description: 'Transaction date. Must be a valid date in the format Y-m-d H:i:s.'
example: '2024-01-01'
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: 'Example Transaction category id'
nullable: true
required:
- amount
- transaction_date
parameters:
-
in: path
name: bankAccount
description: ''
example: 10
required: true
schema:
type: integer
/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:
totalBalance: number
totalBalancePositive: number
totalBalanceNegative: number
totalLimit: number
totalAvailableBalance: number
totalUsedLimit: number
totalAvailableLimit: number
accounts:
'*':
id: string
bank: string
balance: number
limit: number
available_balance: number
used_limit: number
available_limit: number
properties:
data:
type: object
properties:
totalBalance:
type: string
example: number
totalBalancePositive:
type: string
example: number
totalBalanceNegative:
type: string
example: number
totalLimit:
type: string
example: number
totalAvailableBalance:
type: string
example: number
totalUsedLimit:
type: string
example: number
totalAvailableLimit:
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
available_balance:
type: string
example: number
used_limit:
type: string
example: number
available_limit:
type: string
example: number
tags:
- 'Bank Accounts'
/api/bank-accounts/default-by-payment-method:
get:
summary: 'Get default bank account by payment method'
operationId: getDefaultBankAccountByPaymentMethod
description: 'Returns the bank account configured as default for the given payment method. Responds 404 when no default is configured.'
parameters:
-
in: query
name: method
description: 'Forma de pagamento (pix, bank_transfer, cash, check).'
example: cash
required: true
schema:
type: string
description: 'Forma de pagamento (pix, bank_transfer, cash, check).'
example: cash
enum:
- pix
- bank_transfer
- cash
- check
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: ab78bc14-d0dd-35c7-94c9-920cb024da3f
agency: '6539'
account: 5991581-5
type: corrente
balance: 7981.19
holder_type: pf
alias: fuga
limit: 5032.66
available_balance: 13013.85
used_limit: 0
available_limit: 5032.66
is_default: null
default_payment_method: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: ab78bc14-d0dd-35c7-94c9-920cb024da3f
agency:
type: string
example: '6539'
account:
type: string
example: 5991581-5
type:
type: string
example: corrente
balance:
type: number
example: 7981.19
holder_type:
type: string
example: pf
alias:
type: string
example: fuga
limit:
type: number
example: 5032.66
available_balance:
type: number
example: 13013.85
used_limit:
type: integer
example: 0
available_limit:
type: number
example: 5032.66
is_default:
type: string
example: null
nullable: true
default_payment_method:
type: string
example: null
nullable: true
bank:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
code:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
404:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
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
-
in: query
name: is_default
description: 'Filter by default account (1 or 0).'
example: true
required: false
schema:
type: boolean
description: 'Filter by default account (1 or 0).'
example: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 99fa6e8e-6682-3e13-9d96-2e775ed00494
agency: '7870'
account: 8958340-3
type: caixa
balance: 9318.82
holder_type: pf
alias: ipsa
limit: 3461.82
available_balance: 12780.64
used_limit: 0
available_limit: 3461.82
is_default: null
default_payment_method: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
-
id: 267a0d34-0965-3255-b0b7-371a120eefc2
agency: '0637'
account: 4250445-8
type: corrente
balance: 4623.3
holder_type: pf
alias: sint
limit: 9610.01
available_balance: 14233.31
used_limit: 0
available_limit: 9610.01
is_default: null
default_payment_method: null
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: 99fa6e8e-6682-3e13-9d96-2e775ed00494
agency: '7870'
account: 8958340-3
type: caixa
balance: 9318.82
holder_type: pf
alias: ipsa
limit: 3461.82
available_balance: 12780.64
used_limit: 0
available_limit: 3461.82
is_default: null
default_payment_method: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
-
id: 267a0d34-0965-3255-b0b7-371a120eefc2
agency: '0637'
account: 4250445-8
type: corrente
balance: 4623.3
holder_type: pf
alias: sint
limit: 9610.01
available_balance: 14233.31
used_limit: 0
available_limit: 9610.01
is_default: null
default_payment_method: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 99fa6e8e-6682-3e13-9d96-2e775ed00494
agency:
type: string
example: '7870'
account:
type: string
example: 8958340-3
type:
type: string
example: caixa
balance:
type: number
example: 9318.82
holder_type:
type: string
example: pf
alias:
type: string
example: ipsa
limit:
type: number
example: 3461.82
available_balance:
type: number
example: 12780.64
used_limit:
type: integer
example: 0
available_limit:
type: number
example: 3461.82
is_default:
type: string
example: null
nullable: true
default_payment_method:
type: string
example: null
nullable: true
bank:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
code:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 2585739-0
bank_id:
type: string
description: 'Bank id. The uuid of an existing record in the banks table.'
example: 09968807-d981-31e7-8e09-fcfa381ed118
type:
type: string
description: Type.
example: 'Example Type'
enum:
- corrente
- poupança
- caixa
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
is_default:
type: boolean
description: 'Is default.'
example: true
default_payment_method:
type: string
description: 'Default payment method.'
example: 'Example Default payment method'
enum:
- pix
- bank_transfer
- cash
- check
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: 9584158-8
bank_id:
type: string
description: 'Bank id. The uuid of an existing record in the banks table.'
example: 3500a3f3-41f4-34f5-8d32-35a691a9a0be
type:
type: string
description: Type.
example: 'Example Type'
enum:
- corrente
- poupança
- caixa
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
is_default:
type: boolean
description: 'Is default.'
example: true
default_payment_method:
type: string
description: 'Default payment method.'
example: 'Example Default payment method'
enum:
- pix
- bank_transfer
- cash
- check
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: 214040c7-0878-37ea-a5ad-7d5023c7164b
agency: '9132'
account: 7428767-5
type: poupança
balance: 861.89
holder_type: pf
alias: dolores
limit: 8262.28
available_balance: 9124.17
used_limit: 0
available_limit: 8262.28
is_default: null
default_payment_method: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 214040c7-0878-37ea-a5ad-7d5023c7164b
agency:
type: string
example: '9132'
account:
type: string
example: 7428767-5
type:
type: string
example: poupança
balance:
type: number
example: 861.89
holder_type:
type: string
example: pf
alias:
type: string
example: dolores
limit:
type: number
example: 8262.28
available_balance:
type: number
example: 9124.17
used_limit:
type: integer
example: 0
available_limit:
type: number
example: 8262.28
is_default:
type: string
example: null
nullable: true
default_payment_method:
type: string
example: null
nullable: true
bank:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
code:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: 20
required: true
schema:
type: integer
'/api/bank-accounts/{bankAccount}/statements/summary':
get:
summary: 'Bank statement summary'
operationId: bankStatementSummary
description: 'Get aggregated summary for the period'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
opening_balance: number
closing_balance: number
total_credit: number
total_debit: number
count: integer
date_start: string
date_end: string
properties:
data:
type: object
properties:
opening_balance:
type: string
example: number
closing_balance:
type: string
example: number
total_credit:
type: string
example: number
total_debit:
type: string
example: number
count:
type: string
example: integer
date_start:
type: string
example: string
date_end:
type: string
example: string
tags:
- 'Bank Statements'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
date_start:
type: string
description: 'Date start. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
date_end:
type: string
description: 'Date end. O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a date_start.'
example: '2024-01-01'
nullable: true
parameters:
-
in: path
name: bankAccount
description: ''
example: 5
required: true
schema:
type: integer
'/api/bank-accounts/{bankAccount}/statements':
get:
summary: 'List bank statements'
operationId: listBankStatements
description: 'List statements for a bank account. Default period: last 30 days.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: null
type: null
amount: null
balance_after: null
description: null
date: null
statement_date: null
created_at: null
updated_at: null
-
id: null
type: null
amount: null
balance_after: null
description: null
date: null
statement_date: 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: null
type: null
amount: null
balance_after: null
description: null
date: null
statement_date: null
created_at: null
updated_at: null
-
id: null
type: null
amount: null
balance_after: null
description: null
date: null
statement_date: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: null
nullable: true
type:
type: string
example: null
nullable: true
amount:
type: string
example: null
nullable: true
balance_after:
type: string
example: null
nullable: true
description:
type: string
example: null
nullable: true
date:
type: string
example: null
nullable: true
statement_date:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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 Statements'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
sort_by:
type: string
description: ''
example: ipsa
nullable: true
sort_desc:
type: boolean
description: ''
example: true
nullable: true
page:
type: integer
description: 'O campo value deve ser pelo menos 1.'
example: 78
nullable: true
per_page:
type: integer
description: 'O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 25
nullable: true
q:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: rwhnm
nullable: true
type:
type: string
description: ''
example: depósito
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
- 'ajuste saída'
nullable: true
date_start:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-08-04T16:37:08'
nullable: true
date_end:
type: string
description: 'O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a date_start.'
example: '2100-12-30'
nullable: true
cash_flow_id:
type: string
description: 'The uuid of an existing record in the cash_flows table.'
example: null
nullable: true
parameters:
-
in: path
name: bankAccount
description: ''
example: 20
required: true
schema:
type: integer
'/api/bank-accounts/{bankAccount}/statements/{bankStatement}':
get:
summary: 'Show bank statement'
operationId: showBankStatement
description: 'Show a specific statement entry'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
type: null
amount: null
balance_after: null
description: null
date: null
statement_date: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
type:
type: string
example: null
nullable: true
amount:
type: string
example: null
nullable: true
balance_after:
type: string
example: null
nullable: true
description:
type: string
example: null
nullable: true
date:
type: string
example: null
nullable: true
statement_date:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Bank Statements'
parameters:
-
in: path
name: bankAccount
description: ''
example: 1
required: true
schema:
type: integer
-
in: path
name: bankStatement
description: ''
example: dolore
required: true
schema:
type: string
/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: 7af3e89d-c020-3450-8160-8f10a53cfe00
name: Queirós-Domingues
code: '673'
-
id: ef81f769-2345-38d4-99e8-7a3cfafe476e
name: 'Queirós S.A.'
code: '911'
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: 7af3e89d-c020-3450-8160-8f10a53cfe00
name: Queirós-Domingues
code: '673'
-
id: ef81f769-2345-38d4-99e8-7a3cfafe476e
name: 'Queirós S.A.'
code: '911'
items:
type: object
properties:
id:
type: string
example: 7af3e89d-c020-3450-8160-8f10a53cfe00
name:
type: string
example: Queirós-Domingues
code:
type: string
example: '673'
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 1231a068-90a6-3190-9628-a0f2517b40f8
name: 'Uchoa e Jimenes Ltda.'
code: '581'
properties:
data:
type: object
properties:
id:
type: string
example: 1231a068-90a6-3190-9628-a0f2517b40f8
name:
type: string
example: 'Uchoa e Jimenes Ltda.'
code:
type: string
example: '581'
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
nullable: true
district:
type: string
example: null
nullable: true
city:
type: string
example: null
nullable: true
state:
type: string
example: null
nullable: true
complement:
type: string
example: null
nullable: true
ibge:
type: string
example: null
nullable: true
ddd:
type: string
example: null
nullable: true
siafi:
type: string
example: null
nullable: true
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
- 'ajuste saída'
nullable: true
-
in: query
name: description
description: 'Description .'
example: 'Numquam velit ut delectus iure.'
required: false
schema:
type: string
description: 'Description .'
example: 'Numquam velit ut delectus iure.'
-
in: query
name: categories
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- quibusdam
required: false
schema:
type: array
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- quibusdam
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:
- sed
required: false
schema:
type: array
description: 'The uuid of an existing record in the bank_accounts table.'
example:
- sed
items:
type: string
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- eligendi
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- eligendi
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- accusantium
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- accusantium
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- illo
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- illo
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
- 'ajuste saída'
nullable: true
-
in: query
name: description
description: 'Description .'
example: 'In ad illum beatae assumenda quos quam laudantium.'
required: false
schema:
type: string
description: 'Description .'
example: 'In ad illum beatae assumenda quos quam laudantium.'
-
in: query
name: categories
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- laborum
required: false
schema:
type: array
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- laborum
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:
- voluptatibus
required: false
schema:
type: array
description: 'The uuid of an existing record in the bank_accounts table.'
example:
- voluptatibus
items:
type: string
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- deleniti
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- deleniti
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- odio
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- odio
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- reiciendis
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- reiciendis
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: d3df90a3-dd2f-3755-aad2-8f9bde5b841c
code: FC-46689259
type: saída
amount: -6497.22
description: 'Facere minima aut quia ut qui dolorem.'
transaction_date: '2021-09-10T03:00:00.000000Z'
transaction_category:
id: null
name: null
type: null
created_at: null
updated_at: null
-
id: 96b23704-16df-3f79-8d2f-cb6be69b8786
code: FC-12909739
type: transferência
amount: -4521.07
description: 'In et voluptatem sit error facilis nostrum.'
transaction_date: '2007-10-02T03: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: d3df90a3-dd2f-3755-aad2-8f9bde5b841c
code: FC-46689259
type: saída
amount: -6497.22
description: 'Facere minima aut quia ut qui dolorem.'
transaction_date: '2021-09-10T03:00:00.000000Z'
transaction_category:
id: null
name: null
type: null
created_at: null
updated_at: null
-
id: 96b23704-16df-3f79-8d2f-cb6be69b8786
code: FC-12909739
type: transferência
amount: -4521.07
description: 'In et voluptatem sit error facilis nostrum.'
transaction_date: '2007-10-02T03: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: d3df90a3-dd2f-3755-aad2-8f9bde5b841c
code:
type: string
example: FC-46689259
type:
type: string
example: saída
amount:
type: number
example: -6497.22
description:
type: string
example: 'Facere minima aut quia ut qui dolorem.'
transaction_date:
type: string
example: '2021-09-10T03:00:00.000000Z'
transaction_category:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
type:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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
- 'ajuste saída'
cash_session_id:
type: string
description: 'Cash session id. The uuid of an existing record in the cash_sessions table.'
example: dff1c295-47bd-31a6-b035-c43ebea7f0ea
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: c0a0f41c-c37a-34fa-8804-4df45e912188
bank_account_id:
type: string
description: 'Bank account id. The uuid of an existing record in the bank_accounts table.'
example: 4c2d7cbc-18f2-3b2e-bd66-985669257382
nullable: true
customer_id:
type: string
description: 'Customer id. The uuid of an existing record in the customers table.'
example: fd6b7bcf-cfa4-36e7-8724-7662a9a86e30
nullable: true
supplier_id:
type: string
description: 'Supplier id. The uuid of an existing record in the suppliers table.'
example: b7ac8249-952e-3e34-80f2-bf6d8c444f4f
nullable: true
work_id:
type: string
description: 'Work id. The uuid of an existing record in the works table.'
example: 18b93b4f-0cce-338a-a6bc-a9a1ef32fe7b
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: adb917ca-4900-3cb8-8747-c2121e16bfe1
code: FC-84269109
type: transferência
amount: -4166.17
description: 'Libero omnis occaecati veritatis quibusdam.'
transaction_date: '2014-07-05T03: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: adb917ca-4900-3cb8-8747-c2121e16bfe1
code:
type: string
example: FC-84269109
type:
type: string
example: transferência
amount:
type: number
example: -4166.17
description:
type: string
example: 'Libero omnis occaecati veritatis quibusdam.'
transaction_date:
type: string
example: '2014-07-05T03:00:00.000000Z'
transaction_category:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
type:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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
- 'ajuste saída'
cash_session_id:
type: string
description: 'Cash session id. The uuid of an existing record in the cash_sessions table.'
example: ec846751-1e12-35c8-8e1f-de148413bca1
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: f8e4f1d5-fe91-33ba-8329-fe8fee57163b
bank_account_id:
type: string
description: 'Bank account id. The uuid of an existing record in the bank_accounts table.'
example: 9b43109d-cd3d-347b-b62c-7f4fc85accd9
nullable: true
customer_id:
type: string
description: 'Customer id. The uuid of an existing record in the customers table.'
example: c05bc298-ad58-3ad4-846b-23e340e61fd5
nullable: true
supplier_id:
type: string
description: 'Supplier id. The uuid of an existing record in the suppliers table.'
example: 575f2019-bcfe-3d3f-b697-6b3750ac7876
nullable: true
work_id:
type: string
description: 'Work id. The uuid of an existing record in the works table.'
example: ab50d3cf-884b-3126-b99f-1b6265548e9d
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: 16
required: true
schema:
type: integer
/api/cash-sessions:
get:
summary: 'List cash session'
operationId: listCashSession
description: 'List all cash session'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 5257c447-8ef4-3fdc-8a2b-84c5cac7edcb
code: null
opened_by: null
opened_at: '2023-11-23T11:13:09.000000Z'
closed_by: null
closed_at: '2012-08-15T00:10:33.000000Z'
opening_balance: 2520.79
closing_balance: 1761.87
total_income: 0
total_expense: 0
total_balance: 0
status: Fechado
hasSnapshot: false
created_at: '2017-05-08T08:32:08.000000Z'
updated_at: '1996-06-15T23:30:34.000000Z'
-
id: 2189161f-32d6-36a4-af10-ec76435a3a38
code: null
opened_by: null
opened_at: '1972-07-19T06:02:04.000000Z'
closed_by: null
closed_at: '2004-05-20T02:55:29.000000Z'
opening_balance: 1461.19
closing_balance: 8440.21
total_income: 0
total_expense: 0
total_balance: 0
status: Fechado
hasSnapshot: false
created_at: '1998-05-16T16:10:26.000000Z'
updated_at: '1997-06-23T19:23:27.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: 5257c447-8ef4-3fdc-8a2b-84c5cac7edcb
code: null
opened_by: null
opened_at: '2023-11-23T11:13:09.000000Z'
closed_by: null
closed_at: '2012-08-15T00:10:33.000000Z'
opening_balance: 2520.79
closing_balance: 1761.87
total_income: 0
total_expense: 0
total_balance: 0
status: Fechado
hasSnapshot: false
created_at: '2017-05-08T08:32:08.000000Z'
updated_at: '1996-06-15T23:30:34.000000Z'
-
id: 2189161f-32d6-36a4-af10-ec76435a3a38
code: null
opened_by: null
opened_at: '1972-07-19T06:02:04.000000Z'
closed_by: null
closed_at: '2004-05-20T02:55:29.000000Z'
opening_balance: 1461.19
closing_balance: 8440.21
total_income: 0
total_expense: 0
total_balance: 0
status: Fechado
hasSnapshot: false
created_at: '1998-05-16T16:10:26.000000Z'
updated_at: '1997-06-23T19:23:27.000000Z'
items:
type: object
properties:
id:
type: string
example: 5257c447-8ef4-3fdc-8a2b-84c5cac7edcb
code:
type: string
example: null
nullable: true
opened_by:
type: string
example: null
nullable: true
opened_at:
type: string
example: '2023-11-23T11:13:09.000000Z'
closed_by:
type: string
example: null
nullable: true
closed_at:
type: string
example: '2012-08-15T00:10:33.000000Z'
opening_balance:
type: number
example: 2520.79
closing_balance:
type: number
example: 1761.87
total_income:
type: integer
example: 0
total_expense:
type: integer
example: 0
total_balance:
type: integer
example: 0
status:
type: string
example: Fechado
hasSnapshot:
type: boolean
example: false
created_at:
type: string
example: '2017-05-08T08:32:08.000000Z'
updated_at:
type: string
example: '1996-06-15T23:30:34.000000Z'
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 2b993a65-1fb6-3c31-8104-fc6397b777ab
code: null
opened_by: null
opened_at: '2010-06-16T10:32:37.000000Z'
closed_by: null
closed_at: '1985-07-24T01:19:33.000000Z'
opening_balance: 2168.71
closing_balance: 3166.19
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
hasSnapshot: false
created_at: '2025-10-23T08:02:31.000000Z'
updated_at: '1972-07-27T03:54:05.000000Z'
properties:
data:
type: object
properties:
id:
type: string
example: 2b993a65-1fb6-3c31-8104-fc6397b777ab
code:
type: string
example: null
nullable: true
opened_by:
type: string
example: null
nullable: true
opened_at:
type: string
example: '2010-06-16T10:32:37.000000Z'
closed_by:
type: string
example: null
nullable: true
closed_at:
type: string
example: '1985-07-24T01:19:33.000000Z'
opening_balance:
type: number
example: 2168.71
closing_balance:
type: number
example: 3166.19
total_income:
type: integer
example: 0
total_expense:
type: integer
example: 0
total_balance:
type: integer
example: 0
status:
type: string
example: Aberto
hasSnapshot:
type: boolean
example: false
created_at:
type: string
example: '2025-10-23T08:02:31.000000Z'
updated_at:
type: string
example: '1972-07-27T03:54:05.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: 5c92b1fb-8c92-357f-b669-3ddb571b7de7
required: true
schema:
type: string
'/api/cash-sessions/{uuid}/account-snapshot':
get:
summary: 'Cash session account snapshot'
operationId: cashSessionAccountSnapshot
description: 'List the account balance snapshot captured when the cash session was closed'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Cash Session'
parameters:
-
in: path
name: uuid
description: ''
example: 3fbd8864-1dfb-3577-89ac-50d69885495a
required: true
schema:
type: integer
'/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: 2d1bf7ad-1b02-3ffd-8937-da87d8d855ef
code: null
opened_by: null
opened_at: '1991-10-09T14:47:41.000000Z'
closed_by: null
closed_at: '1996-04-30T18:33:41.000000Z'
opening_balance: 1906.35
closing_balance: 1781.7
total_income: 0
total_expense: 0
total_balance: 0
status: Fechado
hasSnapshot: false
created_at: '1996-08-06T17:28:44.000000Z'
updated_at: '1994-11-25T12:20:54.000000Z'
properties:
data:
type: object
properties:
id:
type: string
example: 2d1bf7ad-1b02-3ffd-8937-da87d8d855ef
code:
type: string
example: null
nullable: true
opened_by:
type: string
example: null
nullable: true
opened_at:
type: string
example: '1991-10-09T14:47:41.000000Z'
closed_by:
type: string
example: null
nullable: true
closed_at:
type: string
example: '1996-04-30T18:33:41.000000Z'
opening_balance:
type: number
example: 1906.35
closing_balance:
type: number
example: 1781.7
total_income:
type: integer
example: 0
total_expense:
type: integer
example: 0
total_balance:
type: integer
example: 0
status:
type: string
example: Fechado
hasSnapshot:
type: boolean
example: false
created_at:
type: string
example: '1996-08-06T17:28:44.000000Z'
updated_at:
type: string
example: '1994-11-25T12:20:54.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: 9b524a1e-fc28-3198-8e46-d46b19721f4f
required: true
schema:
type: integer
/api/contracts:
get:
summary: 'List contracts'
operationId: listContracts
description: 'List all work contracts'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: b4bdb518-4dd1-3e60-a371-69312c2c4e34
number: 092/2026
started_at: '2026-08-04'
deadline_at: '2027-08-04'
work:
id: a26c93fb-ab3b-42b7-8d9c-6a884cd9fa6b
name: 'Sofia Noelí Zambrano'
created_at: null
updated_at: null
-
id: 79c8dfb2-61e6-3175-a616-a74fe43c1c70
number: 868/2026
started_at: '2026-08-04'
deadline_at: '2027-08-04'
work:
id: a26c93fb-b8eb-405c-8348-19d2af4626da
name: 'Dr. Andressa Jaqueline Soares 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: b4bdb518-4dd1-3e60-a371-69312c2c4e34
number: 092/2026
started_at: '2026-08-04'
deadline_at: '2027-08-04'
work:
id: a26c93fb-ab3b-42b7-8d9c-6a884cd9fa6b
name: 'Sofia Noelí Zambrano'
created_at: null
updated_at: null
-
id: 79c8dfb2-61e6-3175-a616-a74fe43c1c70
number: 868/2026
started_at: '2026-08-04'
deadline_at: '2027-08-04'
work:
id: a26c93fb-b8eb-405c-8348-19d2af4626da
name: 'Dr. Andressa Jaqueline Soares Neto'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: b4bdb518-4dd1-3e60-a371-69312c2c4e34
number:
type: string
example: 092/2026
started_at:
type: string
example: '2026-08-04'
deadline_at:
type: string
example: '2027-08-04'
work:
type: object
properties:
id:
type: string
example: a26c93fb-ab3b-42b7-8d9c-6a884cd9fa6b
name:
type: string
example: 'Sofia Noelí Zambrano'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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:
- Contracts
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: true
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
work_id:
type: string
description: 'Obra. The uuid of an existing record in the works table.'
example: 83a2da2b-63c9-3006-80ba-77c3957a3e0c
nullable: true
post:
summary: 'Create contract'
operationId: createContract
description: 'Create a new contract for a work'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- Contracts
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
work_id:
type: string
description: 'Obra. The uuid of an existing record in the works table.'
example: 5f7e6924-fd60-34d3-836d-f8a9cd0a53c8
number:
type: string
description: 'Número do contrato. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Number'
started_at:
type: string
description: 'Data de início. O campo value deve ser uma data válida.'
example: 'Example Started at'
nullable: true
deadline_at:
type: string
description: 'Prazo. O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a started_at.'
example: 'Example Deadline at'
nullable: true
required:
- work_id
- number
'/api/contracts/{id}':
get:
summary: 'Show contract'
operationId: showContract
description: 'Show a work contract'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 0236136e-560b-3c50-90a6-89eee6d4d661
number: 397/2026
started_at: '2026-08-04'
deadline_at: '2027-08-04'
work:
id: a26c93fb-c637-4281-b867-6ed87da7306c
name: 'Eloá Ariana Ramos'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 0236136e-560b-3c50-90a6-89eee6d4d661
number:
type: string
example: 397/2026
started_at:
type: string
example: '2026-08-04'
deadline_at:
type: string
example: '2027-08-04'
work:
type: object
properties:
id:
type: string
example: a26c93fb-c637-4281-b867-6ed87da7306c
name:
type: string
example: 'Eloá Ariana Ramos'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- Contracts
put:
summary: 'Update contract'
operationId: updateContract
description: 'Update a work contract'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- Contracts
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
number:
type: string
description: 'Número do contrato. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Number'
started_at:
type: string
description: 'Data de início. O campo value deve ser uma data válida.'
example: 'Example Started at'
nullable: true
deadline_at:
type: string
description: 'Prazo. O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a started_at.'
example: 'Example Deadline at'
nullable: true
parameters:
-
in: path
name: id
description: 'The ID of the contract.'
example: 7
required: true
schema:
type: integer
-
in: path
name: contract
description: 'Contract UUID'
example: vitae
required: true
schema:
type: string
'/api/contracts/{contract}':
delete:
summary: 'Delete contract'
operationId: deleteContract
description: 'Delete a work contract'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Contracts
parameters:
-
in: path
name: contract
description: 'Contract UUID'
example: et
required: true
schema:
type: string
/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: 055f3ce3-d0e3-34cc-ade5-a07ebd883366
name: 'David Pereira Barreto'
email: melinda04@example.org
phone: '(18) 90141-8736'
document: 476.343.538-84
type: pj
responsible: 'Dr. Hortência Estrada Benez 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
-
id: 2efda8f2-b99c-3da4-9767-2d34885b230c
name: 'Srta. Simone Verdara Neto'
email: zneves@example.net
phone: '(41) 90999-8062'
document: 920.866.658-14
type: pf
responsible: 'Sr. Lorenzo Ramos'
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: 055f3ce3-d0e3-34cc-ade5-a07ebd883366
name: 'David Pereira Barreto'
email: melinda04@example.org
phone: '(18) 90141-8736'
document: 476.343.538-84
type: pj
responsible: 'Dr. Hortência Estrada Benez 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
-
id: 2efda8f2-b99c-3da4-9767-2d34885b230c
name: 'Srta. Simone Verdara Neto'
email: zneves@example.net
phone: '(41) 90999-8062'
document: 920.866.658-14
type: pf
responsible: 'Sr. Lorenzo Ramos'
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: 055f3ce3-d0e3-34cc-ade5-a07ebd883366
name:
type: string
example: 'David Pereira Barreto'
email:
type: string
example: melinda04@example.org
phone:
type: string
example: '(18) 90141-8736'
document:
type: string
example: 476.343.538-84
type:
type: string
example: pj
responsible:
type: string
example: 'Dr. Hortência Estrada Benez Sobrinho'
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
address:
type: object
properties:
street:
type: string
example: null
nullable: true
number:
type: string
example: null
nullable: true
complement:
type: string
example: null
nullable: true
neighborhood:
type: string
example: null
nullable: true
city:
type: string
example: null
nullable: true
state:
type: string
example: null
nullable: true
zip_code:
type: string
example: null
nullable: true
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
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 0778bc51-1e79-3bd7-93c0-708d4b1a9707
name: 'Sophia Daniella Delatorre Filho'
email: diogo.rezende@example.org
phone: '(81) 3429-5457'
document: 205.703.010-50
type: pf
responsible: 'Sr. Agostinho Fabrício Fernandes'
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: 0778bc51-1e79-3bd7-93c0-708d4b1a9707
name:
type: string
example: 'Sophia Daniella Delatorre Filho'
email:
type: string
example: diogo.rezende@example.org
phone:
type: string
example: '(81) 3429-5457'
document:
type: string
example: 205.703.010-50
type:
type: string
example: pf
responsible:
type: string
example: 'Sr. Agostinho Fabrício Fernandes'
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
address:
type: object
properties:
street:
type: string
example: null
nullable: true
number:
type: string
example: null
nullable: true
complement:
type: string
example: null
nullable: true
neighborhood:
type: string
example: null
nullable: true
city:
type: string
example: null
nullable: true
state:
type: string
example: null
nullable: true
zip_code:
type: string
example: null
nullable: true
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/daily-logs:
get:
summary: 'List daily logs'
operationId: listDailyLogs
description: 'List all daily work reports (RDO)'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 9b1cbc60-a69c-3dd2-bd50-6974e9eaa8da
code: RDO-001
report_number: 1
date: '2026-08-04'
status:
id: a26c93fc-189d-49fc-8889-cf8695654dfb
slug: null
name: null
abbreviation: et
color: '#7d341c'
text_color: '#da3eee'
work:
id: a26c93fc-0ea9-41da-bfd7-73d56b75a188
name: 'Vicente Oliveira Filho'
started_at: '1979-12-20 00:03:17'
filled_by:
id: a26c93fc-14d5-4943-8498-b717a7ce32d0
name: 'Janice Murray'
contract_number: 029/2026
deadline_at: '2027-08-04'
technical_responsible:
name: null
certification: null
crea: null
activities: []
occurrences: null
next_day_forecast: null
finalized_at: null
content_hash: null
gov_br_validation_url: null
created_at: null
updated_at: null
-
id: 3ab3521d-6d5f-334c-9170-affbd69d901f
code: RDO-001
report_number: 1
date: '2026-08-04'
status:
id: a26c93fc-2429-470a-960f-ea5fdab880d0
slug: null
name: null
abbreviation: ipsum
color: '#c3cde8'
text_color: '#701f6e'
work:
id: a26c93fc-1da7-4c18-8dfa-24f14cad3668
name: 'Isabelly Vieira Faro'
started_at: '2022-11-10 10:48:52'
filled_by:
id: a26c93fc-2260-4f43-8ba8-06e97ed931c6
name: 'Dr. Collin Crooks PhD'
contract_number: 718/2026
deadline_at: '2027-08-04'
technical_responsible:
name: null
certification: null
crea: null
activities: []
occurrences: null
next_day_forecast: null
finalized_at: null
content_hash: null
gov_br_validation_url: 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: 9b1cbc60-a69c-3dd2-bd50-6974e9eaa8da
code: RDO-001
report_number: 1
date: '2026-08-04'
status:
id: a26c93fc-189d-49fc-8889-cf8695654dfb
slug: null
name: null
abbreviation: et
color: '#7d341c'
text_color: '#da3eee'
work:
id: a26c93fc-0ea9-41da-bfd7-73d56b75a188
name: 'Vicente Oliveira Filho'
started_at: '1979-12-20 00:03:17'
filled_by:
id: a26c93fc-14d5-4943-8498-b717a7ce32d0
name: 'Janice Murray'
contract_number: 029/2026
deadline_at: '2027-08-04'
technical_responsible:
name: null
certification: null
crea: null
activities: []
occurrences: null
next_day_forecast: null
finalized_at: null
content_hash: null
gov_br_validation_url: null
created_at: null
updated_at: null
-
id: 3ab3521d-6d5f-334c-9170-affbd69d901f
code: RDO-001
report_number: 1
date: '2026-08-04'
status:
id: a26c93fc-2429-470a-960f-ea5fdab880d0
slug: null
name: null
abbreviation: ipsum
color: '#c3cde8'
text_color: '#701f6e'
work:
id: a26c93fc-1da7-4c18-8dfa-24f14cad3668
name: 'Isabelly Vieira Faro'
started_at: '2022-11-10 10:48:52'
filled_by:
id: a26c93fc-2260-4f43-8ba8-06e97ed931c6
name: 'Dr. Collin Crooks PhD'
contract_number: 718/2026
deadline_at: '2027-08-04'
technical_responsible:
name: null
certification: null
crea: null
activities: []
occurrences: null
next_day_forecast: null
finalized_at: null
content_hash: null
gov_br_validation_url: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 9b1cbc60-a69c-3dd2-bd50-6974e9eaa8da
code:
type: string
example: RDO-001
report_number:
type: integer
example: 1
date:
type: string
example: '2026-08-04'
status:
type: object
properties:
id:
type: string
example: a26c93fc-189d-49fc-8889-cf8695654dfb
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
abbreviation:
type: string
example: et
color:
type: string
example: '#7d341c'
text_color:
type: string
example: '#da3eee'
work:
type: object
properties:
id:
type: string
example: a26c93fc-0ea9-41da-bfd7-73d56b75a188
name:
type: string
example: 'Vicente Oliveira Filho'
started_at:
type: string
example: '1979-12-20 00:03:17'
filled_by:
type: object
properties:
id:
type: string
example: a26c93fc-14d5-4943-8498-b717a7ce32d0
name:
type: string
example: 'Janice Murray'
contract_number:
type: string
example: 029/2026
deadline_at:
type: string
example: '2027-08-04'
technical_responsible:
type: object
properties:
name:
type: string
example: null
nullable: true
certification:
type: string
example: null
nullable: true
crea:
type: string
example: null
nullable: true
activities:
type: array
example: []
occurrences:
type: string
example: null
nullable: true
next_day_forecast:
type: string
example: null
nullable: true
finalized_at:
type: string
example: null
nullable: true
content_hash:
type: string
example: null
nullable: true
gov_br_validation_url:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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:
- 'Daily Logs (RDO)'
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: true
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
work_id:
type: string
description: 'Obra. The uuid of an existing record in the works table.'
example: fadb3131-0a17-378b-b95c-985a630662da
nullable: true
contract_id:
type: string
description: 'Contrato. The uuid of an existing record in the contracts table.'
example: f3523054-be92-312d-a734-c954e2f52bd2
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: 1170fc66-e63e-3048-939c-193a48efda4d
nullable: true
filled_by:
type: string
description: 'Preenchido por. The uuid of an existing record in the users table.'
example: dad38031-e0dd-305c-b150-3a142abbef46
nullable: true
responsible_id:
type: string
description: 'Responsável. The uuid of an existing record in the users table.'
example: 5e07a060-e038-3523-88f9-d14c766a2097
nullable: true
date_from:
type: string
description: 'Data inicial. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
date_to:
type: string
description: 'Data final. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
post:
summary: 'Create daily log'
operationId: createDailyLog
description: 'Open a new daily work report (RDO) for a work'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Daily Logs (RDO)'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
contract_id:
type: string
description: 'Contrato. The uuid of an existing record in the contracts table.'
example: 'Example Contract id'
date:
type: string
description: 'Data do RDO. O campo value deve ser uma data válida.'
example: '2024-01-01'
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: f2d74da8-053a-3931-9d4b-6df9e363910f
nullable: true
required:
- contract_id
- date
/api/daily-logs/pending-days:
get:
summary: 'Pending RDO days'
operationId: pendingRDODays
description: 'List the days in a period that have no RDO for a given work'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
- '2026-07-01'
- '2026-07-02'
properties:
data:
type: array
example:
- '2026-07-01'
- '2026-07-02'
items:
type: string
tags:
- 'Daily Logs (RDO)'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
contract_id:
type: string
description: 'Contrato. The uuid of an existing record in the contracts table.'
example: 'Example Contract id'
date_from:
type: string
description: 'Data inicial. O campo value deve ser uma data válida.'
example: '2024-01-01'
date_to:
type: string
description: 'Data final. O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a date_from. O campo value deve ser uma data anterior ou igual a 9999-12-31.'
example: '2024-01-01'
required:
- contract_id
- date_from
- date_to
'/api/daily-logs/{dailyLog}':
get:
summary: 'Show daily log'
operationId: showDailyLog
description: 'Show a daily work report (RDO)'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 1475e7d6-8063-3fb9-8e5c-3fec5832c430
code: RDO-001
report_number: 1
date: '2026-08-04'
status:
id: a26c93fc-376b-4f12-9a9b-9da4979788ca
slug: null
name: null
abbreviation: velit
color: '#8d20a4'
text_color: '#239af6'
work:
id: a26c93fc-3104-4687-8bc5-39c80892b963
name: 'Leo Zamana Neto'
started_at: '1991-03-23 09:03:05'
filled_by:
id: a26c93fc-35af-4cc6-85b9-058d019098a0
name: 'Mr. Skye Corkery III'
contract_number: 089/2026
deadline_at: '2027-08-04'
technical_responsible:
name: null
certification: null
crea: null
activities: []
occurrences: null
next_day_forecast: null
finalized_at: null
content_hash: null
gov_br_validation_url: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 1475e7d6-8063-3fb9-8e5c-3fec5832c430
code:
type: string
example: RDO-001
report_number:
type: integer
example: 1
date:
type: string
example: '2026-08-04'
status:
type: object
properties:
id:
type: string
example: a26c93fc-376b-4f12-9a9b-9da4979788ca
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
abbreviation:
type: string
example: velit
color:
type: string
example: '#8d20a4'
text_color:
type: string
example: '#239af6'
work:
type: object
properties:
id:
type: string
example: a26c93fc-3104-4687-8bc5-39c80892b963
name:
type: string
example: 'Leo Zamana Neto'
started_at:
type: string
example: '1991-03-23 09:03:05'
filled_by:
type: object
properties:
id:
type: string
example: a26c93fc-35af-4cc6-85b9-058d019098a0
name:
type: string
example: 'Mr. Skye Corkery III'
contract_number:
type: string
example: 089/2026
deadline_at:
type: string
example: '2027-08-04'
technical_responsible:
type: object
properties:
name:
type: string
example: null
nullable: true
certification:
type: string
example: null
nullable: true
crea:
type: string
example: null
nullable: true
activities:
type: array
example: []
occurrences:
type: string
example: null
nullable: true
next_day_forecast:
type: string
example: null
nullable: true
finalized_at:
type: string
example: null
nullable: true
content_hash:
type: string
example: null
nullable: true
gov_br_validation_url:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Daily Logs (RDO)'
patch:
summary: 'Update daily log'
operationId: updateDailyLog
description: 'Update a draft RDO: weather, team, activities, occurrences and next-day forecast'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Daily Logs (RDO)'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
activities:
type: string
description: 'Atividades executadas.'
example: 'Example Activities'
nullable: true
occurrences:
type: string
description: Ocorrências.
example: 'Example Occurrences'
nullable: true
next_day_forecast:
type: string
description: 'Previsão do dia seguinte.'
example: 'Example Next day forecast'
nullable: true
weather:
type: array
description: 'Registro do tempo.'
example:
- null
- null
items:
type: object
properties:
shift:
type: string
description: 'Turno. This field is required when weather is present.'
example: 'Example Weather * shift'
enum:
- manha
- tarde
- noite
weather:
type: string
description: 'Clima. This field is required when weather is present.'
example: 'Example Weather * weather'
enum:
- sol
- sol_nuvens
- chuva
- tempestade
teams:
type: array
description: 'Composição da equipe.'
example:
- null
- null
items:
type: object
properties:
employee_role_id:
type: string
description: 'Função. This field is required when teams is present. The uuid of an existing record in the employee_roles table.'
example: f8461be5-4ad4-4918-a9fc-f492d28e4af0
quantity:
type: integer
description: 'Quantidade. This field is required when teams is present. O campo value deve ser pelo menos 1.'
example: 1
delete:
summary: 'Delete daily log'
operationId: deleteDailyLog
description: 'Delete a draft daily work report (RDO)'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'Daily Logs (RDO)'
parameters:
-
in: path
name: dailyLog
description: 'Daily Log UUID'
example: sunt
required: true
schema:
type: string
'/api/daily-logs/{dailyLog}/finalize':
post:
summary: 'Finalize daily log'
operationId: finalizeDailyLog
description: 'Validate, stamp and lock a draft RDO (Rascunho → Finalizado)'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Daily Logs (RDO)'
parameters:
-
in: path
name: dailyLog
description: 'Daily Log UUID'
example: occaecati
required: true
schema:
type: string
'/api/daily-logs/{dailyLog}/signed-document':
post:
summary: 'Attach gov.br signed document'
operationId: attachGovbrSignedDocument
description: 'Attach the gov.br-signed PDF and validation link to a finalized RDO'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Daily Logs (RDO)'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
path:
type: string
description: 'Arquivo assinado.'
example: 'Example Path'
name:
type: string
description: 'Nome do arquivo.'
example: 'Example Name'
nullable: true
size:
type: string
description: Size.
example: 'Example Size'
nullable: true
extension:
type: string
description: Extension.
example: 'Example Extension'
nullable: true
gov_br_validation_url:
type: string
description: 'Link de validação (gov.br). Must be a valid URL. Must match the regex /^https:\/\/([a-z0-9-]+\.)*gov\.br(\/|$)/i. O campo value não pode ser superior a 2048 caracteres.'
example: 'https://example.com'
required:
- path
- gov_br_validation_url
parameters:
-
in: path
name: dailyLog
description: 'Daily Log UUID'
example: consequatur
required: true
schema:
type: string
'/api/daily-logs/{dailyLog}/photos':
post:
summary: 'Attach photos'
operationId: attachPhotos
description: 'Attach photographs (already uploaded to storage) to a draft RDO'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Daily Logs (RDO)'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
photos:
type: array
description: 'Fotos. O campo value deve ter pelo menos 1 itens.'
example:
- null
- null
items:
type: object
properties:
path:
type: string
description: Arquivo.
example: 'Example Photos * path'
name:
type: string
description: 'Nome do arquivo.'
example: 'Example Name'
nullable: true
size:
type: string
description: 'Photos * size.'
example: 'Example Photos * size'
nullable: true
extension:
type: string
description: 'Photos * extension.'
example: 'Example Photos * extension'
nullable: true
caption:
type: string
description: Legenda.
example: 'Example Photos * caption'
nullable: true
required:
- path
required:
- photos
parameters:
-
in: path
name: dailyLog
description: 'Daily Log UUID'
example: illo
required: true
schema:
type: string
'/api/daily-logs/{dailyLog}/photos/{id}':
patch:
summary: 'Update photo caption'
operationId: updatePhotoCaption
description: 'Update the caption of a photo in a draft RDO'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data: object
properties:
data:
type: string
example: object
tags:
- 'Daily Logs (RDO)'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
caption:
type: string
description: Legenda.
example: 'Example Caption'
nullable: true
parameters:
-
in: path
name: dailyLog
description: 'Daily Log UUID'
example: necessitatibus
required: true
schema:
type: string
-
in: path
name: id
description: 'The ID of the photo.'
example: quo
required: true
schema:
type: string
-
in: path
name: photo
description: 'Photo (File) UUID'
example: alias
required: true
schema:
type: string
'/api/daily-logs/{dailyLog}/photos/{photo}':
delete:
summary: 'Delete photo'
operationId: deletePhoto
description: 'Remove a photo from a draft RDO'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'Daily Logs (RDO)'
parameters:
-
in: path
name: dailyLog
description: 'Daily Log UUID'
example: numquam
required: true
schema:
type: string
-
in: path
name: photo
description: 'Photo (File) UUID'
example: ducimus
required: true
schema:
type: string
/api/disciplines:
get:
summary: 'List disciplines'
operationId: listDisciplines
description: 'List all disciplines'
parameters:
-
in: query
name: q
description: 'Search query.'
example: Elétrico
required: false
schema:
type: string
description: 'Search query.'
example: Elétrico
nullable: true
-
in: query
name: active
description: 'Filter by active status.'
example: true
required: false
schema:
type: string
description: 'Filter by active status.'
example: true
enum:
- 'true'
- 'false'
- '1'
- '0'
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 35b895dd-a896-3794-8f9b-81eed86f892d
name: Perspiciatis
code: LHZ
description: 'Rerum harum assumenda et quia rerum sit qui.'
active: true
-
id: 191e4beb-1fc8-3c7d-8d3b-af2e1a56e748
name: Vel
code: TBJ
description: 'Ratione ipsa necessitatibus aut architecto iusto occaecati eligendi.'
active: true
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: 35b895dd-a896-3794-8f9b-81eed86f892d
name: Perspiciatis
code: LHZ
description: 'Rerum harum assumenda et quia rerum sit qui.'
active: true
-
id: 191e4beb-1fc8-3c7d-8d3b-af2e1a56e748
name: Vel
code: TBJ
description: 'Ratione ipsa necessitatibus aut architecto iusto occaecati eligendi.'
active: true
items:
type: object
properties:
id:
type: string
example: 35b895dd-a896-3794-8f9b-81eed86f892d
name:
type: string
example: Perspiciatis
code:
type: string
example: LHZ
description:
type: string
example: 'Rerum harum assumenda et quia rerum sit qui.'
active:
type: boolean
example: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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:
- Disciplines
post:
summary: 'Create discipline'
operationId: createDiscipline
description: 'Create a new discipline'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- Disciplines
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: nome.
example: 'Example Name'
code:
type: string
description: código.
example: 'Example Code'
nullable: true
description:
type: string
description: descrição.
example: 'Example Description'
nullable: true
active:
type: boolean
description: ativo.
example: true
required:
- name
'/api/disciplines/{id}':
get:
summary: 'Show discipline'
operationId: showDiscipline
description: 'Show a discipline'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: c731042e-cda5-3d35-82d8-a2cf73dcf009
name: Vel
code: ZWA
description: 'Quia in sit beatae doloremque aut.'
active: true
properties:
data:
type: object
properties:
id:
type: string
example: c731042e-cda5-3d35-82d8-a2cf73dcf009
name:
type: string
example: Vel
code:
type: string
example: ZWA
description:
type: string
example: 'Quia in sit beatae doloremque aut.'
active:
type: boolean
example: true
tags:
- Disciplines
put:
summary: 'Update discipline'
operationId: updateDiscipline
description: 'Update a discipline'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- Disciplines
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: nome.
example: 'Example Name'
code:
type: string
description: código.
example: 'Example Code'
nullable: true
description:
type: string
description: descrição.
example: 'Example Description'
nullable: true
active:
type: boolean
description: ativo.
example: true
required:
- name
parameters:
-
in: path
name: id
description: 'The ID of the discipline.'
example: 1
required: true
schema:
type: integer
-
in: path
name: discipline
description: 'Discipline UUID'
example: quo
required: true
schema:
type: string
'/api/disciplines/{discipline}':
delete:
summary: 'Delete discipline'
operationId: deleteDiscipline
description: 'Delete a discipline'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Disciplines
parameters:
-
in: path
name: discipline
description: 'Discipline UUID'
example: dolorum
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: 3ed73c49-92bf-336e-b980-ec8b392bfcb1
name: 'Dr. Aline Quintana'
description: 'Hic eum eum fugit quibusdam. Sint soluta asperiores tenetur provident aut. Consequatur error est ipsa.'
module: document
-
id: 2e757f64-4030-3ff7-aa29-972741c94374
name: 'Sérgio Ítalo Valência'
description: 'Ut porro minima quae ab unde qui nobis asperiores. Animi incidunt deserunt suscipit dolores velit. Non consequatur deleniti voluptatibus sint neque consectetur itaque corporis.'
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: 3ed73c49-92bf-336e-b980-ec8b392bfcb1
name: 'Dr. Aline Quintana'
description: 'Hic eum eum fugit quibusdam. Sint soluta asperiores tenetur provident aut. Consequatur error est ipsa.'
module: document
-
id: 2e757f64-4030-3ff7-aa29-972741c94374
name: 'Sérgio Ítalo Valência'
description: 'Ut porro minima quae ab unde qui nobis asperiores. Animi incidunt deserunt suscipit dolores velit. Non consequatur deleniti voluptatibus sint neque consectetur itaque corporis.'
module: document
items:
type: object
properties:
id:
type: string
example: 3ed73c49-92bf-336e-b980-ec8b392bfcb1
name:
type: string
example: 'Dr. Aline Quintana'
description:
type: string
example: 'Hic eum eum fugit quibusdam. Sint soluta asperiores tenetur provident aut. Consequatur error est ipsa.'
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
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: a77e5fae-53dc-3608-97c4-e3bd8e856011
name: 'Diogo de Arruda Jr.'
description: 'Eaque voluptates dolor rem quo nemo. Distinctio vel qui at. Suscipit voluptates aliquid dolore occaecati. Tenetur quam aut sed molestias error modi distinctio.'
module: document
properties:
data:
type: object
properties:
id:
type: string
example: a77e5fae-53dc-3608-97c4-e3bd8e856011
name:
type: string
example: 'Diogo de Arruda Jr.'
description:
type: string
example: 'Eaque voluptates dolor rem quo nemo. Distinctio vel qui at. Suscipit voluptates aliquid dolore occaecati. Tenetur quam aut sed molestias error modi distinctio.'
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: id
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:
- inventore
required: false
schema:
type: array
description: 'The uuid of an existing record in the document_categories table.'
example:
- inventore
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: unde
required: false
schema:
type: string
description: 'Type of the related documentable entity. The type of an existing record in the documentables table.'
example: unde
nullable: true
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- neque
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- neque
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- autem
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- autem
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 6dd2d17d-2b60-35f8-a62a-9df0fb1fcdf8
name: 'Sr. Joaquim Kauan Saito'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
-
id: 2ad4bbbd-ec19-3347-b932-bcc8f1724972
name: 'Srta. Beatriz Zaragoça'
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: 6dd2d17d-2b60-35f8-a62a-9df0fb1fcdf8
name: 'Sr. Joaquim Kauan Saito'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
-
id: 2ad4bbbd-ec19-3347-b932-bcc8f1724972
name: 'Srta. Beatriz Zaragoça'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 6dd2d17d-2b60-35f8-a62a-9df0fb1fcdf8
name:
type: string
example: 'Sr. Joaquim Kauan Saito'
file:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
extension:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 83390706-450e-3580-88ba-8b25edb35b67
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: 08e43db9-d74d-34ab-8b2c-84c9adea9abf
name: 'Larissa Kamila Carrara'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 08e43db9-d74d-34ab-8b2c-84c9adea9abf
name:
type: string
example: 'Larissa Kamila Carrara'
file:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
extension:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: f989cdc9-ed79-33cf-adf5-1f6e7c7980df
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: 1
required: true
schema:
type: integer
-
in: path
name: document
description: 'Document ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/documents/{document}':
delete:
summary: 'Delete document'
operationId: deleteDocument
description: 'Delete a document'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Documents
parameters:
-
in: path
name: document
description: 'Document ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
/api/epi-renewals:
get:
summary: 'List EPI renewals'
operationId: listEPIRenewals
description: 'List pending/ignored (default) or completed EPI renewals. Ignored items remain in the default listing with renewal_status=ignored'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'EPI Renewals'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
q:
type: string
description: ''
example: omnis
nullable: true
renewal_status:
type: string
description: ''
example: ignored
enum:
- pending
- completed
- ignored
nullable: true
urgency:
type: string
description: ''
example: expires_7_days
enum:
- expired
- expires_7_days
- expires_30_days
nullable: true
employee_id:
type: string
description: 'The uuid of an existing record in the employees table.'
example: fugit
nullable: true
epi_type_id:
type: string
description: 'The uuid of an existing record in the epi_types table.'
example: nesciunt
nullable: true
/api/epi-renewals/summary:
get:
summary: 'EPI renewals summary'
operationId: ePIRenewalsSummary
description: 'Counts of renewals by urgency (pending and ignored; ignore only silences notifications)'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'EPI Renewals'
'/api/epi-renewals/{id}/renew':
post:
summary: 'Renew EPI delivery'
operationId: renewEPIDelivery
description: 'Renew an EPI delivery with a new delivery date'
parameters: []
responses: { }
tags:
- 'EPI Renewals'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
quantity:
type: integer
description: 'Quantidade entregue. O campo value deve ser pelo menos 1.'
example: 1
condition:
type: string
description: 'Condição do EPI.'
example: new
enum:
- new
- used
- reformed
lot:
type: string
description: 'Lote do EPI. O campo value não pode ser superior a 255 caracteres.'
example: LOTE-001
nullable: true
parameters:
-
in: path
name: id
description: 'EPI delivery UUID'
example: eius
required: true
schema:
type: string
'/api/epi-renewals/{id}/ignore':
post:
summary: 'Ignore EPI renewal'
operationId: ignoreEPIRenewal
description: 'Ignore expiry alerts for an EPI delivery'
parameters: []
responses: { }
tags:
- 'EPI Renewals'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
ignore_reason:
type: string
description: 'Motivo para ignorar o alerta de vencimento. O campo value não pode ser superior a 500 caracteres.'
example: 'Colaborador afastado temporariamente'
required:
- ignore_reason
delete:
summary: 'Unignore EPI renewal'
operationId: unignoreEPIRenewal
description: 'Resume expiry alerts for an EPI delivery'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'EPI Renewals'
parameters:
-
in: path
name: id
description: 'EPI delivery UUID'
example: error
required: true
schema:
type: string
/api/epi-types:
get:
summary: 'List EPI types'
operationId: listEPITypes
description: 'List all EPI types'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 651aabac-688c-38e5-87f0-e08db412aff1
name: 'repudiandae ea'
default_validity_days: 526
requires_signature: false
created_at: null
updated_at: null
-
id: fdb1d867-abef-30c7-a50a-0fa635217e3f
name: 'error sed'
default_validity_days: 342
requires_signature: 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: 651aabac-688c-38e5-87f0-e08db412aff1
name: 'repudiandae ea'
default_validity_days: 526
requires_signature: false
created_at: null
updated_at: null
-
id: fdb1d867-abef-30c7-a50a-0fa635217e3f
name: 'error sed'
default_validity_days: 342
requires_signature: false
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 651aabac-688c-38e5-87f0-e08db412aff1
name:
type: string
example: 'repudiandae ea'
default_validity_days:
type: integer
example: 526
requires_signature:
type: boolean
example: false
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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:
- 'EPI Types'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
q:
type: string
description: ''
example: et
nullable: true
post:
summary: 'Create EPI type'
operationId: createEPIType
description: 'Create a new EPI type'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'EPI Types'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Nome.
example: 'Example Name'
default_validity_days:
type: integer
description: 'Validade padrão (dias). O campo value deve ser pelo menos 1.'
example: 1
requires_signature:
type: boolean
description: 'Exige assinatura.'
example: true
required:
- name
- default_validity_days
'/api/epi-types/{epiType}':
get:
summary: 'Show EPI type'
operationId: showEPIType
description: 'Show an EPI type'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 12f98b97-b524-3d2e-a4cc-556423c69c8d
name: 'reprehenderit voluptatum'
default_validity_days: 394
requires_signature: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 12f98b97-b524-3d2e-a4cc-556423c69c8d
name:
type: string
example: 'reprehenderit voluptatum'
default_validity_days:
type: integer
example: 394
requires_signature:
type: boolean
example: false
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'EPI Types'
put:
summary: 'Update EPI type'
operationId: updateEPIType
description: 'Update an EPI type'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'EPI Types'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Nome.
example: 'Example Name'
default_validity_days:
type: integer
description: 'Validade padrão (dias). O campo value deve ser pelo menos 1.'
example: 1
requires_signature:
type: boolean
description: 'Exige assinatura.'
example: true
required:
- name
- default_validity_days
delete:
summary: 'Delete EPI type'
operationId: deleteEPIType
description: 'Delete an EPI type'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'EPI Types'
parameters:
-
in: path
name: epiType
description: 'EPI type UUID'
example: vitae
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: 9b5a7fc7-7745-4824-bfcd-b6da51378e83
name: in
description: 'Odio blanditiis et iusto maxime.'
created_at: null
updated_at: null
-
id: fdce0b9a-b57a-4a22-9596-4ab234bdaa87
name: velit
description: 'Quod impedit est numquam sapiente nihil nulla.'
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: 9b5a7fc7-7745-4824-bfcd-b6da51378e83
name: in
description: 'Odio blanditiis et iusto maxime.'
created_at: null
updated_at: null
-
id: fdce0b9a-b57a-4a22-9596-4ab234bdaa87
name: velit
description: 'Quod impedit est numquam sapiente nihil nulla.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 9b5a7fc7-7745-4824-bfcd-b6da51378e83
name:
type: string
example: in
description:
type: string
example: 'Odio blanditiis et iusto maxime.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: bdaa5c97-0f85-4e9d-b9aa-204cac0c6c5d
name: vero
description: 'Fugiat similique quidem in delectus esse quia ut.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: bdaa5c97-0f85-4e9d-b9aa-204cac0c6c5d
name:
type: string
example: vero
description:
type: string
example: 'Fugiat similique quidem in delectus esse quia ut.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: culpa
required: true
schema:
type: string
/api/epi-terms:
get:
summary: 'List EPI terms'
operationId: listEPITerms
description: 'List initial EPI kit terms globally'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Employees
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
sort_by:
type: string
description: ''
example: delivery_date
enum:
- delivery_date
- created_at
nullable: true
sort_desc:
type: boolean
description: ''
example: true
nullable: true
page:
type: integer
description: 'O campo value deve ser pelo menos 1.'
example: 10
nullable: true
per_page:
type: integer
description: 'O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 22
nullable: true
q:
type: string
description: ''
example: amet
nullable: true
employee_id:
type: string
description: 'The uuid of an existing record in the employees table.'
example: sunt
nullable: true
has_term:
type: boolean
description: ''
example: true
nullable: true
/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: 5cda545c-0c4e-445a-bda2-a658027fd380
name: 'Allan Bonilha'
cpf: 249.127.216-02
rg: null
ctps: null
phone: null
birthdate: '1972-07-10T03:00:00.000000Z'
email: nadia.lozano@example.org
pis_pasep: null
admission_date: '2003-12-13T02:00:00.000000Z'
daily_salary: null
monthly_salary: '5615.64'
nationality: null
place_of_birth: 'Victor do Norte'
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: a26c93fc-e48b-4860-afaf-96e9e9c2bd96
name: et
created_at: null
updated_at: null
-
id: c9f41254-cbfd-468e-aea6-709e75ec328a
name: 'Dr. Bárbara Saito'
cpf: 550.815.124-60
rg: '073865905'
ctps: '666564782'
phone: null
birthdate: '1972-12-20T03:00:00.000000Z'
email: jimenes.gian@example.com
pis_pasep: null
admission_date: '2024-08-07T03:00:00.000000Z'
daily_salary: '176.99'
monthly_salary: null
nationality: Suécia
place_of_birth: 'Santa Leandro'
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: a26c93fc-eb8e-4d0f-a03b-7c63362b810c
name: similique
created_at: null
updated_at: null
links:
first: '/?page=1'
last: '/?page=1'
prev: '/?page=9'
next: null
meta:
current_page: 10
from: 91
last_page: 1
links:
-
url: '/?page=9'
label: '« Anterior'
page: 9
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: false
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 92
total: 2
properties:
data:
type: array
example:
-
id: 5cda545c-0c4e-445a-bda2-a658027fd380
name: 'Allan Bonilha'
cpf: 249.127.216-02
rg: null
ctps: null
phone: null
birthdate: '1972-07-10T03:00:00.000000Z'
email: nadia.lozano@example.org
pis_pasep: null
admission_date: '2003-12-13T02:00:00.000000Z'
daily_salary: null
monthly_salary: '5615.64'
nationality: null
place_of_birth: 'Victor do Norte'
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: a26c93fc-e48b-4860-afaf-96e9e9c2bd96
name: et
created_at: null
updated_at: null
-
id: c9f41254-cbfd-468e-aea6-709e75ec328a
name: 'Dr. Bárbara Saito'
cpf: 550.815.124-60
rg: '073865905'
ctps: '666564782'
phone: null
birthdate: '1972-12-20T03:00:00.000000Z'
email: jimenes.gian@example.com
pis_pasep: null
admission_date: '2024-08-07T03:00:00.000000Z'
daily_salary: '176.99'
monthly_salary: null
nationality: Suécia
place_of_birth: 'Santa Leandro'
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: a26c93fc-eb8e-4d0f-a03b-7c63362b810c
name: similique
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 5cda545c-0c4e-445a-bda2-a658027fd380
name:
type: string
example: 'Allan Bonilha'
cpf:
type: string
example: 249.127.216-02
rg:
type: string
example: null
nullable: true
ctps:
type: string
example: null
nullable: true
phone:
type: string
example: null
nullable: true
birthdate:
type: string
example: '1972-07-10T03:00:00.000000Z'
email:
type: string
example: nadia.lozano@example.org
pis_pasep:
type: string
example: null
nullable: true
admission_date:
type: string
example: '2003-12-13T02:00:00.000000Z'
daily_salary:
type: string
example: null
nullable: true
monthly_salary:
type: string
example: '5615.64'
nationality:
type: string
example: null
nullable: true
place_of_birth:
type: string
example: 'Victor do Norte'
address:
type: object
properties:
street:
type: string
example: null
nullable: true
number:
type: string
example: null
nullable: true
complement:
type: string
example: null
nullable: true
neighborhood:
type: string
example: null
nullable: true
city:
type: string
example: null
nullable: true
state:
type: string
example: null
nullable: true
zip_code:
type: string
example: null
nullable: true
employee_role:
type: object
properties:
id:
type: string
example: a26c93fc-e48b-4860-afaf-96e9e9c2bd96
name:
type: string
example: et
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: '/?page=9'
next:
type: string
example: null
nullable: true
meta:
type: object
properties:
current_page:
type: integer
example: 10
from:
type: integer
example: 91
last_page:
type: integer
example: 1
links:
type: array
example:
-
url: '/?page=9'
label: '« Anterior'
page: 9
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: false
-
url: null
label: 'Próximo »'
page: null
active: false
items:
type: object
properties:
url:
type: string
example: '/?page=9'
label:
type: string
example: '« Anterior'
page:
type: integer
example: 9
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 10
to:
type: integer
example: 92
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: 71853782-e11a-4849-a6aa-b586e07b19ad
pis_pasep:
type: string
description: 'PIS/PASEP. O campo value deve ter 11 dígitos.'
example: 'Example Pis pasep'
nullable: true
admission_date:
type: string
description: 'Data de Admissão. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
daily_salary:
type: number
description: 'Salário Diário. O campo value deve ser pelo menos 0.'
example: 1.0
nullable: true
monthly_salary:
type: number
description: 'Salário Mensal. O campo value deve ser pelo menos 0.'
example: 1.0
nullable: true
nationality:
type: string
description: 'Nacionalidade. O campo value não pode ser superior a 100 caracteres.'
example: 'Example Nationality'
nullable: true
place_of_birth:
type: string
description: 'Naturalidade. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Place of birth'
nullable: true
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: 9cd4a490-5e10-4fe2-9419-ec7a5429343c
name: 'Clara Teles'
cpf: 214.643.087-16
rg: null
ctps: '488619712'
phone: '(69) 96995-7350'
birthdate: '2018-06-14T03:00:00.000000Z'
email: null
pis_pasep: null
admission_date: null
daily_salary: '201.93'
monthly_salary: '8850.22'
nationality: null
place_of_birth: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: a26c93fc-f2ac-454b-9b66-7a622f50006d
name: illum
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 9cd4a490-5e10-4fe2-9419-ec7a5429343c
name:
type: string
example: 'Clara Teles'
cpf:
type: string
example: 214.643.087-16
rg:
type: string
example: null
nullable: true
ctps:
type: string
example: '488619712'
phone:
type: string
example: '(69) 96995-7350'
birthdate:
type: string
example: '2018-06-14T03:00:00.000000Z'
email:
type: string
example: null
nullable: true
pis_pasep:
type: string
example: null
nullable: true
admission_date:
type: string
example: null
nullable: true
daily_salary:
type: string
example: '201.93'
monthly_salary:
type: string
example: '8850.22'
nationality:
type: string
example: null
nullable: true
place_of_birth:
type: string
example: null
nullable: true
address:
type: object
properties:
street:
type: string
example: null
nullable: true
number:
type: string
example: null
nullable: true
complement:
type: string
example: null
nullable: true
neighborhood:
type: string
example: null
nullable: true
city:
type: string
example: null
nullable: true
state:
type: string
example: null
nullable: true
zip_code:
type: string
example: null
nullable: true
employee_role:
type: object
properties:
id:
type: string
example: a26c93fc-f2ac-454b-9b66-7a622f50006d
name:
type: string
example: illum
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: 7a77f419-5466-49fa-8fd2-1897bc633f17
pis_pasep:
type: string
description: 'PIS/PASEP. O campo value deve ter 11 dígitos.'
example: 'Example Pis pasep'
nullable: true
admission_date:
type: string
description: 'Data de Admissão. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
daily_salary:
type: number
description: 'Salário Diário. O campo value deve ser pelo menos 0.'
example: 1.0
nullable: true
monthly_salary:
type: number
description: 'Salário Mensal. O campo value deve ser pelo menos 0.'
example: 1.0
nullable: true
nationality:
type: string
description: 'Nacionalidade. O campo value não pode ser superior a 100 caracteres.'
example: 'Example Nationality'
nullable: true
place_of_birth:
type: string
description: 'Naturalidade. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Place of birth'
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 employee.'
example: 16
required: true
schema:
type: integer
-
in: path
name: employee
description: 'Employee ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/employees/{employee}':
delete:
summary: 'Delete employee'
operationId: deleteEmployee
description: 'Delete an employee'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Employees
parameters:
-
in: path
name: employee
description: 'Employee ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/employees/{employee_id}/bank-account':
get:
summary: 'List employee bank accounts'
operationId: listEmployeeBankAccounts
description: 'List all bank accounts for an employee'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Employees
post:
summary: 'Create employee bank account'
operationId: createEmployeeBankAccount
description: 'Add a bank account to an employee'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Employees
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
bank_id:
type: string
description: 'The uuid of an existing record in the banks table.'
example: qui
agency:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: qnhhzwjplbdjcwjnlnzxhzx
account:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: sqeysniow
account_type:
type: string
description: ''
example: corrente
enum:
- corrente
- poupança
pix_key:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: lkzofheahtwbgeo
nullable: true
favorite:
type: boolean
description: ''
example: false
required:
- bank_id
- agency
- account
- account_type
parameters:
-
in: path
name: employee_id
description: 'The ID of the employee.'
example: 2
required: true
schema:
type: integer
-
in: path
name: employee
description: 'Employee UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/employees/{employee_id}/bank-account/{id}':
put:
summary: 'Update employee bank account'
operationId: updateEmployeeBankAccount
description: 'Update a bank account for an employee'
parameters: []
responses: { }
tags:
- Employees
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
bank_id:
type: string
description: 'The uuid of an existing record in the banks table.'
example: iure
agency:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: ivcpbvskijaccam
account:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: jqvnibhfibdecnpmam
account_type:
type: string
description: ''
example: corrente
enum:
- corrente
- poupança
pix_key:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: cykemynmdyezexnumf
nullable: true
favorite:
type: boolean
description: ''
example: false
parameters:
-
in: path
name: employee_id
description: 'The ID of the employee.'
example: 6
required: true
schema:
type: integer
-
in: path
name: id
description: 'Bank account UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c33
required: true
schema:
type: string
-
in: path
name: employee
description: 'Employee UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/employees/{employee}/bank-account/{id}':
delete:
summary: 'Delete employee bank account'
operationId: deleteEmployeeBankAccount
description: 'Delete a bank account from an employee'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Employees
parameters:
-
in: path
name: employee
description: 'Employee UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
-
in: path
name: id
description: 'Bank account UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c33
required: true
schema:
type: string
'/api/employees/{employee_id}/epi-deliveries':
get:
summary: 'List employee EPI deliveries'
operationId: listEmployeeEPIDeliveries
description: 'List EPI deliveries for an employee'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Employees
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
q:
type: string
description: ''
example: soluta
nullable: true
status:
type: string
description: ''
example: valid
enum:
- valid
- expiring
- expired
nullable: true
epi_type_id:
type: string
description: 'The uuid of an existing record in the epi_types table.'
example: sapiente
nullable: true
has_term:
type: string
description: ''
example: null
nullable: true
post:
summary: 'Create employee EPI delivery'
operationId: createEmployeeEPIDelivery
description: 'Register an EPI delivery for an employee'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Employees
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
epi_type_id:
type: string
description: 'Tipo de EPI. The uuid of an existing record in the epi_types table.'
example: 04e7682b-1f0a-3d2f-88c7-bbc534a3f43c
delivery_date:
type: string
description: 'Data de entrega. O campo value deve ser uma data válida.'
example: '2024-01-01'
quantity:
type: integer
description: 'Quantidade. O campo value deve ser pelo menos 1.'
example: 1
condition:
type: string
description: Condicao.
example: 'Example Condition'
enum:
- new
- used
- reformed
lot:
type: string
description: 'Lote. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Lot'
nullable: true
required:
- epi_type_id
- delivery_date
- condition
parameters:
-
in: path
name: employee_id
description: 'The ID of the employee.'
example: 17
required: true
schema:
type: integer
-
in: path
name: employee
description: 'Employee UUID'
example: laboriosam
required: true
schema:
type: string
'/api/employees/{employee}/epi-deliveries/pending-renewals-count':
get:
summary: 'Pending EPI renewals count'
operationId: pendingEPIRenewalsCount
description: 'Count of pending EPI renewals for an employee'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Employees
parameters:
-
in: path
name: employee
description: 'Employee UUID'
example: fugit
required: true
schema:
type: string
'/api/employees/{employee_id}/epi-deliveries/{id}':
get:
summary: 'Show employee EPI delivery'
operationId: showEmployeeEPIDelivery
description: 'Show an EPI delivery for an employee'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Employees
put:
summary: 'Update employee EPI delivery'
operationId: updateEmployeeEPIDelivery
description: 'Update an EPI delivery for an employee'
parameters: []
responses: { }
tags:
- Employees
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
epi_type_id:
type: string
description: 'Tipo de EPI. The uuid of an existing record in the epi_types table.'
example: f67c4c9b-8c80-3366-a5d3-17174d3cde4a
delivery_date:
type: string
description: 'Data de entrega. O campo value deve ser uma data válida.'
example: '2024-01-01'
quantity:
type: integer
description: 'Quantidade. O campo value deve ser pelo menos 1.'
example: 1
condition:
type: string
description: Condição.
example: 'Example Condition'
enum:
- new
- used
- reformed
lot:
type: string
description: 'Lote. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Lot'
nullable: true
parameters:
-
in: path
name: employee_id
description: 'The ID of the employee.'
example: 10
required: true
schema:
type: integer
-
in: path
name: id
description: 'EPI delivery UUID'
example: neque
required: true
schema:
type: string
-
in: path
name: employee
description: 'Employee UUID'
example: ut
required: true
schema:
type: string
'/api/employees/{employee}/epi-deliveries/kit':
post:
summary: 'Create employee initial EPI kit'
operationId: createEmployeeInitialEPIKit
description: 'Register multiple EPI deliveries as initial kit'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Employees
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
delivery_date:
type: string
description: 'Data de entrega. O campo value deve ser uma data válida.'
example: '2024-01-01'
items:
type: array
description: 'Itens do kit. O campo value deve ter pelo menos 1 itens.'
example:
- null
- null
items:
type: object
properties:
epi_type_id:
type: string
description: 'Tipo de EPI. The uuid of an existing record in the epi_types table.'
example: f8a51412-fa88-3f14-a15d-485682ba4e2b
quantity:
type: integer
description: 'Quantidade. O campo value deve ser pelo menos 1.'
example: 1
condition:
type: string
description: Condição.
example: 'Example Items * condition'
enum:
- new
- used
- reformed
lot:
type: string
description: 'Lote. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Items * lot'
nullable: true
required:
- epi_type_id
- condition
required:
- delivery_date
- items
parameters:
-
in: path
name: employee
description: 'Employee UUID'
example: officiis
required: true
schema:
type: string
'/api/employees/{employee}/epi-deliveries/{id}':
delete:
summary: 'Delete employee EPI delivery'
operationId: deleteEmployeeEPIDelivery
description: 'Delete an EPI delivery from an employee'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Employees
parameters:
-
in: path
name: employee
description: 'Employee UUID'
example: est
required: true
schema:
type: string
-
in: path
name: id
description: 'EPI delivery UUID'
example: aut
required: true
schema:
type: string
'/api/employees/{employee_id}/epi-terms':
get:
summary: 'List employee EPI terms'
operationId: listEmployeeEPITerms
description: 'List initial EPI kit terms for an employee'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Employees
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
sort_by:
type: string
description: ''
example: delivery_date
enum:
- delivery_date
- created_at
nullable: true
sort_desc:
type: boolean
description: ''
example: false
nullable: true
page:
type: integer
description: 'O campo value deve ser pelo menos 1.'
example: 24
nullable: true
per_page:
type: integer
description: 'O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 4
nullable: true
q:
type: string
description: ''
example: nostrum
nullable: true
employee_id:
type: string
description: 'The uuid of an existing record in the employees table.'
example: eos
nullable: true
has_term:
type: boolean
description: ''
example: false
nullable: true
parameters:
-
in: path
name: employee_id
description: 'The ID of the employee.'
example: 15
required: true
schema:
type: integer
-
in: path
name: employee
description: 'Employee UUID'
example: tenetur
required: true
schema:
type: string
'/api/employees/{employee}/epi-terms/{kitUuid}/upload':
post:
summary: 'Upload signed EPI term'
operationId: uploadSignedEPITerm
description: 'Upload signed Termo de Ciência for an initial kit'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
nullable: true
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'
nullable: true
file:
type: object
description: Arquivo.
example:
- example1
- example2
properties:
path:
type: string
description: 'Caminho do arquivo.'
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'
mime_type:
type: string
description: 'File mime type.'
example: 'Example File mime type'
nullable: true
required:
- path
- name
- extension
- size
required:
- file
parameters:
-
in: path
name: employee
description: 'Employee UUID'
example: iste
required: true
schema:
type: string
-
in: path
name: kitUuid
description: 'Kit UUID'
example: 80e8ad4f-d11d-3c32-9b5e-1673d4f1ce85
required: true
schema:
type: string
'/api/employees/{employee}/epi-terms/{kitUuid}/document':
get:
summary: 'Download signed EPI term'
operationId: downloadSignedEPITerm
description: 'Get temporary download URL for signed term'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Employees
parameters:
-
in: path
name: employee
description: 'Employee UUID'
example: nostrum
required: true
schema:
type: string
-
in: path
name: kitUuid
description: 'Kit UUID'
example: c23cf65b-5f67-3ce9-a6a5-1681848167d6
required: true
schema:
type: string
/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: c57170af-54a1-324b-8178-293644457c77
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: bad0bced-a99f-3715-88e8-4ae4ec14c9f0
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: 118e22bd-56f8-3c1a-9b74-0b42072406d6
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: true
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: true
required:
- path
- mimetype
- public
required:
- files
/api/fiscal-documents:
get:
summary: 'List fiscal documents'
operationId: listFiscalDocuments
description: 'Lista notas fiscais com filtros por busca, fornecedor, obra e período.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
-
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
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: 15
to: 2
total: 2
properties:
data:
type: array
example:
-
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
-
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
items:
type: object
properties:
id:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: null
nullable: true
nfe_number:
type: string
example: null
nullable: true
nfe_series:
type: string
example: null
nullable: true
issue_date:
type: string
example: null
nullable: true
total_value:
type: string
example: null
nullable: true
emit:
type: object
properties:
cnpj:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
dest:
type: object
properties:
document:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
financial_status:
type: string
example: pending
products_imported_at:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 15
to:
type: integer
example: 2
total:
type: integer
example: 2
tags:
- 'Fiscal Documents'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
q:
type: string
description: ''
example: explicabo
supplier_id:
type: string
description: 'The uuid of an existing record in the suppliers table.'
example: et
work_id:
type: string
description: 'The uuid of an existing record in the works table.'
example: illum
start_date:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-08-04T16:37:10'
end_date:
type: string
description: 'O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a start_date.'
example: '2124-08-22'
per_page:
type: integer
description: 'O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 19
post:
summary: 'Create fiscal document'
operationId: createFiscalDocument
description: 'Registra uma NFe a partir do XML já enviado ao S3 e o vincula às obras informadas.'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: null
nullable: true
nfe_number:
type: string
example: null
nullable: true
nfe_series:
type: string
example: null
nullable: true
issue_date:
type: string
example: null
nullable: true
total_value:
type: string
example: null
nullable: true
emit:
type: object
properties:
cnpj:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
dest:
type: object
properties:
document:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
financial_status:
type: string
example: pending
products_imported_at:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
tags:
- 'Fiscal Documents'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
s3_file_path:
type: string
description: ''
example: porro
original_filename:
type: string
description: 'Must match the regex /\.xml$/i.'
example: .xml$/i
work_ids:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- praesentium
items:
type: string
required:
- s3_file_path
- original_filename
'/api/fiscal-documents/{fiscalDocument}':
get:
summary: 'Get fiscal document'
operationId: getFiscalDocument
description: 'Detalha uma nota fiscal com arquivos e obras vinculadas.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: null
nullable: true
nfe_number:
type: string
example: null
nullable: true
nfe_series:
type: string
example: null
nullable: true
issue_date:
type: string
example: null
nullable: true
total_value:
type: string
example: null
nullable: true
emit:
type: object
properties:
cnpj:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
dest:
type: object
properties:
document:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
financial_status:
type: string
example: pending
products_imported_at:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
tags:
- 'Fiscal Documents'
delete:
summary: 'Delete fiscal document'
operationId: deleteFiscalDocument
description: 'Exclui definitivamente uma nota fiscal. Não permitido quando a nota já gerou parcelas no financeiro ou já teve produtos importados.'
parameters: []
responses:
204:
description: 'Nota fiscal excluída.'
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'Fiscal Documents'
parameters:
-
in: path
name: fiscalDocument
description: 'UUID da nota fiscal'
example: alias
required: true
schema:
type: string
'/api/fiscal-documents/{fiscalDocument}/files':
post:
summary: 'Attach file'
operationId: attachFile
description: 'Anexa um arquivo (ex.: PDF da NF) já enviado ao S3 à nota fiscal.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: null
nullable: true
nfe_number:
type: string
example: null
nullable: true
nfe_series:
type: string
example: null
nullable: true
issue_date:
type: string
example: null
nullable: true
total_value:
type: string
example: null
nullable: true
emit:
type: object
properties:
cnpj:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
dest:
type: object
properties:
document:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
financial_status:
type: string
example: pending
products_imported_at:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
tags:
- 'Fiscal Documents'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
file:
type: object
description: ''
example: []
properties:
path:
type: string
description: ''
example: voluptatem
name:
type: string
description: ''
example: enim
extension:
type: string
description: ''
example: animi
size:
type: string
description: ''
example: null
nullable: true
required:
- path
- name
- extension
required:
- file
parameters:
-
in: path
name: fiscalDocument
description: 'UUID da nota fiscal'
example: eum
required: true
schema:
type: string
'/api/fiscal-documents/{fiscalDocument}/files/{file}':
delete:
summary: 'Detach file'
operationId: detachFile
description: 'Remove definitivamente um anexo da nota fiscal, inclusive o objeto no S3. O XML original da NFe não pode ser removido.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: null
nullable: true
nfe_number:
type: string
example: null
nullable: true
nfe_series:
type: string
example: null
nullable: true
issue_date:
type: string
example: null
nullable: true
total_value:
type: string
example: null
nullable: true
emit:
type: object
properties:
cnpj:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
dest:
type: object
properties:
document:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
financial_status:
type: string
example: pending
products_imported_at:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
tags:
- 'Fiscal Documents'
parameters:
-
in: path
name: fiscalDocument
description: 'UUID da nota fiscal'
example: nostrum
required: true
schema:
type: string
-
in: path
name: file
description: 'UUID do arquivo anexado'
example: vel
required: true
schema:
type: string
'/api/fiscal-documents/{fiscalDocument}/works':
put:
summary: 'Sync works'
operationId: syncWorks
description: 'Sincroniza o vínculo documental da nota fiscal com N obras.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: null
nullable: true
nfe_number:
type: string
example: null
nullable: true
nfe_series:
type: string
example: null
nullable: true
issue_date:
type: string
example: null
nullable: true
total_value:
type: string
example: null
nullable: true
emit:
type: object
properties:
cnpj:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
dest:
type: object
properties:
document:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
financial_status:
type: string
example: pending
products_imported_at:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
tags:
- 'Fiscal Documents'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
work_ids:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- similique
items:
type: string
parameters:
-
in: path
name: fiscalDocument
description: 'UUID da nota fiscal'
example: fugiat
required: true
schema:
type: string
/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
fiscal_document_id:
type: string
description: 'Fiscal document id. The uuid of an existing record in the fiscal_documents table.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
nullable: true
required:
- s3_file_path
- original_filename
- import_type
/api/imports:
get:
summary: 'List Imports'
operationId: listImports
description: 'List all NFe imports 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
auto_linked_count: 4
stock_launched_count: 7
pending_stock_launch_count: 3
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
auto_linked_count:
type: integer
example: 4
stock_launched_count:
type: integer
example: 7
pending_stock_launch_count:
type: integer
example: 3
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
delete:
summary: 'Delete Import'
operationId: deleteImport
description: 'Delete an NFe import along with its supplier products and pending link mappings. Only allowed when no imported product has been linked to a system product and the import is not being processed.'
parameters: []
responses:
204:
description: 'Import deleted successfully'
content:
application/json:
schema:
type: object
nullable: true
422:
description: 'Import has linked products or is still processing'
content:
application/json:
schema:
type: object
example:
error: 'Não é possível excluir uma importação com produtos já vinculados.'
properties:
error:
type: string
example: 'Não é possível excluir uma importação com produtos já vinculados.'
tags:
- Import
parameters:
-
in: path
name: importId
description: ''
example: pariatur
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
has_stock_movement: false
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
has_stock_movement: false
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
nullable: true
linked_at:
type: string
example: null
nullable: true
linked_by:
type: string
example: null
nullable: true
has_stock_movement:
type: boolean
example: false
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: occaecati
required: true
schema:
type: string
'/api/imports/{importId}/distributions':
get:
summary: 'List Import Stock Distributions'
operationId: listImportStockDistributions
description: 'Return, per imported product, how the purchased quantity was distributed across stocks (works and main). Aggregated from stock movements generated by the import.'
parameters: []
responses:
200:
description: 'Distribution breakdown per product'
content:
application/json:
schema:
type: object
example:
data:
-
product:
id: product-uuid
name: 'Cano PVC XPTO'
total: 50
by_stock:
-
stock:
id: stock-uuid-a
name: 'Obra A'
is_main: false
quantity: 10
-
stock:
id: stock-uuid-b
name: 'Obra B'
is_main: false
quantity: 30
-
stock:
id: main-uuid
name: Principal
is_main: true
quantity: 10
properties:
data:
type: array
example:
-
product:
id: product-uuid
name: 'Cano PVC XPTO'
total: 50
by_stock:
-
stock:
id: stock-uuid-a
name: 'Obra A'
is_main: false
quantity: 10
-
stock:
id: stock-uuid-b
name: 'Obra B'
is_main: false
quantity: 30
-
stock:
id: main-uuid
name: Principal
is_main: true
quantity: 10
items:
type: object
properties:
product:
type: object
properties:
id:
type: string
example: product-uuid
name:
type: string
example: 'Cano PVC XPTO'
total:
type: integer
example: 50
by_stock:
type: array
example:
-
stock:
id: stock-uuid-a
name: 'Obra A'
is_main: false
quantity: 10
-
stock:
id: stock-uuid-b
name: 'Obra B'
is_main: false
quantity: 30
-
stock:
id: main-uuid
name: Principal
is_main: true
quantity: 10
items:
type: object
properties:
stock:
type: object
properties:
id:
type: string
example: stock-uuid-a
name:
type: string
example: 'Obra A'
is_main:
type: boolean
example: false
quantity:
type: integer
example: 10
tags:
- Import
parameters:
-
in: path
name: importId
description: ''
example: et
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:
- ut
items:
type: string
required:
- mappings
parameters:
-
in: path
name: importId
description: ''
example: facere
required: true
schema:
type: string
/api/locations/states:
get:
summary: 'List states'
operationId: listStates
description: 'List all states paginated'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: null
name: 'nam laborum'
abbreviation: KN
-
id: null
name: 'accusamus laudantium'
abbreviation: SE
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: 30
to: 2
total: 2
properties:
data:
type: array
example:
-
id: null
name: 'nam laborum'
abbreviation: KN
-
id: null
name: 'accusamus laudantium'
abbreviation: SE
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: 'nam laborum'
abbreviation:
type: string
example: KN
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 30
to:
type: integer
example: 2
total:
type: integer
example: 2
tags:
- Locations
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
sort_by:
type: string
description: ''
example: voluptatum
nullable: true
sort_desc:
type: boolean
description: ''
example: false
nullable: true
page:
type: integer
description: 'O campo value deve ser pelo menos 1.'
example: 89
nullable: true
per_page:
type: integer
description: 'O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 12
nullable: true
'/api/locations/states/{state}/cities':
get:
summary: 'List cities by state'
operationId: listCitiesByState
description: 'List all cities for a given state'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: null
name: Corwinborough
-
id: null
name: 'North Sigmundchester'
properties:
data:
type: array
example:
-
id: null
name: Corwinborough
-
id: null
name: 'North Sigmundchester'
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: Corwinborough
tags:
- Locations
parameters:
-
in: path
name: state
description: 'State UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
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: modi
required: false
schema:
type: string
description: ''
example: modi
-
in: query
name: document
description: ''
example: dolorem
required: false
schema:
type: string
description: ''
example: dolorem
-
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
-
in: query
name: bank_account_id
description: 'Filter by bank account UUID. O campo value deve ser um UUID válido. The uuid of an existing record in the bank_accounts table.'
example: a01edd80-bf3e-40f7-8613-ccb4be5831b3
required: false
schema:
type: string
description: 'Filter by bank account UUID. O campo value deve ser um UUID válido. The uuid of an existing record in the bank_accounts table.'
example: a01edd80-bf3e-40f7-8613-ccb4be5831b3
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: ff115612-01aa-3b1b-a6cb-3379f4e68381
receipt_number: REC-8460
receiver_type: employee
receiver:
id: null
name: 'Gerard Kohler'
document: 773.406.599-33
payment:
amount: 4821.02
amount_in_words: 'Valor por extenso de teste'
method: check
description: 'Aut vel vel dolor et.'
issuer:
name: "D'Amore-Langworth"
document: 62.574.550/3156-20
issue:
date: '2026-07-29'
city: 'South Justina'
state: SC
created_by:
id: a26c93fd-fb1e-4c2e-942f-9fa86c5da2c2
name: 'Christy Frami'
created_at: null
updated_at: null
-
id: 2261e0d3-bc6c-30c5-9006-d7c77ce04b0a
receipt_number: REC-0299
receiver_type: employee
receiver:
id: null
name: 'Turner Gleichner'
document: 615.077.424-97
payment:
amount: 6002.21
amount_in_words: 'Valor por extenso de teste'
method: bank_transfer
description: 'Cum atque nam explicabo minus atque nihil nihil.'
issuer:
name: 'Koepp, Koelpin and Champlin'
document: 60.868.303/2981-60
issue:
date: '2026-08-01'
city: Jermaineborough
state: RS
created_by:
id: a26c93fd-fe7b-4c53-931b-38cf323a9ae4
name: 'Ms. Opal Balistreri'
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: ff115612-01aa-3b1b-a6cb-3379f4e68381
receipt_number: REC-8460
receiver_type: employee
receiver:
id: null
name: 'Gerard Kohler'
document: 773.406.599-33
payment:
amount: 4821.02
amount_in_words: 'Valor por extenso de teste'
method: check
description: 'Aut vel vel dolor et.'
issuer:
name: "D'Amore-Langworth"
document: 62.574.550/3156-20
issue:
date: '2026-07-29'
city: 'South Justina'
state: SC
created_by:
id: a26c93fd-fb1e-4c2e-942f-9fa86c5da2c2
name: 'Christy Frami'
created_at: null
updated_at: null
-
id: 2261e0d3-bc6c-30c5-9006-d7c77ce04b0a
receipt_number: REC-0299
receiver_type: employee
receiver:
id: null
name: 'Turner Gleichner'
document: 615.077.424-97
payment:
amount: 6002.21
amount_in_words: 'Valor por extenso de teste'
method: bank_transfer
description: 'Cum atque nam explicabo minus atque nihil nihil.'
issuer:
name: 'Koepp, Koelpin and Champlin'
document: 60.868.303/2981-60
issue:
date: '2026-08-01'
city: Jermaineborough
state: RS
created_by:
id: a26c93fd-fe7b-4c53-931b-38cf323a9ae4
name: 'Ms. Opal Balistreri'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: ff115612-01aa-3b1b-a6cb-3379f4e68381
receipt_number:
type: string
example: REC-8460
receiver_type:
type: string
example: employee
receiver:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: 'Gerard Kohler'
document:
type: string
example: 773.406.599-33
payment:
type: object
properties:
amount:
type: number
example: 4821.02
amount_in_words:
type: string
example: 'Valor por extenso de teste'
method:
type: string
example: check
description:
type: string
example: 'Aut vel vel dolor et.'
issuer:
type: object
properties:
name:
type: string
example: "D'Amore-Langworth"
document:
type: string
example: 62.574.550/3156-20
issue:
type: object
properties:
date:
type: string
example: '2026-07-29'
city:
type: string
example: 'South Justina'
state:
type: string
example: SC
created_by:
type: object
properties:
id:
type: string
example: a26c93fd-fb1e-4c2e-942f-9fa86c5da2c2
name:
type: string
example: 'Christy Frami'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: aaf63b47-e513-487b-9c3d-c67609a112ea
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.'
example: 'Example Payment method'
enum:
- pix
- bank_transfer
- cash
- check
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: 0e9ccb98-65e7-3de8-9cc0-c77767120f70
nullable: true
bank_account_id:
type: string
description: 'Conta Bancária. O campo value deve ser um UUID válido. The uuid of an existing record in the bank_accounts table.'
example: 496aa1a5-da22-3d39-adda-8728edcf9f33
nullable: true
required:
- receiver_type
- amount
- payment_method
- description
- issuer_name
- issuer_document
- issue_date
- city
- state
/api/payment-receipts/cash-flow-config:
get:
summary: 'Show receipt cash flow config'
operationId: showReceiptCashFlowConfig
description: 'Lista cada forma de pagamento e se ela gera lancamento automatico no fluxo de caixa'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Payment Receipts'
put:
summary: 'Update receipt cash flow config'
operationId: updateReceiptCashFlowConfig
description: 'Define, por forma de pagamento, se o recibo gera lancamento automatico no fluxo de caixa'
parameters: []
responses: { }
tags:
- 'Payment Receipts'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
methods:
type: array
description: 'O campo value deve ter pelo menos 1 itens.'
example:
- []
items:
type: object
properties:
method:
type: string
description: ''
example: bank_transfer
enum:
- pix
- bank_transfer
- cash
- check
eligible:
type: boolean
description: ''
example: false
required:
- method
- eligible
required:
- methods
'/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: d15fedc4-61cb-3117-8015-254de397cb62
receipt_number: REC-7442
receiver_type: custom
receiver:
id: null
name: 'Ettie Douglas PhD'
document: 048.869.898-38
payment:
amount: 5985.98
amount_in_words: 'Valor por extenso de teste'
method: cash
description: 'Labore quasi quo ad nisi eum repellendus voluptatem.'
issuer:
name: 'Barrows and Sons'
document: 87.454.897/6251-86
issue:
date: '2026-07-19'
city: Garrisonstad
state: PE
created_by:
id: a26c93fe-0df5-4762-8d14-077e87bde825
name: 'Jeanie Kulas'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: d15fedc4-61cb-3117-8015-254de397cb62
receipt_number:
type: string
example: REC-7442
receiver_type:
type: string
example: custom
receiver:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: 'Ettie Douglas PhD'
document:
type: string
example: 048.869.898-38
payment:
type: object
properties:
amount:
type: number
example: 5985.98
amount_in_words:
type: string
example: 'Valor por extenso de teste'
method:
type: string
example: cash
description:
type: string
example: 'Labore quasi quo ad nisi eum repellendus voluptatem.'
issuer:
type: object
properties:
name:
type: string
example: 'Barrows and Sons'
document:
type: string
example: 87.454.897/6251-86
issue:
type: object
properties:
date:
type: string
example: '2026-07-19'
city:
type: string
example: Garrisonstad
state:
type: string
example: PE
created_by:
type: object
properties:
id:
type: string
example: a26c93fe-0df5-4762-8d14-077e87bde825
name:
type: string
example: 'Jeanie Kulas'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: a8053a0e-fe0f-48c6-b618-d75a227652cd
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.'
example: 'Example Payment method'
enum:
- pix
- bank_transfer
- cash
- check
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: 5e7415ae-2693-387b-b336-238b4b97a53d
nullable: true
bank_account_id:
type: string
description: 'Conta Bancária. O campo value deve ser um UUID válido. The uuid of an existing record in the bank_accounts table.'
example: df0b9ccd-f472-3a42-ac20-c33418e16f9a
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: 9bc0674a-ee27-37aa-a516-8d4cb8104714
receipt_number: REC-3028
receiver_type: custom
receiver:
id: null
name: 'Kaelyn Thompson DDS'
document: 164.193.879-19
payment:
amount: 5138.47
amount_in_words: 'Valor por extenso de teste'
method: bank_transfer
description: 'Dolor cum at incidunt non optio enim rerum.'
issuer:
name: 'Weber Group'
document: 35.162.275/3740-26
issue:
date: '2026-07-18'
city: 'Port Leonel'
state: SP
created_by:
id: a26c93fe-3db6-453a-a461-35e4f00e4d7e
name: 'Dennis Graham'
created_at: null
updated_at: null
-
id: 6ccbdc7c-2f31-317c-b2e5-00a9c71d1101
receipt_number: REC-4314
receiver_type: employee
receiver:
id: null
name: 'Mr. Brett Lesch'
document: 832.315.808-30
payment:
amount: 2699.73
amount_in_words: 'Valor por extenso de teste'
method: check
description: 'Minima atque in perspiciatis cum autem sed exercitationem.'
issuer:
name: Klein-Wiza
document: 31.633.661/5997-63
issue:
date: '2026-07-08'
city: 'West Sabina'
state: PE
created_by:
id: a26c93fe-3fdc-4efc-a578-6128caf07e5d
name: 'Malvina Wolff'
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: 9bc0674a-ee27-37aa-a516-8d4cb8104714
receipt_number: REC-3028
receiver_type: custom
receiver:
id: null
name: 'Kaelyn Thompson DDS'
document: 164.193.879-19
payment:
amount: 5138.47
amount_in_words: 'Valor por extenso de teste'
method: bank_transfer
description: 'Dolor cum at incidunt non optio enim rerum.'
issuer:
name: 'Weber Group'
document: 35.162.275/3740-26
issue:
date: '2026-07-18'
city: 'Port Leonel'
state: SP
created_by:
id: a26c93fe-3db6-453a-a461-35e4f00e4d7e
name: 'Dennis Graham'
created_at: null
updated_at: null
-
id: 6ccbdc7c-2f31-317c-b2e5-00a9c71d1101
receipt_number: REC-4314
receiver_type: employee
receiver:
id: null
name: 'Mr. Brett Lesch'
document: 832.315.808-30
payment:
amount: 2699.73
amount_in_words: 'Valor por extenso de teste'
method: check
description: 'Minima atque in perspiciatis cum autem sed exercitationem.'
issuer:
name: Klein-Wiza
document: 31.633.661/5997-63
issue:
date: '2026-07-08'
city: 'West Sabina'
state: PE
created_by:
id: a26c93fe-3fdc-4efc-a578-6128caf07e5d
name: 'Malvina Wolff'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 9bc0674a-ee27-37aa-a516-8d4cb8104714
receipt_number:
type: string
example: REC-3028
receiver_type:
type: string
example: custom
receiver:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: 'Kaelyn Thompson DDS'
document:
type: string
example: 164.193.879-19
payment:
type: object
properties:
amount:
type: number
example: 5138.47
amount_in_words:
type: string
example: 'Valor por extenso de teste'
method:
type: string
example: bank_transfer
description:
type: string
example: 'Dolor cum at incidunt non optio enim rerum.'
issuer:
type: object
properties:
name:
type: string
example: 'Weber Group'
document:
type: string
example: 35.162.275/3740-26
issue:
type: object
properties:
date:
type: string
example: '2026-07-18'
city:
type: string
example: 'Port Leonel'
state:
type: string
example: SP
created_by:
type: object
properties:
id:
type: string
example: a26c93fe-3db6-453a-a461-35e4f00e4d7e
name:
type: string
example: 'Dennis Graham'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 4
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/ungrouped-permissions:
get:
summary: 'List ungrouped permissions'
operationId: listUngroupedPermissions
description: 'List all permissions that do not belong to any permission group.'
parameters:
-
in: query
name: q
description: 'Search query.'
example: 'Permission name'
required: false
schema:
type: string
description: 'Search query.'
example: 'Permission name'
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
-
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
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: d58c2125-03b3-3928-91e7-9d7066d86619
name: eius
display_name: 'Dignissimos culpa veritatis id.'
-
id: 6124b555-f024-3cf7-bb27-8b10eacba535
name: adipisci
display_name: 'Et sed fugit quidem voluptas nemo.'
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: d58c2125-03b3-3928-91e7-9d7066d86619
name: eius
display_name: 'Dignissimos culpa veritatis id.'
-
id: 6124b555-f024-3cf7-bb27-8b10eacba535
name: adipisci
display_name: 'Et sed fugit quidem voluptas nemo.'
items:
type: object
properties:
id:
type: string
example: d58c2125-03b3-3928-91e7-9d7066d86619
name:
type: string
example: eius
display_name:
type: string
example: 'Dignissimos culpa veritatis id.'
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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'
/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: 823be50a-20f1-3147-b602-13a7f685c198
name: est-consequatur
display_name: 'eveniet alias quia'
created_at: null
updated_at: null
-
id: 09d42195-f358-3453-ac4a-933c68ed29b2
name: a-mollitia
display_name: 'nobis ab enim'
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: 823be50a-20f1-3147-b602-13a7f685c198
name: est-consequatur
display_name: 'eveniet alias quia'
created_at: null
updated_at: null
-
id: 09d42195-f358-3453-ac4a-933c68ed29b2
name: a-mollitia
display_name: 'nobis ab enim'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 823be50a-20f1-3147-b602-13a7f685c198
name:
type: string
example: est-consequatur
display_name:
type: string
example: 'eveniet alias quia'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: f0789a10-eb9b-3cae-90a9-271b40ec51d7
name: saepe-ea-architecto
display_name: 'excepturi voluptas enim'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: f0789a10-eb9b-3cae-90a9-271b40ec51d7
name:
type: string
example: saepe-ea-architecto
display_name:
type: string
example: 'excepturi voluptas enim'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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/permission-groups/{permissionGroup}/permissions':
post:
summary: 'Attach permissions to group'
operationId: attachPermissionsToGroup
description: 'Attach one or more permissions to a permission group. Permissions already in another group are moved to this group.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 11329154-3110-3c04-aaff-ebecdc04086d
name: provident-culpa-reiciendis
display_name: 'sit sed reiciendis'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 11329154-3110-3c04-aaff-ebecdc04086d
name:
type: string
example: provident-culpa-reiciendis
display_name:
type: string
example: 'sit sed reiciendis'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Permission Groups'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
permissions:
type: array
description: 'ID da permissão. O campo value deve ser um UUID válido. The uuid of an existing record in the permissions table.'
example:
- e59c3be4-0ab4-3b2e-a886-387d591098f4
items:
type: string
required:
- permissions
delete:
summary: 'Detach permissions from group'
operationId: detachPermissionsFromGroup
description: 'Detach one or more permissions from a permission group. Fails if any permission does not belong to the group.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: a05259e7-d755-3e84-9a26-0f531ccab0e5
name: occaecati-veritatis
display_name: 'porro expedita incidunt'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: a05259e7-d755-3e84-9a26-0f531ccab0e5
name:
type: string
example: occaecati-veritatis
display_name:
type: string
example: 'porro expedita incidunt'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Permission Groups'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
permissions:
type: array
description: 'ID da permissão. O campo value deve ser um UUID válido. The uuid of an existing record in the permissions table.'
example:
- 74946861-0977-3553-a5d0-da9f0b75faf9
items:
type: string
required:
- permissions
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: b92bd9fb-76a5-3087-8d78-f57bfc19c4bf
name: 'Srta. Nayara Pontes'
created_at: null
updated_at: null
-
id: 84da330b-7b1f-3a5f-9c7a-6dc8816d553c
name: 'Sr. Ricardo Faria Lourenço 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: b92bd9fb-76a5-3087-8d78-f57bfc19c4bf
name: 'Srta. Nayara Pontes'
created_at: null
updated_at: null
-
id: 84da330b-7b1f-3a5f-9c7a-6dc8816d553c
name: 'Sr. Ricardo Faria Lourenço Neto'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: b92bd9fb-76a5-3087-8d78-f57bfc19c4bf
name:
type: string
example: 'Srta. Nayara Pontes'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 286af350-717f-3835-b83a-27a5d8553161
name: 'Sr. Luan Godói Alcantara Jr.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 286af350-717f-3835-b83a-27a5d8553161
name:
type: string
example: 'Sr. Luan Godói Alcantara Jr.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: et
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: fbe640b0-48c1-3b3a-b28c-fdb0d6f85e25
name: 'Rogério Fabiano Maia'
created_at: null
updated_at: null
-
id: 38e25a47-d33c-39f0-9f3c-0bc7c0f76879
name: 'Benedito Caio Romero 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: fbe640b0-48c1-3b3a-b28c-fdb0d6f85e25
name: 'Rogério Fabiano Maia'
created_at: null
updated_at: null
-
id: 38e25a47-d33c-39f0-9f3c-0bc7c0f76879
name: 'Benedito Caio Romero Neto'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: fbe640b0-48c1-3b3a-b28c-fdb0d6f85e25
name:
type: string
example: 'Rogério Fabiano Maia'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 20ffb86b-3878-3472-94e4-73376bf00497
name: 'Cecília Marinho Carrara Sobrinho'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 20ffb86b-3878-3472-94e4-73376bf00497
name:
type: string
example: 'Cecília Marinho Carrara Sobrinho'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: dolor
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: 8c860ac0-6d79-34d8-a00f-9228033b43b2
name: 'Dolores facilis explicabo doloribus.'
description: 'Hic neque accusamus accusamus corporis sit voluptates dicta. Recusandae delectus placeat ducimus quia. Earum et quia consequatur quas commodi.'
work:
id: a26c93fe-c4d7-4bdb-b72d-324b5318682d
name: 'Regina Mel Rocha Neto'
user:
id: a26c93fe-c791-4bbb-a7ab-43d15faa6a57
name: 'Vicky Lakin'
created_at: null
updated_at: null
-
id: fcee2273-62bd-3b97-9aa5-6411ba1cc99f
name: 'Officia nulla maiores.'
description: null
work:
id: a26c93fe-cadc-4208-a90b-de01fcacc5b3
name: 'Dr. Luciano Carvalho Bittencourt'
user:
id: a26c93fe-cd3b-41cf-b634-e7a9fb9ccd04
name: 'Lura Schimmel'
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: 8c860ac0-6d79-34d8-a00f-9228033b43b2
name: 'Dolores facilis explicabo doloribus.'
description: 'Hic neque accusamus accusamus corporis sit voluptates dicta. Recusandae delectus placeat ducimus quia. Earum et quia consequatur quas commodi.'
work:
id: a26c93fe-c4d7-4bdb-b72d-324b5318682d
name: 'Regina Mel Rocha Neto'
user:
id: a26c93fe-c791-4bbb-a7ab-43d15faa6a57
name: 'Vicky Lakin'
created_at: null
updated_at: null
-
id: fcee2273-62bd-3b97-9aa5-6411ba1cc99f
name: 'Officia nulla maiores.'
description: null
work:
id: a26c93fe-cadc-4208-a90b-de01fcacc5b3
name: 'Dr. Luciano Carvalho Bittencourt'
user:
id: a26c93fe-cd3b-41cf-b634-e7a9fb9ccd04
name: 'Lura Schimmel'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 8c860ac0-6d79-34d8-a00f-9228033b43b2
name:
type: string
example: 'Dolores facilis explicabo doloribus.'
description:
type: string
example: 'Hic neque accusamus accusamus corporis sit voluptates dicta. Recusandae delectus placeat ducimus quia. Earum et quia consequatur quas commodi.'
work:
type: object
properties:
id:
type: string
example: a26c93fe-c4d7-4bdb-b72d-324b5318682d
name:
type: string
example: 'Regina Mel Rocha Neto'
user:
type: object
properties:
id:
type: string
example: a26c93fe-c791-4bbb-a7ab-43d15faa6a57
name:
type: string
example: 'Vicky Lakin'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: d63f1d10-444a-38e0-b1fd-53a7dfcd53d4
nullable: true
user_id:
type: string
description: 'Usuário. The uuid of an existing record in the users table.'
example: f0c86231-e795-398b-bb63-ef7300f33a04
nullable: true
responsible_id:
type: string
description: 'Responsável. The uuid of an existing record in the users table.'
example: a3702791-1c7e-3b3a-8510-3dc2cda45cee
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: true
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: 00236b8e-9277-30fa-bcfd-d860986ac21a
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: ca416a9a-e067-39e3-b55f-698d95fa93f4
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: fcec759a-fb2c-3e90-821c-89e307b36074
name: 'Ratione suscipit et molestiae.'
description: null
work:
id: a26c93fe-d3d3-4608-8f91-ad71c0624212
name: 'Nelson Jimenes Dominato Jr.'
user:
id: a26c93fe-d675-47ce-92f6-0b0811a11d03
name: 'Dejah Reinger III'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: fcec759a-fb2c-3e90-821c-89e307b36074
name:
type: string
example: 'Ratione suscipit et molestiae.'
description:
type: string
example: null
nullable: true
work:
type: object
properties:
id:
type: string
example: a26c93fe-d3d3-4608-8f91-ad71c0624212
name:
type: string
example: 'Nelson Jimenes Dominato Jr.'
user:
type: object
properties:
id:
type: string
example: a26c93fe-d675-47ce-92f6-0b0811a11d03
name:
type: string
example: 'Dejah Reinger III'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: da17f3a3-f9d0-31c2-84c4-cfcfed1180e0
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: c8dc2884-88ae-3e4b-b661-0c39df9ccc70
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: dicta
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: 3f674af7-e77b-38f1-91c0-6268085fc1c4
product:
id: a26c93fe-e9f4-4a42-adde-6357bd20b457
name: 'Sra. Samanta Alícia Tamoio Sobrinho'
code: PRD-633167
unit:
id: a26c93fe-e82c-44d3-ab6b-4652a7d56b29
name: 'Sr. Walter Ramos Marques'
abbreviation: 'Dr. Paula da Cruz Lutero Jr.'
quantity: 749.8195
observation: 'Voluptas ad odio modi quia est consequatur.'
created_at: null
updated_at: null
-
id: 63022974-de44-3779-b9bf-6a0c08ca25bf
product:
id: a26c93fe-f821-4a2f-a8ff-d1adc3d09bd3
name: 'Dr. Louise Soto Filho'
code: PRD-768970
unit:
id: a26c93fe-f705-481b-b627-2f3f7cd7accb
name: 'Marília Bárbara Sales'
abbreviation: "Srta. Maria Tainara D'ávila Filho"
quantity: 64.7939
observation: 'Architecto occaecati ducimus odio incidunt.'
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: 3f674af7-e77b-38f1-91c0-6268085fc1c4
product:
id: a26c93fe-e9f4-4a42-adde-6357bd20b457
name: 'Sra. Samanta Alícia Tamoio Sobrinho'
code: PRD-633167
unit:
id: a26c93fe-e82c-44d3-ab6b-4652a7d56b29
name: 'Sr. Walter Ramos Marques'
abbreviation: 'Dr. Paula da Cruz Lutero Jr.'
quantity: 749.8195
observation: 'Voluptas ad odio modi quia est consequatur.'
created_at: null
updated_at: null
-
id: 63022974-de44-3779-b9bf-6a0c08ca25bf
product:
id: a26c93fe-f821-4a2f-a8ff-d1adc3d09bd3
name: 'Dr. Louise Soto Filho'
code: PRD-768970
unit:
id: a26c93fe-f705-481b-b627-2f3f7cd7accb
name: 'Marília Bárbara Sales'
abbreviation: "Srta. Maria Tainara D'ávila Filho"
quantity: 64.7939
observation: 'Architecto occaecati ducimus odio incidunt.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 3f674af7-e77b-38f1-91c0-6268085fc1c4
product:
type: object
properties:
id:
type: string
example: a26c93fe-e9f4-4a42-adde-6357bd20b457
name:
type: string
example: 'Sra. Samanta Alícia Tamoio Sobrinho'
code:
type: string
example: PRD-633167
unit:
type: object
properties:
id:
type: string
example: a26c93fe-e82c-44d3-ab6b-4652a7d56b29
name:
type: string
example: 'Sr. Walter Ramos Marques'
abbreviation:
type: string
example: 'Dr. Paula da Cruz Lutero Jr.'
quantity:
type: number
example: 749.8195
observation:
type: string
example: 'Voluptas ad odio modi quia est consequatur.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: d4e3e974-bd26-3317-a7c7-d6e30aed5fb7
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:
- 6d01c7b3-169b-3fee-b60f-6ea23e69f0d4
items:
type: string
required:
- items
parameters:
-
in: path
name: productQuantityList
description: 'Product Quantity List UUID'
example: quia
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: earum
required: true
schema:
type: string
-
in: path
name: item
description: 'Product Quantity List Item UUID'
example: perferendis
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: 352fbe8a-4ab9-3189-be09-b2f0bbf42756
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 06b9fd47-1d6c-3f13-8c40-73b574477f0e
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: dolor
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: bba6d48a-33cc-3220-9aa3-6735bfca2574
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: 100afad6-11b4-3e37-83b4-d2210521456a
nullable: true
reason:
type: string
description: 'Motivo. O campo value não pode ser superior a 500 caracteres.'
example: 'Example Reason'
nullable: true
origins:
type: array
description: 'Origens (NFs).'
example:
- null
- null
items:
type: object
nullable: true
properties:
supplier_product_id:
type: string
description: 'NF de origem. This field is required when origins is present. The uuid of an existing record in the supplier_products table.'
example: f070abee-1a3c-32b3-b2ee-a8ffbbfd3377
quantity:
type: number
description: 'Quantidade da origem. This field is required when origins is present. O campo value deve ser pelo menos 0.0001.'
example: 1.0
required:
- fulfillment_type
- quantity
parameters:
-
in: path
name: item
description: 'Product Request Item UUID'
example: maxime
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: d44e4fa4-396d-3b70-9c60-06a56f5a56cc
quantity: 20.693
fulfilled_at: '2026-07-23T23:39:53.000000Z'
created_at: null
-
id: 27ac4f1f-ebf6-3389-8419-f87a6df2acdc
quantity: 13.2128
fulfilled_at: '2026-07-30T18:35:25.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: d44e4fa4-396d-3b70-9c60-06a56f5a56cc
quantity: 20.693
fulfilled_at: '2026-07-23T23:39:53.000000Z'
created_at: null
-
id: 27ac4f1f-ebf6-3389-8419-f87a6df2acdc
quantity: 13.2128
fulfilled_at: '2026-07-30T18:35:25.000000Z'
created_at: null
items:
type: object
properties:
id:
type: string
example: d44e4fa4-396d-3b70-9c60-06a56f5a56cc
quantity:
type: number
example: 20.693
fulfilled_at:
type: string
example: '2026-07-23T23:39:53.000000Z'
created_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: veritatis
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: 6e54e896-a564-364d-9b1b-85b4b6e3cb7d
product:
id: a26c9403-4c97-4a20-8aca-dc42bbd5297a
name: 'Tainara Solano'
code: PRD-476776
unit:
id: a26c9403-4b62-41e0-86b3-d56ef55b53da
name: 'Sophie Emilly Salas'
abbreviation: 'Dr. Adriele Laura Prado Filho'
quantity: 611.1282
quantity_fulfilled: 0
quantity_pending: 611.1282
is_fulfilled: false
is_partially_fulfilled: false
observation: 'At consequatur fuga harum temporibus vel architecto minus.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 6e54e896-a564-364d-9b1b-85b4b6e3cb7d
product:
type: object
properties:
id:
type: string
example: a26c9403-4c97-4a20-8aca-dc42bbd5297a
name:
type: string
example: 'Tainara Solano'
code:
type: string
example: PRD-476776
unit:
type: object
properties:
id:
type: string
example: a26c9403-4b62-41e0-86b3-d56ef55b53da
name:
type: string
example: 'Sophie Emilly Salas'
abbreviation:
type: string
example: 'Dr. Adriele Laura Prado Filho'
quantity:
type: number
example: 611.1282
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 611.1282
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
type: string
example: 'At consequatur fuga harum temporibus vel architecto minus.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: fc6b338a-1606-3993-989e-2a3a064654b8
nullable: true
parameters:
-
in: path
name: id
description: 'The ID of the item.'
example: perferendis
required: true
schema:
type: string
-
in: path
name: item
description: 'Product Request Item UUID'
example: labore
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: 43490de4-e056-36cd-922e-73d1eaba57f1
product:
id: a26c9403-6ab2-4463-b536-ecff00aa427a
name: 'Franco Igor Tamoio'
code: PRD-435319
unit:
id: a26c9403-6916-48ea-870d-cb6e0fe3fdc0
name: 'Olga Amanda Estrada Filho'
abbreviation: 'Vitória Verônica Furtado Neto'
quantity: 106.6956
quantity_fulfilled: 0
quantity_pending: 106.6956
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: c3801caf-0dc6-3016-a3fb-3abdb1f87661
product:
id: a26c9403-7c3c-41d5-916c-f3d26e3b9f17
name: 'Dr. Maurício Rios Neto'
code: PRD-360724
unit:
id: a26c9403-7af5-4c21-8741-f128a9612407
name: 'Dr. Rodolfo Rios Escobar Sobrinho'
abbreviation: 'Alma Aline Pontes Filho'
quantity: 215.8843
quantity_fulfilled: 0
quantity_pending: 215.8843
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: 43490de4-e056-36cd-922e-73d1eaba57f1
product:
id: a26c9403-6ab2-4463-b536-ecff00aa427a
name: 'Franco Igor Tamoio'
code: PRD-435319
unit:
id: a26c9403-6916-48ea-870d-cb6e0fe3fdc0
name: 'Olga Amanda Estrada Filho'
abbreviation: 'Vitória Verônica Furtado Neto'
quantity: 106.6956
quantity_fulfilled: 0
quantity_pending: 106.6956
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: c3801caf-0dc6-3016-a3fb-3abdb1f87661
product:
id: a26c9403-7c3c-41d5-916c-f3d26e3b9f17
name: 'Dr. Maurício Rios Neto'
code: PRD-360724
unit:
id: a26c9403-7af5-4c21-8741-f128a9612407
name: 'Dr. Rodolfo Rios Escobar Sobrinho'
abbreviation: 'Alma Aline Pontes Filho'
quantity: 215.8843
quantity_fulfilled: 0
quantity_pending: 215.8843
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 43490de4-e056-36cd-922e-73d1eaba57f1
product:
type: object
properties:
id:
type: string
example: a26c9403-6ab2-4463-b536-ecff00aa427a
name:
type: string
example: 'Franco Igor Tamoio'
code:
type: string
example: PRD-435319
unit:
type: object
properties:
id:
type: string
example: a26c9403-6916-48ea-870d-cb6e0fe3fdc0
name:
type: string
example: 'Olga Amanda Estrada Filho'
abbreviation:
type: string
example: 'Vitória Verônica Furtado Neto'
quantity:
type: number
example: 106.6956
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 106.6956
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: cumque
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: 731c483c-ab95-37a6-bfe4-9ef0e1356b1e
product:
id: a26c9403-9178-4a90-bee1-b6ff956d4d4b
name: 'Sra. Mayara Escobar'
code: PRD-040284
unit:
id: a26c9403-903e-4da3-a060-2eccbbc4bd28
name: 'Agostinho Cauan Aragão'
abbreviation: 'Deivid Carvalho Marin Filho'
quantity: 557.7859
quantity_fulfilled: 0
quantity_pending: 557.7859
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: 295cf26c-9c4c-309e-b068-4ac270011cef
product:
id: a26c9403-a239-43b4-a409-c1a5d01546d1
name: 'Sra. Daniele Cordeiro Cervantes'
code: PRD-265356
unit:
id: a26c9403-a109-4d27-b28d-274edac6e1d3
name: 'André Leo Galvão'
abbreviation: 'Constância Tamoio Sobrinho'
quantity: 381.0916
quantity_fulfilled: 0
quantity_pending: 381.0916
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Ut quas vero et quia voluptas ipsa.'
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: 731c483c-ab95-37a6-bfe4-9ef0e1356b1e
product:
id: a26c9403-9178-4a90-bee1-b6ff956d4d4b
name: 'Sra. Mayara Escobar'
code: PRD-040284
unit:
id: a26c9403-903e-4da3-a060-2eccbbc4bd28
name: 'Agostinho Cauan Aragão'
abbreviation: 'Deivid Carvalho Marin Filho'
quantity: 557.7859
quantity_fulfilled: 0
quantity_pending: 557.7859
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: 295cf26c-9c4c-309e-b068-4ac270011cef
product:
id: a26c9403-a239-43b4-a409-c1a5d01546d1
name: 'Sra. Daniele Cordeiro Cervantes'
code: PRD-265356
unit:
id: a26c9403-a109-4d27-b28d-274edac6e1d3
name: 'André Leo Galvão'
abbreviation: 'Constância Tamoio Sobrinho'
quantity: 381.0916
quantity_fulfilled: 0
quantity_pending: 381.0916
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Ut quas vero et quia voluptas ipsa.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 731c483c-ab95-37a6-bfe4-9ef0e1356b1e
product:
type: object
properties:
id:
type: string
example: a26c9403-9178-4a90-bee1-b6ff956d4d4b
name:
type: string
example: 'Sra. Mayara Escobar'
code:
type: string
example: PRD-040284
unit:
type: object
properties:
id:
type: string
example: a26c9403-903e-4da3-a060-2eccbbc4bd28
name:
type: string
example: 'Agostinho Cauan Aragão'
abbreviation:
type: string
example: 'Deivid Carvalho Marin Filho'
quantity:
type: number
example: 557.7859
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 557.7859
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Product Request Fulfillment'
parameters:
-
in: path
name: product
description: 'Product UUID'
example: sit
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: a3464b5f-6133-392c-85a6-4a36bbe1d508
code: null
name: 'Necessitatibus nobis eligendi repellendus.'
description: null
work:
id: a26c9400-7e77-41ed-b417-91110751ed6a
name: 'Fabiano Mendonça'
user:
id: a26c9400-8161-42fc-9e33-7430c496725a
name: 'Albertha Roberts'
status:
id: a26c9400-832f-47ab-8f54-188de6f3d7fa
slug: null
name: null
description: 'Dr. Marina Serna Sobrinho'
abbreviation: labore
color: '#384090'
text_color: '#d2cd59'
priority: low
priority_label: Baixa
needed_at: null
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
-
id: 51174f0f-f57a-319c-bdfc-ac036007e7b3
code: null
name: 'Nihil libero nobis suscipit quasi.'
description: 'Quo alias optio tempora beatae facere enim officia omnis. Iure quidem tempora et optio animi. Voluptatem dolores voluptates aut nihil et sit.'
work:
id: a26c9400-8751-421e-a242-00d6678bb135
name: 'Jennifer Lozano Jr.'
user:
id: a26c9400-8a52-4c6b-8fc7-541568ab9c62
name: 'Daija Kilback'
status:
id: a26c9400-8c1b-4568-a0c4-8b579784f3b1
slug: null
name: null
description: 'Cristian Rios'
abbreviation: est
color: '#e6abad'
text_color: '#0e4700'
priority: high
priority_label: Alta
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: a3464b5f-6133-392c-85a6-4a36bbe1d508
code: null
name: 'Necessitatibus nobis eligendi repellendus.'
description: null
work:
id: a26c9400-7e77-41ed-b417-91110751ed6a
name: 'Fabiano Mendonça'
user:
id: a26c9400-8161-42fc-9e33-7430c496725a
name: 'Albertha Roberts'
status:
id: a26c9400-832f-47ab-8f54-188de6f3d7fa
slug: null
name: null
description: 'Dr. Marina Serna Sobrinho'
abbreviation: labore
color: '#384090'
text_color: '#d2cd59'
priority: low
priority_label: Baixa
needed_at: null
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
-
id: 51174f0f-f57a-319c-bdfc-ac036007e7b3
code: null
name: 'Nihil libero nobis suscipit quasi.'
description: 'Quo alias optio tempora beatae facere enim officia omnis. Iure quidem tempora et optio animi. Voluptatem dolores voluptates aut nihil et sit.'
work:
id: a26c9400-8751-421e-a242-00d6678bb135
name: 'Jennifer Lozano Jr.'
user:
id: a26c9400-8a52-4c6b-8fc7-541568ab9c62
name: 'Daija Kilback'
status:
id: a26c9400-8c1b-4568-a0c4-8b579784f3b1
slug: null
name: null
description: 'Cristian Rios'
abbreviation: est
color: '#e6abad'
text_color: '#0e4700'
priority: high
priority_label: Alta
needed_at: null
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: a3464b5f-6133-392c-85a6-4a36bbe1d508
code:
type: string
example: null
nullable: true
name:
type: string
example: 'Necessitatibus nobis eligendi repellendus.'
description:
type: string
example: null
nullable: true
work:
type: object
properties:
id:
type: string
example: a26c9400-7e77-41ed-b417-91110751ed6a
name:
type: string
example: 'Fabiano Mendonça'
user:
type: object
properties:
id:
type: string
example: a26c9400-8161-42fc-9e33-7430c496725a
name:
type: string
example: 'Albertha Roberts'
status:
type: object
properties:
id:
type: string
example: a26c9400-832f-47ab-8f54-188de6f3d7fa
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Dr. Marina Serna Sobrinho'
abbreviation:
type: string
example: labore
color:
type: string
example: '#384090'
text_color:
type: string
example: '#d2cd59'
priority:
type: string
example: low
priority_label:
type: string
example: Baixa
needed_at:
type: string
example: null
nullable: true
approved_at:
type: string
example: null
nullable: true
rejection_reason:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: true
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: f1c9c9a1-ef69-354e-b133-25b776023bb3
nullable: true
work_location_id:
type: string
description: 'Local da obra. The uuid of an existing record in the work_locations table.'
example: f9ab523d-85f8-329a-b697-db14055bd238
nullable: true
user_id:
type: string
description: 'Usuário. The uuid of an existing record in the users table.'
example: 87f9c0fb-8685-3f22-8fbf-506811c2b6e0
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: 3691e0f7-028c-3efd-a512-7bdd68f44325
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: c5cc5b2c-9e23-3a9b-a793-225583e786b3
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: 86b6895b-0831-3109-a941-914afe1810f8
work_location_id:
type: string
description: 'Local da obra. The uuid of an existing record in the work_locations table.'
example: 698207dc-0ec1-3efb-8de2-d40bf4662c5d
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: ddb79eaa-4876-3624-b09d-b2e62f440f08
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: f23d905b-bd69-3cee-85d2-eddb107c4172
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: 47e572cd-50aa-3c28-bbab-9b542c2ac81b
code: null
name: 'Minus explicabo.'
description: 'Qui dolorem id libero vero tenetur dolor. Exercitationem placeat voluptates vel aut. Dolorum voluptatem laboriosam nemo in sunt quos.'
work:
id: a26c9400-9a1f-4bca-bdef-cf1086f7b433
name: 'Srta. Nádia Emília Rosa Jr.'
user:
id: a26c9400-9cb0-4510-8654-647b3ac55d0f
name: "Prof. Delilah O'Conner Sr."
status:
id: a26c9400-9e61-44de-a172-ccb34786afb5
slug: null
name: null
description: 'Dr. Gael Beltrão Sobrinho'
abbreviation: natus
color: '#79bce3'
text_color: '#464fd1'
priority: high
priority_label: Alta
needed_at: null
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 47e572cd-50aa-3c28-bbab-9b542c2ac81b
code:
type: string
example: null
nullable: true
name:
type: string
example: 'Minus explicabo.'
description:
type: string
example: 'Qui dolorem id libero vero tenetur dolor. Exercitationem placeat voluptates vel aut. Dolorum voluptatem laboriosam nemo in sunt quos.'
work:
type: object
properties:
id:
type: string
example: a26c9400-9a1f-4bca-bdef-cf1086f7b433
name:
type: string
example: 'Srta. Nádia Emília Rosa Jr.'
user:
type: object
properties:
id:
type: string
example: a26c9400-9cb0-4510-8654-647b3ac55d0f
name:
type: string
example: "Prof. Delilah O'Conner Sr."
status:
type: object
properties:
id:
type: string
example: a26c9400-9e61-44de-a172-ccb34786afb5
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Dr. Gael Beltrão Sobrinho'
abbreviation:
type: string
example: natus
color:
type: string
example: '#79bce3'
text_color:
type: string
example: '#464fd1'
priority:
type: string
example: high
priority_label:
type: string
example: Alta
needed_at:
type: string
example: null
nullable: true
approved_at:
type: string
example: null
nullable: true
rejection_reason:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: 87076d3a-3366-31fa-9a76-a798ba44efbe
work_location_id:
type: string
description: 'Local da obra. The uuid of an existing record in the work_locations table.'
example: cf4b1fd4-233f-3cf2-a610-8f3ba0294b8c
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: 51c44dd1-d7a0-3752-98c8-e39647d2c9e0
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: f65552a6-1aa3-3837-bfc4-7758b505fb94
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 1b756f1a-5099-39e6-8f3c-5a982be5e413
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: tempora
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: 7ee759fe-db91-34d0-9b93-ae72b765232e
product:
id: a26c9400-ba15-4c52-b194-9fbec404256b
name: 'Sr. Leonardo Tamoio Mendonça Filho'
code: PRD-251518
unit:
id: a26c9400-b8da-4ef1-a5db-aac3610b30b2
name: 'Mary Amaral Cortês'
abbreviation: 'Sandro Carrara'
quantity: 349.2003
quantity_fulfilled: 0
quantity_pending: 349.2003
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: eec19cf4-9dc0-33e8-bc38-32603553f8f6
product:
id: a26c9400-cb8c-4ecc-a5ae-69b4a79ff419
name: 'Sra. Maitê Silvana Medina Neto'
code: PRD-059326
unit:
id: a26c9400-caa5-4488-bd1b-1e375f5c4fa7
name: 'Sr. Teobaldo Galindo Marques Neto'
abbreviation: 'Débora Aguiar Quintana Jr.'
quantity: 711.7946
quantity_fulfilled: 0
quantity_pending: 711.7946
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: 7ee759fe-db91-34d0-9b93-ae72b765232e
product:
id: a26c9400-ba15-4c52-b194-9fbec404256b
name: 'Sr. Leonardo Tamoio Mendonça Filho'
code: PRD-251518
unit:
id: a26c9400-b8da-4ef1-a5db-aac3610b30b2
name: 'Mary Amaral Cortês'
abbreviation: 'Sandro Carrara'
quantity: 349.2003
quantity_fulfilled: 0
quantity_pending: 349.2003
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: eec19cf4-9dc0-33e8-bc38-32603553f8f6
product:
id: a26c9400-cb8c-4ecc-a5ae-69b4a79ff419
name: 'Sra. Maitê Silvana Medina Neto'
code: PRD-059326
unit:
id: a26c9400-caa5-4488-bd1b-1e375f5c4fa7
name: 'Sr. Teobaldo Galindo Marques Neto'
abbreviation: 'Débora Aguiar Quintana Jr.'
quantity: 711.7946
quantity_fulfilled: 0
quantity_pending: 711.7946
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 7ee759fe-db91-34d0-9b93-ae72b765232e
product:
type: object
properties:
id:
type: string
example: a26c9400-ba15-4c52-b194-9fbec404256b
name:
type: string
example: 'Sr. Leonardo Tamoio Mendonça Filho'
code:
type: string
example: PRD-251518
unit:
type: object
properties:
id:
type: string
example: a26c9400-b8da-4ef1-a5db-aac3610b30b2
name:
type: string
example: 'Mary Amaral Cortês'
abbreviation:
type: string
example: 'Sandro Carrara'
quantity:
type: number
example: 349.2003
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 349.2003
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: d2510e8a-c809-392e-ab65-4b7cc14ab22c
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:
- 5519c8fe-b7c0-376f-920f-868f5e2a7b98
items:
type: string
required:
- items
parameters:
-
in: path
name: productRequest
description: 'Product Request UUID'
example: rerum
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: asperiores
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: adipisci
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: 38ec89f7-6488-3420-a892-4615f94f5b23
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 39378076-0f6c-3adc-95ea-d8b71e023c59
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: voluptas
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
-
in: query
name: code
description: 'Filter by product code.'
example: PROD-00003
required: false
schema:
type: string
description: 'Filter by product code.'
example: PROD-00003
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: f837f195-fd17-363c-a1de-5e58cb580005
name: 'Sr. Juliano Henrique Rodrigues'
code: PRD-211330
stock: 6165
product_family:
id: a26c93fe-6863-4fd0-a427-4a8cf40c87b2
name: 'Guilherme Feliciano Beltrão'
product_brand:
id: a26c93fe-6af0-4044-b1d8-9d03775aa7f0
name: 'Miguel Pereira'
unit:
id: a26c93fe-6d2a-42f9-a2cd-73fb21a49dd6
name: 'Dr. Mateus Roque'
abbreviation: 'Lorena Roque Jr.'
image:
id: null
url: null
description: 'Excepturi officiis aspernatur velit cum sed aspernatur.'
created_at: null
updated_at: null
-
id: 59592599-a3c5-3bd9-a3b9-27189a568fcd
name: 'Alessandra Delvalle Solano'
code: PRD-708662
stock: 6285
product_family:
id: a26c93fe-7113-400b-9376-043bb23776f8
name: 'Bruna Caldeira Valente'
product_brand:
id: a26c93fe-727e-4520-9579-d3fd44f6a5d7
name: 'Madalena Valência'
unit:
id: a26c93fe-73ec-44a2-aef3-0fadcde18375
name: 'Eloá Brito Verdugo'
abbreviation: 'Dr. Sarah Lourenço Ávila'
image:
id: null
url: null
description: 'Magni aperiam cum praesentium aut excepturi ut.'
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: f837f195-fd17-363c-a1de-5e58cb580005
name: 'Sr. Juliano Henrique Rodrigues'
code: PRD-211330
stock: 6165
product_family:
id: a26c93fe-6863-4fd0-a427-4a8cf40c87b2
name: 'Guilherme Feliciano Beltrão'
product_brand:
id: a26c93fe-6af0-4044-b1d8-9d03775aa7f0
name: 'Miguel Pereira'
unit:
id: a26c93fe-6d2a-42f9-a2cd-73fb21a49dd6
name: 'Dr. Mateus Roque'
abbreviation: 'Lorena Roque Jr.'
image:
id: null
url: null
description: 'Excepturi officiis aspernatur velit cum sed aspernatur.'
created_at: null
updated_at: null
-
id: 59592599-a3c5-3bd9-a3b9-27189a568fcd
name: 'Alessandra Delvalle Solano'
code: PRD-708662
stock: 6285
product_family:
id: a26c93fe-7113-400b-9376-043bb23776f8
name: 'Bruna Caldeira Valente'
product_brand:
id: a26c93fe-727e-4520-9579-d3fd44f6a5d7
name: 'Madalena Valência'
unit:
id: a26c93fe-73ec-44a2-aef3-0fadcde18375
name: 'Eloá Brito Verdugo'
abbreviation: 'Dr. Sarah Lourenço Ávila'
image:
id: null
url: null
description: 'Magni aperiam cum praesentium aut excepturi ut.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: f837f195-fd17-363c-a1de-5e58cb580005
name:
type: string
example: 'Sr. Juliano Henrique Rodrigues'
code:
type: string
example: PRD-211330
stock:
type: integer
example: 6165
product_family:
type: object
properties:
id:
type: string
example: a26c93fe-6863-4fd0-a427-4a8cf40c87b2
name:
type: string
example: 'Guilherme Feliciano Beltrão'
product_brand:
type: object
properties:
id:
type: string
example: a26c93fe-6af0-4044-b1d8-9d03775aa7f0
name:
type: string
example: 'Miguel Pereira'
unit:
type: object
properties:
id:
type: string
example: a26c93fe-6d2a-42f9-a2cd-73fb21a49dd6
name:
type: string
example: 'Dr. Mateus Roque'
abbreviation:
type: string
example: 'Lorena Roque Jr.'
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
description:
type: string
example: 'Excepturi officiis aspernatur velit cum sed aspernatur.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 2315c4ba-cfea-3c8b-a22d-5d4695f65840
product_brand_id:
type: string
description: 'Marca do Produto. The uuid of an existing record in the product_brands table.'
example: f02647b4-c5d4-3707-a7b4-a757ff2b8538
unit_id:
type: string
description: 'Unidade. The uuid of an existing record in the units table.'
example: 29f5ef88-7c5e-3d4b-89d0-5a5780f71ea7
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: 16fe956b-39bd-38bd-ad35-f3281308cd2d
name: 'Théo Fonseca Vale'
code: PRD-017647
stock: 752816471
product_family:
id: a26c93fe-7b73-4af9-b355-25890fc05ca2
name: 'Dr. Vitor Mendes Filho'
product_brand:
id: a26c93fe-7d03-410b-9519-19abc2f00cf7
name: 'Sr. César Padilha Pacheco Filho'
unit:
id: a26c93fe-7e88-4afd-a6a8-a4d438626960
name: 'Leonardo Murilo Paes Jr.'
abbreviation: 'Laís Serrano Lira Filho'
image:
id: null
url: null
description: 'Quisquam aut voluptatibus excepturi repellat repellat voluptatem.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 16fe956b-39bd-38bd-ad35-f3281308cd2d
name:
type: string
example: 'Théo Fonseca Vale'
code:
type: string
example: PRD-017647
stock:
type: integer
example: 752816471
product_family:
type: object
properties:
id:
type: string
example: a26c93fe-7b73-4af9-b355-25890fc05ca2
name:
type: string
example: 'Dr. Vitor Mendes Filho'
product_brand:
type: object
properties:
id:
type: string
example: a26c93fe-7d03-410b-9519-19abc2f00cf7
name:
type: string
example: 'Sr. César Padilha Pacheco Filho'
unit:
type: object
properties:
id:
type: string
example: a26c93fe-7e88-4afd-a6a8-a4d438626960
name:
type: string
example: 'Leonardo Murilo Paes Jr.'
abbreviation:
type: string
example: 'Laís Serrano Lira Filho'
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
description:
type: string
example: 'Quisquam aut voluptatibus excepturi repellat repellat voluptatem.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: 35496a95-1e5b-3052-b3cd-7bbd64ae4bf1
product_brand_id:
type: string
description: 'Marca do Produto. The uuid of an existing record in the product_brands table.'
example: ea3f076f-654f-3dad-a595-2d878abf9eb7
unit_id:
type: string
description: 'Unidade. The uuid of an existing record in the units table.'
example: 95c684d7-85b6-3900-a250-810252899b9d
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: nihil
required: true
schema:
type: string
'/api/products/{product}/available-origins':
get:
summary: 'List available origins'
operationId: listAvailableOrigins
description: 'List supplier_products (NF items) with available quantity for the given product, ordered FIFO by NF date.'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Products
parameters:
-
in: path
name: product
description: 'Product UUID'
example: sint
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: exercitationem
required: true
schema:
type: string
'/api/projects/{projectUuid}/versions':
post:
summary: 'Create revision'
operationId: createRevision
description: 'Create a new revision and update the project current file'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'Project Versions'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
notes:
type: string
description: observação.
example: 'Example Notes'
nullable: true
responsible_user_id:
type: string
description: 'responsável. O campo value deve ser um UUID válido. The uuid of an existing record in the users table.'
example: f7a528e7-5f84-3c93-a530-e77f4289a4bf
nullable: true
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'
size:
type: string
description: 'tamanho do arquivo.'
example: 'Example File size'
nullable: true
extension:
type: string
description: 'extensão do arquivo.'
example: 'Example File extension'
nullable: true
required:
- name
required:
- file
get:
summary: 'List revisions'
operationId: listRevisions
description: 'List all revisions of a project'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Project Versions'
parameters:
-
in: path
name: projectUuid
description: 'Project UUID'
example: 47bd0377-2838-30af-ab26-9c0697ea4527
required: true
schema:
type: string
'/api/project-versions/{versionUuid}':
get:
summary: 'Show revision'
operationId: showRevision
description: 'Show a specific revision'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Project Versions'
delete:
summary: 'Delete revision'
operationId: deleteRevision
description: 'Soft delete a revision'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'Project Versions'
parameters:
-
in: path
name: versionUuid
description: 'Revision UUID'
example: cbed6a49-1b4f-3b23-93fd-1d3c31dc3acd
required: true
schema:
type: string
'/api/project-versions/{versionUuid}/download':
get:
summary: 'Download revision'
operationId: downloadRevision
description: 'Generate a signed URL to download a revision'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
url: string
filename: string
size: string
version_number: integer
properties:
url:
type: string
example: string
filename:
type: string
example: string
size:
type: string
example: string
version_number:
type: string
example: integer
tags:
- 'Project Versions'
parameters:
-
in: path
name: versionUuid
description: 'Revision UUID'
example: dacf592e-b8ee-332a-b336-cc63ef33ab16
required: true
schema:
type: string
'/api/project-versions/{versionUuid}/restore':
post:
summary: 'Restore revision'
operationId: restoreRevision
description: 'Restore a revision as the current file'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Project Versions'
parameters:
-
in: path
name: versionUuid
description: 'Revision UUID'
example: 8b8957ff-4dcb-3002-9ad4-20a06c7eb046
required: true
schema:
type: string
/api/projects:
get:
summary: 'List projects'
operationId: listProjects
description: 'List all projects'
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: Elétrico
required: false
schema:
type: string
description: 'Search query.'
example: Elétrico
nullable: true
-
in: query
name: discipline_id
description: 'Filter by discipline UUID. O campo value deve ser um UUID válido. The uuid of an existing record in the disciplines table.'
example: 82189e1d-2eec-3272-aa46-df2da12e0d8c
required: false
schema:
type: string
description: 'Filter by discipline UUID. O campo value deve ser um UUID válido. The uuid of an existing record in the disciplines table.'
example: 82189e1d-2eec-3272-aa46-df2da12e0d8c
nullable: true
-
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: daa5ec8b-c810-310f-a407-9a4fa93d06ba
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: daa5ec8b-c810-310f-a407-9a4fa93d06ba
nullable: true
-
in: query
name: status_id
description: 'Filter by status UUID. O campo value deve ser um UUID válido. The uuid of an existing record in the statuses table.'
example: 3e2ee36a-7cce-3424-8f04-89e3efe6025d
required: false
schema:
type: string
description: 'Filter by status UUID. O campo value deve ser um UUID válido. The uuid of an existing record in the statuses table.'
example: 3e2ee36a-7cce-3424-8f04-89e3efe6025d
nullable: true
-
in: query
name: responsible_id
description: 'Filter by responsible user UUID. O campo value deve ser um UUID válido. The uuid of an existing record in the users table.'
example: c1d8a6d1-0967-3154-9f6d-4a6b0a4b7c14
required: false
schema:
type: string
description: 'Filter by responsible user UUID. O campo value deve ser um UUID válido. The uuid of an existing record in the users table.'
example: c1d8a6d1-0967-3154-9f6d-4a6b0a4b7c14
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 3f69083b-7d39-378c-b2ea-da011e10269f
name: 'Deserunt eos aut'
description: 'Reiciendis nam minima aliquid.'
current_version: 1
file:
path: projects/58ba19ee-541e-3215-88b2-6477b5fce31b.pdf
size: '1756687'
extension: pdf
discipline:
id: a26c9403-a940-4cc4-8548-f736cf811579
name: Et
code: AWW
created_at: null
updated_at: null
-
id: 6acd825a-bebd-3694-a2df-80600005d3e5
name: 'Aliquam reiciendis necessitatibus'
description: 'Aperiam doloribus delectus qui saepe maxime nostrum possimus.'
current_version: 1
file:
path: projects/0388061b-1218-3983-a567-79159d28a9c9.pdf
size: '916449'
extension: pdf
discipline:
id: a26c9403-acff-45b8-92a0-0809ed213f2d
name: Accusamus
code: ZRH
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: 3f69083b-7d39-378c-b2ea-da011e10269f
name: 'Deserunt eos aut'
description: 'Reiciendis nam minima aliquid.'
current_version: 1
file:
path: projects/58ba19ee-541e-3215-88b2-6477b5fce31b.pdf
size: '1756687'
extension: pdf
discipline:
id: a26c9403-a940-4cc4-8548-f736cf811579
name: Et
code: AWW
created_at: null
updated_at: null
-
id: 6acd825a-bebd-3694-a2df-80600005d3e5
name: 'Aliquam reiciendis necessitatibus'
description: 'Aperiam doloribus delectus qui saepe maxime nostrum possimus.'
current_version: 1
file:
path: projects/0388061b-1218-3983-a567-79159d28a9c9.pdf
size: '916449'
extension: pdf
discipline:
id: a26c9403-acff-45b8-92a0-0809ed213f2d
name: Accusamus
code: ZRH
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 3f69083b-7d39-378c-b2ea-da011e10269f
name:
type: string
example: 'Deserunt eos aut'
description:
type: string
example: 'Reiciendis nam minima aliquid.'
current_version:
type: integer
example: 1
file:
type: object
properties:
path:
type: string
example: projects/58ba19ee-541e-3215-88b2-6477b5fce31b.pdf
size:
type: string
example: '1756687'
extension:
type: string
example: pdf
discipline:
type: object
properties:
id:
type: string
example: a26c9403-a940-4cc4-8548-f736cf811579
name:
type: string
example: Et
code:
type: string
example: AWW
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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:
- Projects
post:
summary: 'Create project'
operationId: createProject
description: 'Create a new project and its first revision (R00)'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- Projects
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: nome.
example: 'Example Name'
description:
type: string
description: descrição.
example: 'Example Description'
nullable: true
discipline_id:
type: string
description: 'disciplina. O campo value deve ser um UUID válido. The uuid of an existing record in the disciplines table.'
example: 097962c1-325b-3d72-91b3-fe47f30497cd
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: f7cc537f-c010-3ad4-acfa-12de2b208545
nullable: true
responsible_user_id:
type: string
description: 'responsável. O campo value deve ser um UUID válido. The uuid of an existing record in the users table.'
example: 9b1d7ff9-80e7-36f3-ad99-ad85e84e1595
nullable: true
notes:
type: string
description: observação.
example: 'Example Notes'
nullable: true
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'
size:
type: string
description: 'tamanho do arquivo.'
example: 'Example File size'
nullable: true
extension:
type: string
description: 'extensão do arquivo.'
example: 'Example File extension'
nullable: true
required:
- name
required:
- name
- discipline_id
- file
'/api/projects/{id}':
get:
summary: 'Show project'
operationId: showProject
description: 'Show a project'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 2d102e13-89b2-3142-be61-ed2f66c25ed5
name: 'Enim hic sit'
description: 'Voluptate dolorum quasi est ut rerum debitis unde.'
current_version: 1
file:
path: projects/8ad2725f-a6aa-3185-a183-1f0fdc8a99b3.pdf
size: '1575151'
extension: pdf
discipline:
id: a26c9403-b524-482e-825f-aa1944c56bff
name: Delectus
code: XAG
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 2d102e13-89b2-3142-be61-ed2f66c25ed5
name:
type: string
example: 'Enim hic sit'
description:
type: string
example: 'Voluptate dolorum quasi est ut rerum debitis unde.'
current_version:
type: integer
example: 1
file:
type: object
properties:
path:
type: string
example: projects/8ad2725f-a6aa-3185-a183-1f0fdc8a99b3.pdf
size:
type: string
example: '1575151'
extension:
type: string
example: pdf
discipline:
type: object
properties:
id:
type: string
example: a26c9403-b524-482e-825f-aa1944c56bff
name:
type: string
example: Delectus
code:
type: string
example: XAG
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- Projects
put:
summary: 'Update project'
operationId: updateProject
description: 'Update a project (metadata only)'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- Projects
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: nome.
example: 'Example Name'
description:
type: string
description: descrição.
example: 'Example Description'
nullable: true
discipline_id:
type: string
description: 'disciplina. O campo value deve ser um UUID válido. The uuid of an existing record in the disciplines table.'
example: 2d9eb9fd-0ab8-330c-82d3-3f33d5710798
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: 529c48d4-095f-3248-9d05-6251f428d0fc
nullable: true
responsible_user_id:
type: string
description: 'responsável. O campo value deve ser um UUID válido. The uuid of an existing record in the users table.'
example: c19f6955-5beb-397c-ad42-5775ab4bae29
nullable: true
status_id:
type: string
description: 'situação. O campo value deve ser um UUID válido. The uuid of an existing record in the statuses table.'
example: d7ce3786-9885-3af8-a674-561c8035fdf5
nullable: true
parameters:
-
in: path
name: id
description: 'The ID of the project.'
example: 20
required: true
schema:
type: integer
-
in: path
name: project
description: 'Project UUID'
example: est
required: true
schema:
type: string
'/api/projects/{project}':
delete:
summary: 'Delete project'
operationId: deleteProject
description: 'Delete a project and its revisions'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Projects
parameters:
-
in: path
name: project
description: 'Project UUID'
example: sequi
required: true
schema:
type: string
/api/reports/daily-log:
get:
summary: 'Generate RDO PDF'
operationId: generateRDOPDF
description: 'Dispatches async PDF generation. Frontend receives notification via Pusher when ready.'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Reports
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
daily_log:
type: string
description: 'The uuid of an existing record in the daily_logs table.'
example: quia
required:
- daily_log
/api/reports/epi-term:
get:
summary: 'Generate EPI term PDF'
operationId: generateEPITermPDF
description: 'Dispatches async PDF generation. Frontend receives notification via Pusher when ready.'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Reports
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
employee:
type: string
description: 'The uuid of an existing record in the employees table.'
example: quia
kit_uuid:
type: string
description: 'O campo value deve ser um UUID válido.'
example: 6cddc606-683c-3aea-b74f-36b69055ec89
required:
- employee
- kit_uuid
/api/reports/cash-flow/excel:
get:
summary: 'Export Cash Flow to Excel'
operationId: exportCashFlowToExcel
description: 'Dispatches async Excel generation. Frontend receives notification via Pusher when ready.'
parameters:
-
in: query
name: q
description: ''
example: sit
required: false
schema:
type: string
description: ''
example: sit
nullable: true
-
in: query
name: type
description: 'Tipo de lançamento.'
example: entrada
required: false
schema:
type: string
description: 'Tipo de lançamento.'
example: entrada
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
- 'ajuste saída'
nullable: true
-
in: query
name: description
description: ''
example: 'Cumque autem et ducimus sapiente sed accusamus quisquam.'
required: false
schema:
type: string
description: ''
example: 'Cumque autem et ducimus sapiente sed accusamus quisquam.'
nullable: true
-
in: query
name: categories
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- 728065ae-054e-3ef1-b56b-76ab5e1b5556
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- 728065ae-054e-3ef1-b56b-76ab5e1b5556
items:
type: string
-
in: query
name: exclude_categories
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- a9a74b50-baf0-3162-aea6-a59e3c41e9af
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- a9a74b50-baf0-3162-aea6-a59e3c41e9af
items:
type: string
-
in: query
name: date_start
description: 'Início do período (data). O campo value deve ser uma data válida.'
example: '2026-01-01'
required: false
schema:
type: string
description: 'Início do período (data). O campo value deve ser uma data válida.'
example: '2026-01-01'
nullable: true
-
in: query
name: date_end
description: 'Fim do período (data). O campo value deve ser uma data válida.'
example: '2026-12-31'
required: false
schema:
type: string
description: 'Fim do período (data). O campo value deve ser uma data válida.'
example: '2026-12-31'
nullable: true
-
in: query
name: bank_accounts
description: 'O campo value deve ser um UUID válido.'
example:
- 3a189b47-1605-3f2d-b626-2473bd8af93f
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- 3a189b47-1605-3f2d-b626-2473bd8af93f
items:
type: string
-
in: query
name: customers
description: 'O campo value deve ser um UUID válido.'
example:
- 4e1609f5-063a-30b4-8edc-cc0d032c0f32
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- 4e1609f5-063a-30b4-8edc-cc0d032c0f32
items:
type: string
-
in: query
name: suppliers
description: 'O campo value deve ser um UUID válido.'
example:
- 2ab3b7c6-0fa2-3aff-9d47-debf36a500f2
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- 2ab3b7c6-0fa2-3aff-9d47-debf36a500f2
items:
type: string
-
in: query
name: cash_session
description: 'O campo value deve ser um UUID válido.'
example: 50d922db-b32f-362f-b887-e1829495f6a3
required: false
schema:
type: string
description: 'O campo value deve ser um UUID válido.'
example: 50d922db-b32f-362f-b887-e1829495f6a3
nullable: true
-
in: query
name: works
description: 'O campo value deve ser um UUID válido.'
example:
- aff93d5e-deda-3ec1-ba97-1f1a92bc97ca
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- aff93d5e-deda-3ec1-ba97-1f1a92bc97ca
items:
type: string
-
in: query
name: url
description: ''
example: null
required: false
schema:
type: string
description: ''
example: null
-
in: query
name: base64
description: ''
example: null
required: false
schema:
type: string
description: ''
example: null
-
in: query
name: aba_unica
description: ''
example: null
required: false
schema:
type: string
description: ''
example: null
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Reports
/api/reports/cash-flow:
get:
summary: ''
operationId: getApiReportsCashFlow
description: ''
parameters:
-
in: query
name: q
description: ''
example: ipsam
required: false
schema:
type: string
description: ''
example: ipsam
nullable: true
-
in: query
name: type
description: 'Tipo de lançamento.'
example: entrada
required: false
schema:
type: string
description: 'Tipo de lançamento.'
example: entrada
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
- 'ajuste saída'
nullable: true
-
in: query
name: description
description: ''
example: 'Omnis odio libero blanditiis molestias incidunt sed reprehenderit rerum.'
required: false
schema:
type: string
description: ''
example: 'Omnis odio libero blanditiis molestias incidunt sed reprehenderit rerum.'
nullable: true
-
in: query
name: categories
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- fc8ce598-63ea-3281-9e3e-25dbbbbba1e3
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- fc8ce598-63ea-3281-9e3e-25dbbbbba1e3
items:
type: string
-
in: query
name: exclude_categories
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- 45a7b051-222b-376d-bf06-19f7b994ba09
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- 45a7b051-222b-376d-bf06-19f7b994ba09
items:
type: string
-
in: query
name: date_start
description: 'Início do período (data). O campo value deve ser uma data válida.'
example: '2026-01-01'
required: false
schema:
type: string
description: 'Início do período (data). O campo value deve ser uma data válida.'
example: '2026-01-01'
nullable: true
-
in: query
name: date_end
description: 'Fim do período (data). O campo value deve ser uma data válida.'
example: '2026-12-31'
required: false
schema:
type: string
description: 'Fim do período (data). O campo value deve ser uma data válida.'
example: '2026-12-31'
nullable: true
-
in: query
name: bank_accounts
description: 'O campo value deve ser um UUID válido.'
example:
- 990de134-be9d-393c-ab29-6f0a868d048c
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- 990de134-be9d-393c-ab29-6f0a868d048c
items:
type: string
-
in: query
name: customers
description: 'O campo value deve ser um UUID válido.'
example:
- e4e59bdb-dbbe-35f6-ab29-30e5950fc6cc
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- e4e59bdb-dbbe-35f6-ab29-30e5950fc6cc
items:
type: string
-
in: query
name: suppliers
description: 'O campo value deve ser um UUID válido.'
example:
- 04722383-67b0-34fd-97b9-19ed32e98342
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- 04722383-67b0-34fd-97b9-19ed32e98342
items:
type: string
-
in: query
name: cash_session
description: 'O campo value deve ser um UUID válido.'
example: ffc3e52c-a45b-3bac-99c4-69acf534937a
required: false
schema:
type: string
description: 'O campo value deve ser um UUID válido.'
example: ffc3e52c-a45b-3bac-99c4-69acf534937a
nullable: true
-
in: query
name: works
description: 'O campo value deve ser um UUID válido.'
example:
- 44e5eb13-26fa-39d1-b075-900552d87ce1
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- 44e5eb13-26fa-39d1-b075-900552d87ce1
items:
type: string
-
in: query
name: url
description: ''
example: null
required: false
schema:
type: string
description: ''
example: null
-
in: query
name: base64
description: ''
example: null
required: false
schema:
type: string
description: ''
example: null
-
in: query
name: aba_unica
description: ''
example: null
required: false
schema:
type: string
description: ''
example: null
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Reports
security: []
/api/reports/accounts-payable-receivable/excel:
get:
summary: 'Export Accounts Payable/Receivable to Excel'
operationId: exportAccountsPayableReceivableToExcel
description: 'Dispatches async Excel generation. Frontend receives notification via Pusher when ready.'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Reports
/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:
- Reports
security: []
/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: d9a98b9a-65b1-3e92-ac2c-5a5f1db1d499
name: 'quas laudantium'
slug: null
description: 'Cupiditate qui eius enim et qui quod quam et. In reiciendis quo eos numquam sunt unde est quaerat. Voluptas vel rem aliquid inventore vero. Ut ex ut voluptatibus voluptatem exercitationem vel.'
abbreviation: vtb
created_at: null
updated_at: null
-
id: b2257361-7b4d-3f91-806c-c3f98c6fd970
name: 'distinctio repudiandae'
slug: null
description: null
abbreviation: mil
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: d9a98b9a-65b1-3e92-ac2c-5a5f1db1d499
name: 'quas laudantium'
slug: null
description: 'Cupiditate qui eius enim et qui quod quam et. In reiciendis quo eos numquam sunt unde est quaerat. Voluptas vel rem aliquid inventore vero. Ut ex ut voluptatibus voluptatem exercitationem vel.'
abbreviation: vtb
created_at: null
updated_at: null
-
id: b2257361-7b4d-3f91-806c-c3f98c6fd970
name: 'distinctio repudiandae'
slug: null
description: null
abbreviation: mil
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: d9a98b9a-65b1-3e92-ac2c-5a5f1db1d499
name:
type: string
example: 'quas laudantium'
slug:
type: string
example: null
nullable: true
description:
type: string
example: 'Cupiditate qui eius enim et qui quod quam et. In reiciendis quo eos numquam sunt unde est quaerat. Voluptas vel rem aliquid inventore vero. Ut ex ut voluptatibus voluptatem exercitationem vel.'
abbreviation:
type: string
example: vtb
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 79d8605b-036f-30cc-b6ad-b2c6fcdf1ca7
name: 'iure qui'
slug: null
description: null
abbreviation: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 79d8605b-036f-30cc-b6ad-b2c6fcdf1ca7
name:
type: string
example: 'iure qui'
slug:
type: string
example: null
nullable: true
description:
type: string
example: null
nullable: true
abbreviation:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: 3
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: cbbd4042-1d0a-3797-84f7-723ce1cad390
name: 'Dr. Lauryn Kassulke'
username: ztoy
email: hester.daniel@example.org
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
-
id: fd9979ec-654b-3908-841c-827c89ef67f0
name: 'Joyce Reichel'
username: pwilkinson
email: tbernier@example.net
certification: null
crea: null
last_login_at: null
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: cbbd4042-1d0a-3797-84f7-723ce1cad390
name: 'Dr. Lauryn Kassulke'
username: ztoy
email: hester.daniel@example.org
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
-
id: fd9979ec-654b-3908-841c-827c89ef67f0
name: 'Joyce Reichel'
username: pwilkinson
email: tbernier@example.net
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
items:
type: object
properties:
id:
type: string
example: cbbd4042-1d0a-3797-84f7-723ce1cad390
name:
type: string
example: 'Dr. Lauryn Kassulke'
username:
type: string
example: ztoy
email:
type: string
example: hester.daniel@example.org
certification:
type: string
example: null
nullable: true
crea:
type: string
example: null
nullable: true
last_login_at:
type: string
example: null
nullable: true
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
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
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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:
- 366d589d-c606-3b7c-950b-7d8ab59c53c2
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:
- 905b6872-f3b4-3f4e-b0d1-6f7e32dcae9d
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:
- dc9f651a-7f1a-30cb-ad33-59bcd4a3425e
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: 'ex explicabo'
slug: enim-inventore-voluptas-animi-aut-quae-voluptate-vitae
-
name: 'laborum sed'
slug: eum-voluptas-recusandae-hic-atque-autem
properties:
data:
type: array
example:
-
name: 'ex explicabo'
slug: enim-inventore-voluptas-animi-aut-quae-voluptate-vitae
-
name: 'laborum sed'
slug: eum-voluptas-recusandae-hic-atque-autem
items:
type: object
properties:
name:
type: string
example: 'ex explicabo'
slug:
type: string
example: enim-inventore-voluptas-animi-aut-quae-voluptate-vitae
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: 7948507e-1804-3d55-a37c-ee3b97eae6e4
slug: null
name: null
description: 'Dayana Galhardo Soares'
abbreviation: quae
color: '#6da692'
text_color: '#dd2e96'
created_at: null
updated_at: null
-
id: b87998a8-0fdb-3e4d-bafd-38a83974bdde
slug: null
name: null
description: 'Betina Verdara Marés'
abbreviation: ut
color: '#0670d5'
text_color: '#63e55e'
module:
name: Obras
slug: work
created_at: null
updated_at: null
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: 7948507e-1804-3d55-a37c-ee3b97eae6e4
slug: null
name: null
description: 'Dayana Galhardo Soares'
abbreviation: quae
color: '#6da692'
text_color: '#dd2e96'
created_at: null
updated_at: null
-
id: b87998a8-0fdb-3e4d-bafd-38a83974bdde
slug: null
name: null
description: 'Betina Verdara Marés'
abbreviation: ut
color: '#0670d5'
text_color: '#63e55e'
module:
name: Obras
slug: work
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 7948507e-1804-3d55-a37c-ee3b97eae6e4
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Dayana Galhardo Soares'
abbreviation:
type: string
example: quae
color:
type: string
example: '#6da692'
text_color:
type: string
example: '#dd2e96'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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:
slug:
type: string
description: 'Slug. O campo value não pode ser superior a 100 caracteres.'
example: 'Example Slug'
nullable: true
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. 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: 47b1c751-df54-3ecf-ba25-f87aaf31debb
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: true
nullable: true
is_final:
type: boolean
description: 'Status final.'
example: true
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: de805c14-ef87-3878-9ec5-65afabc34569
slug: null
name: null
description: 'Dr. Flor Arruda'
abbreviation: ex
color: '#141e89'
text_color: '#d51dc0'
module:
name: 'Solicitação de Produtos'
slug: product_request
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: de805c14-ef87-3878-9ec5-65afabc34569
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Dr. Flor Arruda'
abbreviation:
type: string
example: ex
color:
type: string
example: '#141e89'
text_color:
type: string
example: '#d51dc0'
module:
type: object
properties:
name:
type: string
example: 'Solicitação de Produtos'
slug:
type: string
example: product_request
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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:
slug:
type: string
description: 'Slug. O campo value não pode ser superior a 100 caracteres.'
example: 'Example Slug'
nullable: true
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. 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: d0955c09-2cf7-3cb9-9cd5-34a26cbfab8e
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: true
is_final:
type: boolean
description: 'Status final.'
example: true
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: 58f83f21-dcf3-31df-bb6f-c8e7228777a6
quantity: 532.0627
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: 54bce805-be64-340d-b4a5-11fa068730f6
quantity: 875.0796
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: 58f83f21-dcf3-31df-bb6f-c8e7228777a6
quantity: 532.0627
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: 54bce805-be64-340d-b4a5-11fa068730f6
quantity: 875.0796
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: 58f83f21-dcf3-31df-bb6f-c8e7228777a6
quantity:
type: number
example: 532.0627
min_quantity:
type: string
example: null
nullable: true
max_quantity:
type: string
example: null
nullable: true
below_minimum:
type: boolean
example: false
above_maximum:
type: boolean
example: false
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: 21753fea-9950-3818-918c-35ab3f994089
name: 'Estoque Ávila-Bonilha'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
-
id: 8421417a-2cd0-3a19-b4e2-52d7ed80e7a2
name: 'Estoque de Souza e Rezende'
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: 21753fea-9950-3818-918c-35ab3f994089
name: 'Estoque Ávila-Bonilha'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
-
id: 8421417a-2cd0-3a19-b4e2-52d7ed80e7a2
name: 'Estoque de Souza e Rezende'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 21753fea-9950-3818-918c-35ab3f994089
name:
type: string
example: 'Estoque Ávila-Bonilha'
module:
type: string
example: work
is_active:
type: boolean
example: true
is_main:
type: boolean
example: false
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 1c90b30f-e508-37ff-907a-e001ddda0b5e
name: 'Estoque Galvão e de Arruda'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 1c90b30f-e508-37ff-907a-e001ddda0b5e
name:
type: string
example: 'Estoque Galvão e de Arruda'
module:
type: string
example: work
is_active:
type: boolean
example: true
is_main:
type: boolean
example: false
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: true
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: 9a0b5ee2-2113-3b4d-99b1-1243f9fc2da2
name: 'Estoque de Aguiar e Associados'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 9a0b5ee2-2113-3b4d-99b1-1243f9fc2da2
name:
type: string
example: 'Estoque de Aguiar e Associados'
module:
type: string
example: work
is_active:
type: boolean
example: true
is_main:
type: boolean
example: false
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: bedf7b15-cdc7-30bc-8755-7dfc1d71cdf8
name: 'Estoque Rivera e Reis'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: bedf7b15-cdc7-30bc-8755-7dfc1d71cdf8
name:
type: string
example: 'Estoque Rivera e Reis'
module:
type: string
example: work
is_active:
type: boolean
example: true
is_main:
type: boolean
example: false
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: ec28d10e-99ed-3cc7-9fbe-7a5a4515ca66
name: 'Estoque Torres Comercial Ltda.'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: ec28d10e-99ed-3cc7-9fbe-7a5a4515ca66
name:
type: string
example: 'Estoque Torres Comercial Ltda.'
module:
type: string
example: work
is_active:
type: boolean
example: true
is_main:
type: boolean
example: false
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: true
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: d8aff686-0fe0-31e4-ad10-95d0419dcd26
quantity: 41.8956
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: daa51beb-94c0-3de0-9d03-e76c2a69b5ae
quantity: 18.9765
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: d8aff686-0fe0-31e4-ad10-95d0419dcd26
quantity: 41.8956
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: daa51beb-94c0-3de0-9d03-e76c2a69b5ae
quantity: 18.9765
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: d8aff686-0fe0-31e4-ad10-95d0419dcd26
quantity:
type: number
example: 41.8956
min_quantity:
type: string
example: null
nullable: true
max_quantity:
type: string
example: null
nullable: true
below_minimum:
type: boolean
example: false
above_maximum:
type: boolean
example: false
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: c97c93ea-0569-3178-a912-b36f6a5752f9
quantity: 603.1837
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: c97c93ea-0569-3178-a912-b36f6a5752f9
quantity:
type: number
example: 603.1837
min_quantity:
type: string
example: null
nullable: true
max_quantity:
type: string
example: null
nullable: true
below_minimum:
type: boolean
example: false
above_maximum:
type: boolean
example: false
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: atque
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
total_value: 18750.4
current_value: 9000
consumed_value: 9750.4
unvalued_quantity: 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
total_value:
type: number
example: 18750.4
current_value:
type: integer
example: 9000
consumed_value:
type: number
example: 9750.4
unvalued_quantity:
type: integer
example: 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: 8366dde0-28d3-33bd-8766-bd23576030c4
code: MOV-065851
type: compra
type_name: PURCHASE
is_entry: true
is_exit: false
quantity: 85.252
previous_quantity: 830.505
new_quantity: 915.757
reason: null
movement_date: '2026-08-01T18:45:52.000000Z'
created_at: null
-
id: d545c7a4-4e0f-3266-8fe9-379e9ac54fe5
code: MOV-767502
type: vencido
type_name: EXPIRED
is_entry: false
is_exit: true
quantity: 94.4874
previous_quantity: 479.2046
new_quantity: 384.7172
reason: 'Voluptas atque laborum et.'
movement_date: '2026-07-08T14:50:54.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: 8366dde0-28d3-33bd-8766-bd23576030c4
code: MOV-065851
type: compra
type_name: PURCHASE
is_entry: true
is_exit: false
quantity: 85.252
previous_quantity: 830.505
new_quantity: 915.757
reason: null
movement_date: '2026-08-01T18:45:52.000000Z'
created_at: null
-
id: d545c7a4-4e0f-3266-8fe9-379e9ac54fe5
code: MOV-767502
type: vencido
type_name: EXPIRED
is_entry: false
is_exit: true
quantity: 94.4874
previous_quantity: 479.2046
new_quantity: 384.7172
reason: 'Voluptas atque laborum et.'
movement_date: '2026-07-08T14:50:54.000000Z'
created_at: null
items:
type: object
properties:
id:
type: string
example: 8366dde0-28d3-33bd-8766-bd23576030c4
code:
type: string
example: MOV-065851
type:
type: string
example: compra
type_name:
type: string
example: PURCHASE
is_entry:
type: boolean
example: true
is_exit:
type: boolean
example: false
quantity:
type: number
example: 85.252
previous_quantity:
type: number
example: 830.505
new_quantity:
type: number
example: 915.757
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-08-01T18:45:52.000000Z'
created_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 1e153473-cefc-3f40-a0ac-facaf42000e3
code: MOV-526641
type: devolução
type_name: RETURN
is_entry: true
is_exit: false
quantity: 9.3293
previous_quantity: 763.7988
new_quantity: 773.1281
reason: null
movement_date: '2026-07-30T07:51:07.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 1e153473-cefc-3f40-a0ac-facaf42000e3
code:
type: string
example: MOV-526641
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: 9.3293
previous_quantity:
type: number
example: 763.7988
new_quantity:
type: number
example: 773.1281
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-07-30T07:51:07.000000Z'
created_at:
type: string
example: null
nullable: true
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: 79c3e8e4-05dc-3d1d-bc94-5fd4a479a18a
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: 8b813f4a-9c6c-3266-9de9-f06a6535f152
code: MOV-775790
type: 'entrada transferência'
type_name: TRANSFER_IN
is_entry: true
is_exit: false
quantity: 60.9615
previous_quantity: 360.2432
new_quantity: 421.2047
reason: null
movement_date: '2026-08-04T15:14:26.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 8b813f4a-9c6c-3266-9de9-f06a6535f152
code:
type: string
example: MOV-775790
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: 60.9615
previous_quantity:
type: number
example: 360.2432
new_quantity:
type: number
example: 421.2047
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-08-04T15:14:26.000000Z'
created_at:
type: string
example: null
nullable: true
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: 7b9297ba-3703-3d9a-8b98-13b1f5b0906e
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: 005d531e-0163-35a1-be31-9fa69022aec3
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: e0e0b90a-1fa5-327a-881e-fdf360caf86a
code: MOV-655669
type: consumo
type_name: CONSUMPTION
is_entry: false
is_exit: true
quantity: 21.756
previous_quantity: 489.412
new_quantity: 467.656
reason: null
movement_date: '2026-08-04T08:07:02.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: e0e0b90a-1fa5-327a-881e-fdf360caf86a
code:
type: string
example: MOV-655669
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: 21.756
previous_quantity:
type: number
example: 489.412
new_quantity:
type: number
example: 467.656
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-08-04T08:07:02.000000Z'
created_at:
type: string
example: null
nullable: true
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: 88bfcc51-2eb2-327a-a7a5-7195e02c8a3a
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: 17326699-77a2-383c-93dd-ac008ec00b40
code: MOV-840805
type: vencido
type_name: EXPIRED
is_entry: false
is_exit: true
quantity: 76.343
previous_quantity: 839.6726
new_quantity: 763.3296
reason: null
movement_date: '2026-07-28T17:21:08.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 17326699-77a2-383c-93dd-ac008ec00b40
code:
type: string
example: MOV-840805
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: 76.343
previous_quantity:
type: number
example: 839.6726
new_quantity:
type: number
example: 763.3296
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-07-28T17:21:08.000000Z'
created_at:
type: string
example: null
nullable: true
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: e44cb042-e8b6-353f-babb-8b33736956e4
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: 2322fe0f-bda9-3d26-b24d-4ce5df888167
code: MOV-380120
type: 'ajuste saída'
type_name: ADJUSTMENT_OUT
is_entry: false
is_exit: true
quantity: 87.0391
previous_quantity: 665.6095
new_quantity: 578.5704
reason: 'Facilis harum debitis ab nostrum.'
movement_date: '2026-07-18T17:37:27.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 2322fe0f-bda9-3d26-b24d-4ce5df888167
code:
type: string
example: MOV-380120
type:
type: string
example: 'ajuste saída'
type_name:
type: string
example: ADJUSTMENT_OUT
is_entry:
type: boolean
example: false
is_exit:
type: boolean
example: true
quantity:
type: number
example: 87.0391
previous_quantity:
type: number
example: 665.6095
new_quantity:
type: number
example: 578.5704
reason:
type: string
example: 'Facilis harum debitis ab nostrum.'
movement_date:
type: string
example: '2026-07-18T17:37:27.000000Z'
created_at:
type: string
example: null
nullable: true
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: 1c2dead9-11f2-3281-aac3-70ae834a9879
name: 'Sra. Elisa Mirella Ramires'
email: fassuncao@example.org
phone: '(96) 99424-6178'
document: 04.035.957/0001-24
type: pf
responsible: 'Sra. Ruth Léia Oliveira Neto'
image:
id: null
url: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
-
id: 28c86dde-b743-35cb-bb8f-7694ba7d38cd
name: 'Maraisa Deverso Jr.'
email: eric80@example.com
phone: '(65) 96052-5731'
document: 80.204.456/0001-02
type: pj
responsible: 'Dr. Walter Molina Lira 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: 1c2dead9-11f2-3281-aac3-70ae834a9879
name: 'Sra. Elisa Mirella Ramires'
email: fassuncao@example.org
phone: '(96) 99424-6178'
document: 04.035.957/0001-24
type: pf
responsible: 'Sra. Ruth Léia Oliveira Neto'
image:
id: null
url: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
-
id: 28c86dde-b743-35cb-bb8f-7694ba7d38cd
name: 'Maraisa Deverso Jr.'
email: eric80@example.com
phone: '(65) 96052-5731'
document: 80.204.456/0001-02
type: pj
responsible: 'Dr. Walter Molina Lira 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: 1c2dead9-11f2-3281-aac3-70ae834a9879
name:
type: string
example: 'Sra. Elisa Mirella Ramires'
email:
type: string
example: fassuncao@example.org
phone:
type: string
example: '(96) 99424-6178'
document:
type: string
example: 04.035.957/0001-24
type:
type: string
example: pf
responsible:
type: string
example: 'Sra. Ruth Léia Oliveira Neto'
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
address:
type: object
properties:
street:
type: string
example: null
nullable: true
number:
type: string
example: null
nullable: true
complement:
type: string
example: null
nullable: true
neighborhood:
type: string
example: null
nullable: true
city:
type: string
example: null
nullable: true
state:
type: string
example: null
nullable: true
zip_code:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 2a6d1efc-a78d-35c0-925f-6a1a3ce65ef3
name: 'Everton Gian Marés Filho'
email: meireles.paulo@example.com
phone: '(77) 98551-2489'
document: 57.597.442/0001-84
type: pj
responsible: 'Dr. Gabrielly Godói'
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: 2a6d1efc-a78d-35c0-925f-6a1a3ce65ef3
name:
type: string
example: 'Everton Gian Marés Filho'
email:
type: string
example: meireles.paulo@example.com
phone:
type: string
example: '(77) 98551-2489'
document:
type: string
example: 57.597.442/0001-84
type:
type: string
example: pj
responsible:
type: string
example: 'Dr. Gabrielly Godói'
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
address:
type: object
properties:
street:
type: string
example: null
nullable: true
number:
type: string
example: null
nullable: true
complement:
type: string
example: null
nullable: true
neighborhood:
type: string
example: null
nullable: true
city:
type: string
example: null
nullable: true
state:
type: string
example: null
nullable: true
zip_code:
type: string
example: null
nullable: true
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: 1
required: true
schema:
type: integer
-
in: path
name: supplier
description: 'Supplier ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/suppliers/{supplier}':
delete:
summary: 'Delete supplier'
operationId: deleteSupplier
description: 'Delete a supplier'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Suppliers
parameters:
-
in: path
name: supplier
description: 'Supplier ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
/api/system-types:
get:
summary: 'System Types'
operationId: systemTypes
description: 'Get the system types'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
bankAccountTypes:
key: value
fileTypes:
key: value
legalEntityTypes:
key: value
transactionTypes:
key: value
properties:
data:
type: object
properties:
bankAccountTypes:
type: object
properties:
key:
type: string
example: value
fileTypes:
type: object
properties:
key:
type: string
example: value
legalEntityTypes:
type: object
properties:
key:
type: string
example: value
transactionTypes:
type: object
properties:
key:
type: string
example: value
tags:
- 'System Types'
/api/transaction-categories:
get:
summary: 'List transaction categories'
operationId: listTransactionCategories
description: 'List all transaction categories'
parameters:
-
in: query
name: 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
- 'ajuste saída'
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 3e440c82-5291-3a99-b3d1-e586aefa2a00
name: 'Sra. Franciele Montenegro Padrão'
description: 'Sed ullam facere consequuntur et a illum et. Necessitatibus quis tenetur voluptatem ex qui in reprehenderit. Minus voluptas ad dolorem. Vel ad voluptatem quia dolores ea et.'
type: ajuste
-
id: d2e88cbc-9884-365d-9dab-3e42ebbd3c8c
name: 'Sra. Priscila Marés Marés'
description: 'Eveniet inventore delectus quasi ut laudantium consequatur et. Consequatur ea ut est ipsam omnis. Exercitationem veniam alias eligendi doloremque amet sunt earum aut. Sed et provident ut iure ut.'
type: juros
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: 3e440c82-5291-3a99-b3d1-e586aefa2a00
name: 'Sra. Franciele Montenegro Padrão'
description: 'Sed ullam facere consequuntur et a illum et. Necessitatibus quis tenetur voluptatem ex qui in reprehenderit. Minus voluptas ad dolorem. Vel ad voluptatem quia dolores ea et.'
type: ajuste
-
id: d2e88cbc-9884-365d-9dab-3e42ebbd3c8c
name: 'Sra. Priscila Marés Marés'
description: 'Eveniet inventore delectus quasi ut laudantium consequatur et. Consequatur ea ut est ipsam omnis. Exercitationem veniam alias eligendi doloremque amet sunt earum aut. Sed et provident ut iure ut.'
type: juros
items:
type: object
properties:
id:
type: string
example: 3e440c82-5291-3a99-b3d1-e586aefa2a00
name:
type: string
example: 'Sra. Franciele Montenegro Padrão'
description:
type: string
example: 'Sed ullam facere consequuntur et a illum et. Necessitatibus quis tenetur voluptatem ex qui in reprehenderit. Minus voluptas ad dolorem. Vel ad voluptatem quia dolores ea et.'
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
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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
- 'ajuste saída'
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: 7a0bdcd2-e706-3597-9031-1a693d497f67
name: 'Sra. Josefina Tessália Estrada'
description: 'Reprehenderit maxime maxime harum rem quo itaque consequatur. Corporis necessitatibus sit magnam quis. Facilis soluta rerum animi nam. Nesciunt porro tempore beatae ab voluptatibus rerum.'
type: ajuste
properties:
data:
type: object
properties:
id:
type: string
example: 7a0bdcd2-e706-3597-9031-1a693d497f67
name:
type: string
example: 'Sra. Josefina Tessália Estrada'
description:
type: string
example: 'Reprehenderit maxime maxime harum rem quo itaque consequatur. Corporis necessitatibus sit magnam quis. Facilis soluta rerum animi nam. Nesciunt porro tempore beatae ab voluptatibus rerum.'
type:
type: string
example: ajuste
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
- 'ajuste saída'
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: et
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: 3eb19250-7b22-39c4-8cbf-06249346c619
name: 'Sr. Moisés David Marinho Neto'
abbreviation: 'Dr. Michael Estrada Neto'
description: 'Ipsum aperiam et autem.'
created_at: null
updated_at: null
-
id: b72e9d6d-c0d7-36a2-be48-b11995f595a9
name: 'Ana Franciele Carmona'
abbreviation: 'Dr. Richard Delvalle Galvão'
description: 'Dolores tenetur cum non odio.'
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: 3eb19250-7b22-39c4-8cbf-06249346c619
name: 'Sr. Moisés David Marinho Neto'
abbreviation: 'Dr. Michael Estrada Neto'
description: 'Ipsum aperiam et autem.'
created_at: null
updated_at: null
-
id: b72e9d6d-c0d7-36a2-be48-b11995f595a9
name: 'Ana Franciele Carmona'
abbreviation: 'Dr. Richard Delvalle Galvão'
description: 'Dolores tenetur cum non odio.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 3eb19250-7b22-39c4-8cbf-06249346c619
name:
type: string
example: 'Sr. Moisés David Marinho Neto'
abbreviation:
type: string
example: 'Dr. Michael Estrada Neto'
description:
type: string
example: 'Ipsum aperiam et autem.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: dbff83db-df9d-3998-9e04-c05e110163cc
name: 'Julieta Luna Urias'
abbreviation: 'Bella Branco Valente'
description: 'Natus officiis ipsam et quos.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: dbff83db-df9d-3998-9e04-c05e110163cc
name:
type: string
example: 'Julieta Luna Urias'
abbreviation:
type: string
example: 'Bella Branco Valente'
description:
type: string
example: 'Natus officiis ipsam et quos.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: quae
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: in
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: e7bb8253-914f-3b09-8464-07b659aff213
name: 'Maya Kohler'
username: gudrun21
email: kenna48@example.com
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
-
id: 71162d40-eb34-3545-948c-44d1e34f16e7
name: 'Haylee Murray Jr.'
username: zwyman
email: twila78@example.com
certification: null
crea: null
last_login_at: null
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: e7bb8253-914f-3b09-8464-07b659aff213
name: 'Maya Kohler'
username: gudrun21
email: kenna48@example.com
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
-
id: 71162d40-eb34-3545-948c-44d1e34f16e7
name: 'Haylee Murray Jr.'
username: zwyman
email: twila78@example.com
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
items:
type: object
properties:
id:
type: string
example: e7bb8253-914f-3b09-8464-07b659aff213
name:
type: string
example: 'Maya Kohler'
username:
type: string
example: gudrun21
email:
type: string
example: kenna48@example.com
certification:
type: string
example: null
nullable: true
crea:
type: string
example: null
nullable: true
last_login_at:
type: string
example: null
nullable: true
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
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
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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'
certification:
type: string
description: 'Certificação. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Certification'
nullable: true
crea:
type: string
description: 'CREA. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Crea'
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
username:
type: string
description: Usuário.
example: hegmann.pablo
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:
- c51d0d31-b583-387e-b2fe-5faec223571d
items:
type: string
roles:
type: array
description: 'UUID da função. The uuid of an existing record in the roles table.'
example:
- 92670d44-0e54-34cc-815d-41de78e5a716
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: 53e6df48-2b0f-3db1-8b4e-33392f196441
name: 'Stuart Bins PhD'
username: fcartwright
email: adalberto.cormier@example.org
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
properties:
data:
type: object
properties:
id:
type: string
example: 53e6df48-2b0f-3db1-8b4e-33392f196441
name:
type: string
example: 'Stuart Bins PhD'
username:
type: string
example: fcartwright
email:
type: string
example: adalberto.cormier@example.org
certification:
type: string
example: null
nullable: true
crea:
type: string
example: null
nullable: true
last_login_at:
type: string
example: null
nullable: true
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
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'
certification:
type: string
description: 'Certificação. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Certification'
nullable: true
crea:
type: string
description: 'CREA. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Crea'
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
username:
type: string
description: Usuário.
example: stokes.jaida
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:
- 7319d8c2-b8ed-3c84-a94f-a9b2c474e1c4
items:
type: string
roles:
type: array
description: 'UUID da função. The uuid of an existing record in the roles table.'
example:
- 058d9fa3-4d70-3508-a4cb-0c08a8d96ac1
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:
- 09d72f59-805b-3022-8ea4-876ec79f3e64
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: 'Voluptatem qui ab dicta quis culpa.'
-
id: null
name: fugiat
display_name: 'Consequatur quos quas rerum sequi.'
properties:
data:
type: array
example:
-
id: null
name: sit
display_name: 'Voluptatem qui ab dicta quis culpa.'
-
id: null
name: fugiat
display_name: 'Consequatur quos quas rerum sequi.'
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: sit
display_name:
type: string
example: 'Voluptatem qui ab dicta quis culpa.'
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: 431793b7-a704-3891-8dbb-5318e5f7b832
description: 'Hugo Mauro Ferreira'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
-
id: ac78099d-d41b-3a58-ab8c-24ebbde4a7de
description: 'Dr. Flávio Pena'
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: 431793b7-a704-3891-8dbb-5318e5f7b832
description: 'Hugo Mauro Ferreira'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
-
id: ac78099d-d41b-3a58-ab8c-24ebbde4a7de
description: 'Dr. Flávio Pena'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 431793b7-a704-3891-8dbb-5318e5f7b832
description:
type: string
example: 'Hugo Mauro Ferreira'
work:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
documents:
type: array
example: []
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 36611be6-eef8-3d84-a758-3bd9711f3921
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: c083ba4e-c341-3fe1-9afd-0e155d028443
description: 'Melina Ferreira Aguiar'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: c083ba4e-c341-3fe1-9afd-0e155d028443
description:
type: string
example: 'Melina Ferreira Aguiar'
work:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
documents:
type: array
example: []
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: 9ab9943b-481a-3d98-9ec6-95a5b5c0e806
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: 5a45b6b9-7a32-305d-9ec2-5cc93a12f66b
name: 'Lia Ramires'
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
product_requests_count: 0
product_request_items_count: 0
documents_count: 0
locations_documents_count: 0
total_documents_count: 0
daily_logs_count: 0
projects_count: 0
started_at:
date: '1972-03-11 15:45:10.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
-
id: ac594978-c5c4-3cfd-82e0-d030cffd2126
name: 'José Evandro Beltrão'
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
product_requests_count: 0
product_request_items_count: 0
documents_count: 0
locations_documents_count: 0
total_documents_count: 0
daily_logs_count: 0
projects_count: 0
started_at:
date: '1989-06-06 17:15:16.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: 5a45b6b9-7a32-305d-9ec2-5cc93a12f66b
name: 'Lia Ramires'
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
product_requests_count: 0
product_request_items_count: 0
documents_count: 0
locations_documents_count: 0
total_documents_count: 0
daily_logs_count: 0
projects_count: 0
started_at:
date: '1972-03-11 15:45:10.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
-
id: ac594978-c5c4-3cfd-82e0-d030cffd2126
name: 'José Evandro Beltrão'
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
product_requests_count: 0
product_request_items_count: 0
documents_count: 0
locations_documents_count: 0
total_documents_count: 0
daily_logs_count: 0
projects_count: 0
started_at:
date: '1989-06-06 17:15:16.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 5a45b6b9-7a32-305d-9ec2-5cc93a12f66b
name:
type: string
example: 'Lia Ramires'
address:
type: object
properties:
street:
type: string
example: null
nullable: true
number:
type: string
example: null
nullable: true
complement:
type: string
example: null
nullable: true
neighborhood:
type: string
example: null
nullable: true
city:
type: string
example: null
nullable: true
state:
type: string
example: null
nullable: true
zip_code:
type: string
example: null
nullable: true
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
product_requests_count:
type: integer
example: 0
product_request_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
daily_logs_count:
type: integer
example: 0
projects_count:
type: integer
example: 0
started_at:
type: object
properties:
date:
type: string
example: '1972-03-11 15:45:10.000000'
timezone_type:
type: integer
example: 3
timezone:
type: string
example: America/Sao_Paulo
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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: 5c1dc12c-415a-3071-8742-6dc548ee6048
status_id:
type: string
description: 'Status id. The uuid of an existing record in the statuses table.'
example: a62c280e-570f-31e7-8c14-439557101280
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: ae97a92a-ae7e-326a-98a4-19f25d276bbd
name: 'Kauan Corona Neto'
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
product_requests_count: 0
product_request_items_count: 0
documents_count: 0
locations_documents_count: 0
total_documents_count: 0
daily_logs_count: 0
projects_count: 0
started_at:
date: '2019-06-05 22:23:15.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: ae97a92a-ae7e-326a-98a4-19f25d276bbd
name:
type: string
example: 'Kauan Corona Neto'
address:
type: object
properties:
street:
type: string
example: null
nullable: true
number:
type: string
example: null
nullable: true
complement:
type: string
example: null
nullable: true
neighborhood:
type: string
example: null
nullable: true
city:
type: string
example: null
nullable: true
state:
type: string
example: null
nullable: true
zip_code:
type: string
example: null
nullable: true
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
product_requests_count:
type: integer
example: 0
product_request_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
daily_logs_count:
type: integer
example: 0
projects_count:
type: integer
example: 0
started_at:
type: object
properties:
date:
type: string
example: '2019-06-05 22:23:15.000000'
timezone_type:
type: integer
example: 3
timezone:
type: string
example: America/Sao_Paulo
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: 15afb0af-b23c-347c-a1e7-4894f5c2de3e
status_id:
type: string
description: 'Status id. The uuid of an existing record in the statuses table.'
example: ad1fe9f2-3c11-3db7-ae66-ddf0126bca6e
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: 7924b5a0-fba3-3b8f-bb2c-ce7ea204edfb
name: 'Dr. Narciso Lynch'
username: brady28
email: mgreenholt@example.com
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
-
id: 13e8bfd8-c720-339f-b454-3d229acaff08
name: 'Christophe Dach'
username: arnold.huel
email: qcollins@example.org
certification: null
crea: null
last_login_at: null
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: 7924b5a0-fba3-3b8f-bb2c-ce7ea204edfb
name: 'Dr. Narciso Lynch'
username: brady28
email: mgreenholt@example.com
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
-
id: 13e8bfd8-c720-339f-b454-3d229acaff08
name: 'Christophe Dach'
username: arnold.huel
email: qcollins@example.org
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
items:
type: object
properties:
id:
type: string
example: 7924b5a0-fba3-3b8f-bb2c-ce7ea204edfb
name:
type: string
example: 'Dr. Narciso Lynch'
username:
type: string
example: brady28
email:
type: string
example: mgreenholt@example.com
certification:
type: string
example: null
nullable: true
crea:
type: string
example: null
nullable: true
last_login_at:
type: string
example: null
nullable: true
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
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
nullable: true
next:
type: string
example: null
nullable: true
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
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
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:
- 0f450af4-6450-3c71-a906-be266e8d19f0
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:
- 2c620457-d9f2-3e5e-989c-6233a3fb46de
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:
- fc3b5cc4-10a4-38d1-bd3a-718b80f08e40
items:
type: string
parameters:
-
in: path
name: work
description: 'Work UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string