uuid of an existing record in the permissions table.'
example:
- 7d834b81-aa6a-3a35-ad3c-77bdb2c00a4f
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:
- 1c9d235e-d733-32e2-bc24-15b3394251a0
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: d540922a-c097-381c-8ca2-0826c5a066fe
name: cumque-6a397079d28c9
display_name: 'Odio voluptatem eum alias perspiciatis.'
permissions_count: null
properties:
data:
type: object
properties:
id:
type: string
example: d540922a-c097-381c-8ca2-0826c5a066fe
name:
type: string
example: cumque-6a397079d28c9
display_name:
type: string
example: 'Odio voluptatem eum alias perspiciatis.'
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: sed
display_name: 'Dicta necessitatibus laboriosam magni nisi velit ut ut.'
-
id: null
name: et
display_name: 'In ut delectus quia saepe.'
properties:
data:
type: array
example:
-
id: null
name: sed
display_name: 'Dicta necessitatibus laboriosam magni nisi velit ut ut.'
-
id: null
name: et
display_name: 'In ut delectus quia saepe.'
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: sed
display_name:
type: string
example: 'Dicta necessitatibus laboriosam magni nisi velit ut ut.'
tags:
- ACL
parameters:
-
in: path
name: role
description: 'The role.'
example: 1
required: true
schema:
type: integer
'/api/acl/roles/{role}':
delete:
summary: Delete
operationId: delete
description: 'Delete a role.'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- ACL
parameters:
-
in: path
name: role
description: 'The role.'
example: 1
required: true
schema:
type: integer
/api/acl/permissions:
get:
summary: List
operationId: list
description: 'List permissions.'
parameters:
-
in: query
name: q
description: 'Search query.'
example: 'Permission name'
required: false
schema:
type: string
description: 'Search query.'
example: 'Permission name'
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: null
name: doloremque
display_name: 'Sit doloribus ad eos itaque unde saepe non.'
-
id: null
name: nesciunt
display_name: 'Totam qui qui possimus qui vel voluptas quia minima.'
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: doloremque
display_name: 'Sit doloribus ad eos itaque unde saepe non.'
-
id: null
name: nesciunt
display_name: 'Totam qui qui possimus qui vel voluptas quia minima.'
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: doloremque
display_name:
type: string
example: 'Sit doloribus ad eos itaque unde saepe non.'
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
meta:
type: object
properties:
current_page:
type: integer
example: 1
from:
type: integer
example: 1
last_page:
type: integer
example: 1
links:
type: array
example:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
items:
type: object
properties:
url:
type: string
example: null
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 10
to:
type: integer
example: 2
total:
type: integer
example: 2
tags:
- ACL
post:
summary: Create
operationId: create
description: 'Create a new permission.'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- ACL
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Name.
example: 'Example Name'
display_name:
type: string
description: 'Display name.'
example: 'Example Name'
required:
- name
- display_name
'/api/acl/permissions/{id}':
put:
summary: Update
operationId: update
description: 'Update a permission.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- ACL
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Name.
example: 'Example Name'
display_name:
type: string
description: 'Display name.'
example: 'Example Name'
get:
summary: Show
operationId: show
description: 'Show a permission.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
name: ut
display_name: 'Dolores aut et doloribus voluptatem veritatis et deserunt laudantium.'
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: ut
display_name:
type: string
example: 'Dolores aut et doloribus voluptatem veritatis et deserunt laudantium.'
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: 00b5d7a2-c4ef-36af-a410-743aceae805f
code: null
type: entrada
payment_method: boleto
amount: 5700.82
due_date: '2026-07-02T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Consequatur beatae laborum iste quos ex minima corrupti a eaque quo sit.'
is_recurring: null
recurrence_config: null
parent_id: null
recurrence_order: 1
total_recurrences: null
children_count: 0
remaining_recurrences: null
has_children: false
field1: earum
field2: 38
field3: true
notes: 'Quo voluptatem amet aut consequatur.'
created_at: null
updated_at: null
-
id: 94b38aec-e6cb-3d03-8fb7-4f03fd92b5ce
code: null
type: entrada
payment_method: boleto
amount: 5710.8
due_date: '2026-07-02T03: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: 'Occaecati ipsum consequuntur et quia qui atque hic in eligendi.'
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: rerum
field2: 76
field3: false
notes: 'Ducimus aliquam omnis labore veniam.'
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: 00b5d7a2-c4ef-36af-a410-743aceae805f
code: null
type: entrada
payment_method: boleto
amount: 5700.82
due_date: '2026-07-02T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Consequatur beatae laborum iste quos ex minima corrupti a eaque quo sit.'
is_recurring: null
recurrence_config: null
parent_id: null
recurrence_order: 1
total_recurrences: null
children_count: 0
remaining_recurrences: null
has_children: false
field1: earum
field2: 38
field3: true
notes: 'Quo voluptatem amet aut consequatur.'
created_at: null
updated_at: null
-
id: 94b38aec-e6cb-3d03-8fb7-4f03fd92b5ce
code: null
type: entrada
payment_method: boleto
amount: 5710.8
due_date: '2026-07-02T03: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: 'Occaecati ipsum consequuntur et quia qui atque hic in eligendi.'
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: rerum
field2: 76
field3: false
notes: 'Ducimus aliquam omnis labore veniam.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 00b5d7a2-c4ef-36af-a410-743aceae805f
code:
type: string
example: null
nullable: true
type:
type: string
example: entrada
payment_method:
type: string
example: boleto
amount:
type: number
example: 5700.82
due_date:
type: string
example: '2026-07-02T03: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: 'Consequatur beatae laborum iste quos ex minima corrupti a eaque quo sit.'
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: earum
field2:
type: integer
example: 38
field3:
type: boolean
example: true
notes:
type: string
example: 'Quo voluptatem amet aut consequatur.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Accounts Payable Receivable'
/api/accounts-payable-receivable/reminders/mark-as-read:
post:
summary: 'Mark reminders as read'
operationId: markRemindersAsRead
description: 'Mark reminders for accounts payable receivable as read'
parameters:
-
in: query
name: items
description: 'The uuid of an existing record in the account_payable_receivables table.'
example:
- quia
required: true
schema:
type: array
description: 'The uuid of an existing record in the account_payable_receivables table.'
example:
- quia
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Accounts Payable Receivable'
/api/accounts-payable-receivable/protests/summary:
get:
summary: 'Get protest summary'
operationId: getProtestSummary
description: 'Get summary of accounts with protest status'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
to_protest_count: integer
protested_count: integer
protesting_today_count: integer
total_protest_amount: float
properties:
to_protest_count:
type: string
example: integer
protested_count:
type: string
example: integer
protesting_today_count:
type: string
example: integer
total_protest_amount:
type: string
example: float
tags:
- 'Accounts Payable Receivable'
/api/accounts-payable-receivable/protests:
get:
summary: 'List protested accounts'
operationId: listProtestedAccounts
description: 'List accounts with protest date that are not paid/canceled'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Items per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 10
required: false
schema:
type: integer
description: 'Items per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 10
nullable: true
-
in: query
name: q
description: 'Search query.'
example: Salary
required: false
schema:
type: string
description: 'Search query.'
example: Salary
nullable: true
-
in: query
name: code
description: 'Filter by account code.'
example: CPR-000123
required: false
schema:
type: string
description: 'Filter by account code.'
example: CPR-000123
nullable: true
-
in: query
name: type
description: Type.
example: entrada
required: false
schema:
type: string
description: Type.
example: entrada
enum:
- entrada
- saída
nullable: true
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- odit
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- odit
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- cupiditate
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- cupiditate
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- sint
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- sint
items:
type: string
-
in: query
name: statuses
description: ''
example:
- 'a vencer'
required: false
schema:
type: array
description: ''
example:
- 'a vencer'
items:
type: string
enum:
- 'a vencer'
- pago
- pago_sem_lancamento
- vencido
- recebido
- cancelado
- 'a protestar'
- protestado
nullable: true
-
in: query
name: payment_method
description: 'Payment method.'
example: cheque
required: false
schema:
type: string
description: 'Payment method.'
example: cheque
enum:
- cheque
- boleto
- outro
nullable: true
-
in: query
name: date_start
description: 'Start date. O campo value deve ser uma data válida.'
example: '2023-01-01'
required: false
schema:
type: string
description: 'Start date. O campo value deve ser uma data válida.'
example: '2023-01-01'
nullable: true
-
in: query
name: date_end
description: 'End date. O campo value deve ser uma data válida.'
example: '2023-12-31'
required: false
schema:
type: string
description: 'End date. O campo value deve ser uma data válida.'
example: '2023-12-31'
nullable: true
-
in: query
name: protest_date_start
description: 'O campo value deve ser uma data válida.'
example: '2026-06-22T14:27:22'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-06-22T14:27:22'
nullable: true
-
in: query
name: protest_date_end
description: 'O campo value deve ser uma data válida.'
example: '2026-06-22T14:27:22'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-06-22T14:27:22'
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: 2177a342-c42e-3780-8f9d-a7cbc10ce1d4
code: null
type: entrada
payment_method: boleto
amount: 8329.74
due_date: '2026-07-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: 'Sapiente odio voluptatum minima enim vero aut iusto dolores.'
is_recurring: null
recurrence_config: null
parent_id: null
recurrence_order: 1
total_recurrences: null
children_count: 0
remaining_recurrences: null
has_children: false
field1: et
field2: 21
field3: false
notes: 'Consequatur et qui error voluptas sunt et.'
created_at: null
updated_at: null
-
id: e8be35ff-c42e-3e0e-84c2-685b8d5f15ae
code: null
type: saída
payment_method: cheque
amount: 6995.93
due_date: '2026-06-30T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Commodi optio ut consequatur nemo dolor velit.'
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: omnis
field2: 43
field3: false
notes: 'Aliquid asperiores sint molestias 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: 2177a342-c42e-3780-8f9d-a7cbc10ce1d4
code: null
type: entrada
payment_method: boleto
amount: 8329.74
due_date: '2026-07-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: 'Sapiente odio voluptatum minima enim vero aut iusto dolores.'
is_recurring: null
recurrence_config: null
parent_id: null
recurrence_order: 1
total_recurrences: null
children_count: 0
remaining_recurrences: null
has_children: false
field1: et
field2: 21
field3: false
notes: 'Consequatur et qui error voluptas sunt et.'
created_at: null
updated_at: null
-
id: e8be35ff-c42e-3e0e-84c2-685b8d5f15ae
code: null
type: saída
payment_method: cheque
amount: 6995.93
due_date: '2026-06-30T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Commodi optio ut consequatur nemo dolor velit.'
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: omnis
field2: 43
field3: false
notes: 'Aliquid asperiores sint molestias ut.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 2177a342-c42e-3780-8f9d-a7cbc10ce1d4
code:
type: string
example: null
nullable: true
type:
type: string
example: entrada
payment_method:
type: string
example: boleto
amount:
type: number
example: 8329.74
due_date:
type: string
example: '2026-07-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: 'Sapiente odio voluptatum minima enim vero aut iusto dolores.'
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: et
field2:
type: integer
example: 21
field3:
type: boolean
example: false
notes:
type: string
example: 'Consequatur et qui error voluptas sunt 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: code
description: 'Filter by account code.'
example: CPR-000123
required: false
schema:
type: string
description: 'Filter by account code.'
example: CPR-000123
nullable: true
-
in: query
name: type
description: Type.
example: entrada
required: false
schema:
type: string
description: Type.
example: entrada
enum:
- entrada
- saída
nullable: true
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- 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:
- aut
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- aut
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- perspiciatis
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- perspiciatis
items:
type: string
-
in: query
name: statuses
description: ''
example:
- 'a vencer'
required: false
schema:
type: array
description: ''
example:
- 'a vencer'
items:
type: string
enum:
- 'a vencer'
- pago
- pago_sem_lancamento
- vencido
- recebido
- cancelado
- 'a protestar'
- protestado
nullable: true
-
in: query
name: payment_method
description: 'Payment method.'
example: cheque
required: false
schema:
type: string
description: 'Payment method.'
example: cheque
enum:
- cheque
- boleto
- outro
nullable: true
-
in: query
name: date_start
description: 'Start date. O campo value deve ser uma data válida.'
example: '2023-01-01'
required: false
schema:
type: string
description: 'Start date. O campo value deve ser uma data válida.'
example: '2023-01-01'
nullable: true
-
in: query
name: date_end
description: 'End date. O campo value deve ser uma data válida.'
example: '2023-12-31'
required: false
schema:
type: string
description: 'End date. O campo value deve ser uma data válida.'
example: '2023-12-31'
nullable: true
-
in: query
name: protest_date_start
description: 'O campo value deve ser uma data válida.'
example: '2026-06-22T14:27:22'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-06-22T14:27:22'
nullable: true
-
in: query
name: protest_date_end
description: 'O campo value deve ser uma data válida.'
example: '2026-06-22T14:27:22'
required: false
schema:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-06-22T14:27:22'
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: 9f1228be-5beb-3336-95a7-5ac63bb7e6df
code: null
type: saída
payment_method: boleto
amount: 6769.27
due_date: '2026-07-06T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Aut recusandae omnis est aspernatur quo dolorem.'
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: voluptatum
field2: 70
field3: true
notes: 'Nihil et non in distinctio est quam et.'
created_at: null
updated_at: null
-
id: 23a8ea41-647e-3165-8b85-2c10584d9c2d
code: null
type: entrada
payment_method: cheque
amount: 3582.34
due_date: '2026-07-18T03: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: 'Et iste quae vel rerum non non nemo perferendis.'
is_recurring: null
recurrence_config: null
parent_id: null
recurrence_order: 1
total_recurrences: null
children_count: 0
remaining_recurrences: null
has_children: false
field1: sed
field2: 52
field3: false
notes: 'At nemo aut qui dolore eius aut aliquid mollitia.'
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: 9f1228be-5beb-3336-95a7-5ac63bb7e6df
code: null
type: saída
payment_method: boleto
amount: 6769.27
due_date: '2026-07-06T03:00:00.000000Z'
status: null
payment_date: null
protest_date: null
paid_amount: null
interest_amount: null
penalty_amount: null
notary_fee_amount: null
description: 'Aut recusandae omnis est aspernatur quo dolorem.'
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: voluptatum
field2: 70
field3: true
notes: 'Nihil et non in distinctio est quam et.'
created_at: null
updated_at: null
-
id: 23a8ea41-647e-3165-8b85-2c10584d9c2d
code: null
type: entrada
payment_method: cheque
amount: 3582.34
due_date: '2026-07-18T03: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: 'Et iste quae vel rerum non non nemo perferendis.'
is_recurring: null
recurrence_config: null
parent_id: null
recurrence_order: 1
total_recurrences: null
children_count: 0
remaining_recurrences: null
has_children: false
field1: sed
field2: 52
field3: false
notes: 'At nemo aut qui dolore eius aut aliquid mollitia.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 9f1228be-5beb-3336-95a7-5ac63bb7e6df
code:
type: string
example: null
nullable: true
type:
type: string
example: saída
payment_method:
type: string
example: boleto
amount:
type: number
example: 6769.27
due_date:
type: string
example: '2026-07-06T03:00:00.000000Z'
status:
type: string
example: null
nullable: true
payment_date:
type: string
example: null
nullable: true
protest_date:
type: string
example: null
nullable: true
paid_amount:
type: string
example: null
nullable: true
interest_amount:
type: string
example: null
nullable: true
penalty_amount:
type: string
example: null
nullable: true
notary_fee_amount:
type: string
example: null
nullable: true
description:
type: string
example: 'Aut recusandae omnis est aspernatur quo dolorem.'
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: voluptatum
field2:
type: integer
example: 70
field3:
type: boolean
example: true
notes:
type: string
example: 'Nihil et non in distinctio est quam 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'
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: c217cfca-78ba-3b1a-878d-16479c11596a
nullable: true
customer_id:
type: string
description: 'Cliente. The uuid of an existing record in the customers table.'
example: 0ed7c60d-2df6-3975-96cf-05840ddc0c44
nullable: true
work_id:
type: string
description: 'Obra. The uuid of an existing record in the works table.'
example: 3235569c-b44a-3ce6-b12d-3291d5a5f0a2
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: 030b4c20-bfba-3dee-ac1d-9b211730a6aa
nullable: true
custom_fields:
type: object
description: 'Custom fields.'
example:
- example1
- example2
properties: { }
is_recurring:
type: boolean
description: 'Is recurring.'
example: true
recurrence_config:
type: object
description: 'Recurrence config.'
example:
- example1
- example2
properties:
frequency_type:
type: string
description: 'Recurrence config frequency type.'
example: 'Example Recurrence config frequency type'
enum:
- monthly
- weekly
- biweekly
- yearly
frequency_value:
type: integer
description: 'Recurrence config frequency value. O campo value deve ser pelo menos 0. O campo value não pode ser superior a 31.'
example: 1
end_date:
type: string
description: 'Recurrence config end date. O campo value deve ser uma data válida. O campo value deve ser uma data posterior a due_date.'
example: '2024-01-01'
nullable: true
max_occurrences:
type: integer
description: 'Recurrence config max occurrences. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
generation_days_ahead:
type: integer
description: 'Recurrence config generation days ahead. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 30.'
example: 1
required:
- type
- payment_method
- due_date
- amount
- description
/api/accounts-payable-receivable/import-nfe:
post:
summary: 'Import NFe installments'
operationId: importNFeInstallments
description: 'Gera contas a pagar para as parcelas selecionadas de uma nota fiscal.'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
total: integer
properties:
message:
type: string
example: string
total:
type: string
example: integer
tags:
- 'Accounts Payable Receivable'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fiscal_document_id:
type: string
description: 'The uuid of an existing record in the fiscal_documents table.'
example: sit
installment_ids:
type: array
description: 'The uuid of an existing record in the fiscal_document_installments table.'
example:
- eius
items:
type: string
payment_method:
type: string
description: ''
example: cheque
enum:
- cheque
- boleto
- outro
nullable: true
required:
- fiscal_document_id
'/api/accounts-payable-receivable/{accountPayableReceivable}/history':
get:
summary: 'Get account history'
operationId: getAccountHistory
description: 'Get the activity log history for an account payable receivable'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Accounts Payable Receivable'
parameters:
-
in: path
name: accountPayableReceivable
description: ''
example: dolor
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: c89b66fe-4592-336f-bb6c-1d45199935ad
code: null
type: entrada
payment_method: cheque
amount: 5810.19
due_date: '2026-07-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: 'Natus tempore autem necessitatibus sint quidem iusto et laudantium.'
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: odit
field2: 79
field3: true
notes: 'Dolores aut est nam aut enim dolorem eos odio.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: c89b66fe-4592-336f-bb6c-1d45199935ad
code:
type: string
example: null
nullable: true
type:
type: string
example: entrada
payment_method:
type: string
example: cheque
amount:
type: number
example: 5810.19
due_date:
type: string
example: '2026-07-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: 'Natus tempore autem necessitatibus sint quidem iusto et laudantium.'
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: odit
field2:
type: integer
example: 79
field3:
type: boolean
example: true
notes:
type: string
example: 'Dolores aut est nam aut enim dolorem eos odio.'
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: 730f8c3b-6abe-3bd3-958a-6a38139075a3
nullable: true
customer_id:
type: string
description: 'Customer id. The uuid of an existing record in the customers table.'
example: 7b0cf902-64bf-3734-b004-0287b4a5c6d8
nullable: true
work_id:
type: string
description: 'Work id. The uuid of an existing record in the works table.'
example: cceba3e9-5c20-3687-b79d-60b4b6e1d345
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: e391ecfa-d5a6-3e87-8b4c-f3d9576b931b
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: harum
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: hallie68@example.com
password:
type: string
description: 'User password.'
example: password
required:
- email
- password
security: []
/api/auth/user:
get:
summary: Me
operationId: me
description: 'Get the current user'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: fb4a1034-7ccf-39a9-aa92-9d1cbd7d1837
name: 'Madie Bailey'
username: lois39
email: orpha.bernier@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: fb4a1034-7ccf-39a9-aa92-9d1cbd7d1837
name:
type: string
example: 'Madie Bailey'
username:
type: string
example: lois39
email:
type: string
example: orpha.bernier@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: ritchie.rod
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:
- 954a106e-5db6-3a14-abfd-27c81118dca6
items:
type: string
roles:
type: array
description: 'UUID da função. The uuid of an existing record in the roles table.'
example:
- 886f4116-b584-3bb3-b248-ab8759c0e99b
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: ikudrmpnsivykqql
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: ipsa
required: true
schema:
type: string
'/api/auth/{user}/token':
post:
summary: 'Generate user token'
operationId: generateUserToken
description: 'Generate a token for a specific user'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
token: string
userData:
id: uuid
name: string
username: string
email: string
ability:
- array
roles:
- array
preferences:
- array
sectors:
- array
image:
id: uuid
url: string
properties:
token:
type: string
example: string
userData:
type: object
properties:
id:
type: string
example: uuid
name:
type: string
example: string
username:
type: string
example: string
email:
type: string
example: string
ability:
type: array
example:
- array
items:
type: string
roles:
type: array
example:
- array
items:
type: string
preferences:
type: array
example:
- array
items:
type: string
sectors:
type: array
example:
- array
items:
type: string
image:
type: object
properties:
id:
type: string
example: uuid
url:
type: string
example: string
tags:
- Authentication
parameters:
-
in: path
name: user
description: 'User UUID'
example: 550e8400-e29b-41d4-a716-446655440000
required: true
schema:
type: string
/api/bank-accounts/transfers:
post:
summary: 'Transfer between bank accounts'
operationId: transferBetweenBankAccounts
description: 'Transfers funds from a source account to a destination account'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
data: object
properties:
message:
type: string
example: string
data:
type: string
example: object
tags:
- 'Bank Account Movements'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
source_id:
type: string
description: 'Source id. The value and destination_id must be different. The uuid of an existing record in the bank_accounts table.'
example: 'Example Source id'
destination_id:
type: string
description: 'Destination id. The uuid of an existing record in the bank_accounts table.'
example: 'Example Destination id'
amount:
type: number
description: Amount.
example: 1.0
description:
type: string
description: 'Description. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Description'
nullable: true
transaction_date:
type: string
description: 'Transaction date. Must be a valid date in the format Y-m-d H:i:s.'
example: '2024-01-01'
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: 'Example Transaction category id'
nullable: true
required:
- source_id
- destination_id
- amount
- transaction_date
'/api/bank-accounts/transfers/{bankTransfer}':
delete:
summary: 'Delete a bank transfer'
operationId: deleteABankTransfer
description: 'Reverts a transfer by deleting both cash flows and the transfer record'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Bank Account Movements'
parameters:
-
in: path
name: bankTransfer
description: ''
example: qui
required: true
schema:
type: string
'/api/bank-accounts/{bankAccount}/deposit':
post:
summary: 'Deposit into bank account'
operationId: depositIntoBankAccount
description: 'Adds funds to a bank account'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Bank Account Movements'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
amount:
type: number
description: Amount.
example: 1.0
description:
type: string
description: 'Description. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Description'
nullable: true
transaction_date:
type: string
description: 'Transaction date. Must be a valid date in the format Y-m-d H:i:s.'
example: '2024-01-01'
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: 'Example Transaction category id'
nullable: true
required:
- amount
- transaction_date
parameters:
-
in: path
name: bankAccount
description: ''
example: 17
required: true
schema:
type: integer
'/api/bank-accounts/{bankAccount}/withdraw':
post:
summary: 'Withdraw from bank account'
operationId: withdrawFromBankAccount
description: 'Removes funds from a bank account'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Bank Account Movements'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
amount:
type: number
description: Amount.
example: 1.0
description:
type: string
description: 'Description. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Description'
nullable: true
transaction_date:
type: string
description: 'Transaction date. Must be a valid date in the format Y-m-d H:i:s.'
example: '2024-01-01'
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: 'Example Transaction category id'
nullable: true
required:
- amount
- transaction_date
parameters:
-
in: path
name: bankAccount
description: ''
example: 11
required: true
schema:
type: integer
/api/bank-accounts/balance-summary:
get:
summary: 'Get bank account balance summary'
operationId: getBankAccountBalanceSummary
description: 'Get the balance summary of all bank accounts'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
totalBalance: number
totalBalancePositive: number
totalBalanceNegative: number
totalLimit: number
totalAvailableBalance: number
totalUsedLimit: number
totalAvailableLimit: number
accounts:
'*':
id: string
bank: string
balance: number
limit: number
available_balance: number
used_limit: number
available_limit: number
properties:
data:
type: object
properties:
totalBalance:
type: string
example: number
totalBalancePositive:
type: string
example: number
totalBalanceNegative:
type: string
example: number
totalLimit:
type: string
example: number
totalAvailableBalance:
type: string
example: number
totalUsedLimit:
type: string
example: number
totalAvailableLimit:
type: string
example: number
accounts:
type: object
properties:
'*':
type: object
properties:
id:
type: string
example: string
bank:
type: string
example: string
balance:
type: string
example: number
limit:
type: string
example: number
available_balance:
type: string
example: number
used_limit:
type: string
example: number
available_limit:
type: string
example: number
tags:
- 'Bank Accounts'
/api/bank-accounts/default-by-payment-method:
get:
summary: 'Get default bank account by payment method'
operationId: getDefaultBankAccountByPaymentMethod
description: 'Returns the bank account configured as default for the given payment method. Responds 404 when no default is configured.'
parameters:
-
in: query
name: method
description: 'Forma de pagamento (pix, bank_transfer, cash, check).'
example: cash
required: true
schema:
type: string
description: 'Forma de pagamento (pix, bank_transfer, cash, check).'
example: cash
enum:
- pix
- bank_transfer
- cash
- check
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 898fdca7-7d8b-3b2a-aa58-28c178f0e05e
agency: '3649'
account: 2153344-4
type: corrente
balance: 5086.99
holder_type: pf
alias: rerum
limit: 3429.69
available_balance: 8516.68
used_limit: 0
available_limit: 3429.69
is_default: null
default_payment_method: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 898fdca7-7d8b-3b2a-aa58-28c178f0e05e
agency:
type: string
example: '3649'
account:
type: string
example: 2153344-4
type:
type: string
example: corrente
balance:
type: number
example: 5086.99
holder_type:
type: string
example: pf
alias:
type: string
example: rerum
limit:
type: number
example: 3429.69
available_balance:
type: number
example: 8516.68
used_limit:
type: integer
example: 0
available_limit:
type: number
example: 3429.69
is_default:
type: string
example: null
nullable: true
default_payment_method:
type: string
example: null
nullable: true
bank:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
code:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
404:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Bank Accounts'
/api/bank-accounts:
get:
summary: 'List bank accounts'
operationId: listBankAccounts
description: 'List all bank accounts'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search query.'
example: name
required: false
schema:
type: string
description: 'Search query.'
example: name
nullable: true
-
in: query
name: is_default
description: 'Filter by default account (1 or 0).'
example: true
required: false
schema:
type: boolean
description: 'Filter by default account (1 or 0).'
example: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: b7837884-419f-3401-a34f-a082adcc22ac
agency: '8240'
account: 7073471-2
type: poupança
balance: 3683.88
holder_type: pf
alias: est
limit: 6410.31
available_balance: 10094.19
used_limit: 0
available_limit: 6410.31
is_default: null
default_payment_method: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
-
id: 2517c77f-bc29-362e-bb3c-b7422c1ebc88
agency: '4815'
account: 7034613-0
type: poupança
balance: 9812.76
holder_type: pj
alias: harum
limit: 5538.41
available_balance: 15351.17
used_limit: 0
available_limit: 5538.41
is_default: null
default_payment_method: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: b7837884-419f-3401-a34f-a082adcc22ac
agency: '8240'
account: 7073471-2
type: poupança
balance: 3683.88
holder_type: pf
alias: est
limit: 6410.31
available_balance: 10094.19
used_limit: 0
available_limit: 6410.31
is_default: null
default_payment_method: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
-
id: 2517c77f-bc29-362e-bb3c-b7422c1ebc88
agency: '4815'
account: 7034613-0
type: poupança
balance: 9812.76
holder_type: pj
alias: harum
limit: 5538.41
available_balance: 15351.17
used_limit: 0
available_limit: 5538.41
is_default: null
default_payment_method: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: b7837884-419f-3401-a34f-a082adcc22ac
agency:
type: string
example: '8240'
account:
type: string
example: 7073471-2
type:
type: string
example: poupança
balance:
type: number
example: 3683.88
holder_type:
type: string
example: pf
alias:
type: string
example: est
limit:
type: number
example: 6410.31
available_balance:
type: number
example: 10094.19
used_limit:
type: integer
example: 0
available_limit:
type: number
example: 6410.31
is_default:
type: string
example: null
nullable: true
default_payment_method:
type: string
example: null
nullable: true
bank:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
code:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
meta:
type: object
properties:
current_page:
type: integer
example: 1
from:
type: integer
example: 1
last_page:
type: integer
example: 1
links:
type: array
example:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
items:
type: object
properties:
url:
type: string
example: null
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 10
to:
type: integer
example: 2
total:
type: integer
example: 2
tags:
- 'Bank Accounts'
post:
summary: 'Create bank account'
operationId: createBankAccount
description: 'Create a new bank account'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Bank Accounts'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
agency:
type: string
description: Agency.
example: 'Example Agency'
account:
type: string
description: Account.
example: 8639268-9
bank_id:
type: string
description: 'Bank id. The uuid of an existing record in the banks table.'
example: 09bc7541-9c86-3be5-8261-3f1fae159ce5
type:
type: string
description: Type.
example: 'Example Type'
enum:
- corrente
- poupança
- caixa
holder_type:
type: string
description: 'Holder type.'
example: 'Example Holder type'
enum:
- pf
- pj
alias:
type: string
description: Alias.
example: 'Example Alias'
balance:
type: number
description: Balance.
example: 1.0
limit:
type: number
description: Limit.
example: 1.0
nullable: true
is_default:
type: boolean
description: 'Is default.'
example: true
default_payment_method:
type: string
description: 'Default payment method.'
example: 'Example Default payment method'
enum:
- pix
- bank_transfer
- cash
- check
nullable: true
required:
- agency
- account
- bank_id
- type
- holder_type
- alias
- balance
'/api/bank-accounts/{bankAccount}':
put:
summary: 'Update bank account'
operationId: updateBankAccount
description: 'Update a bank account'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Bank Accounts'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
agency:
type: string
description: Agency.
example: 'Example Agency'
account:
type: string
description: Account.
example: 9937544-4
bank_id:
type: string
description: 'Bank id. The uuid of an existing record in the banks table.'
example: 6e39e48d-9eb2-3adc-86d9-39f6fc80a0c1
type:
type: string
description: Type.
example: 'Example Type'
enum:
- corrente
- poupança
- caixa
holder_type:
type: string
description: 'Holder type.'
example: 'Example Holder type'
enum:
- pf
- pj
alias:
type: string
description: Alias.
example: 'Example Alias'
nullable: true
balance:
type: number
description: Balance.
example: 1.0
limit:
type: number
description: Limit.
example: 1.0
nullable: true
is_default:
type: boolean
description: 'Is default.'
example: true
default_payment_method:
type: string
description: 'Default payment method.'
example: 'Example Default payment method'
enum:
- pix
- bank_transfer
- cash
- check
nullable: true
get:
summary: 'Show bank account'
operationId: showBankAccount
description: 'Show a bank account'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 5192609c-9f4b-31b4-bbe7-1e6d2a278938
agency: '8338'
account: 8480814-5
type: corrente
balance: 3680.61
holder_type: pj
alias: fuga
limit: 9819.41
available_balance: 13500.02
used_limit: 0
available_limit: 9819.41
is_default: null
default_payment_method: null
bank:
id: null
name: null
code: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 5192609c-9f4b-31b4-bbe7-1e6d2a278938
agency:
type: string
example: '8338'
account:
type: string
example: 8480814-5
type:
type: string
example: corrente
balance:
type: number
example: 3680.61
holder_type:
type: string
example: pj
alias:
type: string
example: fuga
limit:
type: number
example: 9819.41
available_balance:
type: number
example: 13500.02
used_limit:
type: integer
example: 0
available_limit:
type: number
example: 9819.41
is_default:
type: string
example: null
nullable: true
default_payment_method:
type: string
example: null
nullable: true
bank:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
code:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Bank Accounts'
delete:
summary: 'Delete bank account'
operationId: deleteBankAccount
description: 'Delete a bank account'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Bank Accounts'
parameters:
-
in: path
name: bankAccount
description: ''
example: 6
required: true
schema:
type: integer
'/api/bank-accounts/{bankAccount}/statements/summary':
get:
summary: 'Bank statement summary'
operationId: bankStatementSummary
description: 'Get aggregated summary for the period'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
opening_balance: number
closing_balance: number
total_credit: number
total_debit: number
count: integer
date_start: string
date_end: string
properties:
data:
type: object
properties:
opening_balance:
type: string
example: number
closing_balance:
type: string
example: number
total_credit:
type: string
example: number
total_debit:
type: string
example: number
count:
type: string
example: integer
date_start:
type: string
example: string
date_end:
type: string
example: string
tags:
- 'Bank Statements'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
date_start:
type: string
description: 'Date start. O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
date_end:
type: string
description: 'Date end. O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a date_start.'
example: '2024-01-01'
nullable: true
parameters:
-
in: path
name: bankAccount
description: ''
example: 16
required: true
schema:
type: integer
'/api/bank-accounts/{bankAccount}/statements':
get:
summary: 'List bank statements'
operationId: listBankStatements
description: 'List statements for a bank account. Default period: last 30 days.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: null
type: null
amount: null
balance_after: null
description: null
date: null
statement_date: null
created_at: null
updated_at: null
-
id: null
type: null
amount: null
balance_after: null
description: null
date: null
statement_date: null
created_at: null
updated_at: null
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: null
type: null
amount: null
balance_after: null
description: null
date: null
statement_date: null
created_at: null
updated_at: null
-
id: null
type: null
amount: null
balance_after: null
description: null
date: null
statement_date: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: null
nullable: true
type:
type: string
example: null
nullable: true
amount:
type: string
example: null
nullable: true
balance_after:
type: string
example: null
nullable: true
description:
type: string
example: null
nullable: true
date:
type: string
example: null
nullable: true
statement_date:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
meta:
type: object
properties:
current_page:
type: integer
example: 1
from:
type: integer
example: 1
last_page:
type: integer
example: 1
links:
type: array
example:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
items:
type: object
properties:
url:
type: string
example: null
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 10
to:
type: integer
example: 2
total:
type: integer
example: 2
tags:
- 'Bank Statements'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
sort_by:
type: string
description: ''
example: eaque
nullable: true
sort_desc:
type: boolean
description: ''
example: true
nullable: true
page:
type: integer
description: 'O campo value deve ser pelo menos 1.'
example: 25
nullable: true
per_page:
type: integer
description: 'O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 4
nullable: true
q:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: vmszrwgdozxkidjepjunjdj
nullable: true
type:
type: string
description: ''
example: entrada
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
- 'ajuste saída'
nullable: true
date_start:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-06-22T14:27:23'
nullable: true
date_end:
type: string
description: 'O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a date_start.'
example: '2044-07-15'
nullable: true
cash_flow_id:
type: string
description: 'The uuid of an existing record in the cash_flows table.'
example: null
nullable: true
parameters:
-
in: path
name: bankAccount
description: ''
example: 20
required: true
schema:
type: integer
'/api/bank-accounts/{bankAccount}/statements/{bankStatement}':
get:
summary: 'Show bank statement'
operationId: showBankStatement
description: 'Show a specific statement entry'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
type: null
amount: null
balance_after: null
description: null
date: null
statement_date: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
type:
type: string
example: null
nullable: true
amount:
type: string
example: null
nullable: true
balance_after:
type: string
example: null
nullable: true
description:
type: string
example: null
nullable: true
date:
type: string
example: null
nullable: true
statement_date:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Bank Statements'
parameters:
-
in: path
name: bankAccount
description: ''
example: 7
required: true
schema:
type: integer
-
in: path
name: bankStatement
description: ''
example: dignissimos
required: true
schema:
type: string
/api/banks:
get:
summary: 'List banks'
operationId: listBanks
description: 'List all banks'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search query.'
example: 'Permission name'
required: false
schema:
type: string
description: 'Search query.'
example: 'Permission name'
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 55c255bd-1f74-31bc-b7c7-65f33158d642
name: 'Ferreira e Ferreira S.A.'
code: '534'
-
id: 758c4d52-814f-396d-af28-c85d34547771
name: 'Pereira e Pereira'
code: '302'
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: 55c255bd-1f74-31bc-b7c7-65f33158d642
name: 'Ferreira e Ferreira S.A.'
code: '534'
-
id: 758c4d52-814f-396d-af28-c85d34547771
name: 'Pereira e Pereira'
code: '302'
items:
type: object
properties:
id:
type: string
example: 55c255bd-1f74-31bc-b7c7-65f33158d642
name:
type: string
example: 'Ferreira e Ferreira S.A.'
code:
type: string
example: '534'
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: 5662929e-eb71-34b4-94a5-6129d7899e46
name: 'Cruz e Serra'
code: '320'
properties:
data:
type: object
properties:
id:
type: string
example: 5662929e-eb71-34b4-94a5-6129d7899e46
name:
type: string
example: 'Cruz e Serra'
code:
type: string
example: '320'
tags:
- Banks
delete:
summary: 'Delete bank'
operationId: deleteBank
description: 'Delete a bank'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Banks
parameters:
-
in: path
name: bank
description: 'The bank.'
example: 1
required: true
schema:
type: integer
'/api/cep/{cep}':
get:
summary: 'Search CEP'
operationId: searchCEP
description: 'Search for address information by CEP (Brazilian postal code)'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
oneOf:
-
description: 'CEP found successfully'
type: object
example:
data:
cep: '01001000'
street: 'Praça da Sé'
district: Sé
city: 'São Paulo'
state: SP
complement: 'lado ímpar'
ibge: '3550308'
ddd: '11'
siafi: '7107'
properties:
data:
type: object
properties:
cep:
type: string
example: '01001000'
street:
type: string
example: 'Praça da Sé'
district:
type: string
example: Sé
city:
type: string
example: 'São Paulo'
state:
type: string
example: SP
complement:
type: string
example: 'lado ímpar'
ibge:
type: string
example: '3550308'
ddd:
type: string
example: '11'
siafi:
type: string
example: '7107'
-
description: 'CEP not found'
type: object
example:
data:
cep: '99999999'
street: null
district: null
city: null
state: null
complement: null
ibge: null
ddd: null
siafi: null
properties:
data:
type: object
properties:
cep:
type: string
example: '99999999'
street:
type: string
example: null
nullable: true
district:
type: string
example: null
nullable: true
city:
type: string
example: null
nullable: true
state:
type: string
example: null
nullable: true
complement:
type: string
example: null
nullable: true
ibge:
type: string
example: null
nullable: true
ddd:
type: string
example: null
nullable: true
siafi:
type: string
example: null
nullable: true
tags:
- CEP
parameters:
-
in: path
name: cep
description: 'CEP to search for'
example: '01001000'
required: true
schema:
type: string
/api/cash-flows/summary:
get:
summary: 'Get cash flow summary'
operationId: getCashFlowSummary
description: 'Get cash flow summary'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search query.'
example: Salary
required: false
schema:
type: string
description: 'Search query.'
example: Salary
nullable: true
-
in: query
name: cash_session
description: 'Cash session. The uuid of an existing record in the cash_sessions table.'
example: uuid
required: false
schema:
type: string
description: 'Cash session. The uuid of an existing record in the cash_sessions table.'
example: uuid
nullable: true
-
in: query
name: type
description: 'Cash flow type.'
example: entrada
required: false
schema:
type: string
description: 'Cash flow type.'
example: entrada
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
- 'ajuste saída'
nullable: true
-
in: query
name: description
description: 'Description .'
example: 'Voluptatibus explicabo culpa culpa ad ipsam amet nihil.'
required: false
schema:
type: string
description: 'Description .'
example: 'Voluptatibus explicabo culpa culpa ad ipsam amet nihil.'
-
in: query
name: categories
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- sunt
required: false
schema:
type: array
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- sunt
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:
- enim
required: false
schema:
type: array
description: 'The uuid of an existing record in the bank_accounts table.'
example:
- enim
items:
type: string
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- quia
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- quia
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- est
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- est
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- ex
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- ex
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
total_income: number
total_expense: number
total_fee: number
total_balance: number
properties:
data:
type: object
properties:
total_income:
type: string
example: number
total_expense:
type: string
example: number
total_fee:
type: string
example: number
total_balance:
type: string
example: number
tags:
- 'Cash Flow'
/api/cash-flows:
get:
summary: 'List cash flow'
operationId: listCashFlow
description: 'List all cash flow'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search query.'
example: Salary
required: false
schema:
type: string
description: 'Search query.'
example: Salary
nullable: true
-
in: query
name: cash_session
description: 'Cash session. The uuid of an existing record in the cash_sessions table.'
example: uuid
required: false
schema:
type: string
description: 'Cash session. The uuid of an existing record in the cash_sessions table.'
example: uuid
nullable: true
-
in: query
name: type
description: 'Cash flow type.'
example: entrada
required: false
schema:
type: string
description: 'Cash flow type.'
example: entrada
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
- 'ajuste saída'
nullable: true
-
in: query
name: description
description: 'Description .'
example: 'Quae ea et cupiditate molestias.'
required: false
schema:
type: string
description: 'Description .'
example: 'Quae ea et cupiditate molestias.'
-
in: query
name: categories
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- et
required: false
schema:
type: array
description: 'The uuid of an existing record in the transaction_categories table.'
example:
- et
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:
- aliquid
required: false
schema:
type: array
description: 'The uuid of an existing record in the bank_accounts table.'
example:
- aliquid
items:
type: string
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- dolore
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- dolore
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- esse
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- esse
items:
type: string
-
in: query
name: works
description: 'The uuid of an existing record in the works table.'
example:
- exercitationem
required: false
schema:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- exercitationem
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 6260a579-4b3a-30ae-a3b5-95fce66c8998
code: FC-20094711
type: transferência
amount: -4704.43
description: 'Vel voluptatem repudiandae illo ab rerum.'
transaction_date: '2014-02-03T02:00:00.000000Z'
transaction_category:
id: null
name: null
type: null
created_at: null
updated_at: null
-
id: bb97c45e-2100-399c-8bf3-f7ae09d69571
code: FC-63507609
type: transferência
amount: -707.55
description: 'Ipsam sit totam sed ut omnis dolore et architecto.'
transaction_date: '1974-11-04T03: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: 6260a579-4b3a-30ae-a3b5-95fce66c8998
code: FC-20094711
type: transferência
amount: -4704.43
description: 'Vel voluptatem repudiandae illo ab rerum.'
transaction_date: '2014-02-03T02:00:00.000000Z'
transaction_category:
id: null
name: null
type: null
created_at: null
updated_at: null
-
id: bb97c45e-2100-399c-8bf3-f7ae09d69571
code: FC-63507609
type: transferência
amount: -707.55
description: 'Ipsam sit totam sed ut omnis dolore et architecto.'
transaction_date: '1974-11-04T03: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: 6260a579-4b3a-30ae-a3b5-95fce66c8998
code:
type: string
example: FC-20094711
type:
type: string
example: transferência
amount:
type: number
example: -4704.43
description:
type: string
example: 'Vel voluptatem repudiandae illo ab rerum.'
transaction_date:
type: string
example: '2014-02-03T02:00:00.000000Z'
transaction_category:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
type:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
meta:
type: object
properties:
current_page:
type: integer
example: 1
from:
type: integer
example: 1
last_page:
type: integer
example: 1
links:
type: array
example:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
items:
type: object
properties:
url:
type: string
example: null
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 10
to:
type: integer
example: 2
total:
type: integer
example: 2
tags:
- 'Cash Flow'
post:
summary: 'Create cash flow'
operationId: createCashFlow
description: 'Create a new cash flow'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Cash Flow'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
type:
type: string
description: Type.
example: 'Example Type'
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
- 'ajuste saída'
cash_session_id:
type: string
description: 'Cash session id. The uuid of an existing record in the cash_sessions table.'
example: 407b7c18-e10c-343a-bd52-dfc5ac261462
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: c6939ff3-56b7-3b2c-acf0-90358dfb5a4c
bank_account_id:
type: string
description: 'Bank account id. The uuid of an existing record in the bank_accounts table.'
example: bd5743e4-7b2b-32a0-ace8-69a6085fe538
nullable: true
customer_id:
type: string
description: 'Customer id. The uuid of an existing record in the customers table.'
example: 7c902a1f-40d6-3435-9521-fdcabf52729f
nullable: true
supplier_id:
type: string
description: 'Supplier id. The uuid of an existing record in the suppliers table.'
example: 81984a1d-ff76-35d5-88d4-2574fd087039
nullable: true
work_id:
type: string
description: 'Work id. The uuid of an existing record in the works table.'
example: 2c8c7f1a-5a90-3834-bb6f-f78e79fa712f
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: cde0bc60-a9a3-3ecf-9b01-267aa501f0a4
code: FC-92235162
type: ajuste
amount: 5362.9
description: 'Quod dolorum animi eius nulla aut laborum sed.'
transaction_date: '2006-12-06T02: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: cde0bc60-a9a3-3ecf-9b01-267aa501f0a4
code:
type: string
example: FC-92235162
type:
type: string
example: ajuste
amount:
type: number
example: 5362.9
description:
type: string
example: 'Quod dolorum animi eius nulla aut laborum sed.'
transaction_date:
type: string
example: '2006-12-06T02:00:00.000000Z'
transaction_category:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
type:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Cash Flow'
put:
summary: 'Update cash flow'
operationId: updateCashFlow
description: 'Update a cash flow'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Cash Flow'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
type:
type: string
description: Type.
example: 'Example Type'
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
- 'ajuste saída'
cash_session_id:
type: string
description: 'Cash session id. The uuid of an existing record in the cash_sessions table.'
example: 3d0af9aa-0e61-3228-9347-c08b0c277de7
transaction_category_id:
type: string
description: 'Transaction category id. The uuid of an existing record in the transaction_categories table.'
example: 71f9a8d8-1f25-391f-9829-ee4df81d5b77
bank_account_id:
type: string
description: 'Bank account id. The uuid of an existing record in the bank_accounts table.'
example: a600873f-e6af-3caa-b6ba-2e9e145eb4cc
nullable: true
customer_id:
type: string
description: 'Customer id. The uuid of an existing record in the customers table.'
example: 0a48e05d-97b6-36ea-9df3-0149610e9709
nullable: true
supplier_id:
type: string
description: 'Supplier id. The uuid of an existing record in the suppliers table.'
example: 5cd8f242-207f-3074-a3a3-2a3023d88d6b
nullable: true
work_id:
type: string
description: 'Work id. The uuid of an existing record in the works table.'
example: 75d15780-6b85-3da4-8bd3-3dfd1847aef3
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: 12
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: d660b251-2e4f-3fdc-84dc-e83089d924a2
code: null
opened_by: null
opened_at: '2010-03-01T11:17:35.000000Z'
closed_by: null
closed_at: '2025-02-15T05:39:15.000000Z'
opening_balance: 2699.37
closing_balance: 6409.54
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
created_at: '1975-07-15T10:53:14.000000Z'
updated_at: '1996-01-22T11:01:24.000000Z'
-
id: 02ffd136-f450-3434-ad0c-9fb685dadeae
code: null
opened_by: null
opened_at: '1996-04-27T01:16:09.000000Z'
closed_by: null
closed_at: '2012-09-03T05:34:06.000000Z'
opening_balance: 9118.66
closing_balance: 1052.65
total_income: 0
total_expense: 0
total_balance: 0
status: Fechado
created_at: '2015-05-11T23:52:34.000000Z'
updated_at: '2017-08-20T11:28:36.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: d660b251-2e4f-3fdc-84dc-e83089d924a2
code: null
opened_by: null
opened_at: '2010-03-01T11:17:35.000000Z'
closed_by: null
closed_at: '2025-02-15T05:39:15.000000Z'
opening_balance: 2699.37
closing_balance: 6409.54
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
created_at: '1975-07-15T10:53:14.000000Z'
updated_at: '1996-01-22T11:01:24.000000Z'
-
id: 02ffd136-f450-3434-ad0c-9fb685dadeae
code: null
opened_by: null
opened_at: '1996-04-27T01:16:09.000000Z'
closed_by: null
closed_at: '2012-09-03T05:34:06.000000Z'
opening_balance: 9118.66
closing_balance: 1052.65
total_income: 0
total_expense: 0
total_balance: 0
status: Fechado
created_at: '2015-05-11T23:52:34.000000Z'
updated_at: '2017-08-20T11:28:36.000000Z'
items:
type: object
properties:
id:
type: string
example: d660b251-2e4f-3fdc-84dc-e83089d924a2
code:
type: string
example: null
nullable: true
opened_by:
type: string
example: null
nullable: true
opened_at:
type: string
example: '2010-03-01T11:17:35.000000Z'
closed_by:
type: string
example: null
nullable: true
closed_at:
type: string
example: '2025-02-15T05:39:15.000000Z'
opening_balance:
type: number
example: 2699.37
closing_balance:
type: number
example: 6409.54
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: '1975-07-15T10:53:14.000000Z'
updated_at:
type: string
example: '1996-01-22T11:01:24.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: 9bf4d492-3866-3b65-bdfe-9921e0be5008
code: null
opened_by: null
opened_at: '2015-10-28T21:24:49.000000Z'
closed_by: null
closed_at: '1982-05-26T16:59:35.000000Z'
opening_balance: 3655.8
closing_balance: 238.42
total_income: 0
total_expense: 0
total_balance: 0
status: Aberto
created_at: '1985-12-25T13:04:27.000000Z'
updated_at: '2002-04-20T00:58:23.000000Z'
properties:
data:
type: object
properties:
id:
type: string
example: 9bf4d492-3866-3b65-bdfe-9921e0be5008
code:
type: string
example: null
nullable: true
opened_by:
type: string
example: null
nullable: true
opened_at:
type: string
example: '2015-10-28T21:24:49.000000Z'
closed_by:
type: string
example: null
nullable: true
closed_at:
type: string
example: '1982-05-26T16:59:35.000000Z'
opening_balance:
type: number
example: 3655.8
closing_balance:
type: number
example: 238.42
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: '1985-12-25T13:04:27.000000Z'
updated_at:
type: string
example: '2002-04-20T00:58:23.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: fb04aaf5-f57f-38c3-844f-5040fb060a5f
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: 39351998-a851-361a-b037-5ca6f535e586
code: null
opened_by: null
opened_at: '2022-02-26T18:50:04.000000Z'
closed_by: null
closed_at: '1976-11-30T01:56:50.000000Z'
opening_balance: 7148.24
closing_balance: 4955.16
total_income: 0
total_expense: 0
total_balance: 0
status: Fechado
created_at: '1980-04-22T06:04:55.000000Z'
updated_at: '2009-06-15T11:59:32.000000Z'
properties:
data:
type: object
properties:
id:
type: string
example: 39351998-a851-361a-b037-5ca6f535e586
code:
type: string
example: null
nullable: true
opened_by:
type: string
example: null
nullable: true
opened_at:
type: string
example: '2022-02-26T18:50:04.000000Z'
closed_by:
type: string
example: null
nullable: true
closed_at:
type: string
example: '1976-11-30T01:56:50.000000Z'
opening_balance:
type: number
example: 7148.24
closing_balance:
type: number
example: 4955.16
total_income:
type: integer
example: 0
total_expense:
type: integer
example: 0
total_balance:
type: integer
example: 0
status:
type: string
example: Fechado
created_at:
type: string
example: '1980-04-22T06:04:55.000000Z'
updated_at:
type: string
example: '2009-06-15T11:59:32.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: 317df7e8-b3fd-320a-9e52-520e427ac96b
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: 32f0f3c1-fd25-3b8f-90ea-8414a994fc73
name: 'Dr. Matheus Carrara Pacheco'
email: delvalle.ana@example.net
phone: '(94) 91958-2490'
document: 165.966.926-04
type: pf
responsible: 'Emiliano Estrada Mendes 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: 6d5db268-e995-3dc0-8fc5-ba46058dbf32
name: 'Ivana Gabi Serna Sobrinho'
email: ohana.mendonca@example.com
phone: '(92) 2509-0623'
document: 960.406.287-58
type: pj
responsible: 'Sra. Talita Flor Lira'
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: 32f0f3c1-fd25-3b8f-90ea-8414a994fc73
name: 'Dr. Matheus Carrara Pacheco'
email: delvalle.ana@example.net
phone: '(94) 91958-2490'
document: 165.966.926-04
type: pf
responsible: 'Emiliano Estrada Mendes 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: 6d5db268-e995-3dc0-8fc5-ba46058dbf32
name: 'Ivana Gabi Serna Sobrinho'
email: ohana.mendonca@example.com
phone: '(92) 2509-0623'
document: 960.406.287-58
type: pj
responsible: 'Sra. Talita Flor Lira'
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: 32f0f3c1-fd25-3b8f-90ea-8414a994fc73
name:
type: string
example: 'Dr. Matheus Carrara Pacheco'
email:
type: string
example: delvalle.ana@example.net
phone:
type: string
example: '(94) 91958-2490'
document:
type: string
example: 165.966.926-04
type:
type: string
example: pf
responsible:
type: string
example: 'Emiliano Estrada Mendes 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: 8f4afd11-8263-3fe5-9a85-a27bedafa10b
name: 'Isaac Pereira Neto'
email: paola81@example.com
phone: '(12) 97929-0145'
document: 563.398.617-25
type: pf
responsible: 'Mônica Maia Neves'
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: 8f4afd11-8263-3fe5-9a85-a27bedafa10b
name:
type: string
example: 'Isaac Pereira Neto'
email:
type: string
example: paola81@example.com
phone:
type: string
example: '(12) 97929-0145'
document:
type: string
example: 563.398.617-25
type:
type: string
example: pf
responsible:
type: string
example: 'Mônica Maia Neves'
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: 98c6068f-e186-34e1-83d9-00e49b011e42
name: 'Marília Renata Serra Filho'
description: 'Totam quos debitis repudiandae laudantium officiis consectetur. Exercitationem possimus corporis ipsa est.'
module: document
-
id: 3ce3108b-6574-3ecd-ac42-cfe611fa7475
name: 'Dr. Vicente Santiago Santacruz Sobrinho'
description: 'Omnis quia et voluptas molestiae. Ducimus et deleniti ad eos maxime. Sint eaque in voluptas possimus.'
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: 98c6068f-e186-34e1-83d9-00e49b011e42
name: 'Marília Renata Serra Filho'
description: 'Totam quos debitis repudiandae laudantium officiis consectetur. Exercitationem possimus corporis ipsa est.'
module: document
-
id: 3ce3108b-6574-3ecd-ac42-cfe611fa7475
name: 'Dr. Vicente Santiago Santacruz Sobrinho'
description: 'Omnis quia et voluptas molestiae. Ducimus et deleniti ad eos maxime. Sint eaque in voluptas possimus.'
module: document
items:
type: object
properties:
id:
type: string
example: 98c6068f-e186-34e1-83d9-00e49b011e42
name:
type: string
example: 'Marília Renata Serra Filho'
description:
type: string
example: 'Totam quos debitis repudiandae laudantium officiis consectetur. Exercitationem possimus corporis ipsa est.'
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: 248ac93c-2716-3381-a3e9-c12e327df1a9
name: 'Dr. Lucas Pontes Guerra'
description: 'Ut et et necessitatibus et. Quia repudiandae architecto voluptate qui sint consectetur voluptates.'
module: document
properties:
data:
type: object
properties:
id:
type: string
example: 248ac93c-2716-3381-a3e9-c12e327df1a9
name:
type: string
example: 'Dr. Lucas Pontes Guerra'
description:
type: string
example: 'Ut et et necessitatibus et. Quia repudiandae architecto voluptate qui sint consectetur voluptates.'
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: sed
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:
- dolor
required: false
schema:
type: array
description: 'The uuid of an existing record in the document_categories table.'
example:
- dolor
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: cum
required: false
schema:
type: string
description: 'Type of the related documentable entity. The type of an existing record in the documentables table.'
example: cum
nullable: true
-
in: query
name: customers
description: 'The uuid of an existing record in the customers table.'
example:
- fugiat
required: false
schema:
type: array
description: 'The uuid of an existing record in the customers table.'
example:
- fugiat
items:
type: string
-
in: query
name: suppliers
description: 'The uuid of an existing record in the suppliers table.'
example:
- odio
required: false
schema:
type: array
description: 'The uuid of an existing record in the suppliers table.'
example:
- odio
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 38e3d331-5f07-327d-991d-86b819593743
name: 'Dirce Estrada Neto'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
-
id: 78ab50c7-6e97-3cb3-8a7f-0fa99f230fe1
name: 'Arthur 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: 38e3d331-5f07-327d-991d-86b819593743
name: 'Dirce Estrada Neto'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
-
id: 78ab50c7-6e97-3cb3-8a7f-0fa99f230fe1
name: 'Arthur Rico Neto'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 38e3d331-5f07-327d-991d-86b819593743
name:
type: string
example: 'Dirce Estrada Neto'
file:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
extension:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
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: 4f35e65c-7e6d-31e7-879d-fcbc584b124c
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: 4c394963-5b66-3a32-9dfb-3db74177ac6f
name: 'Lara Delvalle Padilha Neto'
file:
id: null
url: null
extension: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 4c394963-5b66-3a32-9dfb-3db74177ac6f
name:
type: string
example: 'Lara Delvalle Padilha Neto'
file:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
extension:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- Documents
put:
summary: 'Update document'
operationId: updateDocument
description: 'Update a document'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- Documents
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Nome.
example: 'Example Name'
category_id:
type: string
description: 'Categoria. The uuid of an existing record in the document_categories table.'
example: 78a9a1ba-3ba6-3026-8c64-10e9d5ad9290
file:
type: object
description: Arquivo.
example:
- example1
- example2
properties:
path:
type: string
description: 'Caminho do arquivo. This field is required when file is present.'
example: 'Example File path'
name:
type: string
description: 'Nome do arquivo.'
example: 'Example Name'
extension:
type: string
description: 'Extensão do arquivo.'
example: 'Example File extension'
size:
type: string
description: 'Tamanho do arquivo.'
example: 'Example File size'
documentable_type:
type: string
description: 'Documentable type.'
example: 'Example Documentable type'
enum:
- customer
- work
- work_location
- supplier
- employee
documentable_id:
type: string
description: 'Documentable id.'
example: 'Example Documentable id'
parameters:
-
in: path
name: id
description: 'The ID of the document.'
example: 17
required: true
schema:
type: integer
-
in: path
name: document
description: 'Document ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/documents/{document}':
delete:
summary: 'Delete document'
operationId: deleteDocument
description: 'Delete a document'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Documents
parameters:
-
in: path
name: document
description: 'Document ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
/api/employee-roles:
get:
summary: 'List employee roles'
operationId: listEmployeeRoles
description: 'List all employee roles'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search query.'
example: Manager
required: false
schema:
type: string
description: 'Search query.'
example: Manager
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: fb87afbb-6a34-4d28-a65c-fa1286e43efb
name: ipsam
description: null
created_at: null
updated_at: null
-
id: 2ad63a06-8896-4d4b-b255-35490ae8f12d
name: labore
description: 'Vel modi ex eum sunt.'
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: fb87afbb-6a34-4d28-a65c-fa1286e43efb
name: ipsam
description: null
created_at: null
updated_at: null
-
id: 2ad63a06-8896-4d4b-b255-35490ae8f12d
name: labore
description: 'Vel modi ex eum sunt.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: fb87afbb-6a34-4d28-a65c-fa1286e43efb
name:
type: string
example: ipsam
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: 3781f5ce-2078-4798-9caf-2a987bad7a2f
name: quaerat
description: 'Velit maiores error tenetur sunt voluptas fugit.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 3781f5ce-2078-4798-9caf-2a987bad7a2f
name:
type: string
example: quaerat
description:
type: string
example: 'Velit maiores error tenetur sunt voluptas fugit.'
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: omnis
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: bea1e9d5-d23e-4ca0-b3ae-df715bba026d
name: 'Marisa Salazar Pena'
cpf: 914.556.737-59
rg: null
ctps: '179988584'
phone: null
birthdate: '1990-07-25T03:00:00.000000Z'
email: amaral.wilson@example.com
pis_pasep: '75062369264'
admission_date: '2009-10-27T02:00:00.000000Z'
daily_salary: null
monthly_salary: null
nationality: Paraguai
place_of_birth: 'São Gael 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
-
id: 31d0e49d-31d9-475d-8054-9a7c50e13c5c
name: 'Dr. Alexandre Cruz Camacho Filho'
cpf: 058.345.277-25
rg: null
ctps: '915731811'
phone: '(81) 3672-4362'
birthdate: null
email: pontes.suellen@example.net
pis_pasep: '39581143900'
admission_date: null
daily_salary: '78.10'
monthly_salary: '4447.92'
nationality: Tonga
place_of_birth: 'Santa Robson 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
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: bea1e9d5-d23e-4ca0-b3ae-df715bba026d
name: 'Marisa Salazar Pena'
cpf: 914.556.737-59
rg: null
ctps: '179988584'
phone: null
birthdate: '1990-07-25T03:00:00.000000Z'
email: amaral.wilson@example.com
pis_pasep: '75062369264'
admission_date: '2009-10-27T02:00:00.000000Z'
daily_salary: null
monthly_salary: null
nationality: Paraguai
place_of_birth: 'São Gael 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
-
id: 31d0e49d-31d9-475d-8054-9a7c50e13c5c
name: 'Dr. Alexandre Cruz Camacho Filho'
cpf: 058.345.277-25
rg: null
ctps: '915731811'
phone: '(81) 3672-4362'
birthdate: null
email: pontes.suellen@example.net
pis_pasep: '39581143900'
admission_date: null
daily_salary: '78.10'
monthly_salary: '4447.92'
nationality: Tonga
place_of_birth: 'Santa Robson 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
items:
type: object
properties:
id:
type: string
example: bea1e9d5-d23e-4ca0-b3ae-df715bba026d
name:
type: string
example: 'Marisa Salazar Pena'
cpf:
type: string
example: 914.556.737-59
rg:
type: string
example: null
nullable: true
ctps:
type: string
example: '179988584'
phone:
type: string
example: null
nullable: true
birthdate:
type: string
example: '1990-07-25T03:00:00.000000Z'
email:
type: string
example: amaral.wilson@example.com
pis_pasep:
type: string
example: '75062369264'
admission_date:
type: string
example: '2009-10-27T02:00:00.000000Z'
daily_salary:
type: string
example: null
nullable: true
monthly_salary:
type: string
example: null
nullable: true
nationality:
type: string
example: Paraguai
place_of_birth:
type: string
example: 'São Gael 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
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: d364b0f0-adc1-4e93-affb-a91e7fdc2e70
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: a36b4983-900a-4fc3-abec-f01b6d390102
name: 'Maria Delvalle'
cpf: 503.187.486-03
rg: null
ctps: null
phone: null
birthdate: '2006-04-15T03:00:00.000000Z'
email: milene.fontes@example.net
pis_pasep: null
admission_date: null
daily_salary: '215.49'
monthly_salary: null
nationality: Mônaco
place_of_birth: "Vila Santiago d'Oeste"
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: a36b4983-900a-4fc3-abec-f01b6d390102
name:
type: string
example: 'Maria Delvalle'
cpf:
type: string
example: 503.187.486-03
rg:
type: string
example: null
nullable: true
ctps:
type: string
example: null
nullable: true
phone:
type: string
example: null
nullable: true
birthdate:
type: string
example: '2006-04-15T03:00:00.000000Z'
email:
type: string
example: milene.fontes@example.net
pis_pasep:
type: string
example: null
nullable: true
admission_date:
type: string
example: null
nullable: true
daily_salary:
type: string
example: '215.49'
monthly_salary:
type: string
example: null
nullable: true
nationality:
type: string
example: Mônaco
place_of_birth:
type: string
example: "Vila Santiago d'Oeste"
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: 688144f6-2a0d-4aa5-afb7-c8f2627b940d
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: 2
required: true
schema:
type: integer
-
in: path
name: employee
description: 'Employee ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/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: adipisci
agency:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: cxclfbawmdaqdlxxu
account:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: svwgy
account_type:
type: string
description: ''
example: corrente
enum:
- corrente
- poupança
pix_key:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: etngfmj
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: 15
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: qui
agency:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: mkocptrhbprihwrqxffzc
account:
type: string
description: 'O campo value não pode ser superior a 255 caracteres.'
example: fkqh
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: vtxgbdtchkphzqvmtyftibugt
nullable: true
favorite:
type: boolean
description: ''
example: false
parameters:
-
in: path
name: employee_id
description: 'The ID of the employee.'
example: 20
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/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: 990c7356-761e-35be-900b-d85cb46e39eb
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: 39509b95-80cc-331d-a10c-bffdc75a4683
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: 11723af0-0093-36fc-a76b-44c63377987a
required: true
schema:
type: string
/api/files/generate-upload-url:
post:
summary: 'Generate upload URL'
operationId: generateUploadURL
description: 'Generate a signed URL for uploading a file'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
url: string
path: string
headers: array
properties:
url:
type: string
example: string
path:
type: string
example: string
headers:
type: string
example: array
tags:
- Files
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
path:
type: string
description: Path.
example: 'Example Path'
mimetype:
type: string
description: Mimetype.
example: 'Example Mimetype'
public:
type: boolean
description: Public.
example: true
required:
- path
- mimetype
- public
/api/files/generate-bulk-upload-url:
post:
summary: 'Generate bulk upload URL'
operationId: generateBulkUploadURL
description: 'Generate signed URLs for uploading multiple files'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: array
items:
type: object
properties:
url:
type: string
example: string
path:
type: string
example: string
headers:
type: string
example: array
example:
-
url: string
path: string
headers: array
tags:
- Files
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
files:
type: array
description: Files.
example:
- null
- null
items:
type: object
properties:
path:
type: string
description: 'Files * path.'
example: 'Example Files * path'
mimetype:
type: string
description: 'Files * mimetype.'
example: 'Example Files * mimetype'
public:
type: boolean
description: 'Files * public.'
example: true
required:
- path
- mimetype
- public
required:
- files
/api/fiscal-documents:
get:
summary: 'List fiscal documents'
operationId: listFiscalDocuments
description: 'Lista notas fiscais com filtros por busca, fornecedor, obra e período.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
-
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 15
to: 2
total: 2
properties:
data:
type: array
example:
-
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
-
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
items:
type: object
properties:
id:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: null
nullable: true
nfe_number:
type: string
example: null
nullable: true
nfe_series:
type: string
example: null
nullable: true
issue_date:
type: string
example: null
nullable: true
total_value:
type: string
example: null
nullable: true
emit:
type: object
properties:
cnpj:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
dest:
type: object
properties:
document:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
financial_status:
type: string
example: pending
products_imported_at:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
meta:
type: object
properties:
current_page:
type: integer
example: 1
from:
type: integer
example: 1
last_page:
type: integer
example: 1
links:
type: array
example:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
items:
type: object
properties:
url:
type: string
example: null
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 15
to:
type: integer
example: 2
total:
type: integer
example: 2
tags:
- 'Fiscal Documents'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
q:
type: string
description: ''
example: architecto
supplier_id:
type: string
description: 'The uuid of an existing record in the suppliers table.'
example: excepturi
work_id:
type: string
description: 'The uuid of an existing record in the works table.'
example: cupiditate
start_date:
type: string
description: 'O campo value deve ser uma data válida.'
example: '2026-06-22T14:27:25'
end_date:
type: string
description: 'O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a start_date.'
example: '2095-01-09'
per_page:
type: integer
description: 'O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 21
post:
summary: 'Create fiscal document'
operationId: createFiscalDocument
description: 'Registra uma NFe a partir do XML já enviado ao S3 e o vincula às obras informadas.'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: null
nullable: true
nfe_number:
type: string
example: null
nullable: true
nfe_series:
type: string
example: null
nullable: true
issue_date:
type: string
example: null
nullable: true
total_value:
type: string
example: null
nullable: true
emit:
type: object
properties:
cnpj:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
dest:
type: object
properties:
document:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
financial_status:
type: string
example: pending
products_imported_at:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
tags:
- 'Fiscal Documents'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
s3_file_path:
type: string
description: ''
example: voluptas
original_filename:
type: string
description: 'Must match the regex /\.xml$/i.'
example: .xml$/i
work_ids:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- ducimus
items:
type: string
required:
- s3_file_path
- original_filename
'/api/fiscal-documents/{fiscalDocument}':
get:
summary: 'Get fiscal document'
operationId: getFiscalDocument
description: 'Detalha uma nota fiscal com arquivos e obras vinculadas.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: null
nullable: true
nfe_number:
type: string
example: null
nullable: true
nfe_series:
type: string
example: null
nullable: true
issue_date:
type: string
example: null
nullable: true
total_value:
type: string
example: null
nullable: true
emit:
type: object
properties:
cnpj:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
dest:
type: object
properties:
document:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
financial_status:
type: string
example: pending
products_imported_at:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
tags:
- 'Fiscal Documents'
parameters:
-
in: path
name: fiscalDocument
description: 'UUID da nota fiscal'
example: et
required: true
schema:
type: string
'/api/fiscal-documents/{fiscalDocument}/files':
post:
summary: 'Attach file'
operationId: attachFile
description: 'Anexa um arquivo (ex.: PDF da NF) já enviado ao S3 à nota fiscal.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: null
nullable: true
nfe_number:
type: string
example: null
nullable: true
nfe_series:
type: string
example: null
nullable: true
issue_date:
type: string
example: null
nullable: true
total_value:
type: string
example: null
nullable: true
emit:
type: object
properties:
cnpj:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
dest:
type: object
properties:
document:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
financial_status:
type: string
example: pending
products_imported_at:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
tags:
- 'Fiscal Documents'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
file:
type: object
description: ''
example: []
properties:
path:
type: string
description: ''
example: rerum
name:
type: string
description: ''
example: architecto
extension:
type: string
description: ''
example: a
size:
type: string
description: ''
example: null
nullable: true
required:
- path
- name
- extension
required:
- file
parameters:
-
in: path
name: fiscalDocument
description: 'UUID da nota fiscal'
example: perferendis
required: true
schema:
type: string
'/api/fiscal-documents/{fiscalDocument}/works':
put:
summary: 'Sync works'
operationId: syncWorks
description: 'Sincroniza o vínculo documental da nota fiscal com N obras.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
nfe_access_key: null
nfe_number: null
nfe_series: null
issue_date: null
total_value: null
emit:
cnpj: null
name: null
dest:
document: null
name: null
financial_status: pending
products_imported_at: null
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
nfe_access_key:
type: string
example: null
nullable: true
nfe_number:
type: string
example: null
nullable: true
nfe_series:
type: string
example: null
nullable: true
issue_date:
type: string
example: null
nullable: true
total_value:
type: string
example: null
nullable: true
emit:
type: object
properties:
cnpj:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
dest:
type: object
properties:
document:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
financial_status:
type: string
example: pending
products_imported_at:
type: string
example: null
nullable: true
created_at:
type: string
example: null
nullable: true
tags:
- 'Fiscal Documents'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
work_ids:
type: array
description: 'The uuid of an existing record in the works table.'
example:
- quae
items:
type: string
parameters:
-
in: path
name: fiscalDocument
description: 'UUID da nota fiscal'
example: sunt
required: true
schema:
type: string
/api/imports/nfe/products:
post:
summary: 'Create NFe Import'
operationId: createNFeImport
description: 'Upload and process a Brazilian NFe (Nota Fiscal Eletrônica) XML file. The file should be uploaded to S3 first, then this endpoint processes it asynchronously.'
parameters: []
responses:
201:
description: 'Import created successfully'
content:
application/json:
schema:
type: object
example:
import_id: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
status: pending
channel: import-progress.9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
properties:
import_id:
type: string
example: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
status:
type: string
example: pending
channel:
type: string
example: import-progress.9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
404:
description: 'File not found in S3'
content:
application/json:
schema:
type: object
example:
error: 'Arquivo não encontrado no S3'
properties:
error:
type: string
example: 'Arquivo não encontrado no S3'
422:
description: 'Invalid XML or not a valid NFe'
content:
application/json:
schema:
type: object
example:
error: 'Arquivo XML inválido ou não é uma NFe'
properties:
error:
type: string
example: 'Arquivo XML inválido ou não é uma NFe'
tags:
- Import
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
s3_file_path:
type: string
description: 'Path to the NFe XML file in S3 storage'
example: imports/nfe_12345.xml
original_filename:
type: string
description: 'Original filename of the uploaded NFe'
example: nota_fiscal_001.xml
import_type:
type: string
description: 'Type of import (currently only "nfe" is supported)'
example: nfe
fiscal_document_id:
type: string
description: 'Fiscal document id. The uuid of an existing record in the fiscal_documents table.'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
nullable: true
required:
- s3_file_path
- original_filename
- import_type
/api/imports:
get:
summary: 'List Imports'
operationId: listImports
description: 'List all NFe imports with filtering and pagination options.'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of imports per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of imports per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
-
in: query
name: status
description: 'Filter imports by status (pending, processing, completed, failed).'
example: completed
required: false
schema:
type: string
description: 'Filter imports by status (pending, processing, completed, failed).'
example: completed
enum:
- pending
- processing
- completed
- failed
-
in: query
name: import_type
description: 'Filter imports by type.'
example: nfe
required: false
schema:
type: string
description: 'Filter imports by type.'
example: nfe
enum:
- initial_load
- stock_update
- nfe
responses:
200:
description: 'Imports retrieved successfully'
content:
application/json:
schema:
type: object
example:
data:
-
id: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
status: completed
import_type: nfe
original_filename: nota_fiscal_001.xml
nfe_number: '123456'
nfe_date: '2023-12-01'
total_products: 15
processed_products: 15
progress_percentage: 100.0
imported_at: '2023-12-01T10:30:00.000Z'
supplier:
name: 'Fornecedor Ltda'
document: '12345678000199'
properties:
data:
type: array
example:
-
id: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
status: completed
import_type: nfe
original_filename: nota_fiscal_001.xml
nfe_number: '123456'
nfe_date: '2023-12-01'
total_products: 15
processed_products: 15
progress_percentage: 100
imported_at: '2023-12-01T10:30:00.000Z'
supplier:
name: 'Fornecedor Ltda'
document: '12345678000199'
items:
type: object
properties:
id:
type: string
example: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
status:
type: string
example: completed
import_type:
type: string
example: nfe
original_filename:
type: string
example: nota_fiscal_001.xml
nfe_number:
type: string
example: '123456'
nfe_date:
type: string
example: '2023-12-01'
total_products:
type: integer
example: 15
processed_products:
type: integer
example: 15
progress_percentage:
type: number
example: 100.0
imported_at:
type: string
example: '2023-12-01T10:30:00.000Z'
supplier:
type: object
properties:
name:
type: string
example: 'Fornecedor Ltda'
document:
type: string
example: '12345678000199'
tags:
- Import
'/api/imports/{importId}':
get:
summary: 'Get Import Details'
operationId: getImportDetails
description: 'Retrieve detailed information about a specific NFe import, including progress and supplier data.'
parameters: []
responses:
200:
description: 'Import details retrieved successfully'
content:
application/json:
schema:
type: object
example:
import_id: 9d2f8e4a-1b3c-4d5e-6f7a-8b9c0d1e2f3a
status: completed
import_type: nfe
original_filename: nota_fiscal_001.xml
nfe_number: '123456'
nfe_date: '2023-12-01'
total_products: 15
processed_products: 10
progress_percentage: 66.67
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: tempora
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: sunt
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:
- sint
items:
type: string
required:
- mappings
parameters:
-
in: path
name: importId
description: ''
example: iusto
required: true
schema:
type: string
/api/locations/states:
get:
summary: 'List states'
operationId: listStates
description: 'List all states paginated'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: null
name: 'nihil quidem'
abbreviation: CE
-
id: null
name: 'totam id'
abbreviation: QC
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 30
to: 2
total: 2
properties:
data:
type: array
example:
-
id: null
name: 'nihil quidem'
abbreviation: CE
-
id: null
name: 'totam id'
abbreviation: QC
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: 'nihil quidem'
abbreviation:
type: string
example: CE
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
meta:
type: object
properties:
current_page:
type: integer
example: 1
from:
type: integer
example: 1
last_page:
type: integer
example: 1
links:
type: array
example:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
items:
type: object
properties:
url:
type: string
example: null
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 30
to:
type: integer
example: 2
total:
type: integer
example: 2
tags:
- Locations
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
sort_by:
type: string
description: ''
example: quibusdam
nullable: true
sort_desc:
type: boolean
description: ''
example: false
nullable: true
page:
type: integer
description: 'O campo value deve ser pelo menos 1.'
example: 73
nullable: true
per_page:
type: integer
description: 'O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 13
nullable: true
'/api/locations/states/{state}/cities':
get:
summary: 'List cities by state'
operationId: listCitiesByState
description: 'List all cities for a given state'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: null
name: Feeneyview
-
id: null
name: Parkerport
properties:
data:
type: array
example:
-
id: null
name: Feeneyview
-
id: null
name: Parkerport
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: Feeneyview
tags:
- Locations
parameters:
-
in: path
name: state
description: 'State UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
/api/notifications:
get:
summary: 'List notifications'
operationId: listNotifications
description: 'List user notifications'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
-
in: query
name: module
description: 'Filter by module name. O campo value não pode ser superior a 100 caracteres.'
example: CashFlow
required: false
schema:
type: string
description: 'Filter by module name. O campo value não pode ser superior a 100 caracteres.'
example: CashFlow
nullable: true
-
in: query
name: type
description: 'Filter by type (ex.: info, success, warning, error). O campo value não pode ser superior a 100 caracteres.'
example: success
required: false
schema:
type: string
description: 'Filter by type (ex.: info, success, warning, error). O campo value não pode ser superior a 100 caracteres.'
example: success
nullable: true
-
in: query
name: priority
description: 'Filter by priority number. O campo value deve ser pelo menos 0. O campo value não pode ser superior a 255.'
example: 10
required: false
schema:
type: integer
description: 'Filter by priority number. O campo value deve ser pelo menos 0. O campo value não pode ser superior a 255.'
example: 10
nullable: true
-
in: query
name: unread_only
description: 'Only unread notifications when true.'
example: true
required: false
schema:
type: boolean
description: 'Only unread notifications when true.'
example: true
nullable: true
-
in: query
name: read_status
description: 'Filter by read status (all, read, unread).'
example: unread
required: false
schema:
type: string
description: 'Filter by read status (all, read, unread).'
example: unread
enum:
- all
- read
- unread
nullable: true
-
in: query
name: date_start
description: 'Filter notifications created from this date (YYYY-MM-DD). O campo value deve ser uma data válida.'
example: '2024-01-01'
required: false
schema:
type: string
description: 'Filter notifications created from this date (YYYY-MM-DD). O campo value deve ser uma data válida.'
example: '2024-01-01'
nullable: true
-
in: query
name: date_end
description: 'Filter notifications created until this date (YYYY-MM-DD). O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a date_start.'
example: '2024-12-31'
required: false
schema:
type: string
description: 'Filter notifications created until this date (YYYY-MM-DD). O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a date_start.'
example: '2024-12-31'
nullable: true
-
in: query
name: q
description: 'Search by title/message. O campo value não pode ser superior a 255 caracteres.'
example: 'erro faturamento'
required: false
schema:
type: string
description: 'Search by title/message. O campo value não pode ser superior a 255 caracteres.'
example: 'erro faturamento'
nullable: true
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Notifications
/api/notifications/mark-as-read:
post:
summary: 'Mark notifications as read'
operationId: markNotificationsAsRead
description: 'Mark one or many notifications as read'
parameters: []
responses: { }
tags:
- Notifications
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
notifications:
type: array
description: 'notificação. O campo value deve ser um UUID válido.'
example:
- 'Example Notifications *'
items:
type: string
required:
- notifications
/api/notifications/mark-as-unread:
post:
summary: 'Mark notifications as unread'
operationId: markNotificationsAsUnread
description: 'Mark one or many notifications as unread'
parameters: []
responses: { }
tags:
- Notifications
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
notifications:
type: array
description: 'notificação. O campo value deve ser um UUID válido.'
example:
- 'Example Notifications *'
items:
type: string
required:
- notifications
/api/notifications/mark-all-as-read:
post:
summary: 'Mark all notifications as read'
operationId: markAllNotificationsAsRead
description: 'Mark all user notifications as read'
parameters: []
responses: { }
tags:
- Notifications
/api/notifications/unread-count:
get:
summary: 'Unread notifications count'
operationId: unreadNotificationsCount
description: 'Count of unread notifications for the user'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Notifications
/api/payment-receipts:
get:
summary: 'List payment receipts'
operationId: listPaymentReceipts
description: 'List all payment receipts with filters'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
-
in: query
name: q
description: 'Search query (searches in receiver name, document, and receipt number).'
example: 'João Silva'
required: false
schema:
type: string
description: 'Search query (searches in receiver name, document, and receipt number).'
example: 'João Silva'
nullable: true
-
in: query
name: employee_id
description: 'Filter by employee UUID. The uuid of an existing record in the employees table.'
example: a01edd80-bf3e-40f7-8613-ccb4be5831b3
required: false
schema:
type: string
description: 'Filter by employee UUID. The uuid of an existing record in the employees table.'
example: a01edd80-bf3e-40f7-8613-ccb4be5831b3
-
in: query
name: receiver_type
description: 'Filter by receiver type.'
example: employee
required: false
schema:
type: string
description: 'Filter by receiver type.'
example: employee
enum:
- employee
- custom
-
in: query
name: start_date
description: 'Filter by issue date (start). O campo value deve ser uma data válida.'
example: '2025-01-01'
required: false
schema:
type: string
description: 'Filter by issue date (start). O campo value deve ser uma data válida.'
example: '2025-01-01'
-
in: query
name: end_date
description: 'Filter by issue date (end). O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a start_date.'
example: '2025-12-31'
required: false
schema:
type: string
description: 'Filter by issue date (end). O campo value deve ser uma data válida. O campo value deve ser uma data posterior ou igual a start_date.'
example: '2025-12-31'
-
in: query
name: min_amount
description: 'Filter by minimum amount. O campo value deve ser pelo menos 0.'
example: 100.0
required: false
schema:
type: number
description: 'Filter by minimum amount. O campo value deve ser pelo menos 0.'
example: 100.0
-
in: query
name: max_amount
description: 'Filter by maximum amount. O campo value deve ser pelo menos 0.'
example: 1000.0
required: false
schema:
type: number
description: 'Filter by maximum amount. O campo value deve ser pelo menos 0.'
example: 1000.0
-
in: query
name: payment_method
description: 'Filter by payment method.'
example: PIX
required: false
schema:
type: string
description: 'Filter by payment method.'
example: PIX
-
in: query
name: city
description: 'Filter by city.'
example: 'São Paulo'
required: false
schema:
type: string
description: 'Filter by city.'
example: 'São Paulo'
-
in: query
name: search
description: ''
example: quod
required: false
schema:
type: string
description: ''
example: quod
-
in: query
name: document
description: ''
example: molestiae
required: false
schema:
type: string
description: ''
example: molestiae
-
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: 778b5591-cfca-3118-b9d9-f3fda995436c
receipt_number: REC-1156
receiver_type: employee
receiver:
id: null
name: 'Justyn Paucek'
document: 430.308.268-49
payment:
amount: 1481.5
amount_in_words: 'Valor por extenso de teste'
method: pix
description: 'In mollitia laboriosam consequatur consequatur.'
issuer:
name: 'Schowalter PLC'
document: 03.364.526/3371-69
issue:
date: '2026-06-01'
city: 'Port Tinachester'
state: SP
created_by:
id: a215e546-0453-4751-939f-05ee0842fd77
name: 'Kailey Greenfelder DVM'
created_at: null
updated_at: null
-
id: 8dd3afae-c898-3688-b460-936eb6387f29
receipt_number: REC-7348
receiver_type: employee
receiver:
id: null
name: 'Zackery Weber'
document: 732.211.592-23
payment:
amount: 4433.1
amount_in_words: 'Valor por extenso de teste'
method: cash
description: 'Aut consectetur et provident.'
issuer:
name: 'Heathcote, Mayer and Sawayn'
document: 86.878.704/6381-93
issue:
date: '2026-06-14'
city: Lazaroshire
state: GO
created_by:
id: a215e546-0f21-4e38-ad6e-6eeaa5ad2037
name: 'Anastacio Willms'
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: 778b5591-cfca-3118-b9d9-f3fda995436c
receipt_number: REC-1156
receiver_type: employee
receiver:
id: null
name: 'Justyn Paucek'
document: 430.308.268-49
payment:
amount: 1481.5
amount_in_words: 'Valor por extenso de teste'
method: pix
description: 'In mollitia laboriosam consequatur consequatur.'
issuer:
name: 'Schowalter PLC'
document: 03.364.526/3371-69
issue:
date: '2026-06-01'
city: 'Port Tinachester'
state: SP
created_by:
id: a215e546-0453-4751-939f-05ee0842fd77
name: 'Kailey Greenfelder DVM'
created_at: null
updated_at: null
-
id: 8dd3afae-c898-3688-b460-936eb6387f29
receipt_number: REC-7348
receiver_type: employee
receiver:
id: null
name: 'Zackery Weber'
document: 732.211.592-23
payment:
amount: 4433.1
amount_in_words: 'Valor por extenso de teste'
method: cash
description: 'Aut consectetur et provident.'
issuer:
name: 'Heathcote, Mayer and Sawayn'
document: 86.878.704/6381-93
issue:
date: '2026-06-14'
city: Lazaroshire
state: GO
created_by:
id: a215e546-0f21-4e38-ad6e-6eeaa5ad2037
name: 'Anastacio Willms'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 778b5591-cfca-3118-b9d9-f3fda995436c
receipt_number:
type: string
example: REC-1156
receiver_type:
type: string
example: employee
receiver:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: 'Justyn Paucek'
document:
type: string
example: 430.308.268-49
payment:
type: object
properties:
amount:
type: number
example: 1481.5
amount_in_words:
type: string
example: 'Valor por extenso de teste'
method:
type: string
example: pix
description:
type: string
example: 'In mollitia laboriosam consequatur consequatur.'
issuer:
type: object
properties:
name:
type: string
example: 'Schowalter PLC'
document:
type: string
example: 03.364.526/3371-69
issue:
type: object
properties:
date:
type: string
example: '2026-06-01'
city:
type: string
example: 'Port Tinachester'
state:
type: string
example: SP
created_by:
type: object
properties:
id:
type: string
example: a215e546-0453-4751-939f-05ee0842fd77
name:
type: string
example: 'Kailey Greenfelder DVM'
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: 2eb7b046-ac54-4320-b190-079d260f71d5
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: 09078179-cc30-3b27-9290-7c3058234bbf
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: ddf80cfe-94a3-3671-96d9-fa72b69adbf6
nullable: true
required:
- receiver_type
- amount
- payment_method
- description
- issuer_name
- issuer_document
- issue_date
- city
- state
/api/payment-receipts/cash-flow-config:
get:
summary: 'Show receipt cash flow config'
operationId: showReceiptCashFlowConfig
description: 'Lista cada forma de pagamento e se ela gera lancamento automatico no fluxo de caixa'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Payment Receipts'
put:
summary: 'Update receipt cash flow config'
operationId: updateReceiptCashFlowConfig
description: 'Define, por forma de pagamento, se o recibo gera lancamento automatico no fluxo de caixa'
parameters: []
responses: { }
tags:
- 'Payment Receipts'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
methods:
type: array
description: 'O campo value deve ter pelo menos 1 itens.'
example:
- []
items:
type: object
properties:
method:
type: string
description: ''
example: cash
enum:
- pix
- bank_transfer
- cash
- check
eligible:
type: boolean
description: ''
example: true
required:
- method
- eligible
required:
- methods
'/api/payment-receipts/{receipt}':
get:
summary: 'Show payment receipt'
operationId: showPaymentReceipt
description: 'Show a payment receipt'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 0f7042e5-3cf0-37d4-bf80-fc2c61df9212
receipt_number: REC-4615
receiver_type: custom
receiver:
id: null
name: 'Dr. Tiffany Bernhard III'
document: 466.282.750-89
payment:
amount: 6264.47
amount_in_words: 'Valor por extenso de teste'
method: check
description: 'Quia nihil iusto eum commodi.'
issuer:
name: 'Mann LLC'
document: 30.595.974/4496-21
issue:
date: '2026-06-07'
city: Idellaberg
state: RJ
created_by:
id: a215e546-358e-4603-8cb0-7c6abf64c8d3
name: 'Presley Klocko'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 0f7042e5-3cf0-37d4-bf80-fc2c61df9212
receipt_number:
type: string
example: REC-4615
receiver_type:
type: string
example: custom
receiver:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: 'Dr. Tiffany Bernhard III'
document:
type: string
example: 466.282.750-89
payment:
type: object
properties:
amount:
type: number
example: 6264.47
amount_in_words:
type: string
example: 'Valor por extenso de teste'
method:
type: string
example: check
description:
type: string
example: 'Quia nihil iusto eum commodi.'
issuer:
type: object
properties:
name:
type: string
example: 'Mann LLC'
document:
type: string
example: 30.595.974/4496-21
issue:
type: object
properties:
date:
type: string
example: '2026-06-07'
city:
type: string
example: Idellaberg
state:
type: string
example: RJ
created_by:
type: object
properties:
id:
type: string
example: a215e546-358e-4603-8cb0-7c6abf64c8d3
name:
type: string
example: 'Presley Klocko'
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: a1e03feb-9365-4040-b669-fe915b824956
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: 131c875d-0454-31a6-9851-c4f22f70c4db
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: 20cd0b19-a268-3237-9068-cacd643b423c
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: 19f9e8dc-fefb-35d4-98a5-0b60589e9c65
receipt_number: REC-1955
receiver_type: custom
receiver:
id: null
name: 'Braxton Hoeger'
document: 876.148.615-64
payment:
amount: 3574.18
amount_in_words: 'Valor por extenso de teste'
method: bank_transfer
description: 'Eum exercitationem placeat exercitationem qui et quas.'
issuer:
name: Runolfsson-Ruecker
document: 75.089.833/5608-08
issue:
date: '2026-05-24'
city: Myriamborough
state: SP
created_by:
id: a215e546-7600-4693-95b2-1a1dba218390
name: 'Hershel Ernser'
created_at: null
updated_at: null
-
id: 3976eb5f-0728-3ed9-8a2d-01f13e2ede2a
receipt_number: REC-3775
receiver_type: custom
receiver:
id: null
name: 'Dr. Dock Beer'
document: 879.114.413-69
payment:
amount: 7987.06
amount_in_words: 'Valor por extenso de teste'
method: cash
description: 'Enim rerum temporibus repellendus explicabo nihil aliquid.'
issuer:
name: Nikolaus-Schumm
document: 28.115.156/7239-57
issue:
date: '2026-06-13'
city: 'North Lysannetown'
state: GO
created_by:
id: a215e546-7bca-45f5-b94b-605baa578103
name: 'Ms. Vada Herzog'
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: 19f9e8dc-fefb-35d4-98a5-0b60589e9c65
receipt_number: REC-1955
receiver_type: custom
receiver:
id: null
name: 'Braxton Hoeger'
document: 876.148.615-64
payment:
amount: 3574.18
amount_in_words: 'Valor por extenso de teste'
method: bank_transfer
description: 'Eum exercitationem placeat exercitationem qui et quas.'
issuer:
name: Runolfsson-Ruecker
document: 75.089.833/5608-08
issue:
date: '2026-05-24'
city: Myriamborough
state: SP
created_by:
id: a215e546-7600-4693-95b2-1a1dba218390
name: 'Hershel Ernser'
created_at: null
updated_at: null
-
id: 3976eb5f-0728-3ed9-8a2d-01f13e2ede2a
receipt_number: REC-3775
receiver_type: custom
receiver:
id: null
name: 'Dr. Dock Beer'
document: 879.114.413-69
payment:
amount: 7987.06
amount_in_words: 'Valor por extenso de teste'
method: cash
description: 'Enim rerum temporibus repellendus explicabo nihil aliquid.'
issuer:
name: Nikolaus-Schumm
document: 28.115.156/7239-57
issue:
date: '2026-06-13'
city: 'North Lysannetown'
state: GO
created_by:
id: a215e546-7bca-45f5-b94b-605baa578103
name: 'Ms. Vada Herzog'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 19f9e8dc-fefb-35d4-98a5-0b60589e9c65
receipt_number:
type: string
example: REC-1955
receiver_type:
type: string
example: custom
receiver:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: 'Braxton Hoeger'
document:
type: string
example: 876.148.615-64
payment:
type: object
properties:
amount:
type: number
example: 3574.18
amount_in_words:
type: string
example: 'Valor por extenso de teste'
method:
type: string
example: bank_transfer
description:
type: string
example: 'Eum exercitationem placeat exercitationem qui et quas.'
issuer:
type: object
properties:
name:
type: string
example: Runolfsson-Ruecker
document:
type: string
example: 75.089.833/5608-08
issue:
type: object
properties:
date:
type: string
example: '2026-05-24'
city:
type: string
example: Myriamborough
state:
type: string
example: SP
created_by:
type: object
properties:
id:
type: string
example: a215e546-7600-4693-95b2-1a1dba218390
name:
type: string
example: 'Hershel Ernser'
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: 9
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: 0d6d1d01-ba17-3ffc-99fb-e35045806490
name: alias-ut-suscipit
display_name: 'animi sed praesentium'
created_at: null
updated_at: null
-
id: 8a66b3cc-eb48-38b8-bb5c-68a8a6ecde6c
name: voluptatibus-repellat-harum
display_name: 'aut similique optio'
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: 0d6d1d01-ba17-3ffc-99fb-e35045806490
name: alias-ut-suscipit
display_name: 'animi sed praesentium'
created_at: null
updated_at: null
-
id: 8a66b3cc-eb48-38b8-bb5c-68a8a6ecde6c
name: voluptatibus-repellat-harum
display_name: 'aut similique optio'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 0d6d1d01-ba17-3ffc-99fb-e35045806490
name:
type: string
example: alias-ut-suscipit
display_name:
type: string
example: 'animi sed praesentium'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
meta:
type: object
properties:
current_page:
type: integer
example: 1
from:
type: integer
example: 1
last_page:
type: integer
example: 1
links:
type: array
example:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
items:
type: object
properties:
url:
type: string
example: null
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 10
to:
type: integer
example: 2
total:
type: integer
example: 2
tags:
- '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: 0b61a178-54ff-3a44-8efe-7209be42e778
name: omnis-sequi
display_name: 'quisquam ea magnam'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 0b61a178-54ff-3a44-8efe-7209be42e778
name:
type: string
example: omnis-sequi
display_name:
type: string
example: 'quisquam ea magnam'
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: 320c1d12-73b3-3b8a-9aad-3d8d9f6e59e9
name: 'Sr. Lucio Batista Lutero'
created_at: null
updated_at: null
-
id: 3462d027-4563-308f-9bc1-230804fa921e
name: 'Camilo Rocha Vasques Filho'
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: 320c1d12-73b3-3b8a-9aad-3d8d9f6e59e9
name: 'Sr. Lucio Batista Lutero'
created_at: null
updated_at: null
-
id: 3462d027-4563-308f-9bc1-230804fa921e
name: 'Camilo Rocha Vasques Filho'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 320c1d12-73b3-3b8a-9aad-3d8d9f6e59e9
name:
type: string
example: 'Sr. Lucio Batista Lutero'
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: f38c8216-af05-37d3-97d8-1be13d66b6e1
name: 'Joaquin Pacheco Jr.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: f38c8216-af05-37d3-97d8-1be13d66b6e1
name:
type: string
example: 'Joaquin Pacheco Jr.'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- 'Product Brands'
put:
summary: 'Update product brand'
operationId: updateProductBrand
description: 'Update a product brand'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Product Brands'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Nome.
example: 'Example Name'
required:
- name
delete:
summary: 'Delete product brand'
operationId: deleteProductBrand
description: 'Delete a product brand'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'Product Brands'
parameters:
-
in: path
name: productBrand
description: 'Product brand UUID'
example: dolorem
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: 44e8872a-0a96-3114-ae85-d36d61a8deb9
name: 'Adriel Abreu Neto'
created_at: null
updated_at: null
-
id: 462049f1-c48e-30af-96f3-b7508283396a
name: 'Lara Mayara Guerra'
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: 44e8872a-0a96-3114-ae85-d36d61a8deb9
name: 'Adriel Abreu Neto'
created_at: null
updated_at: null
-
id: 462049f1-c48e-30af-96f3-b7508283396a
name: 'Lara Mayara Guerra'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 44e8872a-0a96-3114-ae85-d36d61a8deb9
name:
type: string
example: 'Adriel Abreu Neto'
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
meta:
type: object
properties:
current_page:
type: integer
example: 1
from:
type: integer
example: 1
last_page:
type: integer
example: 1
links:
type: array
example:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
items:
type: object
properties:
url:
type: string
example: null
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 10
to:
type: integer
example: 2
total:
type: integer
example: 2
tags:
- 'Product 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: 682a2061-2e3c-3c4e-8b05-af9fa6dcfff0
name: 'Srta. Luiza Garcia Mendonça Filho'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 682a2061-2e3c-3c4e-8b05-af9fa6dcfff0
name:
type: string
example: 'Srta. Luiza Garcia Mendonça Filho'
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: quis
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: f521e070-c6ac-37bf-8b70-bf570c9d173a
name: 'Perferendis occaecati sit.'
description: 'Occaecati ut aut eum et a et id. Accusantium odio quae doloremque quisquam voluptas quas quod. Ut eos aut omnis molestiae maxime ut qui porro.'
work:
id: a215e547-9403-4cbf-b443-d1355f2af760
name: 'Dr. Gean Jorge das Neves'
user:
id: a215e547-a097-4f44-b4c4-e3466daea06d
name: 'Gideon Wisozk'
created_at: null
updated_at: null
-
id: 94aed025-24b6-38b9-a479-e03641808bf5
name: 'Voluptatem ut ducimus.'
description: null
work:
id: a215e547-ac24-42db-a5a7-07b25e3b0844
name: 'Dr. Wellington Adriano Maia'
user:
id: a215e547-b2b6-4316-9cc2-8f51a998626f
name: 'Maurine Runolfsson'
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: f521e070-c6ac-37bf-8b70-bf570c9d173a
name: 'Perferendis occaecati sit.'
description: 'Occaecati ut aut eum et a et id. Accusantium odio quae doloremque quisquam voluptas quas quod. Ut eos aut omnis molestiae maxime ut qui porro.'
work:
id: a215e547-9403-4cbf-b443-d1355f2af760
name: 'Dr. Gean Jorge das Neves'
user:
id: a215e547-a097-4f44-b4c4-e3466daea06d
name: 'Gideon Wisozk'
created_at: null
updated_at: null
-
id: 94aed025-24b6-38b9-a479-e03641808bf5
name: 'Voluptatem ut ducimus.'
description: null
work:
id: a215e547-ac24-42db-a5a7-07b25e3b0844
name: 'Dr. Wellington Adriano Maia'
user:
id: a215e547-b2b6-4316-9cc2-8f51a998626f
name: 'Maurine Runolfsson'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: f521e070-c6ac-37bf-8b70-bf570c9d173a
name:
type: string
example: 'Perferendis occaecati sit.'
description:
type: string
example: 'Occaecati ut aut eum et a et id. Accusantium odio quae doloremque quisquam voluptas quas quod. Ut eos aut omnis molestiae maxime ut qui porro.'
work:
type: object
properties:
id:
type: string
example: a215e547-9403-4cbf-b443-d1355f2af760
name:
type: string
example: 'Dr. Gean Jorge das Neves'
user:
type: object
properties:
id:
type: string
example: a215e547-a097-4f44-b4c4-e3466daea06d
name:
type: string
example: 'Gideon Wisozk'
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: 968e7865-c302-3a94-abd7-29c11f7aef08
nullable: true
user_id:
type: string
description: 'Usuário. The uuid of an existing record in the users table.'
example: 360bc352-3679-30c6-a3cc-c64a78c61c5a
nullable: true
responsible_id:
type: string
description: 'Responsável. The uuid of an existing record in the users table.'
example: 9e7ec0fe-c0a5-3090-b927-8e9b84f1e566
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: 66ede55b-68f3-3ce2-b9e9-e338d4230f6d
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: 448dc74b-429f-374a-98c9-85169e1d168e
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: b0216801-ac2e-3973-a8f2-5effd7d2ac41
name: 'Accusamus et et quis.'
description: 'Et reiciendis quo ipsum sunt facere nobis provident. Deleniti modi quia eum quo sed dolore quia. Temporibus nemo culpa saepe eum dolores. Omnis perferendis sapiente sed eaque.'
work:
id: a215e547-c4af-47b7-a98d-0814fca3c218
name: 'Erik Dias Urias'
user:
id: a215e547-c954-4285-b3b3-34288510c13a
name: 'Modesta Trantow'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: b0216801-ac2e-3973-a8f2-5effd7d2ac41
name:
type: string
example: 'Accusamus et et quis.'
description:
type: string
example: 'Et reiciendis quo ipsum sunt facere nobis provident. Deleniti modi quia eum quo sed dolore quia. Temporibus nemo culpa saepe eum dolores. Omnis perferendis sapiente sed eaque.'
work:
type: object
properties:
id:
type: string
example: a215e547-c4af-47b7-a98d-0814fca3c218
name:
type: string
example: 'Erik Dias Urias'
user:
type: object
properties:
id:
type: string
example: a215e547-c954-4285-b3b3-34288510c13a
name:
type: string
example: 'Modesta Trantow'
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: 13688684-c36a-3e21-a9da-031d0e63b5e0
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 9f61b1cb-e6d8-3073-ae5d-b8c22ddda1d4
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: iste
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: 8027613e-284f-344d-8484-ea63a275abc6
product:
id: a215e547-faf2-4438-9f49-aa77f2267f8b
name: 'Sr. Diogo Espinoza Martines'
code: PRD-307822
unit:
id: a215e547-f52e-4258-aa07-f2585fc718c1
name: 'Dr. Marisa de Souza Lourenço Sobrinho'
abbreviation: 'Simon Salgado Rosa'
quantity: 585.3173
observation: 'Non molestias vel voluptate qui.'
created_at: null
updated_at: null
-
id: 6151593a-b699-3225-9ca8-154f3fe897df
product:
id: a215e548-216f-47ff-a19a-0c15e6863513
name: 'Srta. Carol Paulina Solano Sobrinho'
code: PRD-897386
unit:
id: a215e548-1b51-47f2-b212-248482e5882d
name: 'Maitê Padilha Garcia Neto'
abbreviation: 'Dr. Fernando Gil Cordeiro Sobrinho'
quantity: 630.3032
observation: 'Eaque iste rerum eveniet voluptatum.'
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: 8027613e-284f-344d-8484-ea63a275abc6
product:
id: a215e547-faf2-4438-9f49-aa77f2267f8b
name: 'Sr. Diogo Espinoza Martines'
code: PRD-307822
unit:
id: a215e547-f52e-4258-aa07-f2585fc718c1
name: 'Dr. Marisa de Souza Lourenço Sobrinho'
abbreviation: 'Simon Salgado Rosa'
quantity: 585.3173
observation: 'Non molestias vel voluptate qui.'
created_at: null
updated_at: null
-
id: 6151593a-b699-3225-9ca8-154f3fe897df
product:
id: a215e548-216f-47ff-a19a-0c15e6863513
name: 'Srta. Carol Paulina Solano Sobrinho'
code: PRD-897386
unit:
id: a215e548-1b51-47f2-b212-248482e5882d
name: 'Maitê Padilha Garcia Neto'
abbreviation: 'Dr. Fernando Gil Cordeiro Sobrinho'
quantity: 630.3032
observation: 'Eaque iste rerum eveniet voluptatum.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 8027613e-284f-344d-8484-ea63a275abc6
product:
type: object
properties:
id:
type: string
example: a215e547-faf2-4438-9f49-aa77f2267f8b
name:
type: string
example: 'Sr. Diogo Espinoza Martines'
code:
type: string
example: PRD-307822
unit:
type: object
properties:
id:
type: string
example: a215e547-f52e-4258-aa07-f2585fc718c1
name:
type: string
example: 'Dr. Marisa de Souza Lourenço Sobrinho'
abbreviation:
type: string
example: 'Simon Salgado Rosa'
quantity:
type: number
example: 585.3173
observation:
type: string
example: 'Non molestias vel voluptate qui.'
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: 3a0e90f3-4c7f-3f03-9c00-7bfb72cd2b96
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:
- 1e62964a-fcd7-3ec0-8f37-26f32c6593be
items:
type: string
required:
- items
parameters:
-
in: path
name: productQuantityList
description: 'Product Quantity List UUID'
example: in
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: et
required: true
schema:
type: string
-
in: path
name: item
description: 'Product Quantity List Item UUID'
example: qui
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: 1c7e090e-892e-3c59-a938-f35e58a10d6c
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: bb5f67df-30d4-3093-aac0-631e893d6853
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: aliquid
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: 614aff45-52b0-3d9f-9e10-e7dbc33a971c
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: 401a2ff1-0f50-3e46-9221-66a2bd106bf4
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: bc4de31d-fcc0-366c-bf78-05cb790eb73c
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: rerum
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: 83e608c5-5cc2-3807-bb2d-046dc567b3c6
quantity: 80.4271
fulfilled_at: '2026-06-06T04:51:46.000000Z'
created_at: null
-
id: e9e49f87-17b3-3768-9651-5e4d17cc28af
quantity: 29.4291
fulfilled_at: '2026-05-24T05:33:48.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: 83e608c5-5cc2-3807-bb2d-046dc567b3c6
quantity: 80.4271
fulfilled_at: '2026-06-06T04:51:46.000000Z'
created_at: null
-
id: e9e49f87-17b3-3768-9651-5e4d17cc28af
quantity: 29.4291
fulfilled_at: '2026-05-24T05:33:48.000000Z'
created_at: null
items:
type: object
properties:
id:
type: string
example: 83e608c5-5cc2-3807-bb2d-046dc567b3c6
quantity:
type: number
example: 80.4271
fulfilled_at:
type: string
example: '2026-06-06T04:51:46.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: non
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: 4bf20e55-fc5b-3a89-b019-885e0f30169d
product:
id: a215e54d-9f75-419b-92c3-bf6aa835eaa8
name: 'Richard Ferreira'
code: PRD-761329
unit:
id: a215e54d-9b85-4c0e-946b-a2c103c7a89c
name: 'Sr. Ícaro Alonso Batista Neto'
abbreviation: 'Elias Rivera Jr.'
quantity: 175.6329
quantity_fulfilled: 0
quantity_pending: 175.6329
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 4bf20e55-fc5b-3a89-b019-885e0f30169d
product:
type: object
properties:
id:
type: string
example: a215e54d-9f75-419b-92c3-bf6aa835eaa8
name:
type: string
example: 'Richard Ferreira'
code:
type: string
example: PRD-761329
unit:
type: object
properties:
id:
type: string
example: a215e54d-9b85-4c0e-946b-a2c103c7a89c
name:
type: string
example: 'Sr. Ícaro Alonso Batista Neto'
abbreviation:
type: string
example: 'Elias Rivera Jr.'
quantity:
type: number
example: 175.6329
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 175.6329
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'
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: 063a75a9-665f-36b3-95e9-5b5b2c87ba1e
nullable: true
parameters:
-
in: path
name: id
description: 'The ID of the item.'
example: aut
required: true
schema:
type: string
-
in: path
name: item
description: 'Product Request Item UUID'
example: esse
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: c60ad9c3-d6e0-36ce-8d9b-f983ebc7a434
product:
id: a215e54d-d60b-498b-945f-291e1dde63fa
name: 'Srta. Ornela Ferreira Lourenço'
code: PRD-590904
unit:
id: a215e54d-d302-49cf-bb71-5f7db3539d5a
name: 'Sr. Maurício Rezende Jr.'
abbreviation: 'Ronaldo Marin Ortiz'
quantity: 293.3871
quantity_fulfilled: 0
quantity_pending: 293.3871
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Nostrum consectetur vel ad illum recusandae asperiores quibusdam.'
created_at: null
updated_at: null
-
id: e8baa106-9cb4-33a2-b4d4-ca4b71a43c73
product:
id: a215e54e-0f40-4f5d-aaad-6b798accba33
name: 'Laura Rico Neto'
code: PRD-278585
unit:
id: a215e54e-0c2e-4cec-bc5e-78726053b163
name: 'Srta. Luiza Jaqueline Marinho Filho'
abbreviation: 'Wilson Sergio Dominato'
quantity: 636.3912
quantity_fulfilled: 0
quantity_pending: 636.3912
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Rerum deleniti sunt aliquam similique earum quibusdam rerum.'
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: c60ad9c3-d6e0-36ce-8d9b-f983ebc7a434
product:
id: a215e54d-d60b-498b-945f-291e1dde63fa
name: 'Srta. Ornela Ferreira Lourenço'
code: PRD-590904
unit:
id: a215e54d-d302-49cf-bb71-5f7db3539d5a
name: 'Sr. Maurício Rezende Jr.'
abbreviation: 'Ronaldo Marin Ortiz'
quantity: 293.3871
quantity_fulfilled: 0
quantity_pending: 293.3871
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Nostrum consectetur vel ad illum recusandae asperiores quibusdam.'
created_at: null
updated_at: null
-
id: e8baa106-9cb4-33a2-b4d4-ca4b71a43c73
product:
id: a215e54e-0f40-4f5d-aaad-6b798accba33
name: 'Laura Rico Neto'
code: PRD-278585
unit:
id: a215e54e-0c2e-4cec-bc5e-78726053b163
name: 'Srta. Luiza Jaqueline Marinho Filho'
abbreviation: 'Wilson Sergio Dominato'
quantity: 636.3912
quantity_fulfilled: 0
quantity_pending: 636.3912
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Rerum deleniti sunt aliquam similique earum quibusdam rerum.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: c60ad9c3-d6e0-36ce-8d9b-f983ebc7a434
product:
type: object
properties:
id:
type: string
example: a215e54d-d60b-498b-945f-291e1dde63fa
name:
type: string
example: 'Srta. Ornela Ferreira Lourenço'
code:
type: string
example: PRD-590904
unit:
type: object
properties:
id:
type: string
example: a215e54d-d302-49cf-bb71-5f7db3539d5a
name:
type: string
example: 'Sr. Maurício Rezende Jr.'
abbreviation:
type: string
example: 'Ronaldo Marin Ortiz'
quantity:
type: number
example: 293.3871
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 293.3871
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
type: string
example: 'Nostrum consectetur vel ad illum recusandae asperiores quibusdam.'
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: quia
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: cab16c40-6495-3bf4-aa5e-428f42efd625
product:
id: a215e54e-4223-42cf-86f4-3701eb7239a4
name: 'Louise Ferreira Jr.'
code: PRD-519763
unit:
id: a215e54e-3f81-4263-ab45-6c690081b3cb
name: 'Dr. Fabiano Leal Estrada Neto'
abbreviation: 'Dr. Wagner Ortega Filho'
quantity: 942.8721
quantity_fulfilled: 0
quantity_pending: 942.8721
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: f3becb74-944c-3c80-b0f9-fd8a88abcb43
product:
id: a215e54e-70fc-4dac-8951-29a0d615e599
name: 'Dr. Dener Natan de Freitas Sobrinho'
code: PRD-261673
unit:
id: a215e54e-6ccc-4968-9056-1ccb93fb4c3c
name: 'Srta. Raquel Luna Faria Neto'
abbreviation: 'Leandro Guilherme Leon Sobrinho'
quantity: 804.1848
quantity_fulfilled: 0
quantity_pending: 804.1848
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Sequi voluptas rem non nemo sed veniam sunt.'
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: cab16c40-6495-3bf4-aa5e-428f42efd625
product:
id: a215e54e-4223-42cf-86f4-3701eb7239a4
name: 'Louise Ferreira Jr.'
code: PRD-519763
unit:
id: a215e54e-3f81-4263-ab45-6c690081b3cb
name: 'Dr. Fabiano Leal Estrada Neto'
abbreviation: 'Dr. Wagner Ortega Filho'
quantity: 942.8721
quantity_fulfilled: 0
quantity_pending: 942.8721
is_fulfilled: false
is_partially_fulfilled: false
observation: null
created_at: null
updated_at: null
-
id: f3becb74-944c-3c80-b0f9-fd8a88abcb43
product:
id: a215e54e-70fc-4dac-8951-29a0d615e599
name: 'Dr. Dener Natan de Freitas Sobrinho'
code: PRD-261673
unit:
id: a215e54e-6ccc-4968-9056-1ccb93fb4c3c
name: 'Srta. Raquel Luna Faria Neto'
abbreviation: 'Leandro Guilherme Leon Sobrinho'
quantity: 804.1848
quantity_fulfilled: 0
quantity_pending: 804.1848
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Sequi voluptas rem non nemo sed veniam sunt.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: cab16c40-6495-3bf4-aa5e-428f42efd625
product:
type: object
properties:
id:
type: string
example: a215e54e-4223-42cf-86f4-3701eb7239a4
name:
type: string
example: 'Louise Ferreira Jr.'
code:
type: string
example: PRD-519763
unit:
type: object
properties:
id:
type: string
example: a215e54e-3f81-4263-ab45-6c690081b3cb
name:
type: string
example: 'Dr. Fabiano Leal Estrada Neto'
abbreviation:
type: string
example: 'Dr. Wagner Ortega Filho'
quantity:
type: number
example: 942.8721
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 942.8721
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: facere
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: 23fdcb5f-509f-3d9f-a150-0adf446b6294
code: null
name: 'Omnis dicta sit.'
description: 'Voluptatem et recusandae et eaque. Rerum non voluptate autem voluptatem dolor dicta.'
work:
id: a215e549-dc12-4eee-9d8e-4fb05fe2086f
name: 'Dr. Marta Tamoio Neto'
user:
id: a215e549-e474-4575-93ee-11a989f87e5d
name: 'Kristin Daniel'
status:
id: a215e549-e967-418a-9ee6-6f61cfd78ce9
slug: null
name: null
description: 'Joaquin Campos Soto'
abbreviation: adipisci
color: '#275cbd'
text_color: '#1f002f'
priority: high
priority_label: Alta
needed_at: '2026-06-22'
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
-
id: f958a20c-892b-338f-9902-51db0b5be1eb
code: null
name: 'Dolorem voluptas qui debitis.'
description: null
work:
id: a215e549-f241-4eb9-924a-4f71cf5f9e85
name: 'Dr. Hortência Bonilha Rios Jr.'
user:
id: a215e549-f816-4191-809c-7a33c5536b13
name: 'Candace Leannon'
status:
id: a215e549-fb09-4970-8798-83591d74e975
slug: null
name: null
description: 'Dr. Antonella Noemi Leon Jr.'
abbreviation: rerum
color: '#9171d5'
text_color: '#6aa57b'
priority: medium
priority_label: Média
needed_at: '2026-06-28'
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: 23fdcb5f-509f-3d9f-a150-0adf446b6294
code: null
name: 'Omnis dicta sit.'
description: 'Voluptatem et recusandae et eaque. Rerum non voluptate autem voluptatem dolor dicta.'
work:
id: a215e549-dc12-4eee-9d8e-4fb05fe2086f
name: 'Dr. Marta Tamoio Neto'
user:
id: a215e549-e474-4575-93ee-11a989f87e5d
name: 'Kristin Daniel'
status:
id: a215e549-e967-418a-9ee6-6f61cfd78ce9
slug: null
name: null
description: 'Joaquin Campos Soto'
abbreviation: adipisci
color: '#275cbd'
text_color: '#1f002f'
priority: high
priority_label: Alta
needed_at: '2026-06-22'
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
-
id: f958a20c-892b-338f-9902-51db0b5be1eb
code: null
name: 'Dolorem voluptas qui debitis.'
description: null
work:
id: a215e549-f241-4eb9-924a-4f71cf5f9e85
name: 'Dr. Hortência Bonilha Rios Jr.'
user:
id: a215e549-f816-4191-809c-7a33c5536b13
name: 'Candace Leannon'
status:
id: a215e549-fb09-4970-8798-83591d74e975
slug: null
name: null
description: 'Dr. Antonella Noemi Leon Jr.'
abbreviation: rerum
color: '#9171d5'
text_color: '#6aa57b'
priority: medium
priority_label: Média
needed_at: '2026-06-28'
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 23fdcb5f-509f-3d9f-a150-0adf446b6294
code:
type: string
example: null
nullable: true
name:
type: string
example: 'Omnis dicta sit.'
description:
type: string
example: 'Voluptatem et recusandae et eaque. Rerum non voluptate autem voluptatem dolor dicta.'
work:
type: object
properties:
id:
type: string
example: a215e549-dc12-4eee-9d8e-4fb05fe2086f
name:
type: string
example: 'Dr. Marta Tamoio Neto'
user:
type: object
properties:
id:
type: string
example: a215e549-e474-4575-93ee-11a989f87e5d
name:
type: string
example: 'Kristin Daniel'
status:
type: object
properties:
id:
type: string
example: a215e549-e967-418a-9ee6-6f61cfd78ce9
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Joaquin Campos Soto'
abbreviation:
type: string
example: adipisci
color:
type: string
example: '#275cbd'
text_color:
type: string
example: '#1f002f'
priority:
type: string
example: high
priority_label:
type: string
example: Alta
needed_at:
type: string
example: '2026-06-22'
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: 66353ded-3af7-3e79-be59-e315f3dfc522
nullable: true
work_location_id:
type: string
description: 'Local da obra. The uuid of an existing record in the work_locations table.'
example: 9686769a-0929-3478-89e5-111fc629d4e8
nullable: true
user_id:
type: string
description: 'Usuário. The uuid of an existing record in the users table.'
example: f534df33-9f28-3a27-8caa-1ffc886beac7
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: 7fbe0112-a49f-392c-ac37-c10e3bffae35
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: 4190633a-dc27-3ecc-94bf-2aa551538d5a
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: 2fc14170-87b3-35ba-92f8-c249aa2bd70a
work_location_id:
type: string
description: 'Local da obra. The uuid of an existing record in the work_locations table.'
example: 67766c86-4019-3e99-a1bb-a814316e93f1
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: cdd083a3-0b57-3fdc-a9ad-1b0d607e91c3
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: 9cd91d47-9f35-3b8d-b62b-1bd8bd05efad
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: 918ae9bf-2587-3531-820a-0c93cca45919
code: null
name: 'Id sint labore.'
description: null
work:
id: a215e54a-0cf6-4c6d-a086-db25b3f7517d
name: 'Sra. Emilly Flores Sobrinho'
user:
id: a215e54a-1177-4e98-bb1b-77d4ebaa5ba1
name: 'Cara Dickens'
status:
id: a215e54a-1678-4d61-9023-e20a4db2c607
slug: null
name: null
description: 'Sr. William Ramos Fontes Filho'
abbreviation: rerum
color: '#91694b'
text_color: '#fa4942'
priority: low
priority_label: Baixa
needed_at: '2026-07-15'
approved_at: null
rejection_reason: null
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 918ae9bf-2587-3531-820a-0c93cca45919
code:
type: string
example: null
nullable: true
name:
type: string
example: 'Id sint labore.'
description:
type: string
example: null
nullable: true
work:
type: object
properties:
id:
type: string
example: a215e54a-0cf6-4c6d-a086-db25b3f7517d
name:
type: string
example: 'Sra. Emilly Flores Sobrinho'
user:
type: object
properties:
id:
type: string
example: a215e54a-1177-4e98-bb1b-77d4ebaa5ba1
name:
type: string
example: 'Cara Dickens'
status:
type: object
properties:
id:
type: string
example: a215e54a-1678-4d61-9023-e20a4db2c607
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Sr. William Ramos Fontes Filho'
abbreviation:
type: string
example: rerum
color:
type: string
example: '#91694b'
text_color:
type: string
example: '#fa4942'
priority:
type: string
example: low
priority_label:
type: string
example: Baixa
needed_at:
type: string
example: '2026-07-15'
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: 1087f17d-9ea7-3098-9841-82b6984fad03
work_location_id:
type: string
description: 'Local da obra. The uuid of an existing record in the work_locations table.'
example: e0735dcc-84b9-337b-b673-29cd5c780a50
nullable: true
status_id:
type: string
description: 'Status. The uuid of an existing record in the statuses table.'
example: 20975846-02bb-306f-a357-955818f45716
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: f5fb8531-bdde-3fcf-a930-d82aef4e3ce0
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: e3bddaf6-a6c0-341f-94e5-04a8131141a9
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: qui
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: 7953c20a-fdd8-396c-af81-195e5ad6fe3d
product:
id: a215e54a-4e43-428e-b5dc-65c6203ca423
name: 'Dr. Edilson Brito Jr.'
code: PRD-456526
unit:
id: a215e54a-4cec-49ab-b39b-ed33fb59c224
name: 'Miguel Ferraz Quintana'
abbreviation: 'Simone Esther Corona Neto'
quantity: 686.4892
quantity_fulfilled: 0
quantity_pending: 686.4892
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Ut ab sit ullam sequi.'
created_at: null
updated_at: null
-
id: ffc1cb17-161e-38b7-b9e7-9419ccf63c1d
product:
id: a215e54a-7e7c-4561-b413-159f8f780707
name: 'Dr. Bruno Maldonado Jr.'
code: PRD-861418
unit:
id: a215e54a-797e-410c-b6d0-a7f69d781c0c
name: 'Jean Rodrigues'
abbreviation: 'Sra. Tábata Ramos Sobrinho'
quantity: 322.4176
quantity_fulfilled: 0
quantity_pending: 322.4176
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Sunt quaerat qui ipsam numquam.'
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: 7953c20a-fdd8-396c-af81-195e5ad6fe3d
product:
id: a215e54a-4e43-428e-b5dc-65c6203ca423
name: 'Dr. Edilson Brito Jr.'
code: PRD-456526
unit:
id: a215e54a-4cec-49ab-b39b-ed33fb59c224
name: 'Miguel Ferraz Quintana'
abbreviation: 'Simone Esther Corona Neto'
quantity: 686.4892
quantity_fulfilled: 0
quantity_pending: 686.4892
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Ut ab sit ullam sequi.'
created_at: null
updated_at: null
-
id: ffc1cb17-161e-38b7-b9e7-9419ccf63c1d
product:
id: a215e54a-7e7c-4561-b413-159f8f780707
name: 'Dr. Bruno Maldonado Jr.'
code: PRD-861418
unit:
id: a215e54a-797e-410c-b6d0-a7f69d781c0c
name: 'Jean Rodrigues'
abbreviation: 'Sra. Tábata Ramos Sobrinho'
quantity: 322.4176
quantity_fulfilled: 0
quantity_pending: 322.4176
is_fulfilled: false
is_partially_fulfilled: false
observation: 'Sunt quaerat qui ipsam numquam.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 7953c20a-fdd8-396c-af81-195e5ad6fe3d
product:
type: object
properties:
id:
type: string
example: a215e54a-4e43-428e-b5dc-65c6203ca423
name:
type: string
example: 'Dr. Edilson Brito Jr.'
code:
type: string
example: PRD-456526
unit:
type: object
properties:
id:
type: string
example: a215e54a-4cec-49ab-b39b-ed33fb59c224
name:
type: string
example: 'Miguel Ferraz Quintana'
abbreviation:
type: string
example: 'Simone Esther Corona Neto'
quantity:
type: number
example: 686.4892
quantity_fulfilled:
type: integer
example: 0
quantity_pending:
type: number
example: 686.4892
is_fulfilled:
type: boolean
example: false
is_partially_fulfilled:
type: boolean
example: false
observation:
type: string
example: 'Ut ab sit ullam sequi.'
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: 10ae57b8-569d-3b65-9146-41f80c1e0d5b
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:
- 60f60e8f-3cf6-3fb3-9d99-06d488c1abfb
items:
type: string
required:
- items
parameters:
-
in: path
name: productRequest
description: 'Product Request UUID'
example: totam
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: occaecati
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: qui
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: c345c7ae-0a96-3e57-973a-b37a5e71c9b4
product_id:
type: string
description: 'Produto. The uuid of an existing record in the products table.'
example: 34595e9b-aaba-3428-b3f9-b7538773bea1
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: laborum
required: true
schema:
type: string
/api/products:
get:
summary: 'List products'
operationId: listProducts
description: 'List all products'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search query.'
example: Brick
required: false
schema:
type: string
description: 'Search query.'
example: Brick
nullable: true
-
in: query
name: code
description: 'Filter by product code.'
example: PROD-00003
required: false
schema:
type: string
description: 'Filter by product code.'
example: PROD-00003
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: c7ad983d-5341-391f-b759-2e602a8a047c
name: 'Alana Madeira Balestero'
code: PRD-403733
stock: 416636
product_family:
id: a215e546-b524-4590-8c5c-41d97348345c
name: 'Joaquim Martines Rosa'
product_brand:
id: a215e546-ba42-405c-b824-56928ed7d15a
name: 'Bianca Zambrano Sobrinho'
unit:
id: a215e546-beb8-450a-915c-f0a9fd4f6b73
name: 'Evandro Ramires Jr.'
abbreviation: 'Sra. Elisa Melina Pontes'
image:
id: null
url: null
description: 'Ipsum aliquam vitae voluptatem impedit quo.'
created_at: null
updated_at: null
-
id: 47526c06-e40a-35be-b13a-019bf0c861e8
name: 'Joyce Sônia Leon'
code: PRD-115445
stock: 46289949
product_family:
id: a215e546-c7a4-4206-a04c-4fb9d7db5a56
name: 'Cristian Ferraz Ferreira Jr.'
product_brand:
id: a215e546-ca38-4a71-9207-3060ff01896f
name: 'Dr. Cezar Santana Sobrinho'
unit:
id: a215e546-ce43-4f1c-991d-4049d7eb7f63
name: 'Benício Gael Assunção Neto'
abbreviation: 'Guilherme Padrão Neto'
image:
id: null
url: null
description: 'Totam consequuntur ut accusantium occaecati.'
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: c7ad983d-5341-391f-b759-2e602a8a047c
name: 'Alana Madeira Balestero'
code: PRD-403733
stock: 416636
product_family:
id: a215e546-b524-4590-8c5c-41d97348345c
name: 'Joaquim Martines Rosa'
product_brand:
id: a215e546-ba42-405c-b824-56928ed7d15a
name: 'Bianca Zambrano Sobrinho'
unit:
id: a215e546-beb8-450a-915c-f0a9fd4f6b73
name: 'Evandro Ramires Jr.'
abbreviation: 'Sra. Elisa Melina Pontes'
image:
id: null
url: null
description: 'Ipsum aliquam vitae voluptatem impedit quo.'
created_at: null
updated_at: null
-
id: 47526c06-e40a-35be-b13a-019bf0c861e8
name: 'Joyce Sônia Leon'
code: PRD-115445
stock: 46289949
product_family:
id: a215e546-c7a4-4206-a04c-4fb9d7db5a56
name: 'Cristian Ferraz Ferreira Jr.'
product_brand:
id: a215e546-ca38-4a71-9207-3060ff01896f
name: 'Dr. Cezar Santana Sobrinho'
unit:
id: a215e546-ce43-4f1c-991d-4049d7eb7f63
name: 'Benício Gael Assunção Neto'
abbreviation: 'Guilherme Padrão Neto'
image:
id: null
url: null
description: 'Totam consequuntur ut accusantium occaecati.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: c7ad983d-5341-391f-b759-2e602a8a047c
name:
type: string
example: 'Alana Madeira Balestero'
code:
type: string
example: PRD-403733
stock:
type: integer
example: 416636
product_family:
type: object
properties:
id:
type: string
example: a215e546-b524-4590-8c5c-41d97348345c
name:
type: string
example: 'Joaquim Martines Rosa'
product_brand:
type: object
properties:
id:
type: string
example: a215e546-ba42-405c-b824-56928ed7d15a
name:
type: string
example: 'Bianca Zambrano Sobrinho'
unit:
type: object
properties:
id:
type: string
example: a215e546-beb8-450a-915c-f0a9fd4f6b73
name:
type: string
example: 'Evandro Ramires Jr.'
abbreviation:
type: string
example: 'Sra. Elisa Melina Pontes'
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
description:
type: string
example: 'Ipsum aliquam vitae voluptatem impedit quo.'
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: 1c5e6b27-e390-3125-8ee8-5adff4cd1e02
product_brand_id:
type: string
description: 'Marca do Produto. The uuid of an existing record in the product_brands table.'
example: 5e85f8d1-899c-34ea-980c-155feb31b8ca
unit_id:
type: string
description: 'Unidade. The uuid of an existing record in the units table.'
example: f90f0846-510b-33b4-8183-5188e67288d0
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: fe3b523e-daa3-36ca-a5dc-2a68ba2c2df0
name: 'Sra. Olga Balestero'
code: PRD-797616
stock: 40334
product_family:
id: a215e546-e116-4892-8dc3-81e18e0a3314
name: 'Martinho Feliciano Neto'
product_brand:
id: a215e546-e581-44f4-b5d3-f3392e1f2da0
name: 'Suelen Emília Duarte'
unit:
id: a215e546-ea08-4742-a232-1c197a11fef7
name: 'Luiz de Souza'
abbreviation: 'Dr. Manoela Santacruz Neto'
image:
id: null
url: null
description: 'Quia suscipit doloremque quo autem molestias.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: fe3b523e-daa3-36ca-a5dc-2a68ba2c2df0
name:
type: string
example: 'Sra. Olga Balestero'
code:
type: string
example: PRD-797616
stock:
type: integer
example: 40334
product_family:
type: object
properties:
id:
type: string
example: a215e546-e116-4892-8dc3-81e18e0a3314
name:
type: string
example: 'Martinho Feliciano Neto'
product_brand:
type: object
properties:
id:
type: string
example: a215e546-e581-44f4-b5d3-f3392e1f2da0
name:
type: string
example: 'Suelen Emília Duarte'
unit:
type: object
properties:
id:
type: string
example: a215e546-ea08-4742-a232-1c197a11fef7
name:
type: string
example: 'Luiz de Souza'
abbreviation:
type: string
example: 'Dr. Manoela Santacruz Neto'
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
description:
type: string
example: 'Quia suscipit doloremque quo autem molestias.'
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: 16c44814-d5e5-3330-ac80-b16492f73b14
product_brand_id:
type: string
description: 'Marca do Produto. The uuid of an existing record in the product_brands table.'
example: 1544fca9-8341-381c-9d4a-644b80a837e5
unit_id:
type: string
description: 'Unidade. The uuid of an existing record in the units table.'
example: ce05fc8d-a54b-3040-9c76-38f54ce6d06a
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: vero
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: facere
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: dolorum
required: true
schema:
type: string
/api/reports/cash-flow/excel:
get:
summary: 'Export Cash Flow to Excel'
operationId: exportCashFlowToExcel
description: 'Dispatches async Excel generation. Frontend receives notification via Pusher when ready.'
parameters:
-
in: query
name: q
description: ''
example: fugiat
required: false
schema:
type: string
description: ''
example: fugiat
nullable: true
-
in: query
name: type
description: 'Tipo de lançamento.'
example: entrada
required: false
schema:
type: string
description: 'Tipo de lançamento.'
example: entrada
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
- 'ajuste saída'
nullable: true
-
in: query
name: description
description: ''
example: 'Dolor ipsam voluptatem quia aut impedit.'
required: false
schema:
type: string
description: ''
example: 'Dolor ipsam voluptatem quia aut impedit.'
nullable: true
-
in: query
name: categories
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- 6661a8ee-8090-31a0-bf3e-a3ab20b9635f
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- 6661a8ee-8090-31a0-bf3e-a3ab20b9635f
items:
type: string
-
in: query
name: exclude_categories
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- 2f4e709d-7c58-3eed-b5df-2ca3b4088400
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- 2f4e709d-7c58-3eed-b5df-2ca3b4088400
items:
type: string
-
in: query
name: date_start
description: 'Início do período (data). O campo value deve ser uma data válida.'
example: '2026-01-01'
required: false
schema:
type: string
description: 'Início do período (data). O campo value deve ser uma data válida.'
example: '2026-01-01'
nullable: true
-
in: query
name: date_end
description: 'Fim do período (data). O campo value deve ser uma data válida.'
example: '2026-12-31'
required: false
schema:
type: string
description: 'Fim do período (data). O campo value deve ser uma data válida.'
example: '2026-12-31'
nullable: true
-
in: query
name: bank_accounts
description: 'O campo value deve ser um UUID válido.'
example:
- 52ebf893-487c-353d-a490-6c80233cbd38
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- 52ebf893-487c-353d-a490-6c80233cbd38
items:
type: string
-
in: query
name: customers
description: 'O campo value deve ser um UUID válido.'
example:
- 601fb8a9-9347-3167-a915-9b9f88dde6ff
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- 601fb8a9-9347-3167-a915-9b9f88dde6ff
items:
type: string
-
in: query
name: suppliers
description: 'O campo value deve ser um UUID válido.'
example:
- dcb2960e-4a5e-3e9d-b4ed-780977e5ed1f
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- dcb2960e-4a5e-3e9d-b4ed-780977e5ed1f
items:
type: string
-
in: query
name: cash_session
description: 'O campo value deve ser um UUID válido.'
example: 756fb632-7087-39d7-ae78-b76222b54684
required: false
schema:
type: string
description: 'O campo value deve ser um UUID válido.'
example: 756fb632-7087-39d7-ae78-b76222b54684
nullable: true
-
in: query
name: works
description: 'O campo value deve ser um UUID válido.'
example:
- 1d753c31-ee97-3f9d-9c86-369e620568df
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- 1d753c31-ee97-3f9d-9c86-369e620568df
items:
type: string
-
in: query
name: url
description: ''
example: null
required: false
schema:
type: string
description: ''
example: null
-
in: query
name: base64
description: ''
example: null
required: false
schema:
type: string
description: ''
example: null
-
in: query
name: aba_unica
description: ''
example: null
required: false
schema:
type: string
description: ''
example: null
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Reports
/api/reports/cash-flow:
get:
summary: ''
operationId: getApiReportsCashFlow
description: ''
parameters:
-
in: query
name: q
description: ''
example: voluptatem
required: false
schema:
type: string
description: ''
example: voluptatem
nullable: true
-
in: query
name: type
description: 'Tipo de lançamento.'
example: entrada
required: false
schema:
type: string
description: 'Tipo de lançamento.'
example: entrada
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
- 'ajuste saída'
nullable: true
-
in: query
name: description
description: ''
example: 'Et quam aperiam non necessitatibus iusto.'
required: false
schema:
type: string
description: ''
example: 'Et quam aperiam non necessitatibus iusto.'
nullable: true
-
in: query
name: categories
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- 1cd8d871-26cd-3671-96e0-ce14108d273e
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- 1cd8d871-26cd-3671-96e0-ce14108d273e
items:
type: string
-
in: query
name: exclude_categories
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- ad8e4b37-0277-374f-a991-fab61946dcba
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido. The uuid of an existing record in the transaction_categories table.'
example:
- ad8e4b37-0277-374f-a991-fab61946dcba
items:
type: string
-
in: query
name: date_start
description: 'Início do período (data). O campo value deve ser uma data válida.'
example: '2026-01-01'
required: false
schema:
type: string
description: 'Início do período (data). O campo value deve ser uma data válida.'
example: '2026-01-01'
nullable: true
-
in: query
name: date_end
description: 'Fim do período (data). O campo value deve ser uma data válida.'
example: '2026-12-31'
required: false
schema:
type: string
description: 'Fim do período (data). O campo value deve ser uma data válida.'
example: '2026-12-31'
nullable: true
-
in: query
name: bank_accounts
description: 'O campo value deve ser um UUID válido.'
example:
- ec0956db-f67a-32ef-b9c6-8a0e0478c732
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- ec0956db-f67a-32ef-b9c6-8a0e0478c732
items:
type: string
-
in: query
name: customers
description: 'O campo value deve ser um UUID válido.'
example:
- 766b1b55-1713-3b20-b44a-d5495e74550f
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- 766b1b55-1713-3b20-b44a-d5495e74550f
items:
type: string
-
in: query
name: suppliers
description: 'O campo value deve ser um UUID válido.'
example:
- 312e68a3-8fe1-3586-adb0-0a8b0a0fb83c
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- 312e68a3-8fe1-3586-adb0-0a8b0a0fb83c
items:
type: string
-
in: query
name: cash_session
description: 'O campo value deve ser um UUID válido.'
example: 687675a2-3672-31d0-8127-b3119f13c288
required: false
schema:
type: string
description: 'O campo value deve ser um UUID válido.'
example: 687675a2-3672-31d0-8127-b3119f13c288
nullable: true
-
in: query
name: works
description: 'O campo value deve ser um UUID válido.'
example:
- a4f08ed8-91a4-3acb-93e0-7e02ad634871
required: false
schema:
type: array
description: 'O campo value deve ser um UUID válido.'
example:
- a4f08ed8-91a4-3acb-93e0-7e02ad634871
items:
type: string
-
in: query
name: url
description: ''
example: null
required: false
schema:
type: string
description: ''
example: null
-
in: query
name: base64
description: ''
example: null
required: false
schema:
type: string
description: ''
example: null
-
in: query
name: aba_unica
description: ''
example: null
required: false
schema:
type: string
description: ''
example: null
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Reports
security: []
/api/reports/accounts-payable-receivable/excel:
get:
summary: 'Export Accounts Payable/Receivable to Excel'
operationId: exportAccountsPayableReceivableToExcel
description: 'Dispatches async Excel generation. Frontend receives notification via Pusher when ready.'
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Reports
/api/reports/accounts-payable-receivable:
get:
summary: ''
operationId: getApiReportsAccountsPayableReceivable
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Reports
security: []
/api/sectors:
get:
summary: 'List sectors'
operationId: listSectors
description: 'List all sectors'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search query.'
example: Tecnologia
required: false
schema:
type: string
description: 'Search query.'
example: Tecnologia
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 2dfc07cf-08e9-3c7a-8f55-f3973371eeae
name: 'atque sed'
slug: null
description: null
abbreviation: mnc
created_at: null
updated_at: null
-
id: 2af2f87d-b692-3864-8c31-188b6693d484
name: 'maxime aut'
slug: null
description: 'Sint assumenda maiores sequi nisi cum. Provident aut ea assumenda veniam repudiandae dolore esse. Harum laborum eveniet ut voluptates amet doloremque.'
abbreviation: kiz
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: 2dfc07cf-08e9-3c7a-8f55-f3973371eeae
name: 'atque sed'
slug: null
description: null
abbreviation: mnc
created_at: null
updated_at: null
-
id: 2af2f87d-b692-3864-8c31-188b6693d484
name: 'maxime aut'
slug: null
description: 'Sint assumenda maiores sequi nisi cum. Provident aut ea assumenda veniam repudiandae dolore esse. Harum laborum eveniet ut voluptates amet doloremque.'
abbreviation: kiz
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 2dfc07cf-08e9-3c7a-8f55-f3973371eeae
name:
type: string
example: 'atque sed'
slug:
type: string
example: null
nullable: true
description:
type: string
example: null
nullable: true
abbreviation:
type: string
example: mnc
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: 98124060-1db2-3735-a17b-52e1e13382cf
name: 'fuga quidem'
slug: null
description: 'Debitis quia aut sed eaque non. Est necessitatibus sed alias asperiores rerum dolor ea doloribus. Sit cumque nihil quo omnis nemo. Iusto ut sed beatae est. Ipsa aut perferendis natus consequatur debitis.'
abbreviation: vjj
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 98124060-1db2-3735-a17b-52e1e13382cf
name:
type: string
example: 'fuga quidem'
slug:
type: string
example: null
nullable: true
description:
type: string
example: 'Debitis quia aut sed eaque non. Est necessitatibus sed alias asperiores rerum dolor ea doloribus. Sit cumque nihil quo omnis nemo. Iusto ut sed beatae est. Ipsa aut perferendis natus consequatur debitis.'
abbreviation:
type: string
example: vjj
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: c9abae8f-5c44-3dcc-8e20-299f8d246bc8
name: 'Dr. Evan Schinner Sr.'
username: jillian23
email: bennett.trantow@example.com
image:
id: null
url: null
sectors: []
roles: []
-
id: 9593def0-6ce2-3e21-9cd3-7190d91b048d
name: 'Prof. Rick Beier'
username: jessie.schoen
email: bette.johnson@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: c9abae8f-5c44-3dcc-8e20-299f8d246bc8
name: 'Dr. Evan Schinner Sr.'
username: jillian23
email: bennett.trantow@example.com
image:
id: null
url: null
sectors: []
roles: []
-
id: 9593def0-6ce2-3e21-9cd3-7190d91b048d
name: 'Prof. Rick Beier'
username: jessie.schoen
email: bette.johnson@example.com
image:
id: null
url: null
sectors: []
roles: []
items:
type: object
properties:
id:
type: string
example: c9abae8f-5c44-3dcc-8e20-299f8d246bc8
name:
type: string
example: 'Dr. Evan Schinner Sr.'
username:
type: string
example: jillian23
email:
type: string
example: bennett.trantow@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:
- 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:
- c763fada-109a-39ce-bda5-51e973619a3f
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:
- 6db7cda1-b4e3-38d8-83b9-a805df90e471
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:
- 5c1795b5-367f-349a-897a-16b32014d91a
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: 'quisquam ut'
slug: ratione-et-inventore-quisquam
-
name: 'quaerat autem'
slug: voluptatem-voluptatem-et-iure-distinctio
properties:
data:
type: array
example:
-
name: 'quisquam ut'
slug: ratione-et-inventore-quisquam
-
name: 'quaerat autem'
slug: voluptatem-voluptatem-et-iure-distinctio
items:
type: object
properties:
name:
type: string
example: 'quisquam ut'
slug:
type: string
example: ratione-et-inventore-quisquam
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: 8a531c7b-6edc-38e6-ae51-171786a5a254
slug: null
name: null
description: 'Deivid Garcia Quintana Neto'
abbreviation: dolorum
color: '#49bf0c'
text_color: '#49d415'
module:
name: Obras
slug: work
created_at: null
updated_at: null
-
id: 982f7501-da47-3f98-a53e-6c28c3e63e2c
slug: null
name: null
description: 'Lorenzo Gil Paes Neto'
abbreviation: sunt
color: '#440448'
text_color: '#fb6e37'
module:
name: Obras
slug: work
created_at: null
updated_at: null
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
path: /
per_page: 10
to: 2
total: 2
properties:
data:
type: array
example:
-
id: 8a531c7b-6edc-38e6-ae51-171786a5a254
slug: null
name: null
description: 'Deivid Garcia Quintana Neto'
abbreviation: dolorum
color: '#49bf0c'
text_color: '#49d415'
module:
name: Obras
slug: work
created_at: null
updated_at: null
-
id: 982f7501-da47-3f98-a53e-6c28c3e63e2c
slug: null
name: null
description: 'Lorenzo Gil Paes Neto'
abbreviation: sunt
color: '#440448'
text_color: '#fb6e37'
module:
name: Obras
slug: work
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 8a531c7b-6edc-38e6-ae51-171786a5a254
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Deivid Garcia Quintana Neto'
abbreviation:
type: string
example: dolorum
color:
type: string
example: '#49bf0c'
text_color:
type: string
example: '#49d415'
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
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: 4602fab1-8031-3b8b-b509-d1461849c946
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: b9c31b56-e3e0-3f53-831d-8900a4a3e0fb
slug: null
name: null
description: 'Ícaro Santos Zambrano'
abbreviation: consequatur
color: '#5b4f83'
text_color: '#4af12e'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: b9c31b56-e3e0-3f53-831d-8900a4a3e0fb
slug:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
description:
type: string
example: 'Ícaro Santos Zambrano'
abbreviation:
type: string
example: consequatur
color:
type: string
example: '#5b4f83'
text_color:
type: string
example: '#4af12e'
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: 53a2ec67-e256-3ee4-9001-e720afdeae99
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: 77f8c46a-211b-3347-b577-135604e9c501
quantity: 463.9722
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: 1a002909-6fe0-3931-a1a5-b3a233747bfa
quantity: 730.43
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
properties:
data:
type: array
example:
-
id: 77f8c46a-211b-3347-b577-135604e9c501
quantity: 463.9722
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: 1a002909-6fe0-3931-a1a5-b3a233747bfa
quantity: 730.43
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: 77f8c46a-211b-3347-b577-135604e9c501
quantity:
type: number
example: 463.9722
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: 88f1d044-6b47-37b5-9c1c-802157f4bfbc
name: 'Estoque Batista-Vale'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
-
id: 108764b5-7dfa-350f-885e-7fd3d0618327
name: 'Estoque Oliveira-Rodrigues'
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: 88f1d044-6b47-37b5-9c1c-802157f4bfbc
name: 'Estoque Batista-Vale'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
-
id: 108764b5-7dfa-350f-885e-7fd3d0618327
name: 'Estoque Oliveira-Rodrigues'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 88f1d044-6b47-37b5-9c1c-802157f4bfbc
name:
type: string
example: 'Estoque Batista-Vale'
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: e3e396dd-1002-38e1-916d-fbff679e5e25
name: 'Estoque Verdugo-Padrão'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: e3e396dd-1002-38e1-916d-fbff679e5e25
name:
type: string
example: 'Estoque Verdugo-Padrão'
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: cd922f7f-d7cd-37ed-b4b0-65c84ca99359
name: 'Estoque Padrão e Leal'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: cd922f7f-d7cd-37ed-b4b0-65c84ca99359
name:
type: string
example: 'Estoque Padrão e Leal'
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: b263b354-44f8-3f8e-99f8-f78489d21ebf
name: 'Estoque Zaragoça-Queirós'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: b263b354-44f8-3f8e-99f8-f78489d21ebf
name:
type: string
example: 'Estoque Zaragoça-Queirós'
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: ab181ef0-dd6c-3b0e-ae2c-7db8a449508f
name: 'Estoque de Aguiar S.A.'
module: work
is_active: true
is_main: false
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: ab181ef0-dd6c-3b0e-ae2c-7db8a449508f
name:
type: string
example: 'Estoque de Aguiar S.A.'
module:
type: string
example: work
is_active:
type: boolean
example: true
is_main:
type: boolean
example: false
created_at:
type: string
example: null
nullable: true
updated_at:
type: string
example: null
nullable: true
tags:
- Stock
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'nome. O campo value não pode ser superior a 255 caracteres.'
example: 'Example Name'
is_active:
type: boolean
description: ativo.
example: true
delete:
summary: 'Delete stock'
operationId: deleteStock
description: 'Removes a stock (soft delete)'
parameters: []
responses: { }
tags:
- Stock
parameters:
-
in: path
name: id
description: 'The ID of the stock.'
example: 1
required: true
schema:
type: integer
-
in: path
name: stock
description: 'Stock UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/stocks/{stock}/items':
get:
summary: 'List stock items'
operationId: listStockItems
description: 'Returns a paginated list of items/products in a stock'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 10
required: false
schema:
type: integer
description: 'Number of items per page. O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 10
-
in: query
name: q
description: 'Search by product name. O campo value não pode ser superior a 255 caracteres.'
example: Cement
required: false
schema:
type: string
description: 'Search by product name. O campo value não pode ser superior a 255 caracteres.'
example: Cement
nullable: true
-
in: query
name: below_minimum
description: 'Filter items below minimum quantity.'
example: true
required: false
schema:
type: boolean
description: 'Filter items below minimum quantity.'
example: true
nullable: true
-
in: query
name: above_maximum
description: 'Filter items above maximum quantity.'
example: false
required: false
schema:
type: boolean
description: 'Filter items above maximum quantity.'
example: false
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: cdd6f797-7cfc-3eeb-9b67-b48e40c4ff32
quantity: 661.8207
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: a3c973ab-d239-396d-a100-9bbf164e1598
quantity: 504.1162
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: cdd6f797-7cfc-3eeb-9b67-b48e40c4ff32
quantity: 661.8207
min_quantity: null
max_quantity: null
below_minimum: false
above_maximum: false
created_at: null
updated_at: null
-
id: a3c973ab-d239-396d-a100-9bbf164e1598
quantity: 504.1162
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: cdd6f797-7cfc-3eeb-9b67-b48e40c4ff32
quantity:
type: number
example: 661.8207
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: 3eb42b1a-c369-35cb-979a-0336e1701284
quantity: 7.1864
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: 3eb42b1a-c369-35cb-979a-0336e1701284
quantity:
type: number
example: 7.1864
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: non
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: 9bb56ff3-64fc-32e6-b257-d178e9852e35
code: MOV-403407
type: alocação
type_name: ALLOCATION
is_entry: true
is_exit: false
quantity: 81.4369
previous_quantity: 522.3343
new_quantity: 603.7712
reason: null
movement_date: '2026-06-08T12:47:37.000000Z'
created_at: null
-
id: d38cfe57-018b-3895-b0f1-99680aa00b98
code: MOV-558602
type: perda
type_name: LOSS
is_entry: false
is_exit: true
quantity: 14.3847
previous_quantity: 293.0464
new_quantity: 278.6617
reason: null
movement_date: '2026-05-31T05:53:49.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: 9bb56ff3-64fc-32e6-b257-d178e9852e35
code: MOV-403407
type: alocação
type_name: ALLOCATION
is_entry: true
is_exit: false
quantity: 81.4369
previous_quantity: 522.3343
new_quantity: 603.7712
reason: null
movement_date: '2026-06-08T12:47:37.000000Z'
created_at: null
-
id: d38cfe57-018b-3895-b0f1-99680aa00b98
code: MOV-558602
type: perda
type_name: LOSS
is_entry: false
is_exit: true
quantity: 14.3847
previous_quantity: 293.0464
new_quantity: 278.6617
reason: null
movement_date: '2026-05-31T05:53:49.000000Z'
created_at: null
items:
type: object
properties:
id:
type: string
example: 9bb56ff3-64fc-32e6-b257-d178e9852e35
code:
type: string
example: MOV-403407
type:
type: string
example: alocação
type_name:
type: string
example: ALLOCATION
is_entry:
type: boolean
example: true
is_exit:
type: boolean
example: false
quantity:
type: number
example: 81.4369
previous_quantity:
type: number
example: 522.3343
new_quantity:
type: number
example: 603.7712
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-06-08T12:47:37.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: 47551e74-5617-3678-8019-6703aef641ca
code: MOV-346716
type: vencido
type_name: EXPIRED
is_entry: false
is_exit: true
quantity: 73.3946
previous_quantity: 136.5215
new_quantity: 63.1269
reason: null
movement_date: '2026-06-19T13:28:33.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 47551e74-5617-3678-8019-6703aef641ca
code:
type: string
example: MOV-346716
type:
type: string
example: vencido
type_name:
type: string
example: EXPIRED
is_entry:
type: boolean
example: false
is_exit:
type: boolean
example: true
quantity:
type: number
example: 73.3946
previous_quantity:
type: number
example: 136.5215
new_quantity:
type: number
example: 63.1269
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-06-19T13:28:33.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: b9f3851b-2068-399e-bda1-b5c952a478a8
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: a348c494-ee74-3287-8708-65d2c6d767f7
code: MOV-210363
type: alocação
type_name: ALLOCATION
is_entry: true
is_exit: false
quantity: 9.4237
previous_quantity: 509.1995
new_quantity: 518.6232
reason: null
movement_date: '2026-06-18T11:29:36.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: a348c494-ee74-3287-8708-65d2c6d767f7
code:
type: string
example: MOV-210363
type:
type: string
example: alocação
type_name:
type: string
example: ALLOCATION
is_entry:
type: boolean
example: true
is_exit:
type: boolean
example: false
quantity:
type: number
example: 9.4237
previous_quantity:
type: number
example: 509.1995
new_quantity:
type: number
example: 518.6232
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-06-18T11:29:36.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: 31a8f3b8-3fbd-3b66-8be5-a1bc4ae2df4f
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: 2543adb3-002c-302d-ac1e-b0421949c2c2
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: 7d1fe8d1-c710-3565-a851-08c05d5a5d9e
code: MOV-481927
type: produção
type_name: PRODUCTION
is_entry: true
is_exit: false
quantity: 12.9093
previous_quantity: 900.9483
new_quantity: 913.8576
reason: null
movement_date: '2026-06-02T01:44:28.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 7d1fe8d1-c710-3565-a851-08c05d5a5d9e
code:
type: string
example: MOV-481927
type:
type: string
example: produção
type_name:
type: string
example: PRODUCTION
is_entry:
type: boolean
example: true
is_exit:
type: boolean
example: false
quantity:
type: number
example: 12.9093
previous_quantity:
type: number
example: 900.9483
new_quantity:
type: number
example: 913.8576
reason:
type: string
example: null
nullable: true
movement_date:
type: string
example: '2026-06-02T01:44:28.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: 92fa6640-e08a-308b-8b0e-4be984cd09b4
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: 99d1a9d5-007f-39f9-b784-66f3b610aaf5
code: MOV-348026
type: produção
type_name: PRODUCTION
is_entry: true
is_exit: false
quantity: 68.4759
previous_quantity: 384.9405
new_quantity: 453.4164
reason: 'Adipisci commodi ut ad odit incidunt qui non dolor.'
movement_date: '2026-06-14T07:23:37.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 99d1a9d5-007f-39f9-b784-66f3b610aaf5
code:
type: string
example: MOV-348026
type:
type: string
example: produção
type_name:
type: string
example: PRODUCTION
is_entry:
type: boolean
example: true
is_exit:
type: boolean
example: false
quantity:
type: number
example: 68.4759
previous_quantity:
type: number
example: 384.9405
new_quantity:
type: number
example: 453.4164
reason:
type: string
example: 'Adipisci commodi ut ad odit incidunt qui non dolor.'
movement_date:
type: string
example: '2026-06-14T07:23:37.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: c94a8248-7add-365e-81ab-5f501e757dd2
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: 051bfc59-bd7a-3165-b8d3-53fb40986acf
code: MOV-828876
type: venda
type_name: SALE
is_entry: false
is_exit: true
quantity: 54.0169
previous_quantity: 238.2312
new_quantity: 184.2143
reason: 'Laudantium aut suscipit excepturi ab laboriosam facere sint libero.'
movement_date: '2026-06-16T18:19:42.000000Z'
created_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 051bfc59-bd7a-3165-b8d3-53fb40986acf
code:
type: string
example: MOV-828876
type:
type: string
example: venda
type_name:
type: string
example: SALE
is_entry:
type: boolean
example: false
is_exit:
type: boolean
example: true
quantity:
type: number
example: 54.0169
previous_quantity:
type: number
example: 238.2312
new_quantity:
type: number
example: 184.2143
reason:
type: string
example: 'Laudantium aut suscipit excepturi ab laboriosam facere sint libero.'
movement_date:
type: string
example: '2026-06-16T18:19:42.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: 95b334d1-e8e7-3e3c-bcc9-e669031fff9f
name: 'Jean Santana Leon'
email: mirella97@example.com
phone: '(88) 92984-9991'
document: 18.248.190/0001-26
type: pj
responsible: 'Alexa Queirós Filho'
image:
id: null
url: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
-
id: f6f83712-b243-3e4f-ae1d-6bd42ea09781
name: 'Benedito Barreto Branco Neto'
email: veronica13@example.net
phone: '(67) 90346-6465'
document: 07.100.590/0001-73
type: pf
responsible: 'Bruno Gabriel Rezende Jr.'
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: 95b334d1-e8e7-3e3c-bcc9-e669031fff9f
name: 'Jean Santana Leon'
email: mirella97@example.com
phone: '(88) 92984-9991'
document: 18.248.190/0001-26
type: pj
responsible: 'Alexa Queirós Filho'
image:
id: null
url: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
-
id: f6f83712-b243-3e4f-ae1d-6bd42ea09781
name: 'Benedito Barreto Branco Neto'
email: veronica13@example.net
phone: '(67) 90346-6465'
document: 07.100.590/0001-73
type: pf
responsible: 'Bruno Gabriel Rezende Jr.'
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: 95b334d1-e8e7-3e3c-bcc9-e669031fff9f
name:
type: string
example: 'Jean Santana Leon'
email:
type: string
example: mirella97@example.com
phone:
type: string
example: '(88) 92984-9991'
document:
type: string
example: 18.248.190/0001-26
type:
type: string
example: pj
responsible:
type: string
example: 'Alexa Queirós 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
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: 8771e3a9-89e9-36f5-b511-a58e07881b93
name: 'Antônio Robson da Rosa Jr.'
email: bonilha.tomas@example.com
phone: '(84) 3749-9064'
document: 87.926.250/0001-35
type: pf
responsible: 'Dr. Teobaldo Vasques Marinho Jr.'
image:
id: null
url: null
address:
street: null
number: null
complement: null
neighborhood: null
city: null
state: null
zip_code: null
properties:
data:
type: object
properties:
id:
type: string
example: 8771e3a9-89e9-36f5-b511-a58e07881b93
name:
type: string
example: 'Antônio Robson da Rosa Jr.'
email:
type: string
example: bonilha.tomas@example.com
phone:
type: string
example: '(84) 3749-9064'
document:
type: string
example: 87.926.250/0001-35
type:
type: string
example: pf
responsible:
type: string
example: 'Dr. Teobaldo Vasques Marinho Jr.'
image:
type: object
properties:
id:
type: string
example: null
nullable: true
url:
type: string
example: null
nullable: true
address:
type: object
properties:
street:
type: string
example: null
nullable: true
number:
type: string
example: null
nullable: true
complement:
type: string
example: null
nullable: true
neighborhood:
type: string
example: null
nullable: true
city:
type: string
example: null
nullable: true
state:
type: string
example: null
nullable: true
zip_code:
type: string
example: null
nullable: true
tags:
- Suppliers
put:
summary: 'Update supplier'
operationId: updateSupplier
description: 'Update a supplier'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- Suppliers
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Nome.
example: 'Example Name'
email:
type: string
description: 'E-mail. O campo value deve ser um endereço de e-mail válido.'
example: user@example.com
phone:
type: string
description: Telefone.
example: '(11) 99999-9999'
document:
type: string
description: CPF/CNPJ.
example: 'Example Document'
type:
type: string
description: Tipo.
example: 'Example Type'
enum:
- pf
- pj
responsible:
type: string
description: Responsável.
example: 'Example Responsible'
nullable: true
image:
type: object
description: Imagem.
example:
- example1
- example2
properties:
path:
type: string
description: 'Caminho da imagem. This field is required when image is present.'
example: 'Example Image path'
name:
type: string
description: 'Nome da imagem.'
example: 'Example Name'
nullable: true
extension:
type: string
description: 'Extensão da imagem.'
example: 'Example Image extension'
nullable: true
size:
type: string
description: 'Tamanho da imagem.'
example: 'Example Image size'
nullable: true
address:
type: object
description: Endereço.
example:
- example1
- example2
properties:
street:
type: string
description: Rua.
example: 'Example Address street'
number:
type: string
description: Número.
example: 'Example Address number'
complement:
type: string
description: Complemento.
example: 'Example Address complement'
neighborhood:
type: string
description: Bairro.
example: 'Example Address neighborhood'
city:
type: string
description: Cidade.
example: 'Example Address city'
state:
type: string
description: Estado.
example: 'Example Address state'
zip_code:
type: string
description: CEP.
example: 'Example Address zip code'
parameters:
-
in: path
name: id
description: 'The ID of the supplier.'
example: 1
required: true
schema:
type: integer
-
in: path
name: supplier
description: 'Supplier ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
'/api/suppliers/{supplier}':
delete:
summary: 'Delete supplier'
operationId: deleteSupplier
description: 'Delete a supplier'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- Suppliers
parameters:
-
in: path
name: supplier
description: 'Supplier ID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string
/api/system-types:
get:
summary: 'System Types'
operationId: systemTypes
description: 'Get the system types'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
bankAccountTypes:
key: value
fileTypes:
key: value
legalEntityTypes:
key: value
transactionTypes:
key: value
properties:
data:
type: object
properties:
bankAccountTypes:
type: object
properties:
key:
type: string
example: value
fileTypes:
type: object
properties:
key:
type: string
example: value
legalEntityTypes:
type: object
properties:
key:
type: string
example: value
transactionTypes:
type: object
properties:
key:
type: string
example: value
tags:
- 'System Types'
/api/transaction-categories:
get:
summary: 'List transaction categories'
operationId: listTransactionCategories
description: 'List all transaction categories'
parameters:
-
in: query
name: sort_by
description: 'Field to sort by.'
example: created_at
required: false
schema:
type: string
description: 'Field to sort by.'
example: created_at
nullable: true
-
in: query
name: sort_desc
description: 'Sort order (true for descending, false for ascending).'
example: true
required: false
schema:
type: boolean
description: 'Sort order (true for descending, false for ascending).'
example: true
nullable: true
-
in: query
name: page
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
required: false
schema:
type: integer
description: 'Page number for pagination. O campo value deve ser pelo menos 1.'
example: 1
nullable: true
-
in: query
name: per_page
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
required: false
schema:
type: integer
description: 'Number of items per page (max: 100). O campo value deve ser pelo menos 1. O campo value não pode ser superior a 100.'
example: 15
nullable: true
-
in: query
name: q
description: 'Search query.'
example: Salary
required: false
schema:
type: string
description: 'Search query.'
example: Salary
nullable: true
-
in: query
name: type
description: 'Transaction type.'
example: entrada
required: false
schema:
type: string
description: 'Transaction type.'
example: entrada
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
- 'ajuste saída'
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: d18f89c4-fee8-3515-8332-080e1e1cc3dc
name: 'Thalissa Eloá Esteves Filho'
description: 'Est molestias non dolorum incidunt pariatur odio. Odit culpa qui ullam aut ad. Et nihil consequuntur quo ipsum reiciendis perferendis perferendis a.'
type: 'ajuste saída'
-
id: 0aa304af-d204-346c-b4c0-c953fa1417a1
name: 'Tiago David Molina'
description: 'Alias et optio qui deserunt harum ut. Ipsam labore veritatis dolorem rem atque itaque dolor. Enim velit cupiditate dolores voluptatibus. Ut veritatis saepe quia laboriosam.'
type: ajuste
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: d18f89c4-fee8-3515-8332-080e1e1cc3dc
name: 'Thalissa Eloá Esteves Filho'
description: 'Est molestias non dolorum incidunt pariatur odio. Odit culpa qui ullam aut ad. Et nihil consequuntur quo ipsum reiciendis perferendis perferendis a.'
type: 'ajuste saída'
-
id: 0aa304af-d204-346c-b4c0-c953fa1417a1
name: 'Tiago David Molina'
description: 'Alias et optio qui deserunt harum ut. Ipsam labore veritatis dolorem rem atque itaque dolor. Enim velit cupiditate dolores voluptatibus. Ut veritatis saepe quia laboriosam.'
type: ajuste
items:
type: object
properties:
id:
type: string
example: d18f89c4-fee8-3515-8332-080e1e1cc3dc
name:
type: string
example: 'Thalissa Eloá Esteves Filho'
description:
type: string
example: 'Est molestias non dolorum incidunt pariatur odio. Odit culpa qui ullam aut ad. Et nihil consequuntur quo ipsum reiciendis perferendis perferendis a.'
type:
type: string
example: 'ajuste saída'
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
meta:
type: object
properties:
current_page:
type: integer
example: 1
from:
type: integer
example: 1
last_page:
type: integer
example: 1
links:
type: array
example:
-
url: null
label: '« Anterior'
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: 'Próximo »'
page: null
active: false
items:
type: object
properties:
url:
type: string
example: null
nullable: true
label:
type: string
example: '« Anterior'
page:
type: string
example: null
nullable: true
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 10
to:
type: integer
example: 2
total:
type: integer
example: 2
tags:
- 'Transaction Categories'
post:
summary: 'Create transaction category'
operationId: createTransactionCategory
description: 'Create a new transaction category'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
message: string
properties:
message:
type: string
example: string
tags:
- 'Transaction Categories'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Name.
example: 'Example Name'
description:
type: string
description: Description.
example: 'Example Description'
type:
type: string
description: Type.
example: 'Example Type'
enum:
- entrada
- saída
- tarifa
- depósito
- saque
- transferência
- pagamento
- juros
- ajuste
- 'ajuste saída'
required:
- name
- type
'/api/transaction-categories/{transactionCategory}':
get:
summary: 'Show transaction category'
operationId: showTransactionCategory
description: 'Show a transaction category'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 17caa26d-c07a-3228-b7cf-c3eae40ef5b6
name: 'Otávio Evandro Meireles Filho'
description: 'Placeat maxime animi repellendus consequatur. Ut dolor sequi repellendus dolores ut. Aut delectus voluptatem quaerat rerum quis aliquid odit.'
type: depósito
properties:
data:
type: object
properties:
id:
type: string
example: 17caa26d-c07a-3228-b7cf-c3eae40ef5b6
name:
type: string
example: 'Otávio Evandro Meireles Filho'
description:
type: string
example: 'Placeat maxime animi repellendus consequatur. Ut dolor sequi repellendus dolores ut. Aut delectus voluptatem quaerat rerum quis aliquid odit.'
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
- 'ajuste saída'
required:
- name
- type
delete:
summary: 'Delete transaction category'
operationId: deleteTransactionCategory
description: 'Delete a transaction category'
parameters: []
responses:
204:
description: ''
content:
application/json:
schema:
type: object
nullable: true
tags:
- 'Transaction Categories'
parameters:
-
in: path
name: transactionCategory
description: 'Transaction category UUID'
example: et
required: true
schema:
type: string
/api/units:
get:
summary: 'List units'
operationId: listUnits
description: 'List all units'
parameters:
-
in: query
name: q
description: ''
example: Structure
required: false
schema:
type: string
description: ''
example: Structure
nullable: true
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 6d2eac40-fcda-39b7-bb69-217249897dea
name: 'Sr. Ivan Delgado Vieira'
abbreviation: 'Sr. Emiliano Teobaldo Carrara Sobrinho'
description: 'Eos enim maxime aut et qui.'
created_at: null
updated_at: null
-
id: f7fbc6e1-2ecb-3a9b-885a-bef226e03b37
name: 'Sra. Mila Santacruz'
abbreviation: 'Igor Rocha'
description: 'Eos recusandae qui optio.'
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: 6d2eac40-fcda-39b7-bb69-217249897dea
name: 'Sr. Ivan Delgado Vieira'
abbreviation: 'Sr. Emiliano Teobaldo Carrara Sobrinho'
description: 'Eos enim maxime aut et qui.'
created_at: null
updated_at: null
-
id: f7fbc6e1-2ecb-3a9b-885a-bef226e03b37
name: 'Sra. Mila Santacruz'
abbreviation: 'Igor Rocha'
description: 'Eos recusandae qui optio.'
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 6d2eac40-fcda-39b7-bb69-217249897dea
name:
type: string
example: 'Sr. Ivan Delgado Vieira'
abbreviation:
type: string
example: 'Sr. Emiliano Teobaldo Carrara Sobrinho'
description:
type: string
example: 'Eos enim maxime aut et qui.'
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: 7d072ee2-a179-3d75-b390-6b4f798dd478
name: 'Lorena Valência'
abbreviation: 'Ivan Azevedo Cortês'
description: 'Et tempora inventore a.'
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 7d072ee2-a179-3d75-b390-6b4f798dd478
name:
type: string
example: 'Lorena Valência'
abbreviation:
type: string
example: 'Ivan Azevedo Cortês'
description:
type: string
example: 'Et tempora inventore a.'
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: ducimus
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: omnis
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: a333e080-f820-3e17-8178-6263dcac720b
name: 'Samanta Franecki DDS'
username: margret83
email: tony.johnson@example.com
image:
id: null
url: null
sectors: []
roles: []
-
id: 64852878-4a01-335a-8641-7f22db2f274b
name: 'Frederick Hilpert'
username: lind.harold
email: buckridge.lempi@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: a333e080-f820-3e17-8178-6263dcac720b
name: 'Samanta Franecki DDS'
username: margret83
email: tony.johnson@example.com
image:
id: null
url: null
sectors: []
roles: []
-
id: 64852878-4a01-335a-8641-7f22db2f274b
name: 'Frederick Hilpert'
username: lind.harold
email: buckridge.lempi@example.net
image:
id: null
url: null
sectors: []
roles: []
items:
type: object
properties:
id:
type: string
example: a333e080-f820-3e17-8178-6263dcac720b
name:
type: string
example: 'Samanta Franecki DDS'
username:
type: string
example: margret83
email:
type: string
example: tony.johnson@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: hagenes.alfredo
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:
- d7b5a78c-f1af-3588-acf0-20d51c46752a
items:
type: string
roles:
type: array
description: 'UUID da função. The uuid of an existing record in the roles table.'
example:
- e3f167bb-2801-30e7-bc66-f628830d5384
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: b83c66ce-405d-3d30-9a8e-5aec389182bd
name: 'Mr. Arne Hermiston DDS'
username: wilkinson.caden
email: karley18@example.com
image:
id: null
url: null
sectors: []
roles: []
properties:
data:
type: object
properties:
id:
type: string
example: b83c66ce-405d-3d30-9a8e-5aec389182bd
name:
type: string
example: 'Mr. Arne Hermiston DDS'
username:
type: string
example: wilkinson.caden
email:
type: string
example: karley18@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: waino.hermann
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:
- f9390345-206a-3322-ae20-4823e58e5559
items:
type: string
roles:
type: array
description: 'UUID da função. The uuid of an existing record in the roles table.'
example:
- 576a425a-e3a2-37dd-b3c5-5364f9774dc2
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:
- 1d78a79b-802e-3e3c-a66e-0649f81fd569
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: veniam
display_name: 'Facere sed excepturi tempora facilis.'
-
id: null
name: velit
display_name: 'Eum repellat illum quis laborum ullam et unde iure.'
properties:
data:
type: array
example:
-
id: null
name: veniam
display_name: 'Facere sed excepturi tempora facilis.'
-
id: null
name: velit
display_name: 'Eum repellat illum quis laborum ullam et unde iure.'
items:
type: object
properties:
id:
type: string
example: null
nullable: true
name:
type: string
example: veniam
display_name:
type: string
example: 'Facere sed excepturi tempora facilis.'
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: 33c1fc1f-d757-3d93-9063-d04ff35c483a
description: 'Sr. Filipe Rico'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
-
id: ddef6b02-740d-3505-b812-ae89db5bf16e
description: 'Wilson Erik Leon'
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: 33c1fc1f-d757-3d93-9063-d04ff35c483a
description: 'Sr. Filipe Rico'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
-
id: ddef6b02-740d-3505-b812-ae89db5bf16e
description: 'Wilson Erik Leon'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 33c1fc1f-d757-3d93-9063-d04ff35c483a
description:
type: string
example: 'Sr. Filipe Rico'
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: 95eabe51-1321-3a36-8be7-179de48ab30b
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: 11f642c0-275a-3a10-a3c5-125cd26da3b2
description: 'Ingrid Pacheco Alves'
work:
id: null
name: null
documents: []
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 11f642c0-275a-3a10-a3c5-125cd26da3b2
description:
type: string
example: 'Ingrid Pacheco Alves'
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: e8f0aff3-4978-3bed-9124-727721b2dcde
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: 8d698a99-aa95-3250-aeb1-69a7fc5b8a01
name: 'Sr. Emerson Ferraz Leon 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: '2019-09-26 18:12:48.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
-
id: 8014caca-78e6-30ef-a15e-785f45274647
name: "Graziela Daniella D'ávila Filho"
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: '1975-04-21 01:28:56.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: 8d698a99-aa95-3250-aeb1-69a7fc5b8a01
name: 'Sr. Emerson Ferraz Leon 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: '2019-09-26 18:12:48.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
-
id: 8014caca-78e6-30ef-a15e-785f45274647
name: "Graziela Daniella D'ávila Filho"
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: '1975-04-21 01:28:56.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
items:
type: object
properties:
id:
type: string
example: 8d698a99-aa95-3250-aeb1-69a7fc5b8a01
name:
type: string
example: 'Sr. Emerson Ferraz Leon 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: '2019-09-26 18:12:48.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: af1c73a9-0683-354f-a627-0da337b0def8
status_id:
type: string
description: 'Status id. The uuid of an existing record in the statuses table.'
example: d5b898fe-38d4-3b10-a605-3132b641e5af
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: 4787f6cc-9ac1-3dce-98d2-65ad8647a4bf
name: 'Sra. Aline Serrano 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: '2024-04-07 05:08:19.000000'
timezone_type: 3
timezone: America/Sao_Paulo
created_at: null
updated_at: null
properties:
data:
type: object
properties:
id:
type: string
example: 4787f6cc-9ac1-3dce-98d2-65ad8647a4bf
name:
type: string
example: 'Sra. Aline Serrano 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: '2024-04-07 05:08:19.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: c429aef6-39ac-3be4-a387-8f656508cbfb
status_id:
type: string
description: 'Status id. The uuid of an existing record in the statuses table.'
example: 164fe287-dade-39ff-9849-9c86a6049a21
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: f01bb388-9b90-3ba5-92bc-8c4a596b75e4
name: "Eula O'Reilly"
username: beatrice23
email: gfadel@example.net
image:
id: null
url: null
sectors: []
roles: []
-
id: 6801a7c2-1472-33a4-bd1d-2d46a11db7b2
name: 'Madonna Kuphal'
username: ywindler
email: aida.parker@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: f01bb388-9b90-3ba5-92bc-8c4a596b75e4
name: "Eula O'Reilly"
username: beatrice23
email: gfadel@example.net
image:
id: null
url: null
sectors: []
roles: []
-
id: 6801a7c2-1472-33a4-bd1d-2d46a11db7b2
name: 'Madonna Kuphal'
username: ywindler
email: aida.parker@example.net
image:
id: null
url: null
sectors: []
roles: []
items:
type: object
properties:
id:
type: string
example: f01bb388-9b90-3ba5-92bc-8c4a596b75e4
name:
type: string
example: "Eula O'Reilly"
username:
type: string
example: beatrice23
email:
type: string
example: gfadel@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:
- abc032ea-dbd7-3a86-ad7c-879bcfcfbe64
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:
- 196f9261-5423-38f2-abfc-4f09b58f2970
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:
- 78aadc72-b4e4-380d-85fa-ddc47ec8bb3e
items:
type: string
parameters:
-
in: path
name: work
description: 'Work UUID'
example: 019556e7-2e9f-777c-a177-30bbf0646c32
required: true
schema:
type: string