uuid of an existing record in the permissions table.'
example:
- 3ffe6b75-ac92-33b4-9712-51a5b01ed410
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:
- cb3d96ca-5116-3b76-8e9e-69454ad78dba
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: 6a7b5d24-4f7a-305b-a450-d06e684f8cb5
name: minima-69f50b45dfca2
display_name: 'Molestiae quam ipsa eos est distinctio.'
permissions_count: null
properties:
data:
type: object
properties:
id:
type: string
example: 6a7b5d24-4f7a-305b-a450-d06e684f8cb5
name:
type: string
example: minima-69f50b45dfca2
display_name:
type: string
example: 'Molestiae quam ipsa eos est distinctio.'
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: delectus
display_name: 'Id placeat eveniet sunt numquam sit aut.'
-
id: null
name: amet
display_name: 'Aliquam harum est nesciunt velit porro id dolorem.'
properties:
data:
type: array
example:
-
id: null
name: delectus
display_name: 'Id placeat eveniet sunt numquam sit aut.'
-
id: null
name: amet
display_name: 'Aliquam harum est nesciunt velit porro id dolorem.'
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: delectus
display_name:
type: string
example: 'Id placeat eveniet sunt numquam sit aut.'
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: asperiores
display_name: 'Qui est id aliquid blanditiis cumque.'
-
id: null
name: perferendis
display_name: 'Iure et dolor error aspernatur nisi voluptatem assumenda.'
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: asperiores
display_name: 'Qui est id aliquid blanditiis cumque.'
-
id: null
name: perferendis
display_name: 'Iure et dolor error aspernatur nisi voluptatem assumenda.'
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: asperiores
display_name:
type: string
example: 'Qui est id aliquid blanditiis cumque.'
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: molestiae
display_name: 'Laboriosam suscipit vel error voluptas.'
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: molestiae
display_name:
type: string
example: 'Laboriosam suscipit vel error voluptas.'
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: 7aff2ba3-adb8-3cc1-9a05-40f30ca086e6
type: entrada
payment_method: cheque
amount: 2550.04
due_date: '2026-05-13T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Ex consequatur consectetur expedita rem sit quaerat.'
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: aut
field2: 87
field3: false
notes: 'Aut error laborum a.'
created_at: null
updated_at: null
-
id: de554ad9-efe6-3bcb-b2cc-6d63fb43347b
type: entrada
payment_method: boleto
amount: 4865.69
due_date: '2026-05-29T03: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: 'Aperiam quas velit et a doloribus assumenda accusamus blanditiis qui sint expedita quisquam non.'
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: deleniti
field2: 95
field3: false
notes: 'Ullam ut aperiam commodi sint sunt libero.'
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: 7aff2ba3-adb8-3cc1-9a05-40f30ca086e6
type: entrada
payment_method: cheque
amount: 2550.04
due_date: '2026-05-13T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Ex consequatur consectetur expedita rem sit quaerat.'
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: aut
field2: 87
field3: false
notes: 'Aut error laborum a.'
created_at: null
updated_at: null
-
id: de554ad9-efe6-3bcb-b2cc-6d63fb43347b
type: entrada
payment_method: boleto
amount: 4865.69
due_date: '2026-05-29T03: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: 'Aperiam quas velit et a doloribus assumenda accusamus blanditiis qui sint expedita quisquam non.'
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: deleniti
field2: 95
field3: false
notes: 'Ullam ut aperiam commodi sint sunt libero.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 7aff2ba3-adb8-3cc1-9a05-40f30ca086e6
type:
type: string
example: entrada
payment_method:
type: string
example: cheque
amount:
type: number
example: 2550.04
due_date:
type: string
example: '2026-05-13T03: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: 'Ex consequatur consectetur expedita rem sit quaerat.'
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: aut
field2:
type: integer
example: 87
field3:
type: boolean
example: false
notes:
type: string
example: 'Aut error laborum a.'
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:
- enim
required: true
schema:
type: array
description: 'The uuid of an existing record in the account_payable_receivables table.'
example:
- enim
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: 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:
- dicta
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- dicta
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- consectetur
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- consectetur
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- et
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- et
items:
type: string
-
in: query
name: statuses
description: ''
example:
- vencido
required: false
schema:
type: array
description: ''
example:
- vencido
items:
type: string
enum:
- 'a vencer'
- pago
- pago_sem_lancamento
- vencido
- recebido
- cancelado
- 'a protestar'
- protestado
nullable: true
-
in: query
name: payment_method
description: 'Payment method.'
example: cheque
required: false
schema:
type: string
description: 'Payment method.'
example: cheque
enum:
- cheque
- boleto
- outro
nullable: true
-
in: query
name: date_start
description: 'Start date. O campo value deve ser uma data válida.'
example: '2023-01-01'
required: false
schema:
type: string
description: 'Start date. O campo value deve ser uma data válida.'
example: '2023-01-01'
nullable: true
-
in: query
name: date_end
description: 'End date. O campo value deve ser uma data válida.'
example: '2023-12-31'
required: false
schema:
type: string
description: 'End date. O campo value deve ser uma data válida.'
example: '2023-12-31'
nullable: true
-
in: query
name: protest_date_start
description: 'O campo value deve ser uma data válida.'
example: '2026-05-01T17:21:26'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-05-01T17:21:26'
nullable: true
-
in: query
name: protest_date_end
description: 'O campo value deve ser uma data válida.'
example: '2026-05-01T17:21:26'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-05-01T17:21:26'
nullable: true
-
in: query
name: has_protest
description: ''
example: false
required: false
schema:
type: boolean
description: ''
example: false
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: 1c148233-5f04-322d-a917-ab29b2cf0538
type: entrada
payment_method: cheque
amount: 8880.62
due_date: '2026-05-13T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Quod vel neque quo maxime architecto id.'
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: quia
field2: 19
field3: false
notes: 'Provident dolorem qui rerum voluptatem et.'
created_at: null
updated_at: null
-
id: 9f93dc08-6c8d-35d9-8198-9569b2c7efe3
type: saída
payment_method: boleto
amount: 4272.54
due_date: '2026-05-27T03: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: 'Impedit dolorem qui quia quae temporibus nesciunt dignissimos et eaque porro et in 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: nostrum
field2: 57
field3: true
notes: 'Praesentium quod et et sit.'
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: 1c148233-5f04-322d-a917-ab29b2cf0538
type: entrada
payment_method: cheque
amount: 8880.62
due_date: '2026-05-13T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Quod vel neque quo maxime architecto id.'
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: quia
field2: 19
field3: false
notes: 'Provident dolorem qui rerum voluptatem et.'
created_at: null
updated_at: null
-
id: 9f93dc08-6c8d-35d9-8198-9569b2c7efe3
type: saída
payment_method: boleto
amount: 4272.54
due_date: '2026-05-27T03: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: 'Impedit dolorem qui quia quae temporibus nesciunt dignissimos et eaque porro et in 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: nostrum
field2: 57
field3: true
notes: 'Praesentium quod et et sit.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 1c148233-5f04-322d-a917-ab29b2cf0538
type:
type: string
example: entrada
payment_method:
type: string
example: cheque
amount:
type: number
example: 8880.62
due_date:
type: string
example: '2026-05-13T03: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: 'Quod vel neque quo maxime architecto id.'
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: quia
field2:
type: integer
example: 19
field3:
type: boolean
example: false
notes:
type: string
example: 'Provident dolorem qui rerum voluptatem et.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: 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: 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:
- ut
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- ut
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- culpa
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- culpa
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- praesentium
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- praesentium
items:
type: string
-
in: query
name: statuses
description: ''
example:
- pago_sem_lancamento
required: false
schema:
type: array
description: ''
example:
- pago_sem_lancamento
items:
type: string
enum:
- 'a vencer'
- pago
- pago_sem_lancamento
- vencido
- recebido
- cancelado
- 'a protestar'
- protestado
nullable: true
-
in: query
name: payment_method
description: 'Payment method.'
example: cheque
required: false
schema:
type: string
description: 'Payment method.'
example: cheque
enum:
- cheque
- boleto
- outro
nullable: true
-
in: query
name: date_start
description: 'Start date. O campo value deve ser uma data válida.'
example: '2023-01-01'
required: false
schema:
type: string
description: 'Start date. O campo value deve ser uma data válida.'
example: '2023-01-01'
nullable: true
-
in: query
name: date_end
description: 'End date. O campo value deve ser uma data válida.'
example: '2023-12-31'
required: false
schema:
type: string
description: 'End date. O campo value deve ser uma data válida.'
example: '2023-12-31'
nullable: true
-
in: query
name: protest_date_start
description: 'O campo value deve ser uma data válida.'
example: '2026-05-01T17:21:26'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-05-01T17:21:26'
nullable: true
-
in: query
name: protest_date_end
description: 'O campo value deve ser uma data válida.'
example: '2026-05-01T17:21:26'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-05-01T17:21:26'
nullable: true
-
in: query
name: has_protest
description: ''
example: false
required: false
schema:
type: boolean
description: ''
example: false
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: 3405e563-5062-399a-9bb8-82df066bff54
type: entrada
payment_method: cheque
amount: 7553.4
due_date: '2026-05-16T03: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: 'Dolores rerum corrupti ipsam voluptates illum incidunt quos distinctio optio in dolor dolorum.'
is_recurring: null
recurrence_config: null
parent_id: null
recurrence_order: 1
total_recurrences: null
children_count: 0
remaining_recurrences: null
has_children: false
field1: suscipit
field2: 54
field3: true
notes: 'Molestias voluptatum aut deleniti rerum.'
created_at: null
updated_at: null
-
id: dcb80851-70ff-33bd-bf99-7cf2dd4e7683
type: entrada
payment_method: cheque
amount: 4152.79
due_date: '2026-06-01T03: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: 'Quis eos sunt quo maiores id quae voluptatem hic.'
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: voluptatem
field2: 89
field3: false
notes: 'Laudantium veritatis iste amet asperiores.'
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: 3405e563-5062-399a-9bb8-82df066bff54
type: entrada
payment_method: cheque
amount: 7553.4
due_date: '2026-05-16T03: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: 'Dolores rerum corrupti ipsam voluptates illum incidunt quos distinctio optio in dolor dolorum.'
is_recurring: null
recurrence_config: null
parent_id: null
recurrence_order: 1
total_recurrences: null
children_count: 0
remaining_recurrences: null
has_children: false
field1: suscipit
field2: 54
field3: true
notes: 'Molestias voluptatum aut deleniti rerum.'
created_at: null
updated_at: null
-
id: dcb80851-70ff-33bd-bf99-7cf2dd4e7683
type: entrada
payment_method: cheque
amount: 4152.79
due_date: '2026-06-01T03: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: 'Quis eos sunt quo maiores id quae voluptatem hic.'
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: voluptatem
field2: 89
field3: false
notes: 'Laudantium veritatis iste amet asperiores.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 3405e563-5062-399a-9bb8-82df066bff54
type:
type: string
example: entrada
payment_method:
type: string
example: cheque
amount:
type: number
example: 7553.4
due_date:
type: string
example: '2026-05-16T03: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: 'Dolores rerum corrupti ipsam voluptates illum incidunt quos distinctio optio in dolor dolorum.'
is_recurring:
type: string
example: null
nullable: true
recurrence_config:
type: string
example: null
nullable: true
parent_id:
type: string
example: null
nullable: true
recurrence_order:
type: integer
example: 1
total_recurrences:
type: string
example: null
nullable: true
children_count:
type: integer
example: 0
remaining_recurrences:
type: string
example: null
nullable: true
has_children:
type: boolean
example: false
field1:
type: string
example: suscipit
field2:
type: integer
example: 54
field3:
type: boolean
example: true
notes:
type: string
example: 'Molestias voluptatum aut deleniti rerum.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
meta:
type: object
properties:
current_page:
type: integer
example: 1
from:
type: integer
example: 1
last_page:
type: integer
example: 1
links:
type: array
example:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
items:
type: object
properties:
url:
type: string
example: null
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 10
to:
type: integer
example: 2
total:
type: integer
example: 2
tags:
- 'Accounts Payable Receivable'
post:
summary: 'Create accounts payable receivable'
operationId: createAccountsPayableReceivable
description: 'Create a new accounts payable receivable'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Accounts Payable Receivable'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
type:
type: string
description: Tipo.
example: 'Example Type'
enum:
- entrada
- saída
payment_method:
type: string
description: 'Forma de pagamento.'
example: 'Example Payment method'
enum:
- cheque
- boleto
- outro
due_date:
type: string
description: 'Data de vencimento. O campo value deve ser uma data válida.'
example: '2024-01-01'
amount:
type: number
description: Valor.
example: 1.0
description:
type: string
description: Descrição.
example: 'Example Description'
supplier_id:
type: string
description: 'Fornecedor. The uuid of an existing record in the suppliers table.'
example: 387a6ef8-1268-3fd6-80ce-7d1b7f5b6262
nullable: true
customer_id:
type: string
description: 'Cliente. The uuid of an existing record in the customers table.'
example: a527bb83-6f8f-3d6e-a954-196133ea5128
nullable: true
work_id:
type: string
description: 'Obra. The uuid of an existing record in the works table.'
example: 7c6a9cc2-4c5a-343b-b7c5-a2f86f21f264
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: 7ff2522b-dbd8-31d0-93f9-394e0632abc7
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/{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: magni
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: 6ea72336-2d52-3848-92c1-675b5766e35c
type: entrada
payment_method: cheque
amount: 4293.72
due_date: '2026-05-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: 'Hic asperiores occaecati ut neque dignissimos a odio reiciendis unde praesentium velit ut fuga.'
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: repudiandae
field2: 2
field3: false
notes: 'Eligendi aut similique quam voluptas enim est.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 6ea72336-2d52-3848-92c1-675b5766e35c
type:
type: string
example: entrada
payment_method:
type: string
example: cheque
amount:
type: number
example: 4293.72
due_date:
type: string
example: '2026-05-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: 'Hic asperiores occaecati ut neque dignissimos a odio reiciendis unde praesentium velit ut fuga.'
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: repudiandae
field2:
type: integer
example: 2
field3:
type: boolean
example: false
notes:
type: string
example: 'Eligendi aut similique quam voluptas enim est.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Accounts Payable Receivable'
put:
summary: 'Update accounts payable receivable'
operationId: updateAccountsPayableReceivable
description: 'Update an accounts payable receivable'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Accounts Payable Receivable'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
type:
type: string
description: Type.
example: 'Example Type'
enum:
- entrada
- saída
payment_method:
type: string
description: 'Payment method.'
example: 'Example Payment method'
enum:
- cheque
- boleto
- outro
due_date:
type: string
description: 'Due date. O campo value deve ser uma data válida.'
example: '2024-01-01'
amount:
type: number
description: Amount.
example: 1.0
description:
type: string
description: Description.
example: 'Example Description'
supplier_id:
type: string
description: 'Supplier id. The uuid of an existing record in the suppliers table.'
example: 9b33e575-53d2-334b-9a56-7ebcdcb31b26
nullable: true
customer_id:
type: string
description: 'Customer id. The uuid of an existing record in the customers table.'
example: f3289121-4d80-323f-a487-93a2ed54691a
nullable: true
work_id:
type: string
description: 'Work id. The uuid of an existing record in the works table.'
example: c6836dcc-829c-3960-9480-0c17be68d383
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: 60072803-e60f-3729-a787-6d91eeda1f78
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: velit
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: ggrimes@example.org
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: 394896cf-ac57-34e6-99a2-10a95f79a446
name: 'Ms. Colleen Leannon'
username: carroll.adolfo
email: carlie01@example.com
ability:
-
action: read
subject: Auth
-
action: listar
subject: padrão
roles: []
preferences: []
sectors: []
image:
id: null
url: null
properties:
data:
type: object
properties:
id:
type: string
example: 394896cf-ac57-34e6-99a2-10a95f79a446
name:
type: string
example: 'Ms. Colleen Leannon'
username:
type: string
example: carroll.adolfo
email:
type: string
example: carlie01@example.com
ability:
type: array
example:
-
action: read
subject: Auth
-
action: listar
subject: padrão
items:
type: object
properties:
action:
type: string
example: read
subject:
type: string
example: Auth
roles:
type: array
example: []
preferences:
type: array
example: []
sectors:
type: array
example: []
image:
type: object
properties:
id:
type: string
example: null
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'
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: mosciski.alec
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:
- 5462dc82-1ce2-39f5-af16-ad2c6f0b2516
items:
type: string
roles:
type: array
description: 'UUID da função. The uuid of an existing record in the roles table.'
example:
- 54f14d1c-10e2-31e3-9d27-4acd3c72070b
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: uskxheryxletuyaneevnbs
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: sapiente
required: true
schema:
type: string
'/api/auth/{user}/token':
post:
summary: 'Generate user token'
operationId: generateUserToken
description: 'Generate a token for a specific user'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
token: string
userData:
id: uuid
name: string
username: string
email: string
ability:
- array
roles:
- array
preferences:
- array
sectors:
- array
image:
id: uuid
url: string
properties:
token:
type: string
example: string
userData:
type: object
properties:
id:
type: string
example: uuid
name:
type: string
example: string
username:
type: string
example: string
email:
type: string
example: string
ability:
type: array
example:
- array
items:
type: string
roles:
type: array
example:
- array
items:
type: string
preferences:
type: array
example:
- array
items:
type: string
sectors:
type: array
example:
- array
items:
type: string
image:
type: object
properties:
id:
type: string
example: uuid
url:
type: string
example: string
tags:
- Authentication
parameters:
-
in: path
name: user
description: 'User UUID'
example: 550e8400-e29b-41d4-a716-446655440000
required: true
schema:
type: string
/api/bank-accounts/balance-summary:
get:
summary: 'Get bank account balance summary'
operationId: getBankAccountBalanceSummary
description: 'Get the balance summary of all bank accounts'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
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:
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: c24f3b5b-4de8-3046-b712-0a5d89bb9c58
agency: '9622'
account: 8859347-6
type: poupança
balance: 678.37
holder_type: pf
alias: eos
limit: 4356.69
available_balance: 5035.06
used_limit: 0
available_limit: 4356.69
is_default: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
-
id: 6ffcdd31-1e6e-3482-b0a2-57b76a00fb4e
agency: '9524'
account: 1992318-2
type: poupança
balance: 711.83
holder_type: pf
alias: aliquam
limit: 9226.32
available_balance: 9938.15
used_limit: 0
available_limit: 9226.32
is_default: 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: c24f3b5b-4de8-3046-b712-0a5d89bb9c58
agency: '9622'
account: 8859347-6
type: poupança
balance: 678.37
holder_type: pf
alias: eos
limit: 4356.69
available_balance: 5035.06
used_limit: 0
available_limit: 4356.69
is_default: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
-
id: 6ffcdd31-1e6e-3482-b0a2-57b76a00fb4e
agency: '9524'
account: 1992318-2
type: poupança
balance: 711.83
holder_type: pf
alias: aliquam
limit: 9226.32
available_balance: 9938.15
used_limit: 0
available_limit: 9226.32
is_default: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: c24f3b5b-4de8-3046-b712-0a5d89bb9c58
agency:
type: string
example: '9622'
account:
type: string
example: 8859347-6
type:
type: string
example: poupança
balance:
type: number
example: 678.37
holder_type:
type: string
example: pf
alias:
type: string
example: eos
limit:
type: number
example: 4356.69
available_balance:
type: number
example: 5035.06
used_limit:
type: integer
example: 0
available_limit:
type: number
example: 4356.69
is_default:
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: 5513330-6
bank_id:
type: string
description: 'Bank id. The uuid of an existing record in the banks table.'
example: 66c73303-4d54-3760-b943-73c8a9212c55
type:
type: string
description: Type.
example: 'Example Type'
enum:
- corrente
- poupança
holder_type:
type: string
description: 'Holder type.'
example: 'Example Holder type'
enum:
- pf
- pj
alias:
type: string
description: Alias.
example: 'Example Alias'
balance:
type: number
description: Balance.
example: 1.0
limit:
type: number
description: Limit.
example: 1.0
nullable: true
is_default:
type: boolean
description: 'Is default.'
example: 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: 6438613-0
bank_id:
type: string
description: 'Bank id. The uuid of an existing record in the banks table.'
example: 543402d4-0c87-3f0f-a9fe-fafa9e3f5e3e
type:
type: string
description: Type.
example: 'Example Type'
enum:
- corrente
- poupança
holder_type:
type: string
description: 'Holder type.'
example: 'Example Holder type'
enum:
- pf
- pj
alias:
type: string
description: Alias.
example: 'Example Alias'
nullable: true
balance:
type: number
description: Balance.
example: 1.0
limit:
type: number
description: Limit.
example: 1.0
nullable: true
is_default:
type: boolean
description: 'Is default.'
example: 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: a600b8e6-d71b-33cd-be18-bb49a98875c9
agency: '9560'
account: 7045696-0
type: corrente
balance: 8269.46
holder_type: pj
alias: ut
limit: 6292.26
available_balance: 14561.72
used_limit: 0
available_limit: 6292.26
is_default: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: a600b8e6-d71b-33cd-be18-bb49a98875c9
agency:
type: string
example: '9560'
account:
type: string
example: 7045696-0
type:
type: string
example: corrente
balance:
type: number
example: 8269.46
holder_type:
type: string
example: pj
alias:
type: string
example: ut
limit:
type: number
example: 6292.26
available_balance:
type: number
example: 14561.72
used_limit:
type: integer
example: 0
available_limit:
type: number
example: 6292.26
is_default:
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: 2
required: true
schema:
type: integer
/api/banks:
get:
summary: 'List banks'
operationId: listBanks
description: 'List all banks'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search query.'
example: 'Permission name'
required: false
schema:
type: string
description: 'Search query.'
example: 'Permission name'
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 9dbf15d9-b37c-3af5-b083-e1fd41c8812b
name: 'das Dores e Associados'
code: '638'
-
id: 61ffd6f7-6ea6-379b-82a1-52e5e34d51f9
name: 'Vale e Rosa e Filhos'
code: '267'
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: 9dbf15d9-b37c-3af5-b083-e1fd41c8812b
name: 'das Dores e Associados'
code: '638'
-
id: 61ffd6f7-6ea6-379b-82a1-52e5e34d51f9
name: 'Vale e Rosa e Filhos'
code: '267'
items:
type: object
properties:
id:
type: string
example: 9dbf15d9-b37c-3af5-b083-e1fd41c8812b
name:
type: string
example: 'das Dores e Associados'
code:
type: string
example: '638'
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: ec128c31-4138-39ab-9d19-6b2ffb9ff8a7
name: 'Lutero e das Neves e Filhos'
code: '230'
properties:
data:
type: object
properties:
id:
type: string
example: ec128c31-4138-39ab-9d19-6b2ffb9ff8a7
name:
type: string
example: 'Lutero e das Neves e Filhos'
code:
type: string
example: '230'
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
nullable: true
-
in: query
name: description
description: 'Description .'
example: 'Delectus provident possimus occaecati ab quae harum quis architecto.'
required: false
schema:
type: string
description: 'Description .'
example: 'Delectus provident possimus occaecati ab quae harum quis architecto.'
-
in: query
name: categories
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- quisquam
required: false
schema:
type: array
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- quisquam
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:
- velit
required: false
schema:
type: array
description: 'The uuid of an existing record in the bank_accounts table.'
example:
- velit
items:
type: string
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- repellat
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- repellat
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- id
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- id
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- aliquid
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- aliquid
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
total_income: number
total_expense: number
total_fee: number
total_balance: number
properties:
data:
type: object
properties:
total_income:
type: string
example: number
total_expense:
type: string
example: number
total_fee:
type: string
example: number
total_balance:
type: string
example: number
tags:
- 'Cash Flow'
/api/cash-flows:
get:
summary: 'List cash flow'
operationId: listCashFlow
description: 'List all cash flow'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search query.'
example: Salary
required: false
schema:
type: string
description: 'Search query.'
example: Salary
nullable: true
-
in: query
name: cash_session
description: 'Cash session. The uuid of an existing record in the cash_sessions table.'
example: uuid
required: false
schema:
type: string
description: 'Cash session. The uuid of an existing record in the cash_sessions table.'
example: uuid
nullable: true
-
in: query
name: type
description: 'Cash flow type.'
example: entrada
required: false
schema:
type: string
description: 'Cash flow type.'
example: entrada
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
nullable: true
-
in: query
name: description
description: 'Description .'
example: 'Voluptas voluptatem molestiae architecto.'
required: false
schema:
type: string
description: 'Description .'
example: 'Voluptas voluptatem molestiae architecto.'
-
in: query
name: categories
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- cumque
required: false
schema:
type: array
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- cumque
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:
- dolores
required: false
schema:
type: array
description: 'The uuid of an existing record in the bank_accounts table.'
example:
- dolores
items:
type: string
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- cupiditate
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- cupiditate
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- optio
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- optio
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- esse
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- esse
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 7b6af2d7-33cd-37d5-a50c-0a2b6acb4525
code: FC-31181055
type: depósito
amount: 5828.5
description: 'Reiciendis voluptatem in quis fugit est.'
transaction_date: '2009-05-26T03:00:00.000000Z'
transaction_category:
id: null
name: null
type: null
created_at: null
updated_at: null
-
id: d7ae4e54-3cd2-3996-a451-bbeea44a7d3c
code: FC-74117039
type: tarifa
amount: -7771.63
description: 'Ducimus voluptatem ex quasi ut.'
transaction_date: '1978-11-12T03:00:00.000000Z'
transaction_category:
id: null
name: null
type: null
created_at: null
updated_at: null
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: 7b6af2d7-33cd-37d5-a50c-0a2b6acb4525
code: FC-31181055
type: depósito
amount: 5828.5
description: 'Reiciendis voluptatem in quis fugit est.'
transaction_date: '2009-05-26T03:00:00.000000Z'
transaction_category:
id: null
name: null
type: null
created_at: null
updated_at: null
-
id: d7ae4e54-3cd2-3996-a451-bbeea44a7d3c
code: FC-74117039
type: tarifa
amount: -7771.63
description: 'Ducimus voluptatem ex quasi ut.'
transaction_date: '1978-11-12T03:00:00.000000Z'
transaction_category:
id: null
name: null
type: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 7b6af2d7-33cd-37d5-a50c-0a2b6acb4525
code:
type: string
example: FC-31181055
type:
type: string
example: depósito
amount:
type: number
example: 5828.5
description:
type: string
example: 'Reiciendis voluptatem in quis fugit est.'
transaction_date:
type: string
example: '2009-05-26T03: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
cash_session_id:
type: string
description: 'Cash session id. The uuid of an existing record in the cash_sessions table.'
example: a2754fd0-a566-3e2d-b5eb-f7c6287ca868
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: 358c74e1-695e-3e86-afa1-8a0f3d129a41
bank_account_id:
type: string
description: 'Bank account id. The uuid of an existing record in the bank_accounts table.'
example: 3eeee45b-67b7-39ab-9fe3-20b3eccc22b2
nullable: true
customer_id:
type: string
description: 'Customer id. The uuid of an existing record in the customers table.'
example: ebde35b5-df42-3ca5-95cf-61f7e34e3838
nullable: true
supplier_id:
type: string
description: 'Supplier id. The uuid of an existing record in the suppliers table.'
example: c78f29ea-c82e-3ce3-8f17-67633b5432da
nullable: true
work_id:
type: string
description: 'Work id. The uuid of an existing record in the works table.'
example: fc6531e8-8d31-36e7-aec3-047530fb4cd1
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: 2d53cf55-436d-3ba7-8b34-98e1abe738b7
code: FC-58122864
type: depósito
amount: 6955.02
description: 'Incidunt asperiores unde sequi omnis velit inventore aperiam.'
transaction_date: '1986-03-26T03: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: 2d53cf55-436d-3ba7-8b34-98e1abe738b7
code:
type: string
example: FC-58122864
type:
type: string
example: depósito
amount:
type: number
example: 6955.02
description:
type: string
example: 'Incidunt asperiores unde sequi omnis velit inventore aperiam.'
transaction_date:
type: string
example: '1986-03-26T03: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
cash_session_id:
type: string
description: 'Cash session id. The uuid of an existing record in the cash_sessions table.'
example: 2b93516c-ce4a-3d4a-80f8-3962dcb6d961
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: 168e3048-e4a2-3919-bc0f-ea8058067d2e
bank_account_id:
type: string
description: 'Bank account id. The uuid of an existing record in the bank_accounts table.'
example: 37cc931f-dd83-34d8-9168-225abc34bb99
nullable: true
customer_id:
type: string
description: 'Customer id. The uuid of an existing record in the customers table.'
example: 5f70ba57-5aa3-30ef-9e95-ecd990d8f916
nullable: true
supplier_id:
type: string
description: 'Supplier id. The uuid of an existing record in the suppliers table.'
example: aadef0d7-29e8-342d-bbdd-42899f3effec
nullable: true
work_id:
type: string
description: 'Work id. The uuid of an existing record in the works table.'
example: 0e9fa4a9-258d-3df3-ad4b-7fcdd0b9c0d2
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: 10
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: b74c9b85-cdce-313b-ae9b-3fd800d1504a
code: null
opened_by: null
opened_at: '2015-10-02T07:51:42.000000Z'
closed_by: null
closed_at: '1998-09-10T07:03:08.000000Z'
opening_balance: 8619.96
closing_balance: 2680.28
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
created_at: '1973-06-19T05:22:55.000000Z'
updated_at: '2021-06-09T21:50:38.000000Z'
-
id: e70f25ca-65d6-31c4-9709-fba21059870c
code: null
opened_by: null
opened_at: '2024-01-30T21:18:56.000000Z'
closed_by: null
closed_at: '2008-09-14T16:04:26.000000Z'
opening_balance: 5930.83
closing_balance: 3858.39
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
created_at: '2000-01-24T03:41:45.000000Z'
updated_at: '1980-07-19T10:10:38.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: b74c9b85-cdce-313b-ae9b-3fd800d1504a
code: null
opened_by: null
opened_at: '2015-10-02T07:51:42.000000Z'
closed_by: null
closed_at: '1998-09-10T07:03:08.000000Z'
opening_balance: 8619.96
closing_balance: 2680.28
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
created_at: '1973-06-19T05:22:55.000000Z'
updated_at: '2021-06-09T21:50:38.000000Z'
-
id: e70f25ca-65d6-31c4-9709-fba21059870c
code: null
opened_by: null
opened_at: '2024-01-30T21:18:56.000000Z'
closed_by: null
closed_at: '2008-09-14T16:04:26.000000Z'
opening_balance: 5930.83
closing_balance: 3858.39
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
created_at: '2000-01-24T03:41:45.000000Z'
updated_at: '1980-07-19T10:10:38.000000Z'
items:
type: object
properties:
id:
type: string
example: b74c9b85-cdce-313b-ae9b-3fd800d1504a
code:
type: string
example: null
nullable: true
opened_by:
type: string
example: null
nullable: true
opened_at:
type: string
example: '2015-10-02T07:51:42.000000Z'
closed_by:
type: string
example: null
nullable: true
closed_at:
type: string
example: '1998-09-10T07:03:08.000000Z'
opening_balance:
type: number
example: 8619.96
closing_balance:
type: number
example: 2680.28
total_income:
type: integer
example: 0
total_expense:
type: integer
example: 0
total_balance:
type: integer
example: 0
status:
type: string
example: Aberto
created_at:
type: string
example: '1973-06-19T05:22:55.000000Z'
updated_at:
type: string
example: '2021-06-09T21:50:38.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: 2122272f-f397-3340-b326-0f73824e8314
code: null
opened_by: null
opened_at: '2007-08-05T10:08:21.000000Z'
closed_by: null
closed_at: '2001-04-27T20:43:33.000000Z'
opening_balance: 3745.3
closing_balance: 5789.32
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
created_at: '1989-02-06T13:49:02.000000Z'
updated_at: '2007-08-25T16:53:32.000000Z'
properties:
data:
type: object
properties:
id:
type: string
example: 2122272f-f397-3340-b326-0f73824e8314
code:
type: string
example: null
nullable: true
opened_by:
type: string
example: null
nullable: true
opened_at:
type: string
example: '2007-08-05T10:08:21.000000Z'
closed_by:
type: string
example: null
nullable: true
closed_at:
type: string
example: '2001-04-27T20:43:33.000000Z'
opening_balance:
type: number
example: 3745.3
closing_balance:
type: number
example: 5789.32
total_income:
type: integer
example: 0
total_expense:
type: integer
example: 0
total_balance:
type: integer
example: 0
status:
type: string
example: Aberto
created_at:
type: string
example: '1989-02-06T13:49:02.000000Z'
updated_at:
type: string
example: '2007-08-25T16:53:32.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: 5843c834-66a7-3904-9150-56c7fee0cc69
required: true
schema:
type: string
'/api/cash-sessions/{uuid}':
get:
summary: 'Show cash session'
operationId: showCashSession
description: 'Show a cash session'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: a9920e4d-6dfe-3bdd-a125-b386cd621b41
code: null
opened_by: null
opened_at: '2015-07-30T06:04:55.000000Z'
closed_by: null
closed_at: '2013-10-09T17:07:29.000000Z'
opening_balance: 8850.56
closing_balance: 7069.37
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
created_at: '2011-07-26T01:25:48.000000Z'
updated_at: '1978-09-11T02:30:55.000000Z'
properties:
data:
type: object
properties:
id:
type: string
example: a9920e4d-6dfe-3bdd-a125-b386cd621b41
code:
type: string
example: null
nullable: true
opened_by:
type: string
example: null
nullable: true
opened_at:
type: string
example: '2015-07-30T06:04:55.000000Z'
closed_by:
type: string
example: null
nullable: true
closed_at:
type: string
example: '2013-10-09T17:07:29.000000Z'
opening_balance:
type: number
example: 8850.56
closing_balance:
type: number
example: 7069.37
total_income:
type: integer
example: 0
total_expense:
type: integer
example: 0
total_balance:
type: integer
example: 0
status:
type: string
example: Aberto
created_at:
type: string
example: '2011-07-26T01:25:48.000000Z'
updated_at:
type: string
example: '1978-09-11T02:30:55.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: 6b859196-afda-3939-951b-cb4da589e427
required: true
schema:
type: integer
/api/customers:
get:
summary: 'List customers'
operationId: listCustomers
description: 'List all customers'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search query.'
example: 'Customer name'
required: false
schema:
type: string
description: 'Search query.'
example: 'Customer name'
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: e040150a-79b6-3cad-97ea-7c88c962ba06
name: 'Hugo Mário da Rosa Sobrinho'
email: diogo97@example.com
phone: '(27) 93932-7063'
document: 198.349.253-10
type: pj
responsible: 'Sr. Jorge Solano de Souza 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
-
id: de5c49c1-0c24-36ce-8f42-3ea3367377d5
name: 'Iasmin Bezerra Barros Sobrinho'
email: fabricio71@example.org
phone: '(34) 90381-3107'
document: 983.519.782-21
type: pj
responsible: 'Aparecida Léia Caldeira 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: e040150a-79b6-3cad-97ea-7c88c962ba06
name: 'Hugo Mário da Rosa Sobrinho'
email: diogo97@example.com
phone: '(27) 93932-7063'
document: 198.349.253-10
type: pj
responsible: 'Sr. Jorge Solano de Souza 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
-
id: de5c49c1-0c24-36ce-8f42-3ea3367377d5
name: 'Iasmin Bezerra Barros Sobrinho'
email: fabricio71@example.org
phone: '(34) 90381-3107'
document: 983.519.782-21
type: pj
responsible: 'Aparecida Léia Caldeira 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: e040150a-79b6-3cad-97ea-7c88c962ba06
name:
type: string
example: 'Hugo Mário da Rosa Sobrinho'
email:
type: string
example: diogo97@example.com
phone:
type: string
example: '(27) 93932-7063'
document:
type: string
example: 198.349.253-10
type:
type: string
example: pj
responsible:
type: string
example: 'Sr. Jorge Solano de Souza Filho'
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: 8ca9062c-795c-3f99-9c88-8e8153290ceb
name: 'Sr. Fábio Ferreira'
email: carolina.lourenco@example.net
phone: '(81) 97870-9619'
document: 704.573.031-40
type: pf
responsible: 'Srta. Betina Gabrielle Ferminiano'
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: 8ca9062c-795c-3f99-9c88-8e8153290ceb
name:
type: string
example: 'Sr. Fábio Ferreira'
email:
type: string
example: carolina.lourenco@example.net
phone:
type: string
example: '(81) 97870-9619'
document:
type: string
example: 704.573.031-40
type:
type: string
example: pf
responsible:
type: string
example: 'Srta. Betina Gabrielle Ferminiano'
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: 2
required: true
schema:
type: integer
-
in: path
name: customer
description: 'Customer ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/customers/{customer}':
delete:
summary: 'Delete customer'
operationId: deleteCustomer
description: 'Delete a customer'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Customers
parameters:
-
in: path
name: customer
description: 'Customer ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
/api/document-categories:
get:
summary: 'List document categories'
operationId: listDocumentCategories
description: 'List all document categories'
parameters:
-
in: query
name: q
description: 'Search query.'
example: Contracts
required: false
schema:
type: string
description: 'Search query.'
example: Contracts
nullable: true
-
in: query
name: module
description: 'Filter by module.'
example: employee
required: false
schema:
type: string
description: 'Filter by module.'
example: employee
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 745ba4ac-9ac8-3863-9655-4c445b5078a9
name: 'Isadora Giovanna Zamana Sobrinho'
description: 'Nulla in et molestiae ut. Ea harum excepturi odio voluptas quis. Debitis fuga rerum nulla ab impedit.'
module: document
-
id: a66a7a44-c777-32bc-9003-7bbddab463af
name: 'Dr. Caio Rogério Alcantara Jr.'
description: 'Iste necessitatibus corporis iste tempore. Consequatur beatae quos ea consequuntur fugiat beatae quidem. Laudantium nulla sed non sunt voluptas.'
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: 745ba4ac-9ac8-3863-9655-4c445b5078a9
name: 'Isadora Giovanna Zamana Sobrinho'
description: 'Nulla in et molestiae ut. Ea harum excepturi odio voluptas quis. Debitis fuga rerum nulla ab impedit.'
module: document
-
id: a66a7a44-c777-32bc-9003-7bbddab463af
name: 'Dr. Caio Rogério Alcantara Jr.'
description: 'Iste necessitatibus corporis iste tempore. Consequatur beatae quos ea consequuntur fugiat beatae quidem. Laudantium nulla sed non sunt voluptas.'
module: document
items:
type: object
properties:
id:
type: string
example: 745ba4ac-9ac8-3863-9655-4c445b5078a9
name:
type: string
example: 'Isadora Giovanna Zamana Sobrinho'
description:
type: string
example: 'Nulla in et molestiae ut. Ea harum excepturi odio voluptas quis. Debitis fuga rerum nulla ab impedit.'
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: bf6663b9-76d3-378b-9e40-e2490be66f64
name: 'Sra. Elisa Luciana Ferminiano'
description: 'Aut et harum iusto quia. Similique quas eaque officiis deleniti sequi itaque. Nesciunt quo debitis recusandae praesentium libero dolor eos.'
module: document
properties:
data:
type: object
properties:
id:
type: string
example: bf6663b9-76d3-378b-9e40-e2490be66f64
name:
type: string
example: 'Sra. Elisa Luciana Ferminiano'
description:
type: string
example: 'Aut et harum iusto quia. Similique quas eaque officiis deleniti sequi itaque. Nesciunt quo debitis recusandae praesentium libero dolor eos.'
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: eligendi
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:
- voluptatibus
required: false
schema:
type: array
description: 'The uuid of an existing record in the document_categories table.'
example:
- voluptatibus
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: ratione
required: false
schema:
type: string
description: 'Type of the related documentable entity. The type of an existing record in the documentables table.'
example: ratione
nullable: true
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- ducimus
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- ducimus
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- quas
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- quas
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 00cf771c-059e-339c-bdb0-edb217e3ddda
name: 'Renato Martines'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
-
id: 54bed1b8-9cec-34f3-9a1c-23e60c8c2488
name: 'Srta. Valéria Emilly Rico Neto'
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: 00cf771c-059e-339c-bdb0-edb217e3ddda
name: 'Renato Martines'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
-
id: 54bed1b8-9cec-34f3-9a1c-23e60c8c2488
name: 'Srta. Valéria Emilly Rico Neto'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 00cf771c-059e-339c-bdb0-edb217e3ddda
name:
type: string
example: 'Renato Martines'
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: 17391be7-f325-351e-ac67-b316fe4f726d
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: 79c08168-0799-328b-92a9-bd8c46b2b0cc
name: 'Leo Daniel Fernandes Filho'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 79c08168-0799-328b-92a9-bd8c46b2b0cc
name:
type: string
example: 'Leo Daniel Fernandes Filho'
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: 4791ee29-8b81-3239-bc45-81fbab41637e
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: 2
required: true
schema:
type: integer
-
in: path
name: document
description: 'Document ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/documents/{document}':
delete:
summary: 'Delete document'
operationId: deleteDocument
description: 'Delete a document'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Documents
parameters:
-
in: path
name: document
description: 'Document ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
/api/employee-roles:
get:
summary: 'List employee roles'
operationId: listEmployeeRoles
description: 'List all employee roles'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search query.'
example: Manager
required: false
schema:
type: string
description: 'Search query.'
example: Manager
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: db83c6ef-3b65-4d59-8a19-974827e51b78
name: quia
description: null
created_at: null
updated_at: null
-
id: 262c4dc2-317f-4d5d-89cf-2134d2076520
name: in
description: 'Quisquam sapiente est eos dolorem maiores totam vitae distinctio.'
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: db83c6ef-3b65-4d59-8a19-974827e51b78
name: quia
description: null
created_at: null
updated_at: null
-
id: 262c4dc2-317f-4d5d-89cf-2134d2076520
name: in
description: 'Quisquam sapiente est eos dolorem maiores totam vitae distinctio.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: db83c6ef-3b65-4d59-8a19-974827e51b78
name:
type: string
example: quia
description:
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:
- '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: 5993de98-5f1b-4393-8a8e-251ace2f9310
name: omnis
description: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 5993de98-5f1b-4393-8a8e-251ace2f9310
name:
type: string
example: omnis
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: sed
required: true
schema:
type: string
/api/employees:
get:
summary: 'List employees'
operationId: listEmployees
description: 'List all employees'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search query.'
example: 'João Silva'
required: false
schema:
type: string
description: 'Search query.'
example: 'João Silva'
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 7e65c24d-0e99-4b07-be12-ad5254a31694
name: 'Andres Vale'
cpf: 559.270.347-80
rg: '566728498'
ctps: '451692333'
phone: '(75) 4253-5385'
birthdate: null
email: vrosa@example.com
pis_pasep: null
admission_date: '2004-01-16T02:00:00.000000Z'
daily_salary: null
monthly_salary: '6695.19'
nationality: Libéria
place_of_birth: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: null
name: null
created_at: null
updated_at: null
-
id: 20dd9402-dc9a-4035-8ef9-87580c88958a
name: 'Guilherme Miguel Oliveira'
cpf: 084.205.645-64
rg: '419985438'
ctps: null
phone: null
birthdate: '2024-07-17T03:00:00.000000Z'
email: null
pis_pasep: '74891712594'
admission_date: '2011-07-12T03:00:00.000000Z'
daily_salary: '329.38'
monthly_salary: '3086.45'
nationality: null
place_of_birth: 'Rivera do Norte'
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: null
name: null
created_at: null
updated_at: null
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: 7e65c24d-0e99-4b07-be12-ad5254a31694
name: 'Andres Vale'
cpf: 559.270.347-80
rg: '566728498'
ctps: '451692333'
phone: '(75) 4253-5385'
birthdate: null
email: vrosa@example.com
pis_pasep: null
admission_date: '2004-01-16T02:00:00.000000Z'
daily_salary: null
monthly_salary: '6695.19'
nationality: Libéria
place_of_birth: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: null
name: null
created_at: null
updated_at: null
-
id: 20dd9402-dc9a-4035-8ef9-87580c88958a
name: 'Guilherme Miguel Oliveira'
cpf: 084.205.645-64
rg: '419985438'
ctps: null
phone: null
birthdate: '2024-07-17T03:00:00.000000Z'
email: null
pis_pasep: '74891712594'
admission_date: '2011-07-12T03:00:00.000000Z'
daily_salary: '329.38'
monthly_salary: '3086.45'
nationality: null
place_of_birth: 'Rivera do Norte'
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: null
name: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 7e65c24d-0e99-4b07-be12-ad5254a31694
name:
type: string
example: 'Andres Vale'
cpf:
type: string
example: 559.270.347-80
rg:
type: string
example: '566728498'
ctps:
type: string
example: '451692333'
phone:
type: string
example: '(75) 4253-5385'
birthdate:
type: string
example: null
nullable: true
email:
type: string
example: vrosa@example.com
pis_pasep:
type: string
example: null
nullable: true
admission_date:
type: string
example: '2004-01-16T02:00:00.000000Z'
daily_salary:
type: string
example: null
nullable: true
monthly_salary:
type: string
example: '6695.19'
nationality:
type: string
example: Libéria
place_of_birth:
type: string
example: null
nullable: true
address:
type: object
properties:
street:
type: string
example: null
nullable: true
number:
type: string
example: null
nullable: true
complement:
type: string
example: null
nullable: true
neighborhood:
type: string
example: null
nullable: true
city:
type: string
example: null
nullable: true
state:
type: string
example: null
nullable: true
zip_code:
type: string
example: null
nullable: true
employee_role:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
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:
- Employees
post:
summary: 'Create employee'
operationId: createEmployee
description: 'Create a new employee'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- Employees
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Nome. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Name'
cpf:
type: string
description: 'CPF. O campo value deve ser 14 caracteres.'
example: 'Example Cpf'
rg:
type: string
description: 'RG. O campo value não pode ser superior a 20 caracteres.'
example: 'Example Rg'
nullable: true
ctps:
type: string
description: 'CTPS. O campo value não pode ser superior a 20 caracteres.'
example: 'Example Ctps'
nullable: true
phone:
type: string
description: 'Telefone. O campo value não pode ser superior a 20 caracteres.'
example: '(11) 99999-9999'
nullable: true
birthdate:
type: string
description: 'Data de Nascimento. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
email:
type: string
description: 'E-mail. O campo value deve ser um endereço de e-mail válido.'
example: user@example.com
nullable: true
employee_role_id:
type: string
description: 'Cargo. The uuid of an existing record in the employee_roles table.'
example: 9e4902b2-5075-42b7-a4d3-1bb9ed932e59
pis_pasep:
type: string
description: 'PIS/PASEP. O campo value deve ter 11 dígitos.'
example: 'Example Pis pasep'
nullable: true
admission_date:
type: string
description: 'Data de Admissão. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
daily_salary:
type: number
description: 'Salário Diário. O campo value deve ser pelo menos 0.'
example: 1.0
nullable: true
monthly_salary:
type: number
description: 'Salário Mensal. O campo value deve ser pelo menos 0.'
example: 1.0
nullable: true
nationality:
type: string
description: 'Nacionalidade. O campo value não pode ser superior a 100 caracteres.'
example: 'Example Nationality'
nullable: true
place_of_birth:
type: string
description: 'Naturalidade. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Place of birth'
nullable: true
address:
type: object
description: Endereço.
example:
- example1
- example2
properties:
street:
type: string
description: Rua.
example: 'Example Address street'
nullable: true
number:
type: string
description: Número.
example: 'Example Address number'
nullable: true
complement:
type: string
description: Complemento.
example: 'Example Address complement'
nullable: true
neighborhood:
type: string
description: Bairro.
example: 'Example Address neighborhood'
nullable: true
city:
type: string
description: Cidade.
example: 'Example Address city'
nullable: true
state:
type: string
description: Estado.
example: 'Example Address state'
nullable: true
zip_code:
type: string
description: CEP.
example: 'Example Address zip code'
nullable: true
nullable: true
required:
- name
- cpf
- employee_role_id
'/api/employees/{id}':
get:
summary: 'Show employee'
operationId: showEmployee
description: 'Show an employee'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 593494c0-b0cc-4905-b569-f29755bb802a
name: 'Sr. Evandro Sales'
cpf: 887.395.368-34
rg: '284743997'
ctps: '313982789'
phone: '(91) 4849-8929'
birthdate: '2010-01-22T02:00:00.000000Z'
email: mario88@example.com
pis_pasep: '12522313074'
admission_date: '1990-05-22T03:00:00.000000Z'
daily_salary: '381.00'
monthly_salary: null
nationality: Seychelles
place_of_birth: 'Queirós do Sul'
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
employee_role:
id: null
name: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 593494c0-b0cc-4905-b569-f29755bb802a
name:
type: string
example: 'Sr. Evandro Sales'
cpf:
type: string
example: 887.395.368-34
rg:
type: string
example: '284743997'
ctps:
type: string
example: '313982789'
phone:
type: string
example: '(91) 4849-8929'
birthdate:
type: string
example: '2010-01-22T02:00:00.000000Z'
email:
type: string
example: mario88@example.com
pis_pasep:
type: string
example: '12522313074'
admission_date:
type: string
example: '1990-05-22T03:00:00.000000Z'
daily_salary:
type: string
example: '381.00'
monthly_salary:
type: string
example: null
nullable: true
nationality:
type: string
example: Seychelles
place_of_birth:
type: string
example: 'Queirós do Sul'
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: null
nullable: true
name:
type: string
example: null
nullable: true
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: 1aea82fb-db76-4270-93d2-2ab0a0431b2e
pis_pasep:
type: string
description: 'PIS/PASEP. O campo value deve ter 11 dígitos.'
example: 'Example Pis pasep'
nullable: true
admission_date:
type: string
description: 'Data de Admissão. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
daily_salary:
type: number
description: 'Salário Diário. O campo value deve ser pelo menos 0.'
example: 1.0
nullable: true
monthly_salary:
type: number
description: 'Salário Mensal. O campo value deve ser pelo menos 0.'
example: 1.0
nullable: true
nationality:
type: string
description: 'Nacionalidade. O campo value não pode ser superior a 100 caracteres.'
example: 'Example Nationality'
nullable: true
place_of_birth:
type: string
description: 'Naturalidade. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Place of birth'
nullable: true
address:
type: object
description: Endereço.
example:
- example1
- example2
properties:
street:
type: string
description: Rua.
example: 'Example Address street'
number:
type: string
description: Número.
example: 'Example Address number'
complement:
type: string
description: Complemento.
example: 'Example Address complement'
neighborhood:
type: string
description: Bairro.
example: 'Example Address neighborhood'
city:
type: string
description: Cidade.
example: 'Example Address city'
state:
type: string
description: Estado.
example: 'Example Address state'
zip_code:
type: string
description: CEP.
example: 'Example Address zip code'
parameters:
-
in: path
name: id
description: 'The ID of the employee.'
example: 19
required: true
schema:
type: integer
-
in: path
name: employee
description: 'Employee ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/employees/{employee}':
delete:
summary: 'Delete employee'
operationId: deleteEmployee
description: 'Delete an employee'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Employees
parameters:
-
in: path
name: employee
description: 'Employee ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/employees/{employee_id}/bank-account':
get:
summary: 'List employee bank accounts'
operationId: listEmployeeBankAccounts
description: 'List all bank accounts for an employee'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Employees
post:
summary: 'Create employee bank account'
operationId: createEmployeeBankAccount
description: 'Add a bank account to an employee'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Employees
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
bank_id:
type: string
description: 'The uuid of an existing record in the banks table.'
example: praesentium
agency:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: mauhsn
account:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: fzgbyednmt
account_type:
type: string
description: ''
example: poupança
enum:
- corrente
- poupança
pix_key:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: xqnmenlhbgrorvhpxyvvnjcs
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: 4
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: modi
agency:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: rsivno
account:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: csitla
account_type:
type: string
description: ''
example: poupança
enum:
- corrente
- poupança
pix_key:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: vfhvfwdu
nullable: true
favorite:
type: boolean
description: ''
example: true
parameters:
-
in: path
name: employee_id
description: 'The ID of the employee.'
example: 12
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/reports/cash-flow:
get:
summary: ''
operationId: getApiReportsCashFlow
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
security: []
/api/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: 0a42ebb3-7a32-36a9-8dc7-d2940ec5273b
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: 66e850c1-3644-3b9b-9d36-b00c4e471fea
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: 2bd43f62-7904-3d39-8968-95fab2039ca9
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/imports/nfe/products:
post:
summary: 'Create NFe Import'
operationId: createNFeImport
description: 'Upload and process a Brazilian NFe (Nota Fiscal Eletrônica) XML file. The file should be uploaded to S3 first, then this endpoint processes it asynchronously.'
parameters: []
responses:
201:
description: 'Import created successfully'
content:
application/json:
schema:
type: object
example:
import_id: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
status: pending
channel: import-progress.9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
properties:
import_id:
type: string
example: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
status:
type: string
example: pending
channel:
type: string
example: import-progress.9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
404:
description: 'File not found in S3'
content:
application/json:
schema:
type: object
example:
error: 'Arquivo não encontrado no S3'
properties:
error:
type: string
example: 'Arquivo não encontrado no S3'
422:
description: 'Invalid XML or not a valid NFe'
content:
application/json:
schema:
type: object
example:
error: 'Arquivo XML inválido ou não é uma NFe'
properties:
error:
type: string
example: 'Arquivo XML inválido ou não é uma NFe'
tags:
- Import
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
s3_file_path:
type: string
description: 'Path to the NFe XML file in S3 storage'
example: imports/nfe_12345.xml
original_filename:
type: string
description: 'Original filename of the uploaded NFe'
example: nota_fiscal_001.xml
import_type:
type: string
description: 'Type of import (currently only "nfe" is supported)'
example: nfe
required:
- s3_file_path
- original_filename
- import_type
/api/imports:
get:
summary: 'List User Imports'
operationId: listUserImports
description: 'List all NFe imports for the authenticated user with filtering and pagination options.'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of imports per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of imports per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
-
in: query
name: status
description: 'Filter imports by status (pending, processing, completed, failed).'
example: completed
required: false
schema:
type: string
description: 'Filter imports by status (pending, processing, completed, failed).'
example: completed
enum:
- pending
- processing
- completed
- failed
-
in: query
name: import_type
description: 'Filter imports by type.'
example: nfe
required: false
schema:
type: string
description: 'Filter imports by type.'
example: nfe
enum:
- initial_load
- stock_update
- nfe
responses:
200:
description: 'Imports retrieved successfully'
content:
application/json:
schema:
type: object
example:
data:
-
id: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
status: completed
import_type: nfe
original_filename: nota_fiscal_001.xml
nfe_number: '123456'
nfe_date: '2023-12-01'
total_products: 15
processed_products: 15
progress_percentage: 100.0
imported_at: '2023-12-01T10:30:00.000Z'
supplier:
name: 'Fornecedor Ltda'
document: '12345678000199'
properties:
data:
type: array
example:
-
id: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
status: completed
import_type: nfe
original_filename: nota_fiscal_001.xml
nfe_number: '123456'
nfe_date: '2023-12-01'
total_products: 15
processed_products: 15
progress_percentage: 100
imported_at: '2023-12-01T10:30:00.000Z'
supplier:
name: 'Fornecedor Ltda'
document: '12345678000199'
items:
type: object
properties:
id:
type: string
example: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
status:
type: string
example: completed
import_type:
type: string
example: nfe
original_filename:
type: string
example: nota_fiscal_001.xml
nfe_number:
type: string
example: '123456'
nfe_date:
type: string
example: '2023-12-01'
total_products:
type: integer
example: 15
processed_products:
type: integer
example: 15
progress_percentage:
type: number
example: 100.0
imported_at:
type: string
example: '2023-12-01T10:30:00.000Z'
supplier:
type: object
properties:
name:
type: string
example: 'Fornecedor Ltda'
document:
type: string
example: '12345678000199'
tags:
- Import
'/api/imports/{importId}':
get:
summary: 'Get Import Details'
operationId: getImportDetails
description: 'Retrieve detailed information about a specific NFe import, including progress and supplier data.'
parameters: []
responses:
200:
description: 'Import details retrieved successfully'
content:
application/json:
schema:
type: object
example:
import_id: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
status: completed
import_type: nfe
original_filename: nota_fiscal_001.xml
nfe_number: '123456'
nfe_date: '2023-12-01'
total_products: 15
processed_products: 10
progress_percentage: 66.67
imported_by: 'João Silva'
imported_at: '2023-12-01T10:30:00.000Z'
supplier:
id: supplier-uuid
name: 'Fornecedor Ltda'
document: '12345678000199'
channel: import-progress.9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
properties:
import_id:
type: string
example: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
status:
type: string
example: completed
import_type:
type: string
example: nfe
original_filename:
type: string
example: nota_fiscal_001.xml
nfe_number:
type: string
example: '123456'
nfe_date:
type: string
example: '2023-12-01'
total_products:
type: integer
example: 15
processed_products:
type: integer
example: 10
progress_percentage:
type: number
example: 66.67
imported_by:
type: string
example: 'João Silva'
imported_at:
type: string
example: '2023-12-01T10:30:00.000Z'
supplier:
type: object
properties:
id:
type: string
example: supplier-uuid
name:
type: string
example: 'Fornecedor Ltda'
document:
type: string
example: '12345678000199'
channel:
type: string
example: import-progress.9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
tags:
- Import
parameters:
-
in: path
name: importId
description: ''
example: placeat
required: true
schema:
type: string
'/api/imports/{importId}/products':
get:
summary: 'Get Import Products'
operationId: getImportProducts
description: 'List all products from a specific NFe import with filtering and pagination options.'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of products per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of products per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
-
in: query
name: status
description: 'Filter products by processing status (pending, processed).'
example: pending
required: false
schema:
type: string
description: 'Filter products by processing status (pending, processed).'
example: pending
enum:
- pending
- processed
nullable: true
-
in: query
name: q
description: 'Search products by name / code / EAN. O campo value não pode ser superior a 255 caracteres.'
example: 'Produto ABC'
required: false
schema:
type: string
description: 'Search products by name / code / EAN. O campo value não pode ser superior a 255 caracteres.'
example: 'Produto ABC'
nullable: true
responses:
200:
description: 'Products retrieved successfully'
content:
application/json:
schema:
type: object
example:
import:
id: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
total_products: 15
processed_products: 10
progress_percentage: 66.67
products:
data:
-
id: product-uuid
supplier_product_code: ABC123
ean_code: '7891234567890'
name: 'Nome do Produto'
unit: UN
quantity: 10
unit_price: 15.5
total_price: 155.0
is_processed: false
system_product: null
linked_at: null
linked_by: null
pagination:
current_page: 1
per_page: 15
total: 15
last_page: 1
properties:
import:
type: object
properties:
id:
type: string
example: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
total_products:
type: integer
example: 15
processed_products:
type: integer
example: 10
progress_percentage:
type: number
example: 66.67
products:
type: object
properties:
data:
type: array
example:
-
id: product-uuid
supplier_product_code: ABC123
ean_code: '7891234567890'
name: 'Nome do Produto'
unit: UN
quantity: 10
unit_price: 15.5
total_price: 155
is_processed: false
system_product: null
linked_at: null
linked_by: null
items:
type: object
properties:
id:
type: string
example: product-uuid
supplier_product_code:
type: string
example: ABC123
ean_code:
type: string
example: '7891234567890'
name:
type: string
example: 'Nome do Produto'
unit:
type: string
example: UN
quantity:
type: integer
example: 10
unit_price:
type: number
example: 15.5
total_price:
type: number
example: 155.0
is_processed:
type: boolean
example: false
system_product:
type: string
example: null
nullable: true
linked_at:
type: string
example: null
nullable: true
linked_by:
type: string
example: null
nullable: true
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: quo
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:
- ab
items:
type: string
required:
- mappings
parameters:
-
in: path
name: importId
description: ''
example: consequatur
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: quae
required: false
schema:
type: string
description: ''
example: quae
-
in: query
name: document
description: ''
example: id
required: false
schema:
type: string
description: ''
example: id
-
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: ffef6b85-d2af-3e13-b43a-70e1b7021eb0
receipt_number: REC-4862
receiver_type: custom
receiver:
id: null
name: 'Kiarra Collier'
document: 704.093.867-65
payment:
amount: 452.67
amount_in_words: 'Valor por extenso de teste'
method: pix
description: 'Et similique ut debitis deleniti est.'
issuer:
name: 'Hoppe, Cummerata and Fisher'
document: 12.192.290/2656-94
issue:
date: '2026-04-12'
city: 'South Dana'
state: PR
created_by:
id: a1ad8856-200c-45df-abd3-c8605f47de7d
name: 'Ms. Libby Jaskolski Sr.'
created_at: null
updated_at: null
-
id: ee1fe31c-16ed-35f9-a220-a05717d417f7
receipt_number: REC-5928
receiver_type: custom
receiver:
id: null
name: 'Dr. Alfonzo Lebsack'
document: 652.691.795-62
payment:
amount: 7484.01
amount_in_words: 'Valor por extenso de teste'
method: cash
description: 'Velit aut enim delectus dicta harum omnis accusantium aut.'
issuer:
name: 'Herzog, Dibbert and Runolfsdottir'
document: 69.047.638/0123-47
issue:
date: '2026-04-13'
city: 'Lake Joanbury'
state: MG
created_by:
id: a1ad8856-269f-43f9-b85a-fb48bd57d455
name: 'Ms. Viva Kling'
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: ffef6b85-d2af-3e13-b43a-70e1b7021eb0
receipt_number: REC-4862
receiver_type: custom
receiver:
id: null
name: 'Kiarra Collier'
document: 704.093.867-65
payment:
amount: 452.67
amount_in_words: 'Valor por extenso de teste'
method: pix
description: 'Et similique ut debitis deleniti est.'
issuer:
name: 'Hoppe, Cummerata and Fisher'
document: 12.192.290/2656-94
issue:
date: '2026-04-12'
city: 'South Dana'
state: PR
created_by:
id: a1ad8856-200c-45df-abd3-c8605f47de7d
name: 'Ms. Libby Jaskolski Sr.'
created_at: null
updated_at: null
-
id: ee1fe31c-16ed-35f9-a220-a05717d417f7
receipt_number: REC-5928
receiver_type: custom
receiver:
id: null
name: 'Dr. Alfonzo Lebsack'
document: 652.691.795-62
payment:
amount: 7484.01
amount_in_words: 'Valor por extenso de teste'
method: cash
description: 'Velit aut enim delectus dicta harum omnis accusantium aut.'
issuer:
name: 'Herzog, Dibbert and Runolfsdottir'
document: 69.047.638/0123-47
issue:
date: '2026-04-13'
city: 'Lake Joanbury'
state: MG
created_by:
id: a1ad8856-269f-43f9-b85a-fb48bd57d455
name: 'Ms. Viva Kling'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: ffef6b85-d2af-3e13-b43a-70e1b7021eb0
receipt_number:
type: string
example: REC-4862
receiver_type:
type: string
example: custom
receiver:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: 'Kiarra Collier'
document:
type: string
example: 704.093.867-65
payment:
type: object
properties:
amount:
type: number
example: 452.67
amount_in_words:
type: string
example: 'Valor por extenso de teste'
method:
type: string
example: pix
description:
type: string
example: 'Et similique ut debitis deleniti est.'
issuer:
type: object
properties:
name:
type: string
example: 'Hoppe, Cummerata and Fisher'
document:
type: string
example: 12.192.290/2656-94
issue:
type: object
properties:
date:
type: string
example: '2026-04-12'
city:
type: string
example: 'South Dana'
state:
type: string
example: PR
created_by:
type: object
properties:
id:
type: string
example: a1ad8856-200c-45df-abd3-c8605f47de7d
name:
type: string
example: 'Ms. Libby Jaskolski Sr.'
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: fdcd8f57-8667-48d8-8ff0-8b84b9c88981
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: 2cca4f88-6a4a-3b3e-a7fe-15f855547155
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: f81d40f5-1c3c-317f-9684-4f346475540c
nullable: true
required:
- receiver_type
- amount
- payment_method
- description
- issuer_name
- issuer_document
- issue_date
- city
- state
'/api/payment-receipts/{receipt}':
get:
summary: 'Show payment receipt'
operationId: showPaymentReceipt
description: 'Show a payment receipt'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 0bf048ae-95fe-3d5b-9bfc-be5a6498ad9f
receipt_number: REC-4177
receiver_type: custom
receiver:
id: null
name: 'Kelley Lang'
document: 015.012.187-95
payment:
amount: 6284.59
amount_in_words: 'Valor por extenso de teste'
method: bank_transfer
description: 'Est distinctio magni dolore facere quis et.'
issuer:
name: 'Bogan, Von and Luettgen'
document: 75.243.234/0330-95
issue:
date: '2026-04-22'
city: Ratkemouth
state: PE
created_by:
id: a1ad8856-2d9e-494d-81ba-32ced1e85c24
name: 'Aletha Wilkinson'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 0bf048ae-95fe-3d5b-9bfc-be5a6498ad9f
receipt_number:
type: string
example: REC-4177
receiver_type:
type: string
example: custom
receiver:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: 'Kelley Lang'
document:
type: string
example: 015.012.187-95
payment:
type: object
properties:
amount:
type: number
example: 6284.59
amount_in_words:
type: string
example: 'Valor por extenso de teste'
method:
type: string
example: bank_transfer
description:
type: string
example: 'Est distinctio magni dolore facere quis et.'
issuer:
type: object
properties:
name:
type: string
example: 'Bogan, Von and Luettgen'
document:
type: string
example: 75.243.234/0330-95
issue:
type: object
properties:
date:
type: string
example: '2026-04-22'
city:
type: string
example: Ratkemouth
state:
type: string
example: PE
created_by:
type: object
properties:
id:
type: string
example: a1ad8856-2d9e-494d-81ba-32ced1e85c24
name:
type: string
example: 'Aletha Wilkinson'
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: 6415568f-522c-4660-addf-d183d88f307b
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: 23e853fa-25d5-3674-9c14-e8b68063116a
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: 3cd849dc-66ef-3ca8-ae76-37c635cb7286
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: 493ac34b-a032-316d-88c2-0fcfa1e9dd13
receipt_number: REC-8693
receiver_type: custom
receiver:
id: null
name: 'Ursula Mayer'
document: 035.489.018-80
payment:
amount: 5128.61
amount_in_words: 'Valor por extenso de teste'
method: cash
description: 'Est sit voluptas mollitia magnam ea minima vel.'
issuer:
name: "Koelpin-O'Keefe"
document: 55.311.990/0778-71
issue:
date: '2026-04-08'
city: Funkburgh
state: MG
created_by:
id: a1ad8856-47a3-40ce-89db-9adae6404848
name: 'Ms. Amanda Herzog'
created_at: null
updated_at: null
-
id: 116cb206-65f9-3add-9e11-de004b7762c2
receipt_number: REC-5348
receiver_type: employee
receiver:
id: null
name: 'Prof. Rolando Howell IV'
document: 165.751.219-77
payment:
amount: 1700.88
amount_in_words: 'Valor por extenso de teste'
method: pix
description: 'Qui sed et illum voluptatem et sunt.'
issuer:
name: 'VonRueden Group'
document: 34.672.067/3746-04
issue:
date: '2026-04-18'
city: 'West Kadinburgh'
state: PE
created_by:
id: a1ad8856-4a69-4c57-86ec-6bea545f1a66
name: 'Prof. Lexus Boyle'
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: 493ac34b-a032-316d-88c2-0fcfa1e9dd13
receipt_number: REC-8693
receiver_type: custom
receiver:
id: null
name: 'Ursula Mayer'
document: 035.489.018-80
payment:
amount: 5128.61
amount_in_words: 'Valor por extenso de teste'
method: cash
description: 'Est sit voluptas mollitia magnam ea minima vel.'
issuer:
name: "Koelpin-O'Keefe"
document: 55.311.990/0778-71
issue:
date: '2026-04-08'
city: Funkburgh
state: MG
created_by:
id: a1ad8856-47a3-40ce-89db-9adae6404848
name: 'Ms. Amanda Herzog'
created_at: null
updated_at: null
-
id: 116cb206-65f9-3add-9e11-de004b7762c2
receipt_number: REC-5348
receiver_type: employee
receiver:
id: null
name: 'Prof. Rolando Howell IV'
document: 165.751.219-77
payment:
amount: 1700.88
amount_in_words: 'Valor por extenso de teste'
method: pix
description: 'Qui sed et illum voluptatem et sunt.'
issuer:
name: 'VonRueden Group'
document: 34.672.067/3746-04
issue:
date: '2026-04-18'
city: 'West Kadinburgh'
state: PE
created_by:
id: a1ad8856-4a69-4c57-86ec-6bea545f1a66
name: 'Prof. Lexus Boyle'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 493ac34b-a032-316d-88c2-0fcfa1e9dd13
receipt_number:
type: string
example: REC-8693
receiver_type:
type: string
example: custom
receiver:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: 'Ursula Mayer'
document:
type: string
example: 035.489.018-80
payment:
type: object
properties:
amount:
type: number
example: 5128.61
amount_in_words:
type: string
example: 'Valor por extenso de teste'
method:
type: string
example: cash
description:
type: string
example: 'Est sit voluptas mollitia magnam ea minima vel.'
issuer:
type: object
properties:
name:
type: string
example: "Koelpin-O'Keefe"
document:
type: string
example: 55.311.990/0778-71
issue:
type: object
properties:
date:
type: string
example: '2026-04-08'
city:
type: string
example: Funkburgh
state:
type: string
example: MG
created_by:
type: object
properties:
id:
type: string
example: a1ad8856-47a3-40ce-89db-9adae6404848
name:
type: string
example: 'Ms. Amanda Herzog'
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: 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/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: 238d1ced-09dd-3eee-b0d1-71b0047562d5
name: est-minima
display_name: 'architecto vel autem'
created_at: null
updated_at: null
-
id: a70e4658-1b57-346d-8dad-42508c356328
name: eos-qui
display_name: 'sint voluptatem aspernatur'
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: 238d1ced-09dd-3eee-b0d1-71b0047562d5
name: est-minima
display_name: 'architecto vel autem'
created_at: null
updated_at: null
-
id: a70e4658-1b57-346d-8dad-42508c356328
name: eos-qui
display_name: 'sint voluptatem aspernatur'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 238d1ced-09dd-3eee-b0d1-71b0047562d5
name:
type: string
example: est-minima
display_name:
type: string
example: 'architecto vel 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:
- '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: e8ed831c-63f9-3c94-94e6-985de0411a99
name: sed-sit-et
display_name: 'praesentium qui nihil'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: e8ed831c-63f9-3c94-94e6-985de0411a99
name:
type: string
example: sed-sit-et
display_name:
type: string
example: 'praesentium qui nihil'
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/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: 3dcfc590-6477-37e2-8045-f3439aaf71f0
name: 'Elizabeth de Souza'
created_at: null
updated_at: null
-
id: b364f4c7-c66a-3d69-9b3e-afc60f15ef27
name: 'Flávio Sepúlveda Campos'
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: 3dcfc590-6477-37e2-8045-f3439aaf71f0
name: 'Elizabeth de Souza'
created_at: null
updated_at: null
-
id: b364f4c7-c66a-3d69-9b3e-afc60f15ef27
name: 'Flávio Sepúlveda Campos'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 3dcfc590-6477-37e2-8045-f3439aaf71f0
name:
type: string
example: 'Elizabeth de Souza'
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: 0a5ed127-3b2f-3852-9f6a-18f260e33678
name: 'Srta. Letícia Naiara Garcia Neto'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 0a5ed127-3b2f-3852-9f6a-18f260e33678
name:
type: string
example: 'Srta. Letícia Naiara Garcia Neto'
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: ea
required: true
schema:
type: string
/api/product-families:
get:
summary: 'List product families'
operationId: listProductFamilies
description: 'List all product families'
parameters:
-
in: query
name: q
description: ''
example: Structure
required: false
schema:
type: string
description: ''
example: Structure
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: d06b6450-9b80-3dff-9ac2-54ff11586aec
name: 'James Robson Padilha'
created_at: null
updated_at: null
-
id: e785f71d-61ef-30d7-af93-17289cfb15df
name: 'Sr. Inácio Maximiano Esteves'
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: d06b6450-9b80-3dff-9ac2-54ff11586aec
name: 'James Robson Padilha'
created_at: null
updated_at: null
-
id: e785f71d-61ef-30d7-af93-17289cfb15df
name: 'Sr. Inácio Maximiano Esteves'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: d06b6450-9b80-3dff-9ac2-54ff11586aec
name:
type: string
example: 'James Robson Padilha'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
meta:
type: object
properties:
current_page:
type: integer
example: 1
from:
type: integer
example: 1
last_page:
type: integer
example: 1
links:
type: array
example:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
items:
type: object
properties:
url:
type: string
example: null
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 10
to:
type: integer
example: 2
total:
type: integer
example: 2
tags:
- 'Product Families'
post:
summary: 'Create product family'
operationId: createProductFamily
description: 'Create a new product family'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Product Families'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Nome.
example: 'Example Name'
required:
- name
'/api/product-families/{productFamily}':
get:
summary: 'Show product family'
operationId: showProductFamily
description: 'Show a product family'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 7740cd29-e9d7-3c3c-8665-51e189eb9c62
name: 'Sr. Maicon Espinoza Sobrinho'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 7740cd29-e9d7-3c3c-8665-51e189eb9c62
name:
type: string
example: 'Sr. Maicon Espinoza Sobrinho'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Product Families'
put:
summary: 'Update product family'
operationId: updateProductFamily
description: 'Update a product family'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Product Families'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Nome.
example: 'Example Name'
required:
- name
delete:
summary: 'Delete product family'
operationId: deleteProductFamily
description: 'Delete a product family'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'Product Families'
parameters:
-
in: path
name: productFamily
description: 'Product family UUID'
example: voluptas
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: 20fc635d-9d65-3bcc-abd0-ae4eec248efa
name: 'Ut rerum non aut.'
description: null
work:
id: a1ad8856-db1f-49dc-93cb-06a0249d803e
name: 'Dr. Fátima Fernanda Faria'
user:
id: a1ad8856-decf-4021-9846-29ff2f6dcc34
name: 'Aniyah Fadel'
created_at: null
updated_at: null
-
id: a7a88239-498c-346b-9c09-dbc87ab64fab
name: 'Accusantium et.'
description: null
work:
id: a1ad8856-e228-41d8-ab1b-1d26e674fdb2
name: 'Sr. Edilson Cortês'
user:
id: a1ad8856-e4d8-4622-ba7a-de992fc5c21f
name: 'Elissa Moen'
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: 20fc635d-9d65-3bcc-abd0-ae4eec248efa
name: 'Ut rerum non aut.'
description: null
work:
id: a1ad8856-db1f-49dc-93cb-06a0249d803e
name: 'Dr. Fátima Fernanda Faria'
user:
id: a1ad8856-decf-4021-9846-29ff2f6dcc34
name: 'Aniyah Fadel'
created_at: null
updated_at: null
-
id: a7a88239-498c-346b-9c09-dbc87ab64fab
name: 'Accusantium et.'
description: null
work:
id: a1ad8856-e228-41d8-ab1b-1d26e674fdb2
name: 'Sr. Edilson Cortês'
user:
id: a1ad8856-e4d8-4622-ba7a-de992fc5c21f
name: 'Elissa Moen'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 20fc635d-9d65-3bcc-abd0-ae4eec248efa
name:
type: string
example: 'Ut rerum non aut.'
description:
type: string
example: null
nullable: true
work:
type: object
properties:
id:
type: string
example: a1ad8856-db1f-49dc-93cb-06a0249d803e
name:
type: string
example: 'Dr. Fátima Fernanda Faria'
user:
type: object
properties:
id:
type: string
example: a1ad8856-decf-4021-9846-29ff2f6dcc34
name:
type: string
example: 'Aniyah Fadel'
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: 1178af1a-92ac-3761-ad8b-8e14147d7610
nullable: true
user_id:
type: string
description: 'Usuário. The uuid of an existing record in the users table.'
example: 61d6537d-dbca-3c0f-8f72-a5c73ffb251c
nullable: true
responsible_id:
type: string
description: 'Responsável. The uuid of an existing record in the users table.'
example: ffd8c92a-dbc3-378e-b6ab-ef16d290821a
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: 29f04303-9f54-3dd3-bf0d-8eaf607f3d83
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: bd7250f4-4e53-35f4-8d79-747f8d017132
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: 526d8d1e-fdcc-3259-8098-9dada80f9204
name: 'Iusto molestias tenetur magnam dolor.'
description: null
work:
id: a1ad8856-ec37-49d9-af17-4359982512fa
name: 'Rebeca Ortiz Ávila Filho'
user:
id: a1ad8856-ef59-42c5-a66b-7bf439b3b43d
name: 'Prof. Timothy Hoppe DVM'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 526d8d1e-fdcc-3259-8098-9dada80f9204
name:
type: string
example: 'Iusto molestias tenetur magnam dolor.'
description:
type: string
example: null
nullable: true
work:
type: object
properties:
id:
type: string
example: a1ad8856-ec37-49d9-af17-4359982512fa
name:
type: string
example: 'Rebeca Ortiz Ávila Filho'
user:
type: object
properties:
id:
type: string
example: a1ad8856-ef59-42c5-a66b-7bf439b3b43d
name:
type: string
example: 'Prof. Timothy Hoppe DVM'
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: 3eb4c3dc-380f-321f-8267-fd928827d1db
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: f76ba25d-fc95-3713-a62b-b045892d9c48
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: impedit
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: 58d46546-1334-38f1-a7d5-699126847d1a
product:
id: a1ad8857-0644-401d-960c-539feac3ba33
name: 'Louise Lourenço Grego'
code: PRD-673150
unit:
id: a1ad8857-0435-4bf1-bcc1-04a808ebfcd9
name: 'Dr. Aurora Ingrid Lourenço Sobrinho'
abbreviation: 'Sr. Maicon Simão Correia'
quantity: 480.5684
observation: null
created_at: null
updated_at: null
-
id: 5b4dee8e-374e-349c-bd29-4497556653a2
product:
id: a1ad8857-1627-4882-bb6b-230e52bbfd09
name: 'Sr. Matias Galindo'
code: PRD-186951
unit:
id: a1ad8857-14bd-4ebc-8f34-1c90f407fe35
name: 'Dr. Cezar Delgado Gonçalves'
abbreviation: 'Sra. Mirella Marinho Vieira'
quantity: 55.3758
observation: 'Aut sed explicabo aut.'
created_at: null
updated_at: null
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: 58d46546-1334-38f1-a7d5-699126847d1a
product:
id: a1ad8857-0644-401d-960c-539feac3ba33
name: 'Louise Lourenço Grego'
code: PRD-673150
unit:
id: a1ad8857-0435-4bf1-bcc1-04a808ebfcd9
name: 'Dr. Aurora Ingrid Lourenço Sobrinho'
abbreviation: 'Sr. Maicon Simão Correia'
quantity: 480.5684
observation: null
created_at: null
updated_at: null
-
id: 5b4dee8e-374e-349c-bd29-4497556653a2
product:
id: a1ad8857-1627-4882-bb6b-230e52bbfd09
name: 'Sr. Matias Galindo'
code: PRD-186951
unit:
id: a1ad8857-14bd-4ebc-8f34-1c90f407fe35
name: 'Dr. Cezar Delgado Gonçalves'
abbreviation: 'Sra. Mirella Marinho Vieira'
quantity: 55.3758
observation: 'Aut sed explicabo aut.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 58d46546-1334-38f1-a7d5-699126847d1a
product:
type: object
properties:
id:
type: string
example: a1ad8857-0644-401d-960c-539feac3ba33
name:
type: string
example: 'Louise Lourenço Grego'
code:
type: string
example: PRD-673150
unit:
type: object
properties:
id:
type: string
example: a1ad8857-0435-4bf1-bcc1-04a808ebfcd9
name:
type: string
example: 'Dr. Aurora Ingrid Lourenço Sobrinho'
abbreviation:
type: string
example: 'Sr. Maicon Simão Correia'
quantity:
type: number
example: 480.5684
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: 6a089807-cd9b-374d-aa12-7ddfb80acb29
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:
- ac8b7f69-9396-3b09-8602-dbfdf7f12d17
items:
type: string
required:
- items
parameters:
-
in: path
name: productQuantityList
description: 'Product Quantity List UUID'
example: porro
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: praesentium
required: true
schema:
type: string
-
in: path
name: item
description: 'Product Quantity List Item UUID'
example: alias
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: 22369358-61c4-32c8-b04e-111853283431
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 2cb45810-3951-39ce-b2ae-aa2126c9ecd2
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: nulla
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: 3f6d2ba7-8758-3ae1-9c91-09e9398a64e8
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: 41d442fd-dcfb-3718-ac7b-7258b712c736
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: 9fa15d69-6c5d-3405-8e6c-da7873603765
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: dolorem
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: 838191be-480f-377b-93c2-1e45ee231a6e
quantity: 3.2194
fulfilled_at: '2026-04-03T13:51:21.000000Z'
created_at: null
-
id: 65317052-8264-3d2c-813f-34d82600e846
quantity: 12.7977
fulfilled_at: '2026-04-26T20:26:03.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: 838191be-480f-377b-93c2-1e45ee231a6e
quantity: 3.2194
fulfilled_at: '2026-04-03T13:51:21.000000Z'
created_at: null
-
id: 65317052-8264-3d2c-813f-34d82600e846
quantity: 12.7977
fulfilled_at: '2026-04-26T20:26:03.000000Z'
created_at: null
items:
type: object
properties:
id:
type: string
example: 838191be-480f-377b-93c2-1e45ee231a6e
quantity:
type: number
example: 3.2194
fulfilled_at:
type: string
example: '2026-04-03T13:51:21.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: quam
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: fc7da31e-f586-3618-9a02-4d8c4ea82e95
product:
id: a1ad885a-d996-4dbb-99fc-6e11a58689a3
name: 'Danielle de Arruda Delgado Sobrinho'
code: PRD-271399
unit:
id: a1ad885a-d813-466a-ad88-361208634f2e
name: 'Dr. Filipe Luciano Pacheco Filho'
abbreviation: 'Sra. Mariah Delvalle Salas'
quantity: 785.5152
quantity_fulfilled: 0
quantity_pending: 785.5152
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Error sit libero laudantium voluptas architecto dolore qui.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: fc7da31e-f586-3618-9a02-4d8c4ea82e95
product:
type: object
properties:
id:
type: string
example: a1ad885a-d996-4dbb-99fc-6e11a58689a3
name:
type: string
example: 'Danielle de Arruda Delgado Sobrinho'
code:
type: string
example: PRD-271399
unit:
type: object
properties:
id:
type: string
example: a1ad885a-d813-466a-ad88-361208634f2e
name:
type: string
example: 'Dr. Filipe Luciano Pacheco Filho'
abbreviation:
type: string
example: 'Sra. Mariah Delvalle Salas'
quantity:
type: number
example: 785.5152
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 785.5152
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
type: string
example: 'Error sit libero laudantium voluptas architecto dolore qui.'
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: a7a83d4f-3ffa-3696-8114-519e5ef03187
nullable: true
parameters:
-
in: path
name: id
description: 'The ID of the item.'
example: quam
required: true
schema:
type: string
-
in: path
name: item
description: 'Product Request Item UUID'
example: pariatur
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: 5a5a19d4-1fcd-3a06-857c-b7c62ff7d039
product:
id: a1ad885a-f470-4efa-8602-b0b51dbae746
name: 'Wellington Rosa Matias'
code: PRD-652043
unit:
id: a1ad885a-f30b-49a2-97b0-0e346e8d4897
name: 'Sra. Sophia Corona Madeira'
abbreviation: 'Sra. Heloise Luna Grego'
quantity: 615.9482
quantity_fulfilled: 0
quantity_pending: 615.9482
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Maxime ea modi eos dolor id.'
created_at: null
updated_at: null
-
id: b670b24b-56b2-3b8f-ac4e-573cfbc2e2cb
product:
id: a1ad885b-06dd-4c19-b3f3-2060e80a8a3c
name: 'Mateus Padilha Tamoio Filho'
code: PRD-413221
unit:
id: a1ad885b-056e-4d4e-a278-6cea3c01ccff
name: 'Dr. Sara Lorena Estrada Filho'
abbreviation: 'Carla Mirella Valente'
quantity: 56.8181
quantity_fulfilled: 0
quantity_pending: 56.8181
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Consectetur vitae consequuntur aut quasi.'
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: 5a5a19d4-1fcd-3a06-857c-b7c62ff7d039
product:
id: a1ad885a-f470-4efa-8602-b0b51dbae746
name: 'Wellington Rosa Matias'
code: PRD-652043
unit:
id: a1ad885a-f30b-49a2-97b0-0e346e8d4897
name: 'Sra. Sophia Corona Madeira'
abbreviation: 'Sra. Heloise Luna Grego'
quantity: 615.9482
quantity_fulfilled: 0
quantity_pending: 615.9482
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Maxime ea modi eos dolor id.'
created_at: null
updated_at: null
-
id: b670b24b-56b2-3b8f-ac4e-573cfbc2e2cb
product:
id: a1ad885b-06dd-4c19-b3f3-2060e80a8a3c
name: 'Mateus Padilha Tamoio Filho'
code: PRD-413221
unit:
id: a1ad885b-056e-4d4e-a278-6cea3c01ccff
name: 'Dr. Sara Lorena Estrada Filho'
abbreviation: 'Carla Mirella Valente'
quantity: 56.8181
quantity_fulfilled: 0
quantity_pending: 56.8181
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Consectetur vitae consequuntur aut quasi.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 5a5a19d4-1fcd-3a06-857c-b7c62ff7d039
product:
type: object
properties:
id:
type: string
example: a1ad885a-f470-4efa-8602-b0b51dbae746
name:
type: string
example: 'Wellington Rosa Matias'
code:
type: string
example: PRD-652043
unit:
type: object
properties:
id:
type: string
example: a1ad885a-f30b-49a2-97b0-0e346e8d4897
name:
type: string
example: 'Sra. Sophia Corona Madeira'
abbreviation:
type: string
example: 'Sra. Heloise Luna Grego'
quantity:
type: number
example: 615.9482
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 615.9482
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
type: string
example: 'Maxime ea modi eos dolor id.'
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: quam
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: 182d4ce9-8326-34f7-ae4f-77e160ded62d
product:
id: a1ad885b-1eeb-46a5-8018-a5a04669afe0
name: 'Richard Valentin Neto'
code: PRD-134066
unit:
id: a1ad885b-1d6f-4eea-8b59-d2fda2efae58
name: 'Naomi Benez Santacruz Jr.'
abbreviation: 'Srta. Cecília Bezerra Filho'
quantity: 217.2117
quantity_fulfilled: 0
quantity_pending: 217.2117
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: c106e760-ff31-3e7e-aa6b-4d803d91e6f8
product:
id: a1ad885b-4090-425c-902f-0f87d3e91232
name: 'Jasmin Santos Amaral'
code: PRD-739243
unit:
id: a1ad885b-3e5c-452e-9075-cc3a60bcb696
name: 'Dr. Laiane Deverso'
abbreviation: 'Fátima Caldeira Burgos Sobrinho'
quantity: 336.1281
quantity_fulfilled: 0
quantity_pending: 336.1281
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: 182d4ce9-8326-34f7-ae4f-77e160ded62d
product:
id: a1ad885b-1eeb-46a5-8018-a5a04669afe0
name: 'Richard Valentin Neto'
code: PRD-134066
unit:
id: a1ad885b-1d6f-4eea-8b59-d2fda2efae58
name: 'Naomi Benez Santacruz Jr.'
abbreviation: 'Srta. Cecília Bezerra Filho'
quantity: 217.2117
quantity_fulfilled: 0
quantity_pending: 217.2117
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: c106e760-ff31-3e7e-aa6b-4d803d91e6f8
product:
id: a1ad885b-4090-425c-902f-0f87d3e91232
name: 'Jasmin Santos Amaral'
code: PRD-739243
unit:
id: a1ad885b-3e5c-452e-9075-cc3a60bcb696
name: 'Dr. Laiane Deverso'
abbreviation: 'Fátima Caldeira Burgos Sobrinho'
quantity: 336.1281
quantity_fulfilled: 0
quantity_pending: 336.1281
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 182d4ce9-8326-34f7-ae4f-77e160ded62d
product:
type: object
properties:
id:
type: string
example: a1ad885b-1eeb-46a5-8018-a5a04669afe0
name:
type: string
example: 'Richard Valentin Neto'
code:
type: string
example: PRD-134066
unit:
type: object
properties:
id:
type: string
example: a1ad885b-1d6f-4eea-8b59-d2fda2efae58
name:
type: string
example: 'Naomi Benez Santacruz Jr.'
abbreviation:
type: string
example: 'Srta. Cecília Bezerra Filho'
quantity:
type: number
example: 217.2117
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 217.2117
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Product Request Fulfillment'
parameters:
-
in: path
name: product
description: 'Product UUID'
example: expedita
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: ba40db12-049b-3b50-8573-41bc4e87a5db
code: null
name: 'Inventore voluptatem iste eos.'
description: 'Minima deleniti soluta omnis cum sit dolor voluptas nostrum. Est omnis sapiente perferendis unde. Distinctio atque id suscipit dolorem recusandae.'
work:
id: a1ad8858-393b-44af-87f3-3b2335292490
name: 'Maicon Marin'
user:
id: a1ad8858-3c96-474c-b544-45b26af03578
name: 'Mrs. Clarissa Padberg Sr.'
status:
id: a1ad8858-3fcf-4db4-8cac-55d9d80727a3
slug: null
name: null
description: 'Márcio Rios'
abbreviation: sit
color: '#f1af35'
text_color: '#817426'
priority: urgent
priority_label: Urgente
needed_at: '2026-05-18'
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
-
id: 71325ec6-c3f4-3d99-9e26-4616eacd29cd
code: null
name: 'Facere et velit.'
description: null
work:
id: a1ad8858-4489-41c8-818e-6333700b2d36
name: 'Denise Fernandes'
user:
id: a1ad8858-474d-4b29-a5b5-24b9494ae0f6
name: 'Ricardo Marquardt'
status:
id: a1ad8858-491e-4647-a20d-50a3d6f80963
slug: null
name: null
description: 'Cynthia Carvalho Branco'
abbreviation: non
color: '#700432'
text_color: '#c67883'
priority: low
priority_label: Baixa
needed_at: null
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: ba40db12-049b-3b50-8573-41bc4e87a5db
code: null
name: 'Inventore voluptatem iste eos.'
description: 'Minima deleniti soluta omnis cum sit dolor voluptas nostrum. Est omnis sapiente perferendis unde. Distinctio atque id suscipit dolorem recusandae.'
work:
id: a1ad8858-393b-44af-87f3-3b2335292490
name: 'Maicon Marin'
user:
id: a1ad8858-3c96-474c-b544-45b26af03578
name: 'Mrs. Clarissa Padberg Sr.'
status:
id: a1ad8858-3fcf-4db4-8cac-55d9d80727a3
slug: null
name: null
description: 'Márcio Rios'
abbreviation: sit
color: '#f1af35'
text_color: '#817426'
priority: urgent
priority_label: Urgente
needed_at: '2026-05-18'
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
-
id: 71325ec6-c3f4-3d99-9e26-4616eacd29cd
code: null
name: 'Facere et velit.'
description: null
work:
id: a1ad8858-4489-41c8-818e-6333700b2d36
name: 'Denise Fernandes'
user:
id: a1ad8858-474d-4b29-a5b5-24b9494ae0f6
name: 'Ricardo Marquardt'
status:
id: a1ad8858-491e-4647-a20d-50a3d6f80963
slug: null
name: null
description: 'Cynthia Carvalho Branco'
abbreviation: non
color: '#700432'
text_color: '#c67883'
priority: low
priority_label: Baixa
needed_at: null
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: ba40db12-049b-3b50-8573-41bc4e87a5db
code:
type: string
example: null
nullable: true
name:
type: string
example: 'Inventore voluptatem iste eos.'
description:
type: string
example: 'Minima deleniti soluta omnis cum sit dolor voluptas nostrum. Est omnis sapiente perferendis unde. Distinctio atque id suscipit dolorem recusandae.'
work:
type: object
properties:
id:
type: string
example: a1ad8858-393b-44af-87f3-3b2335292490
name:
type: string
example: 'Maicon Marin'
user:
type: object
properties:
id:
type: string
example: a1ad8858-3c96-474c-b544-45b26af03578
name:
type: string
example: 'Mrs. Clarissa Padberg Sr.'
status:
type: object
properties:
id:
type: string
example: a1ad8858-3fcf-4db4-8cac-55d9d80727a3
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Márcio Rios'
abbreviation:
type: string
example: sit
color:
type: string
example: '#f1af35'
text_color:
type: string
example: '#817426'
priority:
type: string
example: urgent
priority_label:
type: string
example: Urgente
needed_at:
type: string
example: '2026-05-18'
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: 43773d6a-3721-32b5-80d9-738e66d10df8
nullable: true
work_location_id:
type: string
description: 'Local da obra. The uuid of an existing record in the work_locations table.'
example: 2f8b58cf-51c6-3336-bdf6-a004900a7966
nullable: true
user_id:
type: string
description: 'Usuário. The uuid of an existing record in the users table.'
example: 7329a95a-c5ae-3205-8dd6-50cbabc4a708
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: c0e83d91-16af-3e35-a403-7c4fa5cb3869
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: 5dcc1f31-a287-302a-a7da-7109017522a3
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: b576debd-1ad6-310c-94c6-3e761a2f4c23
work_location_id:
type: string
description: 'Local da obra. The uuid of an existing record in the work_locations table.'
example: 6e53563a-3e34-3161-81bb-ecb4dac68833
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: e682b664-0e99-3bb3-8649-c94866cfd222
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: 119fc890-41de-3cd6-a0ef-3b476611b7be
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: 45cfdca7-f2f6-3538-8511-8f14dd5f1666
code: null
name: 'Sed provident ad.'
description: 'Maxime qui quod est blanditiis. Ratione nam consequatur et cupiditate quidem minus. Quia beatae et qui ad praesentium doloribus delectus. Doloribus neque et rerum est aliquam. Ad est reprehenderit est reprehenderit quia quibusdam repellendus tenetur.'
work:
id: a1ad8858-53f4-42d1-a767-a6ac493a337d
name: 'Maitê Esteves Faro Filho'
user:
id: a1ad8858-5803-4079-8e1e-541deb7bc00b
name: 'Jacinto Cormier'
status:
id: a1ad8858-5a4c-49ac-814e-0efd13eb3cff
slug: null
name: null
description: 'Simone Karine Barros'
abbreviation: molestias
color: '#45fb2a'
text_color: '#e65a1f'
priority: high
priority_label: Alta
needed_at: '2026-05-28'
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 45cfdca7-f2f6-3538-8511-8f14dd5f1666
code:
type: string
example: null
nullable: true
name:
type: string
example: 'Sed provident ad.'
description:
type: string
example: 'Maxime qui quod est blanditiis. Ratione nam consequatur et cupiditate quidem minus. Quia beatae et qui ad praesentium doloribus delectus. Doloribus neque et rerum est aliquam. Ad est reprehenderit est reprehenderit quia quibusdam repellendus tenetur.'
work:
type: object
properties:
id:
type: string
example: a1ad8858-53f4-42d1-a767-a6ac493a337d
name:
type: string
example: 'Maitê Esteves Faro Filho'
user:
type: object
properties:
id:
type: string
example: a1ad8858-5803-4079-8e1e-541deb7bc00b
name:
type: string
example: 'Jacinto Cormier'
status:
type: object
properties:
id:
type: string
example: a1ad8858-5a4c-49ac-814e-0efd13eb3cff
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Simone Karine Barros'
abbreviation:
type: string
example: molestias
color:
type: string
example: '#45fb2a'
text_color:
type: string
example: '#e65a1f'
priority:
type: string
example: high
priority_label:
type: string
example: Alta
needed_at:
type: string
example: '2026-05-28'
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: 36943dc9-8116-3580-ae6c-a67a432d56a9
work_location_id:
type: string
description: 'Local da obra. The uuid of an existing record in the work_locations table.'
example: b8b5f44d-2dcd-3002-aaf3-5d4e4dcd0ebb
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: 771f597d-60bd-3699-a737-3afbf087f384
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: 43d96488-2757-314a-b27c-1eb6c69d528a
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 2863a5fb-d28e-30b0-be60-39af2562b51b
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: rerum
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: 385b3cba-5a58-3dd3-a40a-712de2d2f5e1
product:
id: a1ad8858-8ec3-4b1b-a16a-5d44f9d5a23a
name: 'Sr. Alessandro Padilha Neto'
code: PRD-186880
unit:
id: a1ad8858-8b75-49fb-81d3-1680289dce3e
name: 'Renato da Rosa'
abbreviation: 'Sra. Eunice de Souza Medina Filho'
quantity: 182.4585
quantity_fulfilled: 0
quantity_pending: 182.4585
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Minima soluta sint consequuntur odio recusandae ab dolorem.'
created_at: null
updated_at: null
-
id: f55ca70f-48e5-3d44-9b32-f063279b6830
product:
id: a1ad8858-ab3f-4e6c-ba7d-1f71a2183cb2
name: 'Sandro Simão Sales Filho'
code: PRD-448158
unit:
id: a1ad8858-a811-4729-84fd-aeb910611f5d
name: 'Dr. Thomas Adriano Lutero Sobrinho'
abbreviation: 'Sr. Otávio Franco Pereira'
quantity: 607.641
quantity_fulfilled: 0
quantity_pending: 607.641
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Accusamus maiores et culpa delectus.'
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: 385b3cba-5a58-3dd3-a40a-712de2d2f5e1
product:
id: a1ad8858-8ec3-4b1b-a16a-5d44f9d5a23a
name: 'Sr. Alessandro Padilha Neto'
code: PRD-186880
unit:
id: a1ad8858-8b75-49fb-81d3-1680289dce3e
name: 'Renato da Rosa'
abbreviation: 'Sra. Eunice de Souza Medina Filho'
quantity: 182.4585
quantity_fulfilled: 0
quantity_pending: 182.4585
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Minima soluta sint consequuntur odio recusandae ab dolorem.'
created_at: null
updated_at: null
-
id: f55ca70f-48e5-3d44-9b32-f063279b6830
product:
id: a1ad8858-ab3f-4e6c-ba7d-1f71a2183cb2
name: 'Sandro Simão Sales Filho'
code: PRD-448158
unit:
id: a1ad8858-a811-4729-84fd-aeb910611f5d
name: 'Dr. Thomas Adriano Lutero Sobrinho'
abbreviation: 'Sr. Otávio Franco Pereira'
quantity: 607.641
quantity_fulfilled: 0
quantity_pending: 607.641
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Accusamus maiores et culpa delectus.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 385b3cba-5a58-3dd3-a40a-712de2d2f5e1
product:
type: object
properties:
id:
type: string
example: a1ad8858-8ec3-4b1b-a16a-5d44f9d5a23a
name:
type: string
example: 'Sr. Alessandro Padilha Neto'
code:
type: string
example: PRD-186880
unit:
type: object
properties:
id:
type: string
example: a1ad8858-8b75-49fb-81d3-1680289dce3e
name:
type: string
example: 'Renato da Rosa'
abbreviation:
type: string
example: 'Sra. Eunice de Souza Medina Filho'
quantity:
type: number
example: 182.4585
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 182.4585
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
type: string
example: 'Minima soluta sint consequuntur odio recusandae ab dolorem.'
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: 4ac7663d-f63e-3da7-a485-a45b5462a98c
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:
- f28e0ccc-5573-3ca5-b207-c343757257ee
items:
type: string
required:
- items
parameters:
-
in: path
name: productRequest
description: 'Product Request UUID'
example: a
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: quia
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: distinctio
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: 96e0e9c3-f7d3-354c-a3a4-8241050bf7b6
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 8e8b3ec5-1e6d-3744-a8ad-0af0a0e42cc1
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: distinctio
required: true
schema:
type: string
/api/products:
get:
summary: 'List products'
operationId: listProducts
description: 'List all products'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search query.'
example: Brick
required: false
schema:
type: string
description: 'Search query.'
example: Brick
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: a6acccce-8fa0-3eaa-b029-4c847eb7b16f
name: 'Dr. Violeta Rivera Filho'
code: PRD-319204
stock: 78
product_family:
id: a1ad8856-6e15-4b43-9312-a4da4779a8d0
name: 'Franciele Urias Cervantes Filho'
product_brand:
id: a1ad8856-7089-4fd2-87ee-16dad9f58a8c
name: 'Diogo Emiliano Gil Filho'
unit:
id: a1ad8856-72e5-42e9-b911-8bbf7ff72e12
name: 'Sra. Noemi Beltrão Jr.'
abbreviation: 'Sr. Breno Amaral Queirós'
image:
id: null
url: null
description: 'Qui ullam at reiciendis.'
created_at: null
updated_at: null
-
id: 3cc1a1ad-2524-3f48-bf07-1106202c47d3
name: 'Reinaldo Pacheco Padrão'
code: PRD-680724
stock: 394
product_family:
id: a1ad8856-7699-4020-a79c-ba4fec163519
name: 'Noelí Lovato Cruz Jr.'
product_brand:
id: a1ad8856-783d-4b4e-a921-852ca987a033
name: 'Sra. Heloise de Freitas Jr.'
unit:
id: a1ad8856-79d0-42d3-bc06-b3ad872f7ff3
name: 'Melissa Mendes'
abbreviation: 'Thiago Galindo'
image:
id: null
url: null
description: 'Laborum cupiditate facilis rem.'
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: a6acccce-8fa0-3eaa-b029-4c847eb7b16f
name: 'Dr. Violeta Rivera Filho'
code: PRD-319204
stock: 78
product_family:
id: a1ad8856-6e15-4b43-9312-a4da4779a8d0
name: 'Franciele Urias Cervantes Filho'
product_brand:
id: a1ad8856-7089-4fd2-87ee-16dad9f58a8c
name: 'Diogo Emiliano Gil Filho'
unit:
id: a1ad8856-72e5-42e9-b911-8bbf7ff72e12
name: 'Sra. Noemi Beltrão Jr.'
abbreviation: 'Sr. Breno Amaral Queirós'
image:
id: null
url: null
description: 'Qui ullam at reiciendis.'
created_at: null
updated_at: null
-
id: 3cc1a1ad-2524-3f48-bf07-1106202c47d3
name: 'Reinaldo Pacheco Padrão'
code: PRD-680724
stock: 394
product_family:
id: a1ad8856-7699-4020-a79c-ba4fec163519
name: 'Noelí Lovato Cruz Jr.'
product_brand:
id: a1ad8856-783d-4b4e-a921-852ca987a033
name: 'Sra. Heloise de Freitas Jr.'
unit:
id: a1ad8856-79d0-42d3-bc06-b3ad872f7ff3
name: 'Melissa Mendes'
abbreviation: 'Thiago Galindo'
image:
id: null
url: null
description: 'Laborum cupiditate facilis rem.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: a6acccce-8fa0-3eaa-b029-4c847eb7b16f
name:
type: string
example: 'Dr. Violeta Rivera Filho'
code:
type: string
example: PRD-319204
stock:
type: integer
example: 78
product_family:
type: object
properties:
id:
type: string
example: a1ad8856-6e15-4b43-9312-a4da4779a8d0
name:
type: string
example: 'Franciele Urias Cervantes Filho'
product_brand:
type: object
properties:
id:
type: string
example: a1ad8856-7089-4fd2-87ee-16dad9f58a8c
name:
type: string
example: 'Diogo Emiliano Gil Filho'
unit:
type: object
properties:
id:
type: string
example: a1ad8856-72e5-42e9-b911-8bbf7ff72e12
name:
type: string
example: 'Sra. Noemi Beltrão Jr.'
abbreviation:
type: string
example: 'Sr. Breno Amaral Queirós'
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
description:
type: string
example: 'Qui ullam at reiciendis.'
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: 73c63dec-4f7e-32e8-8056-249cbd7f68a5
product_brand_id:
type: string
description: 'Marca do Produto. The uuid of an existing record in the product_brands table.'
example: 7f814061-0af3-31c8-b17e-13796e2ca655
unit_id:
type: string
description: 'Unidade. The uuid of an existing record in the units table.'
example: a1028ecf-5a87-3eda-aa7d-1f5111522909
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: 15d500d5-61b6-3d3f-b729-2b864bcaa21c
name: 'Dr. Cristóvão Gusmão'
code: PRD-163648
stock: 95352
product_family:
id: a1ad8856-82a1-4cec-9026-98d5dd2eb3e7
name: 'Noa Ávila Saraiva Sobrinho'
product_brand:
id: a1ad8856-84ad-496a-98c9-0015f21026af
name: 'Sr. Igor Aragão Vieira Sobrinho'
unit:
id: a1ad8856-8694-4169-95c4-e70b13a441f7
name: 'Erik Horácio Delvalle Neto'
abbreviation: 'Sra. Heloise Burgos Soto Neto'
image:
id: null
url: null
description: 'Eos ad iure ducimus error.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 15d500d5-61b6-3d3f-b729-2b864bcaa21c
name:
type: string
example: 'Dr. Cristóvão Gusmão'
code:
type: string
example: PRD-163648
stock:
type: integer
example: 95352
product_family:
type: object
properties:
id:
type: string
example: a1ad8856-82a1-4cec-9026-98d5dd2eb3e7
name:
type: string
example: 'Noa Ávila Saraiva Sobrinho'
product_brand:
type: object
properties:
id:
type: string
example: a1ad8856-84ad-496a-98c9-0015f21026af
name:
type: string
example: 'Sr. Igor Aragão Vieira Sobrinho'
unit:
type: object
properties:
id:
type: string
example: a1ad8856-8694-4169-95c4-e70b13a441f7
name:
type: string
example: 'Erik Horácio Delvalle Neto'
abbreviation:
type: string
example: 'Sra. Heloise Burgos Soto Neto'
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
description:
type: string
example: 'Eos ad iure ducimus error.'
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: ae878219-86a2-3c3d-b634-50ab6814e2e3
product_brand_id:
type: string
description: 'Marca do Produto. The uuid of an existing record in the product_brands table.'
example: aa280314-7e6e-3b98-bbc5-7fc3f587428e
unit_id:
type: string
description: 'Unidade. The uuid of an existing record in the units table.'
example: 466bf120-6caf-3a74-adf5-9a0b28414a4b
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: perferendis
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: molestiae
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: quo
required: true
schema:
type: string
/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: 0660c21b-4a34-34a5-9e57-7f134a9dec35
name: 'veniam quasi'
slug: null
description: 'Quis iste qui deleniti ex aspernatur. Error hic et aut expedita ducimus. Velit non aut ipsam deserunt.'
abbreviation: null
created_at: null
updated_at: null
-
id: a5a70af0-bd24-3fb6-8bcd-e050f4cc8d01
name: 'officia distinctio'
slug: null
description: null
abbreviation: hew
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: 0660c21b-4a34-34a5-9e57-7f134a9dec35
name: 'veniam quasi'
slug: null
description: 'Quis iste qui deleniti ex aspernatur. Error hic et aut expedita ducimus. Velit non aut ipsam deserunt.'
abbreviation: null
created_at: null
updated_at: null
-
id: a5a70af0-bd24-3fb6-8bcd-e050f4cc8d01
name: 'officia distinctio'
slug: null
description: null
abbreviation: hew
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 0660c21b-4a34-34a5-9e57-7f134a9dec35
name:
type: string
example: 'veniam quasi'
slug:
type: string
example: null
nullable: true
description:
type: string
example: 'Quis iste qui deleniti ex aspernatur. Error hic et aut expedita ducimus. Velit non aut ipsam deserunt.'
abbreviation:
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:
- 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: 5a595368-ee6b-38da-b8d9-2116956165bb
name: 'aut et'
slug: null
description: null
abbreviation: yyl
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 5a595368-ee6b-38da-b8d9-2116956165bb
name:
type: string
example: 'aut et'
slug:
type: string
example: null
nullable: true
description:
type: string
example: null
nullable: true
abbreviation:
type: string
example: yyl
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: 17
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: ceb274d4-457d-3897-a0b4-6c3a1a88f81d
name: 'Jaquan Volkman Jr.'
username: herman.lisa
email: verdman@example.net
image:
id: null
url: null
sectors: []
roles: []
-
id: 0e82d6fc-b136-3bd2-9c63-01e291e7bdd7
name: 'Gracie Dickinson'
username: graham.mariano
email: lennie.metz@example.com
image:
id: null
url: null
sectors: []
roles: []
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: ceb274d4-457d-3897-a0b4-6c3a1a88f81d
name: 'Jaquan Volkman Jr.'
username: herman.lisa
email: verdman@example.net
image:
id: null
url: null
sectors: []
roles: []
-
id: 0e82d6fc-b136-3bd2-9c63-01e291e7bdd7
name: 'Gracie Dickinson'
username: graham.mariano
email: lennie.metz@example.com
image:
id: null
url: null
sectors: []
roles: []
items:
type: object
properties:
id:
type: string
example: ceb274d4-457d-3897-a0b4-6c3a1a88f81d
name:
type: string
example: 'Jaquan Volkman Jr.'
username:
type: string
example: herman.lisa
email:
type: string
example: verdman@example.net
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:
- e0e1e512-5ded-3c79-8d2b-6dcff6f45a83
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:
- c13ccccf-c26c-33c4-b0d3-714ee269e5c9
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:
- f5f6ecc1-fc1f-361f-86d3-5fa4cf1e0b88
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: 'tempore maiores'
slug: ipsa-repellat-voluptas-id-velit-neque-dolor-repellat
-
name: 'mollitia dicta'
slug: et-ut-vel-et-voluptatem
properties:
data:
type: array
example:
-
name: 'tempore maiores'
slug: ipsa-repellat-voluptas-id-velit-neque-dolor-repellat
-
name: 'mollitia dicta'
slug: et-ut-vel-et-voluptatem
items:
type: object
properties:
name:
type: string
example: 'tempore maiores'
slug:
type: string
example: ipsa-repellat-voluptas-id-velit-neque-dolor-repellat
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: d30b7ab9-b417-3a47-8334-00f3064ab56a
slug: null
name: null
description: 'Dr. Bianca Vieira Vila Neto'
abbreviation: a
color: '#299c91'
text_color: '#aab97b'
created_at: null
updated_at: null
-
id: d71542ce-c7ce-3387-b697-7048a7d90de1
slug: null
name: null
description: 'Dr. Emanuel Ronaldo Verdugo'
abbreviation: iste
color: '#64223f'
text_color: '#9e1ecc'
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: d30b7ab9-b417-3a47-8334-00f3064ab56a
slug: null
name: null
description: 'Dr. Bianca Vieira Vila Neto'
abbreviation: a
color: '#299c91'
text_color: '#aab97b'
created_at: null
updated_at: null
-
id: d71542ce-c7ce-3387-b697-7048a7d90de1
slug: null
name: null
description: 'Dr. Emanuel Ronaldo Verdugo'
abbreviation: iste
color: '#64223f'
text_color: '#9e1ecc'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: d30b7ab9-b417-3a47-8334-00f3064ab56a
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Dr. Bianca Vieira Vila Neto'
abbreviation:
type: string
example: a
color:
type: string
example: '#299c91'
text_color:
type: string
example: '#aab97b'
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: 0bd46c28-72c1-32e3-b3e2-294010208d8c
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: 158006a7-d03e-3b12-bef3-f9d2b5efb183
slug: null
name: null
description: 'Fernanda Louise Grego'
abbreviation: maxime
color: '#a23008'
text_color: '#b660e8'
module:
name: Obras
slug: work
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 158006a7-d03e-3b12-bef3-f9d2b5efb183
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Fernanda Louise Grego'
abbreviation:
type: string
example: maxime
color:
type: string
example: '#a23008'
text_color:
type: string
example: '#b660e8'
module:
type: object
properties:
name:
type: string
example: Obras
slug:
type: string
example: work
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: 2b343d57-35a8-38bd-ba43-3f10baecd5d3
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: 11e300c0-5275-35ab-98d6-519f8390a287
quantity: 596.1352
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: 5bd2e13c-5e68-3a16-bda0-b1b4830beb5f
quantity: 197.5238
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: 11e300c0-5275-35ab-98d6-519f8390a287
quantity: 596.1352
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: 5bd2e13c-5e68-3a16-bda0-b1b4830beb5f
quantity: 197.5238
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: 11e300c0-5275-35ab-98d6-519f8390a287
quantity:
type: number
example: 596.1352
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: 1a1070ba-7590-377c-873b-3d5999cad0f7
name: 'Estoque Sanches-Campos'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
-
id: 6f41da6e-b9e2-3ed0-8369-337054019780
name: 'Estoque Meireles e Cruz 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: 1a1070ba-7590-377c-873b-3d5999cad0f7
name: 'Estoque Sanches-Campos'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
-
id: 6f41da6e-b9e2-3ed0-8369-337054019780
name: 'Estoque Meireles e Cruz e Associados'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 1a1070ba-7590-377c-873b-3d5999cad0f7
name:
type: string
example: 'Estoque Sanches-Campos'
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: a9cd3307-d986-3082-9b6c-7ad85612fd87
name: 'Estoque Gusmão e Gil'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: a9cd3307-d986-3082-9b6c-7ad85612fd87
name:
type: string
example: 'Estoque Gusmão e Gil'
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: e8bf484c-0c40-32b0-b0f2-8f0211e5761e
name: 'Estoque Abreu e Benites e Filhos'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: e8bf484c-0c40-32b0-b0f2-8f0211e5761e
name:
type: string
example: 'Estoque Abreu e Benites e Filhos'
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: 8f09ef65-83dd-32bd-9ea7-21f34ef6e005
name: 'Estoque Saito e Guerra e Associados'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 8f09ef65-83dd-32bd-9ea7-21f34ef6e005
name:
type: string
example: 'Estoque Saito e Guerra e Associados'
module:
type: string
example: work
is_active:
type: boolean
example: true
is_main:
type: boolean
example: false
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- Stock
put:
summary: 'Update stock'
operationId: updateStock
description: 'Updates an existing stock'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: d4da4811-7adc-3c07-9ee9-5117f6964b85
name: 'Estoque Carvalho e Rezende'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: d4da4811-7adc-3c07-9ee9-5117f6964b85
name:
type: string
example: 'Estoque Carvalho e Rezende'
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: 8c5e2826-e64e-3b41-95ad-de631f034d55
quantity: 244.8438
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: 9e6a4678-0b88-34bc-bb58-9552fa3a8795
quantity: 717.7811
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: 8c5e2826-e64e-3b41-95ad-de631f034d55
quantity: 244.8438
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: 9e6a4678-0b88-34bc-bb58-9552fa3a8795
quantity: 717.7811
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: 8c5e2826-e64e-3b41-95ad-de631f034d55
quantity:
type: number
example: 244.8438
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: 0b885fe4-2051-371c-826f-c17382a03ffe
quantity: 98.3381
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: 0b885fe4-2051-371c-826f-c17382a03ffe
quantity:
type: number
example: 98.3381
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: illo
required: true
schema:
type: string
-
in: path
name: stock
description: 'Stock UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
-
in: path
name: item
description: 'Stock item UUID'
example: 019556e7-3a1b-888d-b288-41ccf0757d43
required: true
schema:
type: string
'/api/stocks/{stock}/summary':
get:
summary: 'Stock summary'
operationId: stockSummary
description: 'Returns a summary with totals and alerts for the stock'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
total_products: 15
total_quantity: 1250.5
items_below_minimum: 3
items_above_maximum: 1
properties:
data:
type: object
properties:
total_products:
type: integer
example: 15
total_quantity:
type: number
example: 1250.5
items_below_minimum:
type: integer
example: 3
items_above_maximum:
type: integer
example: 1
tags:
- Stock
parameters:
-
in: path
name: stock
description: 'Stock UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/stocks/{stock_id}/movements':
get:
summary: 'List movements'
operationId: listMovements
description: 'Returns a paginated list of movements for a stock'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 10
required: false
schema:
type: integer
description: 'Number of items per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 10
-
in: query
name: type
description: 'Filter by movement type (entry, consumption, transfer_in, transfer_out, adjustment_up, adjustment_down). O campo value não pode ser superior a 50 caracteres.'
example: entry
required: false
schema:
type: string
description: 'Filter by movement type (entry, consumption, transfer_in, transfer_out, adjustment_up, adjustment_down). O campo value não pode ser superior a 50 caracteres.'
example: entry
nullable: true
-
in: query
name: product_id
description: 'Filter by product UUID. O campo value deve ser um UUID válido.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: false
schema:
type: string
description: 'Filter by product UUID. O campo value deve ser um UUID válido.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
nullable: true
-
in: query
name: date_start
description: 'Filter movements from this date (YYYY-MM-DD). O campo value deve ser uma data válida.'
example: '2024-01-01'
required: false
schema:
type: string
description: 'Filter movements from this date (YYYY-MM-DD). O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
-
in: query
name: date_end
description: 'Filter movements until this date (YYYY-MM-DD). O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a date_start.'
example: '2024-12-31'
required: false
schema:
type: string
description: 'Filter movements until this date (YYYY-MM-DD). O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a date_start.'
example: '2024-12-31'
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 1d55f3d8-7d1b-3527-b716-c62c2c716363
code: MOV-951875
type: consumo
type_name: CONSUMPTION
is_entry: false
is_exit: true
quantity: 39.6569
previous_quantity: 188.4759
new_quantity: 148.819
reason: 'Ut quasi et officia temporibus incidunt reprehenderit eligendi.'
movement_date: '2026-04-10T05:22:39.000000Z'
created_at: null
-
id: 22dae1de-dde2-375d-93c3-7aaea93db3d7
code: MOV-923453
type: produção
type_name: PRODUCTION
is_entry: true
is_exit: false
quantity: 32.3117
previous_quantity: 286.5256
new_quantity: 318.8373
reason: 'Tempore asperiores sint alias vel.'
movement_date: '2026-04-09T21:44:01.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: 1d55f3d8-7d1b-3527-b716-c62c2c716363
code: MOV-951875
type: consumo
type_name: CONSUMPTION
is_entry: false
is_exit: true
quantity: 39.6569
previous_quantity: 188.4759
new_quantity: 148.819
reason: 'Ut quasi et officia temporibus incidunt reprehenderit eligendi.'
movement_date: '2026-04-10T05:22:39.000000Z'
created_at: null
-
id: 22dae1de-dde2-375d-93c3-7aaea93db3d7
code: MOV-923453
type: produção
type_name: PRODUCTION
is_entry: true
is_exit: false
quantity: 32.3117
previous_quantity: 286.5256
new_quantity: 318.8373
reason: 'Tempore asperiores sint alias vel.'
movement_date: '2026-04-09T21:44:01.000000Z'
created_at: null
items:
type: object
properties:
id:
type: string
example: 1d55f3d8-7d1b-3527-b716-c62c2c716363
code:
type: string
example: MOV-951875
type:
type: string
example: consumo
type_name:
type: string
example: CONSUMPTION
is_entry:
type: boolean
example: false
is_exit:
type: boolean
example: true
quantity:
type: number
example: 39.6569
previous_quantity:
type: number
example: 188.4759
new_quantity:
type: number
example: 148.819
reason:
type: string
example: 'Ut quasi et officia temporibus incidunt reprehenderit eligendi.'
movement_date:
type: string
example: '2026-04-10T05: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:
- '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: 74024754-b57b-33aa-9883-f29956639683
code: MOV-975083
type: consumo
type_name: CONSUMPTION
is_entry: false
is_exit: true
quantity: 34.4175
previous_quantity: 779.5335
new_quantity: 745.116
reason: 'Molestias hic et minus laudantium omnis et aut quis.'
movement_date: '2026-04-11T23:04:41.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 74024754-b57b-33aa-9883-f29956639683
code:
type: string
example: MOV-975083
type:
type: string
example: consumo
type_name:
type: string
example: CONSUMPTION
is_entry:
type: boolean
example: false
is_exit:
type: boolean
example: true
quantity:
type: number
example: 34.4175
previous_quantity:
type: number
example: 779.5335
new_quantity:
type: number
example: 745.116
reason:
type: string
example: 'Molestias hic et minus laudantium omnis et aut quis.'
movement_date:
type: string
example: '2026-04-11T23:04:41.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: 4b5030d0-95d0-3e87-9550-076656542d41
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: 5c08bb2f-263a-35e2-b648-c0d88f6bf204
code: MOV-106175
type: 'saída transferência'
type_name: TRANSFER_OUT
is_entry: false
is_exit: true
quantity: 60.0413
previous_quantity: 911.7241
new_quantity: 851.6828
reason: null
movement_date: '2026-04-03T15:05:04.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 5c08bb2f-263a-35e2-b648-c0d88f6bf204
code:
type: string
example: MOV-106175
type:
type: string
example: 'saída transferência'
type_name:
type: string
example: TRANSFER_OUT
is_entry:
type: boolean
example: false
is_exit:
type: boolean
example: true
quantity:
type: number
example: 60.0413
previous_quantity:
type: number
example: 911.7241
new_quantity:
type: number
example: 851.6828
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-04-03T15:05:04.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: 75a77714-012c-31ac-a0b1-7b76c3cc30a9
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: 40a5a8b3-dc0c-3cfe-8923-52752a28b335
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: d819163b-41b7-3bf6-8551-57ab2608acad
code: MOV-261267
type: compra
type_name: PURCHASE
is_entry: true
is_exit: false
quantity: 66.234
previous_quantity: 767.1041
new_quantity: 833.3381
reason: null
movement_date: '2026-04-18T16:41:07.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: d819163b-41b7-3bf6-8551-57ab2608acad
code:
type: string
example: MOV-261267
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: 66.234
previous_quantity:
type: number
example: 767.1041
new_quantity:
type: number
example: 833.3381
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-04-18T16:41:07.000000Z'
created_at:
type: string
example: null
nullable: true
tags:
- 'Stock Movements'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
product_id:
type: string
description: 'produto. The uuid of an existing record in the products table.'
example: ba3cb548-b164-3568-8d54-64ddd2f9a5e2
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: 1af1f794-9943-3410-8c94-4b3b51605d4a
code: MOV-847657
type: 'saída transferência'
type_name: TRANSFER_OUT
is_entry: false
is_exit: true
quantity: 47.0421
previous_quantity: 13.3993
new_quantity: 0
reason: null
movement_date: '2026-04-30T20:14:59.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 1af1f794-9943-3410-8c94-4b3b51605d4a
code:
type: string
example: MOV-847657
type:
type: string
example: 'saída transferência'
type_name:
type: string
example: TRANSFER_OUT
is_entry:
type: boolean
example: false
is_exit:
type: boolean
example: true
quantity:
type: number
example: 47.0421
previous_quantity:
type: number
example: 13.3993
new_quantity:
type: integer
example: 0
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-04-30T20:14:59.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: fd49d22d-5f10-3ad9-a88f-d530224b1899
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: 00a074b5-fce1-33bb-89c9-dd85a294e26d
code: MOV-968894
type: 'ajuste entrada'
type_name: ADJUSTMENT_IN
is_entry: true
is_exit: false
quantity: 57.2394
previous_quantity: 239.0026
new_quantity: 296.242
reason: null
movement_date: '2026-04-10T20:02:12.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 00a074b5-fce1-33bb-89c9-dd85a294e26d
code:
type: string
example: MOV-968894
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: 57.2394
previous_quantity:
type: number
example: 239.0026
new_quantity:
type: number
example: 296.242
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-04-10T20:02:12.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: e0025951-2c4f-3dbc-acb8-ebfb60974f82
name: 'Moisés Mário Gonçalves'
email: luciano08@example.org
phone: '(93) 3398-8343'
document: 48.756.084/0001-14
type: pf
responsible: 'Dr. Flávio Denis Ferminiano'
image:
id: null
url: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
-
id: 3b0ae98d-3b9c-387a-b79f-9c93f5525237
name: 'Sr. Camilo William Bezerra'
email: salas.lorenzo@example.net
phone: '(46) 98546-8387'
document: 01.513.134/0001-79
type: pj
responsible: 'Dr. Camila Domingues Rezende Neto'
image:
id: null
url: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: e0025951-2c4f-3dbc-acb8-ebfb60974f82
name: 'Moisés Mário Gonçalves'
email: luciano08@example.org
phone: '(93) 3398-8343'
document: 48.756.084/0001-14
type: pf
responsible: 'Dr. Flávio Denis Ferminiano'
image:
id: null
url: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
-
id: 3b0ae98d-3b9c-387a-b79f-9c93f5525237
name: 'Sr. Camilo William Bezerra'
email: salas.lorenzo@example.net
phone: '(46) 98546-8387'
document: 01.513.134/0001-79
type: pj
responsible: 'Dr. Camila Domingues Rezende Neto'
image:
id: null
url: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
items:
type: object
properties:
id:
type: string
example: e0025951-2c4f-3dbc-acb8-ebfb60974f82
name:
type: string
example: 'Moisés Mário Gonçalves'
email:
type: string
example: luciano08@example.org
phone:
type: string
example: '(93) 3398-8343'
document:
type: string
example: 48.756.084/0001-14
type:
type: string
example: pf
responsible:
type: string
example: 'Dr. Flávio Denis Ferminiano'
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: e6e5e129-0aee-3e11-9c18-8fa775514379
name: 'Beatriz Hosana Neves Jr.'
email: adriel.valdez@example.org
phone: '(87) 93913-1869'
document: 92.054.075/0001-73
type: pf
responsible: 'Dr. Emília Sepúlveda Esteves'
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: e6e5e129-0aee-3e11-9c18-8fa775514379
name:
type: string
example: 'Beatriz Hosana Neves Jr.'
email:
type: string
example: adriel.valdez@example.org
phone:
type: string
example: '(87) 93913-1869'
document:
type: string
example: 92.054.075/0001-73
type:
type: string
example: pf
responsible:
type: string
example: 'Dr. Emília Sepúlveda Esteves'
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
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: ee5f0b9b-0a1a-302f-a89d-4dd7b089320a
name: 'Dr. Bruno Rios Jr.'
description: 'Dolor voluptas facere ipsam eum impedit illo. Odio ratione veritatis in voluptate quos velit et. Reiciendis vitae harum vero.'
type: entrada
-
id: a181028f-4512-3bbc-9237-6dcfe0638746
name: 'Eduardo Ramos da Rosa Filho'
description: 'Nulla et sint ea sint omnis odit. Odit vel officiis et nostrum vel earum. Dolor libero neque quia aut hic aspernatur.'
type: saída
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: ee5f0b9b-0a1a-302f-a89d-4dd7b089320a
name: 'Dr. Bruno Rios Jr.'
description: 'Dolor voluptas facere ipsam eum impedit illo. Odio ratione veritatis in voluptate quos velit et. Reiciendis vitae harum vero.'
type: entrada
-
id: a181028f-4512-3bbc-9237-6dcfe0638746
name: 'Eduardo Ramos da Rosa Filho'
description: 'Nulla et sint ea sint omnis odit. Odit vel officiis et nostrum vel earum. Dolor libero neque quia aut hic aspernatur.'
type: saída
items:
type: object
properties:
id:
type: string
example: ee5f0b9b-0a1a-302f-a89d-4dd7b089320a
name:
type: string
example: 'Dr. Bruno Rios Jr.'
description:
type: string
example: 'Dolor voluptas facere ipsam eum impedit illo. Odio ratione veritatis in voluptate quos velit et. Reiciendis vitae harum vero.'
type:
type: string
example: entrada
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
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: 528fa194-3f6b-38a0-b566-3a760391ccfa
name: 'Dr. Andres Galindo'
description: 'Dignissimos fuga debitis fuga soluta perferendis. Nemo distinctio officia dolores rem quisquam rem. Dolores ipsa ullam dolor dolore incidunt sunt.'
type: depósito
properties:
data:
type: object
properties:
id:
type: string
example: 528fa194-3f6b-38a0-b566-3a760391ccfa
name:
type: string
example: 'Dr. Andres Galindo'
description:
type: string
example: 'Dignissimos fuga debitis fuga soluta perferendis. Nemo distinctio officia dolores rem quisquam rem. Dolores ipsa ullam dolor dolore incidunt sunt.'
type:
type: string
example: depósito
tags:
- 'Transaction Categories'
put:
summary: 'Update transaction category'
operationId: updateTransactionCategory
description: 'Update a transaction category'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Transaction Categories'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Name.
example: 'Example Name'
description:
type: string
description: Description.
example: 'Example Description'
type:
type: string
description: Type.
example: 'Example Type'
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
required:
- name
- type
delete:
summary: 'Delete transaction category'
operationId: deleteTransactionCategory
description: 'Delete a transaction category'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'Transaction Categories'
parameters:
-
in: path
name: transactionCategory
description: 'Transaction category UUID'
example: porro
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: 85282f33-beb8-35a0-b3f1-bd4ece6fed32
name: 'Sr. Gilberto Fonseca Vieira Neto'
abbreviation: 'Srta. Madalena da Cruz Jr.'
description: 'Quia nostrum quas quis.'
created_at: null
updated_at: null
-
id: e44d6ae8-2b39-38bc-bb98-c0f1ef9c23b7
name: 'Catarina Garcia Sobrinho'
abbreviation: 'Dr. Adriele Vale Neto'
description: 'At error libero fuga ut.'
created_at: null
updated_at: null
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: 85282f33-beb8-35a0-b3f1-bd4ece6fed32
name: 'Sr. Gilberto Fonseca Vieira Neto'
abbreviation: 'Srta. Madalena da Cruz Jr.'
description: 'Quia nostrum quas quis.'
created_at: null
updated_at: null
-
id: e44d6ae8-2b39-38bc-bb98-c0f1ef9c23b7
name: 'Catarina Garcia Sobrinho'
abbreviation: 'Dr. Adriele Vale Neto'
description: 'At error libero fuga ut.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 85282f33-beb8-35a0-b3f1-bd4ece6fed32
name:
type: string
example: 'Sr. Gilberto Fonseca Vieira Neto'
abbreviation:
type: string
example: 'Srta. Madalena da Cruz Jr.'
description:
type: string
example: 'Quia nostrum quas quis.'
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: 8ced0277-ab48-3157-864b-c2d91e200dd1
name: 'George Godói Jr.'
abbreviation: 'Sr. Eduardo Mascarenhas Rangel'
description: 'Sint est dolorem unde.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 8ced0277-ab48-3157-864b-c2d91e200dd1
name:
type: string
example: 'George Godói Jr.'
abbreviation:
type: string
example: 'Sr. Eduardo Mascarenhas Rangel'
description:
type: string
example: 'Sint est dolorem unde.'
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: nostrum
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: facilis
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: 147faeb5-030b-3da5-9173-920d0b572573
name: 'Mr. Diamond Hahn'
username: rolfson.bernadette
email: mathias.lebsack@example.com
image:
id: null
url: null
sectors: []
roles: []
-
id: fc49b918-3009-32a2-a6e1-8dc13bd4ee2a
name: "Damon O'Hara"
username: kiara.mcdermott
email: dcrooks@example.net
image:
id: null
url: null
sectors: []
roles: []
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: 147faeb5-030b-3da5-9173-920d0b572573
name: 'Mr. Diamond Hahn'
username: rolfson.bernadette
email: mathias.lebsack@example.com
image:
id: null
url: null
sectors: []
roles: []
-
id: fc49b918-3009-32a2-a6e1-8dc13bd4ee2a
name: "Damon O'Hara"
username: kiara.mcdermott
email: dcrooks@example.net
image:
id: null
url: null
sectors: []
roles: []
items:
type: object
properties:
id:
type: string
example: 147faeb5-030b-3da5-9173-920d0b572573
name:
type: string
example: 'Mr. Diamond Hahn'
username:
type: string
example: rolfson.bernadette
email:
type: string
example: mathias.lebsack@example.com
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'
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: rosella78
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:
- 791fee41-e57f-30c1-8923-c2caddf663da
items:
type: string
roles:
type: array
description: 'UUID da função. The uuid of an existing record in the roles table.'
example:
- 682eae25-091b-369d-b9de-4020a5251c66
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: a522757f-5a36-3a42-87e8-1a6073f112b7
name: 'Carmine Funk PhD'
username: ray68
email: edythe59@example.com
image:
id: null
url: null
sectors: []
roles: []
properties:
data:
type: object
properties:
id:
type: string
example: a522757f-5a36-3a42-87e8-1a6073f112b7
name:
type: string
example: 'Carmine Funk PhD'
username:
type: string
example: ray68
email:
type: string
example: edythe59@example.com
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'
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: holly69
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:
- 33b5b111-72de-37b5-8032-e29a51cd0600
items:
type: string
roles:
type: array
description: 'UUID da função. The uuid of an existing record in the roles table.'
example:
- c6973b75-652d-31d0-97a7-4e4596580281
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:
- 085263c7-ccd3-3d18-b5e5-bc24d1d63aff
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: ea
display_name: 'Repudiandae delectus eligendi molestiae doloremque veniam pariatur eius.'
-
id: null
name: ea
display_name: 'Tenetur ut maiores similique molestiae ut cum doloribus.'
properties:
data:
type: array
example:
-
id: null
name: ea
display_name: 'Repudiandae delectus eligendi molestiae doloremque veniam pariatur eius.'
-
id: null
name: ea
display_name: 'Tenetur ut maiores similique molestiae ut cum doloribus.'
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: ea
display_name:
type: string
example: 'Repudiandae delectus eligendi molestiae doloremque veniam pariatur eius.'
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: 2ac780d0-2bf5-35b9-b57d-556994b65375
description: 'Milene Jéssica Salgado Sobrinho'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
-
id: 34ac8951-b859-304d-ae36-850899d99217
description: 'Bárbara Vieira Rosa'
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: 2ac780d0-2bf5-35b9-b57d-556994b65375
description: 'Milene Jéssica Salgado Sobrinho'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
-
id: 34ac8951-b859-304d-ae36-850899d99217
description: 'Bárbara Vieira Rosa'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 2ac780d0-2bf5-35b9-b57d-556994b65375
description:
type: string
example: 'Milene Jéssica Salgado 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: 3fba244e-9a8a-3ebd-9bbd-1e5ca930b99e
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: 469499bb-71ea-363a-8b3c-08a6d810890e
description: 'Maximiano David Quintana Filho'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 469499bb-71ea-363a-8b3c-08a6d810890e
description:
type: string
example: 'Maximiano David Quintana Filho'
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: 38bebbcb-825c-33d5-a29e-bfd2693c4f2e
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: 58a323d0-96f0-31de-a2ee-5178b531794f
name: 'Aline Zamana 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
started_at:
date: '2013-05-21 19:43:51.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
-
id: ad959906-7a80-35a7-9a0e-ad28b7140712
name: 'Sr. Dante Augusto Salazar'
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
started_at:
date: '2007-07-20 11:00:15.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: 58a323d0-96f0-31de-a2ee-5178b531794f
name: 'Aline Zamana 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
started_at:
date: '2013-05-21 19:43:51.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
-
id: ad959906-7a80-35a7-9a0e-ad28b7140712
name: 'Sr. Dante Augusto Salazar'
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
started_at:
date: '2007-07-20 11:00:15.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 58a323d0-96f0-31de-a2ee-5178b531794f
name:
type: string
example: 'Aline Zamana 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
started_at:
type: object
properties:
date:
type: string
example: '2013-05-21 19:43:51.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: 3b63a6c9-c5f4-3f88-aeac-b2f8dc5be291
status_id:
type: string
description: 'Status id. The uuid of an existing record in the statuses table.'
example: 843e3566-4892-3a7c-8f76-908671237236
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: 302e0ffb-ef7c-33bb-958f-a0e44962db1f
name: 'Kauan Faria Jr.'
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
documents: []
locations: []
product_quantity_lists_count: 0
product_quantity_list_items_count: 0
product_requests_count: 0
product_request_items_count: 0
documents_count: 0
locations_documents_count: 0
total_documents_count: 0
started_at:
date: '2014-10-06 09:52:14.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 302e0ffb-ef7c-33bb-958f-a0e44962db1f
name:
type: string
example: 'Kauan Faria Jr.'
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
started_at:
type: object
properties:
date:
type: string
example: '2014-10-06 09:52:14.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: 7c0e26cc-cf99-3244-ba94-c898e8759a28
status_id:
type: string
description: 'Status id. The uuid of an existing record in the statuses table.'
example: be9f38c5-efc4-35d4-ac29-a8b1c874da3e
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: ddf5185f-33a8-3ae0-b883-d6be44290735
name: 'Tillman Hermiston'
username: annalise76
email: kristian81@example.net
image:
id: null
url: null
sectors: []
roles: []
-
id: 4f5e19c8-fb2b-3286-9c7e-54110edad785
name: 'Emelia Bechtelar'
username: daisha93
email: nkeeling@example.com
image:
id: null
url: null
sectors: []
roles: []
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: ddf5185f-33a8-3ae0-b883-d6be44290735
name: 'Tillman Hermiston'
username: annalise76
email: kristian81@example.net
image:
id: null
url: null
sectors: []
roles: []
-
id: 4f5e19c8-fb2b-3286-9c7e-54110edad785
name: 'Emelia Bechtelar'
username: daisha93
email: nkeeling@example.com
image:
id: null
url: null
sectors: []
roles: []
items:
type: object
properties:
id:
type: string
example: ddf5185f-33a8-3ae0-b883-d6be44290735
name:
type: string
example: 'Tillman Hermiston'
username:
type: string
example: annalise76
email:
type: string
example: kristian81@example.net
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:
- 851979b6-92a5-3028-8010-5871fef5e6e3
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:
- 7230f8ed-f33c-3573-bf54-9dc867a519be
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:
- ad435df1-0d98-39ab-80a1-a546d39b52af
items:
type: string
parameters:
-
in: path
name: work
description: 'Work UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string