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: PosClosingEntries
description: PosClosingEntry management endpoints
- name: PosInvoices
description: PosInvoice management endpoints
- name: PosInvoiceItems
description: PosInvoiceItem management endpoints
- name: PosPayments
description: PosPayment management endpoints
- name: PosProfiles
description: PosProfile management endpoints
- name: PosOpeningEntries
description: PosOpeningEntry management endpoints
- name: PosCashMovements
description: PosCashMovement management endpoints
- name: PosDiscounts
description: PosDiscount management endpoints
- name: PosManagerPins
description: PosManagerPin management endpoints
- name: PosFloorPlans
description: PosFloorPlan management endpoints
- name: PosTables
description: PosTable management endpoints
paths:
/api/v1/pos/pos_closing_entries:
get:
tags:
- PosClosingEntries
summary: List PosClosingEntries
description: Get a paginated list of PosClosingEntries with optional filtering and sorting
operationId: listPosClosingEntries
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/PosClosingEntryList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- PosClosingEntries
summary: Create PosClosingEntry
description: Create a new PosClosingEntry
operationId: createPosClosingEntry
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePosClosingEntryRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/PosClosingEntry'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/pos/pos_closing_entries/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- PosClosingEntries
summary: Get PosClosingEntry by ID
operationId: getPosClosingEntry
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosClosingEntry'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- PosClosingEntries
summary: Update PosClosingEntry (full)
operationId: updatePosClosingEntry
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePosClosingEntryRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosClosingEntry'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- PosClosingEntries
summary: Update PosClosingEntry (partial)
operationId: patchPosClosingEntry
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchPosClosingEntryRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosClosingEntry'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- PosClosingEntries
summary: Delete PosClosingEntry (soft)
operationId: deletePosClosingEntry
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_closing_entries/bulk:
post:
tags:
- PosClosingEntries
summary: Bulk create PosClosingEntries
operationId: bulkCreatePosClosingEntries
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreatePosClosingEntryRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosClosingEntry'
put:
tags:
- PosClosingEntries
summary: Bulk update PosClosingEntries (full, atomic)
operationId: bulkUpdatePosClosingEntries
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdatePosClosingEntryRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosClosingEntryBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- PosClosingEntries
summary: Bulk partial-update PosClosingEntries (atomic)
operationId: bulkPatchPosClosingEntries
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/PosClosingEntryBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_closing_entries/upsert:
post:
tags:
- PosClosingEntries
summary: Upsert PosClosingEntry
operationId: upsertPosClosingEntry
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/UpdatePosClosingEntryRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/PosClosingEntry'
/api/v1/pos/pos_closing_entries/trash:
get:
tags:
- PosClosingEntries
summary: List deleted PosClosingEntries
operationId: listDeletedPosClosingEntries
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosClosingEntryList'
/api/v1/pos/pos_closing_entries/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- PosClosingEntries
summary: Restore deleted PosClosingEntry
operationId: restorePosClosingEntry
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosClosingEntry'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_closing_entries/empty:
delete:
tags:
- PosClosingEntries
summary: Empty trash for PosClosingEntries
operationId: emptyTrashPosClosingEntries
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/pos/pos_closing_entries/delete/bulk:
post:
tags:
- PosClosingEntries
summary: Bulk soft-delete PosClosingEntries by ids (atomic)
operationId: bulkDeletePosClosingEntries
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/pos/pos_closing_entries/restore/bulk:
post:
tags:
- PosClosingEntries
summary: Bulk restore PosClosingEntries by ids (atomic)
operationId: bulkRestorePosClosingEntries
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosClosingEntryBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_closing_entries/restore/all:
post:
tags:
- PosClosingEntries
summary: Restore all soft-deleted PosClosingEntries
operationId: restoreAllPosClosingEntries
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/pos/pos_closing_entries/trash/bulk:
delete:
tags:
- PosClosingEntries
summary: Bulk permanently-delete PosClosingEntries from trash by ids (atomic)
operationId: bulkPermanentDeletePosClosingEntries
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/pos/pos_invoices:
get:
tags:
- PosInvoices
summary: List PosInvoices
description: Get a paginated list of PosInvoices with optional filtering and sorting
operationId: listPosInvoices
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/PosInvoiceList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- PosInvoices
summary: Create PosInvoice
description: Create a new PosInvoice
operationId: createPosInvoice
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePosInvoiceRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoice'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/pos/pos_invoices/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- PosInvoices
summary: Get PosInvoice by ID
operationId: getPosInvoice
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoice'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- PosInvoices
summary: Update PosInvoice (full)
operationId: updatePosInvoice
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePosInvoiceRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoice'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- PosInvoices
summary: Update PosInvoice (partial)
operationId: patchPosInvoice
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchPosInvoiceRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoice'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- PosInvoices
summary: Delete PosInvoice (soft)
operationId: deletePosInvoice
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_invoices/bulk:
post:
tags:
- PosInvoices
summary: Bulk create PosInvoices
operationId: bulkCreatePosInvoices
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreatePosInvoiceRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosInvoice'
put:
tags:
- PosInvoices
summary: Bulk update PosInvoices (full, atomic)
operationId: bulkUpdatePosInvoices
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdatePosInvoiceRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoiceBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- PosInvoices
summary: Bulk partial-update PosInvoices (atomic)
operationId: bulkPatchPosInvoices
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/PosInvoiceBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_invoices/upsert:
post:
tags:
- PosInvoices
summary: Upsert PosInvoice
operationId: upsertPosInvoice
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/UpdatePosInvoiceRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoice'
/api/v1/pos/pos_invoices/trash:
get:
tags:
- PosInvoices
summary: List deleted PosInvoices
operationId: listDeletedPosInvoices
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoiceList'
/api/v1/pos/pos_invoices/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- PosInvoices
summary: Restore deleted PosInvoice
operationId: restorePosInvoice
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoice'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_invoices/empty:
delete:
tags:
- PosInvoices
summary: Empty trash for PosInvoices
operationId: emptyTrashPosInvoices
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/pos/pos_invoices/delete/bulk:
post:
tags:
- PosInvoices
summary: Bulk soft-delete PosInvoices by ids (atomic)
operationId: bulkDeletePosInvoices
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/pos/pos_invoices/restore/bulk:
post:
tags:
- PosInvoices
summary: Bulk restore PosInvoices by ids (atomic)
operationId: bulkRestorePosInvoices
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoiceBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_invoices/restore/all:
post:
tags:
- PosInvoices
summary: Restore all soft-deleted PosInvoices
operationId: restoreAllPosInvoices
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/pos/pos_invoices/trash/bulk:
delete:
tags:
- PosInvoices
summary: Bulk permanently-delete PosInvoices from trash by ids (atomic)
operationId: bulkPermanentDeletePosInvoices
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/pos/pos_invoice_items:
get:
tags:
- PosInvoiceItems
summary: List PosInvoiceItems
description: Get a paginated list of PosInvoiceItems with optional filtering and sorting
operationId: listPosInvoiceItems
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/PosInvoiceItemList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- PosInvoiceItems
summary: Create PosInvoiceItem
description: Create a new PosInvoiceItem
operationId: createPosInvoiceItem
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePosInvoiceItemRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoiceItem'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/pos/pos_invoice_items/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- PosInvoiceItems
summary: Get PosInvoiceItem by ID
operationId: getPosInvoiceItem
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoiceItem'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- PosInvoiceItems
summary: Update PosInvoiceItem (full)
operationId: updatePosInvoiceItem
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePosInvoiceItemRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoiceItem'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- PosInvoiceItems
summary: Update PosInvoiceItem (partial)
operationId: patchPosInvoiceItem
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchPosInvoiceItemRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoiceItem'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- PosInvoiceItems
summary: Delete PosInvoiceItem (soft)
operationId: deletePosInvoiceItem
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_invoice_items/bulk:
post:
tags:
- PosInvoiceItems
summary: Bulk create PosInvoiceItems
operationId: bulkCreatePosInvoiceItems
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreatePosInvoiceItemRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosInvoiceItem'
put:
tags:
- PosInvoiceItems
summary: Bulk update PosInvoiceItems (full, atomic)
operationId: bulkUpdatePosInvoiceItems
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdatePosInvoiceItemRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoiceItemBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- PosInvoiceItems
summary: Bulk partial-update PosInvoiceItems (atomic)
operationId: bulkPatchPosInvoiceItems
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/PosInvoiceItemBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_invoice_items/upsert:
post:
tags:
- PosInvoiceItems
summary: Upsert PosInvoiceItem
operationId: upsertPosInvoiceItem
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/UpdatePosInvoiceItemRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoiceItem'
/api/v1/pos/pos_invoice_items/trash:
get:
tags:
- PosInvoiceItems
summary: List deleted PosInvoiceItems
operationId: listDeletedPosInvoiceItems
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoiceItemList'
/api/v1/pos/pos_invoice_items/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- PosInvoiceItems
summary: Restore deleted PosInvoiceItem
operationId: restorePosInvoiceItem
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoiceItem'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_invoice_items/empty:
delete:
tags:
- PosInvoiceItems
summary: Empty trash for PosInvoiceItems
operationId: emptyTrashPosInvoiceItems
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/pos/pos_invoice_items/delete/bulk:
post:
tags:
- PosInvoiceItems
summary: Bulk soft-delete PosInvoiceItems by ids (atomic)
operationId: bulkDeletePosInvoiceItems
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/pos/pos_invoice_items/restore/bulk:
post:
tags:
- PosInvoiceItems
summary: Bulk restore PosInvoiceItems by ids (atomic)
operationId: bulkRestorePosInvoiceItems
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosInvoiceItemBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_invoice_items/restore/all:
post:
tags:
- PosInvoiceItems
summary: Restore all soft-deleted PosInvoiceItems
operationId: restoreAllPosInvoiceItems
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/pos/pos_invoice_items/trash/bulk:
delete:
tags:
- PosInvoiceItems
summary: Bulk permanently-delete PosInvoiceItems from trash by ids (atomic)
operationId: bulkPermanentDeletePosInvoiceItems
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/pos/pos_payments:
get:
tags:
- PosPayments
summary: List PosPayments
description: Get a paginated list of PosPayments with optional filtering and sorting
operationId: listPosPayments
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/PosPaymentList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- PosPayments
summary: Create PosPayment
description: Create a new PosPayment
operationId: createPosPayment
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePosPaymentRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/PosPayment'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/pos/pos_payments/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- PosPayments
summary: Get PosPayment by ID
operationId: getPosPayment
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosPayment'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- PosPayments
summary: Update PosPayment (full)
operationId: updatePosPayment
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePosPaymentRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosPayment'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- PosPayments
summary: Update PosPayment (partial)
operationId: patchPosPayment
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchPosPaymentRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosPayment'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- PosPayments
summary: Delete PosPayment (soft)
operationId: deletePosPayment
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_payments/bulk:
post:
tags:
- PosPayments
summary: Bulk create PosPayments
operationId: bulkCreatePosPayments
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreatePosPaymentRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosPayment'
put:
tags:
- PosPayments
summary: Bulk update PosPayments (full, atomic)
operationId: bulkUpdatePosPayments
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdatePosPaymentRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosPaymentBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- PosPayments
summary: Bulk partial-update PosPayments (atomic)
operationId: bulkPatchPosPayments
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/PosPaymentBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_payments/upsert:
post:
tags:
- PosPayments
summary: Upsert PosPayment
operationId: upsertPosPayment
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/UpdatePosPaymentRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/PosPayment'
/api/v1/pos/pos_payments/trash:
get:
tags:
- PosPayments
summary: List deleted PosPayments
operationId: listDeletedPosPayments
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosPaymentList'
/api/v1/pos/pos_payments/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- PosPayments
summary: Restore deleted PosPayment
operationId: restorePosPayment
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosPayment'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_payments/empty:
delete:
tags:
- PosPayments
summary: Empty trash for PosPayments
operationId: emptyTrashPosPayments
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/pos/pos_payments/delete/bulk:
post:
tags:
- PosPayments
summary: Bulk soft-delete PosPayments by ids (atomic)
operationId: bulkDeletePosPayments
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/pos/pos_payments/restore/bulk:
post:
tags:
- PosPayments
summary: Bulk restore PosPayments by ids (atomic)
operationId: bulkRestorePosPayments
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosPaymentBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_payments/restore/all:
post:
tags:
- PosPayments
summary: Restore all soft-deleted PosPayments
operationId: restoreAllPosPayments
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/pos/pos_payments/trash/bulk:
delete:
tags:
- PosPayments
summary: Bulk permanently-delete PosPayments from trash by ids (atomic)
operationId: bulkPermanentDeletePosPayments
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/pos/pos_profiles:
get:
tags:
- PosProfiles
summary: List PosProfiles
description: Get a paginated list of PosProfiles with optional filtering and sorting
operationId: listPosProfiles
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/PosProfileList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- PosProfiles
summary: Create PosProfile
description: Create a new PosProfile
operationId: createPosProfile
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePosProfileRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/PosProfile'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/pos/pos_profiles/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- PosProfiles
summary: Get PosProfile by ID
operationId: getPosProfile
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosProfile'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- PosProfiles
summary: Update PosProfile (full)
operationId: updatePosProfile
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePosProfileRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosProfile'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- PosProfiles
summary: Update PosProfile (partial)
operationId: patchPosProfile
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchPosProfileRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosProfile'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- PosProfiles
summary: Delete PosProfile (soft)
operationId: deletePosProfile
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_profiles/bulk:
post:
tags:
- PosProfiles
summary: Bulk create PosProfiles
operationId: bulkCreatePosProfiles
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreatePosProfileRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosProfile'
put:
tags:
- PosProfiles
summary: Bulk update PosProfiles (full, atomic)
operationId: bulkUpdatePosProfiles
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdatePosProfileRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosProfileBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- PosProfiles
summary: Bulk partial-update PosProfiles (atomic)
operationId: bulkPatchPosProfiles
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/PosProfileBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_profiles/upsert:
post:
tags:
- PosProfiles
summary: Upsert PosProfile
operationId: upsertPosProfile
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/UpdatePosProfileRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/PosProfile'
/api/v1/pos/pos_profiles/trash:
get:
tags:
- PosProfiles
summary: List deleted PosProfiles
operationId: listDeletedPosProfiles
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosProfileList'
/api/v1/pos/pos_profiles/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- PosProfiles
summary: Restore deleted PosProfile
operationId: restorePosProfile
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosProfile'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_profiles/empty:
delete:
tags:
- PosProfiles
summary: Empty trash for PosProfiles
operationId: emptyTrashPosProfiles
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/pos/pos_profiles/delete/bulk:
post:
tags:
- PosProfiles
summary: Bulk soft-delete PosProfiles by ids (atomic)
operationId: bulkDeletePosProfiles
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/pos/pos_profiles/restore/bulk:
post:
tags:
- PosProfiles
summary: Bulk restore PosProfiles by ids (atomic)
operationId: bulkRestorePosProfiles
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosProfileBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_profiles/restore/all:
post:
tags:
- PosProfiles
summary: Restore all soft-deleted PosProfiles
operationId: restoreAllPosProfiles
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/pos/pos_profiles/trash/bulk:
delete:
tags:
- PosProfiles
summary: Bulk permanently-delete PosProfiles from trash by ids (atomic)
operationId: bulkPermanentDeletePosProfiles
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/pos/pos_opening_entries:
get:
tags:
- PosOpeningEntries
summary: List PosOpeningEntries
description: Get a paginated list of PosOpeningEntries with optional filtering and sorting
operationId: listPosOpeningEntries
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/PosOpeningEntryList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- PosOpeningEntries
summary: Create PosOpeningEntry
description: Create a new PosOpeningEntry
operationId: createPosOpeningEntry
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePosOpeningEntryRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/PosOpeningEntry'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/pos/pos_opening_entries/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- PosOpeningEntries
summary: Get PosOpeningEntry by ID
operationId: getPosOpeningEntry
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosOpeningEntry'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- PosOpeningEntries
summary: Update PosOpeningEntry (full)
operationId: updatePosOpeningEntry
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePosOpeningEntryRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosOpeningEntry'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- PosOpeningEntries
summary: Update PosOpeningEntry (partial)
operationId: patchPosOpeningEntry
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchPosOpeningEntryRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosOpeningEntry'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- PosOpeningEntries
summary: Delete PosOpeningEntry (soft)
operationId: deletePosOpeningEntry
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_opening_entries/bulk:
post:
tags:
- PosOpeningEntries
summary: Bulk create PosOpeningEntries
operationId: bulkCreatePosOpeningEntries
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreatePosOpeningEntryRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosOpeningEntry'
put:
tags:
- PosOpeningEntries
summary: Bulk update PosOpeningEntries (full, atomic)
operationId: bulkUpdatePosOpeningEntries
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdatePosOpeningEntryRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosOpeningEntryBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- PosOpeningEntries
summary: Bulk partial-update PosOpeningEntries (atomic)
operationId: bulkPatchPosOpeningEntries
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/PosOpeningEntryBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_opening_entries/upsert:
post:
tags:
- PosOpeningEntries
summary: Upsert PosOpeningEntry
operationId: upsertPosOpeningEntry
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/UpdatePosOpeningEntryRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/PosOpeningEntry'
/api/v1/pos/pos_opening_entries/trash:
get:
tags:
- PosOpeningEntries
summary: List deleted PosOpeningEntries
operationId: listDeletedPosOpeningEntries
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosOpeningEntryList'
/api/v1/pos/pos_opening_entries/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- PosOpeningEntries
summary: Restore deleted PosOpeningEntry
operationId: restorePosOpeningEntry
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosOpeningEntry'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_opening_entries/empty:
delete:
tags:
- PosOpeningEntries
summary: Empty trash for PosOpeningEntries
operationId: emptyTrashPosOpeningEntries
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/pos/pos_opening_entries/delete/bulk:
post:
tags:
- PosOpeningEntries
summary: Bulk soft-delete PosOpeningEntries by ids (atomic)
operationId: bulkDeletePosOpeningEntries
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/pos/pos_opening_entries/restore/bulk:
post:
tags:
- PosOpeningEntries
summary: Bulk restore PosOpeningEntries by ids (atomic)
operationId: bulkRestorePosOpeningEntries
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosOpeningEntryBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_opening_entries/restore/all:
post:
tags:
- PosOpeningEntries
summary: Restore all soft-deleted PosOpeningEntries
operationId: restoreAllPosOpeningEntries
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/pos/pos_opening_entries/trash/bulk:
delete:
tags:
- PosOpeningEntries
summary: Bulk permanently-delete PosOpeningEntries from trash by ids (atomic)
operationId: bulkPermanentDeletePosOpeningEntries
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/pos/pos_cash_movements:
get:
tags:
- PosCashMovements
summary: List PosCashMovements
description: Get a paginated list of PosCashMovements with optional filtering and sorting
operationId: listPosCashMovements
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/PosCashMovementList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- PosCashMovements
summary: Create PosCashMovement
description: Create a new PosCashMovement
operationId: createPosCashMovement
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePosCashMovementRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/PosCashMovement'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/pos/pos_cash_movements/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- PosCashMovements
summary: Get PosCashMovement by ID
operationId: getPosCashMovement
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosCashMovement'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- PosCashMovements
summary: Update PosCashMovement (full)
operationId: updatePosCashMovement
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePosCashMovementRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosCashMovement'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- PosCashMovements
summary: Update PosCashMovement (partial)
operationId: patchPosCashMovement
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchPosCashMovementRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosCashMovement'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- PosCashMovements
summary: Delete PosCashMovement (soft)
operationId: deletePosCashMovement
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_cash_movements/bulk:
post:
tags:
- PosCashMovements
summary: Bulk create PosCashMovements
operationId: bulkCreatePosCashMovements
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreatePosCashMovementRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosCashMovement'
put:
tags:
- PosCashMovements
summary: Bulk update PosCashMovements (full, atomic)
operationId: bulkUpdatePosCashMovements
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdatePosCashMovementRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosCashMovementBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- PosCashMovements
summary: Bulk partial-update PosCashMovements (atomic)
operationId: bulkPatchPosCashMovements
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/PosCashMovementBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_cash_movements/upsert:
post:
tags:
- PosCashMovements
summary: Upsert PosCashMovement
operationId: upsertPosCashMovement
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/UpdatePosCashMovementRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/PosCashMovement'
/api/v1/pos/pos_cash_movements/trash:
get:
tags:
- PosCashMovements
summary: List deleted PosCashMovements
operationId: listDeletedPosCashMovements
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosCashMovementList'
/api/v1/pos/pos_cash_movements/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- PosCashMovements
summary: Restore deleted PosCashMovement
operationId: restorePosCashMovement
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosCashMovement'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_cash_movements/empty:
delete:
tags:
- PosCashMovements
summary: Empty trash for PosCashMovements
operationId: emptyTrashPosCashMovements
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/pos/pos_cash_movements/delete/bulk:
post:
tags:
- PosCashMovements
summary: Bulk soft-delete PosCashMovements by ids (atomic)
operationId: bulkDeletePosCashMovements
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/pos/pos_cash_movements/restore/bulk:
post:
tags:
- PosCashMovements
summary: Bulk restore PosCashMovements by ids (atomic)
operationId: bulkRestorePosCashMovements
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosCashMovementBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_cash_movements/restore/all:
post:
tags:
- PosCashMovements
summary: Restore all soft-deleted PosCashMovements
operationId: restoreAllPosCashMovements
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/pos/pos_cash_movements/trash/bulk:
delete:
tags:
- PosCashMovements
summary: Bulk permanently-delete PosCashMovements from trash by ids (atomic)
operationId: bulkPermanentDeletePosCashMovements
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/pos/pos_discounts:
get:
tags:
- PosDiscounts
summary: List PosDiscounts
description: Get a paginated list of PosDiscounts with optional filtering and sorting
operationId: listPosDiscounts
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/PosDiscountList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- PosDiscounts
summary: Create PosDiscount
description: Create a new PosDiscount
operationId: createPosDiscount
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePosDiscountRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/PosDiscount'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/pos/pos_discounts/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- PosDiscounts
summary: Get PosDiscount by ID
operationId: getPosDiscount
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosDiscount'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- PosDiscounts
summary: Update PosDiscount (full)
operationId: updatePosDiscount
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePosDiscountRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosDiscount'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- PosDiscounts
summary: Update PosDiscount (partial)
operationId: patchPosDiscount
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchPosDiscountRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosDiscount'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- PosDiscounts
summary: Delete PosDiscount (soft)
operationId: deletePosDiscount
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_discounts/bulk:
post:
tags:
- PosDiscounts
summary: Bulk create PosDiscounts
operationId: bulkCreatePosDiscounts
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreatePosDiscountRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosDiscount'
put:
tags:
- PosDiscounts
summary: Bulk update PosDiscounts (full, atomic)
operationId: bulkUpdatePosDiscounts
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdatePosDiscountRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosDiscountBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- PosDiscounts
summary: Bulk partial-update PosDiscounts (atomic)
operationId: bulkPatchPosDiscounts
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/PosDiscountBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_discounts/upsert:
post:
tags:
- PosDiscounts
summary: Upsert PosDiscount
operationId: upsertPosDiscount
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/UpdatePosDiscountRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/PosDiscount'
/api/v1/pos/pos_discounts/trash:
get:
tags:
- PosDiscounts
summary: List deleted PosDiscounts
operationId: listDeletedPosDiscounts
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosDiscountList'
/api/v1/pos/pos_discounts/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- PosDiscounts
summary: Restore deleted PosDiscount
operationId: restorePosDiscount
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosDiscount'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_discounts/empty:
delete:
tags:
- PosDiscounts
summary: Empty trash for PosDiscounts
operationId: emptyTrashPosDiscounts
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/pos/pos_discounts/delete/bulk:
post:
tags:
- PosDiscounts
summary: Bulk soft-delete PosDiscounts by ids (atomic)
operationId: bulkDeletePosDiscounts
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/pos/pos_discounts/restore/bulk:
post:
tags:
- PosDiscounts
summary: Bulk restore PosDiscounts by ids (atomic)
operationId: bulkRestorePosDiscounts
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosDiscountBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_discounts/restore/all:
post:
tags:
- PosDiscounts
summary: Restore all soft-deleted PosDiscounts
operationId: restoreAllPosDiscounts
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/pos/pos_discounts/trash/bulk:
delete:
tags:
- PosDiscounts
summary: Bulk permanently-delete PosDiscounts from trash by ids (atomic)
operationId: bulkPermanentDeletePosDiscounts
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/pos/pos_manager_pins:
get:
tags:
- PosManagerPins
summary: List PosManagerPins
description: Get a paginated list of PosManagerPins with optional filtering and sorting
operationId: listPosManagerPins
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/PosManagerPinList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- PosManagerPins
summary: Create PosManagerPin
description: Create a new PosManagerPin
operationId: createPosManagerPin
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePosManagerPinRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/PosManagerPin'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/pos/pos_manager_pins/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- PosManagerPins
summary: Get PosManagerPin by ID
operationId: getPosManagerPin
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosManagerPin'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- PosManagerPins
summary: Update PosManagerPin (full)
operationId: updatePosManagerPin
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePosManagerPinRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosManagerPin'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- PosManagerPins
summary: Update PosManagerPin (partial)
operationId: patchPosManagerPin
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchPosManagerPinRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosManagerPin'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- PosManagerPins
summary: Delete PosManagerPin (soft)
operationId: deletePosManagerPin
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_manager_pins/bulk:
post:
tags:
- PosManagerPins
summary: Bulk create PosManagerPins
operationId: bulkCreatePosManagerPins
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreatePosManagerPinRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosManagerPin'
put:
tags:
- PosManagerPins
summary: Bulk update PosManagerPins (full, atomic)
operationId: bulkUpdatePosManagerPins
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdatePosManagerPinRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosManagerPinBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- PosManagerPins
summary: Bulk partial-update PosManagerPins (atomic)
operationId: bulkPatchPosManagerPins
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/PosManagerPinBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_manager_pins/upsert:
post:
tags:
- PosManagerPins
summary: Upsert PosManagerPin
operationId: upsertPosManagerPin
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/UpdatePosManagerPinRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/PosManagerPin'
/api/v1/pos/pos_manager_pins/trash:
get:
tags:
- PosManagerPins
summary: List deleted PosManagerPins
operationId: listDeletedPosManagerPins
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosManagerPinList'
/api/v1/pos/pos_manager_pins/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- PosManagerPins
summary: Restore deleted PosManagerPin
operationId: restorePosManagerPin
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosManagerPin'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_manager_pins/empty:
delete:
tags:
- PosManagerPins
summary: Empty trash for PosManagerPins
operationId: emptyTrashPosManagerPins
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/pos/pos_manager_pins/delete/bulk:
post:
tags:
- PosManagerPins
summary: Bulk soft-delete PosManagerPins by ids (atomic)
operationId: bulkDeletePosManagerPins
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/pos/pos_manager_pins/restore/bulk:
post:
tags:
- PosManagerPins
summary: Bulk restore PosManagerPins by ids (atomic)
operationId: bulkRestorePosManagerPins
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosManagerPinBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_manager_pins/restore/all:
post:
tags:
- PosManagerPins
summary: Restore all soft-deleted PosManagerPins
operationId: restoreAllPosManagerPins
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/pos/pos_manager_pins/trash/bulk:
delete:
tags:
- PosManagerPins
summary: Bulk permanently-delete PosManagerPins from trash by ids (atomic)
operationId: bulkPermanentDeletePosManagerPins
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/pos/pos_floor_plans:
get:
tags:
- PosFloorPlans
summary: List PosFloorPlans
description: Get a paginated list of PosFloorPlans with optional filtering and sorting
operationId: listPosFloorPlans
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/PosFloorPlanList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- PosFloorPlans
summary: Create PosFloorPlan
description: Create a new PosFloorPlan
operationId: createPosFloorPlan
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePosFloorPlanRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/PosFloorPlan'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/pos/pos_floor_plans/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- PosFloorPlans
summary: Get PosFloorPlan by ID
operationId: getPosFloorPlan
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosFloorPlan'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- PosFloorPlans
summary: Update PosFloorPlan (full)
operationId: updatePosFloorPlan
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePosFloorPlanRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosFloorPlan'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- PosFloorPlans
summary: Update PosFloorPlan (partial)
operationId: patchPosFloorPlan
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchPosFloorPlanRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosFloorPlan'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- PosFloorPlans
summary: Delete PosFloorPlan (soft)
operationId: deletePosFloorPlan
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_floor_plans/bulk:
post:
tags:
- PosFloorPlans
summary: Bulk create PosFloorPlans
operationId: bulkCreatePosFloorPlans
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreatePosFloorPlanRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosFloorPlan'
put:
tags:
- PosFloorPlans
summary: Bulk update PosFloorPlans (full, atomic)
operationId: bulkUpdatePosFloorPlans
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdatePosFloorPlanRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosFloorPlanBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- PosFloorPlans
summary: Bulk partial-update PosFloorPlans (atomic)
operationId: bulkPatchPosFloorPlans
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/PosFloorPlanBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_floor_plans/upsert:
post:
tags:
- PosFloorPlans
summary: Upsert PosFloorPlan
operationId: upsertPosFloorPlan
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/UpdatePosFloorPlanRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/PosFloorPlan'
/api/v1/pos/pos_floor_plans/trash:
get:
tags:
- PosFloorPlans
summary: List deleted PosFloorPlans
operationId: listDeletedPosFloorPlans
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosFloorPlanList'
/api/v1/pos/pos_floor_plans/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- PosFloorPlans
summary: Restore deleted PosFloorPlan
operationId: restorePosFloorPlan
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosFloorPlan'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_floor_plans/empty:
delete:
tags:
- PosFloorPlans
summary: Empty trash for PosFloorPlans
operationId: emptyTrashPosFloorPlans
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/pos/pos_floor_plans/delete/bulk:
post:
tags:
- PosFloorPlans
summary: Bulk soft-delete PosFloorPlans by ids (atomic)
operationId: bulkDeletePosFloorPlans
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/pos/pos_floor_plans/restore/bulk:
post:
tags:
- PosFloorPlans
summary: Bulk restore PosFloorPlans by ids (atomic)
operationId: bulkRestorePosFloorPlans
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosFloorPlanBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_floor_plans/restore/all:
post:
tags:
- PosFloorPlans
summary: Restore all soft-deleted PosFloorPlans
operationId: restoreAllPosFloorPlans
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/pos/pos_floor_plans/trash/bulk:
delete:
tags:
- PosFloorPlans
summary: Bulk permanently-delete PosFloorPlans from trash by ids (atomic)
operationId: bulkPermanentDeletePosFloorPlans
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/pos/pos_tables:
get:
tags:
- PosTables
summary: List PosTables
description: Get a paginated list of PosTables with optional filtering and sorting
operationId: listPosTables
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/PosTableList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- PosTables
summary: Create PosTable
description: Create a new PosTable
operationId: createPosTable
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePosTableRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/PosTable'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/pos/pos_tables/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- PosTables
summary: Get PosTable by ID
operationId: getPosTable
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosTable'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- PosTables
summary: Update PosTable (full)
operationId: updatePosTable
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePosTableRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosTable'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- PosTables
summary: Update PosTable (partial)
operationId: patchPosTable
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchPosTableRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosTable'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- PosTables
summary: Delete PosTable (soft)
operationId: deletePosTable
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_tables/bulk:
post:
tags:
- PosTables
summary: Bulk create PosTables
operationId: bulkCreatePosTables
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreatePosTableRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosTable'
put:
tags:
- PosTables
summary: Bulk update PosTables (full, atomic)
operationId: bulkUpdatePosTables
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdatePosTableRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/PosTableBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- PosTables
summary: Bulk partial-update PosTables (atomic)
operationId: bulkPatchPosTables
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/PosTableBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_tables/upsert:
post:
tags:
- PosTables
summary: Upsert PosTable
operationId: upsertPosTable
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/UpdatePosTableRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/PosTable'
/api/v1/pos/pos_tables/trash:
get:
tags:
- PosTables
summary: List deleted PosTables
operationId: listDeletedPosTables
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PosTableList'
/api/v1/pos/pos_tables/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- PosTables
summary: Restore deleted PosTable
operationId: restorePosTable
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosTable'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/pos/pos_tables/empty:
delete:
tags:
- PosTables
summary: Empty trash for PosTables
operationId: emptyTrashPosTables
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/pos/pos_tables/delete/bulk:
post:
tags:
- PosTables
summary: Bulk soft-delete PosTables by ids (atomic)
operationId: bulkDeletePosTables
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/pos/pos_tables/restore/bulk:
post:
tags:
- PosTables
summary: Bulk restore PosTables by ids (atomic)
operationId: bulkRestorePosTables
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/PosTableBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/pos/pos_tables/restore/all:
post:
tags:
- PosTables
summary: Restore all soft-deleted PosTables
operationId: restoreAllPosTables
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/pos/pos_tables/trash/bulk:
delete:
tags:
- PosTables
summary: Bulk permanently-delete PosTables from trash by ids (atomic)
operationId: bulkPermanentDeletePosTables
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:
PosClosingEntry:
type: object
required:
- id
- pos_profile_id
- opening_entry_id
- closed_at
- cashier_party_id
- grand_total
- invoice_count
- difference_total
- status
- metadata
properties:
id:
type: string
format: uuid
pos_profile_id:
type: string
format: uuid
opening_entry_id:
type: string
format: uuid
closed_at:
type: string
format: date-time
cashier_party_id:
type: string
format: uuid
totals_by_method:
nullable: true
type: object
grand_total:
type: string
invoice_count:
type: integer
format: int32
difference_total:
type: string
status:
type: string
metadata:
type: object
PosClosingEntryBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosClosingEntry'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreatePosClosingEntryRequest:
type: object
required:
- pos_profile_id
- opening_entry_id
- closed_at
- cashier_party_id
- grand_total
- invoice_count
- difference_total
- status
- metadata
properties:
pos_profile_id:
type: string
format: uuid
opening_entry_id:
type: string
format: uuid
closed_at:
type: string
format: date-time
cashier_party_id:
type: string
format: uuid
totals_by_method:
nullable: true
type: object
grand_total:
type: string
invoice_count:
type: integer
format: int32
difference_total:
type: string
status:
type: string
metadata:
type: object
UpdatePosClosingEntryRequest:
type: object
required:
- pos_profile_id
- opening_entry_id
- closed_at
- cashier_party_id
- grand_total
- invoice_count
- difference_total
- status
- metadata
properties:
pos_profile_id:
type: string
format: uuid
opening_entry_id:
type: string
format: uuid
closed_at:
type: string
format: date-time
cashier_party_id:
type: string
format: uuid
totals_by_method:
nullable: true
type: object
grand_total:
type: string
invoice_count:
type: integer
format: int32
difference_total:
type: string
status:
type: string
metadata:
type: object
PatchPosClosingEntryRequest:
type: object
properties:
pos_profile_id:
type: string
format: uuid
opening_entry_id:
type: string
format: uuid
closed_at:
type: string
format: date-time
cashier_party_id:
type: string
format: uuid
totals_by_method:
nullable: true
type: object
grand_total:
type: string
invoice_count:
type: integer
format: int32
difference_total:
type: string
status:
type: string
metadata:
type: object
PosClosingEntryList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosClosingEntry'
meta:
$ref: '#/components/schemas/PaginationMeta'
PosInvoice:
type: object
required:
- id
- pos_profile_id
- opening_entry_id
- receipt_number
- posting_at
- net_total
- tax_total
- grand_total
- rounding_adjustment
- rounded_total
- paid_total
- change_due
- is_return
- status
- metadata
properties:
id:
type: string
format: uuid
pos_profile_id:
type: string
format: uuid
opening_entry_id:
type: string
format: uuid
branch_id:
nullable: true
type: string
format: uuid
customer_id:
nullable: true
type: string
format: uuid
pos_table_id:
nullable: true
type: string
format: uuid
receipt_number:
type: string
maxLength: 40
client_uuid:
nullable: true
type: string
format: uuid
posting_at:
type: string
format: date-time
net_total:
type: string
tax_total:
type: string
grand_total:
type: string
rounding_adjustment:
type: string
rounded_total:
type: string
paid_total:
type: string
change_due:
type: string
billing_invoice_id:
nullable: true
type: string
format: uuid
payment_entry_id:
nullable: true
type: string
format: uuid
is_return:
type: boolean
return_against:
nullable: true
type: string
format: uuid
status:
type: string
metadata:
type: object
PosInvoiceBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosInvoice'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreatePosInvoiceRequest:
type: object
required:
- pos_profile_id
- opening_entry_id
- receipt_number
- posting_at
- net_total
- tax_total
- grand_total
- rounding_adjustment
- rounded_total
- paid_total
- change_due
- is_return
- status
- metadata
properties:
pos_profile_id:
type: string
format: uuid
opening_entry_id:
type: string
format: uuid
branch_id:
nullable: true
type: string
format: uuid
customer_id:
nullable: true
type: string
format: uuid
pos_table_id:
nullable: true
type: string
format: uuid
receipt_number:
type: string
maxLength: 40
client_uuid:
nullable: true
type: string
format: uuid
posting_at:
type: string
format: date-time
net_total:
type: string
tax_total:
type: string
grand_total:
type: string
rounding_adjustment:
type: string
rounded_total:
type: string
paid_total:
type: string
change_due:
type: string
billing_invoice_id:
nullable: true
type: string
format: uuid
payment_entry_id:
nullable: true
type: string
format: uuid
is_return:
type: boolean
return_against:
nullable: true
type: string
format: uuid
status:
type: string
metadata:
type: object
UpdatePosInvoiceRequest:
type: object
required:
- pos_profile_id
- opening_entry_id
- receipt_number
- posting_at
- net_total
- tax_total
- grand_total
- rounding_adjustment
- rounded_total
- paid_total
- change_due
- is_return
- status
- metadata
properties:
pos_profile_id:
type: string
format: uuid
opening_entry_id:
type: string
format: uuid
branch_id:
nullable: true
type: string
format: uuid
customer_id:
nullable: true
type: string
format: uuid
pos_table_id:
nullable: true
type: string
format: uuid
receipt_number:
type: string
maxLength: 40
client_uuid:
nullable: true
type: string
format: uuid
posting_at:
type: string
format: date-time
net_total:
type: string
tax_total:
type: string
grand_total:
type: string
rounding_adjustment:
type: string
rounded_total:
type: string
paid_total:
type: string
change_due:
type: string
billing_invoice_id:
nullable: true
type: string
format: uuid
payment_entry_id:
nullable: true
type: string
format: uuid
is_return:
type: boolean
return_against:
nullable: true
type: string
format: uuid
status:
type: string
metadata:
type: object
PatchPosInvoiceRequest:
type: object
properties:
pos_profile_id:
type: string
format: uuid
opening_entry_id:
type: string
format: uuid
branch_id:
nullable: true
type: string
format: uuid
customer_id:
nullable: true
type: string
format: uuid
pos_table_id:
nullable: true
type: string
format: uuid
receipt_number:
type: string
maxLength: 40
client_uuid:
nullable: true
type: string
format: uuid
posting_at:
type: string
format: date-time
net_total:
type: string
tax_total:
type: string
grand_total:
type: string
rounding_adjustment:
type: string
rounded_total:
type: string
paid_total:
type: string
change_due:
type: string
billing_invoice_id:
nullable: true
type: string
format: uuid
payment_entry_id:
nullable: true
type: string
format: uuid
is_return:
type: boolean
return_against:
nullable: true
type: string
format: uuid
status:
type: string
metadata:
type: object
PosInvoiceList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosInvoice'
meta:
$ref: '#/components/schemas/PaginationMeta'
PosInvoiceItem:
type: object
required:
- id
- pos_invoice_id
- item_id
- quantity
- unit_price
- discount_amount
- net_amount
- metadata
properties:
id:
type: string
format: uuid
pos_invoice_id:
type: string
format: uuid
item_id:
type: string
format: uuid
description:
nullable: true
type: string
maxLength: 300
client_uuid:
nullable: true
type: string
format: uuid
course:
nullable: true
type: integer
format: int32
quantity:
type: string
unit_price:
type: string
discount_amount:
type: string
net_amount:
type: string
revenue_account_id:
nullable: true
type: string
format: uuid
metadata:
type: object
PosInvoiceItemBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosInvoiceItem'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreatePosInvoiceItemRequest:
type: object
required:
- pos_invoice_id
- item_id
- quantity
- unit_price
- discount_amount
- net_amount
- metadata
properties:
pos_invoice_id:
type: string
format: uuid
item_id:
type: string
format: uuid
description:
nullable: true
type: string
maxLength: 300
client_uuid:
nullable: true
type: string
format: uuid
course:
nullable: true
type: integer
format: int32
quantity:
type: string
unit_price:
type: string
discount_amount:
type: string
net_amount:
type: string
revenue_account_id:
nullable: true
type: string
format: uuid
metadata:
type: object
UpdatePosInvoiceItemRequest:
type: object
required:
- pos_invoice_id
- item_id
- quantity
- unit_price
- discount_amount
- net_amount
- metadata
properties:
pos_invoice_id:
type: string
format: uuid
item_id:
type: string
format: uuid
description:
nullable: true
type: string
maxLength: 300
client_uuid:
nullable: true
type: string
format: uuid
course:
nullable: true
type: integer
format: int32
quantity:
type: string
unit_price:
type: string
discount_amount:
type: string
net_amount:
type: string
revenue_account_id:
nullable: true
type: string
format: uuid
metadata:
type: object
PatchPosInvoiceItemRequest:
type: object
properties:
pos_invoice_id:
type: string
format: uuid
item_id:
type: string
format: uuid
description:
nullable: true
type: string
maxLength: 300
client_uuid:
nullable: true
type: string
format: uuid
course:
nullable: true
type: integer
format: int32
quantity:
type: string
unit_price:
type: string
discount_amount:
type: string
net_amount:
type: string
revenue_account_id:
nullable: true
type: string
format: uuid
metadata:
type: object
PosInvoiceItemList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosInvoiceItem'
meta:
$ref: '#/components/schemas/PaginationMeta'
PosPayment:
type: object
required:
- id
- pos_invoice_id
- payment_method
- amount
- metadata
properties:
id:
type: string
format: uuid
pos_invoice_id:
type: string
format: uuid
payment_method:
type: string
amount:
type: string
reference_no:
nullable: true
type: string
maxLength: 140
client_uuid:
nullable: true
type: string
format: uuid
payment_entry_id:
nullable: true
type: string
format: uuid
metadata:
type: object
PosPaymentBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosPayment'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreatePosPaymentRequest:
type: object
required:
- pos_invoice_id
- payment_method
- amount
- metadata
properties:
pos_invoice_id:
type: string
format: uuid
payment_method:
type: string
amount:
type: string
reference_no:
nullable: true
type: string
maxLength: 140
client_uuid:
nullable: true
type: string
format: uuid
payment_entry_id:
nullable: true
type: string
format: uuid
metadata:
type: object
UpdatePosPaymentRequest:
type: object
required:
- pos_invoice_id
- payment_method
- amount
- metadata
properties:
pos_invoice_id:
type: string
format: uuid
payment_method:
type: string
amount:
type: string
reference_no:
nullable: true
type: string
maxLength: 140
client_uuid:
nullable: true
type: string
format: uuid
payment_entry_id:
nullable: true
type: string
format: uuid
metadata:
type: object
PatchPosPaymentRequest:
type: object
properties:
pos_invoice_id:
type: string
format: uuid
payment_method:
type: string
amount:
type: string
reference_no:
nullable: true
type: string
maxLength: 140
client_uuid:
nullable: true
type: string
format: uuid
payment_entry_id:
nullable: true
type: string
format: uuid
metadata:
type: object
PosPaymentList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosPayment'
meta:
$ref: '#/components/schemas/PaginationMeta'
PosProfile:
type: object
required:
- id
- name
- currency
- tax_rate
- allow_discount
- cash_rounding_strategy
- cash_rounding_unit
- status
- metadata
properties:
id:
type: string
format: uuid
branch_id:
nullable: true
type: string
format: uuid
name:
type: string
maxLength: 140
default_customer_id:
nullable: true
type: string
format: uuid
currency:
type: string
maxLength: 3
income_account_id:
nullable: true
type: string
format: uuid
receivable_account_id:
nullable: true
type: string
format: uuid
cash_account_id:
nullable: true
type: string
format: uuid
write_off_account_id:
nullable: true
type: string
format: uuid
tax_account_id:
nullable: true
type: string
format: uuid
tax_rate:
type: string
tax_template_ids:
nullable: true
type: object
warehouse_id:
nullable: true
type: string
format: uuid
cogs_account_id:
nullable: true
type: string
format: uuid
inventory_account_id:
nullable: true
type: string
format: uuid
allow_discount:
type: boolean
cash_rounding_strategy:
type: string
cash_rounding_unit:
type: string
status:
type: string
metadata:
type: object
PosProfileBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosProfile'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreatePosProfileRequest:
type: object
required:
- name
- currency
- tax_rate
- allow_discount
- cash_rounding_strategy
- cash_rounding_unit
- status
- metadata
properties:
branch_id:
nullable: true
type: string
format: uuid
name:
type: string
maxLength: 140
default_customer_id:
nullable: true
type: string
format: uuid
currency:
type: string
maxLength: 3
income_account_id:
nullable: true
type: string
format: uuid
receivable_account_id:
nullable: true
type: string
format: uuid
cash_account_id:
nullable: true
type: string
format: uuid
write_off_account_id:
nullable: true
type: string
format: uuid
tax_account_id:
nullable: true
type: string
format: uuid
tax_rate:
type: string
tax_template_ids:
nullable: true
type: object
warehouse_id:
nullable: true
type: string
format: uuid
cogs_account_id:
nullable: true
type: string
format: uuid
inventory_account_id:
nullable: true
type: string
format: uuid
allow_discount:
type: boolean
cash_rounding_strategy:
type: string
cash_rounding_unit:
type: string
status:
type: string
metadata:
type: object
UpdatePosProfileRequest:
type: object
required:
- name
- currency
- tax_rate
- allow_discount
- cash_rounding_strategy
- cash_rounding_unit
- status
- metadata
properties:
branch_id:
nullable: true
type: string
format: uuid
name:
type: string
maxLength: 140
default_customer_id:
nullable: true
type: string
format: uuid
currency:
type: string
maxLength: 3
income_account_id:
nullable: true
type: string
format: uuid
receivable_account_id:
nullable: true
type: string
format: uuid
cash_account_id:
nullable: true
type: string
format: uuid
write_off_account_id:
nullable: true
type: string
format: uuid
tax_account_id:
nullable: true
type: string
format: uuid
tax_rate:
type: string
tax_template_ids:
nullable: true
type: object
warehouse_id:
nullable: true
type: string
format: uuid
cogs_account_id:
nullable: true
type: string
format: uuid
inventory_account_id:
nullable: true
type: string
format: uuid
allow_discount:
type: boolean
cash_rounding_strategy:
type: string
cash_rounding_unit:
type: string
status:
type: string
metadata:
type: object
PatchPosProfileRequest:
type: object
properties:
branch_id:
nullable: true
type: string
format: uuid
name:
type: string
maxLength: 140
default_customer_id:
nullable: true
type: string
format: uuid
currency:
type: string
maxLength: 3
income_account_id:
nullable: true
type: string
format: uuid
receivable_account_id:
nullable: true
type: string
format: uuid
cash_account_id:
nullable: true
type: string
format: uuid
write_off_account_id:
nullable: true
type: string
format: uuid
tax_account_id:
nullable: true
type: string
format: uuid
tax_rate:
type: string
tax_template_ids:
nullable: true
type: object
warehouse_id:
nullable: true
type: string
format: uuid
cogs_account_id:
nullable: true
type: string
format: uuid
inventory_account_id:
nullable: true
type: string
format: uuid
allow_discount:
type: boolean
cash_rounding_strategy:
type: string
cash_rounding_unit:
type: string
status:
type: string
metadata:
type: object
PosProfileList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosProfile'
meta:
$ref: '#/components/schemas/PaginationMeta'
PosOpeningEntry:
type: object
required:
- id
- pos_profile_id
- cashier_party_id
- opened_at
- status
- metadata
properties:
id:
type: string
format: uuid
pos_profile_id:
type: string
format: uuid
branch_id:
nullable: true
type: string
format: uuid
cashier_party_id:
type: string
format: uuid
opened_at:
type: string
format: date-time
opening_balances:
nullable: true
type: object
status:
type: string
metadata:
type: object
PosOpeningEntryBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosOpeningEntry'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreatePosOpeningEntryRequest:
type: object
required:
- pos_profile_id
- cashier_party_id
- opened_at
- status
- metadata
properties:
pos_profile_id:
type: string
format: uuid
branch_id:
nullable: true
type: string
format: uuid
cashier_party_id:
type: string
format: uuid
opened_at:
type: string
format: date-time
opening_balances:
nullable: true
type: object
status:
type: string
metadata:
type: object
UpdatePosOpeningEntryRequest:
type: object
required:
- pos_profile_id
- cashier_party_id
- opened_at
- status
- metadata
properties:
pos_profile_id:
type: string
format: uuid
branch_id:
nullable: true
type: string
format: uuid
cashier_party_id:
type: string
format: uuid
opened_at:
type: string
format: date-time
opening_balances:
nullable: true
type: object
status:
type: string
metadata:
type: object
PatchPosOpeningEntryRequest:
type: object
properties:
pos_profile_id:
type: string
format: uuid
branch_id:
nullable: true
type: string
format: uuid
cashier_party_id:
type: string
format: uuid
opened_at:
type: string
format: date-time
opening_balances:
nullable: true
type: object
status:
type: string
metadata:
type: object
PosOpeningEntryList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosOpeningEntry'
meta:
$ref: '#/components/schemas/PaginationMeta'
PosCashMovement:
type: object
required:
- id
- pos_profile_id
- opening_entry_id
- cashier_party_id
- movement_type
- amount
- moved_at
- metadata
properties:
id:
type: string
format: uuid
pos_profile_id:
type: string
format: uuid
opening_entry_id:
type: string
format: uuid
cashier_party_id:
type: string
format: uuid
movement_type:
type: string
amount:
type: string
reason:
nullable: true
type: string
maxLength: 300
moved_at:
type: string
format: date-time
metadata:
type: object
PosCashMovementBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosCashMovement'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreatePosCashMovementRequest:
type: object
required:
- pos_profile_id
- opening_entry_id
- cashier_party_id
- movement_type
- amount
- moved_at
- metadata
properties:
pos_profile_id:
type: string
format: uuid
opening_entry_id:
type: string
format: uuid
cashier_party_id:
type: string
format: uuid
movement_type:
type: string
amount:
type: string
reason:
nullable: true
type: string
maxLength: 300
moved_at:
type: string
format: date-time
metadata:
type: object
UpdatePosCashMovementRequest:
type: object
required:
- pos_profile_id
- opening_entry_id
- cashier_party_id
- movement_type
- amount
- moved_at
- metadata
properties:
pos_profile_id:
type: string
format: uuid
opening_entry_id:
type: string
format: uuid
cashier_party_id:
type: string
format: uuid
movement_type:
type: string
amount:
type: string
reason:
nullable: true
type: string
maxLength: 300
moved_at:
type: string
format: date-time
metadata:
type: object
PatchPosCashMovementRequest:
type: object
properties:
pos_profile_id:
type: string
format: uuid
opening_entry_id:
type: string
format: uuid
cashier_party_id:
type: string
format: uuid
movement_type:
type: string
amount:
type: string
reason:
nullable: true
type: string
maxLength: 300
moved_at:
type: string
format: date-time
metadata:
type: object
PosCashMovementList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosCashMovement'
meta:
$ref: '#/components/schemas/PaginationMeta'
PosDiscount:
type: object
required:
- id
- name
- percentage
- metadata
properties:
id:
type: string
format: uuid
name:
type: string
maxLength: 140
percentage:
type: string
description:
nullable: true
type: string
maxLength: 300
metadata:
type: object
PosDiscountBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosDiscount'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreatePosDiscountRequest:
type: object
required:
- name
- percentage
- metadata
properties:
name:
type: string
maxLength: 140
percentage:
type: string
description:
nullable: true
type: string
maxLength: 300
metadata:
type: object
UpdatePosDiscountRequest:
type: object
required:
- name
- percentage
- metadata
properties:
name:
type: string
maxLength: 140
percentage:
type: string
description:
nullable: true
type: string
maxLength: 300
metadata:
type: object
PatchPosDiscountRequest:
type: object
properties:
name:
type: string
maxLength: 140
percentage:
type: string
description:
nullable: true
type: string
maxLength: 300
metadata:
type: object
PosDiscountList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosDiscount'
meta:
$ref: '#/components/schemas/PaginationMeta'
PosManagerPin:
type: object
required:
- id
- employee_party_id
- pin_hash
- failed_attempts
- metadata
properties:
id:
type: string
format: uuid
employee_party_id:
type: string
format: uuid
pin_hash:
type: string
maxLength: 200
failed_attempts:
type: integer
format: int32
locked_until:
nullable: true
type: string
format: date-time
last_attempt_at:
nullable: true
type: string
format: date-time
last_attempt_ip:
nullable: true
type: string
maxLength: 45
metadata:
type: object
PosManagerPinBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosManagerPin'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreatePosManagerPinRequest:
type: object
required:
- employee_party_id
- pin_hash
- failed_attempts
- metadata
properties:
employee_party_id:
type: string
format: uuid
pin_hash:
type: string
maxLength: 200
failed_attempts:
type: integer
format: int32
locked_until:
nullable: true
type: string
format: date-time
last_attempt_at:
nullable: true
type: string
format: date-time
last_attempt_ip:
nullable: true
type: string
maxLength: 45
metadata:
type: object
UpdatePosManagerPinRequest:
type: object
required:
- employee_party_id
- pin_hash
- failed_attempts
- metadata
properties:
employee_party_id:
type: string
format: uuid
pin_hash:
type: string
maxLength: 200
failed_attempts:
type: integer
format: int32
locked_until:
nullable: true
type: string
format: date-time
last_attempt_at:
nullable: true
type: string
format: date-time
last_attempt_ip:
nullable: true
type: string
maxLength: 45
metadata:
type: object
PatchPosManagerPinRequest:
type: object
properties:
employee_party_id:
type: string
format: uuid
pin_hash:
type: string
maxLength: 200
failed_attempts:
type: integer
format: int32
locked_until:
nullable: true
type: string
format: date-time
last_attempt_at:
nullable: true
type: string
format: date-time
last_attempt_ip:
nullable: true
type: string
maxLength: 45
metadata:
type: object
PosManagerPinList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosManagerPin'
meta:
$ref: '#/components/schemas/PaginationMeta'
PosFloorPlan:
type: object
required:
- id
- name
- metadata
properties:
id:
type: string
format: uuid
branch_id:
nullable: true
type: string
format: uuid
name:
type: string
maxLength: 140
position:
nullable: true
type: integer
format: int32
metadata:
type: object
PosFloorPlanBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosFloorPlan'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreatePosFloorPlanRequest:
type: object
required:
- name
- metadata
properties:
branch_id:
nullable: true
type: string
format: uuid
name:
type: string
maxLength: 140
position:
nullable: true
type: integer
format: int32
metadata:
type: object
UpdatePosFloorPlanRequest:
type: object
required:
- name
- metadata
properties:
branch_id:
nullable: true
type: string
format: uuid
name:
type: string
maxLength: 140
position:
nullable: true
type: integer
format: int32
metadata:
type: object
PatchPosFloorPlanRequest:
type: object
properties:
branch_id:
nullable: true
type: string
format: uuid
name:
type: string
maxLength: 140
position:
nullable: true
type: integer
format: int32
metadata:
type: object
PosFloorPlanList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosFloorPlan'
meta:
$ref: '#/components/schemas/PaginationMeta'
PosTable:
type: object
required:
- id
- pos_floor_plan_id
- metadata
properties:
id:
type: string
format: uuid
pos_floor_plan_id:
type: string
format: uuid
name:
nullable: true
type: string
maxLength: 140
seats:
nullable: true
type: integer
format: int32
shape:
nullable: true
type: string
maxLength: 30
position:
nullable: true
type: object
metadata:
type: object
PosTableBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosTable'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreatePosTableRequest:
type: object
required:
- pos_floor_plan_id
- metadata
properties:
pos_floor_plan_id:
type: string
format: uuid
name:
nullable: true
type: string
maxLength: 140
seats:
nullable: true
type: integer
format: int32
shape:
nullable: true
type: string
maxLength: 30
position:
nullable: true
type: object
metadata:
type: object
UpdatePosTableRequest:
type: object
required:
- pos_floor_plan_id
- metadata
properties:
pos_floor_plan_id:
type: string
format: uuid
name:
nullable: true
type: string
maxLength: 140
seats:
nullable: true
type: integer
format: int32
shape:
nullable: true
type: string
maxLength: 30
position:
nullable: true
type: object
metadata:
type: object
PatchPosTableRequest:
type: object
properties:
pos_floor_plan_id:
type: string
format: uuid
name:
nullable: true
type: string
maxLength: 140
seats:
nullable: true
type: integer
format: int32
shape:
nullable: true
type: string
maxLength: 30
position:
nullable: true
type: object
metadata:
type: object
PosTableList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PosTable'
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: []