openapi: '3.0.3'
info:
title: Backbone API
version: '1.0.0'
description: |
Auto-generated by backbone-cli.
This API provides 11 standard CRUD endpoints for each model.
servers:
- url: /
description: Development server
tags:
- name: Accounts
description: Account management endpoints
- name: AccountingPosts
description: AccountingPost management endpoints
- name: CostCenters
description: CostCenter management endpoints
- name: EmvQrConfigs
description: EmvQrConfig management endpoints
- name: BankCheckSequences
description: BankCheckSequence management endpoints
- name: PrintedChecks
description: PrintedCheck management endpoints
- name: TaxTagRepairRuns
description: TaxTagRepairRun management endpoints
- name: FinancialStatements
description: FinancialStatement management endpoints
- name: FiscalPeriods
description: FiscalPeriod management endpoints
- name: Journals
description: Journal management endpoints
- name: JournalLines
description: JournalLine management endpoints
- name: Ledgers
description: Ledger management endpoints
- name: Reconciliations
description: Reconciliation management endpoints
- name: ReconciliationItems
description: ReconciliationItem management endpoints
- name: FullReconciles
description: FullReconcile management endpoints
- name: PartialReconciles
description: PartialReconcile management endpoints
paths:
/api/v1/accounting/accounts:
get:
tags:
- Accounts
summary: List Accounts
description: Get a paginated list of Accounts with optional filtering and sorting
operationId: listAccounts
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/AccountList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- Accounts
summary: Create Account
description: Create a new Account
operationId: createAccount
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAccountRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/accounts/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- Accounts
summary: Get Account by ID
operationId: getAccount
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- Accounts
summary: Update Account (full)
operationId: updateAccount
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAccountRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- Accounts
summary: Update Account (partial)
operationId: patchAccount
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchAccountRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- Accounts
summary: Delete Account (soft)
operationId: deleteAccount
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/accounts/bulk:
post:
tags:
- Accounts
summary: Bulk create Accounts
operationId: bulkCreateAccounts
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateAccountRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Account'
put:
tags:
- Accounts
summary: Bulk update Accounts (full, atomic)
operationId: bulkUpdateAccounts
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateAccountRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/AccountBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- Accounts
summary: Bulk partial-update Accounts (atomic)
operationId: bulkPatchAccounts
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/AccountBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/accounts/upsert:
post:
tags:
- Accounts
summary: Upsert Account
operationId: upsertAccount
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAccountRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
/api/v1/accounting/accounts/trash:
get:
tags:
- Accounts
summary: List deleted Accounts
operationId: listDeletedAccounts
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/AccountList'
/api/v1/accounting/accounts/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- Accounts
summary: Restore deleted Account
operationId: restoreAccount
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/accounts/empty:
delete:
tags:
- Accounts
summary: Empty trash for Accounts
operationId: emptyTrashAccounts
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/accounts/delete/bulk:
post:
tags:
- Accounts
summary: Bulk soft-delete Accounts by ids (atomic)
operationId: bulkDeleteAccounts
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/accounts/restore/bulk:
post:
tags:
- Accounts
summary: Bulk restore Accounts by ids (atomic)
operationId: bulkRestoreAccounts
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/AccountBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/accounts/restore/all:
post:
tags:
- Accounts
summary: Restore all soft-deleted Accounts
operationId: restoreAllAccounts
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/accounts/trash/bulk:
delete:
tags:
- Accounts
summary: Bulk permanently-delete Accounts from trash by ids (atomic)
operationId: bulkPermanentDeleteAccounts
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/accounting_posts:
get:
tags:
- AccountingPosts
summary: List AccountingPosts
description: Get a paginated list of AccountingPosts with optional filtering and sorting
operationId: listAccountingPosts
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/AccountingPostList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- AccountingPosts
summary: Create AccountingPost
description: Create a new AccountingPost
operationId: createAccountingPost
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAccountingPostRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/AccountingPost'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/accounting_posts/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- AccountingPosts
summary: Get AccountingPost by ID
operationId: getAccountingPost
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/AccountingPost'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- AccountingPosts
summary: Update AccountingPost (full)
operationId: updateAccountingPost
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAccountingPostRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/AccountingPost'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- AccountingPosts
summary: Update AccountingPost (partial)
operationId: patchAccountingPost
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchAccountingPostRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/AccountingPost'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- AccountingPosts
summary: Delete AccountingPost (soft)
operationId: deleteAccountingPost
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/accounting_posts/bulk:
post:
tags:
- AccountingPosts
summary: Bulk create AccountingPosts
operationId: bulkCreateAccountingPosts
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateAccountingPostRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AccountingPost'
put:
tags:
- AccountingPosts
summary: Bulk update AccountingPosts (full, atomic)
operationId: bulkUpdateAccountingPosts
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateAccountingPostRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/AccountingPostBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- AccountingPosts
summary: Bulk partial-update AccountingPosts (atomic)
operationId: bulkPatchAccountingPosts
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/AccountingPostBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/accounting_posts/upsert:
post:
tags:
- AccountingPosts
summary: Upsert AccountingPost
operationId: upsertAccountingPost
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAccountingPostRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/AccountingPost'
/api/v1/accounting/accounting_posts/trash:
get:
tags:
- AccountingPosts
summary: List deleted AccountingPosts
operationId: listDeletedAccountingPosts
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/AccountingPostList'
/api/v1/accounting/accounting_posts/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- AccountingPosts
summary: Restore deleted AccountingPost
operationId: restoreAccountingPost
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/AccountingPost'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/accounting_posts/empty:
delete:
tags:
- AccountingPosts
summary: Empty trash for AccountingPosts
operationId: emptyTrashAccountingPosts
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/accounting_posts/delete/bulk:
post:
tags:
- AccountingPosts
summary: Bulk soft-delete AccountingPosts by ids (atomic)
operationId: bulkDeleteAccountingPosts
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/accounting_posts/restore/bulk:
post:
tags:
- AccountingPosts
summary: Bulk restore AccountingPosts by ids (atomic)
operationId: bulkRestoreAccountingPosts
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/AccountingPostBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/accounting_posts/restore/all:
post:
tags:
- AccountingPosts
summary: Restore all soft-deleted AccountingPosts
operationId: restoreAllAccountingPosts
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/accounting_posts/trash/bulk:
delete:
tags:
- AccountingPosts
summary: Bulk permanently-delete AccountingPosts from trash by ids (atomic)
operationId: bulkPermanentDeleteAccountingPosts
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/cost_centers:
get:
tags:
- CostCenters
summary: List CostCenters
description: Get a paginated list of CostCenters with optional filtering and sorting
operationId: listCostCenters
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/CostCenterList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- CostCenters
summary: Create CostCenter
description: Create a new CostCenter
operationId: createCostCenter
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCostCenterRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/CostCenter'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/cost_centers/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- CostCenters
summary: Get CostCenter by ID
operationId: getCostCenter
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/CostCenter'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- CostCenters
summary: Update CostCenter (full)
operationId: updateCostCenter
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCostCenterRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/CostCenter'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- CostCenters
summary: Update CostCenter (partial)
operationId: patchCostCenter
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchCostCenterRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/CostCenter'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- CostCenters
summary: Delete CostCenter (soft)
operationId: deleteCostCenter
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/cost_centers/bulk:
post:
tags:
- CostCenters
summary: Bulk create CostCenters
operationId: bulkCreateCostCenters
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateCostCenterRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CostCenter'
put:
tags:
- CostCenters
summary: Bulk update CostCenters (full, atomic)
operationId: bulkUpdateCostCenters
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateCostCenterRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/CostCenterBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- CostCenters
summary: Bulk partial-update CostCenters (atomic)
operationId: bulkPatchCostCenters
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/CostCenterBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/cost_centers/upsert:
post:
tags:
- CostCenters
summary: Upsert CostCenter
operationId: upsertCostCenter
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCostCenterRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/CostCenter'
/api/v1/accounting/cost_centers/trash:
get:
tags:
- CostCenters
summary: List deleted CostCenters
operationId: listDeletedCostCenters
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/CostCenterList'
/api/v1/accounting/cost_centers/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- CostCenters
summary: Restore deleted CostCenter
operationId: restoreCostCenter
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/CostCenter'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/cost_centers/empty:
delete:
tags:
- CostCenters
summary: Empty trash for CostCenters
operationId: emptyTrashCostCenters
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/cost_centers/delete/bulk:
post:
tags:
- CostCenters
summary: Bulk soft-delete CostCenters by ids (atomic)
operationId: bulkDeleteCostCenters
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/cost_centers/restore/bulk:
post:
tags:
- CostCenters
summary: Bulk restore CostCenters by ids (atomic)
operationId: bulkRestoreCostCenters
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/CostCenterBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/cost_centers/restore/all:
post:
tags:
- CostCenters
summary: Restore all soft-deleted CostCenters
operationId: restoreAllCostCenters
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/cost_centers/trash/bulk:
delete:
tags:
- CostCenters
summary: Bulk permanently-delete CostCenters from trash by ids (atomic)
operationId: bulkPermanentDeleteCostCenters
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/emv_qr_configs:
get:
tags:
- EmvQrConfigs
summary: List EmvQrConfigs
description: Get a paginated list of EmvQrConfigs with optional filtering and sorting
operationId: listEmvQrConfigs
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/EmvQrConfigList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- EmvQrConfigs
summary: Create EmvQrConfig
description: Create a new EmvQrConfig
operationId: createEmvQrConfig
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateEmvQrConfigRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/EmvQrConfig'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/emv_qr_configs/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- EmvQrConfigs
summary: Get EmvQrConfig by ID
operationId: getEmvQrConfig
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/EmvQrConfig'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- EmvQrConfigs
summary: Update EmvQrConfig (full)
operationId: updateEmvQrConfig
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateEmvQrConfigRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/EmvQrConfig'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- EmvQrConfigs
summary: Update EmvQrConfig (partial)
operationId: patchEmvQrConfig
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchEmvQrConfigRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/EmvQrConfig'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- EmvQrConfigs
summary: Delete EmvQrConfig (soft)
operationId: deleteEmvQrConfig
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/emv_qr_configs/bulk:
post:
tags:
- EmvQrConfigs
summary: Bulk create EmvQrConfigs
operationId: bulkCreateEmvQrConfigs
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateEmvQrConfigRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmvQrConfig'
put:
tags:
- EmvQrConfigs
summary: Bulk update EmvQrConfigs (full, atomic)
operationId: bulkUpdateEmvQrConfigs
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateEmvQrConfigRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/EmvQrConfigBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- EmvQrConfigs
summary: Bulk partial-update EmvQrConfigs (atomic)
operationId: bulkPatchEmvQrConfigs
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/EmvQrConfigBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/emv_qr_configs/upsert:
post:
tags:
- EmvQrConfigs
summary: Upsert EmvQrConfig
operationId: upsertEmvQrConfig
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateEmvQrConfigRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/EmvQrConfig'
/api/v1/accounting/emv_qr_configs/trash:
get:
tags:
- EmvQrConfigs
summary: List deleted EmvQrConfigs
operationId: listDeletedEmvQrConfigs
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/EmvQrConfigList'
/api/v1/accounting/emv_qr_configs/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- EmvQrConfigs
summary: Restore deleted EmvQrConfig
operationId: restoreEmvQrConfig
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/EmvQrConfig'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/emv_qr_configs/empty:
delete:
tags:
- EmvQrConfigs
summary: Empty trash for EmvQrConfigs
operationId: emptyTrashEmvQrConfigs
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/emv_qr_configs/delete/bulk:
post:
tags:
- EmvQrConfigs
summary: Bulk soft-delete EmvQrConfigs by ids (atomic)
operationId: bulkDeleteEmvQrConfigs
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/emv_qr_configs/restore/bulk:
post:
tags:
- EmvQrConfigs
summary: Bulk restore EmvQrConfigs by ids (atomic)
operationId: bulkRestoreEmvQrConfigs
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/EmvQrConfigBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/emv_qr_configs/restore/all:
post:
tags:
- EmvQrConfigs
summary: Restore all soft-deleted EmvQrConfigs
operationId: restoreAllEmvQrConfigs
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/emv_qr_configs/trash/bulk:
delete:
tags:
- EmvQrConfigs
summary: Bulk permanently-delete EmvQrConfigs from trash by ids (atomic)
operationId: bulkPermanentDeleteEmvQrConfigs
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/bank_check_sequences:
get:
tags:
- BankCheckSequences
summary: List BankCheckSequences
description: Get a paginated list of BankCheckSequences with optional filtering and sorting
operationId: listBankCheckSequences
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/BankCheckSequenceList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- BankCheckSequences
summary: Create BankCheckSequence
description: Create a new BankCheckSequence
operationId: createBankCheckSequence
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBankCheckSequenceRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/BankCheckSequence'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/bank_check_sequences/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- BankCheckSequences
summary: Get BankCheckSequence by ID
operationId: getBankCheckSequence
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/BankCheckSequence'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- BankCheckSequences
summary: Update BankCheckSequence (full)
operationId: updateBankCheckSequence
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateBankCheckSequenceRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/BankCheckSequence'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- BankCheckSequences
summary: Update BankCheckSequence (partial)
operationId: patchBankCheckSequence
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchBankCheckSequenceRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/BankCheckSequence'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- BankCheckSequences
summary: Delete BankCheckSequence (soft)
operationId: deleteBankCheckSequence
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/bank_check_sequences/bulk:
post:
tags:
- BankCheckSequences
summary: Bulk create BankCheckSequences
operationId: bulkCreateBankCheckSequences
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateBankCheckSequenceRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/BankCheckSequence'
put:
tags:
- BankCheckSequences
summary: Bulk update BankCheckSequences (full, atomic)
operationId: bulkUpdateBankCheckSequences
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateBankCheckSequenceRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/BankCheckSequenceBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- BankCheckSequences
summary: Bulk partial-update BankCheckSequences (atomic)
operationId: bulkPatchBankCheckSequences
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/BankCheckSequenceBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/bank_check_sequences/upsert:
post:
tags:
- BankCheckSequences
summary: Upsert BankCheckSequence
operationId: upsertBankCheckSequence
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateBankCheckSequenceRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/BankCheckSequence'
/api/v1/accounting/bank_check_sequences/trash:
get:
tags:
- BankCheckSequences
summary: List deleted BankCheckSequences
operationId: listDeletedBankCheckSequences
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/BankCheckSequenceList'
/api/v1/accounting/bank_check_sequences/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- BankCheckSequences
summary: Restore deleted BankCheckSequence
operationId: restoreBankCheckSequence
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/BankCheckSequence'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/bank_check_sequences/empty:
delete:
tags:
- BankCheckSequences
summary: Empty trash for BankCheckSequences
operationId: emptyTrashBankCheckSequences
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/bank_check_sequences/delete/bulk:
post:
tags:
- BankCheckSequences
summary: Bulk soft-delete BankCheckSequences by ids (atomic)
operationId: bulkDeleteBankCheckSequences
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/bank_check_sequences/restore/bulk:
post:
tags:
- BankCheckSequences
summary: Bulk restore BankCheckSequences by ids (atomic)
operationId: bulkRestoreBankCheckSequences
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/BankCheckSequenceBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/bank_check_sequences/restore/all:
post:
tags:
- BankCheckSequences
summary: Restore all soft-deleted BankCheckSequences
operationId: restoreAllBankCheckSequences
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/bank_check_sequences/trash/bulk:
delete:
tags:
- BankCheckSequences
summary: Bulk permanently-delete BankCheckSequences from trash by ids (atomic)
operationId: bulkPermanentDeleteBankCheckSequences
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/printed_checks:
get:
tags:
- PrintedChecks
summary: List PrintedChecks
description: Get a paginated list of PrintedChecks with optional filtering and sorting
operationId: listPrintedChecks
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PrintedCheckList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- PrintedChecks
summary: Create PrintedCheck
description: Create a new PrintedCheck
operationId: createPrintedCheck
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePrintedCheckRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/PrintedCheck'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/printed_checks/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- PrintedChecks
summary: Get PrintedCheck by ID
operationId: getPrintedCheck
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PrintedCheck'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- PrintedChecks
summary: Update PrintedCheck (full)
operationId: updatePrintedCheck
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePrintedCheckRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PrintedCheck'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- PrintedChecks
summary: Update PrintedCheck (partial)
operationId: patchPrintedCheck
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchPrintedCheckRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PrintedCheck'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- PrintedChecks
summary: Delete PrintedCheck (soft)
operationId: deletePrintedCheck
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/printed_checks/bulk:
post:
tags:
- PrintedChecks
summary: Bulk create PrintedChecks
operationId: bulkCreatePrintedChecks
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreatePrintedCheckRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PrintedCheck'
put:
tags:
- PrintedChecks
summary: Bulk update PrintedChecks (full, atomic)
operationId: bulkUpdatePrintedChecks
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdatePrintedCheckRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PrintedCheckBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- PrintedChecks
summary: Bulk partial-update PrintedChecks (atomic)
operationId: bulkPatchPrintedChecks
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PrintedCheckBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/printed_checks/upsert:
post:
tags:
- PrintedChecks
summary: Upsert PrintedCheck
operationId: upsertPrintedCheck
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePrintedCheckRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/PrintedCheck'
/api/v1/accounting/printed_checks/trash:
get:
tags:
- PrintedChecks
summary: List deleted PrintedChecks
operationId: listDeletedPrintedChecks
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PrintedCheckList'
/api/v1/accounting/printed_checks/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- PrintedChecks
summary: Restore deleted PrintedCheck
operationId: restorePrintedCheck
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PrintedCheck'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/printed_checks/empty:
delete:
tags:
- PrintedChecks
summary: Empty trash for PrintedChecks
operationId: emptyTrashPrintedChecks
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/printed_checks/delete/bulk:
post:
tags:
- PrintedChecks
summary: Bulk soft-delete PrintedChecks by ids (atomic)
operationId: bulkDeletePrintedChecks
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/printed_checks/restore/bulk:
post:
tags:
- PrintedChecks
summary: Bulk restore PrintedChecks by ids (atomic)
operationId: bulkRestorePrintedChecks
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PrintedCheckBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/printed_checks/restore/all:
post:
tags:
- PrintedChecks
summary: Restore all soft-deleted PrintedChecks
operationId: restoreAllPrintedChecks
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/printed_checks/trash/bulk:
delete:
tags:
- PrintedChecks
summary: Bulk permanently-delete PrintedChecks from trash by ids (atomic)
operationId: bulkPermanentDeletePrintedChecks
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/tax_tag_repair_runs:
get:
tags:
- TaxTagRepairRuns
summary: List TaxTagRepairRuns
description: Get a paginated list of TaxTagRepairRuns with optional filtering and sorting
operationId: listTaxTagRepairRuns
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/TaxTagRepairRunList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- TaxTagRepairRuns
summary: Create TaxTagRepairRun
description: Create a new TaxTagRepairRun
operationId: createTaxTagRepairRun
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTaxTagRepairRunRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/TaxTagRepairRun'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/tax_tag_repair_runs/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- TaxTagRepairRuns
summary: Get TaxTagRepairRun by ID
operationId: getTaxTagRepairRun
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/TaxTagRepairRun'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- TaxTagRepairRuns
summary: Update TaxTagRepairRun (full)
operationId: updateTaxTagRepairRun
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTaxTagRepairRunRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/TaxTagRepairRun'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- TaxTagRepairRuns
summary: Update TaxTagRepairRun (partial)
operationId: patchTaxTagRepairRun
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchTaxTagRepairRunRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/TaxTagRepairRun'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- TaxTagRepairRuns
summary: Delete TaxTagRepairRun (soft)
operationId: deleteTaxTagRepairRun
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/tax_tag_repair_runs/bulk:
post:
tags:
- TaxTagRepairRuns
summary: Bulk create TaxTagRepairRuns
operationId: bulkCreateTaxTagRepairRuns
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateTaxTagRepairRunRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TaxTagRepairRun'
put:
tags:
- TaxTagRepairRuns
summary: Bulk update TaxTagRepairRuns (full, atomic)
operationId: bulkUpdateTaxTagRepairRuns
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateTaxTagRepairRunRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/TaxTagRepairRunBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- TaxTagRepairRuns
summary: Bulk partial-update TaxTagRepairRuns (atomic)
operationId: bulkPatchTaxTagRepairRuns
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/TaxTagRepairRunBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/tax_tag_repair_runs/upsert:
post:
tags:
- TaxTagRepairRuns
summary: Upsert TaxTagRepairRun
operationId: upsertTaxTagRepairRun
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTaxTagRepairRunRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/TaxTagRepairRun'
/api/v1/accounting/tax_tag_repair_runs/trash:
get:
tags:
- TaxTagRepairRuns
summary: List deleted TaxTagRepairRuns
operationId: listDeletedTaxTagRepairRuns
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/TaxTagRepairRunList'
/api/v1/accounting/tax_tag_repair_runs/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- TaxTagRepairRuns
summary: Restore deleted TaxTagRepairRun
operationId: restoreTaxTagRepairRun
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/TaxTagRepairRun'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/tax_tag_repair_runs/empty:
delete:
tags:
- TaxTagRepairRuns
summary: Empty trash for TaxTagRepairRuns
operationId: emptyTrashTaxTagRepairRuns
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/tax_tag_repair_runs/delete/bulk:
post:
tags:
- TaxTagRepairRuns
summary: Bulk soft-delete TaxTagRepairRuns by ids (atomic)
operationId: bulkDeleteTaxTagRepairRuns
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/tax_tag_repair_runs/restore/bulk:
post:
tags:
- TaxTagRepairRuns
summary: Bulk restore TaxTagRepairRuns by ids (atomic)
operationId: bulkRestoreTaxTagRepairRuns
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/TaxTagRepairRunBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/tax_tag_repair_runs/restore/all:
post:
tags:
- TaxTagRepairRuns
summary: Restore all soft-deleted TaxTagRepairRuns
operationId: restoreAllTaxTagRepairRuns
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/tax_tag_repair_runs/trash/bulk:
delete:
tags:
- TaxTagRepairRuns
summary: Bulk permanently-delete TaxTagRepairRuns from trash by ids (atomic)
operationId: bulkPermanentDeleteTaxTagRepairRuns
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/financial_statements:
get:
tags:
- FinancialStatements
summary: List FinancialStatements
description: Get a paginated list of FinancialStatements with optional filtering and sorting
operationId: listFinancialStatements
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/FinancialStatementList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- FinancialStatements
summary: Create FinancialStatement
description: Create a new FinancialStatement
operationId: createFinancialStatement
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateFinancialStatementRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/FinancialStatement'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/financial_statements/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- FinancialStatements
summary: Get FinancialStatement by ID
operationId: getFinancialStatement
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/FinancialStatement'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- FinancialStatements
summary: Update FinancialStatement (full)
operationId: updateFinancialStatement
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateFinancialStatementRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/FinancialStatement'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- FinancialStatements
summary: Update FinancialStatement (partial)
operationId: patchFinancialStatement
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchFinancialStatementRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/FinancialStatement'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- FinancialStatements
summary: Delete FinancialStatement (soft)
operationId: deleteFinancialStatement
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/financial_statements/bulk:
post:
tags:
- FinancialStatements
summary: Bulk create FinancialStatements
operationId: bulkCreateFinancialStatements
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateFinancialStatementRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FinancialStatement'
put:
tags:
- FinancialStatements
summary: Bulk update FinancialStatements (full, atomic)
operationId: bulkUpdateFinancialStatements
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateFinancialStatementRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/FinancialStatementBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- FinancialStatements
summary: Bulk partial-update FinancialStatements (atomic)
operationId: bulkPatchFinancialStatements
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/FinancialStatementBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/financial_statements/upsert:
post:
tags:
- FinancialStatements
summary: Upsert FinancialStatement
operationId: upsertFinancialStatement
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateFinancialStatementRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/FinancialStatement'
/api/v1/accounting/financial_statements/trash:
get:
tags:
- FinancialStatements
summary: List deleted FinancialStatements
operationId: listDeletedFinancialStatements
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/FinancialStatementList'
/api/v1/accounting/financial_statements/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- FinancialStatements
summary: Restore deleted FinancialStatement
operationId: restoreFinancialStatement
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/FinancialStatement'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/financial_statements/empty:
delete:
tags:
- FinancialStatements
summary: Empty trash for FinancialStatements
operationId: emptyTrashFinancialStatements
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/financial_statements/delete/bulk:
post:
tags:
- FinancialStatements
summary: Bulk soft-delete FinancialStatements by ids (atomic)
operationId: bulkDeleteFinancialStatements
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/financial_statements/restore/bulk:
post:
tags:
- FinancialStatements
summary: Bulk restore FinancialStatements by ids (atomic)
operationId: bulkRestoreFinancialStatements
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/FinancialStatementBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/financial_statements/restore/all:
post:
tags:
- FinancialStatements
summary: Restore all soft-deleted FinancialStatements
operationId: restoreAllFinancialStatements
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/financial_statements/trash/bulk:
delete:
tags:
- FinancialStatements
summary: Bulk permanently-delete FinancialStatements from trash by ids (atomic)
operationId: bulkPermanentDeleteFinancialStatements
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/fiscal_periods:
get:
tags:
- FiscalPeriods
summary: List FiscalPeriods
description: Get a paginated list of FiscalPeriods with optional filtering and sorting
operationId: listFiscalPeriods
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/FiscalPeriodList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- FiscalPeriods
summary: Create FiscalPeriod
description: Create a new FiscalPeriod
operationId: createFiscalPeriod
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateFiscalPeriodRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/FiscalPeriod'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/fiscal_periods/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- FiscalPeriods
summary: Get FiscalPeriod by ID
operationId: getFiscalPeriod
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/FiscalPeriod'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- FiscalPeriods
summary: Update FiscalPeriod (full)
operationId: updateFiscalPeriod
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateFiscalPeriodRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/FiscalPeriod'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- FiscalPeriods
summary: Update FiscalPeriod (partial)
operationId: patchFiscalPeriod
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchFiscalPeriodRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/FiscalPeriod'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- FiscalPeriods
summary: Delete FiscalPeriod (soft)
operationId: deleteFiscalPeriod
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/fiscal_periods/bulk:
post:
tags:
- FiscalPeriods
summary: Bulk create FiscalPeriods
operationId: bulkCreateFiscalPeriods
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateFiscalPeriodRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FiscalPeriod'
put:
tags:
- FiscalPeriods
summary: Bulk update FiscalPeriods (full, atomic)
operationId: bulkUpdateFiscalPeriods
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateFiscalPeriodRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/FiscalPeriodBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- FiscalPeriods
summary: Bulk partial-update FiscalPeriods (atomic)
operationId: bulkPatchFiscalPeriods
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/FiscalPeriodBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/fiscal_periods/upsert:
post:
tags:
- FiscalPeriods
summary: Upsert FiscalPeriod
operationId: upsertFiscalPeriod
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateFiscalPeriodRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/FiscalPeriod'
/api/v1/accounting/fiscal_periods/trash:
get:
tags:
- FiscalPeriods
summary: List deleted FiscalPeriods
operationId: listDeletedFiscalPeriods
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/FiscalPeriodList'
/api/v1/accounting/fiscal_periods/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- FiscalPeriods
summary: Restore deleted FiscalPeriod
operationId: restoreFiscalPeriod
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/FiscalPeriod'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/fiscal_periods/empty:
delete:
tags:
- FiscalPeriods
summary: Empty trash for FiscalPeriods
operationId: emptyTrashFiscalPeriods
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/fiscal_periods/delete/bulk:
post:
tags:
- FiscalPeriods
summary: Bulk soft-delete FiscalPeriods by ids (atomic)
operationId: bulkDeleteFiscalPeriods
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/fiscal_periods/restore/bulk:
post:
tags:
- FiscalPeriods
summary: Bulk restore FiscalPeriods by ids (atomic)
operationId: bulkRestoreFiscalPeriods
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/FiscalPeriodBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/fiscal_periods/restore/all:
post:
tags:
- FiscalPeriods
summary: Restore all soft-deleted FiscalPeriods
operationId: restoreAllFiscalPeriods
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/fiscal_periods/trash/bulk:
delete:
tags:
- FiscalPeriods
summary: Bulk permanently-delete FiscalPeriods from trash by ids (atomic)
operationId: bulkPermanentDeleteFiscalPeriods
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/journals:
get:
tags:
- Journals
summary: List Journals
description: Get a paginated list of Journals with optional filtering and sorting
operationId: listJournals
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/JournalList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- Journals
summary: Create Journal
description: Create a new Journal
operationId: createJournal
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateJournalRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/Journal'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/journals/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- Journals
summary: Get Journal by ID
operationId: getJournal
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/Journal'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- Journals
summary: Update Journal (full)
operationId: updateJournal
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateJournalRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/Journal'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- Journals
summary: Update Journal (partial)
operationId: patchJournal
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchJournalRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/Journal'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- Journals
summary: Delete Journal (soft)
operationId: deleteJournal
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/journals/bulk:
post:
tags:
- Journals
summary: Bulk create Journals
operationId: bulkCreateJournals
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateJournalRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Journal'
put:
tags:
- Journals
summary: Bulk update Journals (full, atomic)
operationId: bulkUpdateJournals
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateJournalRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/JournalBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- Journals
summary: Bulk partial-update Journals (atomic)
operationId: bulkPatchJournals
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/JournalBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/journals/upsert:
post:
tags:
- Journals
summary: Upsert Journal
operationId: upsertJournal
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateJournalRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/Journal'
/api/v1/accounting/journals/trash:
get:
tags:
- Journals
summary: List deleted Journals
operationId: listDeletedJournals
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/JournalList'
/api/v1/accounting/journals/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- Journals
summary: Restore deleted Journal
operationId: restoreJournal
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/Journal'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/journals/empty:
delete:
tags:
- Journals
summary: Empty trash for Journals
operationId: emptyTrashJournals
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/journals/delete/bulk:
post:
tags:
- Journals
summary: Bulk soft-delete Journals by ids (atomic)
operationId: bulkDeleteJournals
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/journals/restore/bulk:
post:
tags:
- Journals
summary: Bulk restore Journals by ids (atomic)
operationId: bulkRestoreJournals
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/JournalBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/journals/restore/all:
post:
tags:
- Journals
summary: Restore all soft-deleted Journals
operationId: restoreAllJournals
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/journals/trash/bulk:
delete:
tags:
- Journals
summary: Bulk permanently-delete Journals from trash by ids (atomic)
operationId: bulkPermanentDeleteJournals
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/journal_lines:
get:
tags:
- JournalLines
summary: List JournalLines
description: Get a paginated list of JournalLines with optional filtering and sorting
operationId: listJournalLines
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/JournalLineList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- JournalLines
summary: Create JournalLine
description: Create a new JournalLine
operationId: createJournalLine
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateJournalLineRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/JournalLine'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/journal_lines/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- JournalLines
summary: Get JournalLine by ID
operationId: getJournalLine
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/JournalLine'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- JournalLines
summary: Update JournalLine (full)
operationId: updateJournalLine
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateJournalLineRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/JournalLine'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- JournalLines
summary: Update JournalLine (partial)
operationId: patchJournalLine
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchJournalLineRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/JournalLine'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- JournalLines
summary: Delete JournalLine (soft)
operationId: deleteJournalLine
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/journal_lines/bulk:
post:
tags:
- JournalLines
summary: Bulk create JournalLines
operationId: bulkCreateJournalLines
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateJournalLineRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/JournalLine'
put:
tags:
- JournalLines
summary: Bulk update JournalLines (full, atomic)
operationId: bulkUpdateJournalLines
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateJournalLineRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/JournalLineBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- JournalLines
summary: Bulk partial-update JournalLines (atomic)
operationId: bulkPatchJournalLines
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/JournalLineBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/journal_lines/upsert:
post:
tags:
- JournalLines
summary: Upsert JournalLine
operationId: upsertJournalLine
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateJournalLineRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/JournalLine'
/api/v1/accounting/journal_lines/trash:
get:
tags:
- JournalLines
summary: List deleted JournalLines
operationId: listDeletedJournalLines
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/JournalLineList'
/api/v1/accounting/journal_lines/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- JournalLines
summary: Restore deleted JournalLine
operationId: restoreJournalLine
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/JournalLine'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/journal_lines/empty:
delete:
tags:
- JournalLines
summary: Empty trash for JournalLines
operationId: emptyTrashJournalLines
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/journal_lines/delete/bulk:
post:
tags:
- JournalLines
summary: Bulk soft-delete JournalLines by ids (atomic)
operationId: bulkDeleteJournalLines
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/journal_lines/restore/bulk:
post:
tags:
- JournalLines
summary: Bulk restore JournalLines by ids (atomic)
operationId: bulkRestoreJournalLines
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/JournalLineBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/journal_lines/restore/all:
post:
tags:
- JournalLines
summary: Restore all soft-deleted JournalLines
operationId: restoreAllJournalLines
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/journal_lines/trash/bulk:
delete:
tags:
- JournalLines
summary: Bulk permanently-delete JournalLines from trash by ids (atomic)
operationId: bulkPermanentDeleteJournalLines
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/ledgers:
get:
tags:
- Ledgers
summary: List Ledgers
description: Get a paginated list of Ledgers with optional filtering and sorting
operationId: listLedgers
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/LedgerList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- Ledgers
summary: Create Ledger
description: Create a new Ledger
operationId: createLedger
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateLedgerRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/Ledger'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/ledgers/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- Ledgers
summary: Get Ledger by ID
operationId: getLedger
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/Ledger'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- Ledgers
summary: Update Ledger (full)
operationId: updateLedger
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateLedgerRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/Ledger'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- Ledgers
summary: Update Ledger (partial)
operationId: patchLedger
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchLedgerRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/Ledger'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- Ledgers
summary: Delete Ledger (soft)
operationId: deleteLedger
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/ledgers/bulk:
post:
tags:
- Ledgers
summary: Bulk create Ledgers
operationId: bulkCreateLedgers
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateLedgerRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Ledger'
put:
tags:
- Ledgers
summary: Bulk update Ledgers (full, atomic)
operationId: bulkUpdateLedgers
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateLedgerRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/LedgerBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- Ledgers
summary: Bulk partial-update Ledgers (atomic)
operationId: bulkPatchLedgers
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/LedgerBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/ledgers/upsert:
post:
tags:
- Ledgers
summary: Upsert Ledger
operationId: upsertLedger
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateLedgerRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/Ledger'
/api/v1/accounting/ledgers/trash:
get:
tags:
- Ledgers
summary: List deleted Ledgers
operationId: listDeletedLedgers
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/LedgerList'
/api/v1/accounting/ledgers/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- Ledgers
summary: Restore deleted Ledger
operationId: restoreLedger
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/Ledger'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/ledgers/empty:
delete:
tags:
- Ledgers
summary: Empty trash for Ledgers
operationId: emptyTrashLedgers
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/ledgers/delete/bulk:
post:
tags:
- Ledgers
summary: Bulk soft-delete Ledgers by ids (atomic)
operationId: bulkDeleteLedgers
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/ledgers/restore/bulk:
post:
tags:
- Ledgers
summary: Bulk restore Ledgers by ids (atomic)
operationId: bulkRestoreLedgers
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/LedgerBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/ledgers/restore/all:
post:
tags:
- Ledgers
summary: Restore all soft-deleted Ledgers
operationId: restoreAllLedgers
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/ledgers/trash/bulk:
delete:
tags:
- Ledgers
summary: Bulk permanently-delete Ledgers from trash by ids (atomic)
operationId: bulkPermanentDeleteLedgers
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/reconciliations:
get:
tags:
- Reconciliations
summary: List Reconciliations
description: Get a paginated list of Reconciliations with optional filtering and sorting
operationId: listReconciliations
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- Reconciliations
summary: Create Reconciliation
description: Create a new Reconciliation
operationId: createReconciliation
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateReconciliationRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/Reconciliation'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/reconciliations/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- Reconciliations
summary: Get Reconciliation by ID
operationId: getReconciliation
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/Reconciliation'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- Reconciliations
summary: Update Reconciliation (full)
operationId: updateReconciliation
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateReconciliationRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/Reconciliation'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- Reconciliations
summary: Update Reconciliation (partial)
operationId: patchReconciliation
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchReconciliationRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/Reconciliation'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- Reconciliations
summary: Delete Reconciliation (soft)
operationId: deleteReconciliation
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/reconciliations/bulk:
post:
tags:
- Reconciliations
summary: Bulk create Reconciliations
operationId: bulkCreateReconciliations
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateReconciliationRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Reconciliation'
put:
tags:
- Reconciliations
summary: Bulk update Reconciliations (full, atomic)
operationId: bulkUpdateReconciliations
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateReconciliationRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- Reconciliations
summary: Bulk partial-update Reconciliations (atomic)
operationId: bulkPatchReconciliations
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/reconciliations/upsert:
post:
tags:
- Reconciliations
summary: Upsert Reconciliation
operationId: upsertReconciliation
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateReconciliationRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/Reconciliation'
/api/v1/accounting/reconciliations/trash:
get:
tags:
- Reconciliations
summary: List deleted Reconciliations
operationId: listDeletedReconciliations
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationList'
/api/v1/accounting/reconciliations/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- Reconciliations
summary: Restore deleted Reconciliation
operationId: restoreReconciliation
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/Reconciliation'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/reconciliations/empty:
delete:
tags:
- Reconciliations
summary: Empty trash for Reconciliations
operationId: emptyTrashReconciliations
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/reconciliations/delete/bulk:
post:
tags:
- Reconciliations
summary: Bulk soft-delete Reconciliations by ids (atomic)
operationId: bulkDeleteReconciliations
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/reconciliations/restore/bulk:
post:
tags:
- Reconciliations
summary: Bulk restore Reconciliations by ids (atomic)
operationId: bulkRestoreReconciliations
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/reconciliations/restore/all:
post:
tags:
- Reconciliations
summary: Restore all soft-deleted Reconciliations
operationId: restoreAllReconciliations
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/reconciliations/trash/bulk:
delete:
tags:
- Reconciliations
summary: Bulk permanently-delete Reconciliations from trash by ids (atomic)
operationId: bulkPermanentDeleteReconciliations
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/reconciliation_items:
get:
tags:
- ReconciliationItems
summary: List ReconciliationItems
description: Get a paginated list of ReconciliationItems with optional filtering and sorting
operationId: listReconciliationItems
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationItemList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- ReconciliationItems
summary: Create ReconciliationItem
description: Create a new ReconciliationItem
operationId: createReconciliationItem
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateReconciliationItemRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationItem'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/reconciliation_items/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- ReconciliationItems
summary: Get ReconciliationItem by ID
operationId: getReconciliationItem
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationItem'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- ReconciliationItems
summary: Update ReconciliationItem (full)
operationId: updateReconciliationItem
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateReconciliationItemRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationItem'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- ReconciliationItems
summary: Update ReconciliationItem (partial)
operationId: patchReconciliationItem
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchReconciliationItemRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationItem'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- ReconciliationItems
summary: Delete ReconciliationItem (soft)
operationId: deleteReconciliationItem
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/reconciliation_items/bulk:
post:
tags:
- ReconciliationItems
summary: Bulk create ReconciliationItems
operationId: bulkCreateReconciliationItems
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateReconciliationItemRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ReconciliationItem'
put:
tags:
- ReconciliationItems
summary: Bulk update ReconciliationItems (full, atomic)
operationId: bulkUpdateReconciliationItems
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateReconciliationItemRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationItemBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- ReconciliationItems
summary: Bulk partial-update ReconciliationItems (atomic)
operationId: bulkPatchReconciliationItems
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationItemBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/reconciliation_items/upsert:
post:
tags:
- ReconciliationItems
summary: Upsert ReconciliationItem
operationId: upsertReconciliationItem
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateReconciliationItemRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationItem'
/api/v1/accounting/reconciliation_items/trash:
get:
tags:
- ReconciliationItems
summary: List deleted ReconciliationItems
operationId: listDeletedReconciliationItems
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationItemList'
/api/v1/accounting/reconciliation_items/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- ReconciliationItems
summary: Restore deleted ReconciliationItem
operationId: restoreReconciliationItem
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationItem'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/reconciliation_items/empty:
delete:
tags:
- ReconciliationItems
summary: Empty trash for ReconciliationItems
operationId: emptyTrashReconciliationItems
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/reconciliation_items/delete/bulk:
post:
tags:
- ReconciliationItems
summary: Bulk soft-delete ReconciliationItems by ids (atomic)
operationId: bulkDeleteReconciliationItems
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/reconciliation_items/restore/bulk:
post:
tags:
- ReconciliationItems
summary: Bulk restore ReconciliationItems by ids (atomic)
operationId: bulkRestoreReconciliationItems
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/ReconciliationItemBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/reconciliation_items/restore/all:
post:
tags:
- ReconciliationItems
summary: Restore all soft-deleted ReconciliationItems
operationId: restoreAllReconciliationItems
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/reconciliation_items/trash/bulk:
delete:
tags:
- ReconciliationItems
summary: Bulk permanently-delete ReconciliationItems from trash by ids (atomic)
operationId: bulkPermanentDeleteReconciliationItems
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/full_reconciles:
get:
tags:
- FullReconciles
summary: List FullReconciles
description: Get a paginated list of FullReconciles with optional filtering and sorting
operationId: listFullReconciles
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/FullReconcileList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- FullReconciles
summary: Create FullReconcile
description: Create a new FullReconcile
operationId: createFullReconcile
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateFullReconcileRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/FullReconcile'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/full_reconciles/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- FullReconciles
summary: Get FullReconcile by ID
operationId: getFullReconcile
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/FullReconcile'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- FullReconciles
summary: Update FullReconcile (full)
operationId: updateFullReconcile
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateFullReconcileRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/FullReconcile'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- FullReconciles
summary: Update FullReconcile (partial)
operationId: patchFullReconcile
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchFullReconcileRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/FullReconcile'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- FullReconciles
summary: Delete FullReconcile (soft)
operationId: deleteFullReconcile
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/full_reconciles/bulk:
post:
tags:
- FullReconciles
summary: Bulk create FullReconciles
operationId: bulkCreateFullReconciles
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateFullReconcileRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FullReconcile'
put:
tags:
- FullReconciles
summary: Bulk update FullReconciles (full, atomic)
operationId: bulkUpdateFullReconciles
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateFullReconcileRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/FullReconcileBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- FullReconciles
summary: Bulk partial-update FullReconciles (atomic)
operationId: bulkPatchFullReconciles
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/FullReconcileBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/full_reconciles/upsert:
post:
tags:
- FullReconciles
summary: Upsert FullReconcile
operationId: upsertFullReconcile
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateFullReconcileRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/FullReconcile'
/api/v1/accounting/full_reconciles/trash:
get:
tags:
- FullReconciles
summary: List deleted FullReconciles
operationId: listDeletedFullReconciles
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/FullReconcileList'
/api/v1/accounting/full_reconciles/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- FullReconciles
summary: Restore deleted FullReconcile
operationId: restoreFullReconcile
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/FullReconcile'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/full_reconciles/empty:
delete:
tags:
- FullReconciles
summary: Empty trash for FullReconciles
operationId: emptyTrashFullReconciles
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/full_reconciles/delete/bulk:
post:
tags:
- FullReconciles
summary: Bulk soft-delete FullReconciles by ids (atomic)
operationId: bulkDeleteFullReconciles
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/full_reconciles/restore/bulk:
post:
tags:
- FullReconciles
summary: Bulk restore FullReconciles by ids (atomic)
operationId: bulkRestoreFullReconciles
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/FullReconcileBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/full_reconciles/restore/all:
post:
tags:
- FullReconciles
summary: Restore all soft-deleted FullReconciles
operationId: restoreAllFullReconciles
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/full_reconciles/trash/bulk:
delete:
tags:
- FullReconciles
summary: Bulk permanently-delete FullReconciles from trash by ids (atomic)
operationId: bulkPermanentDeleteFullReconciles
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/partial_reconciles:
get:
tags:
- PartialReconciles
summary: List PartialReconciles
description: Get a paginated list of PartialReconciles with optional filtering and sorting
operationId: listPartialReconciles
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PartialReconcileList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- PartialReconciles
summary: Create PartialReconcile
description: Create a new PartialReconcile
operationId: createPartialReconcile
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePartialReconcileRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/PartialReconcile'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/accounting/partial_reconciles/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- PartialReconciles
summary: Get PartialReconcile by ID
operationId: getPartialReconcile
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PartialReconcile'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- PartialReconciles
summary: Update PartialReconcile (full)
operationId: updatePartialReconcile
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePartialReconcileRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PartialReconcile'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- PartialReconciles
summary: Update PartialReconcile (partial)
operationId: patchPartialReconcile
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchPartialReconcileRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PartialReconcile'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- PartialReconciles
summary: Delete PartialReconcile (soft)
operationId: deletePartialReconcile
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/partial_reconciles/bulk:
post:
tags:
- PartialReconciles
summary: Bulk create PartialReconciles
operationId: bulkCreatePartialReconciles
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreatePartialReconcileRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PartialReconcile'
put:
tags:
- PartialReconciles
summary: Bulk update PartialReconciles (full, atomic)
operationId: bulkUpdatePartialReconciles
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdatePartialReconcileRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PartialReconcileBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- PartialReconciles
summary: Bulk partial-update PartialReconciles (atomic)
operationId: bulkPatchPartialReconciles
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PartialReconcileBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/partial_reconciles/upsert:
post:
tags:
- PartialReconciles
summary: Upsert PartialReconcile
operationId: upsertPartialReconcile
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePartialReconcileRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/PartialReconcile'
/api/v1/accounting/partial_reconciles/trash:
get:
tags:
- PartialReconciles
summary: List deleted PartialReconciles
operationId: listDeletedPartialReconciles
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PartialReconcileList'
/api/v1/accounting/partial_reconciles/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- PartialReconciles
summary: Restore deleted PartialReconcile
operationId: restorePartialReconcile
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PartialReconcile'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/accounting/partial_reconciles/empty:
delete:
tags:
- PartialReconciles
summary: Empty trash for PartialReconciles
operationId: emptyTrashPartialReconciles
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/accounting/partial_reconciles/delete/bulk:
post:
tags:
- PartialReconciles
summary: Bulk soft-delete PartialReconciles by ids (atomic)
operationId: bulkDeletePartialReconciles
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/partial_reconciles/restore/bulk:
post:
tags:
- PartialReconciles
summary: Bulk restore PartialReconciles by ids (atomic)
operationId: bulkRestorePartialReconciles
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PartialReconcileBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/accounting/partial_reconciles/restore/all:
post:
tags:
- PartialReconciles
summary: Restore all soft-deleted PartialReconciles
operationId: restoreAllPartialReconciles
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/accounting/partial_reconciles/trash/bulk:
delete:
tags:
- PartialReconciles
summary: Bulk permanently-delete PartialReconciles from trash by ids (atomic)
operationId: bulkPermanentDeletePartialReconciles
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
components:
schemas:
Account:
type: object
required:
- id
- account_number
- account_code
- name
- account_type
- account_subtype
- normal_balance
- level
- is_header
- is_detail
- currency
- opening_balance
- current_balance
- is_reconcilable
- has_budget
- sort_order
- show_in_reports
- status
- is_system
- is_cloned
- metadata
properties:
id:
type: string
format: uuid
account_number:
type: string
maxLength: 20
account_code:
type: string
maxLength: 30
name:
type: string
maxLength: 100
description:
nullable: true
type: string
maxLength: 500
account_type:
type: string
account_subtype:
type: string
normal_balance:
type: string
parent_id:
nullable: true
type: string
format: uuid
level:
type: integer
format: int32
path:
nullable: true
type: string
maxLength: 255
is_header:
type: boolean
is_detail:
type: boolean
currency:
type: string
opening_balance:
type: string
opening_balance_date:
nullable: true
type: string
format: date
current_balance:
type: string
is_reconcilable:
type: boolean
has_budget:
type: boolean
budget_amount:
nullable: true
type: string
sort_order:
type: integer
format: int32
show_in_reports:
type: boolean
status:
type: string
is_system:
type: boolean
notes:
nullable: true
type: string
maxLength: 1000
source_id:
nullable: true
type: string
format: uuid
is_cloned:
type: boolean
chart_code:
nullable: true
type: string
maxLength: 50
chart_version:
nullable: true
type: string
maxLength: 20
metadata:
type: object
AccountBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Account'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateAccountRequest:
type: object
required:
- account_number
- account_code
- name
- account_type
- account_subtype
- normal_balance
- level
- is_header
- is_detail
- currency
- opening_balance
- current_balance
- is_reconcilable
- has_budget
- sort_order
- show_in_reports
- status
- is_system
- is_cloned
- metadata
properties:
account_number:
type: string
maxLength: 20
account_code:
type: string
maxLength: 30
name:
type: string
maxLength: 100
description:
nullable: true
type: string
maxLength: 500
account_type:
type: string
account_subtype:
type: string
normal_balance:
type: string
parent_id:
nullable: true
type: string
format: uuid
level:
type: integer
format: int32
path:
nullable: true
type: string
maxLength: 255
is_header:
type: boolean
is_detail:
type: boolean
currency:
type: string
opening_balance:
type: string
opening_balance_date:
nullable: true
type: string
format: date
current_balance:
type: string
is_reconcilable:
type: boolean
has_budget:
type: boolean
budget_amount:
nullable: true
type: string
sort_order:
type: integer
format: int32
show_in_reports:
type: boolean
status:
type: string
is_system:
type: boolean
notes:
nullable: true
type: string
maxLength: 1000
source_id:
nullable: true
type: string
format: uuid
is_cloned:
type: boolean
chart_code:
nullable: true
type: string
maxLength: 50
chart_version:
nullable: true
type: string
maxLength: 20
metadata:
type: object
UpdateAccountRequest:
type: object
required:
- account_number
- account_code
- name
- account_type
- account_subtype
- normal_balance
- level
- is_header
- is_detail
- currency
- opening_balance
- current_balance
- is_reconcilable
- has_budget
- sort_order
- show_in_reports
- status
- is_system
- is_cloned
- metadata
properties:
account_number:
type: string
maxLength: 20
account_code:
type: string
maxLength: 30
name:
type: string
maxLength: 100
description:
nullable: true
type: string
maxLength: 500
account_type:
type: string
account_subtype:
type: string
normal_balance:
type: string
parent_id:
nullable: true
type: string
format: uuid
level:
type: integer
format: int32
path:
nullable: true
type: string
maxLength: 255
is_header:
type: boolean
is_detail:
type: boolean
currency:
type: string
opening_balance:
type: string
opening_balance_date:
nullable: true
type: string
format: date
current_balance:
type: string
is_reconcilable:
type: boolean
has_budget:
type: boolean
budget_amount:
nullable: true
type: string
sort_order:
type: integer
format: int32
show_in_reports:
type: boolean
status:
type: string
is_system:
type: boolean
notes:
nullable: true
type: string
maxLength: 1000
source_id:
nullable: true
type: string
format: uuid
is_cloned:
type: boolean
chart_code:
nullable: true
type: string
maxLength: 50
chart_version:
nullable: true
type: string
maxLength: 20
metadata:
type: object
PatchAccountRequest:
type: object
properties:
account_number:
type: string
maxLength: 20
account_code:
type: string
maxLength: 30
name:
type: string
maxLength: 100
description:
nullable: true
type: string
maxLength: 500
account_type:
type: string
account_subtype:
type: string
normal_balance:
type: string
parent_id:
nullable: true
type: string
format: uuid
level:
type: integer
format: int32
path:
nullable: true
type: string
maxLength: 255
is_header:
type: boolean
is_detail:
type: boolean
currency:
type: string
opening_balance:
type: string
opening_balance_date:
nullable: true
type: string
format: date
current_balance:
type: string
is_reconcilable:
type: boolean
has_budget:
type: boolean
budget_amount:
nullable: true
type: string
sort_order:
type: integer
format: int32
show_in_reports:
type: boolean
status:
type: string
is_system:
type: boolean
notes:
nullable: true
type: string
maxLength: 1000
source_id:
nullable: true
type: string
format: uuid
is_cloned:
type: boolean
chart_code:
nullable: true
type: string
maxLength: 50
chart_version:
nullable: true
type: string
maxLength: 20
metadata:
type: object
AccountList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Account'
meta:
$ref: '#/components/schemas/PaginationMeta'
AccountingPost:
type: object
required:
- id
- source_type
- source_id
- posting_type
- posting_status
- currency
- total_debit
- total_credit
- retry_count
- max_retries
- metadata
properties:
id:
type: string
format: uuid
branch_id:
nullable: true
type: string
format: uuid
source_type:
type: string
source_id:
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 255
journal_id:
nullable: true
type: string
format: uuid
posting_type:
type: string
posting_status:
type: string
currency:
type: string
total_debit:
type: string
total_credit:
type: string
scheduled_at:
nullable: true
type: string
format: date-time
posted_at:
nullable: true
type: string
format: date-time
failed_at:
nullable: true
type: string
format: date-time
retry_count:
type: integer
format: int32
max_retries:
type: integer
format: int32
next_retry_at:
nullable: true
type: string
format: date-time
error_code:
nullable: true
type: string
maxLength: 50
error_message:
nullable: true
type: string
maxLength: 1000
reverses_post_id:
nullable: true
type: string
format: uuid
reversed_by_post_id:
nullable: true
type: string
format: uuid
posted_by:
nullable: true
type: string
format: uuid
notes:
nullable: true
type: string
maxLength: 500
metadata:
type: object
AccountingPostBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/AccountingPost'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateAccountingPostRequest:
type: object
required:
- source_type
- source_id
- posting_type
- posting_status
- currency
- total_debit
- total_credit
- retry_count
- max_retries
- metadata
properties:
branch_id:
nullable: true
type: string
format: uuid
source_type:
type: string
source_id:
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 255
journal_id:
nullable: true
type: string
format: uuid
posting_type:
type: string
posting_status:
type: string
currency:
type: string
total_debit:
type: string
total_credit:
type: string
scheduled_at:
nullable: true
type: string
format: date-time
posted_at:
nullable: true
type: string
format: date-time
failed_at:
nullable: true
type: string
format: date-time
retry_count:
type: integer
format: int32
max_retries:
type: integer
format: int32
next_retry_at:
nullable: true
type: string
format: date-time
error_code:
nullable: true
type: string
maxLength: 50
error_message:
nullable: true
type: string
maxLength: 1000
reverses_post_id:
nullable: true
type: string
format: uuid
reversed_by_post_id:
nullable: true
type: string
format: uuid
posted_by:
nullable: true
type: string
format: uuid
notes:
nullable: true
type: string
maxLength: 500
metadata:
type: object
UpdateAccountingPostRequest:
type: object
required:
- source_type
- source_id
- posting_type
- posting_status
- currency
- total_debit
- total_credit
- retry_count
- max_retries
- metadata
properties:
branch_id:
nullable: true
type: string
format: uuid
source_type:
type: string
source_id:
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 255
journal_id:
nullable: true
type: string
format: uuid
posting_type:
type: string
posting_status:
type: string
currency:
type: string
total_debit:
type: string
total_credit:
type: string
scheduled_at:
nullable: true
type: string
format: date-time
posted_at:
nullable: true
type: string
format: date-time
failed_at:
nullable: true
type: string
format: date-time
retry_count:
type: integer
format: int32
max_retries:
type: integer
format: int32
next_retry_at:
nullable: true
type: string
format: date-time
error_code:
nullable: true
type: string
maxLength: 50
error_message:
nullable: true
type: string
maxLength: 1000
reverses_post_id:
nullable: true
type: string
format: uuid
reversed_by_post_id:
nullable: true
type: string
format: uuid
posted_by:
nullable: true
type: string
format: uuid
notes:
nullable: true
type: string
maxLength: 500
metadata:
type: object
PatchAccountingPostRequest:
type: object
properties:
branch_id:
nullable: true
type: string
format: uuid
source_type:
type: string
source_id:
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 255
journal_id:
nullable: true
type: string
format: uuid
posting_type:
type: string
posting_status:
type: string
currency:
type: string
total_debit:
type: string
total_credit:
type: string
scheduled_at:
nullable: true
type: string
format: date-time
posted_at:
nullable: true
type: string
format: date-time
failed_at:
nullable: true
type: string
format: date-time
retry_count:
type: integer
format: int32
max_retries:
type: integer
format: int32
next_retry_at:
nullable: true
type: string
format: date-time
error_code:
nullable: true
type: string
maxLength: 50
error_message:
nullable: true
type: string
maxLength: 1000
reverses_post_id:
nullable: true
type: string
format: uuid
reversed_by_post_id:
nullable: true
type: string
format: uuid
posted_by:
nullable: true
type: string
format: uuid
notes:
nullable: true
type: string
maxLength: 500
metadata:
type: object
AccountingPostList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/AccountingPost'
meta:
$ref: '#/components/schemas/PaginationMeta'
CostCenter:
type: object
required:
- id
- code
- name
- level
- is_group
- status
- sort_order
- metadata
properties:
id:
type: string
format: uuid
code:
type: string
maxLength: 30
name:
type: string
maxLength: 100
description:
nullable: true
type: string
maxLength: 500
parent_id:
nullable: true
type: string
format: uuid
level:
type: integer
format: int32
is_group:
type: boolean
branch_id:
nullable: true
type: string
format: uuid
status:
type: string
sort_order:
type: integer
format: int32
metadata:
type: object
CostCenterBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/CostCenter'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateCostCenterRequest:
type: object
required:
- code
- name
- level
- is_group
- status
- sort_order
- metadata
properties:
code:
type: string
maxLength: 30
name:
type: string
maxLength: 100
description:
nullable: true
type: string
maxLength: 500
parent_id:
nullable: true
type: string
format: uuid
level:
type: integer
format: int32
is_group:
type: boolean
branch_id:
nullable: true
type: string
format: uuid
status:
type: string
sort_order:
type: integer
format: int32
metadata:
type: object
UpdateCostCenterRequest:
type: object
required:
- code
- name
- level
- is_group
- status
- sort_order
- metadata
properties:
code:
type: string
maxLength: 30
name:
type: string
maxLength: 100
description:
nullable: true
type: string
maxLength: 500
parent_id:
nullable: true
type: string
format: uuid
level:
type: integer
format: int32
is_group:
type: boolean
branch_id:
nullable: true
type: string
format: uuid
status:
type: string
sort_order:
type: integer
format: int32
metadata:
type: object
PatchCostCenterRequest:
type: object
properties:
code:
type: string
maxLength: 30
name:
type: string
maxLength: 100
description:
nullable: true
type: string
maxLength: 500
parent_id:
nullable: true
type: string
format: uuid
level:
type: integer
format: int32
is_group:
type: boolean
branch_id:
nullable: true
type: string
format: uuid
status:
type: string
sort_order:
type: integer
format: int32
metadata:
type: object
CostCenterList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/CostCenter'
meta:
$ref: '#/components/schemas/PaginationMeta'
EmvQrConfig:
type: object
required:
- id
- merchant_name
- merchant_city
- country_code
- mcc
- gui
- merchant_identifier
- currency
- initiation_method
- created_at
- updated_at
- metadata
properties:
id:
type: string
format: uuid
merchant_name:
type: string
maxLength: 25
merchant_city:
type: string
maxLength: 15
country_code:
type: string
maxLength: 2
mcc:
type: string
gui:
type: string
maxLength: 32
merchant_identifier:
type: string
maxLength: 32
currency:
type: string
initiation_method:
type: string
bank_account_id:
nullable: true
type: string
format: uuid
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
metadata:
type: object
EmvQrConfigBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/EmvQrConfig'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateEmvQrConfigRequest:
type: object
required:
- merchant_name
- merchant_city
- country_code
- mcc
- gui
- merchant_identifier
- currency
- initiation_method
- metadata
properties:
merchant_name:
type: string
maxLength: 25
merchant_city:
type: string
maxLength: 15
country_code:
type: string
maxLength: 2
mcc:
type: string
gui:
type: string
maxLength: 32
merchant_identifier:
type: string
maxLength: 32
currency:
type: string
initiation_method:
type: string
bank_account_id:
nullable: true
type: string
format: uuid
metadata:
type: object
UpdateEmvQrConfigRequest:
type: object
required:
- merchant_name
- merchant_city
- country_code
- mcc
- gui
- merchant_identifier
- currency
- initiation_method
- metadata
properties:
merchant_name:
type: string
maxLength: 25
merchant_city:
type: string
maxLength: 15
country_code:
type: string
maxLength: 2
mcc:
type: string
gui:
type: string
maxLength: 32
merchant_identifier:
type: string
maxLength: 32
currency:
type: string
initiation_method:
type: string
bank_account_id:
nullable: true
type: string
format: uuid
metadata:
type: object
PatchEmvQrConfigRequest:
type: object
properties:
merchant_name:
type: string
maxLength: 25
merchant_city:
type: string
maxLength: 15
country_code:
type: string
maxLength: 2
mcc:
type: string
gui:
type: string
maxLength: 32
merchant_identifier:
type: string
maxLength: 32
currency:
type: string
initiation_method:
type: string
bank_account_id:
nullable: true
type: string
format: uuid
metadata:
type: object
EmvQrConfigList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/EmvQrConfig'
meta:
$ref: '#/components/schemas/PaginationMeta'
BankCheckSequence:
type: object
required:
- id
- bank_account_id
- numbering_mode
- next_number
- created_at
- updated_at
- metadata
properties:
id:
type: string
format: uuid
bank_account_id:
type: string
format: uuid
numbering_mode:
type: string
next_number:
type: integer
format: int64
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
metadata:
type: object
BankCheckSequenceBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/BankCheckSequence'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateBankCheckSequenceRequest:
type: object
required:
- bank_account_id
- numbering_mode
- next_number
- metadata
properties:
bank_account_id:
type: string
format: uuid
numbering_mode:
type: string
next_number:
type: integer
format: int64
metadata:
type: object
UpdateBankCheckSequenceRequest:
type: object
required:
- bank_account_id
- numbering_mode
- next_number
- metadata
properties:
bank_account_id:
type: string
format: uuid
numbering_mode:
type: string
next_number:
type: integer
format: int64
metadata:
type: object
PatchBankCheckSequenceRequest:
type: object
properties:
bank_account_id:
type: string
format: uuid
numbering_mode:
type: string
next_number:
type: integer
format: int64
metadata:
type: object
BankCheckSequenceList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/BankCheckSequence'
meta:
$ref: '#/components/schemas/PaginationMeta'
PrintedCheck:
type: object
required:
- id
- bank_account_id
- payment_id
- check_number
- amount
- status
- printed_at
- created_at
- updated_at
- metadata
properties:
id:
type: string
format: uuid
bank_account_id:
type: string
format: uuid
payment_id:
type: string
format: uuid
payment_number:
nullable: true
type: string
maxLength: 50
check_number:
type: string
maxLength: 20
amount:
type: string
payee_name:
nullable: true
type: string
maxLength: 100
status:
type: string
printed_at:
type: string
format: date-time
printed_by:
nullable: true
type: string
format: uuid
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
metadata:
type: object
PrintedCheckBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PrintedCheck'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreatePrintedCheckRequest:
type: object
required:
- bank_account_id
- payment_id
- check_number
- amount
- status
- printed_at
- metadata
properties:
bank_account_id:
type: string
format: uuid
payment_id:
type: string
format: uuid
payment_number:
nullable: true
type: string
maxLength: 50
check_number:
type: string
maxLength: 20
amount:
type: string
payee_name:
nullable: true
type: string
maxLength: 100
status:
type: string
printed_at:
type: string
format: date-time
printed_by:
nullable: true
type: string
format: uuid
metadata:
type: object
UpdatePrintedCheckRequest:
type: object
required:
- bank_account_id
- payment_id
- check_number
- amount
- status
- printed_at
- metadata
properties:
bank_account_id:
type: string
format: uuid
payment_id:
type: string
format: uuid
payment_number:
nullable: true
type: string
maxLength: 50
check_number:
type: string
maxLength: 20
amount:
type: string
payee_name:
nullable: true
type: string
maxLength: 100
status:
type: string
printed_at:
type: string
format: date-time
printed_by:
nullable: true
type: string
format: uuid
metadata:
type: object
PatchPrintedCheckRequest:
type: object
properties:
bank_account_id:
type: string
format: uuid
payment_id:
type: string
format: uuid
payment_number:
nullable: true
type: string
maxLength: 50
check_number:
type: string
maxLength: 20
amount:
type: string
payee_name:
nullable: true
type: string
maxLength: 100
status:
type: string
printed_at:
type: string
format: date-time
printed_by:
nullable: true
type: string
format: uuid
metadata:
type: object
PrintedCheckList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PrintedCheck'
meta:
$ref: '#/components/schemas/PaginationMeta'
TaxTagRepairRun:
type: object
required:
- id
- date_from
- date_to
- rules
- lines_examined
- lines_retagged
- dry_run
- overridden_closed_periods
- reason
- ran_at
- created_at
- updated_at
- metadata
properties:
id:
type: string
format: uuid
date_from:
type: string
format: date
date_to:
type: string
format: date
rules:
type: object
lines_examined:
type: integer
format: int64
lines_retagged:
type: integer
format: int64
dry_run:
type: boolean
overridden_closed_periods:
type: object
actor:
nullable: true
type: string
format: uuid
reason:
type: string
ran_at:
type: string
format: date-time
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
metadata:
type: object
TaxTagRepairRunBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/TaxTagRepairRun'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateTaxTagRepairRunRequest:
type: object
required:
- date_from
- date_to
- rules
- lines_examined
- lines_retagged
- dry_run
- overridden_closed_periods
- reason
- ran_at
- metadata
properties:
date_from:
type: string
format: date
date_to:
type: string
format: date
rules:
type: object
lines_examined:
type: integer
format: int64
lines_retagged:
type: integer
format: int64
dry_run:
type: boolean
overridden_closed_periods:
type: object
actor:
nullable: true
type: string
format: uuid
reason:
type: string
ran_at:
type: string
format: date-time
metadata:
type: object
UpdateTaxTagRepairRunRequest:
type: object
required:
- date_from
- date_to
- rules
- lines_examined
- lines_retagged
- dry_run
- overridden_closed_periods
- reason
- ran_at
- metadata
properties:
date_from:
type: string
format: date
date_to:
type: string
format: date
rules:
type: object
lines_examined:
type: integer
format: int64
lines_retagged:
type: integer
format: int64
dry_run:
type: boolean
overridden_closed_periods:
type: object
actor:
nullable: true
type: string
format: uuid
reason:
type: string
ran_at:
type: string
format: date-time
metadata:
type: object
PatchTaxTagRepairRunRequest:
type: object
properties:
date_from:
type: string
format: date
date_to:
type: string
format: date
rules:
type: object
lines_examined:
type: integer
format: int64
lines_retagged:
type: integer
format: int64
dry_run:
type: boolean
overridden_closed_periods:
type: object
actor:
nullable: true
type: string
format: uuid
reason:
type: string
ran_at:
type: string
format: date-time
metadata:
type: object
TaxTagRepairRunList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/TaxTagRepairRun'
meta:
$ref: '#/components/schemas/PaginationMeta'
FinancialStatement:
type: object
required:
- id
- statement_number
- statement_type
- name
- fiscal_year
- as_of_date
- is_comparative
- status
- balance_check
- trial_balance_check
- line_items
- comparative_data
- variance_data
- notes
- generation_parameters
- currency
- metadata
properties:
id:
type: string
format: uuid
statement_number:
type: string
maxLength: 30
statement_type:
type: string
name:
type: string
maxLength: 100
fiscal_period_id:
nullable: true
type: string
format: uuid
fiscal_year:
type: integer
format: int32
fiscal_month:
nullable: true
type: integer
format: int32
as_of_date:
type: string
format: date
period_start:
nullable: true
type: string
format: date
period_end:
nullable: true
type: string
format: date
is_comparative:
type: boolean
comparative_period_id:
nullable: true
type: string
format: uuid
comparative_as_of_date:
nullable: true
type: string
format: date
status:
type: string
total_current_assets:
nullable: true
type: string
total_non_current_assets:
nullable: true
type: string
total_assets:
nullable: true
type: string
total_current_liabilities:
nullable: true
type: string
total_non_current_liabilities:
nullable: true
type: string
total_liabilities:
nullable: true
type: string
total_equity:
nullable: true
type: string
balance_check:
type: boolean
balance_difference:
nullable: true
type: string
total_revenue:
nullable: true
type: string
total_cogs:
nullable: true
type: string
gross_profit:
nullable: true
type: string
gross_profit_margin:
nullable: true
type: string
total_operating_expenses:
nullable: true
type: string
operating_income:
nullable: true
type: string
operating_margin:
nullable: true
type: string
total_other_income:
nullable: true
type: string
total_other_expenses:
nullable: true
type: string
income_before_tax:
nullable: true
type: string
tax_expense:
nullable: true
type: string
net_income:
nullable: true
type: string
net_profit_margin:
nullable: true
type: string
cash_from_operations:
nullable: true
type: string
cash_from_investing:
nullable: true
type: string
cash_from_financing:
nullable: true
type: string
net_cash_change:
nullable: true
type: string
beginning_cash:
nullable: true
type: string
ending_cash:
nullable: true
type: string
total_debits:
nullable: true
type: string
total_credits:
nullable: true
type: string
trial_balance_check:
type: boolean
line_items:
type: object
comparative_data:
type: object
variance_data:
type: object
notes:
type: object
management_notes:
nullable: true
type: string
maxLength: 2000
generated_at:
nullable: true
type: string
format: date-time
generated_by:
nullable: true
type: string
format: uuid
generation_parameters:
type: object
reviewed_at:
nullable: true
type: string
format: date-time
reviewed_by:
nullable: true
type: string
format: uuid
approved_at:
nullable: true
type: string
format: date-time
approved_by:
nullable: true
type: string
format: uuid
published_at:
nullable: true
type: string
format: date-time
pdf_url:
nullable: true
type: string
maxLength: 500
excel_url:
nullable: true
type: string
maxLength: 500
currency:
type: string
metadata:
type: object
FinancialStatementBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/FinancialStatement'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateFinancialStatementRequest:
type: object
required:
- statement_number
- statement_type
- name
- fiscal_year
- as_of_date
- is_comparative
- status
- balance_check
- trial_balance_check
- line_items
- comparative_data
- variance_data
- notes
- generation_parameters
- currency
- metadata
properties:
statement_number:
type: string
maxLength: 30
statement_type:
type: string
name:
type: string
maxLength: 100
fiscal_period_id:
nullable: true
type: string
format: uuid
fiscal_year:
type: integer
format: int32
fiscal_month:
nullable: true
type: integer
format: int32
as_of_date:
type: string
format: date
period_start:
nullable: true
type: string
format: date
period_end:
nullable: true
type: string
format: date
is_comparative:
type: boolean
comparative_period_id:
nullable: true
type: string
format: uuid
comparative_as_of_date:
nullable: true
type: string
format: date
status:
type: string
total_current_assets:
nullable: true
type: string
total_non_current_assets:
nullable: true
type: string
total_assets:
nullable: true
type: string
total_current_liabilities:
nullable: true
type: string
total_non_current_liabilities:
nullable: true
type: string
total_liabilities:
nullable: true
type: string
total_equity:
nullable: true
type: string
balance_check:
type: boolean
balance_difference:
nullable: true
type: string
total_revenue:
nullable: true
type: string
total_cogs:
nullable: true
type: string
gross_profit:
nullable: true
type: string
gross_profit_margin:
nullable: true
type: string
total_operating_expenses:
nullable: true
type: string
operating_income:
nullable: true
type: string
operating_margin:
nullable: true
type: string
total_other_income:
nullable: true
type: string
total_other_expenses:
nullable: true
type: string
income_before_tax:
nullable: true
type: string
tax_expense:
nullable: true
type: string
net_income:
nullable: true
type: string
net_profit_margin:
nullable: true
type: string
cash_from_operations:
nullable: true
type: string
cash_from_investing:
nullable: true
type: string
cash_from_financing:
nullable: true
type: string
net_cash_change:
nullable: true
type: string
beginning_cash:
nullable: true
type: string
ending_cash:
nullable: true
type: string
total_debits:
nullable: true
type: string
total_credits:
nullable: true
type: string
trial_balance_check:
type: boolean
line_items:
type: object
comparative_data:
type: object
variance_data:
type: object
notes:
type: object
management_notes:
nullable: true
type: string
maxLength: 2000
generated_at:
nullable: true
type: string
format: date-time
generated_by:
nullable: true
type: string
format: uuid
generation_parameters:
type: object
reviewed_at:
nullable: true
type: string
format: date-time
reviewed_by:
nullable: true
type: string
format: uuid
approved_at:
nullable: true
type: string
format: date-time
approved_by:
nullable: true
type: string
format: uuid
published_at:
nullable: true
type: string
format: date-time
pdf_url:
nullable: true
type: string
maxLength: 500
excel_url:
nullable: true
type: string
maxLength: 500
currency:
type: string
metadata:
type: object
UpdateFinancialStatementRequest:
type: object
required:
- statement_number
- statement_type
- name
- fiscal_year
- as_of_date
- is_comparative
- status
- balance_check
- trial_balance_check
- line_items
- comparative_data
- variance_data
- notes
- generation_parameters
- currency
- metadata
properties:
statement_number:
type: string
maxLength: 30
statement_type:
type: string
name:
type: string
maxLength: 100
fiscal_period_id:
nullable: true
type: string
format: uuid
fiscal_year:
type: integer
format: int32
fiscal_month:
nullable: true
type: integer
format: int32
as_of_date:
type: string
format: date
period_start:
nullable: true
type: string
format: date
period_end:
nullable: true
type: string
format: date
is_comparative:
type: boolean
comparative_period_id:
nullable: true
type: string
format: uuid
comparative_as_of_date:
nullable: true
type: string
format: date
status:
type: string
total_current_assets:
nullable: true
type: string
total_non_current_assets:
nullable: true
type: string
total_assets:
nullable: true
type: string
total_current_liabilities:
nullable: true
type: string
total_non_current_liabilities:
nullable: true
type: string
total_liabilities:
nullable: true
type: string
total_equity:
nullable: true
type: string
balance_check:
type: boolean
balance_difference:
nullable: true
type: string
total_revenue:
nullable: true
type: string
total_cogs:
nullable: true
type: string
gross_profit:
nullable: true
type: string
gross_profit_margin:
nullable: true
type: string
total_operating_expenses:
nullable: true
type: string
operating_income:
nullable: true
type: string
operating_margin:
nullable: true
type: string
total_other_income:
nullable: true
type: string
total_other_expenses:
nullable: true
type: string
income_before_tax:
nullable: true
type: string
tax_expense:
nullable: true
type: string
net_income:
nullable: true
type: string
net_profit_margin:
nullable: true
type: string
cash_from_operations:
nullable: true
type: string
cash_from_investing:
nullable: true
type: string
cash_from_financing:
nullable: true
type: string
net_cash_change:
nullable: true
type: string
beginning_cash:
nullable: true
type: string
ending_cash:
nullable: true
type: string
total_debits:
nullable: true
type: string
total_credits:
nullable: true
type: string
trial_balance_check:
type: boolean
line_items:
type: object
comparative_data:
type: object
variance_data:
type: object
notes:
type: object
management_notes:
nullable: true
type: string
maxLength: 2000
generated_at:
nullable: true
type: string
format: date-time
generated_by:
nullable: true
type: string
format: uuid
generation_parameters:
type: object
reviewed_at:
nullable: true
type: string
format: date-time
reviewed_by:
nullable: true
type: string
format: uuid
approved_at:
nullable: true
type: string
format: date-time
approved_by:
nullable: true
type: string
format: uuid
published_at:
nullable: true
type: string
format: date-time
pdf_url:
nullable: true
type: string
maxLength: 500
excel_url:
nullable: true
type: string
maxLength: 500
currency:
type: string
metadata:
type: object
PatchFinancialStatementRequest:
type: object
properties:
statement_number:
type: string
maxLength: 30
statement_type:
type: string
name:
type: string
maxLength: 100
fiscal_period_id:
nullable: true
type: string
format: uuid
fiscal_year:
type: integer
format: int32
fiscal_month:
nullable: true
type: integer
format: int32
as_of_date:
type: string
format: date
period_start:
nullable: true
type: string
format: date
period_end:
nullable: true
type: string
format: date
is_comparative:
type: boolean
comparative_period_id:
nullable: true
type: string
format: uuid
comparative_as_of_date:
nullable: true
type: string
format: date
status:
type: string
total_current_assets:
nullable: true
type: string
total_non_current_assets:
nullable: true
type: string
total_assets:
nullable: true
type: string
total_current_liabilities:
nullable: true
type: string
total_non_current_liabilities:
nullable: true
type: string
total_liabilities:
nullable: true
type: string
total_equity:
nullable: true
type: string
balance_check:
type: boolean
balance_difference:
nullable: true
type: string
total_revenue:
nullable: true
type: string
total_cogs:
nullable: true
type: string
gross_profit:
nullable: true
type: string
gross_profit_margin:
nullable: true
type: string
total_operating_expenses:
nullable: true
type: string
operating_income:
nullable: true
type: string
operating_margin:
nullable: true
type: string
total_other_income:
nullable: true
type: string
total_other_expenses:
nullable: true
type: string
income_before_tax:
nullable: true
type: string
tax_expense:
nullable: true
type: string
net_income:
nullable: true
type: string
net_profit_margin:
nullable: true
type: string
cash_from_operations:
nullable: true
type: string
cash_from_investing:
nullable: true
type: string
cash_from_financing:
nullable: true
type: string
net_cash_change:
nullable: true
type: string
beginning_cash:
nullable: true
type: string
ending_cash:
nullable: true
type: string
total_debits:
nullable: true
type: string
total_credits:
nullable: true
type: string
trial_balance_check:
type: boolean
line_items:
type: object
comparative_data:
type: object
variance_data:
type: object
notes:
type: object
management_notes:
nullable: true
type: string
maxLength: 2000
generated_at:
nullable: true
type: string
format: date-time
generated_by:
nullable: true
type: string
format: uuid
generation_parameters:
type: object
reviewed_at:
nullable: true
type: string
format: date-time
reviewed_by:
nullable: true
type: string
format: uuid
approved_at:
nullable: true
type: string
format: date-time
approved_by:
nullable: true
type: string
format: uuid
published_at:
nullable: true
type: string
format: date-time
pdf_url:
nullable: true
type: string
maxLength: 500
excel_url:
nullable: true
type: string
maxLength: 500
currency:
type: string
metadata:
type: object
FinancialStatementList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/FinancialStatement'
meta:
$ref: '#/components/schemas/PaginationMeta'
FiscalPeriod:
type: object
required:
- id
- period_code
- name
- period_type
- start_date
- end_date
- fiscal_year
- level
- status
- is_current
- opening_balance_set
- allow_adjustments
- total_debits
- total_credits
- journal_count
- total_revenue
- total_expenses
- net_income
- total_assets
- total_liabilities
- total_equity
- balance_sheet_generated
- income_statement_generated
- metadata
properties:
id:
type: string
format: uuid
period_code:
type: string
maxLength: 20
name:
type: string
maxLength: 50
period_type:
type: string
start_date:
type: string
format: date
end_date:
type: string
format: date
fiscal_year:
type: integer
format: int32
minimum: 2020
maximum: 2100
fiscal_quarter:
nullable: true
type: integer
format: int32
minimum: 1
maximum: 4
fiscal_month:
nullable: true
type: integer
format: int32
minimum: 1
maximum: 12
parent_id:
nullable: true
type: string
format: uuid
level:
type: integer
format: int32
status:
type: string
is_current:
type: boolean
opening_balance_set:
type: boolean
opening_balance_date:
nullable: true
type: string
format: date-time
opening_balance_by:
nullable: true
type: string
format: uuid
closing_started_at:
nullable: true
type: string
format: date-time
closing_started_by:
nullable: true
type: string
format: uuid
closed_at:
nullable: true
type: string
format: date-time
closed_by:
nullable: true
type: string
format: uuid
locked_at:
nullable: true
type: string
format: date-time
locked_by:
nullable: true
type: string
format: uuid
lock_reason:
nullable: true
type: string
maxLength: 255
reopened_at:
nullable: true
type: string
format: date-time
reopened_by:
nullable: true
type: string
format: uuid
reopen_reason:
nullable: true
type: string
maxLength: 255
allow_adjustments:
type: boolean
adjustment_deadline:
nullable: true
type: string
format: date
total_debits:
type: string
total_credits:
type: string
journal_count:
type: integer
format: int32
total_revenue:
type: string
total_expenses:
type: string
net_income:
type: string
total_assets:
type: string
total_liabilities:
type: string
total_equity:
type: string
balance_sheet_generated:
type: boolean
income_statement_generated:
type: boolean
statements_generated_at:
nullable: true
type: string
format: date-time
notes:
nullable: true
type: string
maxLength: 1000
metadata:
type: object
FiscalPeriodBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/FiscalPeriod'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateFiscalPeriodRequest:
type: object
required:
- period_code
- name
- period_type
- start_date
- end_date
- fiscal_year
- level
- status
- is_current
- opening_balance_set
- allow_adjustments
- total_debits
- total_credits
- journal_count
- total_revenue
- total_expenses
- net_income
- total_assets
- total_liabilities
- total_equity
- balance_sheet_generated
- income_statement_generated
- metadata
properties:
period_code:
type: string
maxLength: 20
name:
type: string
maxLength: 50
period_type:
type: string
start_date:
type: string
format: date
end_date:
type: string
format: date
fiscal_year:
type: integer
format: int32
minimum: 2020
maximum: 2100
fiscal_quarter:
nullable: true
type: integer
format: int32
minimum: 1
maximum: 4
fiscal_month:
nullable: true
type: integer
format: int32
minimum: 1
maximum: 12
parent_id:
nullable: true
type: string
format: uuid
level:
type: integer
format: int32
status:
type: string
is_current:
type: boolean
opening_balance_set:
type: boolean
opening_balance_date:
nullable: true
type: string
format: date-time
opening_balance_by:
nullable: true
type: string
format: uuid
closing_started_at:
nullable: true
type: string
format: date-time
closing_started_by:
nullable: true
type: string
format: uuid
closed_at:
nullable: true
type: string
format: date-time
closed_by:
nullable: true
type: string
format: uuid
locked_at:
nullable: true
type: string
format: date-time
locked_by:
nullable: true
type: string
format: uuid
lock_reason:
nullable: true
type: string
maxLength: 255
reopened_at:
nullable: true
type: string
format: date-time
reopened_by:
nullable: true
type: string
format: uuid
reopen_reason:
nullable: true
type: string
maxLength: 255
allow_adjustments:
type: boolean
adjustment_deadline:
nullable: true
type: string
format: date
total_debits:
type: string
total_credits:
type: string
journal_count:
type: integer
format: int32
total_revenue:
type: string
total_expenses:
type: string
net_income:
type: string
total_assets:
type: string
total_liabilities:
type: string
total_equity:
type: string
balance_sheet_generated:
type: boolean
income_statement_generated:
type: boolean
statements_generated_at:
nullable: true
type: string
format: date-time
notes:
nullable: true
type: string
maxLength: 1000
metadata:
type: object
UpdateFiscalPeriodRequest:
type: object
required:
- period_code
- name
- period_type
- start_date
- end_date
- fiscal_year
- level
- status
- is_current
- opening_balance_set
- allow_adjustments
- total_debits
- total_credits
- journal_count
- total_revenue
- total_expenses
- net_income
- total_assets
- total_liabilities
- total_equity
- balance_sheet_generated
- income_statement_generated
- metadata
properties:
period_code:
type: string
maxLength: 20
name:
type: string
maxLength: 50
period_type:
type: string
start_date:
type: string
format: date
end_date:
type: string
format: date
fiscal_year:
type: integer
format: int32
minimum: 2020
maximum: 2100
fiscal_quarter:
nullable: true
type: integer
format: int32
minimum: 1
maximum: 4
fiscal_month:
nullable: true
type: integer
format: int32
minimum: 1
maximum: 12
parent_id:
nullable: true
type: string
format: uuid
level:
type: integer
format: int32
status:
type: string
is_current:
type: boolean
opening_balance_set:
type: boolean
opening_balance_date:
nullable: true
type: string
format: date-time
opening_balance_by:
nullable: true
type: string
format: uuid
closing_started_at:
nullable: true
type: string
format: date-time
closing_started_by:
nullable: true
type: string
format: uuid
closed_at:
nullable: true
type: string
format: date-time
closed_by:
nullable: true
type: string
format: uuid
locked_at:
nullable: true
type: string
format: date-time
locked_by:
nullable: true
type: string
format: uuid
lock_reason:
nullable: true
type: string
maxLength: 255
reopened_at:
nullable: true
type: string
format: date-time
reopened_by:
nullable: true
type: string
format: uuid
reopen_reason:
nullable: true
type: string
maxLength: 255
allow_adjustments:
type: boolean
adjustment_deadline:
nullable: true
type: string
format: date
total_debits:
type: string
total_credits:
type: string
journal_count:
type: integer
format: int32
total_revenue:
type: string
total_expenses:
type: string
net_income:
type: string
total_assets:
type: string
total_liabilities:
type: string
total_equity:
type: string
balance_sheet_generated:
type: boolean
income_statement_generated:
type: boolean
statements_generated_at:
nullable: true
type: string
format: date-time
notes:
nullable: true
type: string
maxLength: 1000
metadata:
type: object
PatchFiscalPeriodRequest:
type: object
properties:
period_code:
type: string
maxLength: 20
name:
type: string
maxLength: 50
period_type:
type: string
start_date:
type: string
format: date
end_date:
type: string
format: date
fiscal_year:
type: integer
format: int32
minimum: 2020
maximum: 2100
fiscal_quarter:
nullable: true
type: integer
format: int32
minimum: 1
maximum: 4
fiscal_month:
nullable: true
type: integer
format: int32
minimum: 1
maximum: 12
parent_id:
nullable: true
type: string
format: uuid
level:
type: integer
format: int32
status:
type: string
is_current:
type: boolean
opening_balance_set:
type: boolean
opening_balance_date:
nullable: true
type: string
format: date-time
opening_balance_by:
nullable: true
type: string
format: uuid
closing_started_at:
nullable: true
type: string
format: date-time
closing_started_by:
nullable: true
type: string
format: uuid
closed_at:
nullable: true
type: string
format: date-time
closed_by:
nullable: true
type: string
format: uuid
locked_at:
nullable: true
type: string
format: date-time
locked_by:
nullable: true
type: string
format: uuid
lock_reason:
nullable: true
type: string
maxLength: 255
reopened_at:
nullable: true
type: string
format: date-time
reopened_by:
nullable: true
type: string
format: uuid
reopen_reason:
nullable: true
type: string
maxLength: 255
allow_adjustments:
type: boolean
adjustment_deadline:
nullable: true
type: string
format: date
total_debits:
type: string
total_credits:
type: string
journal_count:
type: integer
format: int32
total_revenue:
type: string
total_expenses:
type: string
net_income:
type: string
total_assets:
type: string
total_liabilities:
type: string
total_equity:
type: string
balance_sheet_generated:
type: boolean
income_statement_generated:
type: boolean
statements_generated_at:
nullable: true
type: string
format: date-time
notes:
nullable: true
type: string
maxLength: 1000
metadata:
type: object
FiscalPeriodList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/FiscalPeriod'
meta:
$ref: '#/components/schemas/PaginationMeta'
Journal:
type: object
required:
- id
- journal_number
- journal_type
- transaction_date
- description
- currency
- total_debit
- total_credit
- line_count
- source
- is_reversed
- is_reversing
- auto_reverse
- status
- requires_approval
- is_voided
- attachments
- metadata
properties:
id:
type: string
format: uuid
journal_number:
type: string
maxLength: 30
reference_number:
nullable: true
type: string
maxLength: 50
journal_type:
type: string
branch_id:
nullable: true
type: string
format: uuid
transaction_date:
type: string
format: date
posting_date:
nullable: true
type: string
format: date
fiscal_period_id:
nullable: true
type: string
format: uuid
fiscal_year:
nullable: true
type: integer
format: int32
minimum: 2020
maximum: 2100
fiscal_month:
nullable: true
type: integer
format: int32
minimum: 1
maximum: 12
description:
type: string
maxLength: 500
notes:
nullable: true
type: string
maxLength: 1000
currency:
type: string
total_debit:
type: string
total_credit:
type: string
line_count:
type: integer
format: int32
source:
type: string
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 255
is_reversed:
type: boolean
reversed_by_id:
nullable: true
type: string
format: uuid
reversed_at:
nullable: true
type: string
format: date-time
reversal_reason:
nullable: true
type: string
maxLength: 255
reverses_id:
nullable: true
type: string
format: uuid
is_reversing:
type: boolean
auto_reverse:
type: boolean
auto_reverse_date:
nullable: true
type: string
format: date
status:
type: string
requires_approval:
type: boolean
approval_threshold:
nullable: true
type: string
submitted_at:
nullable: true
type: string
format: date-time
submitted_by:
nullable: true
type: string
format: uuid
approved_at:
nullable: true
type: string
format: date-time
approved_by:
nullable: true
type: string
format: uuid
rejected_at:
nullable: true
type: string
format: date-time
rejected_by:
nullable: true
type: string
format: uuid
rejection_reason:
nullable: true
type: string
maxLength: 500
posted_at:
nullable: true
type: string
format: date-time
posted_by:
nullable: true
type: string
format: uuid
is_voided:
type: boolean
voided_at:
nullable: true
type: string
format: date-time
voided_by:
nullable: true
type: string
format: uuid
void_reason:
nullable: true
type: string
maxLength: 500
attachments:
type: object
metadata:
type: object
JournalBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Journal'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateJournalRequest:
type: object
required:
- journal_number
- journal_type
- transaction_date
- description
- currency
- total_debit
- total_credit
- line_count
- source
- is_reversed
- is_reversing
- auto_reverse
- status
- requires_approval
- is_voided
- attachments
- metadata
properties:
journal_number:
type: string
maxLength: 30
reference_number:
nullable: true
type: string
maxLength: 50
journal_type:
type: string
branch_id:
nullable: true
type: string
format: uuid
transaction_date:
type: string
format: date
posting_date:
nullable: true
type: string
format: date
fiscal_period_id:
nullable: true
type: string
format: uuid
fiscal_year:
nullable: true
type: integer
format: int32
minimum: 2020
maximum: 2100
fiscal_month:
nullable: true
type: integer
format: int32
minimum: 1
maximum: 12
description:
type: string
maxLength: 500
notes:
nullable: true
type: string
maxLength: 1000
currency:
type: string
total_debit:
type: string
total_credit:
type: string
line_count:
type: integer
format: int32
source:
type: string
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 255
is_reversed:
type: boolean
reversed_by_id:
nullable: true
type: string
format: uuid
reversed_at:
nullable: true
type: string
format: date-time
reversal_reason:
nullable: true
type: string
maxLength: 255
reverses_id:
nullable: true
type: string
format: uuid
is_reversing:
type: boolean
auto_reverse:
type: boolean
auto_reverse_date:
nullable: true
type: string
format: date
status:
type: string
requires_approval:
type: boolean
approval_threshold:
nullable: true
type: string
submitted_at:
nullable: true
type: string
format: date-time
submitted_by:
nullable: true
type: string
format: uuid
approved_at:
nullable: true
type: string
format: date-time
approved_by:
nullable: true
type: string
format: uuid
rejected_at:
nullable: true
type: string
format: date-time
rejected_by:
nullable: true
type: string
format: uuid
rejection_reason:
nullable: true
type: string
maxLength: 500
posted_at:
nullable: true
type: string
format: date-time
posted_by:
nullable: true
type: string
format: uuid
is_voided:
type: boolean
voided_at:
nullable: true
type: string
format: date-time
voided_by:
nullable: true
type: string
format: uuid
void_reason:
nullable: true
type: string
maxLength: 500
attachments:
type: object
metadata:
type: object
UpdateJournalRequest:
type: object
required:
- journal_number
- journal_type
- transaction_date
- description
- currency
- total_debit
- total_credit
- line_count
- source
- is_reversed
- is_reversing
- auto_reverse
- status
- requires_approval
- is_voided
- attachments
- metadata
properties:
journal_number:
type: string
maxLength: 30
reference_number:
nullable: true
type: string
maxLength: 50
journal_type:
type: string
branch_id:
nullable: true
type: string
format: uuid
transaction_date:
type: string
format: date
posting_date:
nullable: true
type: string
format: date
fiscal_period_id:
nullable: true
type: string
format: uuid
fiscal_year:
nullable: true
type: integer
format: int32
minimum: 2020
maximum: 2100
fiscal_month:
nullable: true
type: integer
format: int32
minimum: 1
maximum: 12
description:
type: string
maxLength: 500
notes:
nullable: true
type: string
maxLength: 1000
currency:
type: string
total_debit:
type: string
total_credit:
type: string
line_count:
type: integer
format: int32
source:
type: string
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 255
is_reversed:
type: boolean
reversed_by_id:
nullable: true
type: string
format: uuid
reversed_at:
nullable: true
type: string
format: date-time
reversal_reason:
nullable: true
type: string
maxLength: 255
reverses_id:
nullable: true
type: string
format: uuid
is_reversing:
type: boolean
auto_reverse:
type: boolean
auto_reverse_date:
nullable: true
type: string
format: date
status:
type: string
requires_approval:
type: boolean
approval_threshold:
nullable: true
type: string
submitted_at:
nullable: true
type: string
format: date-time
submitted_by:
nullable: true
type: string
format: uuid
approved_at:
nullable: true
type: string
format: date-time
approved_by:
nullable: true
type: string
format: uuid
rejected_at:
nullable: true
type: string
format: date-time
rejected_by:
nullable: true
type: string
format: uuid
rejection_reason:
nullable: true
type: string
maxLength: 500
posted_at:
nullable: true
type: string
format: date-time
posted_by:
nullable: true
type: string
format: uuid
is_voided:
type: boolean
voided_at:
nullable: true
type: string
format: date-time
voided_by:
nullable: true
type: string
format: uuid
void_reason:
nullable: true
type: string
maxLength: 500
attachments:
type: object
metadata:
type: object
PatchJournalRequest:
type: object
properties:
journal_number:
type: string
maxLength: 30
reference_number:
nullable: true
type: string
maxLength: 50
journal_type:
type: string
branch_id:
nullable: true
type: string
format: uuid
transaction_date:
type: string
format: date
posting_date:
nullable: true
type: string
format: date
fiscal_period_id:
nullable: true
type: string
format: uuid
fiscal_year:
nullable: true
type: integer
format: int32
minimum: 2020
maximum: 2100
fiscal_month:
nullable: true
type: integer
format: int32
minimum: 1
maximum: 12
description:
type: string
maxLength: 500
notes:
nullable: true
type: string
maxLength: 1000
currency:
type: string
total_debit:
type: string
total_credit:
type: string
line_count:
type: integer
format: int32
source:
type: string
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 255
is_reversed:
type: boolean
reversed_by_id:
nullable: true
type: string
format: uuid
reversed_at:
nullable: true
type: string
format: date-time
reversal_reason:
nullable: true
type: string
maxLength: 255
reverses_id:
nullable: true
type: string
format: uuid
is_reversing:
type: boolean
auto_reverse:
type: boolean
auto_reverse_date:
nullable: true
type: string
format: date
status:
type: string
requires_approval:
type: boolean
approval_threshold:
nullable: true
type: string
submitted_at:
nullable: true
type: string
format: date-time
submitted_by:
nullable: true
type: string
format: uuid
approved_at:
nullable: true
type: string
format: date-time
approved_by:
nullable: true
type: string
format: uuid
rejected_at:
nullable: true
type: string
format: date-time
rejected_by:
nullable: true
type: string
format: uuid
rejection_reason:
nullable: true
type: string
maxLength: 500
posted_at:
nullable: true
type: string
format: date-time
posted_by:
nullable: true
type: string
format: uuid
is_voided:
type: boolean
voided_at:
nullable: true
type: string
format: date-time
voided_by:
nullable: true
type: string
format: uuid
void_reason:
nullable: true
type: string
maxLength: 500
attachments:
type: object
metadata:
type: object
JournalList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Journal'
meta:
$ref: '#/components/schemas/PaginationMeta'
JournalLine:
type: object
required:
- id
- journal_id
- line_number
- account_id
- account_number
- account_name
- debit_amount
- credit_amount
- currency
- exchange_rate
- base_debit_amount
- base_credit_amount
- is_tax_line
- has_quantity
- is_reconciled
- is_posted
- tags
- data
properties:
id:
type: string
format: uuid
journal_id:
type: string
format: uuid
branch_id:
nullable: true
type: string
format: uuid
party_type:
nullable: true
type: string
party_id:
nullable: true
type: string
format: uuid
line_number:
type: integer
format: int32
account_id:
type: string
format: uuid
account_number:
type: string
maxLength: 20
account_name:
type: string
maxLength: 100
debit_amount:
type: string
credit_amount:
type: string
currency:
type: string
exchange_rate:
type: string
base_debit_amount:
type: string
base_credit_amount:
type: string
description:
nullable: true
type: string
maxLength: 255
cost_center_id:
nullable: true
type: string
format: uuid
project_id:
nullable: true
type: string
format: uuid
department_id:
nullable: true
type: string
format: uuid
dimensions:
nullable: true
type: object
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 100
is_tax_line:
type: boolean
tax_rate:
nullable: true
type: string
tax_base_amount:
nullable: true
type: string
related_line_id:
nullable: true
type: string
format: uuid
has_quantity:
type: boolean
quantity:
nullable: true
type: string
unit:
nullable: true
type: string
maxLength: 20
unit_price:
nullable: true
type: string
is_reconciled:
type: boolean
reconciliation_id:
nullable: true
type: string
format: uuid
reconciled_at:
nullable: true
type: string
format: date-time
full_reconcile_id:
nullable: true
type: string
format: uuid
is_posted:
type: boolean
ledger_id:
nullable: true
type: string
format: uuid
posted_at:
nullable: true
type: string
format: date-time
tags:
type: object
data:
type: object
JournalLineBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/JournalLine'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateJournalLineRequest:
type: object
required:
- journal_id
- line_number
- account_id
- account_number
- account_name
- debit_amount
- credit_amount
- currency
- exchange_rate
- base_debit_amount
- base_credit_amount
- is_tax_line
- has_quantity
- is_reconciled
- is_posted
- tags
- data
properties:
journal_id:
type: string
format: uuid
branch_id:
nullable: true
type: string
format: uuid
party_type:
nullable: true
type: string
party_id:
nullable: true
type: string
format: uuid
line_number:
type: integer
format: int32
account_id:
type: string
format: uuid
account_number:
type: string
maxLength: 20
account_name:
type: string
maxLength: 100
debit_amount:
type: string
credit_amount:
type: string
currency:
type: string
exchange_rate:
type: string
base_debit_amount:
type: string
base_credit_amount:
type: string
description:
nullable: true
type: string
maxLength: 255
cost_center_id:
nullable: true
type: string
format: uuid
project_id:
nullable: true
type: string
format: uuid
department_id:
nullable: true
type: string
format: uuid
dimensions:
nullable: true
type: object
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 100
is_tax_line:
type: boolean
tax_rate:
nullable: true
type: string
tax_base_amount:
nullable: true
type: string
related_line_id:
nullable: true
type: string
format: uuid
has_quantity:
type: boolean
quantity:
nullable: true
type: string
unit:
nullable: true
type: string
maxLength: 20
unit_price:
nullable: true
type: string
is_reconciled:
type: boolean
reconciliation_id:
nullable: true
type: string
format: uuid
reconciled_at:
nullable: true
type: string
format: date-time
full_reconcile_id:
nullable: true
type: string
format: uuid
is_posted:
type: boolean
ledger_id:
nullable: true
type: string
format: uuid
posted_at:
nullable: true
type: string
format: date-time
tags:
type: object
data:
type: object
UpdateJournalLineRequest:
type: object
required:
- journal_id
- line_number
- account_id
- account_number
- account_name
- debit_amount
- credit_amount
- currency
- exchange_rate
- base_debit_amount
- base_credit_amount
- is_tax_line
- has_quantity
- is_reconciled
- is_posted
- tags
- data
properties:
journal_id:
type: string
format: uuid
branch_id:
nullable: true
type: string
format: uuid
party_type:
nullable: true
type: string
party_id:
nullable: true
type: string
format: uuid
line_number:
type: integer
format: int32
account_id:
type: string
format: uuid
account_number:
type: string
maxLength: 20
account_name:
type: string
maxLength: 100
debit_amount:
type: string
credit_amount:
type: string
currency:
type: string
exchange_rate:
type: string
base_debit_amount:
type: string
base_credit_amount:
type: string
description:
nullable: true
type: string
maxLength: 255
cost_center_id:
nullable: true
type: string
format: uuid
project_id:
nullable: true
type: string
format: uuid
department_id:
nullable: true
type: string
format: uuid
dimensions:
nullable: true
type: object
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 100
is_tax_line:
type: boolean
tax_rate:
nullable: true
type: string
tax_base_amount:
nullable: true
type: string
related_line_id:
nullable: true
type: string
format: uuid
has_quantity:
type: boolean
quantity:
nullable: true
type: string
unit:
nullable: true
type: string
maxLength: 20
unit_price:
nullable: true
type: string
is_reconciled:
type: boolean
reconciliation_id:
nullable: true
type: string
format: uuid
reconciled_at:
nullable: true
type: string
format: date-time
full_reconcile_id:
nullable: true
type: string
format: uuid
is_posted:
type: boolean
ledger_id:
nullable: true
type: string
format: uuid
posted_at:
nullable: true
type: string
format: date-time
tags:
type: object
data:
type: object
PatchJournalLineRequest:
type: object
properties:
journal_id:
type: string
format: uuid
branch_id:
nullable: true
type: string
format: uuid
party_type:
nullable: true
type: string
party_id:
nullable: true
type: string
format: uuid
line_number:
type: integer
format: int32
account_id:
type: string
format: uuid
account_number:
type: string
maxLength: 20
account_name:
type: string
maxLength: 100
debit_amount:
type: string
credit_amount:
type: string
currency:
type: string
exchange_rate:
type: string
base_debit_amount:
type: string
base_credit_amount:
type: string
description:
nullable: true
type: string
maxLength: 255
cost_center_id:
nullable: true
type: string
format: uuid
project_id:
nullable: true
type: string
format: uuid
department_id:
nullable: true
type: string
format: uuid
dimensions:
nullable: true
type: object
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 100
is_tax_line:
type: boolean
tax_rate:
nullable: true
type: string
tax_base_amount:
nullable: true
type: string
related_line_id:
nullable: true
type: string
format: uuid
has_quantity:
type: boolean
quantity:
nullable: true
type: string
unit:
nullable: true
type: string
maxLength: 20
unit_price:
nullable: true
type: string
is_reconciled:
type: boolean
reconciliation_id:
nullable: true
type: string
format: uuid
reconciled_at:
nullable: true
type: string
format: date-time
full_reconcile_id:
nullable: true
type: string
format: uuid
is_posted:
type: boolean
ledger_id:
nullable: true
type: string
format: uuid
posted_at:
nullable: true
type: string
format: date-time
tags:
type: object
data:
type: object
JournalLineList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/JournalLine'
meta:
$ref: '#/components/schemas/PaginationMeta'
Ledger:
type: object
required:
- id
- account_id
- account_number
- account_name
- account_type
- normal_balance
- journal_id
- journal_number
- journal_line_id
- transaction_date
- posting_date
- fiscal_year
- fiscal_month
- description
- currency
- debit_amount
- credit_amount
- balance_before
- balance_after
- balance_change
- sequence_number
- is_reconciled
- is_opening_balance
- is_closing_entry
- is_adjustment
- is_reversed
- metadata
properties:
id:
type: string
format: uuid
account_id:
type: string
format: uuid
account_number:
type: string
maxLength: 20
account_name:
type: string
maxLength: 100
account_type:
type: string
normal_balance:
type: string
journal_id:
type: string
format: uuid
journal_number:
type: string
maxLength: 30
journal_line_id:
type: string
format: uuid
transaction_date:
type: string
format: date
posting_date:
type: string
format: date
fiscal_period_id:
nullable: true
type: string
format: uuid
fiscal_year:
type: integer
format: int32
minimum: 2020
maximum: 2100
fiscal_month:
type: integer
format: int32
minimum: 1
maximum: 12
description:
type: string
maxLength: 500
reference:
nullable: true
type: string
maxLength: 255
currency:
type: string
debit_amount:
type: string
credit_amount:
type: string
balance_before:
type: string
balance_after:
type: string
balance_change:
type: string
sequence_number:
type: integer
format: int32
branch_id:
nullable: true
type: string
format: uuid
party_type:
nullable: true
type: string
party_id:
nullable: true
type: string
format: uuid
cost_center_id:
nullable: true
type: string
format: uuid
project_id:
nullable: true
type: string
format: uuid
department_id:
nullable: true
type: string
format: uuid
dimensions:
nullable: true
type: object
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 100
is_reconciled:
type: boolean
reconciliation_id:
nullable: true
type: string
format: uuid
reconciled_at:
nullable: true
type: string
format: date-time
is_opening_balance:
type: boolean
is_closing_entry:
type: boolean
is_adjustment:
type: boolean
is_reversed:
type: boolean
reversed_by_id:
nullable: true
type: string
format: uuid
reverses_id:
nullable: true
type: string
format: uuid
metadata:
type: object
LedgerBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Ledger'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateLedgerRequest:
type: object
required:
- account_id
- account_number
- account_name
- account_type
- normal_balance
- journal_id
- journal_number
- journal_line_id
- transaction_date
- posting_date
- fiscal_year
- fiscal_month
- description
- currency
- debit_amount
- credit_amount
- balance_before
- balance_after
- balance_change
- sequence_number
- is_reconciled
- is_opening_balance
- is_closing_entry
- is_adjustment
- is_reversed
- metadata
properties:
account_id:
type: string
format: uuid
account_number:
type: string
maxLength: 20
account_name:
type: string
maxLength: 100
account_type:
type: string
normal_balance:
type: string
journal_id:
type: string
format: uuid
journal_number:
type: string
maxLength: 30
journal_line_id:
type: string
format: uuid
transaction_date:
type: string
format: date
posting_date:
type: string
format: date
fiscal_period_id:
nullable: true
type: string
format: uuid
fiscal_year:
type: integer
format: int32
minimum: 2020
maximum: 2100
fiscal_month:
type: integer
format: int32
minimum: 1
maximum: 12
description:
type: string
maxLength: 500
reference:
nullable: true
type: string
maxLength: 255
currency:
type: string
debit_amount:
type: string
credit_amount:
type: string
balance_before:
type: string
balance_after:
type: string
balance_change:
type: string
sequence_number:
type: integer
format: int32
branch_id:
nullable: true
type: string
format: uuid
party_type:
nullable: true
type: string
party_id:
nullable: true
type: string
format: uuid
cost_center_id:
nullable: true
type: string
format: uuid
project_id:
nullable: true
type: string
format: uuid
department_id:
nullable: true
type: string
format: uuid
dimensions:
nullable: true
type: object
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 100
is_reconciled:
type: boolean
reconciliation_id:
nullable: true
type: string
format: uuid
reconciled_at:
nullable: true
type: string
format: date-time
is_opening_balance:
type: boolean
is_closing_entry:
type: boolean
is_adjustment:
type: boolean
is_reversed:
type: boolean
reversed_by_id:
nullable: true
type: string
format: uuid
reverses_id:
nullable: true
type: string
format: uuid
metadata:
type: object
UpdateLedgerRequest:
type: object
required:
- account_id
- account_number
- account_name
- account_type
- normal_balance
- journal_id
- journal_number
- journal_line_id
- transaction_date
- posting_date
- fiscal_year
- fiscal_month
- description
- currency
- debit_amount
- credit_amount
- balance_before
- balance_after
- balance_change
- sequence_number
- is_reconciled
- is_opening_balance
- is_closing_entry
- is_adjustment
- is_reversed
- metadata
properties:
account_id:
type: string
format: uuid
account_number:
type: string
maxLength: 20
account_name:
type: string
maxLength: 100
account_type:
type: string
normal_balance:
type: string
journal_id:
type: string
format: uuid
journal_number:
type: string
maxLength: 30
journal_line_id:
type: string
format: uuid
transaction_date:
type: string
format: date
posting_date:
type: string
format: date
fiscal_period_id:
nullable: true
type: string
format: uuid
fiscal_year:
type: integer
format: int32
minimum: 2020
maximum: 2100
fiscal_month:
type: integer
format: int32
minimum: 1
maximum: 12
description:
type: string
maxLength: 500
reference:
nullable: true
type: string
maxLength: 255
currency:
type: string
debit_amount:
type: string
credit_amount:
type: string
balance_before:
type: string
balance_after:
type: string
balance_change:
type: string
sequence_number:
type: integer
format: int32
branch_id:
nullable: true
type: string
format: uuid
party_type:
nullable: true
type: string
party_id:
nullable: true
type: string
format: uuid
cost_center_id:
nullable: true
type: string
format: uuid
project_id:
nullable: true
type: string
format: uuid
department_id:
nullable: true
type: string
format: uuid
dimensions:
nullable: true
type: object
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 100
is_reconciled:
type: boolean
reconciliation_id:
nullable: true
type: string
format: uuid
reconciled_at:
nullable: true
type: string
format: date-time
is_opening_balance:
type: boolean
is_closing_entry:
type: boolean
is_adjustment:
type: boolean
is_reversed:
type: boolean
reversed_by_id:
nullable: true
type: string
format: uuid
reverses_id:
nullable: true
type: string
format: uuid
metadata:
type: object
PatchLedgerRequest:
type: object
properties:
account_id:
type: string
format: uuid
account_number:
type: string
maxLength: 20
account_name:
type: string
maxLength: 100
account_type:
type: string
normal_balance:
type: string
journal_id:
type: string
format: uuid
journal_number:
type: string
maxLength: 30
journal_line_id:
type: string
format: uuid
transaction_date:
type: string
format: date
posting_date:
type: string
format: date
fiscal_period_id:
nullable: true
type: string
format: uuid
fiscal_year:
type: integer
format: int32
minimum: 2020
maximum: 2100
fiscal_month:
type: integer
format: int32
minimum: 1
maximum: 12
description:
type: string
maxLength: 500
reference:
nullable: true
type: string
maxLength: 255
currency:
type: string
debit_amount:
type: string
credit_amount:
type: string
balance_before:
type: string
balance_after:
type: string
balance_change:
type: string
sequence_number:
type: integer
format: int32
branch_id:
nullable: true
type: string
format: uuid
party_type:
nullable: true
type: string
party_id:
nullable: true
type: string
format: uuid
cost_center_id:
nullable: true
type: string
format: uuid
project_id:
nullable: true
type: string
format: uuid
department_id:
nullable: true
type: string
format: uuid
dimensions:
nullable: true
type: object
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
source_reference:
nullable: true
type: string
maxLength: 100
is_reconciled:
type: boolean
reconciliation_id:
nullable: true
type: string
format: uuid
reconciled_at:
nullable: true
type: string
format: date-time
is_opening_balance:
type: boolean
is_closing_entry:
type: boolean
is_adjustment:
type: boolean
is_reversed:
type: boolean
reversed_by_id:
nullable: true
type: string
format: uuid
reverses_id:
nullable: true
type: string
format: uuid
metadata:
type: object
LedgerList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Ledger'
meta:
$ref: '#/components/schemas/PaginationMeta'
Reconciliation:
type: object
required:
- id
- reconciliation_number
- account_id
- account_number
- account_name
- reconciliation_type
- period_start
- period_end
- statement_date
- opening_book_balance
- opening_statement_balance
- closing_book_balance
- closing_statement_balance
- total_matched_debits
- total_matched_credits
- matched_count
- total_unmatched_book_debits
- total_unmatched_book_credits
- unmatched_book_count
- total_unmatched_statement_debits
- total_unmatched_statement_credits
- unmatched_statement_count
- outstanding_deposits
- outstanding_checks
- deposits_in_transit
- bank_charges
- bank_interest
- nsf_checks
- other_adjustments
- difference
- is_balanced
- status
- has_adjusting_entries
- adjusting_journal_ids
- metadata
properties:
id:
type: string
format: uuid
reconciliation_number:
type: string
maxLength: 30
account_id:
type: string
format: uuid
account_number:
type: string
maxLength: 20
account_name:
type: string
maxLength: 100
reconciliation_type:
type: string
period_start:
type: string
format: date
period_end:
type: string
format: date
statement_date:
type: string
format: date
opening_book_balance:
type: string
opening_statement_balance:
type: string
previous_reconciliation_id:
nullable: true
type: string
format: uuid
closing_book_balance:
type: string
closing_statement_balance:
type: string
total_matched_debits:
type: string
total_matched_credits:
type: string
matched_count:
type: integer
format: int32
total_unmatched_book_debits:
type: string
total_unmatched_book_credits:
type: string
unmatched_book_count:
type: integer
format: int32
total_unmatched_statement_debits:
type: string
total_unmatched_statement_credits:
type: string
unmatched_statement_count:
type: integer
format: int32
outstanding_deposits:
type: string
outstanding_checks:
type: string
deposits_in_transit:
type: string
bank_charges:
type: string
bank_interest:
type: string
nsf_checks:
type: string
other_adjustments:
type: string
adjusted_book_balance:
nullable: true
type: string
adjusted_statement_balance:
nullable: true
type: string
difference:
type: string
is_balanced:
type: boolean
status:
type: string
started_at:
nullable: true
type: string
format: date-time
started_by:
nullable: true
type: string
format: uuid
completed_at:
nullable: true
type: string
format: date-time
completed_by:
nullable: true
type: string
format: uuid
reviewed_at:
nullable: true
type: string
format: date-time
reviewed_by:
nullable: true
type: string
format: uuid
has_adjusting_entries:
type: boolean
adjusting_journal_ids:
type: object
statement_source:
nullable: true
type: string
maxLength: 50
statement_file_url:
nullable: true
type: string
maxLength: 500
import_date:
nullable: true
type: string
format: date-time
notes:
nullable: true
type: string
maxLength: 1000
discrepancy_notes:
nullable: true
type: string
maxLength: 1000
metadata:
type: object
ReconciliationBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Reconciliation'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateReconciliationRequest:
type: object
required:
- reconciliation_number
- account_id
- account_number
- account_name
- reconciliation_type
- period_start
- period_end
- statement_date
- opening_book_balance
- opening_statement_balance
- closing_book_balance
- closing_statement_balance
- total_matched_debits
- total_matched_credits
- matched_count
- total_unmatched_book_debits
- total_unmatched_book_credits
- unmatched_book_count
- total_unmatched_statement_debits
- total_unmatched_statement_credits
- unmatched_statement_count
- outstanding_deposits
- outstanding_checks
- deposits_in_transit
- bank_charges
- bank_interest
- nsf_checks
- other_adjustments
- difference
- is_balanced
- status
- has_adjusting_entries
- adjusting_journal_ids
- metadata
properties:
reconciliation_number:
type: string
maxLength: 30
account_id:
type: string
format: uuid
account_number:
type: string
maxLength: 20
account_name:
type: string
maxLength: 100
reconciliation_type:
type: string
period_start:
type: string
format: date
period_end:
type: string
format: date
statement_date:
type: string
format: date
opening_book_balance:
type: string
opening_statement_balance:
type: string
previous_reconciliation_id:
nullable: true
type: string
format: uuid
closing_book_balance:
type: string
closing_statement_balance:
type: string
total_matched_debits:
type: string
total_matched_credits:
type: string
matched_count:
type: integer
format: int32
total_unmatched_book_debits:
type: string
total_unmatched_book_credits:
type: string
unmatched_book_count:
type: integer
format: int32
total_unmatched_statement_debits:
type: string
total_unmatched_statement_credits:
type: string
unmatched_statement_count:
type: integer
format: int32
outstanding_deposits:
type: string
outstanding_checks:
type: string
deposits_in_transit:
type: string
bank_charges:
type: string
bank_interest:
type: string
nsf_checks:
type: string
other_adjustments:
type: string
adjusted_book_balance:
nullable: true
type: string
adjusted_statement_balance:
nullable: true
type: string
difference:
type: string
is_balanced:
type: boolean
status:
type: string
started_at:
nullable: true
type: string
format: date-time
started_by:
nullable: true
type: string
format: uuid
completed_at:
nullable: true
type: string
format: date-time
completed_by:
nullable: true
type: string
format: uuid
reviewed_at:
nullable: true
type: string
format: date-time
reviewed_by:
nullable: true
type: string
format: uuid
has_adjusting_entries:
type: boolean
adjusting_journal_ids:
type: object
statement_source:
nullable: true
type: string
maxLength: 50
statement_file_url:
nullable: true
type: string
maxLength: 500
import_date:
nullable: true
type: string
format: date-time
notes:
nullable: true
type: string
maxLength: 1000
discrepancy_notes:
nullable: true
type: string
maxLength: 1000
metadata:
type: object
UpdateReconciliationRequest:
type: object
required:
- reconciliation_number
- account_id
- account_number
- account_name
- reconciliation_type
- period_start
- period_end
- statement_date
- opening_book_balance
- opening_statement_balance
- closing_book_balance
- closing_statement_balance
- total_matched_debits
- total_matched_credits
- matched_count
- total_unmatched_book_debits
- total_unmatched_book_credits
- unmatched_book_count
- total_unmatched_statement_debits
- total_unmatched_statement_credits
- unmatched_statement_count
- outstanding_deposits
- outstanding_checks
- deposits_in_transit
- bank_charges
- bank_interest
- nsf_checks
- other_adjustments
- difference
- is_balanced
- status
- has_adjusting_entries
- adjusting_journal_ids
- metadata
properties:
reconciliation_number:
type: string
maxLength: 30
account_id:
type: string
format: uuid
account_number:
type: string
maxLength: 20
account_name:
type: string
maxLength: 100
reconciliation_type:
type: string
period_start:
type: string
format: date
period_end:
type: string
format: date
statement_date:
type: string
format: date
opening_book_balance:
type: string
opening_statement_balance:
type: string
previous_reconciliation_id:
nullable: true
type: string
format: uuid
closing_book_balance:
type: string
closing_statement_balance:
type: string
total_matched_debits:
type: string
total_matched_credits:
type: string
matched_count:
type: integer
format: int32
total_unmatched_book_debits:
type: string
total_unmatched_book_credits:
type: string
unmatched_book_count:
type: integer
format: int32
total_unmatched_statement_debits:
type: string
total_unmatched_statement_credits:
type: string
unmatched_statement_count:
type: integer
format: int32
outstanding_deposits:
type: string
outstanding_checks:
type: string
deposits_in_transit:
type: string
bank_charges:
type: string
bank_interest:
type: string
nsf_checks:
type: string
other_adjustments:
type: string
adjusted_book_balance:
nullable: true
type: string
adjusted_statement_balance:
nullable: true
type: string
difference:
type: string
is_balanced:
type: boolean
status:
type: string
started_at:
nullable: true
type: string
format: date-time
started_by:
nullable: true
type: string
format: uuid
completed_at:
nullable: true
type: string
format: date-time
completed_by:
nullable: true
type: string
format: uuid
reviewed_at:
nullable: true
type: string
format: date-time
reviewed_by:
nullable: true
type: string
format: uuid
has_adjusting_entries:
type: boolean
adjusting_journal_ids:
type: object
statement_source:
nullable: true
type: string
maxLength: 50
statement_file_url:
nullable: true
type: string
maxLength: 500
import_date:
nullable: true
type: string
format: date-time
notes:
nullable: true
type: string
maxLength: 1000
discrepancy_notes:
nullable: true
type: string
maxLength: 1000
metadata:
type: object
PatchReconciliationRequest:
type: object
properties:
reconciliation_number:
type: string
maxLength: 30
account_id:
type: string
format: uuid
account_number:
type: string
maxLength: 20
account_name:
type: string
maxLength: 100
reconciliation_type:
type: string
period_start:
type: string
format: date
period_end:
type: string
format: date
statement_date:
type: string
format: date
opening_book_balance:
type: string
opening_statement_balance:
type: string
previous_reconciliation_id:
nullable: true
type: string
format: uuid
closing_book_balance:
type: string
closing_statement_balance:
type: string
total_matched_debits:
type: string
total_matched_credits:
type: string
matched_count:
type: integer
format: int32
total_unmatched_book_debits:
type: string
total_unmatched_book_credits:
type: string
unmatched_book_count:
type: integer
format: int32
total_unmatched_statement_debits:
type: string
total_unmatched_statement_credits:
type: string
unmatched_statement_count:
type: integer
format: int32
outstanding_deposits:
type: string
outstanding_checks:
type: string
deposits_in_transit:
type: string
bank_charges:
type: string
bank_interest:
type: string
nsf_checks:
type: string
other_adjustments:
type: string
adjusted_book_balance:
nullable: true
type: string
adjusted_statement_balance:
nullable: true
type: string
difference:
type: string
is_balanced:
type: boolean
status:
type: string
started_at:
nullable: true
type: string
format: date-time
started_by:
nullable: true
type: string
format: uuid
completed_at:
nullable: true
type: string
format: date-time
completed_by:
nullable: true
type: string
format: uuid
reviewed_at:
nullable: true
type: string
format: date-time
reviewed_by:
nullable: true
type: string
format: uuid
has_adjusting_entries:
type: boolean
adjusting_journal_ids:
type: object
statement_source:
nullable: true
type: string
maxLength: 50
statement_file_url:
nullable: true
type: string
maxLength: 500
import_date:
nullable: true
type: string
format: date-time
notes:
nullable: true
type: string
maxLength: 1000
discrepancy_notes:
nullable: true
type: string
maxLength: 1000
metadata:
type: object
ReconciliationList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Reconciliation'
meta:
$ref: '#/components/schemas/PaginationMeta'
ReconciliationItem:
type: object
required:
- id
- reconciliation_id
- item_number
- source
- book_debit
- book_credit
- statement_debit
- statement_credit
- status
- has_difference
- difference_amount
- requires_adjustment
- is_written_off
- is_outstanding
- data
properties:
id:
type: string
format: uuid
reconciliation_id:
type: string
format: uuid
item_number:
type: integer
format: int32
source:
type: string
maxLength: 20
ledger_id:
nullable: true
type: string
format: uuid
journal_id:
nullable: true
type: string
format: uuid
book_date:
nullable: true
type: string
format: date
book_reference:
nullable: true
type: string
maxLength: 100
book_description:
nullable: true
type: string
maxLength: 255
book_debit:
type: string
book_credit:
type: string
statement_date:
nullable: true
type: string
format: date
statement_reference:
nullable: true
type: string
maxLength: 100
statement_description:
nullable: true
type: string
maxLength: 255
statement_debit:
type: string
statement_credit:
type: string
status:
type: string
matched_with_id:
nullable: true
type: string
format: uuid
match_date:
nullable: true
type: string
format: date-time
match_method:
nullable: true
type: string
maxLength: 30
match_confidence:
nullable: true
type: string
has_difference:
type: boolean
difference_amount:
type: string
difference_reason:
nullable: true
type: string
maxLength: 255
requires_adjustment:
type: boolean
adjustment_type:
nullable: true
type: string
maxLength: 50
adjustment_journal_id:
nullable: true
type: string
format: uuid
adjusted_at:
nullable: true
type: string
format: date-time
is_written_off:
type: boolean
write_off_reason:
nullable: true
type: string
maxLength: 255
write_off_approved_by:
nullable: true
type: string
format: uuid
is_outstanding:
type: boolean
outstanding_type:
nullable: true
type: string
maxLength: 50
expected_clear_date:
nullable: true
type: string
format: date
notes:
nullable: true
type: string
maxLength: 500
data:
type: object
ReconciliationItemBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/ReconciliationItem'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateReconciliationItemRequest:
type: object
required:
- reconciliation_id
- item_number
- source
- book_debit
- book_credit
- statement_debit
- statement_credit
- status
- has_difference
- difference_amount
- requires_adjustment
- is_written_off
- is_outstanding
- data
properties:
reconciliation_id:
type: string
format: uuid
item_number:
type: integer
format: int32
source:
type: string
maxLength: 20
ledger_id:
nullable: true
type: string
format: uuid
journal_id:
nullable: true
type: string
format: uuid
book_date:
nullable: true
type: string
format: date
book_reference:
nullable: true
type: string
maxLength: 100
book_description:
nullable: true
type: string
maxLength: 255
book_debit:
type: string
book_credit:
type: string
statement_date:
nullable: true
type: string
format: date
statement_reference:
nullable: true
type: string
maxLength: 100
statement_description:
nullable: true
type: string
maxLength: 255
statement_debit:
type: string
statement_credit:
type: string
status:
type: string
matched_with_id:
nullable: true
type: string
format: uuid
match_date:
nullable: true
type: string
format: date-time
match_method:
nullable: true
type: string
maxLength: 30
match_confidence:
nullable: true
type: string
has_difference:
type: boolean
difference_amount:
type: string
difference_reason:
nullable: true
type: string
maxLength: 255
requires_adjustment:
type: boolean
adjustment_type:
nullable: true
type: string
maxLength: 50
adjustment_journal_id:
nullable: true
type: string
format: uuid
adjusted_at:
nullable: true
type: string
format: date-time
is_written_off:
type: boolean
write_off_reason:
nullable: true
type: string
maxLength: 255
write_off_approved_by:
nullable: true
type: string
format: uuid
is_outstanding:
type: boolean
outstanding_type:
nullable: true
type: string
maxLength: 50
expected_clear_date:
nullable: true
type: string
format: date
notes:
nullable: true
type: string
maxLength: 500
data:
type: object
UpdateReconciliationItemRequest:
type: object
required:
- reconciliation_id
- item_number
- source
- book_debit
- book_credit
- statement_debit
- statement_credit
- status
- has_difference
- difference_amount
- requires_adjustment
- is_written_off
- is_outstanding
- data
properties:
reconciliation_id:
type: string
format: uuid
item_number:
type: integer
format: int32
source:
type: string
maxLength: 20
ledger_id:
nullable: true
type: string
format: uuid
journal_id:
nullable: true
type: string
format: uuid
book_date:
nullable: true
type: string
format: date
book_reference:
nullable: true
type: string
maxLength: 100
book_description:
nullable: true
type: string
maxLength: 255
book_debit:
type: string
book_credit:
type: string
statement_date:
nullable: true
type: string
format: date
statement_reference:
nullable: true
type: string
maxLength: 100
statement_description:
nullable: true
type: string
maxLength: 255
statement_debit:
type: string
statement_credit:
type: string
status:
type: string
matched_with_id:
nullable: true
type: string
format: uuid
match_date:
nullable: true
type: string
format: date-time
match_method:
nullable: true
type: string
maxLength: 30
match_confidence:
nullable: true
type: string
has_difference:
type: boolean
difference_amount:
type: string
difference_reason:
nullable: true
type: string
maxLength: 255
requires_adjustment:
type: boolean
adjustment_type:
nullable: true
type: string
maxLength: 50
adjustment_journal_id:
nullable: true
type: string
format: uuid
adjusted_at:
nullable: true
type: string
format: date-time
is_written_off:
type: boolean
write_off_reason:
nullable: true
type: string
maxLength: 255
write_off_approved_by:
nullable: true
type: string
format: uuid
is_outstanding:
type: boolean
outstanding_type:
nullable: true
type: string
maxLength: 50
expected_clear_date:
nullable: true
type: string
format: date
notes:
nullable: true
type: string
maxLength: 500
data:
type: object
PatchReconciliationItemRequest:
type: object
properties:
reconciliation_id:
type: string
format: uuid
item_number:
type: integer
format: int32
source:
type: string
maxLength: 20
ledger_id:
nullable: true
type: string
format: uuid
journal_id:
nullable: true
type: string
format: uuid
book_date:
nullable: true
type: string
format: date
book_reference:
nullable: true
type: string
maxLength: 100
book_description:
nullable: true
type: string
maxLength: 255
book_debit:
type: string
book_credit:
type: string
statement_date:
nullable: true
type: string
format: date
statement_reference:
nullable: true
type: string
maxLength: 100
statement_description:
nullable: true
type: string
maxLength: 255
statement_debit:
type: string
statement_credit:
type: string
status:
type: string
matched_with_id:
nullable: true
type: string
format: uuid
match_date:
nullable: true
type: string
format: date-time
match_method:
nullable: true
type: string
maxLength: 30
match_confidence:
nullable: true
type: string
has_difference:
type: boolean
difference_amount:
type: string
difference_reason:
nullable: true
type: string
maxLength: 255
requires_adjustment:
type: boolean
adjustment_type:
nullable: true
type: string
maxLength: 50
adjustment_journal_id:
nullable: true
type: string
format: uuid
adjusted_at:
nullable: true
type: string
format: date-time
is_written_off:
type: boolean
write_off_reason:
nullable: true
type: string
maxLength: 255
write_off_approved_by:
nullable: true
type: string
format: uuid
is_outstanding:
type: boolean
outstanding_type:
nullable: true
type: string
maxLength: 50
expected_clear_date:
nullable: true
type: string
format: date
notes:
nullable: true
type: string
maxLength: 500
data:
type: object
ReconciliationItemList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/ReconciliationItem'
meta:
$ref: '#/components/schemas/PaginationMeta'
FullReconcile:
type: object
required:
- id
- exchange_total
- reconciled_at
- created_at
- updated_at
properties:
id:
type: string
format: uuid
exchange_total:
type: string
reconciled_at:
type: string
format: date-time
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
metadata:
nullable: true
type: object
FullReconcileBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/FullReconcile'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateFullReconcileRequest:
type: object
required:
- exchange_total
- reconciled_at
properties:
exchange_total:
type: string
reconciled_at:
type: string
format: date-time
metadata:
nullable: true
type: object
UpdateFullReconcileRequest:
type: object
required:
- exchange_total
- reconciled_at
properties:
exchange_total:
type: string
reconciled_at:
type: string
format: date-time
metadata:
nullable: true
type: object
PatchFullReconcileRequest:
type: object
properties:
exchange_total:
type: string
reconciled_at:
type: string
format: date-time
metadata:
nullable: true
type: object
FullReconcileList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/FullReconcile'
meta:
$ref: '#/components/schemas/PaginationMeta'
PartialReconcile:
type: object
required:
- id
- debit_move_id
- credit_move_id
- amount
- currency
- max_date
- origin
- created_at
- updated_at
properties:
id:
type: string
format: uuid
debit_move_id:
type: string
format: uuid
credit_move_id:
type: string
format: uuid
full_reconcile_id:
nullable: true
type: string
format: uuid
exchange_move_id:
nullable: true
type: string
format: uuid
amount:
type: string
debit_amount_currency:
nullable: true
type: string
credit_amount_currency:
nullable: true
type: string
currency:
type: string
maxLength: 3
max_date:
type: string
format: date
origin:
type: string
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
metadata:
nullable: true
type: object
PartialReconcileBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PartialReconcile'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreatePartialReconcileRequest:
type: object
required:
- debit_move_id
- credit_move_id
- amount
- currency
- max_date
- origin
properties:
debit_move_id:
type: string
format: uuid
credit_move_id:
type: string
format: uuid
full_reconcile_id:
nullable: true
type: string
format: uuid
exchange_move_id:
nullable: true
type: string
format: uuid
amount:
type: string
debit_amount_currency:
nullable: true
type: string
credit_amount_currency:
nullable: true
type: string
currency:
type: string
maxLength: 3
max_date:
type: string
format: date
origin:
type: string
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
metadata:
nullable: true
type: object
UpdatePartialReconcileRequest:
type: object
required:
- debit_move_id
- credit_move_id
- amount
- currency
- max_date
- origin
properties:
debit_move_id:
type: string
format: uuid
credit_move_id:
type: string
format: uuid
full_reconcile_id:
nullable: true
type: string
format: uuid
exchange_move_id:
nullable: true
type: string
format: uuid
amount:
type: string
debit_amount_currency:
nullable: true
type: string
credit_amount_currency:
nullable: true
type: string
currency:
type: string
maxLength: 3
max_date:
type: string
format: date
origin:
type: string
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
metadata:
nullable: true
type: object
PatchPartialReconcileRequest:
type: object
properties:
debit_move_id:
type: string
format: uuid
credit_move_id:
type: string
format: uuid
full_reconcile_id:
nullable: true
type: string
format: uuid
exchange_move_id:
nullable: true
type: string
format: uuid
amount:
type: string
debit_amount_currency:
nullable: true
type: string
credit_amount_currency:
nullable: true
type: string
currency:
type: string
maxLength: 3
max_date:
type: string
format: date
origin:
type: string
source_type:
nullable: true
type: string
maxLength: 50
source_id:
nullable: true
type: string
format: uuid
metadata:
nullable: true
type: object
PartialReconcileList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PartialReconcile'
meta:
$ref: '#/components/schemas/PaginationMeta'
PaginationMeta:
type: object
properties:
total:
type: integer
example: 100
page:
type: integer
example: 1
per_page:
type: integer
example: 20
total_pages:
type: integer
example: 5
Error:
type: object
required:
- code
- message
properties:
code:
type: string
example: VALIDATION_ERROR
message:
type: string
example: Invalid input data
details:
type: object
additionalProperties: true
parameters:
IdParam:
name: id
in: path
required: true
schema:
type: string
format: uuid
PageParam:
name: page
in: query
schema:
type: integer
minimum: 1
default: 1
PerPageParam:
name: per_page
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 20
SortByParam:
name: sort_by
in: query
schema:
type: string
SortOrderParam:
name: sort_order
in: query
schema:
type: string
enum: [asc, desc]
default: asc
responses:
BadRequest:
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
requestBodies:
BatchIds:
required: true
content:
application/json:
schema:
type: object
required: [ids]
properties:
ids:
type: array
items: { type: string }
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
security:
- bearerAuth: []