uuid of an existing record in the permissions table.'
example:
- 1787ac69-ab5b-311c-bcd5-d3fbe652d3e6
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:
- a5c93c2e-6be4-3ba7-aaf6-82ef7f887aa1
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: f03c2ad0-a21d-3c01-a55f-660f7f955d23
name: molestiae-6ab3c7d007826
display_name: 'Dicta quia suscipit vitae sapiente.'
permissions_count: null
properties:
data:
type: object
properties:
id:
type: string
example: f03c2ad0-a21d-3c01-a55f-660f7f955d23
name:
type: string
example: molestiae-6ab3c7d007826
display_name:
type: string
example: 'Dicta quia suscipit vitae sapiente.'
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: sapiente
display_name: 'Qui dolorem et et ex.'
-
id: null
name: dolor
display_name: 'Doloribus occaecati sapiente quos dolor.'
properties:
data:
type: array
example:
-
id: null
name: sapiente
display_name: 'Qui dolorem et et ex.'
-
id: null
name: dolor
display_name: 'Doloribus occaecati sapiente quos dolor.'
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: sapiente
display_name:
type: string
example: 'Qui dolorem et et ex.'
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: soluta
display_name: 'Nostrum ducimus nam quidem quas consequuntur quis beatae.'
-
id: null
name: aut
display_name: 'Quam eius est consectetur dolor eum consequatur.'
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: soluta
display_name: 'Nostrum ducimus nam quidem quas consequuntur quis beatae.'
-
id: null
name: aut
display_name: 'Quam eius est consectetur dolor eum consequatur.'
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: soluta
display_name:
type: string
example: 'Nostrum ducimus nam quidem quas consequuntur quis beatae.'
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: ut
display_name: 'Beatae earum voluptatibus recusandae voluptatem voluptatibus fuga blanditiis.'
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: ut
display_name:
type: string
example: 'Beatae earum voluptatibus recusandae voluptatem voluptatibus fuga blanditiis.'
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: be99abeb-d62a-36fe-b9ee-5a51334472dd
code: null
type: saída
payment_method: cheque
amount: 9089.52
due_date: '2026-10-15T03: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: 'Aut architecto odit aliquid iure corporis aut.'
is_recurring: null
recurrence_config: null
parent_id: null
recurrence_order: 1
total_recurrences: null
children_count: 0
remaining_recurrences: null
has_children: false
field1: unde
field2: 85
field3: false
notes: 'Aspernatur nostrum non dicta consequatur.'
created_at: null
updated_at: null
-
id: b2b0151f-38e5-31e6-a337-0cbfeaa6e089
code: null
type: saída
payment_method: boleto
amount: 3110.53
due_date: '2026-10-12T03: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: 'Eaque pariatur ratione iure ipsa amet id est est et et.'
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: eaque
field2: 57
field3: false
notes: 'Non sint odio sit.'
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: be99abeb-d62a-36fe-b9ee-5a51334472dd
code: null
type: saída
payment_method: cheque
amount: 9089.52
due_date: '2026-10-15T03: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: 'Aut architecto odit aliquid iure corporis aut.'
is_recurring: null
recurrence_config: null
parent_id: null
recurrence_order: 1
total_recurrences: null
children_count: 0
remaining_recurrences: null
has_children: false
field1: unde
field2: 85
field3: false
notes: 'Aspernatur nostrum non dicta consequatur.'
created_at: null
updated_at: null
-
id: b2b0151f-38e5-31e6-a337-0cbfeaa6e089
code: null
type: saída
payment_method: boleto
amount: 3110.53
due_date: '2026-10-12T03: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: 'Eaque pariatur ratione iure ipsa amet id est est et et.'
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: eaque
field2: 57
field3: false
notes: 'Non sint odio sit.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: be99abeb-d62a-36fe-b9ee-5a51334472dd
code:
type: string
example: null
nullable: true
type:
type: string
example: saída
payment_method:
type: string
example: cheque
amount:
type: number
example: 9089.52
due_date:
type: string
example: '2026-10-15T03: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: 'Aut architecto odit aliquid iure corporis aut.'
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: unde
field2:
type: integer
example: 85
field3:
type: boolean
example: false
notes:
type: string
example: 'Aspernatur nostrum non dicta consequatur.'
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:
- quo
required: true
schema:
type: array
description: 'The uuid of an existing record in the account_payable_receivables table.'
example:
- quo
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:
- doloremque
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- doloremque
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- consequatur
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- consequatur
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- eum
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- eum
items:
type: string
-
in: query
name: statuses
description: ''
example:
- 'a protestar'
required: false
schema:
type: array
description: ''
example:
- 'a protestar'
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
- pix
- cartao
- 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-09-23T09:36:32'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-09-23T09:36:32'
nullable: true
-
in: query
name: protest_date_end
description: 'O campo value deve ser uma data válida.'
example: '2026-09-23T09:36:32'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-09-23T09:36:32'
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: 65cafbf0-4789-3ae9-bccd-fb078200ab70
code: null
type: saída
payment_method: cheque
amount: 1879.75
due_date: '2026-10-14T03: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: 'Facilis ipsum quis mollitia nihil eos occaecati ex modi expedita magni vel iure.'
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: consequatur
field2: 58
field3: false
notes: 'Ipsa qui consequatur nemo praesentium.'
created_at: null
updated_at: null
-
id: 44333011-6731-3e85-a333-21b2898355f1
code: null
type: entrada
payment_method: boleto
amount: 7326.11
due_date: '2026-10-11T03: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: 'Consequatur porro accusamus qui vel non sed quos perferendis.'
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: quisquam
field2: 26
field3: true
notes: 'Qui deserunt ut fugiat et ut dolorem quod.'
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: 65cafbf0-4789-3ae9-bccd-fb078200ab70
code: null
type: saída
payment_method: cheque
amount: 1879.75
due_date: '2026-10-14T03: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: 'Facilis ipsum quis mollitia nihil eos occaecati ex modi expedita magni vel iure.'
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: consequatur
field2: 58
field3: false
notes: 'Ipsa qui consequatur nemo praesentium.'
created_at: null
updated_at: null
-
id: 44333011-6731-3e85-a333-21b2898355f1
code: null
type: entrada
payment_method: boleto
amount: 7326.11
due_date: '2026-10-11T03: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: 'Consequatur porro accusamus qui vel non sed quos perferendis.'
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: quisquam
field2: 26
field3: true
notes: 'Qui deserunt ut fugiat et ut dolorem quod.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 65cafbf0-4789-3ae9-bccd-fb078200ab70
code:
type: string
example: null
nullable: true
type:
type: string
example: saída
payment_method:
type: string
example: cheque
amount:
type: number
example: 1879.75
due_date:
type: string
example: '2026-10-14T03: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: 'Facilis ipsum quis mollitia nihil eos occaecati ex modi expedita magni vel iure.'
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: consequatur
field2:
type: integer
example: 58
field3:
type: boolean
example: false
notes:
type: string
example: 'Ipsa qui consequatur nemo praesentium.'
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:
- dolores
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- dolores
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- repellendus
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- repellendus
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- id
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- id
items:
type: string
-
in: query
name: statuses
description: ''
example:
- cancelado
required: false
schema:
type: array
description: ''
example:
- cancelado
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
- pix
- cartao
- 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-09-23T09:36:32'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-09-23T09:36:32'
nullable: true
-
in: query
name: protest_date_end
description: 'O campo value deve ser uma data válida.'
example: '2026-09-23T09:36:32'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-09-23T09:36:32'
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: b7734f92-199e-3d78-ba29-8b76edf43eb7
code: null
type: saída
payment_method: cheque
amount: 4510.59
due_date: '2026-10-06T03: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: 'Laboriosam dolore quaerat quibusdam saepe in dolorum commodi aliquid.'
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: 99
field3: false
notes: 'Eos voluptatibus et eaque exercitationem.'
created_at: null
updated_at: null
-
id: 9de65840-14c8-30fe-8e83-f82704483847
code: null
type: saída
payment_method: boleto
amount: 2981.13
due_date: '2026-10-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: 'Labore omnis voluptatibus culpa harum quos qui in quis inventore vero.'
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: ut
field2: 99
field3: false
notes: 'Quaerat voluptas earum inventore qui pariatur.'
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: b7734f92-199e-3d78-ba29-8b76edf43eb7
code: null
type: saída
payment_method: cheque
amount: 4510.59
due_date: '2026-10-06T03: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: 'Laboriosam dolore quaerat quibusdam saepe in dolorum commodi aliquid.'
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: 99
field3: false
notes: 'Eos voluptatibus et eaque exercitationem.'
created_at: null
updated_at: null
-
id: 9de65840-14c8-30fe-8e83-f82704483847
code: null
type: saída
payment_method: boleto
amount: 2981.13
due_date: '2026-10-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: 'Labore omnis voluptatibus culpa harum quos qui in quis inventore vero.'
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: ut
field2: 99
field3: false
notes: 'Quaerat voluptas earum inventore qui pariatur.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: b7734f92-199e-3d78-ba29-8b76edf43eb7
code:
type: string
example: null
nullable: true
type:
type: string
example: saída
payment_method:
type: string
example: cheque
amount:
type: number
example: 4510.59
due_date:
type: string
example: '2026-10-06T03: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: 'Laboriosam dolore quaerat quibusdam saepe in dolorum commodi aliquid.'
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: quas
field2:
type: integer
example: 99
field3:
type: boolean
example: false
notes:
type: string
example: 'Eos voluptatibus et eaque exercitationem.'
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
- pix
- cartao
- 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: 6a8e007d-90f6-38e1-901b-2ac789f2a500
nullable: true
customer_id:
type: string
description: 'Cliente. The uuid of an existing record in the customers table.'
example: 65c01407-d7ac-3836-8290-305cc17cdf57
nullable: true
work_id:
type: string
description: 'Obra. The uuid of an existing record in the works table.'
example: 14913ec5-ebc5-3f28-94bd-39f501d3adee
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: 0c17cb06-16d0-3e20-ac1f-c58c1991f86b
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: voluptatem
installment_ids:
type: array
description: 'The uuid of an existing record in the fiscal_document_installments table.'
example:
- dolor
items:
type: string
payment_method:
type: string
description: ''
example: cartao
enum:
- cheque
- boleto
- pix
- cartao
- outro
nullable: true
work_id:
type: string
description: 'The uuid of an existing record in the works table.'
example: architecto
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: minima
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: 389ae9c2-5f98-3de8-912b-1c5868173a5a
code: null
type: entrada
payment_method: cheque
amount: 1711.4
due_date: '2026-09-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: 'Dolorem omnis assumenda et necessitatibus distinctio minus accusamus sapiente voluptate est aut.'
is_recurring: null
recurrence_config: null
parent_id: null
recurrence_order: 1
total_recurrences: null
children_count: 0
remaining_recurrences: null
has_children: false
field1: sint
field2: 35
field3: false
notes: 'Ad sapiente quibusdam atque ea perspiciatis.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 389ae9c2-5f98-3de8-912b-1c5868173a5a
code:
type: string
example: null
nullable: true
type:
type: string
example: entrada
payment_method:
type: string
example: cheque
amount:
type: number
example: 1711.4
due_date:
type: string
example: '2026-09-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: 'Dolorem omnis assumenda et necessitatibus distinctio minus accusamus sapiente voluptate est aut.'
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: sint
field2:
type: integer
example: 35
field3:
type: boolean
example: false
notes:
type: string
example: 'Ad sapiente quibusdam atque ea perspiciatis.'
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
- pix
- cartao
- 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: 026cb615-0704-3554-a6c7-056dfa6d0b54
nullable: true
customer_id:
type: string
description: 'Customer id. The uuid of an existing record in the customers table.'
example: 63af8081-4f0a-31e5-b5da-b2f4e5a42a96
nullable: true
work_id:
type: string
description: 'Work id. The uuid of an existing record in the works table.'
example: 57acc5eb-d90b-3308-a29c-b5f87927aede
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: 7c84b07e-5ce0-3a49-9d10-fb93e40e2571
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: voluptatem
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: reichert.bo@example.com
password:
type: string
description: 'User password.'
example: password
required:
- email
- password
security: []
/api/auth/user:
get:
summary: Me
operationId: me
description: 'Get the current user'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 3f72bfd9-2425-3bef-ab7d-f55e868d4414
name: 'Emie Littel Sr.'
username: kiehn.oswaldo
email: celestine28@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: 3f72bfd9-2425-3bef-ab7d-f55e868d4414
name:
type: string
example: 'Emie Littel Sr.'
username:
type: string
example: kiehn.oswaldo
email:
type: string
example: celestine28@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: roslyn.considine
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:
- c2f8da96-9882-3241-93bc-043dd6b594b1
items:
type: string
roles:
type: array
description: 'UUID da função. The uuid of an existing record in the roles table.'
example:
- 0cbbe412-965a-384f-908d-6ac661b013a5
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: qhhsyntnzpqnld
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: architecto
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: reiciendis
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: 5
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: 3
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: 9bd6e781-570c-3e4e-b842-b9fbca50ca02
agency: '7144'
account: 4248441-1
type: caixa
balance: 9960.6
holder_type: pf
alias: aliquam
limit: 3798.2
available_balance: 13758.8
used_limit: 0
available_limit: 3798.2
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: 9bd6e781-570c-3e4e-b842-b9fbca50ca02
agency:
type: string
example: '7144'
account:
type: string
example: 4248441-1
type:
type: string
example: caixa
balance:
type: number
example: 9960.6
holder_type:
type: string
example: pf
alias:
type: string
example: aliquam
limit:
type: number
example: 3798.2
available_balance:
type: number
example: 13758.8
used_limit:
type: integer
example: 0
available_limit:
type: number
example: 3798.2
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: 0b2ee3d4-24ed-387d-be4c-4a0823c56605
agency: '1221'
account: 6769627-5
type: poupança
balance: 3068.86
holder_type: pj
alias: omnis
limit: 80.8
available_balance: 3149.66
used_limit: 0
available_limit: 80.8
is_default: null
default_payment_method: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
-
id: d4295ba6-3828-342c-ab8d-99f12668d7d5
agency: '0605'
account: 7124665-9
type: corrente
balance: 2957.36
holder_type: pf
alias: voluptatem
limit: 5215.82
available_balance: 8173.18
used_limit: 0
available_limit: 5215.82
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: 0b2ee3d4-24ed-387d-be4c-4a0823c56605
agency: '1221'
account: 6769627-5
type: poupança
balance: 3068.86
holder_type: pj
alias: omnis
limit: 80.8
available_balance: 3149.66
used_limit: 0
available_limit: 80.8
is_default: null
default_payment_method: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
-
id: d4295ba6-3828-342c-ab8d-99f12668d7d5
agency: '0605'
account: 7124665-9
type: corrente
balance: 2957.36
holder_type: pf
alias: voluptatem
limit: 5215.82
available_balance: 8173.18
used_limit: 0
available_limit: 5215.82
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: 0b2ee3d4-24ed-387d-be4c-4a0823c56605
agency:
type: string
example: '1221'
account:
type: string
example: 6769627-5
type:
type: string
example: poupança
balance:
type: number
example: 3068.86
holder_type:
type: string
example: pj
alias:
type: string
example: omnis
limit:
type: number
example: 80.8
available_balance:
type: number
example: 3149.66
used_limit:
type: integer
example: 0
available_limit:
type: number
example: 80.8
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: 9052349-3
bank_id:
type: string
description: 'Bank id. The uuid of an existing record in the banks table.'
example: 388ae55b-8868-312d-95b7-dad948247925
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: 7485772-9
bank_id:
type: string
description: 'Bank id. The uuid of an existing record in the banks table.'
example: d667c5c7-4e78-303e-802d-a9becafef31e
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: 9ad28b96-4f08-3768-a715-3d8edc0b91c6
agency: '9023'
account: 9702209-2
type: corrente
balance: 2654.13
holder_type: pj
alias: et
limit: 936.48
available_balance: 3590.61
used_limit: 0
available_limit: 936.48
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: 9ad28b96-4f08-3768-a715-3d8edc0b91c6
agency:
type: string
example: '9023'
account:
type: string
example: 9702209-2
type:
type: string
example: corrente
balance:
type: number
example: 2654.13
holder_type:
type: string
example: pj
alias:
type: string
example: et
limit:
type: number
example: 936.48
available_balance:
type: number
example: 3590.61
used_limit:
type: integer
example: 0
available_limit:
type: number
example: 936.48
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: 1
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: consequatur
nullable: true
sort_desc:
type: boolean
description: ''
example: true
nullable: true
page:
type: integer
description: 'O campo value deve ser pelo menos 1.'
example: 36
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: 13
nullable: true
q:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: egitrpynkncy
nullable: true
type:
type: string
description: ''
example: tarifa
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-09-23T09:36:32'
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: '2112-01-14'
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: 5
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: 3
required: true
schema:
type: integer
-
in: path
name: bankStatement
description: ''
example: molestiae
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: 82f99776-e706-35da-89c7-e024e550be39
name: 'Vale e Marin'
code: '333'
-
id: f68767ed-a170-3b02-b734-5c63ce2ba85a
name: 'Vale e Bezerra e Filhos'
code: '838'
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: 82f99776-e706-35da-89c7-e024e550be39
name: 'Vale e Marin'
code: '333'
-
id: f68767ed-a170-3b02-b734-5c63ce2ba85a
name: 'Vale e Bezerra e Filhos'
code: '838'
items:
type: object
properties:
id:
type: string
example: 82f99776-e706-35da-89c7-e024e550be39
name:
type: string
example: 'Vale e Marin'
code:
type: string
example: '333'
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: 9b0e853c-a398-3290-b2e0-6ad1956ef854
name: 'Ramos Comercial Ltda.'
code: '34'
properties:
data:
type: object
properties:
id:
type: string
example: 9b0e853c-a398-3290-b2e0-6ad1956ef854
name:
type: string
example: 'Ramos Comercial Ltda.'
code:
type: string
example: '34'
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: 'Nemo et maxime et dolore aut ducimus illum.'
required: false
schema:
type: string
description: 'Description .'
example: 'Nemo et maxime et dolore aut ducimus illum.'
-
in: query
name: categories
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- ratione
required: false
schema:
type: array
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- ratione
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:
- autem
required: false
schema:
type: array
description: 'The uuid of an existing record in the bank_accounts table.'
example:
- autem
items:
type: string
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- et
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- et
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
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- qui
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- qui
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: 'Doloremque ipsam quas molestiae aliquam autem repellat inventore non.'
required: false
schema:
type: string
description: 'Description .'
example: 'Doloremque ipsam quas molestiae aliquam autem repellat inventore non.'
-
in: query
name: categories
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- deserunt
required: false
schema:
type: array
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- deserunt
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:
- sit
required: false
schema:
type: array
description: 'The uuid of an existing record in the bank_accounts table.'
example:
- sit
items:
type: string
-
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:
- eos
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- eos
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- hic
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- hic
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 9f414796-603a-37d1-825b-b8e7b28b8068
code: FC-80034277
type: ajuste
amount: 2426.61
description: 'Autem iusto accusantium minima quidem.'
transaction_date: '2015-02-24T03:00:00.000000Z'
transaction_category:
id: null
name: null
type: null
created_at: null
updated_at: null
-
id: 17b12e05-9e2a-33ba-ae0d-d318670e0036
code: FC-76582499
type: transferência
amount: -73.9
description: 'Et aut maiores enim dolores dignissimos.'
transaction_date: '1999-02-15T02: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: 9f414796-603a-37d1-825b-b8e7b28b8068
code: FC-80034277
type: ajuste
amount: 2426.61
description: 'Autem iusto accusantium minima quidem.'
transaction_date: '2015-02-24T03:00:00.000000Z'
transaction_category:
id: null
name: null
type: null
created_at: null
updated_at: null
-
id: 17b12e05-9e2a-33ba-ae0d-d318670e0036
code: FC-76582499
type: transferência
amount: -73.9
description: 'Et aut maiores enim dolores dignissimos.'
transaction_date: '1999-02-15T02: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: 9f414796-603a-37d1-825b-b8e7b28b8068
code:
type: string
example: FC-80034277
type:
type: string
example: ajuste
amount:
type: number
example: 2426.61
description:
type: string
example: 'Autem iusto accusantium minima quidem.'
transaction_date:
type: string
example: '2015-02-24T03: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: dec922c1-2499-31e1-bcdd-7ad5de82ada1
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: 424a88dc-057f-3edd-ad60-f12ec27869bb
bank_account_id:
type: string
description: 'Bank account id. The uuid of an existing record in the bank_accounts table.'
example: e0cede81-2a89-3549-8246-3a5b131b9696
nullable: true
customer_id:
type: string
description: 'Customer id. The uuid of an existing record in the customers table.'
example: ecb7f91d-ded6-3c94-a772-920b8aa8a020
nullable: true
supplier_id:
type: string
description: 'Supplier id. The uuid of an existing record in the suppliers table.'
example: b0f16a09-e63d-3652-9444-0613efae0ff0
nullable: true
work_id:
type: string
description: 'Work id. The uuid of an existing record in the works table.'
example: 1b20dca2-1f3c-37e3-b071-1a7a544077c8
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: 36e36816-322f-36fb-8bc7-8d9fb6c1aa15
code: FC-51321843
type: pagamento
amount: -4247.24
description: 'Rem atque et corrupti consectetur.'
transaction_date: '1977-06-02T03: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: 36e36816-322f-36fb-8bc7-8d9fb6c1aa15
code:
type: string
example: FC-51321843
type:
type: string
example: pagamento
amount:
type: number
example: -4247.24
description:
type: string
example: 'Rem atque et corrupti consectetur.'
transaction_date:
type: string
example: '1977-06-02T03: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: e5475903-6db1-3cc1-8391-805bcd7099bf
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: 9b37c6b2-1e79-30a5-9c34-c85ef96e22d8
bank_account_id:
type: string
description: 'Bank account id. The uuid of an existing record in the bank_accounts table.'
example: 17a3a88b-22f5-30ac-8f84-d4630cbd27ce
nullable: true
customer_id:
type: string
description: 'Customer id. The uuid of an existing record in the customers table.'
example: 6d4fb8e0-c415-3bdc-bb18-a0edd703606a
nullable: true
supplier_id:
type: string
description: 'Supplier id. The uuid of an existing record in the suppliers table.'
example: 843241c8-c6a3-3d75-b18e-9e183a9b9ce0
nullable: true
work_id:
type: string
description: 'Work id. The uuid of an existing record in the works table.'
example: f967869d-2660-333c-9b6c-b24de839e469
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: 5
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: 0fc32493-3538-313e-b14a-ea9c1fed1dc4
code: null
opened_by: null
opened_at: '2000-12-26T08:23:07.000000Z'
closed_by: null
closed_at: '2007-02-25T14:52:58.000000Z'
opening_balance: 334.79
closing_balance: 6282.1
total_income: 0
total_expense: 0
total_balance: 0
status: Fechado
hasSnapshot: false
created_at: '1981-12-07T12:37:20.000000Z'
updated_at: '1983-04-29T03:52:07.000000Z'
-
id: 82618c36-71ce-33f0-adb4-de1083eccd71
code: null
opened_by: null
opened_at: '1992-04-07T09:40:31.000000Z'
closed_by: null
closed_at: '2018-12-27T13:10:19.000000Z'
opening_balance: 2270.41
closing_balance: 3666.73
total_income: 0
total_expense: 0
total_balance: 0
status: Fechado
hasSnapshot: false
created_at: '1993-11-03T16:12:20.000000Z'
updated_at: '2013-02-08T21:57:09.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: 0fc32493-3538-313e-b14a-ea9c1fed1dc4
code: null
opened_by: null
opened_at: '2000-12-26T08:23:07.000000Z'
closed_by: null
closed_at: '2007-02-25T14:52:58.000000Z'
opening_balance: 334.79
closing_balance: 6282.1
total_income: 0
total_expense: 0
total_balance: 0
status: Fechado
hasSnapshot: false
created_at: '1981-12-07T12:37:20.000000Z'
updated_at: '1983-04-29T03:52:07.000000Z'
-
id: 82618c36-71ce-33f0-adb4-de1083eccd71
code: null
opened_by: null
opened_at: '1992-04-07T09:40:31.000000Z'
closed_by: null
closed_at: '2018-12-27T13:10:19.000000Z'
opening_balance: 2270.41
closing_balance: 3666.73
total_income: 0
total_expense: 0
total_balance: 0
status: Fechado
hasSnapshot: false
created_at: '1993-11-03T16:12:20.000000Z'
updated_at: '2013-02-08T21:57:09.000000Z'
items:
type: object
properties:
id:
type: string
example: 0fc32493-3538-313e-b14a-ea9c1fed1dc4
code:
type: string
example: null
nullable: true
opened_by:
type: string
example: null
nullable: true
opened_at:
type: string
example: '2000-12-26T08:23:07.000000Z'
closed_by:
type: string
example: null
nullable: true
closed_at:
type: string
example: '2007-02-25T14:52:58.000000Z'
opening_balance:
type: number
example: 334.79
closing_balance:
type: number
example: 6282.1
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: '1981-12-07T12:37:20.000000Z'
updated_at:
type: string
example: '1983-04-29T03:52:07.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: 54bd5f00-268a-3858-9ab0-4820ea49c4ef
code: null
opened_by: null
opened_at: '1973-07-22T07:21:53.000000Z'
closed_by: null
closed_at: '2005-05-15T06:31:50.000000Z'
opening_balance: 9359.97
closing_balance: 3387.33
total_income: 0
total_expense: 0
total_balance: 0
status: Fechado
hasSnapshot: false
created_at: '1998-06-03T02:29:59.000000Z'
updated_at: '1984-09-22T14:48:12.000000Z'
properties:
data:
type: object
properties:
id:
type: string
example: 54bd5f00-268a-3858-9ab0-4820ea49c4ef
code:
type: string
example: null
nullable: true
opened_by:
type: string
example: null
nullable: true
opened_at:
type: string
example: '1973-07-22T07:21:53.000000Z'
closed_by:
type: string
example: null
nullable: true
closed_at:
type: string
example: '2005-05-15T06:31:50.000000Z'
opening_balance:
type: number
example: 9359.97
closing_balance:
type: number
example: 3387.33
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: '1998-06-03T02:29:59.000000Z'
updated_at:
type: string
example: '1984-09-22T14:48:12.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: 573458c5-59fb-3144-a65e-f4dc19752218
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: 3da9ea96-5527-310a-a8f3-ce553a3a1706
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: 48342f7d-20ce-3026-ad2c-b094111b062f
code: null
opened_by: null
opened_at: '2025-07-18T20:47:33.000000Z'
closed_by: null
closed_at: '1970-05-28T18:03:36.000000Z'
opening_balance: 6484.68
closing_balance: 6631.82
total_income: 0
total_expense: 0
total_balance: 0
status: Fechado
hasSnapshot: false
created_at: '1984-03-12T19:46:36.000000Z'
updated_at: '1979-12-27T16:41:17.000000Z'
properties:
data:
type: object
properties:
id:
type: string
example: 48342f7d-20ce-3026-ad2c-b094111b062f
code:
type: string
example: null
nullable: true
opened_by:
type: string
example: null
nullable: true
opened_at:
type: string
example: '2025-07-18T20:47:33.000000Z'
closed_by:
type: string
example: null
nullable: true
closed_at:
type: string
example: '1970-05-28T18:03:36.000000Z'
opening_balance:
type: number
example: 6484.68
closing_balance:
type: number
example: 6631.82
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: '1984-03-12T19:46:36.000000Z'
updated_at:
type: string
example: '1979-12-27T16:41:17.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: b485da10-5e1f-37f2-afbb-00e8ce10c676
required: true
schema:
type: integer
/api/tutorials/sectors:
get:
summary: 'Setores da central'
operationId: setoresDaCentral
description: 'Setores da pessoa que tenham ao menos um tutorial visível, com a contagem'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: a064d3d2-5257-3574-a9e3-d9dd6af8f2d7
name: 'minima quibusdam'
slug: null
abbreviation: null
tutorials_count: 0
-
id: f3e0855d-4b7c-3c3f-93bf-cc860c13609c
name: 'ipsum ducimus'
slug: null
abbreviation: null
tutorials_count: 0
properties:
data:
type: array
example:
-
id: a064d3d2-5257-3574-a9e3-d9dd6af8f2d7
name: 'minima quibusdam'
slug: null
abbreviation: null
tutorials_count: 0
-
id: f3e0855d-4b7c-3c3f-93bf-cc860c13609c
name: 'ipsum ducimus'
slug: null
abbreviation: null
tutorials_count: 0
items:
type: object
properties:
id:
type: string
example: a064d3d2-5257-3574-a9e3-d9dd6af8f2d7
name:
type: string
example: 'minima quibusdam'
slug:
type: string
example: null
nullable: true
abbreviation:
type: string
example: null
nullable: true
tutorials_count:
type: integer
example: 0
tags:
- 'Central de Tutoriais'
/api/tutorials/modules:
get:
summary: 'Módulos da central'
operationId: mdulosDaCentral
description: 'Módulos ativos com tutoriais visíveis para a pessoa; aceita filtro de setor'
parameters:
-
in: query
name: sector_id
description: 'Filtra os módulos pelos tutoriais de um setor, ou "__geral__" para o material sem setor marcado. O campo value deve ser um UUID válido. The uuid of an existing record in the sectors table.'
example: 0d0b2983-5dc9-37a7-b729-a5acceb0eca5
required: false
schema:
type: string
description: 'Filtra os módulos pelos tutoriais de um setor, ou "__geral__" para o material sem setor marcado. O campo value deve ser um UUID válido. The uuid of an existing record in the sectors table.'
example: 0d0b2983-5dc9-37a7-b729-a5acceb0eca5
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 59d3a3a2-5c90-3985-8c49-4a12d197169e
name: 'Aut nemo'
slug: aut-nemo-155730
description: 'Aperiam magnam odit debitis omnis unde.'
sort_order: 0
is_active: true
created_at: null
updated_at: null
-
id: 8b488254-add4-3e4d-bbfd-b4a15b4a8a3c
name: 'Reprehenderit fuga'
slug: reprehenderit-fuga-917718
description: 'Officiis rerum maiores modi neque sed.'
sort_order: 0
is_active: true
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: 59d3a3a2-5c90-3985-8c49-4a12d197169e
name: 'Aut nemo'
slug: aut-nemo-155730
description: 'Aperiam magnam odit debitis omnis unde.'
sort_order: 0
is_active: true
created_at: null
updated_at: null
-
id: 8b488254-add4-3e4d-bbfd-b4a15b4a8a3c
name: 'Reprehenderit fuga'
slug: reprehenderit-fuga-917718
description: 'Officiis rerum maiores modi neque sed.'
sort_order: 0
is_active: true
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 59d3a3a2-5c90-3985-8c49-4a12d197169e
name:
type: string
example: 'Aut nemo'
slug:
type: string
example: aut-nemo-155730
description:
type: string
example: 'Aperiam magnam odit debitis omnis unde.'
sort_order:
type: integer
example: 0
is_active:
type: boolean
example: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Central de Tutoriais'
/api/tutorials:
get:
summary: 'Listar tutoriais'
operationId: listarTutoriais
description: 'Lista paginada dos tutoriais visíveis, com filtros de módulo, setor e busca por texto'
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: 'Busca por título ou descrição.'
example: 'ordem de serviço'
required: false
schema:
type: string
description: 'Busca por título ou descrição.'
example: 'ordem de serviço'
nullable: true
-
in: query
name: module_id
description: 'Filtra pelo UUID do módulo. O campo value deve ser um UUID válido. The uuid of an existing record in the tutorial_modules table.'
example: 91f8fdf6-5c9d-3392-ac67-6a3dce0320ab
required: false
schema:
type: string
description: 'Filtra pelo UUID do módulo. O campo value deve ser um UUID válido. The uuid of an existing record in the tutorial_modules table.'
example: 91f8fdf6-5c9d-3392-ac67-6a3dce0320ab
nullable: true
-
in: query
name: sector_id
description: 'Filtra pelo UUID do setor, ou "__geral__" para o material sem setor marcado. O campo value deve ser um UUID válido. The uuid of an existing record in the sectors table.'
example: beff7622-39ad-335c-8873-595490adbbcf
required: false
schema:
type: string
description: 'Filtra pelo UUID do setor, ou "__geral__" para o material sem setor marcado. O campo value deve ser um UUID válido. The uuid of an existing record in the sectors table.'
example: beff7622-39ad-335c-8873-595490adbbcf
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: e4eeaa71-a5fb-35e3-8188-36e28ab36556
title: 'Ipsam in aut facere'
description: 'Ad non voluptatum nulla accusantium.'
status: draft
published_at: null
sort_order: 0
module:
id: a2d092d2-8627-446b-886d-b5b3fa18eb85
name: 'Omnis odio'
slug: omnis-odio-554674
created_at: null
updated_at: null
-
id: 7a5cf592-698e-3bcd-9542-44f8118bcb2b
title: 'Nemo blanditiis qui suscipit'
description: 'Magnam nesciunt qui voluptatem adipisci.'
status: draft
published_at: null
sort_order: 0
module:
id: a2d092d2-8833-4e00-8fc0-d9e4abb5249d
name: 'Sint est'
slug: sint-est-257464
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: e4eeaa71-a5fb-35e3-8188-36e28ab36556
title: 'Ipsam in aut facere'
description: 'Ad non voluptatum nulla accusantium.'
status: draft
published_at: null
sort_order: 0
module:
id: a2d092d2-8627-446b-886d-b5b3fa18eb85
name: 'Omnis odio'
slug: omnis-odio-554674
created_at: null
updated_at: null
-
id: 7a5cf592-698e-3bcd-9542-44f8118bcb2b
title: 'Nemo blanditiis qui suscipit'
description: 'Magnam nesciunt qui voluptatem adipisci.'
status: draft
published_at: null
sort_order: 0
module:
id: a2d092d2-8833-4e00-8fc0-d9e4abb5249d
name: 'Sint est'
slug: sint-est-257464
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: e4eeaa71-a5fb-35e3-8188-36e28ab36556
title:
type: string
example: 'Ipsam in aut facere'
description:
type: string
example: 'Ad non voluptatum nulla accusantium.'
status:
type: string
example: draft
published_at:
type: string
example: null
nullable: true
sort_order:
type: integer
example: 0
module:
type: object
properties:
id:
type: string
example: a2d092d2-8627-446b-886d-b5b3fa18eb85
name:
type: string
example: 'Omnis odio'
slug:
type: string
example: omnis-odio-554674
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:
- 'Central de Tutoriais'
'/api/tutorials/{id}':
get:
summary: 'Detalhe do tutorial'
operationId: detalheDoTutorial
description: 'Tutorial com os itens em ordem. Fora da visibilidade, responde 404.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 86b5c9e6-6009-3943-ac88-582d73e2acc5
title: 'Qui quod enim adipisci'
description: 'Consequatur autem possimus assumenda.'
status: draft
published_at: null
sort_order: 0
module:
id: a2d092d2-8cc4-4a5e-b4d3-669f571f99f1
name: 'Inventore maxime'
slug: inventore-maxime-377406
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 86b5c9e6-6009-3943-ac88-582d73e2acc5
title:
type: string
example: 'Qui quod enim adipisci'
description:
type: string
example: 'Consequatur autem possimus assumenda.'
status:
type: string
example: draft
published_at:
type: string
example: null
nullable: true
sort_order:
type: integer
example: 0
module:
type: object
properties:
id:
type: string
example: a2d092d2-8cc4-4a5e-b4d3-669f571f99f1
name:
type: string
example: 'Inventore maxime'
slug:
type: string
example: inventore-maxime-377406
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Central de Tutoriais'
parameters:
-
in: path
name: id
description: 'The ID of the tutorial.'
example: 1
required: true
schema:
type: integer
-
in: path
name: tutorial
description: 'UUID do tutorial'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/tutorial-items/{tutorialItem}/url':
get:
summary: 'URL do item'
operationId: uRLDoItem
description: 'Devolve a URL assinada de curta validade para o arquivo no S3, ou o link externo do item. O caminho bruto do S3 nunca é exposto.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
type: string
title: string
url: string
expires_in: integer
mime_type: string
size_bytes: integer
properties:
type:
type: string
example: string
title:
type: string
example: string
url:
type: string
example: string
expires_in:
type: string
example: integer
mime_type:
type: string
example: string
size_bytes:
type: string
example: integer
tags:
- 'Central de Tutoriais'
parameters:
-
in: path
name: tutorialItem
description: 'UUID do item'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
/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: eb2c5e71-0b9a-303a-93a2-6661b5ed0440
number: 885/2026
started_at: '2026-09-23'
deadline_at: '2027-09-23'
work:
id: a2d092c5-9c10-4aa0-83e2-db5b9a7fb025
name: 'Dr. Théo Jean Carmona'
created_at: null
updated_at: null
-
id: e83900df-e3a1-3a0a-95fc-253ff6d07820
number: 128/2026
started_at: '2026-09-23'
deadline_at: '2027-09-23'
work:
id: a2d092c5-a546-4b5d-9149-17f9b18d60ce
name: 'Sr. Guilherme Rico Correia'
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: eb2c5e71-0b9a-303a-93a2-6661b5ed0440
number: 885/2026
started_at: '2026-09-23'
deadline_at: '2027-09-23'
work:
id: a2d092c5-9c10-4aa0-83e2-db5b9a7fb025
name: 'Dr. Théo Jean Carmona'
created_at: null
updated_at: null
-
id: e83900df-e3a1-3a0a-95fc-253ff6d07820
number: 128/2026
started_at: '2026-09-23'
deadline_at: '2027-09-23'
work:
id: a2d092c5-a546-4b5d-9149-17f9b18d60ce
name: 'Sr. Guilherme Rico Correia'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: eb2c5e71-0b9a-303a-93a2-6661b5ed0440
number:
type: string
example: 885/2026
started_at:
type: string
example: '2026-09-23'
deadline_at:
type: string
example: '2027-09-23'
work:
type: object
properties:
id:
type: string
example: a2d092c5-9c10-4aa0-83e2-db5b9a7fb025
name:
type: string
example: 'Dr. Théo Jean Carmona'
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: 0b53e2f8-7c31-30e8-8632-3f53c265f6fb
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: cce4e3aa-49f2-3e5f-99b9-60107ab00a7c
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: 372e3597-11de-3e92-968f-bc9b446dfbdf
number: 875/2026
started_at: '2026-09-23'
deadline_at: '2027-09-23'
work:
id: a2d092c5-b071-4835-962a-dc2911816e6a
name: 'Srta. Natália Quintana Pontes'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 372e3597-11de-3e92-968f-bc9b446dfbdf
number:
type: string
example: 875/2026
started_at:
type: string
example: '2026-09-23'
deadline_at:
type: string
example: '2027-09-23'
work:
type: object
properties:
id:
type: string
example: a2d092c5-b071-4835-962a-dc2911816e6a
name:
type: string
example: 'Srta. Natália Quintana Pontes'
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: 5
required: true
schema:
type: integer
-
in: path
name: contract
description: 'Contract UUID'
example: praesentium
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: veritatis
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: 5093f8bf-2b95-3074-b6d2-d05ae2cd3123
name: 'Fátima Vasques'
email: carlos.delatorre@example.net
phone: '(74) 96087-4182'
document: 703.528.706-05
type: pf
responsible: 'Samanta Cordeiro Estrada Jr.'
image:
id: null
url: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
documents_count: 0
-
id: b1df8a6f-fbc7-3a7f-8bc6-1aeec4635750
name: 'Juliane Saraiva Neto'
email: nramires@example.com
phone: '(81) 3213-6783'
document: 462.254.838-02
type: pj
responsible: 'Eduardo Alves Reis Filho'
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: 5093f8bf-2b95-3074-b6d2-d05ae2cd3123
name: 'Fátima Vasques'
email: carlos.delatorre@example.net
phone: '(74) 96087-4182'
document: 703.528.706-05
type: pf
responsible: 'Samanta Cordeiro Estrada Jr.'
image:
id: null
url: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
documents_count: 0
-
id: b1df8a6f-fbc7-3a7f-8bc6-1aeec4635750
name: 'Juliane Saraiva Neto'
email: nramires@example.com
phone: '(81) 3213-6783'
document: 462.254.838-02
type: pj
responsible: 'Eduardo Alves Reis Filho'
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: 5093f8bf-2b95-3074-b6d2-d05ae2cd3123
name:
type: string
example: 'Fátima Vasques'
email:
type: string
example: carlos.delatorre@example.net
phone:
type: string
example: '(74) 96087-4182'
document:
type: string
example: 703.528.706-05
type:
type: string
example: pf
responsible:
type: string
example: 'Samanta Cordeiro Estrada Jr.'
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: de706600-0b2f-3839-8c60-439dd1d59767
name: 'Srta. Carolina Antonella Dominato Jr.'
email: odelgado@example.net
phone: '(94) 3681-7032'
document: 931.246.194-04
type: pf
responsible: 'Priscila Quintana Bezerra 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
properties:
data:
type: object
properties:
id:
type: string
example: de706600-0b2f-3839-8c60-439dd1d59767
name:
type: string
example: 'Srta. Carolina Antonella Dominato Jr.'
email:
type: string
example: odelgado@example.net
phone:
type: string
example: '(94) 3681-7032'
document:
type: string
example: 931.246.194-04
type:
type: string
example: pf
responsible:
type: string
example: 'Priscila Quintana Bezerra 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
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: 15
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: 45304d8f-ed90-3f95-a7c0-bd4b9ad08a10
code: RDO-23-09-26
report_number: 1
date: '2026-09-23'
status:
id: a2d092c5-f420-4661-9426-c607fba8910b
slug: null
name: null
abbreviation: hic
color: '#8acfe8'
text_color: '#f21501'
work:
id: a2d092c5-e904-4567-84da-11129ece55b5
name: 'Ester Clarice Assunção'
started_at: '2020-02-21 01:54:41'
filled_by:
id: a2d092c5-f052-45e9-94a2-f6e8f43f7f30
name: 'Ashley Koss'
contract_number: 323/2026
deadline_at: '2027-09-23'
technical_responsible:
name: null
certification: null
crea: null
activities: []
occurrences: null
next_day_forecast: null
finalized_at: null
has_signed_document: false
content_hash: null
gov_br_validation_url: null
created_at: null
updated_at: null
-
id: 63bae095-f96f-3e4e-a3d0-175e8e1490fc
code: RDO-23-09-26
report_number: 1
date: '2026-09-23'
status:
id: a2d092c5-fd93-4207-897f-86dd1a74a73f
slug: null
name: null
abbreviation: nisi
color: '#bbfa86'
text_color: '#af8f6a'
work:
id: a2d092c5-f80f-4c3e-8538-27e2205ee1aa
name: 'Emília Pedrosa Galhardo'
started_at: '2009-06-26 20:31:02'
filled_by:
id: a2d092c5-fc10-4e90-b314-fd45a430c353
name: 'Ms. Nyah Dicki DDS'
contract_number: 172/2026
deadline_at: '2027-09-23'
technical_responsible:
name: null
certification: null
crea: null
activities: []
occurrences: null
next_day_forecast: null
finalized_at: null
has_signed_document: false
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: 45304d8f-ed90-3f95-a7c0-bd4b9ad08a10
code: RDO-23-09-26
report_number: 1
date: '2026-09-23'
status:
id: a2d092c5-f420-4661-9426-c607fba8910b
slug: null
name: null
abbreviation: hic
color: '#8acfe8'
text_color: '#f21501'
work:
id: a2d092c5-e904-4567-84da-11129ece55b5
name: 'Ester Clarice Assunção'
started_at: '2020-02-21 01:54:41'
filled_by:
id: a2d092c5-f052-45e9-94a2-f6e8f43f7f30
name: 'Ashley Koss'
contract_number: 323/2026
deadline_at: '2027-09-23'
technical_responsible:
name: null
certification: null
crea: null
activities: []
occurrences: null
next_day_forecast: null
finalized_at: null
has_signed_document: false
content_hash: null
gov_br_validation_url: null
created_at: null
updated_at: null
-
id: 63bae095-f96f-3e4e-a3d0-175e8e1490fc
code: RDO-23-09-26
report_number: 1
date: '2026-09-23'
status:
id: a2d092c5-fd93-4207-897f-86dd1a74a73f
slug: null
name: null
abbreviation: nisi
color: '#bbfa86'
text_color: '#af8f6a'
work:
id: a2d092c5-f80f-4c3e-8538-27e2205ee1aa
name: 'Emília Pedrosa Galhardo'
started_at: '2009-06-26 20:31:02'
filled_by:
id: a2d092c5-fc10-4e90-b314-fd45a430c353
name: 'Ms. Nyah Dicki DDS'
contract_number: 172/2026
deadline_at: '2027-09-23'
technical_responsible:
name: null
certification: null
crea: null
activities: []
occurrences: null
next_day_forecast: null
finalized_at: null
has_signed_document: false
content_hash: null
gov_br_validation_url: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 45304d8f-ed90-3f95-a7c0-bd4b9ad08a10
code:
type: string
example: RDO-23-09-26
report_number:
type: integer
example: 1
date:
type: string
example: '2026-09-23'
status:
type: object
properties:
id:
type: string
example: a2d092c5-f420-4661-9426-c607fba8910b
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
abbreviation:
type: string
example: hic
color:
type: string
example: '#8acfe8'
text_color:
type: string
example: '#f21501'
work:
type: object
properties:
id:
type: string
example: a2d092c5-e904-4567-84da-11129ece55b5
name:
type: string
example: 'Ester Clarice Assunção'
started_at:
type: string
example: '2020-02-21 01:54:41'
filled_by:
type: object
properties:
id:
type: string
example: a2d092c5-f052-45e9-94a2-f6e8f43f7f30
name:
type: string
example: 'Ashley Koss'
contract_number:
type: string
example: 323/2026
deadline_at:
type: string
example: '2027-09-23'
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
has_signed_document:
type: boolean
example: false
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
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: f7265748-a611-3638-a5f1-4afd0262a8cc
nullable: true
contract_id:
type: string
description: 'Contrato. The uuid of an existing record in the contracts table.'
example: 3d9395d3-de43-3a82-91aa-1bc021528029
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: 9416f9d0-89b6-3889-999f-dbdfc420b9ee
nullable: true
filled_by:
type: string
description: 'Preenchido por. The uuid of an existing record in the users table.'
example: 0b0887d6-0255-34a7-b341-885aae6e4b20
nullable: true
responsible_id:
type: string
description: 'Responsável. The uuid of an existing record in the users table.'
example: 0d8e2c6a-1fb2-36ed-9a99-e40896a6eeb1
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: f5b40f93-6f10-3a88-87e4-e69f0d670668
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: 7518600d-e0b7-3827-8a2f-4ae305e2efda
code: RDO-23-09-26
report_number: 1
date: '2026-09-23'
status:
id: a2d092c6-0f47-4077-9b5e-a6e1aed2a657
slug: null
name: null
abbreviation: esse
color: '#ccd227'
text_color: '#94d1d4'
work:
id: a2d092c6-09db-45af-ac8e-26da6cf9bf2b
name: 'Paulo Grego Quintana'
started_at: '1982-03-04 23:48:20'
filled_by:
id: a2d092c6-0dbe-4313-8846-c76ccfbae549
name: 'Dayna Greenholt Jr.'
contract_number: 064/2026
deadline_at: '2027-09-23'
technical_responsible:
name: null
certification: null
crea: null
activities: []
occurrences: null
next_day_forecast: null
finalized_at: null
has_signed_document: false
content_hash: null
gov_br_validation_url: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 7518600d-e0b7-3827-8a2f-4ae305e2efda
code:
type: string
example: RDO-23-09-26
report_number:
type: integer
example: 1
date:
type: string
example: '2026-09-23'
status:
type: object
properties:
id:
type: string
example: a2d092c6-0f47-4077-9b5e-a6e1aed2a657
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
abbreviation:
type: string
example: esse
color:
type: string
example: '#ccd227'
text_color:
type: string
example: '#94d1d4'
work:
type: object
properties:
id:
type: string
example: a2d092c6-09db-45af-ac8e-26da6cf9bf2b
name:
type: string
example: 'Paulo Grego Quintana'
started_at:
type: string
example: '1982-03-04 23:48:20'
filled_by:
type: object
properties:
id:
type: string
example: a2d092c6-0dbe-4313-8846-c76ccfbae549
name:
type: string
example: 'Dayna Greenholt Jr.'
contract_number:
type: string
example: 064/2026
deadline_at:
type: string
example: '2027-09-23'
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
has_signed_document:
type: boolean
example: false
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: 7e7fe59e-5fcc-4804-9e4d-9fbfac5d17c3
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: sit
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: nemo
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'
nullable: true
required:
- path
parameters:
-
in: path
name: dailyLog
description: 'Daily Log UUID'
example: pariatur
required: true
schema:
type: string
'/api/daily-logs/{dailyLog}/reopen':
post:
summary: 'Reopen daily log'
operationId: reopenDailyLog
description: 'Send a finalized RDO back to draft (Finalizado → Rascunho). Refused when a gov.br-signed document is attached'
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: ullam
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: consequatur
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: exercitationem
required: true
schema:
type: string
-
in: path
name: id
description: 'The ID of the photo.'
example: aut
required: true
schema:
type: string
-
in: path
name: photo
description: 'Photo (File) UUID'
example: veniam
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: enim
required: true
schema:
type: string
-
in: path
name: photo
description: 'Photo (File) UUID'
example: alias
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: 039066e3-2f2a-3c6d-b6f2-5e9c7beb98f4
name: In
code: LKG
description: 'Necessitatibus velit vel quia sed quasi in.'
active: true
-
id: 24cc5480-2899-3346-89ad-a83e9b89515e
name: Dolor
code: TRE
description: 'Perferendis cum omnis sit sit.'
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: 039066e3-2f2a-3c6d-b6f2-5e9c7beb98f4
name: In
code: LKG
description: 'Necessitatibus velit vel quia sed quasi in.'
active: true
-
id: 24cc5480-2899-3346-89ad-a83e9b89515e
name: Dolor
code: TRE
description: 'Perferendis cum omnis sit sit.'
active: true
items:
type: object
properties:
id:
type: string
example: 039066e3-2f2a-3c6d-b6f2-5e9c7beb98f4
name:
type: string
example: In
code:
type: string
example: LKG
description:
type: string
example: 'Necessitatibus velit vel quia sed quasi in.'
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: 44a18547-13f6-3920-861c-e80aa3ecc4af
name: Pariatur
code: ZDH
description: 'Ullam sit repellat ut consequatur error aut doloremque ut.'
active: true
properties:
data:
type: object
properties:
id:
type: string
example: 44a18547-13f6-3920-861c-e80aa3ecc4af
name:
type: string
example: Pariatur
code:
type: string
example: ZDH
description:
type: string
example: 'Ullam sit repellat ut consequatur error aut doloremque ut.'
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: voluptas
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: repellat
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: 6c19832e-59de-3509-b0a4-6828f3e3423b
name: 'Pérola da Silva Fidalgo'
description: 'Aut ratione adipisci est ipsum id dignissimos. Laborum ex sequi quam rem velit quis. Impedit magnam earum laboriosam corporis.'
module: document
-
id: 7f25a5b8-f0b1-333d-99fe-b63d95099137
name: 'Noel Walter Vega Neto'
description: 'Nam qui commodi reprehenderit corporis voluptatum. Ratione facere eum ea et tenetur sit. Modi inventore eos porro excepturi et. Quasi id occaecati cupiditate molestiae provident quas.'
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: 6c19832e-59de-3509-b0a4-6828f3e3423b
name: 'Pérola da Silva Fidalgo'
description: 'Aut ratione adipisci est ipsum id dignissimos. Laborum ex sequi quam rem velit quis. Impedit magnam earum laboriosam corporis.'
module: document
-
id: 7f25a5b8-f0b1-333d-99fe-b63d95099137
name: 'Noel Walter Vega Neto'
description: 'Nam qui commodi reprehenderit corporis voluptatum. Ratione facere eum ea et tenetur sit. Modi inventore eos porro excepturi et. Quasi id occaecati cupiditate molestiae provident quas.'
module: document
items:
type: object
properties:
id:
type: string
example: 6c19832e-59de-3509-b0a4-6828f3e3423b
name:
type: string
example: 'Pérola da Silva Fidalgo'
description:
type: string
example: 'Aut ratione adipisci est ipsum id dignissimos. Laborum ex sequi quam rem velit quis. Impedit magnam earum laboriosam corporis.'
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: bb468a36-8d74-3a2d-a438-524a203b5f08
name: 'Dr. Felipe Marinho Galindo Filho'
description: 'Quis tenetur consequatur id nesciunt. Provident sunt aut dolore beatae. Ea delectus ipsa sit fugit.'
module: document
properties:
data:
type: object
properties:
id:
type: string
example: bb468a36-8d74-3a2d-a438-524a203b5f08
name:
type: string
example: 'Dr. Felipe Marinho Galindo Filho'
description:
type: string
example: 'Quis tenetur consequatur id nesciunt. Provident sunt aut dolore beatae. Ea delectus ipsa sit fugit.'
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: aut
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:
- necessitatibus
required: false
schema:
type: array
description: 'The uuid of an existing record in the document_categories table.'
example:
- necessitatibus
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: deleniti
required: false
schema:
type: string
description: 'Type of the related documentable entity. The type of an existing record in the documentables table.'
example: deleniti
nullable: true
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- in
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- in
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- alias
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- alias
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: f56149ac-f28d-3fd0-a47f-b69cbd8e047e
name: 'Sr. Ivan Jerônimo Serrano'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
-
id: 6f3f8241-d31d-3786-9409-84cb54a2b5a3
name: 'Srta. Flor Soares Jr.'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: f56149ac-f28d-3fd0-a47f-b69cbd8e047e
name: 'Sr. Ivan Jerônimo Serrano'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
-
id: 6f3f8241-d31d-3786-9409-84cb54a2b5a3
name: 'Srta. Flor Soares Jr.'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: f56149ac-f28d-3fd0-a47f-b69cbd8e047e
name:
type: string
example: 'Sr. Ivan Jerônimo Serrano'
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: 8e7b2a85-a568-3a3e-9a92-942e6c7ca3ea
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: 23769cee-0431-3499-8ac4-669860e51922
name: 'Rosana Fidalgo Neto'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 23769cee-0431-3499-8ac4-669860e51922
name:
type: string
example: 'Rosana Fidalgo Neto'
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: 33681457-df1f-3ae2-8909-69aea77049e0
file:
type: object
description: Arquivo.
example:
- example1
- example2
properties:
path:
type: string
description: 'Caminho do arquivo. This field is required when file is present.'
example: 'Example File path'
name:
type: string
description: 'Nome do arquivo.'
example: 'Example Name'
extension:
type: string
description: 'Extensão do arquivo.'
example: 'Example File extension'
size:
type: string
description: 'Tamanho do arquivo.'
example: 'Example File size'
documentable_type:
type: string
description: 'Documentable type.'
example: 'Example Documentable type'
enum:
- customer
- work
- work_location
- supplier
- employee
documentable_id:
type: string
description: 'Documentable id.'
example: 'Example Documentable id'
parameters:
-
in: path
name: id
description: 'The ID of the document.'
example: 17
required: true
schema:
type: integer
-
in: path
name: document
description: 'Document ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/documents/{document}':
delete:
summary: 'Delete document'
operationId: deleteDocument
description: 'Delete a document'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Documents
parameters:
-
in: path
name: document
description: 'Document ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
/api/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: labore
nullable: true
renewal_status:
type: string
description: ''
example: completed
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: sint
nullable: true
epi_type_id:
type: string
description: 'The uuid of an existing record in the epi_types table.'
example: in
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
confirm_insufficient_stock:
type: boolean
description: ''
example: false
parameters:
-
in: path
name: id
description: 'EPI delivery UUID'
example: quis
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: ut
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: 977c8652-cc52-3ef7-b39e-86a50f42a83a
name: 'aliquid rerum'
default_validity_days: 259
requires_signature: false
numero_ca: '31481'
product: null
available_quantity: null
created_at: null
updated_at: null
-
id: 17df819a-64cb-34d7-ab03-5302a9144b3e
name: 'exercitationem exercitationem'
default_validity_days: 222
requires_signature: true
numero_ca: '35182'
product: null
available_quantity: 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: 977c8652-cc52-3ef7-b39e-86a50f42a83a
name: 'aliquid rerum'
default_validity_days: 259
requires_signature: false
numero_ca: '31481'
product: null
available_quantity: null
created_at: null
updated_at: null
-
id: 17df819a-64cb-34d7-ab03-5302a9144b3e
name: 'exercitationem exercitationem'
default_validity_days: 222
requires_signature: true
numero_ca: '35182'
product: null
available_quantity: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 977c8652-cc52-3ef7-b39e-86a50f42a83a
name:
type: string
example: 'aliquid rerum'
default_validity_days:
type: integer
example: 259
requires_signature:
type: boolean
example: false
numero_ca:
type: string
example: '31481'
product:
type: string
example: null
nullable: true
available_quantity:
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:
- 'EPI Types'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
q:
type: string
description: ''
example: maiores
nullable: true
stock_id:
type: string
description: 'The uuid of an existing record in the stocks table.'
example: quo
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
numero_ca:
type: string
description: 'Número do CA. O campo value não pode ser superior a 20 caracteres.'
example: 'Example Numero ca'
nullable: true
action:
type: string
description: Ação.
example: 'Example Action'
enum:
- link_existing
- create_new
product_id:
type: string
description: 'Produto. This field is required when action is link_existing. The uuid of an existing record in the products table.'
example: 608924d3-a9c4-38f1-8a4e-6fce04f2b84e
product_family_id:
type: string
description: 'Família do produto. This field is required when action is create_new. The uuid of an existing record in the product_families table.'
example: 511426cc-9223-3705-8a48-2bcba775ddba
required:
- name
- default_validity_days
- action
/api/epi-types/candidates:
get:
summary: 'List catalog products that could become EPI'
operationId: listCatalogProductsThatCouldBecomeEPI
description: 'Products sitting in a family flagged as EPI that do not have EPI attributes yet. Being here does not make a product an EPI: it becomes one when someone gives it a validity, through the create endpoint with action link_existing.'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'EPI Types'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
q:
type: string
description: ''
example: eum
nullable: true
stock_id:
type: string
description: 'The uuid of an existing record in the stocks table.'
example: dolor
nullable: true
'/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: d59a9784-90ba-3d60-bc26-c221e95d5e1b
name: 'inventore atque'
default_validity_days: 260
requires_signature: false
numero_ca: '12055'
product: null
available_quantity: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: d59a9784-90ba-3d60-bc26-c221e95d5e1b
name:
type: string
example: 'inventore atque'
default_validity_days:
type: integer
example: 260
requires_signature:
type: boolean
example: false
numero_ca:
type: string
example: '12055'
product:
type: string
example: null
nullable: true
available_quantity:
type: string
example: null
nullable: true
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
numero_ca:
type: string
description: 'Número do CA. O campo value não pode ser superior a 20 caracteres.'
example: 'Example Numero ca'
nullable: 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: libero
required: true
schema:
type: string
/api/epi-types/link-products:
post:
summary: 'Link EPI types to catalog products in bulk'
operationId: linkEPITypesToCatalogProductsInBulk
description: 'Link several EPI types to catalog products at once, creating the product where it does not exist yet. All or nothing: one refusal rolls back the whole batch.'
parameters: []
responses: { }
tags:
- 'EPI Types'
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:
epi_type_id:
type: string
description: 'Tipo de EPI. The uuid of an existing record in the epi_types table.'
example: 1a4e7c5d-5185-3751-b078-4ad440d0b7e3
action:
type: string
description: Ação.
example: 'Example Items * action'
enum:
- link_existing
- create_new
product_id:
type: string
description: 'Produto. This field is required when items.*.action is link_existing. The uuid of an existing record in the products table.'
example: 848f3e1a-152c-3a73-a3a0-e074dca8e877
product_family_id:
type: string
description: 'Família do produto. This field is required when items.*.action is create_new. The uuid of an existing record in the product_families table.'
example: 7cb9f7e9-e496-385a-a167-dfdc4e0d9477
required:
- epi_type_id
- action
required:
- items
'/api/epi-types/{epiType}/product':
put:
summary: 'Link an EPI type to a catalog product'
operationId: linkAnEPITypeToACatalogProduct
description: 'Link one EPI type to an existing product, or create the product from the EPI type name.'
parameters: []
responses: { }
tags:
- 'EPI Types'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
action:
type: string
description: Ação.
example: 'Example Action'
enum:
- link_existing
- create_new
product_id:
type: string
description: 'Produto. This field is required when action is link_existing. The uuid of an existing record in the products table.'
example: 47492f32-b8fd-34de-8074-4c2f1ea6dd40
product_family_id:
type: string
description: 'Família do produto. This field is required when action is create_new. The uuid of an existing record in the product_families table.'
example: a3b997da-d15d-3c6c-a286-345b53aeef79
required:
- action
parameters:
-
in: path
name: epiType
description: 'EPI type UUID'
example: omnis
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: 27886550-7113-44e6-a323-d6292580ebe6
name: fuga
description: 'Aspernatur temporibus doloribus tenetur sapiente sed dolores sed.'
created_at: null
updated_at: null
-
id: aa536ead-47b3-4b70-88fa-fbb512c85449
name: est
description: 'Rerum distinctio ut distinctio quia ut odio quis.'
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: 27886550-7113-44e6-a323-d6292580ebe6
name: fuga
description: 'Aspernatur temporibus doloribus tenetur sapiente sed dolores sed.'
created_at: null
updated_at: null
-
id: aa536ead-47b3-4b70-88fa-fbb512c85449
name: est
description: 'Rerum distinctio ut distinctio quia ut odio quis.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 27886550-7113-44e6-a323-d6292580ebe6
name:
type: string
example: fuga
description:
type: string
example: 'Aspernatur temporibus doloribus tenetur sapiente sed dolores sed.'
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: 40396db3-d17e-419e-b34a-e07d80199292
name: doloremque
description: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 40396db3-d17e-419e-b34a-e07d80199292
name:
type: string
example: doloremque
description:
type: string
example: null
nullable: true
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: incidunt
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: false
nullable: true
page:
type: integer
description: 'O campo value deve ser pelo menos 1.'
example: 69
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: dolores
nullable: true
employee_id:
type: string
description: 'The uuid of an existing record in the employees table.'
example: sequi
nullable: true
has_term:
type: boolean
description: ''
example: false
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
-
in: query
name: status
description: 'Filtrar por situação (active, inactive ou all). Sem o parâmetro, lista apenas ativos.'
example: active
required: false
schema:
type: string
description: 'Filtrar por situação (active, inactive ou all). Sem o parâmetro, lista apenas ativos.'
example: active
enum:
- active
- inactive
- all
nullable: true
-
in: query
name: employee_roles
description: 'The uuid of an existing record in the employee_roles table.'
example:
- qui
required: false
schema:
type: array
description: 'The uuid of an existing record in the employee_roles table.'
example:
- qui
items:
type: string
-
in: query
name: admission_date_from
description: 'Data inicial do período de admissão. O campo value deve ser uma data válida.'
example: '2026-01-01'
required: false
schema:
type: string
description: 'Data inicial do período de admissão. O campo value deve ser uma data válida.'
example: '2026-01-01'
nullable: true
-
in: query
name: admission_date_to
description: 'Data final do período de admissão. O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a admission_date_from.'
example: '2026-12-31'
required: false
schema:
type: string
description: 'Data final do período de admissão. O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a admission_date_from.'
example: '2026-12-31'
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 87656e6a-86e3-4bcf-a887-6f5929e5ab20
name: 'Paola Carla Paz Neto'
cpf: 068.241.827-00
rg: null
ctps: null
phone: null
birthdate: null
email: marcelo96@example.net
pis_pasep: null
admission_date: '2009-02-14'
daily_salary: '91.45'
monthly_salary: null
nationality: null
place_of_birth: 'Paulo do Leste'
status: active
status_label: Ativo
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: a2d092c6-addd-4410-b826-60a156bcfad0
name: impedit
created_at: null
updated_at: null
-
id: 8354f179-e4b5-4acc-826b-28fe84a3c080
name: 'Sr. Ronaldo Diogo Saraiva Jr.'
cpf: 845.884.780-75
rg: null
ctps: null
phone: '(69) 99049-4142'
birthdate: null
email: null
pis_pasep: null
admission_date: '1981-12-16'
daily_salary: '69.55'
monthly_salary: '9530.28'
nationality: null
place_of_birth: 'Queirós do Leste'
status: active
status_label: Ativo
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: a2d092c6-b266-4e83-ade6-2f735ad7a795
name: nisi
created_at: null
updated_at: null
links:
first: '/?page=1'
last: '/?page=1'
prev: '/?page=68'
next: null
meta:
current_page: 69
from: 681
last_page: 1
links:
-
url: '/?page=68'
label: '« Anterior'
page: 68
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: 682
total: 2
properties:
data:
type: array
example:
-
id: 87656e6a-86e3-4bcf-a887-6f5929e5ab20
name: 'Paola Carla Paz Neto'
cpf: 068.241.827-00
rg: null
ctps: null
phone: null
birthdate: null
email: marcelo96@example.net
pis_pasep: null
admission_date: '2009-02-14'
daily_salary: '91.45'
monthly_salary: null
nationality: null
place_of_birth: 'Paulo do Leste'
status: active
status_label: Ativo
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: a2d092c6-addd-4410-b826-60a156bcfad0
name: impedit
created_at: null
updated_at: null
-
id: 8354f179-e4b5-4acc-826b-28fe84a3c080
name: 'Sr. Ronaldo Diogo Saraiva Jr.'
cpf: 845.884.780-75
rg: null
ctps: null
phone: '(69) 99049-4142'
birthdate: null
email: null
pis_pasep: null
admission_date: '1981-12-16'
daily_salary: '69.55'
monthly_salary: '9530.28'
nationality: null
place_of_birth: 'Queirós do Leste'
status: active
status_label: Ativo
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: a2d092c6-b266-4e83-ade6-2f735ad7a795
name: nisi
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 87656e6a-86e3-4bcf-a887-6f5929e5ab20
name:
type: string
example: 'Paola Carla Paz Neto'
cpf:
type: string
example: 068.241.827-00
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: null
nullable: true
email:
type: string
example: marcelo96@example.net
pis_pasep:
type: string
example: null
nullable: true
admission_date:
type: string
example: '2009-02-14'
daily_salary:
type: string
example: '91.45'
monthly_salary:
type: string
example: null
nullable: true
nationality:
type: string
example: null
nullable: true
place_of_birth:
type: string
example: 'Paulo do Leste'
status:
type: string
example: active
status_label:
type: string
example: Ativo
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: a2d092c6-addd-4410-b826-60a156bcfad0
name:
type: string
example: impedit
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=68'
next:
type: string
example: null
nullable: true
meta:
type: object
properties:
current_page:
type: integer
example: 69
from:
type: integer
example: 681
last_page:
type: integer
example: 1
links:
type: array
example:
-
url: '/?page=68'
label: '« Anterior'
page: 68
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=68'
label:
type: string
example: '« Anterior'
page:
type: integer
example: 68
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 10
to:
type: integer
example: 682
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:
data:
id: 646303f2-0c7f-4ebd-841c-b9677d29d890
name: 'Emanuelly Ferminiano Filho'
cpf: 771.518.819-45
rg: null
ctps: null
phone: null
birthdate: null
email: suelen49@example.com
pis_pasep: '89491124744'
admission_date: '2014-08-24'
daily_salary: '71.23'
monthly_salary: null
nationality: null
place_of_birth: 'Solano do Leste'
status: active
status_label: Ativo
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: a2d092c6-cfa6-4ba9-b501-e6174c4a5e98
name: quaerat
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 646303f2-0c7f-4ebd-841c-b9677d29d890
name:
type: string
example: 'Emanuelly Ferminiano Filho'
cpf:
type: string
example: 771.518.819-45
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: null
nullable: true
email:
type: string
example: suelen49@example.com
pis_pasep:
type: string
example: '89491124744'
admission_date:
type: string
example: '2014-08-24'
daily_salary:
type: string
example: '71.23'
monthly_salary:
type: string
example: null
nullable: true
nationality:
type: string
example: null
nullable: true
place_of_birth:
type: string
example: 'Solano do Leste'
status:
type: string
example: active
status_label:
type: string
example: Ativo
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: a2d092c6-cfa6-4ba9-b501-e6174c4a5e98
name:
type: string
example: quaerat
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
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'
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: 8355134e-749b-4bef-83da-6ad7ee7dbcd0
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. O campo value deve ser uma data anterior ou igual a today.'
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/excel:
get:
summary: 'Export employees to Excel'
operationId: exportEmployeesToExcel
description: 'Dispatches async Excel generation using the same filters as the listing. Frontend is notified via Pusher when ready.'
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
-
in: query
name: status
description: 'Filtrar por situação (active, inactive ou all). Sem o parâmetro, lista apenas ativos.'
example: active
required: false
schema:
type: string
description: 'Filtrar por situação (active, inactive ou all). Sem o parâmetro, lista apenas ativos.'
example: active
enum:
- active
- inactive
- all
nullable: true
-
in: query
name: employee_roles
description: 'The uuid of an existing record in the employee_roles table.'
example:
- consequuntur
required: false
schema:
type: array
description: 'The uuid of an existing record in the employee_roles table.'
example:
- consequuntur
items:
type: string
-
in: query
name: admission_date_from
description: 'Data inicial do período de admissão. O campo value deve ser uma data válida.'
example: '2026-01-01'
required: false
schema:
type: string
description: 'Data inicial do período de admissão. O campo value deve ser uma data válida.'
example: '2026-01-01'
nullable: true
-
in: query
name: admission_date_to
description: 'Data final do período de admissão. O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a admission_date_from.'
example: '2026-12-31'
required: false
schema:
type: string
description: 'Data final do período de admissão. O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a admission_date_from.'
example: '2026-12-31'
nullable: true
responses:
202:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
channel: string
event: string
properties:
message:
type: string
example: string
channel:
type: string
example: string
event:
type: string
example: string
422:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- Employees
'/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: 879a7a61-bdf2-4d5e-a549-f4e7010de0cf
name: 'Raphael Campos Filho'
cpf: 564.840.361-85
rg: '645847717'
ctps: '536981911'
phone: '(46) 4012-8653'
birthdate: null
email: vieira.gabrielle@example.net
pis_pasep: '51209321095'
admission_date: '2009-02-25'
daily_salary: null
monthly_salary: null
nationality: 'Nova Guiné'
place_of_birth: null
status: active
status_label: Ativo
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: a2d092c6-c5d7-45a7-abd0-9eccbe2387e0
name: nesciunt
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 879a7a61-bdf2-4d5e-a549-f4e7010de0cf
name:
type: string
example: 'Raphael Campos Filho'
cpf:
type: string
example: 564.840.361-85
rg:
type: string
example: '645847717'
ctps:
type: string
example: '536981911'
phone:
type: string
example: '(46) 4012-8653'
birthdate:
type: string
example: null
nullable: true
email:
type: string
example: vieira.gabrielle@example.net
pis_pasep:
type: string
example: '51209321095'
admission_date:
type: string
example: '2009-02-25'
daily_salary:
type: string
example: null
nullable: true
monthly_salary:
type: string
example: null
nullable: true
nationality:
type: string
example: 'Nova Guiné'
place_of_birth:
type: string
example: null
nullable: true
status:
type: string
example: active
status_label:
type: string
example: Ativo
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: a2d092c6-c5d7-45a7-abd0-9eccbe2387e0
name:
type: string
example: nesciunt
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: 242faba4-0bf8-48bf-b20f-5404700d6dda
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. O campo value deve ser uma data anterior ou igual a today.'
example: '2024-01-01'
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: 3
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}/dismiss':
post:
summary: 'Dismiss employee'
operationId: dismissEmployee
description: 'Register the dismissal of an active employee'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 7efe67a8-6175-4c17-83ed-7c726ca8c110
name: 'Noa Ávila'
cpf: 205.117.363-73
rg: '848154376'
ctps: '128918669'
phone: null
birthdate: '2026-06-24'
email: abarros@example.org
pis_pasep: null
admission_date: '2011-04-18'
daily_salary: '133.26'
monthly_salary: '8986.53'
nationality: null
place_of_birth: 'Porto Filipe do Norte'
status: active
status_label: Ativo
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: a2d092c6-dfec-4275-9190-8876dce1b13f
name: quidem
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 7efe67a8-6175-4c17-83ed-7c726ca8c110
name:
type: string
example: 'Noa Ávila'
cpf:
type: string
example: 205.117.363-73
rg:
type: string
example: '848154376'
ctps:
type: string
example: '128918669'
phone:
type: string
example: null
nullable: true
birthdate:
type: string
example: '2026-06-24'
email:
type: string
example: abarros@example.org
pis_pasep:
type: string
example: null
nullable: true
admission_date:
type: string
example: '2011-04-18'
daily_salary:
type: string
example: '133.26'
monthly_salary:
type: string
example: '8986.53'
nationality:
type: string
example: null
nullable: true
place_of_birth:
type: string
example: 'Porto Filipe do Norte'
status:
type: string
example: active
status_label:
type: string
example: Ativo
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: a2d092c6-dfec-4275-9190-8876dce1b13f
name:
type: string
example: quidem
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- Employees
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
dismissal_date:
type: string
description: 'Data da baixa. O campo value deve ser uma data válida. O campo value deve ser uma data anterior ou igual a today.'
example: '2026-09-23'
dismissal_reason:
type: string
description: 'Motivo da saída.'
example: resignation
enum:
- resignation
- dismissal_without_cause
- dismissal_with_cause
- end_of_contract
- retirement
required:
- dismissal_date
- dismissal_reason
parameters:
-
in: path
name: employee
description: 'Employee ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/employees/{employee}/rehire':
post:
summary: 'Rehire employee'
operationId: rehireEmployee
description: 'Rehire an inactive employee with a new admission date'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 657c6acf-afee-41ec-95c6-04c96c311ada
name: 'Juliana Prado Valentin Sobrinho'
cpf: 089.163.385-77
rg: null
ctps: '608641871'
phone: '(45) 2328-8016'
birthdate: '1985-01-07'
email: alicia55@example.net
pis_pasep: null
admission_date: '2010-06-08'
daily_salary: '287.73'
monthly_salary: null
nationality: Chile
place_of_birth: 'Martinho do Leste'
status: active
status_label: Ativo
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: a2d092c6-e803-47fd-86b6-32e6dcd095ae
name: et
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 657c6acf-afee-41ec-95c6-04c96c311ada
name:
type: string
example: 'Juliana Prado Valentin Sobrinho'
cpf:
type: string
example: 089.163.385-77
rg:
type: string
example: null
nullable: true
ctps:
type: string
example: '608641871'
phone:
type: string
example: '(45) 2328-8016'
birthdate:
type: string
example: '1985-01-07'
email:
type: string
example: alicia55@example.net
pis_pasep:
type: string
example: null
nullable: true
admission_date:
type: string
example: '2010-06-08'
daily_salary:
type: string
example: '287.73'
monthly_salary:
type: string
example: null
nullable: true
nationality:
type: string
example: Chile
place_of_birth:
type: string
example: 'Martinho do Leste'
status:
type: string
example: active
status_label:
type: string
example: Ativo
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: a2d092c6-e803-47fd-86b6-32e6dcd095ae
name:
type: string
example: et
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- Employees
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
admission_date:
type: string
description: 'Nova data de admissão. O campo value deve ser uma data válida. O campo value deve ser uma data anterior ou igual a today.'
example: '2026-09-23'
required:
- admission_date
parameters:
-
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: voluptas
agency:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: ykjbauwkqexvgnmlxnsiusugo
account:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: oebtzbe
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: sdloujbzlyzdzfncpudjdbc
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: 3
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: consequatur
agency:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: lpwjdwcsxzacfqxh
account:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: tajugajsqbgsbmwnpdvp
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: e
nullable: true
favorite:
type: boolean
description: ''
example: false
parameters:
-
in: path
name: employee_id
description: 'The ID of the employee.'
example: 16
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: quia
nullable: true
status:
type: string
description: ''
example: expiring
enum:
- valid
- expiring
- expired
nullable: true
epi_type_id:
type: string
description: 'The uuid of an existing record in the epi_types table.'
example: qui
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: 04ad3619-d876-3ee7-8be1-c3f1e5728c1d
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
delivered_by_employee_id:
type: string
description: 'Responsável pela entrega. The uuid of an existing record in the employees table.'
example: d6f68773-6cec-448f-a03a-5842d98037f0
nullable: true
stock_id:
type: string
description: 'Estoque. The uuid of an existing record in the stocks table.'
example: 18149321-23af-30cd-b55e-2f54507e0928
nullable: true
confirm_insufficient_stock:
type: boolean
description: 'Confirmar saldo insuficiente.'
example: true
required:
- epi_type_id
- delivery_date
- condition
parameters:
-
in: path
name: employee_id
description: 'The ID of the employee.'
example: 5
required: true
schema:
type: integer
-
in: path
name: employee
description: 'Employee UUID'
example: fugit
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: rem
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: d4b1b727-e1ab-34f9-91fe-b32a9c4b1f25
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
delivered_by_employee_id:
type: string
description: 'Responsável pela entrega. The uuid of an existing record in the employees table.'
example: 16a1ad87-9522-4cfc-ae93-73cb18f2a1b3
nullable: true
stock_id:
type: string
description: 'Estoque. The uuid of an existing record in the stocks table.'
example: 135851c4-be1d-3e54-87e8-47e7a1ea1f41
nullable: true
confirm_insufficient_stock:
type: boolean
description: 'Confirmar saldo insuficiente.'
example: true
parameters:
-
in: path
name: employee_id
description: 'The ID of the employee.'
example: 17
required: true
schema:
type: integer
-
in: path
name: id
description: 'EPI delivery UUID'
example: dolor
required: true
schema:
type: string
-
in: path
name: employee
description: 'Employee UUID'
example: qui
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'
is_kit_initial:
type: boolean
description: 'Kit inicial.'
example: true
show_epi_receipt_text:
type: boolean
description: 'Exibir texto do recibo.'
example: true
delivered_by_employee_id:
type: string
description: 'Responsável pela entrega. The uuid of an existing record in the employees table.'
example: 8f36bac8-7998-4437-8ebb-adf32d1d0cfe
nullable: true
stock_id:
type: string
description: 'Estoque. The uuid of an existing record in the stocks table.'
example: 7c87b8ad-3c96-3946-8f8b-e626a6d9ca65
nullable: true
confirm_insufficient_stock:
type: boolean
description: 'Confirmar saldo insuficiente.'
example: true
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: f665774b-0f59-3b43-bda0-7e07fe3ed91a
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
required:
- epi_type_id
- condition
required:
- delivery_date
- items
parameters:
-
in: path
name: employee
description: 'Employee UUID'
example: dolore
required: true
schema:
type: string
'/api/employees/{employee}/epi-deliveries/{id}/promote-to-kit':
post:
summary: 'Promote EPI delivery to kit'
operationId: promoteEPIDeliveryToKit
description: 'Turn a standalone EPI delivery into a single-item kit so it can generate the acknowledgement term. Idempotent: a delivery already belonging to a kit is returned unchanged.'
parameters: []
responses: { }
tags:
- Employees
parameters:
-
in: path
name: employee
description: 'Employee UUID'
example: ut
required: true
schema:
type: string
-
in: path
name: id
description: 'EPI delivery UUID'
example: hic
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: assumenda
required: true
schema:
type: string
-
in: path
name: id
description: 'EPI delivery UUID'
example: aliquid
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: 12
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: 14
nullable: true
q:
type: string
description: ''
example: facilis
nullable: true
employee_id:
type: string
description: 'The uuid of an existing record in the employees table.'
example: corporis
nullable: true
has_term:
type: boolean
description: ''
example: false
nullable: true
parameters:
-
in: path
name: employee_id
description: 'The ID of the employee.'
example: 3
required: true
schema:
type: integer
-
in: path
name: employee
description: 'Employee UUID'
example: est
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: atque
required: true
schema:
type: string
-
in: path
name: kitUuid
description: 'Kit UUID'
example: 4f44596d-a935-34b5-8ab6-35a6f62dcb88
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: voluptatibus
required: true
schema:
type: string
-
in: path
name: kitUuid
description: 'Kit UUID'
example: 759c4351-900a-3123-9ecc-dcac62f4fb7c
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: 8bba2f93-c5a6-3d17-851c-01fd03815048
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: 5fbf5f83-2170-3dc2-bcba-3579f61495e6
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: 378200c8-e0f3-3e44-ae45-51ab3817a4f1
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: 2c93098f-7866-3f21-927a-324cad5bbc50
document_type: nfe
document_type_label: NF-e
service_description: null
nfe_access_key: '04638366620555786251637862222849201300485959'
nfe_number: '080046'
nfe_series: '00'
issue_date: '2011-03-17T03:00:00.000000Z'
total_value: '9395.33'
emit:
cnpj: '25596553337627'
name: Kerluke-Bosco
dest:
document: '14261629090538'
name: 'Pfannerstill PLC'
supplier:
id: a2d092c8-8470-4ea4-8149-0f023d33c18e
name: 'Sra. Graziela Lara Sandoval'
document: 04.136.520/0001-87
financial_status: pending
products_imported_at: null
created_at: null
-
id: 84335b01-aa7e-398c-819c-3371acc6d45b
document_type: nfe
document_type_label: NF-e
service_description: null
nfe_access_key: '72949639969769657642309749892133587912792594'
nfe_number: '675541'
nfe_series: '28'
issue_date: '2015-08-13T03:00:00.000000Z'
total_value: '3596.29'
emit:
cnpj: '42616730581182'
name: Dickinson-Doyle
dest:
document: '12185619061849'
name: 'Parisian LLC'
supplier:
id: a2d092c8-89c9-47f2-870a-d3c8407109f1
name: 'Dr. Daniel Toledo Filho'
document: 88.075.850/0001-08
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: 2c93098f-7866-3f21-927a-324cad5bbc50
document_type: nfe
document_type_label: NF-e
service_description: null
nfe_access_key: '04638366620555786251637862222849201300485959'
nfe_number: '080046'
nfe_series: '00'
issue_date: '2011-03-17T03:00:00.000000Z'
total_value: '9395.33'
emit:
cnpj: '25596553337627'
name: Kerluke-Bosco
dest:
document: '14261629090538'
name: 'Pfannerstill PLC'
supplier:
id: a2d092c8-8470-4ea4-8149-0f023d33c18e
name: 'Sra. Graziela Lara Sandoval'
document: 04.136.520/0001-87
financial_status: pending
products_imported_at: null
created_at: null
-
id: 84335b01-aa7e-398c-819c-3371acc6d45b
document_type: nfe
document_type_label: NF-e
service_description: null
nfe_access_key: '72949639969769657642309749892133587912792594'
nfe_number: '675541'
nfe_series: '28'
issue_date: '2015-08-13T03:00:00.000000Z'
total_value: '3596.29'
emit:
cnpj: '42616730581182'
name: Dickinson-Doyle
dest:
document: '12185619061849'
name: 'Parisian LLC'
supplier:
id: a2d092c8-89c9-47f2-870a-d3c8407109f1
name: 'Dr. Daniel Toledo Filho'
document: 88.075.850/0001-08
financial_status: pending
products_imported_at: null
created_at: null
items:
type: object
properties:
id:
type: string
example: 2c93098f-7866-3f21-927a-324cad5bbc50
document_type:
type: string
example: nfe
document_type_label:
type: string
example: NF-e
service_description:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: '04638366620555786251637862222849201300485959'
nfe_number:
type: string
example: '080046'
nfe_series:
type: string
example: '00'
issue_date:
type: string
example: '2011-03-17T03:00:00.000000Z'
total_value:
type: string
example: '9395.33'
emit:
type: object
properties:
cnpj:
type: string
example: '25596553337627'
name:
type: string
example: Kerluke-Bosco
dest:
type: object
properties:
document:
type: string
example: '14261629090538'
name:
type: string
example: 'Pfannerstill PLC'
supplier:
type: object
properties:
id:
type: string
example: a2d092c8-8470-4ea4-8149-0f023d33c18e
name:
type: string
example: 'Sra. Graziela Lara Sandoval'
document:
type: string
example: 04.136.520/0001-87
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: dolores
document_type:
type: string
description: ''
example: nfe
enum:
- nfe
- nfse
supplier_id:
type: string
description: 'The uuid of an existing record in the suppliers table.'
example: laborum
work_id:
type: string
description: 'The uuid of an existing record in the works table.'
example: eum
start_date:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-09-23T09:36:35'
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: '2110-05-05'
per_page:
type: integer
description: 'O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 18
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: 3d19562d-3e61-3f67-9169-0375e2fc654d
document_type: nfe
document_type_label: NF-e
service_description: null
nfe_access_key: '18076026846351374667357315827247880976889266'
nfe_number: '698422'
nfe_series: '31'
issue_date: '1985-04-02T03:00:00.000000Z'
total_value: '191.41'
emit:
cnpj: '84713885452432'
name: 'Hermiston, Spencer and Bergnaum'
dest:
document: '47034820017567'
name: 'Mraz Ltd'
supplier:
id: a2d092c8-9b0c-4dd7-81b2-fb905ac9718c
name: 'Dr. Fabiano Gusmão Neto'
document: 26.285.389/0001-52
financial_status: pending
products_imported_at: null
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 3d19562d-3e61-3f67-9169-0375e2fc654d
document_type:
type: string
example: nfe
document_type_label:
type: string
example: NF-e
service_description:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: '18076026846351374667357315827247880976889266'
nfe_number:
type: string
example: '698422'
nfe_series:
type: string
example: '31'
issue_date:
type: string
example: '1985-04-02T03:00:00.000000Z'
total_value:
type: string
example: '191.41'
emit:
type: object
properties:
cnpj:
type: string
example: '84713885452432'
name:
type: string
example: 'Hermiston, Spencer and Bergnaum'
dest:
type: object
properties:
document:
type: string
example: '47034820017567'
name:
type: string
example: 'Mraz Ltd'
supplier:
type: object
properties:
id:
type: string
example: a2d092c8-9b0c-4dd7-81b2-fb905ac9718c
name:
type: string
example: 'Dr. Fabiano Gusmão Neto'
document:
type: string
example: 26.285.389/0001-52
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: quasi
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:
- dolor
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: c41965b4-7a16-3dc8-9a0a-70cf01e23b1c
document_type: nfe
document_type_label: NF-e
service_description: null
nfe_access_key: '07607354157555169385590387921478529626089472'
nfe_number: '461778'
nfe_series: '77'
issue_date: '2026-05-09T03:00:00.000000Z'
total_value: '3234.93'
emit:
cnpj: '71273871757633'
name: Paucek-Kilback
dest:
document: '84336125079152'
name: Schumm-Ratke
supplier:
id: a2d092c8-a424-428b-beb2-f9e57963dc50
name: 'Ellen Cristina Marin'
document: 60.605.832/0001-63
financial_status: pending
products_imported_at: null
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: c41965b4-7a16-3dc8-9a0a-70cf01e23b1c
document_type:
type: string
example: nfe
document_type_label:
type: string
example: NF-e
service_description:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: '07607354157555169385590387921478529626089472'
nfe_number:
type: string
example: '461778'
nfe_series:
type: string
example: '77'
issue_date:
type: string
example: '2026-05-09T03:00:00.000000Z'
total_value:
type: string
example: '3234.93'
emit:
type: object
properties:
cnpj:
type: string
example: '71273871757633'
name:
type: string
example: Paucek-Kilback
dest:
type: object
properties:
document:
type: string
example: '84336125079152'
name:
type: string
example: Schumm-Ratke
supplier:
type: object
properties:
id:
type: string
example: a2d092c8-a424-428b-beb2-f9e57963dc50
name:
type: string
example: 'Ellen Cristina Marin'
document:
type: string
example: 60.605.832/0001-63
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: natus
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: fd10065e-4880-3f7b-bb4e-e4d551e1e404
document_type: nfe
document_type_label: NF-e
service_description: null
nfe_access_key: '34370383351674465593973302114245722789633064'
nfe_number: '332101'
nfe_series: '78'
issue_date: '1982-04-28T03:00:00.000000Z'
total_value: '3931.48'
emit:
cnpj: '00422249754979'
name: 'Stiedemann Inc'
dest:
document: '95350817827502'
name: 'Bednar Group'
supplier:
id: a2d092c8-b19d-46cb-9ea6-3d8478bdcf7d
name: 'Dr. Miranda Galindo Salgado Sobrinho'
document: 14.945.822/0001-50
financial_status: pending
products_imported_at: null
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: fd10065e-4880-3f7b-bb4e-e4d551e1e404
document_type:
type: string
example: nfe
document_type_label:
type: string
example: NF-e
service_description:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: '34370383351674465593973302114245722789633064'
nfe_number:
type: string
example: '332101'
nfe_series:
type: string
example: '78'
issue_date:
type: string
example: '1982-04-28T03:00:00.000000Z'
total_value:
type: string
example: '3931.48'
emit:
type: object
properties:
cnpj:
type: string
example: '00422249754979'
name:
type: string
example: 'Stiedemann Inc'
dest:
type: object
properties:
document:
type: string
example: '95350817827502'
name:
type: string
example: 'Bednar Group'
supplier:
type: object
properties:
id:
type: string
example: a2d092c8-b19d-46cb-9ea6-3d8478bdcf7d
name:
type: string
example: 'Dr. Miranda Galindo Salgado Sobrinho'
document:
type: string
example: 14.945.822/0001-50
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: quisquam
name:
type: string
description: ''
example: rerum
extension:
type: string
description: ''
example: et
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: deserunt
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: a4cc5917-e696-3e1b-a03e-d463a087df17
document_type: nfe
document_type_label: NF-e
service_description: null
nfe_access_key: '34966518755256429647652023386613639741018863'
nfe_number: '106070'
nfe_series: '65'
issue_date: '2007-09-03T03:00:00.000000Z'
total_value: '7520.96'
emit:
cnpj: '04601418874413'
name: 'Gerhold Ltd'
dest:
document: '84449296436645'
name: Walsh-Deckow
supplier:
id: a2d092c8-baa0-4afc-8ec9-960ba652875c
name: 'Dr. Eunice Vieira Vieira Filho'
document: 56.863.326/0001-05
financial_status: pending
products_imported_at: null
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: a4cc5917-e696-3e1b-a03e-d463a087df17
document_type:
type: string
example: nfe
document_type_label:
type: string
example: NF-e
service_description:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: '34966518755256429647652023386613639741018863'
nfe_number:
type: string
example: '106070'
nfe_series:
type: string
example: '65'
issue_date:
type: string
example: '2007-09-03T03:00:00.000000Z'
total_value:
type: string
example: '7520.96'
emit:
type: object
properties:
cnpj:
type: string
example: '04601418874413'
name:
type: string
example: 'Gerhold Ltd'
dest:
type: object
properties:
document:
type: string
example: '84449296436645'
name:
type: string
example: Walsh-Deckow
supplier:
type: object
properties:
id:
type: string
example: a2d092c8-baa0-4afc-8ec9-960ba652875c
name:
type: string
example: 'Dr. Eunice Vieira Vieira Filho'
document:
type: string
example: 56.863.326/0001-05
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: corporis
required: true
schema:
type: string
-
in: path
name: file
description: 'UUID do arquivo anexado'
example: est
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: bf8da4c2-ce16-3e15-8f8d-cdcf77a5ed13
document_type: nfe
document_type_label: NF-e
service_description: null
nfe_access_key: '53748647990406368380157897991422238917076393'
nfe_number: '770392'
nfe_series: '45'
issue_date: '1977-12-13T03:00:00.000000Z'
total_value: '417.58'
emit:
cnpj: '57434474950865'
name: 'Pollich Ltd'
dest:
document: '08334009377836'
name: Friesen-Keebler
supplier:
id: a2d092c8-c368-47b0-8d3a-f7212b738755
name: 'Dr. Eunice Valdez Sobrinho'
document: 01.247.473/0001-50
financial_status: pending
products_imported_at: null
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: bf8da4c2-ce16-3e15-8f8d-cdcf77a5ed13
document_type:
type: string
example: nfe
document_type_label:
type: string
example: NF-e
service_description:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: '53748647990406368380157897991422238917076393'
nfe_number:
type: string
example: '770392'
nfe_series:
type: string
example: '45'
issue_date:
type: string
example: '1977-12-13T03:00:00.000000Z'
total_value:
type: string
example: '417.58'
emit:
type: object
properties:
cnpj:
type: string
example: '57434474950865'
name:
type: string
example: 'Pollich Ltd'
dest:
type: object
properties:
document:
type: string
example: '08334009377836'
name:
type: string
example: Friesen-Keebler
supplier:
type: object
properties:
id:
type: string
example: a2d092c8-c368-47b0-8d3a-f7212b738755
name:
type: string
example: 'Dr. Eunice Valdez Sobrinho'
document:
type: string
example: 01.247.473/0001-50
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:
- nam
items:
type: string
parameters:
-
in: path
name: fiscalDocument
description: 'UUID da nota fiscal'
example: nihil
required: true
schema:
type: string
'/api/fiscal-documents/{fiscalDocument}/installments':
post:
summary: 'Create installment'
operationId: createInstallment
description: 'Lança uma cobrança avulsa na nota fiscal, para o boleto que o fornecedor cobra além das duplicatas do XML. Nasce pendente e sem conta no financeiro; a geração continua sendo pelo import-nfe.'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 840fa3b5-e506-3ede-85c6-7580cfddfd5a
document_type: nfe
document_type_label: NF-e
service_description: null
nfe_access_key: '21834293979215000928117602958267063287770411'
nfe_number: '293234'
nfe_series: '97'
issue_date: '2025-07-13T03:00:00.000000Z'
total_value: '2859.59'
emit:
cnpj: '24061442130483'
name: 'Gulgowski, DuBuque and Champlin'
dest:
document: '05221824426984'
name: 'Reichel Inc'
supplier:
id: a2d092c8-cd9b-445b-a644-8dfc1217eb40
name: 'Dr. Sueli Gisela Mendonça Sobrinho'
document: 42.504.889/0001-94
financial_status: pending
products_imported_at: null
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 840fa3b5-e506-3ede-85c6-7580cfddfd5a
document_type:
type: string
example: nfe
document_type_label:
type: string
example: NF-e
service_description:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: '21834293979215000928117602958267063287770411'
nfe_number:
type: string
example: '293234'
nfe_series:
type: string
example: '97'
issue_date:
type: string
example: '2025-07-13T03:00:00.000000Z'
total_value:
type: string
example: '2859.59'
emit:
type: object
properties:
cnpj:
type: string
example: '24061442130483'
name:
type: string
example: 'Gulgowski, DuBuque and Champlin'
dest:
type: object
properties:
document:
type: string
example: '05221824426984'
name:
type: string
example: 'Reichel Inc'
supplier:
type: object
properties:
id:
type: string
example: a2d092c8-cd9b-445b-a644-8dfc1217eb40
name:
type: string
example: 'Dr. Sueli Gisela Mendonça Sobrinho'
document:
type: string
example: 42.504.889/0001-94
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:
due_date:
type: string
description: 'Vencimento. O campo value deve ser uma data válida.'
example: '2024-01-01'
amount:
type: number
description: Valor.
example: 1.0
number:
type: string
description: 'Número da cobrança. O campo value não pode ser superior a 60 caracteres.'
example: 'Example Number'
nullable: true
required:
- due_date
- amount
parameters:
-
in: path
name: fiscalDocument
description: 'UUID da nota fiscal'
example: quod
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: d4f6a3fd-9b64-3f61-9ed3-07de21f0464a
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: dignissimos
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: neque
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: est
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:
- quis
items:
type: string
required:
- mappings
parameters:
-
in: path
name: importId
description: ''
example: amet
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: 'nihil eveniet'
abbreviation: 'ON'
-
id: null
name: 'saepe dolorum'
abbreviation: DJ
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: 'nihil eveniet'
abbreviation: 'ON'
-
id: null
name: 'saepe dolorum'
abbreviation: DJ
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: 'nihil eveniet'
abbreviation:
type: string
example: 'ON'
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: aut
nullable: true
sort_desc:
type: boolean
description: ''
example: false
nullable: true
page:
type: integer
description: 'O campo value deve ser pelo menos 1.'
example: 14
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: 5
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: Andersonstad
-
id: null
name: Ashleyhaven
properties:
data:
type: array
example:
-
id: null
name: Andersonstad
-
id: null
name: Ashleyhaven
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: Andersonstad
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: dolores
required: false
schema:
type: string
description: ''
example: dolores
-
in: query
name: document
description: ''
example: est
required: false
schema:
type: string
description: ''
example: est
-
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: 44536f68-982b-3574-a7ca-ecdc52dcd6e3
receipt_number: REC-2562
receiver_type: employee
receiver:
id: null
name: 'Andrew Will'
document: 107.811.644-43
payment:
amount: 9883.18
amount_in_words: 'Valor por extenso de teste'
method: pix
description: 'Excepturi quisquam optio incidunt quis aliquam quo ut sapiente.'
issuer:
name: Pagac-Dare
document: 91.785.425/2179-49
issue:
date: '2026-09-04'
city: 'Port Penelope'
state: CE
created_by:
id: a2d092c9-01b4-41ce-a804-ea4acd819c5f
name: 'Alice Hahn'
created_at: null
updated_at: null
-
id: fb81971a-1195-3649-a264-e9cf8d529312
receipt_number: REC-7975
receiver_type: employee
receiver:
id: null
name: 'Prof. Adriel Durgan IV'
document: 723.827.768-91
payment:
amount: 8196.17
amount_in_words: 'Valor por extenso de teste'
method: cash
description: 'Voluptatibus explicabo vero deserunt cum reprehenderit repellat officia.'
issuer:
name: 'Simonis, Lynch and Schaefer'
document: 64.499.584/9866-28
issue:
date: '2026-08-31'
city: Penelopeburgh
state: MG
created_by:
id: a2d092c9-051a-4d1c-a6f8-e260359f2a41
name: 'Prof. Dedric Stokes PhD'
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: 44536f68-982b-3574-a7ca-ecdc52dcd6e3
receipt_number: REC-2562
receiver_type: employee
receiver:
id: null
name: 'Andrew Will'
document: 107.811.644-43
payment:
amount: 9883.18
amount_in_words: 'Valor por extenso de teste'
method: pix
description: 'Excepturi quisquam optio incidunt quis aliquam quo ut sapiente.'
issuer:
name: Pagac-Dare
document: 91.785.425/2179-49
issue:
date: '2026-09-04'
city: 'Port Penelope'
state: CE
created_by:
id: a2d092c9-01b4-41ce-a804-ea4acd819c5f
name: 'Alice Hahn'
created_at: null
updated_at: null
-
id: fb81971a-1195-3649-a264-e9cf8d529312
receipt_number: REC-7975
receiver_type: employee
receiver:
id: null
name: 'Prof. Adriel Durgan IV'
document: 723.827.768-91
payment:
amount: 8196.17
amount_in_words: 'Valor por extenso de teste'
method: cash
description: 'Voluptatibus explicabo vero deserunt cum reprehenderit repellat officia.'
issuer:
name: 'Simonis, Lynch and Schaefer'
document: 64.499.584/9866-28
issue:
date: '2026-08-31'
city: Penelopeburgh
state: MG
created_by:
id: a2d092c9-051a-4d1c-a6f8-e260359f2a41
name: 'Prof. Dedric Stokes PhD'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 44536f68-982b-3574-a7ca-ecdc52dcd6e3
receipt_number:
type: string
example: REC-2562
receiver_type:
type: string
example: employee
receiver:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: 'Andrew Will'
document:
type: string
example: 107.811.644-43
payment:
type: object
properties:
amount:
type: number
example: 9883.18
amount_in_words:
type: string
example: 'Valor por extenso de teste'
method:
type: string
example: pix
description:
type: string
example: 'Excepturi quisquam optio incidunt quis aliquam quo ut sapiente.'
issuer:
type: object
properties:
name:
type: string
example: Pagac-Dare
document:
type: string
example: 91.785.425/2179-49
issue:
type: object
properties:
date:
type: string
example: '2026-09-04'
city:
type: string
example: 'Port Penelope'
state:
type: string
example: CE
created_by:
type: object
properties:
id:
type: string
example: a2d092c9-01b4-41ce-a804-ea4acd819c5f
name:
type: string
example: 'Alice Hahn'
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: 99687392-d5ce-4e78-83db-2c058f284ed9
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: 0f251921-d3ad-3f1b-973d-ee5d77175647
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: f58f3889-e66e-3744-bca7-f2d5990cd9cd
nullable: true
required:
- receiver_type
- amount
- payment_method
- description
- issuer_name
- issuer_document
- issue_date
- city
- state
/api/payment-receipts/excel:
get:
summary: 'Export payment receipts to Excel'
operationId: exportPaymentReceiptsToExcel
description: 'Dispatches async Excel generation using the same filters as the listing. Frontend is notified via Pusher when ready.'
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: nulla
required: false
schema:
type: string
description: ''
example: nulla
-
in: query
name: document
description: ''
example: et
required: false
schema:
type: string
description: ''
example: et
-
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:
202:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
channel: string
event: string
properties:
message:
type: string
example: string
channel:
type: string
example: string
event:
type: string
example: string
422:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Payment Receipts'
/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: pix
enum:
- pix
- bank_transfer
- cash
- check
eligible:
type: boolean
description: ''
example: true
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: 0e54d123-0485-3411-b2e6-3f2608004626
receipt_number: REC-5405
receiver_type: employee
receiver:
id: null
name: 'Dr. Herman Weber'
document: 373.550.751-11
payment:
amount: 9372.22
amount_in_words: 'Valor por extenso de teste'
method: bank_transfer
description: 'Ullam voluptatem consequatur illum doloribus corporis accusamus esse.'
issuer:
name: 'Hahn, Ondricka and Bailey'
document: 69.870.471/7941-76
issue:
date: '2026-09-01'
city: 'West Alichester'
state: BA
created_by:
id: a2d092c9-215e-4f21-9568-1c16ae279de1
name: 'Mrs. Alexandrine Johns'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 0e54d123-0485-3411-b2e6-3f2608004626
receipt_number:
type: string
example: REC-5405
receiver_type:
type: string
example: employee
receiver:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: 'Dr. Herman Weber'
document:
type: string
example: 373.550.751-11
payment:
type: object
properties:
amount:
type: number
example: 9372.22
amount_in_words:
type: string
example: 'Valor por extenso de teste'
method:
type: string
example: bank_transfer
description:
type: string
example: 'Ullam voluptatem consequatur illum doloribus corporis accusamus esse.'
issuer:
type: object
properties:
name:
type: string
example: 'Hahn, Ondricka and Bailey'
document:
type: string
example: 69.870.471/7941-76
issue:
type: object
properties:
date:
type: string
example: '2026-09-01'
city:
type: string
example: 'West Alichester'
state:
type: string
example: BA
created_by:
type: object
properties:
id:
type: string
example: a2d092c9-215e-4f21-9568-1c16ae279de1
name:
type: string
example: 'Mrs. Alexandrine Johns'
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: e558d584-9aad-4717-b254-4a250624adc7
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: 78db6409-4771-3f6e-a456-d47079873920
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: 27a656d2-2e7c-3b48-a6da-cd3a8c516e12
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: c58cc5d6-2d23-3f39-922b-2ef02552968b
receipt_number: REC-3561
receiver_type: custom
receiver:
id: null
name: 'Evalyn Prosacco Jr.'
document: 407.404.724-09
payment:
amount: 8851.16
amount_in_words: 'Valor por extenso de teste'
method: check
description: 'Totam veritatis cumque fuga quia quaerat dolor.'
issuer:
name: Kerluke-Reinger
document: 10.884.954/0570-40
issue:
date: '2026-09-02'
city: Maurineport
state: RS
created_by:
id: a2d092c9-42e1-4856-a8a7-4ab7dfc7df51
name: 'Kaylah Mosciski'
created_at: null
updated_at: null
-
id: dc49fdf8-e4e4-33e6-a61f-be976379ee24
receipt_number: REC-8986
receiver_type: custom
receiver:
id: null
name: 'Jazmyn Kiehn PhD'
document: 559.161.997-32
payment:
amount: 2796.94
amount_in_words: 'Valor por extenso de teste'
method: check
description: 'Voluptas neque earum tempore facere facilis.'
issuer:
name: Sauer-Grady
document: 57.156.969/2225-38
issue:
date: '2026-08-29'
city: 'East Maurice'
state: SC
created_by:
id: a2d092c9-4508-4273-bf35-5bbcee393fea
name: 'Augustine Gutmann'
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: c58cc5d6-2d23-3f39-922b-2ef02552968b
receipt_number: REC-3561
receiver_type: custom
receiver:
id: null
name: 'Evalyn Prosacco Jr.'
document: 407.404.724-09
payment:
amount: 8851.16
amount_in_words: 'Valor por extenso de teste'
method: check
description: 'Totam veritatis cumque fuga quia quaerat dolor.'
issuer:
name: Kerluke-Reinger
document: 10.884.954/0570-40
issue:
date: '2026-09-02'
city: Maurineport
state: RS
created_by:
id: a2d092c9-42e1-4856-a8a7-4ab7dfc7df51
name: 'Kaylah Mosciski'
created_at: null
updated_at: null
-
id: dc49fdf8-e4e4-33e6-a61f-be976379ee24
receipt_number: REC-8986
receiver_type: custom
receiver:
id: null
name: 'Jazmyn Kiehn PhD'
document: 559.161.997-32
payment:
amount: 2796.94
amount_in_words: 'Valor por extenso de teste'
method: check
description: 'Voluptas neque earum tempore facere facilis.'
issuer:
name: Sauer-Grady
document: 57.156.969/2225-38
issue:
date: '2026-08-29'
city: 'East Maurice'
state: SC
created_by:
id: a2d092c9-4508-4273-bf35-5bbcee393fea
name: 'Augustine Gutmann'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: c58cc5d6-2d23-3f39-922b-2ef02552968b
receipt_number:
type: string
example: REC-3561
receiver_type:
type: string
example: custom
receiver:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: 'Evalyn Prosacco Jr.'
document:
type: string
example: 407.404.724-09
payment:
type: object
properties:
amount:
type: number
example: 8851.16
amount_in_words:
type: string
example: 'Valor por extenso de teste'
method:
type: string
example: check
description:
type: string
example: 'Totam veritatis cumque fuga quia quaerat dolor.'
issuer:
type: object
properties:
name:
type: string
example: Kerluke-Reinger
document:
type: string
example: 10.884.954/0570-40
issue:
type: object
properties:
date:
type: string
example: '2026-09-02'
city:
type: string
example: Maurineport
state:
type: string
example: RS
created_by:
type: object
properties:
id:
type: string
example: a2d092c9-42e1-4856-a8a7-4ab7dfc7df51
name:
type: string
example: 'Kaylah Mosciski'
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: 2
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: f184d7d1-d2fb-3486-ac80-9cfdf2c53164
name: consequuntur
display_name: 'Quo et aliquid dolorem odio.'
-
id: ffafa2da-74c5-3c59-a348-e3fc3dc3f5d5
name: harum
display_name: 'Rem amet et et est.'
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: f184d7d1-d2fb-3486-ac80-9cfdf2c53164
name: consequuntur
display_name: 'Quo et aliquid dolorem odio.'
-
id: ffafa2da-74c5-3c59-a348-e3fc3dc3f5d5
name: harum
display_name: 'Rem amet et et est.'
items:
type: object
properties:
id:
type: string
example: f184d7d1-d2fb-3486-ac80-9cfdf2c53164
name:
type: string
example: consequuntur
display_name:
type: string
example: 'Quo et aliquid dolorem odio.'
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: 0394d163-4ed1-3022-8a3e-a52cd480ca8c
name: nulla-unde-cupiditate
display_name: 'unde architecto impedit'
created_at: null
updated_at: null
-
id: 92817cb0-70aa-36b9-817b-2efd7075e269
name: non-aut
display_name: 'corrupti id sed'
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: 0394d163-4ed1-3022-8a3e-a52cd480ca8c
name: nulla-unde-cupiditate
display_name: 'unde architecto impedit'
created_at: null
updated_at: null
-
id: 92817cb0-70aa-36b9-817b-2efd7075e269
name: non-aut
display_name: 'corrupti id sed'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 0394d163-4ed1-3022-8a3e-a52cd480ca8c
name:
type: string
example: nulla-unde-cupiditate
display_name:
type: string
example: 'unde architecto impedit'
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: 3300ee0f-3c17-395c-9292-6c23deb32e00
name: qui-necessitatibus
display_name: 'qui dolorem beatae'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 3300ee0f-3c17-395c-9292-6c23deb32e00
name:
type: string
example: qui-necessitatibus
display_name:
type: string
example: 'qui dolorem beatae'
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: 2347690e-3a92-381c-82fe-5bb5967659dc
name: et-voluptatum
display_name: 'incidunt nesciunt soluta'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 2347690e-3a92-381c-82fe-5bb5967659dc
name:
type: string
example: et-voluptatum
display_name:
type: string
example: 'incidunt nesciunt soluta'
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:
- 326e0f4d-cbe1-3d0b-96c0-2ead5123e0ea
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: b0c87fd5-953c-3a01-baa0-6a4306fdb5a7
name: nobis-tempora-perferendis
display_name: 'quae labore illo'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: b0c87fd5-953c-3a01-baa0-6a4306fdb5a7
name:
type: string
example: nobis-tempora-perferendis
display_name:
type: string
example: 'quae labore illo'
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:
- eddb0574-1e04-355e-ad34-9a251b077e90
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: 38eb12da-b350-3ab1-8c2c-9f15400332e7
name: 'Heitor Padrão Neto'
created_at: null
updated_at: null
-
id: 1a5a4150-0cd9-3708-b982-ad6b0f1ebcfc
name: 'Dr. Daiane Karine Quintana'
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: 38eb12da-b350-3ab1-8c2c-9f15400332e7
name: 'Heitor Padrão Neto'
created_at: null
updated_at: null
-
id: 1a5a4150-0cd9-3708-b982-ad6b0f1ebcfc
name: 'Dr. Daiane Karine Quintana'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 38eb12da-b350-3ab1-8c2c-9f15400332e7
name:
type: string
example: 'Heitor Padrão Neto'
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: 89fe69c8-6ab2-3220-9c03-bafbe5c45ef0
name: 'Srta. Tainara Galhardo Ferraz Sobrinho'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 89fe69c8-6ab2-3220-9c03-bafbe5c45ef0
name:
type: string
example: 'Srta. Tainara Galhardo Ferraz Sobrinho'
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: is_epi
description: ''
example: false
required: false
schema:
type: boolean
description: ''
example: false
-
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: f568109a-8143-399f-8463-0b6b135b2d60
name: 'Sr. Nelson Dante de Arruda'
is_epi: false
created_at: null
updated_at: null
-
id: 0a70f620-791b-358f-b929-d08f04f7aa3d
name: 'Srta. Heloise Ayla Fernandes'
is_epi: 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: f568109a-8143-399f-8463-0b6b135b2d60
name: 'Sr. Nelson Dante de Arruda'
is_epi: false
created_at: null
updated_at: null
-
id: 0a70f620-791b-358f-b929-d08f04f7aa3d
name: 'Srta. Heloise Ayla Fernandes'
is_epi: false
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: f568109a-8143-399f-8463-0b6b135b2d60
name:
type: string
example: 'Sr. Nelson Dante de Arruda'
is_epi:
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:
- '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'
is_epi:
type: boolean
description: 'É família de EPI.'
example: true
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: 087eac34-a0ef-390e-9f38-5e8758cb6406
name: 'Betina Pacheco Filho'
is_epi: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 087eac34-a0ef-390e-9f38-5e8758cb6406
name:
type: string
example: 'Betina Pacheco Filho'
is_epi:
type: boolean
example: false
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'
is_epi:
type: boolean
description: 'É família de EPI.'
example: true
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: nobis
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: 945edc19-0454-32f6-89f7-dc017db967ef
name: 'Voluptas qui minus est.'
description: null
work:
id: a2d092c9-dd4d-494e-bcfb-df7c7be6cf17
name: 'Marta Bezerra'
user:
id: a2d092c9-e1a0-407a-905e-e8ebd47f9978
name: 'Danyka Hickle'
created_at: null
updated_at: null
-
id: 96c0e40f-0ae1-3a1a-ab50-b678cc50b4ec
name: 'Velit ea quasi error.'
description: 'Consequatur corrupti natus aut nostrum. Alias recusandae eveniet minus. Dolores deleniti nihil dolorem quae sunt. Ad fugit est consequatur modi saepe.'
work:
id: a2d092c9-e623-4e94-9393-f84090692b04
name: 'Antonieta Lozano'
user:
id: a2d092c9-e902-41f4-b845-37d6c92d8dd6
name: 'Jamal Hansen V'
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: 945edc19-0454-32f6-89f7-dc017db967ef
name: 'Voluptas qui minus est.'
description: null
work:
id: a2d092c9-dd4d-494e-bcfb-df7c7be6cf17
name: 'Marta Bezerra'
user:
id: a2d092c9-e1a0-407a-905e-e8ebd47f9978
name: 'Danyka Hickle'
created_at: null
updated_at: null
-
id: 96c0e40f-0ae1-3a1a-ab50-b678cc50b4ec
name: 'Velit ea quasi error.'
description: 'Consequatur corrupti natus aut nostrum. Alias recusandae eveniet minus. Dolores deleniti nihil dolorem quae sunt. Ad fugit est consequatur modi saepe.'
work:
id: a2d092c9-e623-4e94-9393-f84090692b04
name: 'Antonieta Lozano'
user:
id: a2d092c9-e902-41f4-b845-37d6c92d8dd6
name: 'Jamal Hansen V'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 945edc19-0454-32f6-89f7-dc017db967ef
name:
type: string
example: 'Voluptas qui minus est.'
description:
type: string
example: null
nullable: true
work:
type: object
properties:
id:
type: string
example: a2d092c9-dd4d-494e-bcfb-df7c7be6cf17
name:
type: string
example: 'Marta Bezerra'
user:
type: object
properties:
id:
type: string
example: a2d092c9-e1a0-407a-905e-e8ebd47f9978
name:
type: string
example: 'Danyka Hickle'
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: 97bf8b83-68eb-3534-af52-eb28c086a299
nullable: true
user_id:
type: string
description: 'Usuário. The uuid of an existing record in the users table.'
example: 6d9850d8-7914-354b-a629-8af8a5abeb51
nullable: true
responsible_id:
type: string
description: 'Responsável. The uuid of an existing record in the users table.'
example: 53478844-d7b9-3b0e-8b80-b9441ab04c41
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: 31088112-7654-328d-b5c3-8f2e057d7deb
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: 21256181-6f4b-36de-8b14-f4d5f26fc489
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: 283b4750-62d4-31fa-a02c-6996214b59da
name: 'Officiis consectetur.'
description: 'Deleniti rem nesciunt blanditiis voluptas nostrum nemo. Cum occaecati consequatur totam expedita repellendus. Voluptate qui deleniti reiciendis quo et perspiciatis. Aut quasi veniam molestiae ut necessitatibus omnis.'
work:
id: a2d092c9-f1e7-4921-a695-f91ebc31b97a
name: 'Fabiano Rezende Rios'
user:
id: a2d092c9-f534-42fb-8366-2ab33c015e74
name: 'Desmond Wunsch Sr.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 283b4750-62d4-31fa-a02c-6996214b59da
name:
type: string
example: 'Officiis consectetur.'
description:
type: string
example: 'Deleniti rem nesciunt blanditiis voluptas nostrum nemo. Cum occaecati consequatur totam expedita repellendus. Voluptate qui deleniti reiciendis quo et perspiciatis. Aut quasi veniam molestiae ut necessitatibus omnis.'
work:
type: object
properties:
id:
type: string
example: a2d092c9-f1e7-4921-a695-f91ebc31b97a
name:
type: string
example: 'Fabiano Rezende Rios'
user:
type: object
properties:
id:
type: string
example: a2d092c9-f534-42fb-8366-2ab33c015e74
name:
type: string
example: 'Desmond Wunsch Sr.'
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: ee52bee7-bf1d-3f43-9d88-718fd5e194b9
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 7202bb56-62d9-38de-8249-5c3d379f66c7
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: nemo
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: 8e4d010a-2ae2-33d1-94a3-32cea1c39be0
product:
id: a2d092ca-15c1-4cd0-8a20-9b76d46add14
name: 'Flávio Serra'
code: PRD-341013
unit:
id: a2d092ca-1339-43e6-b6d9-eb2838f3b64a
name: 'Sr. Thiago André Roque'
abbreviation: 'Ingrid Laiane de Souza'
quantity: 152.8613
observation: null
created_at: null
updated_at: null
-
id: 78562933-bf84-34f6-aae8-10fabf9450d8
product:
id: a2d092ca-2885-4788-8714-4ad6d418f612
name: 'Kamila Maiara Feliciano Neto'
code: PRD-203166
unit:
id: a2d092ca-26d3-40c5-a358-cd1d264281c1
name: 'Alessandro Ávila Vieira'
abbreviation: 'Dr. Analu Godói'
quantity: 355.5236
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: 8e4d010a-2ae2-33d1-94a3-32cea1c39be0
product:
id: a2d092ca-15c1-4cd0-8a20-9b76d46add14
name: 'Flávio Serra'
code: PRD-341013
unit:
id: a2d092ca-1339-43e6-b6d9-eb2838f3b64a
name: 'Sr. Thiago André Roque'
abbreviation: 'Ingrid Laiane de Souza'
quantity: 152.8613
observation: null
created_at: null
updated_at: null
-
id: 78562933-bf84-34f6-aae8-10fabf9450d8
product:
id: a2d092ca-2885-4788-8714-4ad6d418f612
name: 'Kamila Maiara Feliciano Neto'
code: PRD-203166
unit:
id: a2d092ca-26d3-40c5-a358-cd1d264281c1
name: 'Alessandro Ávila Vieira'
abbreviation: 'Dr. Analu Godói'
quantity: 355.5236
observation: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 8e4d010a-2ae2-33d1-94a3-32cea1c39be0
product:
type: object
properties:
id:
type: string
example: a2d092ca-15c1-4cd0-8a20-9b76d46add14
name:
type: string
example: 'Flávio Serra'
code:
type: string
example: PRD-341013
unit:
type: object
properties:
id:
type: string
example: a2d092ca-1339-43e6-b6d9-eb2838f3b64a
name:
type: string
example: 'Sr. Thiago André Roque'
abbreviation:
type: string
example: 'Ingrid Laiane de Souza'
quantity:
type: number
example: 152.8613
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 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: 61684f25-c7e5-39a4-b06c-a962c82d997f
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:
- c0582b5c-3972-38c1-8417-0014d8d4b974
items:
type: string
required:
- items
parameters:
-
in: path
name: productQuantityList
description: 'Product Quantity List UUID'
example: cum
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: fugiat
required: true
schema:
type: string
-
in: path
name: item
description: 'Product Quantity List Item UUID'
example: beatae
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: af03c64a-1587-38d1-9b16-aac9449b615f
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: c1bc086d-8e1c-3d6b-ba4d-df2c8be95c26
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: voluptatem
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: 26bc3af5-e117-363e-9408-37a5be022320
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: cb9bad58-acf2-3a37-bbdd-34cd99d17c93
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: 7078b2ad-050a-3514-9398-f3ba523aa601
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: repellendus
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: 23cf8548-c359-3333-8454-b6ec3b0a9cf0
quantity: 30.7904
fulfilled_at: '2026-09-14T07:22:39.000000Z'
created_at: null
-
id: c978aaf1-2b86-36be-9d52-6ecaa9000095
quantity: 28.7409
fulfilled_at: '2026-09-11T04:14:46.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: 23cf8548-c359-3333-8454-b6ec3b0a9cf0
quantity: 30.7904
fulfilled_at: '2026-09-14T07:22:39.000000Z'
created_at: null
-
id: c978aaf1-2b86-36be-9d52-6ecaa9000095
quantity: 28.7409
fulfilled_at: '2026-09-11T04:14:46.000000Z'
created_at: null
items:
type: object
properties:
id:
type: string
example: 23cf8548-c359-3333-8454-b6ec3b0a9cf0
quantity:
type: number
example: 30.7904
fulfilled_at:
type: string
example: '2026-09-14T07:22:39.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: et
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: 1501e5a2-5efb-33c8-9bbe-7a3bcaa35a2d
product:
id: a2d092cf-296b-40bd-bb16-8e948b341b85
name: 'Dr. Mariah Gonçalves Carrara'
code: PRD-821055
unit:
id: a2d092cf-27ae-42ee-9a2d-c50de7e23e88
name: 'Fabiano Denis Abreu Filho'
abbreviation: 'Bernardo Mascarenhas Caldeira Jr.'
quantity: 777.327
quantity_fulfilled: 0
quantity_pending: 777.327
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Quia ut quia recusandae quo odio.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 1501e5a2-5efb-33c8-9bbe-7a3bcaa35a2d
product:
type: object
properties:
id:
type: string
example: a2d092cf-296b-40bd-bb16-8e948b341b85
name:
type: string
example: 'Dr. Mariah Gonçalves Carrara'
code:
type: string
example: PRD-821055
unit:
type: object
properties:
id:
type: string
example: a2d092cf-27ae-42ee-9a2d-c50de7e23e88
name:
type: string
example: 'Fabiano Denis Abreu Filho'
abbreviation:
type: string
example: 'Bernardo Mascarenhas Caldeira Jr.'
quantity:
type: number
example: 777.327
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 777.327
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
type: string
example: 'Quia ut quia recusandae quo odio.'
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: 0aa5a0b7-9ab3-30ce-a67d-03704cf372f3
nullable: true
parameters:
-
in: path
name: id
description: 'The ID of the item.'
example: voluptatibus
required: true
schema:
type: string
-
in: path
name: item
description: 'Product Request Item UUID'
example: magnam
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: acda36b5-f31f-3679-9f81-e273a392a46e
product:
id: a2d092cf-40d4-49c9-a088-cbce2dde0a88
name: 'Michele Ornela Rezende'
code: PRD-363671
unit:
id: a2d092cf-3f83-431f-b33b-95ec48c9c380
name: 'James Delgado'
abbreviation: 'Dr. Lorenzo Mauro Leal'
quantity: 852.548
quantity_fulfilled: 0
quantity_pending: 852.548
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: f461e7dd-fa34-3c68-9e2d-3388c139223a
product:
id: a2d092cf-52d7-41f2-8cf5-0fb3b2ec2660
name: 'Sra. Nayara Catarina Matos Sobrinho'
code: PRD-058197
unit:
id: a2d092cf-519e-4365-8784-d49599e6b70a
name: 'Jorge Escobar'
abbreviation: 'Agatha Ferminiano Grego Sobrinho'
quantity: 961.1007
quantity_fulfilled: 0
quantity_pending: 961.1007
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Quia perferendis mollitia earum qui et voluptatem.'
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: acda36b5-f31f-3679-9f81-e273a392a46e
product:
id: a2d092cf-40d4-49c9-a088-cbce2dde0a88
name: 'Michele Ornela Rezende'
code: PRD-363671
unit:
id: a2d092cf-3f83-431f-b33b-95ec48c9c380
name: 'James Delgado'
abbreviation: 'Dr. Lorenzo Mauro Leal'
quantity: 852.548
quantity_fulfilled: 0
quantity_pending: 852.548
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: f461e7dd-fa34-3c68-9e2d-3388c139223a
product:
id: a2d092cf-52d7-41f2-8cf5-0fb3b2ec2660
name: 'Sra. Nayara Catarina Matos Sobrinho'
code: PRD-058197
unit:
id: a2d092cf-519e-4365-8784-d49599e6b70a
name: 'Jorge Escobar'
abbreviation: 'Agatha Ferminiano Grego Sobrinho'
quantity: 961.1007
quantity_fulfilled: 0
quantity_pending: 961.1007
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Quia perferendis mollitia earum qui et voluptatem.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: acda36b5-f31f-3679-9f81-e273a392a46e
product:
type: object
properties:
id:
type: string
example: a2d092cf-40d4-49c9-a088-cbce2dde0a88
name:
type: string
example: 'Michele Ornela Rezende'
code:
type: string
example: PRD-363671
unit:
type: object
properties:
id:
type: string
example: a2d092cf-3f83-431f-b33b-95ec48c9c380
name:
type: string
example: 'James Delgado'
abbreviation:
type: string
example: 'Dr. Lorenzo Mauro Leal'
quantity:
type: number
example: 852.548
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 852.548
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: rem
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: 570901e4-7ce2-37cc-8233-a4adb88118dd
product:
id: a2d092cf-6913-4b75-b1fd-9c6f5645b1a8
name: 'Dr. Fábio Godói'
code: PRD-538715
unit:
id: a2d092cf-67ab-4b8f-9fd6-d79e1d640a27
name: 'Isaac Rezende Domingues Filho'
abbreviation: 'Srta. Talita Queirós Jr.'
quantity: 66.5781
quantity_fulfilled: 0
quantity_pending: 66.5781
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Minima voluptatum aut dolore pariatur velit laboriosam.'
created_at: null
updated_at: null
-
id: 5595ce84-989d-3ad4-bbcd-12699eb029c1
product:
id: a2d092cf-7a1c-45be-bc42-a5d83966dcc3
name: 'Dr. Marília Rocha Jr.'
code: PRD-629666
unit:
id: a2d092cf-78e7-44cc-880c-2999c10b8b5b
name: 'Diana Toledo'
abbreviation: 'Srta. Fabiana de Arruda Sobrinho'
quantity: 879.2465
quantity_fulfilled: 0
quantity_pending: 879.2465
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Explicabo ut sequi et voluptatibus ut.'
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: 570901e4-7ce2-37cc-8233-a4adb88118dd
product:
id: a2d092cf-6913-4b75-b1fd-9c6f5645b1a8
name: 'Dr. Fábio Godói'
code: PRD-538715
unit:
id: a2d092cf-67ab-4b8f-9fd6-d79e1d640a27
name: 'Isaac Rezende Domingues Filho'
abbreviation: 'Srta. Talita Queirós Jr.'
quantity: 66.5781
quantity_fulfilled: 0
quantity_pending: 66.5781
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Minima voluptatum aut dolore pariatur velit laboriosam.'
created_at: null
updated_at: null
-
id: 5595ce84-989d-3ad4-bbcd-12699eb029c1
product:
id: a2d092cf-7a1c-45be-bc42-a5d83966dcc3
name: 'Dr. Marília Rocha Jr.'
code: PRD-629666
unit:
id: a2d092cf-78e7-44cc-880c-2999c10b8b5b
name: 'Diana Toledo'
abbreviation: 'Srta. Fabiana de Arruda Sobrinho'
quantity: 879.2465
quantity_fulfilled: 0
quantity_pending: 879.2465
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Explicabo ut sequi et voluptatibus ut.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 570901e4-7ce2-37cc-8233-a4adb88118dd
product:
type: object
properties:
id:
type: string
example: a2d092cf-6913-4b75-b1fd-9c6f5645b1a8
name:
type: string
example: 'Dr. Fábio Godói'
code:
type: string
example: PRD-538715
unit:
type: object
properties:
id:
type: string
example: a2d092cf-67ab-4b8f-9fd6-d79e1d640a27
name:
type: string
example: 'Isaac Rezende Domingues Filho'
abbreviation:
type: string
example: 'Srta. Talita Queirós Jr.'
quantity:
type: number
example: 66.5781
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 66.5781
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
type: string
example: 'Minima voluptatum aut dolore pariatur velit laboriosam.'
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: rerum
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: afd0fd8c-411f-3c9e-9ca3-055a50478bb8
code: null
name: 'Reprehenderit dolorem sint aliquam.'
description: null
work:
id: a2d092cc-2270-4ddd-a09d-cb6bb594b72c
name: 'Fernando Mascarenhas Pedrosa Filho'
user:
id: a2d092cc-25a5-4bec-b9da-b478d6cde642
name: 'Lesley Morar IV'
status:
id: a2d092cc-27bf-4b31-b2cf-44f5fdf2c1c2
slug: null
name: null
description: 'Srta. Ariane Oliveira Jr.'
abbreviation: officia
color: '#15347e'
text_color: '#98101b'
priority: medium
priority_label: Média
needed_at: '2026-10-14'
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
-
id: 3e5a990f-4f97-3e59-b5f8-0c841b20f932
code: null
name: 'Delectus omnis occaecati vel.'
description: null
work:
id: a2d092cc-2c69-454c-a825-fbf98f7621f6
name: 'Sra. Laiane Agustina Maia Jr.'
user:
id: a2d092cc-2f40-48ab-9d58-1f8d0f5d7c01
name: 'Mckenna Tillman'
status:
id: a2d092cc-30f8-4d1f-b0aa-72b32ba28151
slug: null
name: null
description: 'Sr. Cezar Casanova Filho'
abbreviation: non
color: '#78b63d'
text_color: '#ee6bf1'
priority: urgent
priority_label: Urgente
needed_at: '2026-09-26'
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: afd0fd8c-411f-3c9e-9ca3-055a50478bb8
code: null
name: 'Reprehenderit dolorem sint aliquam.'
description: null
work:
id: a2d092cc-2270-4ddd-a09d-cb6bb594b72c
name: 'Fernando Mascarenhas Pedrosa Filho'
user:
id: a2d092cc-25a5-4bec-b9da-b478d6cde642
name: 'Lesley Morar IV'
status:
id: a2d092cc-27bf-4b31-b2cf-44f5fdf2c1c2
slug: null
name: null
description: 'Srta. Ariane Oliveira Jr.'
abbreviation: officia
color: '#15347e'
text_color: '#98101b'
priority: medium
priority_label: Média
needed_at: '2026-10-14'
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
-
id: 3e5a990f-4f97-3e59-b5f8-0c841b20f932
code: null
name: 'Delectus omnis occaecati vel.'
description: null
work:
id: a2d092cc-2c69-454c-a825-fbf98f7621f6
name: 'Sra. Laiane Agustina Maia Jr.'
user:
id: a2d092cc-2f40-48ab-9d58-1f8d0f5d7c01
name: 'Mckenna Tillman'
status:
id: a2d092cc-30f8-4d1f-b0aa-72b32ba28151
slug: null
name: null
description: 'Sr. Cezar Casanova Filho'
abbreviation: non
color: '#78b63d'
text_color: '#ee6bf1'
priority: urgent
priority_label: Urgente
needed_at: '2026-09-26'
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: afd0fd8c-411f-3c9e-9ca3-055a50478bb8
code:
type: string
example: null
nullable: true
name:
type: string
example: 'Reprehenderit dolorem sint aliquam.'
description:
type: string
example: null
nullable: true
work:
type: object
properties:
id:
type: string
example: a2d092cc-2270-4ddd-a09d-cb6bb594b72c
name:
type: string
example: 'Fernando Mascarenhas Pedrosa Filho'
user:
type: object
properties:
id:
type: string
example: a2d092cc-25a5-4bec-b9da-b478d6cde642
name:
type: string
example: 'Lesley Morar IV'
status:
type: object
properties:
id:
type: string
example: a2d092cc-27bf-4b31-b2cf-44f5fdf2c1c2
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Srta. Ariane Oliveira Jr.'
abbreviation:
type: string
example: officia
color:
type: string
example: '#15347e'
text_color:
type: string
example: '#98101b'
priority:
type: string
example: medium
priority_label:
type: string
example: Média
needed_at:
type: string
example: '2026-10-14'
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: d02c2b99-aed4-3a1c-9264-89b8517bfaf9
nullable: true
work_location_id:
type: string
description: 'Local da obra. The uuid of an existing record in the work_locations table.'
example: 990ff336-93e7-3eea-a9a1-74470d565b54
nullable: true
user_id:
type: string
description: 'Usuário. The uuid of an existing record in the users table.'
example: 7f41ce9d-0b5e-3a13-a8c5-e42448b2b9ba
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: 646687e3-956e-3196-b0e0-3c68c4af629e
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: 7663e6ae-73ac-38d4-90f8-33c77d1a6bba
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: 9c5f8345-3b72-3761-8ed4-c297373625ef
work_location_id:
type: string
description: 'Local da obra. The uuid of an existing record in the work_locations table.'
example: d6b9e842-7ce5-3eb0-a821-da3e211e367a
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: ca29a13e-30b8-391a-8fdf-ec6f40f307d4
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: d66ab071-069a-3749-866f-78b6064124b0
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: e253c7fb-dd0d-3504-a1d6-5513ed0311c0
code: null
name: 'Velit nulla vel suscipit dolor.'
description: null
work:
id: a2d092cc-3a06-4dd3-9ad3-d9bfb8cfeda8
name: 'Sr. George Teles'
user:
id: a2d092cc-3d25-441c-a723-f4072a714161
name: 'Rose Streich V'
status:
id: a2d092cc-3ef9-44ef-b2c9-95ba5aee2baa
slug: null
name: null
description: 'Paulo Feliciano Matias'
abbreviation: dolores
color: '#4a9b96'
text_color: '#3b2536'
priority: urgent
priority_label: Urgente
needed_at: '2026-10-20'
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: e253c7fb-dd0d-3504-a1d6-5513ed0311c0
code:
type: string
example: null
nullable: true
name:
type: string
example: 'Velit nulla vel suscipit dolor.'
description:
type: string
example: null
nullable: true
work:
type: object
properties:
id:
type: string
example: a2d092cc-3a06-4dd3-9ad3-d9bfb8cfeda8
name:
type: string
example: 'Sr. George Teles'
user:
type: object
properties:
id:
type: string
example: a2d092cc-3d25-441c-a723-f4072a714161
name:
type: string
example: 'Rose Streich V'
status:
type: object
properties:
id:
type: string
example: a2d092cc-3ef9-44ef-b2c9-95ba5aee2baa
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Paulo Feliciano Matias'
abbreviation:
type: string
example: dolores
color:
type: string
example: '#4a9b96'
text_color:
type: string
example: '#3b2536'
priority:
type: string
example: urgent
priority_label:
type: string
example: Urgente
needed_at:
type: string
example: '2026-10-20'
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: b13aba9a-647b-3db9-ab6e-16f2acfd9f6f
work_location_id:
type: string
description: 'Local da obra. The uuid of an existing record in the work_locations table.'
example: 9178eabe-977d-3e89-b76a-ce4148a0d2f7
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: 59e337af-58c3-34d7-9f81-15d0527e1df3
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: d7c91dfc-3c15-3bcb-aba5-2069308868f8
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 49b18c7e-e79d-3948-963e-ad9120d9364a
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: vero
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: 14ff89f6-4287-3cbf-b06f-2ea9e9ca1d29
product:
id: a2d092cc-5ba9-4841-a73c-53786e9a1a24
name: 'Valentina de Freitas Verdugo Filho'
code: PRD-651499
unit:
id: a2d092cc-5a68-42ac-bfab-e3c42d436cbb
name: 'Dr. Ketlin Medina Dominato Filho'
abbreviation: 'Nicolas Alcantara Carrara'
quantity: 892.1107
quantity_fulfilled: 0
quantity_pending: 892.1107
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: 5f9a074d-97b3-343e-bf4e-fa4c31ebedb7
product:
id: a2d092cc-705a-4bb0-9991-5066b743bb50
name: 'Gabrielle Graziela Neves'
code: PRD-675553
unit:
id: a2d092cc-6d6c-4ea9-886c-bf6bb5df28ed
name: 'Máximo Barros Jr.'
abbreviation: 'Dr. Sergio Adriel Ramires Sobrinho'
quantity: 834.8442
quantity_fulfilled: 0
quantity_pending: 834.8442
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Est dolores eum possimus officia nihil repellat.'
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: 14ff89f6-4287-3cbf-b06f-2ea9e9ca1d29
product:
id: a2d092cc-5ba9-4841-a73c-53786e9a1a24
name: 'Valentina de Freitas Verdugo Filho'
code: PRD-651499
unit:
id: a2d092cc-5a68-42ac-bfab-e3c42d436cbb
name: 'Dr. Ketlin Medina Dominato Filho'
abbreviation: 'Nicolas Alcantara Carrara'
quantity: 892.1107
quantity_fulfilled: 0
quantity_pending: 892.1107
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: 5f9a074d-97b3-343e-bf4e-fa4c31ebedb7
product:
id: a2d092cc-705a-4bb0-9991-5066b743bb50
name: 'Gabrielle Graziela Neves'
code: PRD-675553
unit:
id: a2d092cc-6d6c-4ea9-886c-bf6bb5df28ed
name: 'Máximo Barros Jr.'
abbreviation: 'Dr. Sergio Adriel Ramires Sobrinho'
quantity: 834.8442
quantity_fulfilled: 0
quantity_pending: 834.8442
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Est dolores eum possimus officia nihil repellat.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 14ff89f6-4287-3cbf-b06f-2ea9e9ca1d29
product:
type: object
properties:
id:
type: string
example: a2d092cc-5ba9-4841-a73c-53786e9a1a24
name:
type: string
example: 'Valentina de Freitas Verdugo Filho'
code:
type: string
example: PRD-651499
unit:
type: object
properties:
id:
type: string
example: a2d092cc-5a68-42ac-bfab-e3c42d436cbb
name:
type: string
example: 'Dr. Ketlin Medina Dominato Filho'
abbreviation:
type: string
example: 'Nicolas Alcantara Carrara'
quantity:
type: number
example: 892.1107
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 892.1107
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: dacba0ac-da38-39c3-b0fa-eee42631767e
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:
- fd27195a-5b50-3708-8c05-a31b2409c807
items:
type: string
required:
- items
parameters:
-
in: path
name: productRequest
description: 'Product Request UUID'
example: laboriosam
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: et
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: commodi
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: 7c50bf3f-d60d-3491-a6b6-d74c6a849a32
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: f979bdc3-7017-3af3-81c5-fd3fb144077c
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: in
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
-
in: query
name: is_epi
description: 'Filter by products whose family is flagged as EPI.'
example: true
required: false
schema:
type: boolean
description: 'Filter by products whose family is flagged as EPI.'
example: true
-
in: query
name: has_epi_type
description: 'Filter by products that already are an EPI type. Pass 0 to list only products still available to become one.'
example: false
required: false
schema:
type: boolean
description: 'Filter by products that already are an EPI type. Pass 0 to list only products still available to become one.'
example: false
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: e26548da-e6d8-3efb-a0b1-b38f516e572d
name: 'Murilo Gusmão Galhardo Jr.'
code: PRD-909227
stock: 27935744
product_family:
id: a2d092c9-6c99-4300-87a6-89850e512c93
name: 'Taís Pereira Neto'
product_brand:
id: a2d092c9-6e52-43e0-8427-4baa651bcb70
name: 'Dr. Maurício Matheus da Rosa Filho'
unit:
id: a2d092c9-7027-42ff-8a81-2934e0b2d135
name: 'Graziela Carvalho'
abbreviation: 'Sra. Cecília Suellen Pacheco Filho'
image:
id: null
url: null
epi_type: null
description: 'Magnam quae qui aliquid officiis laboriosam.'
created_at: null
updated_at: null
-
id: 69bc64c1-920a-36d8-9faf-8bb047015e45
name: 'Dr. Thaís Rosana Queirós'
code: PRD-882880
stock: 18
product_family:
id: a2d092c9-742b-4a34-8f3d-b0de214b48a1
name: 'Michael Gael Quintana Sobrinho'
product_brand:
id: a2d092c9-759e-454e-9439-35d346e57389
name: 'Leonardo Cláudio de Oliveira Jr.'
unit:
id: a2d092c9-7722-44d8-b483-29ac0ed662f9
name: 'Sra. Rebeca Azevedo Jr.'
abbreviation: 'Juliane Luiza Queirós'
image:
id: null
url: null
epi_type: null
description: 'Non temporibus ipsum porro.'
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: e26548da-e6d8-3efb-a0b1-b38f516e572d
name: 'Murilo Gusmão Galhardo Jr.'
code: PRD-909227
stock: 27935744
product_family:
id: a2d092c9-6c99-4300-87a6-89850e512c93
name: 'Taís Pereira Neto'
product_brand:
id: a2d092c9-6e52-43e0-8427-4baa651bcb70
name: 'Dr. Maurício Matheus da Rosa Filho'
unit:
id: a2d092c9-7027-42ff-8a81-2934e0b2d135
name: 'Graziela Carvalho'
abbreviation: 'Sra. Cecília Suellen Pacheco Filho'
image:
id: null
url: null
epi_type: null
description: 'Magnam quae qui aliquid officiis laboriosam.'
created_at: null
updated_at: null
-
id: 69bc64c1-920a-36d8-9faf-8bb047015e45
name: 'Dr. Thaís Rosana Queirós'
code: PRD-882880
stock: 18
product_family:
id: a2d092c9-742b-4a34-8f3d-b0de214b48a1
name: 'Michael Gael Quintana Sobrinho'
product_brand:
id: a2d092c9-759e-454e-9439-35d346e57389
name: 'Leonardo Cláudio de Oliveira Jr.'
unit:
id: a2d092c9-7722-44d8-b483-29ac0ed662f9
name: 'Sra. Rebeca Azevedo Jr.'
abbreviation: 'Juliane Luiza Queirós'
image:
id: null
url: null
epi_type: null
description: 'Non temporibus ipsum porro.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: e26548da-e6d8-3efb-a0b1-b38f516e572d
name:
type: string
example: 'Murilo Gusmão Galhardo Jr.'
code:
type: string
example: PRD-909227
stock:
type: integer
example: 27935744
product_family:
type: object
properties:
id:
type: string
example: a2d092c9-6c99-4300-87a6-89850e512c93
name:
type: string
example: 'Taís Pereira Neto'
product_brand:
type: object
properties:
id:
type: string
example: a2d092c9-6e52-43e0-8427-4baa651bcb70
name:
type: string
example: 'Dr. Maurício Matheus da Rosa Filho'
unit:
type: object
properties:
id:
type: string
example: a2d092c9-7027-42ff-8a81-2934e0b2d135
name:
type: string
example: 'Graziela Carvalho'
abbreviation:
type: string
example: 'Sra. Cecília Suellen Pacheco Filho'
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
epi_type:
type: string
example: null
nullable: true
description:
type: string
example: 'Magnam quae qui aliquid officiis laboriosam.'
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: 1d2fd657-c87d-3bf7-9eaa-42c1ed11ba35
product_brand_id:
type: string
description: 'Marca do Produto. The uuid of an existing record in the product_brands table.'
example: 2dc0ea48-845b-315c-8fea-e4bc5977a458
unit_id:
type: string
description: 'Unidade. The uuid of an existing record in the units table.'
example: de8d50be-2ff5-3725-81e5-bfbf6d8502dc
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: b9f83569-5c27-30ca-9998-fb4c3f3e9e61
name: 'Srta. Stephany das Dores Filho'
code: PRD-473827
stock: 9874
product_family:
id: a2d092c9-8728-4de1-bd78-e4cbb51903ae
name: 'Dayane Pena Pena Neto'
product_brand:
id: a2d092c9-8917-4431-9ab3-611290481efe
name: 'Samuel Eric Roque'
unit:
id: a2d092c9-8b05-489b-924d-b58bbcd74f1b
name: 'Isabelly Santacruz Neto'
abbreviation: 'Lara Aguiar'
image:
id: null
url: null
epi_type: null
description: 'Deserunt ut eos repellat recusandae.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: b9f83569-5c27-30ca-9998-fb4c3f3e9e61
name:
type: string
example: 'Srta. Stephany das Dores Filho'
code:
type: string
example: PRD-473827
stock:
type: integer
example: 9874
product_family:
type: object
properties:
id:
type: string
example: a2d092c9-8728-4de1-bd78-e4cbb51903ae
name:
type: string
example: 'Dayane Pena Pena Neto'
product_brand:
type: object
properties:
id:
type: string
example: a2d092c9-8917-4431-9ab3-611290481efe
name:
type: string
example: 'Samuel Eric Roque'
unit:
type: object
properties:
id:
type: string
example: a2d092c9-8b05-489b-924d-b58bbcd74f1b
name:
type: string
example: 'Isabelly Santacruz Neto'
abbreviation:
type: string
example: 'Lara Aguiar'
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
epi_type:
type: string
example: null
nullable: true
description:
type: string
example: 'Deserunt ut eos repellat recusandae.'
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: c40d3860-dbd1-3739-9de1-116dad1e6148
product_brand_id:
type: string
description: 'Marca do Produto. The uuid of an existing record in the product_brands table.'
example: e0c17139-8fea-34bd-b9f9-a60157f41e59
unit_id:
type: string
description: 'Unidade. The uuid of an existing record in the units table.'
example: 946beda7-37a5-3658-840a-82f79a9eec01
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: nesciunt
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: veritatis
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: fugit
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: 3aeda288-c354-30b6-a4cb-14431ed36ff5
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: aca1fd24-aa35-3c18-87e7-6cbf35a70a20
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: dd970e86-7aa1-3e43-b8ee-62e3ffd50249
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: f6daa585-8671-33bd-8014-1b8a4a6f13f5
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: 8f364613-feb6-395c-9a2c-f5e0d1fff6bd
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: 4b1d2b2c-6fe7-3b93-839b-69ceb226e2a1
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: 4b1d2b2c-6fe7-3b93-839b-69ceb226e2a1
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: 6449dd32-386f-38bd-8b25-df1cdfa6993f
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: 6449dd32-386f-38bd-8b25-df1cdfa6993f
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: b37ada67-7b4c-363e-818b-65d453327c09
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: b37ada67-7b4c-363e-818b-65d453327c09
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: 790a0a48-ddf7-3b82-87a5-89294ace96f2
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: 790a0a48-ddf7-3b82-87a5-89294ace96f2
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 14248d40-5aa0-3151-a35d-41b0dbd057e1
name: 'Ut recusandae ut'
description: 'Nobis cupiditate architecto nam veritatis provident id non.'
current_version: 1
file:
path: projects/63999263-f2cf-372a-be03-79db021a5d35.pdf
size: '2102002'
extension: pdf
discipline:
id: a2d092cf-8b21-4a3d-b760-6f38a0dc1075
name: Ut
code: AND
created_at: null
updated_at: null
-
id: ce418db5-91fd-3302-8dcd-28841011d891
name: 'Rerum iure est'
description: 'Veniam enim cum repudiandae est id.'
current_version: 1
file:
path: projects/b2b79bfe-41b9-3fa8-bbc9-c2860270258b.pdf
size: '1735949'
extension: pdf
discipline:
id: a2d092cf-8eb0-47cb-9e51-632e53ad9039
name: Aliquid
code: VMA
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: 14248d40-5aa0-3151-a35d-41b0dbd057e1
name: 'Ut recusandae ut'
description: 'Nobis cupiditate architecto nam veritatis provident id non.'
current_version: 1
file:
path: projects/63999263-f2cf-372a-be03-79db021a5d35.pdf
size: '2102002'
extension: pdf
discipline:
id: a2d092cf-8b21-4a3d-b760-6f38a0dc1075
name: Ut
code: AND
created_at: null
updated_at: null
-
id: ce418db5-91fd-3302-8dcd-28841011d891
name: 'Rerum iure est'
description: 'Veniam enim cum repudiandae est id.'
current_version: 1
file:
path: projects/b2b79bfe-41b9-3fa8-bbc9-c2860270258b.pdf
size: '1735949'
extension: pdf
discipline:
id: a2d092cf-8eb0-47cb-9e51-632e53ad9039
name: Aliquid
code: VMA
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 14248d40-5aa0-3151-a35d-41b0dbd057e1
name:
type: string
example: 'Ut recusandae ut'
description:
type: string
example: 'Nobis cupiditate architecto nam veritatis provident id non.'
current_version:
type: integer
example: 1
file:
type: object
properties:
path:
type: string
example: projects/63999263-f2cf-372a-be03-79db021a5d35.pdf
size:
type: string
example: '2102002'
extension:
type: string
example: pdf
discipline:
type: object
properties:
id:
type: string
example: a2d092cf-8b21-4a3d-b760-6f38a0dc1075
name:
type: string
example: Ut
code:
type: string
example: AND
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: ec40f95d-0a77-3ce9-bb95-03d52508dfc4
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: c5024f3a-50b0-31ad-accd-18f6dd9eee03
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: 763ed673-926a-370d-916c-8660c154b862
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: 92110d66-c342-3e99-bd48-e8df826bfeca
name: 'Quas voluptatem veniam'
description: 'Dicta est quidem in cupiditate rerum optio dolor.'
current_version: 1
file:
path: projects/0699582d-0a45-3e12-869e-bc883d3ef7f1.pdf
size: '4061509'
extension: pdf
discipline:
id: a2d092cf-97c8-4b73-b15d-3e479eeb614a
name: Eaque
code: FUO
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 92110d66-c342-3e99-bd48-e8df826bfeca
name:
type: string
example: 'Quas voluptatem veniam'
description:
type: string
example: 'Dicta est quidem in cupiditate rerum optio dolor.'
current_version:
type: integer
example: 1
file:
type: object
properties:
path:
type: string
example: projects/0699582d-0a45-3e12-869e-bc883d3ef7f1.pdf
size:
type: string
example: '4061509'
extension:
type: string
example: pdf
discipline:
type: object
properties:
id:
type: string
example: a2d092cf-97c8-4b73-b15d-3e479eeb614a
name:
type: string
example: Eaque
code:
type: string
example: FUO
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: 059467a7-b690-334d-a8da-243b56727264
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: 40ea0800-ac62-3b0d-ba38-8fc6dd78378e
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: ca56b0a3-0b64-347e-9111-c086f99c4e9e
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: 39132652-ba8d-3b97-bd72-7b9e62c63d76
nullable: true
parameters:
-
in: path
name: id
description: 'The ID of the project.'
example: 12
required: true
schema:
type: integer
-
in: path
name: project
description: 'Project UUID'
example: vero
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: animi
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: dolor
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: incidunt
kit_uuid:
type: string
description: 'O campo value deve ser um UUID válido.'
example: 107a9b0c-af6d-3aab-b930-5418bec5344f
required:
- employee
- kit_uuid
/api/reports/employee-sheet:
get:
summary: 'Generate employee sheet PDF'
operationId: generateEmployeeSheetPDF
description: 'Dispatches async PDF generation of the employee record. 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
required:
- employee
/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: voluptas
required: false
schema:
type: string
description: ''
example: voluptas
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: 'Delectus repellendus dolor nihil laborum quis quae voluptates.'
required: false
schema:
type: string
description: ''
example: 'Delectus repellendus dolor nihil laborum quis quae voluptates.'
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:
- abd35571-4317-3791-b699-8c57d9b6d2b5
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:
- abd35571-4317-3791-b699-8c57d9b6d2b5
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:
- 73fd097b-9e15-3b17-a7cb-9593df992f40
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:
- 73fd097b-9e15-3b17-a7cb-9593df992f40
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:
- fdcee41c-3865-30c0-9772-00c5a7ecf4a4
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- fdcee41c-3865-30c0-9772-00c5a7ecf4a4
items:
type: string
-
in: query
name: customers
description: 'O campo value deve ser um UUID válido.'
example:
- c9c9f6e3-7332-3615-8287-c7d13ca492e6
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- c9c9f6e3-7332-3615-8287-c7d13ca492e6
items:
type: string
-
in: query
name: suppliers
description: 'O campo value deve ser um UUID válido.'
example:
- 65407993-e7e8-3dcd-8bd3-6c1c11702ea3
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- 65407993-e7e8-3dcd-8bd3-6c1c11702ea3
items:
type: string
-
in: query
name: cash_session
description: 'O campo value deve ser um UUID válido.'
example: b9071b42-19b3-3e8c-89f3-e712da002fd1
required: false
schema:
type: string
description: 'O campo value deve ser um UUID válido.'
example: b9071b42-19b3-3e8c-89f3-e712da002fd1
nullable: true
-
in: query
name: works
description: 'O campo value deve ser um UUID válido.'
example:
- ab321ddc-10fc-3853-91f0-91054cb7f2ca
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- ab321ddc-10fc-3853-91f0-91054cb7f2ca
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: aliquam
required: false
schema:
type: string
description: ''
example: aliquam
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: 'Earum molestiae eveniet quod est.'
required: false
schema:
type: string
description: ''
example: 'Earum molestiae eveniet quod est.'
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:
- afaf0b29-1039-3269-9174-176f0848739e
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:
- afaf0b29-1039-3269-9174-176f0848739e
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:
- 77697f11-5eb1-39e1-b499-9d740002f154
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:
- 77697f11-5eb1-39e1-b499-9d740002f154
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:
- 830c78cc-1121-35c2-b475-34991cfd27b0
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- 830c78cc-1121-35c2-b475-34991cfd27b0
items:
type: string
-
in: query
name: customers
description: 'O campo value deve ser um UUID válido.'
example:
- ee9eb383-bc56-3010-a081-4762734b3761
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- ee9eb383-bc56-3010-a081-4762734b3761
items:
type: string
-
in: query
name: suppliers
description: 'O campo value deve ser um UUID válido.'
example:
- 2df2a6b7-66cd-3d92-88b0-02cb2de318cc
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- 2df2a6b7-66cd-3d92-88b0-02cb2de318cc
items:
type: string
-
in: query
name: cash_session
description: 'O campo value deve ser um UUID válido.'
example: 39e287a8-1dfe-33b1-a79b-6053156e8389
required: false
schema:
type: string
description: 'O campo value deve ser um UUID válido.'
example: 39e287a8-1dfe-33b1-a79b-6053156e8389
nullable: true
-
in: query
name: works
description: 'O campo value deve ser um UUID válido.'
example:
- ead6e5e1-0524-33a9-83d7-66d24761ad7d
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- ead6e5e1-0524-33a9-83d7-66d24761ad7d
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: 53bda803-4ff4-3f7e-90ae-c206873b3e29
name: 'libero dolor'
slug: null
description: null
abbreviation: nku
created_at: null
updated_at: null
-
id: c03bdc2d-40ce-315e-a5fe-1367790d4f2c
name: 'non at'
slug: null
description: null
abbreviation: dbt
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: 53bda803-4ff4-3f7e-90ae-c206873b3e29
name: 'libero dolor'
slug: null
description: null
abbreviation: nku
created_at: null
updated_at: null
-
id: c03bdc2d-40ce-315e-a5fe-1367790d4f2c
name: 'non at'
slug: null
description: null
abbreviation: dbt
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 53bda803-4ff4-3f7e-90ae-c206873b3e29
name:
type: string
example: 'libero dolor'
slug:
type: string
example: null
nullable: true
description:
type: string
example: null
nullable: true
abbreviation:
type: string
example: nku
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: d182dcd7-ef91-33ed-ae37-f1d8f701dd57
name: 'cupiditate voluptatem'
slug: null
description: null
abbreviation: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: d182dcd7-ef91-33ed-ae37-f1d8f701dd57
name:
type: string
example: 'cupiditate voluptatem'
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: 6
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: 33f03d23-2775-3818-9404-f77825c90172
name: 'Mr. Willard Douglas II'
username: csteuber
email: frami.eli@example.com
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
-
id: 9b1b232e-4192-3872-b3da-b1f65787751e
name: 'Mr. Jaycee Murazik'
username: nikolaus.marie
email: ppouros@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: 33f03d23-2775-3818-9404-f77825c90172
name: 'Mr. Willard Douglas II'
username: csteuber
email: frami.eli@example.com
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
-
id: 9b1b232e-4192-3872-b3da-b1f65787751e
name: 'Mr. Jaycee Murazik'
username: nikolaus.marie
email: ppouros@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: 33f03d23-2775-3818-9404-f77825c90172
name:
type: string
example: 'Mr. Willard Douglas II'
username:
type: string
example: csteuber
email:
type: string
example: frami.eli@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:
- 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:
- 2d305ff8-4e9d-3263-b9eb-8a4e25948cbb
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:
- 7242e9f5-3b12-336e-a11b-6e6df3bf20ee
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:
- a03463e3-73af-3ed2-b119-a9839e7a03fe
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: 'laboriosam cupiditate'
slug: enim-dolorem-consequatur-similique-recusandae-tempore
-
name: 'molestiae vitae'
slug: velit-asperiores-alias-aut-qui-eum-ut-qui
properties:
data:
type: array
example:
-
name: 'laboriosam cupiditate'
slug: enim-dolorem-consequatur-similique-recusandae-tempore
-
name: 'molestiae vitae'
slug: velit-asperiores-alias-aut-qui-eum-ut-qui
items:
type: object
properties:
name:
type: string
example: 'laboriosam cupiditate'
slug:
type: string
example: enim-dolorem-consequatur-similique-recusandae-tempore
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: 56ce5661-d7dc-351f-b743-ea78f4016b46
slug: null
name: null
description: 'Gael de Aguiar'
abbreviation: laudantium
color: '#329b30'
text_color: '#6bf5a6'
module:
name: 'Solicitação de Produtos'
slug: product_request
created_at: null
updated_at: null
-
id: ad705c8e-675e-3f75-9266-8f2a5d536683
slug: null
name: null
description: 'Srta. Noemi Duarte Godói Jr.'
abbreviation: dolore
color: '#739ef8'
text_color: '#5e47f6'
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: 56ce5661-d7dc-351f-b743-ea78f4016b46
slug: null
name: null
description: 'Gael de Aguiar'
abbreviation: laudantium
color: '#329b30'
text_color: '#6bf5a6'
module:
name: 'Solicitação de Produtos'
slug: product_request
created_at: null
updated_at: null
-
id: ad705c8e-675e-3f75-9266-8f2a5d536683
slug: null
name: null
description: 'Srta. Noemi Duarte Godói Jr.'
abbreviation: dolore
color: '#739ef8'
text_color: '#5e47f6'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 56ce5661-d7dc-351f-b743-ea78f4016b46
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Gael de Aguiar'
abbreviation:
type: string
example: laudantium
color:
type: string
example: '#329b30'
text_color:
type: string
example: '#6bf5a6'
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
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: 0fa35de4-fbb6-3913-aa25-ccc88f9f2431
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: 345c4f71-5d2a-3df0-9209-aa35b379093b
slug: null
name: null
description: 'Sandra Rivera Martines Jr.'
abbreviation: soluta
color: '#ae8da7'
text_color: '#e45762'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 345c4f71-5d2a-3df0-9209-aa35b379093b
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Sandra Rivera Martines Jr.'
abbreviation:
type: string
example: soluta
color:
type: string
example: '#ae8da7'
text_color:
type: string
example: '#e45762'
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: 0121123b-c93a-3830-a817-e69316077b66
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: a3128cce-51c0-391f-ad2e-f82db91e5853
quantity: 337.5403
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: 094ea16c-d36e-306a-a146-9c884910a48b
quantity: 771.1087
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: a3128cce-51c0-391f-ad2e-f82db91e5853
quantity: 337.5403
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: 094ea16c-d36e-306a-a146-9c884910a48b
quantity: 771.1087
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: a3128cce-51c0-391f-ad2e-f82db91e5853
quantity:
type: number
example: 337.5403
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: 71a32dfb-a347-3fb3-875c-d69a2b79b1ea
name: 'Estoque Beltrão-Burgos'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
-
id: 79ccad25-b2a2-34ea-b3fe-3e68132fb8f2
name: 'Estoque Padilha e Cordeiro e Associados'
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: 71a32dfb-a347-3fb3-875c-d69a2b79b1ea
name: 'Estoque Beltrão-Burgos'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
-
id: 79ccad25-b2a2-34ea-b3fe-3e68132fb8f2
name: 'Estoque Padilha e Cordeiro e Associados'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 71a32dfb-a347-3fb3-875c-d69a2b79b1ea
name:
type: string
example: 'Estoque Beltrão-Burgos'
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: 86e38500-541a-3541-beda-57fcf4db7df1
name: 'Estoque Tamoio-Serrano'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 86e38500-541a-3541-beda-57fcf4db7df1
name:
type: string
example: 'Estoque Tamoio-Serrano'
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: 06069441-2f50-3ff8-866f-e3aced9f25fb
name: 'Estoque Bonilha-Ramos'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 06069441-2f50-3ff8-866f-e3aced9f25fb
name:
type: string
example: 'Estoque Bonilha-Ramos'
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: 4ab7ffa0-fd53-310a-af4b-9979dd5b949a
name: 'Estoque Escobar 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: 4ab7ffa0-fd53-310a-af4b-9979dd5b949a
name:
type: string
example: 'Estoque Escobar 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
put:
summary: 'Update stock'
operationId: updateStock
description: 'Updates an existing stock'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 522b2932-6b5b-3b55-8a9b-88f236834fb6
name: 'Estoque Saito S.A.'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 522b2932-6b5b-3b55-8a9b-88f236834fb6
name:
type: string
example: 'Estoque Saito S.A.'
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: 1eaa357f-f839-3e93-930f-0e9dc0e4cf82
quantity: 957.3054
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: ee3d70e5-7603-3e11-abcc-2e8ee5edc90f
quantity: 578.3346
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: 1eaa357f-f839-3e93-930f-0e9dc0e4cf82
quantity: 957.3054
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: ee3d70e5-7603-3e11-abcc-2e8ee5edc90f
quantity: 578.3346
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: 1eaa357f-f839-3e93-930f-0e9dc0e4cf82
quantity:
type: number
example: 957.3054
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: 06117300-719e-3b9a-9641-46acdfc3ac62
quantity: 610.3307
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: 06117300-719e-3b9a-9641-46acdfc3ac62
quantity:
type: number
example: 610.3307
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: dolorum
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: 0ed7e899-d014-3781-9f74-748005c719c3
code: MOV-835799
type: vencido
type_name: EXPIRED
is_entry: false
is_exit: true
quantity: 25.0371
previous_quantity: 52.1502
new_quantity: 27.1131
reason: null
movement_date: '2026-09-19T06:16:42.000000Z'
created_at: null
-
id: 8d92ff8c-5b3e-31e0-a434-13731d400c39
code: MOV-743389
type: 'saída transferência'
type_name: TRANSFER_OUT
is_entry: false
is_exit: true
quantity: 58.7713
previous_quantity: 79.2094
new_quantity: 20.4381
reason: null
movement_date: '2026-08-26T16:44:09.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: 0ed7e899-d014-3781-9f74-748005c719c3
code: MOV-835799
type: vencido
type_name: EXPIRED
is_entry: false
is_exit: true
quantity: 25.0371
previous_quantity: 52.1502
new_quantity: 27.1131
reason: null
movement_date: '2026-09-19T06:16:42.000000Z'
created_at: null
-
id: 8d92ff8c-5b3e-31e0-a434-13731d400c39
code: MOV-743389
type: 'saída transferência'
type_name: TRANSFER_OUT
is_entry: false
is_exit: true
quantity: 58.7713
previous_quantity: 79.2094
new_quantity: 20.4381
reason: null
movement_date: '2026-08-26T16:44:09.000000Z'
created_at: null
items:
type: object
properties:
id:
type: string
example: 0ed7e899-d014-3781-9f74-748005c719c3
code:
type: string
example: MOV-835799
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: 25.0371
previous_quantity:
type: number
example: 52.1502
new_quantity:
type: number
example: 27.1131
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-09-19T06:16:42.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: 70ebbb01-dbed-31e9-a3d1-37c84aff845c
code: MOV-399486
type: compra
type_name: PURCHASE
is_entry: true
is_exit: false
quantity: 55.3783
previous_quantity: 529.9587
new_quantity: 585.337
reason: null
movement_date: '2026-08-28T08:21:10.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 70ebbb01-dbed-31e9-a3d1-37c84aff845c
code:
type: string
example: MOV-399486
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: 55.3783
previous_quantity:
type: number
example: 529.9587
new_quantity:
type: number
example: 585.337
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-08-28T08:21:10.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: c4d72ec7-186c-31d4-a498-5c52feb859d2
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: d1b19267-c3f3-3043-98e1-43b642fd9087
code: MOV-161091
type: 'ajuste entrada'
type_name: ADJUSTMENT_IN
is_entry: true
is_exit: false
quantity: 51.0205
previous_quantity: 582.6054
new_quantity: 633.6259
reason: null
movement_date: '2026-09-22T02:00:21.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: d1b19267-c3f3-3043-98e1-43b642fd9087
code:
type: string
example: MOV-161091
type:
type: string
example: 'ajuste entrada'
type_name:
type: string
example: ADJUSTMENT_IN
is_entry:
type: boolean
example: true
is_exit:
type: boolean
example: false
quantity:
type: number
example: 51.0205
previous_quantity:
type: number
example: 582.6054
new_quantity:
type: number
example: 633.6259
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-09-22T02:00:21.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: ee41c45f-2dc4-3a6d-8af5-f499c8ba9b05
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: 4f7fffb2-3d86-3327-8b44-8661f6b638d4
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: 2c30bbf2-cf89-3107-9b3c-2c11dcd99423
code: MOV-972221
type: alocação
type_name: ALLOCATION
is_entry: true
is_exit: false
quantity: 77.3446
previous_quantity: 529.5263
new_quantity: 606.8709
reason: 'Enim et nemo quibusdam voluptatibus nihil dolorem.'
movement_date: '2026-09-05T23:22:55.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 2c30bbf2-cf89-3107-9b3c-2c11dcd99423
code:
type: string
example: MOV-972221
type:
type: string
example: alocação
type_name:
type: string
example: ALLOCATION
is_entry:
type: boolean
example: true
is_exit:
type: boolean
example: false
quantity:
type: number
example: 77.3446
previous_quantity:
type: number
example: 529.5263
new_quantity:
type: number
example: 606.8709
reason:
type: string
example: 'Enim et nemo quibusdam voluptatibus nihil dolorem.'
movement_date:
type: string
example: '2026-09-05T23:22:55.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: 0bb8fb93-984a-3d5a-85ba-540b9ab86f1f
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: dd38ff88-f56f-398d-9e04-3f34d4ac3941
code: MOV-346199
type: venda
type_name: SALE
is_entry: false
is_exit: true
quantity: 98.7009
previous_quantity: 475.1323
new_quantity: 376.4314
reason: null
movement_date: '2026-09-10T09:58:34.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: dd38ff88-f56f-398d-9e04-3f34d4ac3941
code:
type: string
example: MOV-346199
type:
type: string
example: venda
type_name:
type: string
example: SALE
is_entry:
type: boolean
example: false
is_exit:
type: boolean
example: true
quantity:
type: number
example: 98.7009
previous_quantity:
type: number
example: 475.1323
new_quantity:
type: number
example: 376.4314
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-09-10T09:58:34.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: 4f526700-f614-3b53-be2a-0c72c0e98bbb
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: 9cde4315-f0eb-3a54-8d8b-ccc5920ebb02
code: MOV-868888
type: venda
type_name: SALE
is_entry: false
is_exit: true
quantity: 43.0371
previous_quantity: 122.6035
new_quantity: 79.5664
reason: 'Et eaque consequatur voluptatem et.'
movement_date: '2026-09-09T03:55:45.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 9cde4315-f0eb-3a54-8d8b-ccc5920ebb02
code:
type: string
example: MOV-868888
type:
type: string
example: venda
type_name:
type: string
example: SALE
is_entry:
type: boolean
example: false
is_exit:
type: boolean
example: true
quantity:
type: number
example: 43.0371
previous_quantity:
type: number
example: 122.6035
new_quantity:
type: number
example: 79.5664
reason:
type: string
example: 'Et eaque consequatur voluptatem et.'
movement_date:
type: string
example: '2026-09-09T03:55:45.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: 9cd4cb41-9385-3fcf-b2db-f75030dd619b
name: 'Sra. Melissa Estrada Cruz'
email: ferminiano.raissa@example.com
phone: '(99) 99277-7953'
document: 10.457.868/0001-79
type: pf
responsible: 'Dr. Renan Ícaro Vega Jr.'
image:
id: null
url: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
-
id: 03eb181d-e509-3e79-be4f-603d10ddbd82
name: 'Luan Quintana Aranda'
email: iasmin08@example.net
phone: '(81) 95427-7336'
document: 26.376.083/0001-01
type: pf
responsible: 'Sra. Naiara Rezende'
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: 9cd4cb41-9385-3fcf-b2db-f75030dd619b
name: 'Sra. Melissa Estrada Cruz'
email: ferminiano.raissa@example.com
phone: '(99) 99277-7953'
document: 10.457.868/0001-79
type: pf
responsible: 'Dr. Renan Ícaro Vega Jr.'
image:
id: null
url: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
-
id: 03eb181d-e509-3e79-be4f-603d10ddbd82
name: 'Luan Quintana Aranda'
email: iasmin08@example.net
phone: '(81) 95427-7336'
document: 26.376.083/0001-01
type: pf
responsible: 'Sra. Naiara Rezende'
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: 9cd4cb41-9385-3fcf-b2db-f75030dd619b
name:
type: string
example: 'Sra. Melissa Estrada Cruz'
email:
type: string
example: ferminiano.raissa@example.com
phone:
type: string
example: '(99) 99277-7953'
document:
type: string
example: 10.457.868/0001-79
type:
type: string
example: pf
responsible:
type: string
example: 'Dr. Renan Ícaro Vega Jr.'
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: 66c65c6c-b0bd-3cb5-a206-9f4df1a71212
name: 'Norma Eloá Aranda Sobrinho'
email: ldesouza@example.org
phone: '(61) 2584-8529'
document: 08.450.880/0001-00
type: pf
responsible: 'Dr. Mateus Furtado'
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: 66c65c6c-b0bd-3cb5-a206-9f4df1a71212
name:
type: string
example: 'Norma Eloá Aranda Sobrinho'
email:
type: string
example: ldesouza@example.org
phone:
type: string
example: '(61) 2584-8529'
document:
type: string
example: 08.450.880/0001-00
type:
type: string
example: pf
responsible:
type: string
example: 'Dr. Mateus Furtado'
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: 8786f2f5-f4cb-3a2e-929f-4ba643e30c34
name: 'Dr. Thales Ortiz'
description: 'Aut suscipit rerum earum nihil. Tenetur vel in autem. Ducimus aliquid recusandae aut laudantium. Odio consequatur maiores rerum eligendi veritatis perspiciatis illo dolorem.'
type: depósito
-
id: 81b1165a-793f-3fcb-9c71-ff829221cbab
name: 'Willian Fernandes Jr.'
description: 'Accusantium beatae dolore et ipsum consequuntur. Quia modi beatae quam velit. Similique aliquid labore deleniti praesentium qui cupiditate et.'
type: entrada
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: 8786f2f5-f4cb-3a2e-929f-4ba643e30c34
name: 'Dr. Thales Ortiz'
description: 'Aut suscipit rerum earum nihil. Tenetur vel in autem. Ducimus aliquid recusandae aut laudantium. Odio consequatur maiores rerum eligendi veritatis perspiciatis illo dolorem.'
type: depósito
-
id: 81b1165a-793f-3fcb-9c71-ff829221cbab
name: 'Willian Fernandes Jr.'
description: 'Accusantium beatae dolore et ipsum consequuntur. Quia modi beatae quam velit. Similique aliquid labore deleniti praesentium qui cupiditate et.'
type: entrada
items:
type: object
properties:
id:
type: string
example: 8786f2f5-f4cb-3a2e-929f-4ba643e30c34
name:
type: string
example: 'Dr. Thales Ortiz'
description:
type: string
example: 'Aut suscipit rerum earum nihil. Tenetur vel in autem. Ducimus aliquid recusandae aut laudantium. Odio consequatur maiores rerum eligendi veritatis perspiciatis illo dolorem.'
type:
type: string
example: depósito
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: 3cb6ed2c-306e-31a7-9767-31a605192cc5
name: 'Maria Delgado'
description: 'Facere dignissimos animi accusamus numquam aut perspiciatis esse. Et maxime quia sed itaque. Voluptates in tenetur dicta minima explicabo. Quos ut ut ut.'
type: saída
properties:
data:
type: object
properties:
id:
type: string
example: 3cb6ed2c-306e-31a7-9767-31a605192cc5
name:
type: string
example: 'Maria Delgado'
description:
type: string
example: 'Facere dignissimos animi accusamus numquam aut perspiciatis esse. Et maxime quia sed itaque. Voluptates in tenetur dicta minima explicabo. Quos ut ut ut.'
type:
type: string
example: saída
tags:
- 'Transaction Categories'
put:
summary: 'Update transaction category'
operationId: updateTransactionCategory
description: 'Update a transaction category'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Transaction Categories'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Name.
example: 'Example Name'
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: velit
required: true
schema:
type: string
/api/admin/tutorial-modules:
get:
summary: 'Listar módulos'
operationId: listarMdulos
description: 'Lista o catálogo de módulos de tutorial'
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: 'Busca por nome ou descrição.'
example: Financeiro
required: false
schema:
type: string
description: 'Busca por nome ou descrição.'
example: Financeiro
nullable: true
-
in: query
name: is_active
description: 'Filtra por módulos ativos ou inativos.'
example: true
required: false
schema:
type: boolean
description: 'Filtra por módulos ativos ou inativos.'
example: true
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: cf264d3e-52da-300c-83b9-f5ae410cddaf
name: 'Ullam repellat'
slug: ullam-repellat-812892
description: 'Facilis et ut et ducimus aut sed quam.'
sort_order: 0
is_active: true
created_at: null
updated_at: null
-
id: e9efa9c5-b0a8-3a4e-9e49-5696b3b13bfe
name: 'Voluptatem consequuntur'
slug: voluptatem-consequuntur-482477
description: 'Iure dolor quia quidem ratione nobis.'
sort_order: 0
is_active: true
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: cf264d3e-52da-300c-83b9-f5ae410cddaf
name: 'Ullam repellat'
slug: ullam-repellat-812892
description: 'Facilis et ut et ducimus aut sed quam.'
sort_order: 0
is_active: true
created_at: null
updated_at: null
-
id: e9efa9c5-b0a8-3a4e-9e49-5696b3b13bfe
name: 'Voluptatem consequuntur'
slug: voluptatem-consequuntur-482477
description: 'Iure dolor quia quidem ratione nobis.'
sort_order: 0
is_active: true
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: cf264d3e-52da-300c-83b9-f5ae410cddaf
name:
type: string
example: 'Ullam repellat'
slug:
type: string
example: ullam-repellat-812892
description:
type: string
example: 'Facilis et ut et ducimus aut sed quam.'
sort_order:
type: integer
example: 0
is_active:
type: boolean
example: 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:
- 'Tutoriais (administração)'
post:
summary: 'Cadastrar módulo'
operationId: cadastrarMdulo
description: 'Cria um módulo no catálogo. O slug é derivado do nome quando não informado.'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: dd752d9a-7f57-36bc-a1c8-8759005c09d7
name: 'Praesentium amet'
slug: praesentium-amet-500595
description: 'Velit deserunt eligendi qui earum assumenda molestias.'
sort_order: 0
is_active: true
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: dd752d9a-7f57-36bc-a1c8-8759005c09d7
name:
type: string
example: 'Praesentium amet'
slug:
type: string
example: praesentium-amet-500595
description:
type: string
example: 'Velit deserunt eligendi qui earum assumenda molestias.'
sort_order:
type: integer
example: 0
is_active:
type: boolean
example: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Tutoriais (administração)'
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: 'Identificador. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Slug'
nullable: true
description:
type: string
description: Descrição.
example: 'Example Description'
nullable: true
sort_order:
type: integer
description: 'Ordem. O campo value deve ser pelo menos 0.'
example: 1
is_active:
type: boolean
description: Ativo.
example: true
required:
- name
'/api/admin/tutorial-modules/{tutorialModule}':
get:
summary: 'Visualizar módulo'
operationId: visualizarMdulo
description: 'Detalhe de um módulo do catálogo'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: b744ed58-c05d-37c7-9b37-a93284e9685f
name: 'Excepturi odit'
slug: excepturi-odit-448570
description: 'Et nisi nobis earum qui aut ratione quae.'
sort_order: 0
is_active: true
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: b744ed58-c05d-37c7-9b37-a93284e9685f
name:
type: string
example: 'Excepturi odit'
slug:
type: string
example: excepturi-odit-448570
description:
type: string
example: 'Et nisi nobis earum qui aut ratione quae.'
sort_order:
type: integer
example: 0
is_active:
type: boolean
example: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Tutoriais (administração)'
put:
summary: 'Atualizar módulo'
operationId: atualizarMdulo
description: 'Atualiza um módulo do catálogo'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: a114e5e3-f78f-313f-9216-e81404ec9a9a
name: 'Modi nesciunt'
slug: modi-nesciunt-718478
description: 'Amet eos ipsam fugiat aperiam.'
sort_order: 0
is_active: true
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: a114e5e3-f78f-313f-9216-e81404ec9a9a
name:
type: string
example: 'Modi nesciunt'
slug:
type: string
example: modi-nesciunt-718478
description:
type: string
example: 'Amet eos ipsam fugiat aperiam.'
sort_order:
type: integer
example: 0
is_active:
type: boolean
example: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Tutoriais (administração)'
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: 'Identificador. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Slug'
nullable: true
description:
type: string
description: Descrição.
example: 'Example Description'
nullable: true
sort_order:
type: integer
description: 'Ordem. O campo value deve ser pelo menos 0.'
example: 1
is_active:
type: boolean
description: Ativo.
example: true
delete:
summary: 'Remover módulo'
operationId: removerMdulo
description: 'Remove o módulo e, junto, os tutoriais que pertenciam a ele'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'Tutoriais (administração)'
parameters:
-
in: path
name: tutorialModule
description: 'UUID do módulo'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
/api/admin/tutorials:
get:
summary: 'Listar tutoriais'
operationId: listarTutoriais
description: 'Lista os tutoriais em qualquer status, para quem administra'
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: 'Busca por título ou descrição.'
example: 'ordem de serviço'
required: false
schema:
type: string
description: 'Busca por título ou descrição.'
example: 'ordem de serviço'
nullable: true
-
in: query
name: module_id
description: 'Filtra pelo UUID do módulo. O campo value deve ser um UUID válido. The uuid of an existing record in the tutorial_modules table.'
example: b82107a0-fa59-323f-b34e-4b5481003f78
required: false
schema:
type: string
description: 'Filtra pelo UUID do módulo. O campo value deve ser um UUID válido. The uuid of an existing record in the tutorial_modules table.'
example: b82107a0-fa59-323f-b34e-4b5481003f78
nullable: true
-
in: query
name: sector_id
description: 'Filtra pelo UUID do setor vinculado. O campo value deve ser um UUID válido. The uuid of an existing record in the sectors table.'
example: 539de693-92f0-3800-b63e-f2da5b16ac4b
required: false
schema:
type: string
description: 'Filtra pelo UUID do setor vinculado. O campo value deve ser um UUID válido. The uuid of an existing record in the sectors table.'
example: 539de693-92f0-3800-b63e-f2da5b16ac4b
nullable: true
-
in: query
name: status
description: 'Filtra por status (draft ou published).'
example: published
required: false
schema:
type: string
description: 'Filtra por status (draft ou published).'
example: published
enum:
- draft
- published
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: f9d14e03-3690-3510-b6ed-82196ce5be6b
title: 'Minima fuga voluptatum fugit'
description: 'Et exercitationem illo eius culpa.'
status: draft
published_at: null
sort_order: 0
module:
id: a2d092d2-1af2-4324-8aee-c0ef3d6e9b18
name: 'Et iure'
slug: et-iure-365854
created_at: null
updated_at: null
-
id: b06e83d4-96d9-36c3-9c46-2969f4205f7c
title: 'Deserunt quod nostrum voluptas'
description: 'Dolores sunt nulla recusandae sapiente officiis eveniet sapiente.'
status: draft
published_at: null
sort_order: 0
module:
id: a2d092d2-1edb-4996-b58a-da5cd81c2a94
name: 'Tempora nostrum'
slug: tempora-nostrum-655623
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: f9d14e03-3690-3510-b6ed-82196ce5be6b
title: 'Minima fuga voluptatum fugit'
description: 'Et exercitationem illo eius culpa.'
status: draft
published_at: null
sort_order: 0
module:
id: a2d092d2-1af2-4324-8aee-c0ef3d6e9b18
name: 'Et iure'
slug: et-iure-365854
created_at: null
updated_at: null
-
id: b06e83d4-96d9-36c3-9c46-2969f4205f7c
title: 'Deserunt quod nostrum voluptas'
description: 'Dolores sunt nulla recusandae sapiente officiis eveniet sapiente.'
status: draft
published_at: null
sort_order: 0
module:
id: a2d092d2-1edb-4996-b58a-da5cd81c2a94
name: 'Tempora nostrum'
slug: tempora-nostrum-655623
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: f9d14e03-3690-3510-b6ed-82196ce5be6b
title:
type: string
example: 'Minima fuga voluptatum fugit'
description:
type: string
example: 'Et exercitationem illo eius culpa.'
status:
type: string
example: draft
published_at:
type: string
example: null
nullable: true
sort_order:
type: integer
example: 0
module:
type: object
properties:
id:
type: string
example: a2d092d2-1af2-4324-8aee-c0ef3d6e9b18
name:
type: string
example: 'Et iure'
slug:
type: string
example: et-iure-365854
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:
- 'Tutoriais (administração)'
post:
summary: 'Cadastrar tutorial'
operationId: cadastrarTutorial
description: 'Cria um tutorial. Nasce como rascunho e só aparece na central depois de publicado.'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 6e366148-04a0-3301-a462-e5967eb64698
title: 'Repudiandae sit voluptas et'
description: 'Quasi sed quos non sunt.'
status: draft
published_at: null
sort_order: 0
module:
id: a2d092d2-28a5-4c9a-a42f-51f5cf0edbd7
name: 'Nesciunt quia'
slug: nesciunt-quia-894500
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 6e366148-04a0-3301-a462-e5967eb64698
title:
type: string
example: 'Repudiandae sit voluptas et'
description:
type: string
example: 'Quasi sed quos non sunt.'
status:
type: string
example: draft
published_at:
type: string
example: null
nullable: true
sort_order:
type: integer
example: 0
module:
type: object
properties:
id:
type: string
example: a2d092d2-28a5-4c9a-a42f-51f5cf0edbd7
name:
type: string
example: 'Nesciunt quia'
slug:
type: string
example: nesciunt-quia-894500
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Tutoriais (administração)'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
module_id:
type: string
description: 'Módulo. O campo value deve ser um UUID válido. The uuid of an existing record in the tutorial_modules table.'
example: eb0f0111-0c14-39d4-bee7-6c081386a531
title:
type: string
description: 'Título. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Title'
description:
type: string
description: Descrição.
example: 'Example Description'
nullable: true
cover_path:
type: string
description: 'Capa. Must start with one of tutorials/.'
example: 'Example Cover path'
nullable: true
sort_order:
type: integer
description: 'Ordem. O campo value deve ser pelo menos 0.'
example: 1
sectors:
type: array
description: 'Setor. O campo value deve ser um UUID válido. The uuid of an existing record in the sectors table.'
example:
- f6443961-be69-3125-8ee8-28e34a6312da
items:
type: string
permissions:
type: array
description: 'Permissão. The name of an existing record in the permissions table.'
example:
- 79f669aa-e8b5-3342-a81e-78facc3e597e
items:
type: string
required:
- module_id
- title
/api/admin/tutorials/upload-url:
post:
summary: 'Gerar URL de upload'
operationId: gerarURLDeUpload
description: 'Devolve uma URL assinada de curta validade para o cliente enviar o arquivo direto ao S3. O arquivo só é conferido depois, ao criar o item ou salvar a capa.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
url: string
headers: array
path: string
expires_in: integer
properties:
url:
type: string
example: string
headers:
type: string
example: array
path:
type: string
example: string
expires_in:
type: string
example: integer
tags:
- 'Tutoriais (administração)'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
kind:
type: string
description: 'Tipo de arquivo.'
example: 'Example Kind'
enum:
- pdf
- video
- cover
filename:
type: string
description: 'Nome do arquivo. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Name'
extension:
type: string
description: 'Extensão do arquivo.'
example: 'Example Extension'
enum:
- null
size_bytes:
type: integer
description: 'Tamanho do arquivo. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 0.'
example: 1
required:
- kind
- filename
- extension
- size_bytes
'/api/admin/tutorials/{id}':
get:
summary: 'Visualizar tutorial'
operationId: visualizarTutorial
description: 'Detalhe do tutorial com vínculos e itens'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 82dfd614-a8c2-3427-b758-cf135977add6
title: 'Quis facilis nobis reprehenderit'
description: 'Id libero aperiam minus itaque.'
status: draft
published_at: null
sort_order: 0
module:
id: a2d092d2-37e7-4fc3-aa4d-c72317df388b
name: 'Quo architecto'
slug: quo-architecto-893459
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 82dfd614-a8c2-3427-b758-cf135977add6
title:
type: string
example: 'Quis facilis nobis reprehenderit'
description:
type: string
example: 'Id libero aperiam minus itaque.'
status:
type: string
example: draft
published_at:
type: string
example: null
nullable: true
sort_order:
type: integer
example: 0
module:
type: object
properties:
id:
type: string
example: a2d092d2-37e7-4fc3-aa4d-c72317df388b
name:
type: string
example: 'Quo architecto'
slug:
type: string
example: quo-architecto-893459
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Tutoriais (administração)'
put:
summary: 'Atualizar tutorial'
operationId: atualizarTutorial
description: 'Atualiza o tutorial e os vínculos de setor e permissão'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 02c15f20-fec7-3a25-a06d-56f4954d46e0
title: 'Ut ullam cum ducimus'
description: 'Sunt debitis ullam odit voluptas magni impedit ea ipsam.'
status: draft
published_at: null
sort_order: 0
module:
id: a2d092d2-4015-4312-a945-dcb5e8a8c9f5
name: 'Velit vero'
slug: velit-vero-999489
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 02c15f20-fec7-3a25-a06d-56f4954d46e0
title:
type: string
example: 'Ut ullam cum ducimus'
description:
type: string
example: 'Sunt debitis ullam odit voluptas magni impedit ea ipsam.'
status:
type: string
example: draft
published_at:
type: string
example: null
nullable: true
sort_order:
type: integer
example: 0
module:
type: object
properties:
id:
type: string
example: a2d092d2-4015-4312-a945-dcb5e8a8c9f5
name:
type: string
example: 'Velit vero'
slug:
type: string
example: velit-vero-999489
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Tutoriais (administração)'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
module_id:
type: string
description: 'Módulo. O campo value deve ser um UUID válido. The uuid of an existing record in the tutorial_modules table.'
example: 5219812f-516f-3374-92ce-9cb2fa7fd582
title:
type: string
description: 'Título. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Title'
description:
type: string
description: Descrição.
example: 'Example Description'
nullable: true
cover_path:
type: string
description: 'Capa. Must start with one of tutorials/.'
example: 'Example Cover path'
nullable: true
sort_order:
type: integer
description: 'Ordem. O campo value deve ser pelo menos 0.'
example: 1
sectors:
type: array
description: 'Setor. O campo value deve ser um UUID válido. The uuid of an existing record in the sectors table.'
example:
- 3c24ba10-5134-3198-8a25-99e772cf1a3e
items:
type: string
permissions:
type: array
description: 'Permissão. The name of an existing record in the permissions table.'
example:
- 9c20aab7-a7bd-3b1f-aac9-8e00f9c54b83
items:
type: string
delete:
summary: 'Remover tutorial'
operationId: removerTutorial
description: 'Remove o tutorial, os itens e os arquivos correspondentes no S3'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'Tutoriais (administração)'
parameters:
-
in: path
name: id
description: 'The ID of the tutorial.'
example: 1
required: true
schema:
type: integer
-
in: path
name: tutorial
description: 'UUID do tutorial'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/admin/tutorials/{tutorial}/publish':
post:
summary: 'Publicar tutorial'
operationId: publicarTutorial
description: 'Publica o tutorial e carimba a data de publicação'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 1b3ba34d-070a-32e0-8eb4-13d1d958302f
title: 'Dolor omnis laboriosam sit'
description: 'Fugiat voluptas maxime occaecati similique incidunt maxime omnis.'
status: draft
published_at: null
sort_order: 0
module:
id: a2d092d2-4814-4e21-a02b-5f2682e87efa
name: 'Aut fugiat'
slug: aut-fugiat-670460
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 1b3ba34d-070a-32e0-8eb4-13d1d958302f
title:
type: string
example: 'Dolor omnis laboriosam sit'
description:
type: string
example: 'Fugiat voluptas maxime occaecati similique incidunt maxime omnis.'
status:
type: string
example: draft
published_at:
type: string
example: null
nullable: true
sort_order:
type: integer
example: 0
module:
type: object
properties:
id:
type: string
example: a2d092d2-4814-4e21-a02b-5f2682e87efa
name:
type: string
example: 'Aut fugiat'
slug:
type: string
example: aut-fugiat-670460
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Tutoriais (administração)'
parameters:
-
in: path
name: tutorial
description: 'UUID do tutorial'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/admin/tutorials/{tutorial}/unpublish':
post:
summary: 'Despublicar tutorial'
operationId: despublicarTutorial
description: 'Devolve o tutorial ao rascunho e limpa a data de publicação'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 5663b95f-683f-3ee6-be94-032ad3824aec
title: 'Doloribus vel alias omnis'
description: 'Odit sit ullam hic libero voluptates.'
status: draft
published_at: null
sort_order: 0
module:
id: a2d092d2-4d62-4ab8-a6cd-26d4f689afd8
name: 'Est ex'
slug: est-ex-866275
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 5663b95f-683f-3ee6-be94-032ad3824aec
title:
type: string
example: 'Doloribus vel alias omnis'
description:
type: string
example: 'Odit sit ullam hic libero voluptates.'
status:
type: string
example: draft
published_at:
type: string
example: null
nullable: true
sort_order:
type: integer
example: 0
module:
type: object
properties:
id:
type: string
example: a2d092d2-4d62-4ab8-a6cd-26d4f689afd8
name:
type: string
example: 'Est ex'
slug:
type: string
example: est-ex-866275
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Tutoriais (administração)'
parameters:
-
in: path
name: tutorial
description: 'UUID do tutorial'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/admin/tutorials/{tutorial_id}/items':
post:
summary: 'Adicionar item ao tutorial'
operationId: adicionarItemAoTutorial
description: 'Cria o item a partir de um arquivo já enviado ao S3 (pdf ou video) ou de um link do YouTube/Vimeo. O arquivo é conferido aqui: existência, tamanho real e assinatura do conteúdo.'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: a236781b-981c-31ec-88f2-6a149836a423
type: pdf
title: 'Repudiandae alias velit'
mime_type: application/pdf
size_bytes: 42921
duration_seconds: null
sort_order: 0
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: a236781b-981c-31ec-88f2-6a149836a423
type:
type: string
example: pdf
title:
type: string
example: 'Repudiandae alias velit'
mime_type:
type: string
example: application/pdf
size_bytes:
type: integer
example: 42921
duration_seconds:
type: string
example: null
nullable: true
sort_order:
type: integer
example: 0
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Tutoriais (administração)'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
type:
type: string
description: Tipo.
example: 'Example Type'
enum:
- pdf
- video
- link
title:
type: string
description: 'Título. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Title'
file_path:
type: string
description: 'Caminho do arquivo. Must start with one of tutorials/.'
example: 'Example File path'
external_url:
type: string
description: 'Link externo.'
example: 'https://example.com'
duration_seconds:
type: integer
description: 'Duração em segundos. O campo value deve ser pelo menos 0.'
example: 1
nullable: true
sort_order:
type: integer
description: 'Ordem. O campo value deve ser pelo menos 0.'
example: 1
required:
- type
- title
- file_path
parameters:
-
in: path
name: tutorial_id
description: 'The ID of the tutorial.'
example: 1
required: true
schema:
type: integer
-
in: path
name: tutorial
description: 'UUID do tutorial'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/admin/tutorials/{tutorial}/items/reorder':
put:
summary: 'Reordenar itens'
operationId: reordenarItens
description: 'Grava a ordem dos itens conforme a sequência de UUIDs enviada'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Itens reordenados com sucesso'
properties:
message:
type: string
example: 'Itens reordenados com sucesso'
tags:
- 'Tutoriais (administração)'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
items:
type: array
description: 'Item. O campo value deve ser um UUID válido. The uuid of an existing record in the tutorial_items table.'
example:
- 3a948fbc-f9b0-3aa0-a40e-640154af0709
items:
type: string
required:
- items
parameters:
-
in: path
name: tutorial
description: 'UUID do tutorial'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/admin/tutorial-items/{tutorialItem}':
put:
summary: 'Atualizar item'
operationId: atualizarItem
description: 'Atualiza o item. O tipo não muda depois de criado.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: f588cd35-2476-3af6-8e89-aab85ca100b3
type: pdf
title: 'Laudantium amet ea'
mime_type: application/pdf
size_bytes: 3167476
duration_seconds: null
sort_order: 0
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: f588cd35-2476-3af6-8e89-aab85ca100b3
type:
type: string
example: pdf
title:
type: string
example: 'Laudantium amet ea'
mime_type:
type: string
example: application/pdf
size_bytes:
type: integer
example: 3167476
duration_seconds:
type: string
example: null
nullable: true
sort_order:
type: integer
example: 0
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Tutoriais (administração)'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: 'Título. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Title'
file_path:
type: string
description: 'Caminho do arquivo. Must start with one of tutorials/.'
example: 'Example File path'
external_url:
type: string
description: 'Link externo. O campo value não pode ser superior a 2048 caracteres.'
example: 'https://example.com'
duration_seconds:
type: integer
description: 'Duração em segundos. O campo value deve ser pelo menos 0.'
example: 1
nullable: true
sort_order:
type: integer
description: 'Ordem. O campo value deve ser pelo menos 0.'
example: 1
delete:
summary: 'Remover item'
operationId: removerItem
description: 'Remove o item e apaga o arquivo correspondente no S3'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'Tutoriais (administração)'
parameters:
-
in: path
name: tutorialItem
description: 'UUID do item'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
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: 1b63e13d-1ef6-3e15-be71-e215a7dd1495
name: 'Sr. Danilo Balestero Guerra Filho'
abbreviation: 'Ziraldo Valente Sobrinho'
description: 'Sint minus excepturi autem.'
created_at: null
updated_at: null
-
id: 36bbd26f-5bbb-3bc9-a8a6-74ac606c34b1
name: 'Luan Everton Rico'
abbreviation: 'Paulina Sabrina Verdugo'
description: 'Quasi itaque ut nemo quis.'
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: 1b63e13d-1ef6-3e15-be71-e215a7dd1495
name: 'Sr. Danilo Balestero Guerra Filho'
abbreviation: 'Ziraldo Valente Sobrinho'
description: 'Sint minus excepturi autem.'
created_at: null
updated_at: null
-
id: 36bbd26f-5bbb-3bc9-a8a6-74ac606c34b1
name: 'Luan Everton Rico'
abbreviation: 'Paulina Sabrina Verdugo'
description: 'Quasi itaque ut nemo quis.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 1b63e13d-1ef6-3e15-be71-e215a7dd1495
name:
type: string
example: 'Sr. Danilo Balestero Guerra Filho'
abbreviation:
type: string
example: 'Ziraldo Valente Sobrinho'
description:
type: string
example: 'Sint minus excepturi 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: eb43448f-e9bb-37b8-9850-c25aa998a1f1
name: 'Sr. Benjamin Medina Jr.'
abbreviation: 'Eva Luísa Serra Filho'
description: 'Illum sit dolore quia iusto.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: eb43448f-e9bb-37b8-9850-c25aa998a1f1
name:
type: string
example: 'Sr. Benjamin Medina Jr.'
abbreviation:
type: string
example: 'Eva Luísa Serra Filho'
description:
type: string
example: 'Illum sit dolore quia iusto.'
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: provident
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: expedita
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: 2f83ce8d-6237-3d84-b54e-5c67e563f8af
name: 'Rhianna Turcotte'
username: tristin97
email: greichel@example.org
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
-
id: 37d2fe17-e21e-3bfd-b235-f99e365759e1
name: 'Dr. Gerald Beahan'
username: aurelia63
email: patrick.ziemann@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: 2f83ce8d-6237-3d84-b54e-5c67e563f8af
name: 'Rhianna Turcotte'
username: tristin97
email: greichel@example.org
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
-
id: 37d2fe17-e21e-3bfd-b235-f99e365759e1
name: 'Dr. Gerald Beahan'
username: aurelia63
email: patrick.ziemann@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: 2f83ce8d-6237-3d84-b54e-5c67e563f8af
name:
type: string
example: 'Rhianna Turcotte'
username:
type: string
example: tristin97
email:
type: string
example: greichel@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:
- 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: carroll53
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:
- b9552a96-9393-3f66-b35a-e834a9025d1c
items:
type: string
roles:
type: array
description: 'UUID da função. The uuid of an existing record in the roles table.'
example:
- 21b3a026-4dba-3c69-a029-54bdf686f124
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: 6db362aa-c5b0-3b8a-891c-702237f024fe
name: 'Janessa Deckow II'
username: murray.josiane
email: dicki.juvenal@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: 6db362aa-c5b0-3b8a-891c-702237f024fe
name:
type: string
example: 'Janessa Deckow II'
username:
type: string
example: murray.josiane
email:
type: string
example: dicki.juvenal@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: mbruen
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:
- cab32564-5c72-302d-a6f3-447b8c1d092c
items:
type: string
roles:
type: array
description: 'UUID da função. The uuid of an existing record in the roles table.'
example:
- 5e154cb9-0242-378c-9084-50215f14fddd
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:
- 1a3884de-4274-3876-b28a-03ed401d6952
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: ex
display_name: 'Quam et quod voluptatum saepe perspiciatis ipsa.'
-
id: null
name: aut
display_name: 'Quisquam et laudantium quibusdam quia voluptatem animi quis.'
properties:
data:
type: array
example:
-
id: null
name: ex
display_name: 'Quam et quod voluptatum saepe perspiciatis ipsa.'
-
id: null
name: aut
display_name: 'Quisquam et laudantium quibusdam quia voluptatem animi quis.'
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: ex
display_name:
type: string
example: 'Quam et quod voluptatum saepe perspiciatis ipsa.'
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: 5e28db9a-9945-3e53-8bcd-862b8d605132
description: 'Dr. Pâmela Angélica Padilha Sobrinho'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
-
id: 1393c1b8-7825-3b57-bd67-4689b7f10267
description: 'Josué Quintana'
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: 5e28db9a-9945-3e53-8bcd-862b8d605132
description: 'Dr. Pâmela Angélica Padilha Sobrinho'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
-
id: 1393c1b8-7825-3b57-bd67-4689b7f10267
description: 'Josué Quintana'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 5e28db9a-9945-3e53-8bcd-862b8d605132
description:
type: string
example: 'Dr. Pâmela Angélica Padilha Sobrinho'
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: 35f02360-4b78-369f-98a8-9fa21e4f8545
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: d1d5a11e-9d8c-3425-b499-df26181181ee
description: 'Marcelo Artur Amaral'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: d1d5a11e-9d8c-3425-b499-df26181181ee
description:
type: string
example: 'Marcelo Artur Amaral'
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: 75d46aed-1b1a-30a0-ba6e-69bbc416064a
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: bdd82986-d004-34f8-96b4-7089bc416b3b
name: 'Srta. Milene Lutero Rocha Sobrinho'
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: '2022-07-27 21:05:17.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
-
id: 77af096d-0051-3ee0-a143-fe6563f5e2ad
name: 'Lia Aline Vega'
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: '2010-05-04 22:29:19.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: bdd82986-d004-34f8-96b4-7089bc416b3b
name: 'Srta. Milene Lutero Rocha Sobrinho'
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: '2022-07-27 21:05:17.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
-
id: 77af096d-0051-3ee0-a143-fe6563f5e2ad
name: 'Lia Aline Vega'
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: '2010-05-04 22:29:19.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: bdd82986-d004-34f8-96b4-7089bc416b3b
name:
type: string
example: 'Srta. Milene Lutero Rocha Sobrinho'
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: '2022-07-27 21:05:17.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: e80c8569-a468-31f6-9c45-8f8c2c6723f8
status_id:
type: string
description: 'Status id. The uuid of an existing record in the statuses table.'
example: 30321051-4532-3c81-81b2-8d42027bb3d5
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: 3e3239c4-8f6d-348b-97c3-4b23b401587a
name: 'Viviane Prado Sobrinho'
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: '2014-08-18 03:41:10.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 3e3239c4-8f6d-348b-97c3-4b23b401587a
name:
type: string
example: 'Viviane Prado Sobrinho'
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: '2014-08-18 03:41: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
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: e24d0a72-adc9-3f94-a548-ea3a9fb4d72e
status_id:
type: string
description: 'Status id. The uuid of an existing record in the statuses table.'
example: 8b1fd7f8-590f-39ca-ad3c-e440905499b8
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: 85906287-f7d2-34b9-b0b0-4bce3bc169ad
name: 'Dr. Kristy Leuschke'
username: heath.wiegand
email: lgerhold@example.org
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
-
id: f14c0ecc-1151-31f0-8221-5261e4967be3
name: 'Mrs. Madisyn Zulauf'
username: qstoltenberg
email: uheathcote@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: 85906287-f7d2-34b9-b0b0-4bce3bc169ad
name: 'Dr. Kristy Leuschke'
username: heath.wiegand
email: lgerhold@example.org
certification: null
crea: null
last_login_at: null
image:
id: null
url: null
sectors: []
roles: []
-
id: f14c0ecc-1151-31f0-8221-5261e4967be3
name: 'Mrs. Madisyn Zulauf'
username: qstoltenberg
email: uheathcote@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: 85906287-f7d2-34b9-b0b0-4bce3bc169ad
name:
type: string
example: 'Dr. Kristy Leuschke'
username:
type: string
example: heath.wiegand
email:
type: string
example: lgerhold@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:
- 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:
- c3160ce3-956f-3754-81e0-806150c2588e
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:
- c948e506-f6b6-3505-8acb-9991ff7544e1
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:
- 6cff2914-f7c3-33f8-8eb0-a1ebf87b8853
items:
type: string
parameters:
-
in: path
name: work
description: 'Work UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string