openapi: 3.0.3 info: title: SpotOn Restaurant POS Export API description: >- The SpotOn Restaurant POS Export API provides close-to-realtime data export from the SpotOn Restaurant POS System. It is location-centric: every route is scoped to a specific location identifier. The API exposes orders, order types, menu items, payment options, surcharges, taxes, discounts, employees, job positions, time clock entries, paid in/outs, cash deposits, locations, and report categories. Authentication uses an API key supplied via the x-api-key request header, with access granted on a per-location basis. version: v1 contact: name: SpotOn Developer Center url: https://developers.spoton.com/restaurant/docs/introduction x-generated-from: documentation x-last-validated: '2026-06-03' servers: - url: https://restaurantapi.spoton.com/posexport/v1 description: Production - url: https://restaurantapi-qa.spoton.com/posexport/v1 description: QA / Sandbox security: - apiKeyAuth: [] tags: - name: Orders description: Order and check data export, including items, modifiers, payments, and taxes. - name: Order Types description: Order type definitions for a location, such as Dine In or Takeout. - name: Menu Items description: Menu item catalog for a location. - name: Payment Options description: Payment methods configured at a location. - name: Employees description: Employee records and their job positions for a location. - name: Job Positions description: Job position definitions for a location. - name: Time Clock Entries description: Employee shift clock-in and clock-out records. - name: Paid In Outs description: Cash paid in and paid out records for a location. - name: Cash Deposits description: Cash deposit records recorded at a location. - name: Locations description: Location details for the SpotOn POS organization. - name: Report Categories description: Hierarchical report categories used to group menu items. paths: /locations/{locationId}: get: operationId: getLocation summary: SpotOn Get Location description: Retrieve the details for a single location by its unique identifier. tags: - Locations parameters: - $ref: '#/components/parameters/LocationId' responses: '200': description: The requested location. content: application/json: schema: $ref: '#/components/schemas/Location' examples: GetLocation200Example: summary: Default getLocation 200 response x-microcks-default: true value: id: abc123 organizationId: abc123 name: Smoke's Burgers deleted: false fiscalendofdaytime: 10800000 spotonmerchantid: abc123 '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/orders: get: operationId: listOrders summary: SpotOn List Orders description: >- Retrieve all orders that were last updated, created, or closed within the supplied date/time range for a location. Only orders touched within the last ~90 days are available, and a single date range cannot exceed 26 hours. tags: - Orders parameters: - $ref: '#/components/parameters/LocationId' - name: updatedAtStart in: query description: Inclusive RFC 3339 start of the update range. Max 26-hour range, no milliseconds. schema: type: string format: date-time - name: updatedAtEnd in: query description: Exclusive RFC 3339 end of the update range. Must be at least 5 minutes in the past. schema: type: string format: date-time - name: createdAtStart in: query description: Inclusive RFC 3339 start of the creation range. Max 26-hour range, no milliseconds. schema: type: string format: date-time - name: createdAtEnd in: query description: Exclusive RFC 3339 end of the creation range. Must be at least 5 minutes in the past. schema: type: string format: date-time - name: closedAtStart in: query description: Inclusive RFC 3339 start of the closure range. Max 26-hour range, no milliseconds. schema: type: string format: date-time - name: closedAtEnd in: query description: Exclusive RFC 3339 end of the closure range. Must be at least 5 minutes in the past. schema: type: string format: date-time - name: includeUpdatedActivity in: query description: Return previously created or closed orders that were subsequently updated. Only valid with createdAt or closedAt ranges. schema: type: boolean responses: '200': description: A list of orders for the location. content: application/json: schema: type: array items: $ref: '#/components/schemas/Order' examples: ListOrders200Example: summary: Default listOrders 200 response x-microcks-default: true value: - id: abc123 name: Smoke's Burgers deleted: false locationId: abc123 orderTypeId: abc123 orderTypeName: Smoke's Burgers createdByEmployeeId: abc123 createdByEmployeeName: Smoke's Burgers createdAt: '2025-03-15T14:30:00Z' closedAt: '2025-03-15T14:30:00Z' orderNumber: '3' tableNumber: '3' scheduled: false releasedAt: '2025-03-15T14:30:00Z' ownerInfo: employeeId: example employeeName: example jobPositionId: example totalAmount: '12.50' balanceDueAmount: '12.50' checks: - {} updatedAt: '2025-03-15T14:30:00Z' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/orders/{orderId}: get: operationId: getOrder summary: SpotOn Get Order description: Retrieve a single order by its unique identifier for a location. tags: - Orders parameters: - $ref: '#/components/parameters/LocationId' - name: orderId in: path required: true description: The unique identifier for the order. schema: type: string responses: '200': description: The requested order. content: application/json: schema: $ref: '#/components/schemas/Order' examples: GetOrder200Example: summary: Default getOrder 200 response x-microcks-default: true value: id: abc123 name: Smoke's Burgers deleted: false locationId: abc123 orderTypeId: abc123 orderTypeName: Smoke's Burgers createdByEmployeeId: abc123 createdByEmployeeName: Smoke's Burgers createdAt: '2025-03-15T14:30:00Z' closedAt: '2025-03-15T14:30:00Z' orderNumber: '3' tableNumber: '3' scheduled: false releasedAt: '2025-03-15T14:30:00Z' ownerInfo: employeeId: abc123 employeeName: Smoke's Burgers jobPositionId: abc123 totalAmount: '12.50' balanceDueAmount: '12.50' checks: - gratuityAmount: example totalAmount: example paymentsAmount: example balanceAmount: example guests: example surcharges: example payments: example autoGratuityTaxes: example items: example voidedItems: example updatedAt: '2025-03-15T14:30:00Z' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/order-types: get: operationId: listOrderTypes summary: SpotOn List Order Types description: Retrieve all order types configured for a location. tags: - Order Types parameters: - $ref: '#/components/parameters/LocationId' responses: '200': description: A list of order types for the location. content: application/json: schema: type: array items: $ref: '#/components/schemas/OrderType' examples: ListOrderTypes200Example: summary: Default listOrderTypes 200 response x-microcks-default: true value: - id: abc123 locationId: abc123 name: Smoke's Burgers deleted: false enabled: false wtmId: 6543 '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/order-types/{orderTypeId}: get: operationId: getOrderType summary: SpotOn Get Order Type description: Retrieve a single order type by its unique identifier for a location. tags: - Order Types parameters: - $ref: '#/components/parameters/LocationId' - name: orderTypeId in: path required: true description: The unique identifier for the order type. schema: type: string responses: '200': description: The requested order type. content: application/json: schema: $ref: '#/components/schemas/OrderType' examples: GetOrderType200Example: summary: Default getOrderType 200 response x-microcks-default: true value: id: abc123 locationId: abc123 name: Smoke's Burgers deleted: false enabled: false wtmId: 6543 '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/menu-items: get: operationId: listMenuItems summary: SpotOn List Menu Items description: Retrieve all menu items configured for a location. tags: - Menu Items parameters: - $ref: '#/components/parameters/LocationId' responses: '200': description: A list of menu items for the location. content: application/json: schema: type: array items: $ref: '#/components/schemas/MenuItemCatalog' examples: ListMenuItems200Example: summary: Default listMenuItems 200 response x-microcks-default: true value: - id: abc123 locationId: abc123 deleted: false available: false name: Smoke's Burgers openItem: false reportCategoryId: abc123 standardPriceAmount: '12.50' plu: '12345' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/menu-items/{menuItemId}: get: operationId: getMenuItem summary: SpotOn Get Menu Item description: Retrieve a single menu item by its unique identifier for a location. tags: - Menu Items parameters: - $ref: '#/components/parameters/LocationId' - name: menuItemId in: path required: true description: The unique identifier for the menu item. schema: type: string responses: '200': description: The requested menu item. content: application/json: schema: $ref: '#/components/schemas/MenuItemCatalog' examples: GetMenuItem200Example: summary: Default getMenuItem 200 response x-microcks-default: true value: id: abc123 locationId: abc123 deleted: false available: false name: Smoke's Burgers openItem: false reportCategoryId: abc123 standardPriceAmount: '12.50' plu: '12345' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/payment-options: get: operationId: listPaymentOptions summary: SpotOn List Payment Options description: Retrieve all payment options configured for a location. tags: - Payment Options parameters: - $ref: '#/components/parameters/LocationId' responses: '200': description: A list of payment options for the location. content: application/json: schema: type: array items: $ref: '#/components/schemas/PaymentOption' examples: ListPaymentOptions200Example: summary: Default listPaymentOptions 200 response x-microcks-default: true value: - id: abc123 locationId: abc123 name: Smoke's Burgers deleted: false enabled: false kind: CASH '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/payment-options/{paymentOptionId}: get: operationId: getPaymentOption summary: SpotOn Get Payment Option description: Retrieve a single payment option by its unique identifier for a location. tags: - Payment Options parameters: - $ref: '#/components/parameters/LocationId' - name: paymentOptionId in: path required: true description: The unique identifier for the payment option. schema: type: string responses: '200': description: The requested payment option. content: application/json: schema: $ref: '#/components/schemas/PaymentOption' examples: GetPaymentOption200Example: summary: Default getPaymentOption 200 response x-microcks-default: true value: id: abc123 locationId: abc123 name: Smoke's Burgers deleted: false enabled: false kind: CASH '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/employees: get: operationId: listEmployees summary: SpotOn List Employees description: Retrieve all employees for a location, including the job positions each holds. tags: - Employees parameters: - $ref: '#/components/parameters/LocationId' responses: '200': description: A list of employees for the location. content: application/json: schema: type: array items: $ref: '#/components/schemas/Employee' examples: ListEmployees200Example: summary: Default listEmployees 200 response x-microcks-default: true value: - id: abc123 locationID: abc123 firstName: Mark lastName: Nalepka email: jsmith@example.com nickName: Smoke's Burgers address: street1: example street2: example city: example state: example zip: example phone: example birthDate: '2025-03-15T14:30:00Z' hireDate: '2025-03-15T14:30:00Z' terminationDate: '2025-03-15T14:30:00Z' loginCode: A1B2 payrollId: abc123 active: false posUserId: abc123 deleted: false excludeFromReporting: false jobPositions: - {} '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/employees/{employeeId}: get: operationId: getEmployee summary: SpotOn Get Employee description: Retrieve a single employee by its unique identifier for a location. tags: - Employees parameters: - $ref: '#/components/parameters/LocationId' - name: employeeId in: path required: true description: The unique identifier for the employee. schema: type: string responses: '200': description: The requested employee. content: application/json: schema: $ref: '#/components/schemas/Employee' examples: GetEmployee200Example: summary: Default getEmployee 200 response x-microcks-default: true value: id: abc123 locationID: abc123 firstName: Mark lastName: Nalepka email: jsmith@example.com nickName: Smoke's Burgers address: street1: 1242 Selma street2: 1242 Selma city: Westland state: MI zip: '48185' phone: '1112223333' birthDate: '2025-03-15T14:30:00Z' hireDate: '2025-03-15T14:30:00Z' terminationDate: '2025-03-15T14:30:00Z' loginCode: A1B2 payrollId: abc123 active: false posUserId: abc123 deleted: false excludeFromReporting: false jobPositions: - id: example locationId: example name: example deleted: example '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/job-positions: get: operationId: listJobPositions summary: SpotOn List Job Positions description: Retrieve all job positions configured for a location. tags: - Job Positions parameters: - $ref: '#/components/parameters/LocationId' responses: '200': description: A list of job positions for the location. content: application/json: schema: type: array items: $ref: '#/components/schemas/JobPosition' examples: ListJobPositions200Example: summary: Default listJobPositions 200 response x-microcks-default: true value: - id: abc123 locationId: abc123 name: Smoke's Burgers deleted: false '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/job-positions/{jobPositionId}: get: operationId: getJobPosition summary: SpotOn Get Job Position description: Retrieve a single job position by its unique identifier for a location. tags: - Job Positions parameters: - $ref: '#/components/parameters/LocationId' - name: jobPositionId in: path required: true description: The unique identifier for the job position. schema: type: string responses: '200': description: The requested job position. content: application/json: schema: $ref: '#/components/schemas/JobPosition' examples: GetJobPosition200Example: summary: Default getJobPosition 200 response x-microcks-default: true value: id: abc123 locationId: abc123 name: Smoke's Burgers deleted: false '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/time-clock-entries: get: operationId: listTimeClockEntries summary: SpotOn List Time Clock Entries description: >- Retrieve all time clock entries for a location within a specified date/time range, filtered by update time, clock-in time, or clock-out time. tags: - Time Clock Entries parameters: - $ref: '#/components/parameters/LocationId' - name: updatedAtStart in: query description: Inclusive RFC 3339 start of the update range. schema: type: string format: date-time - name: updatedAtEnd in: query description: Exclusive RFC 3339 end of the update range. schema: type: string format: date-time - name: inStart in: query description: Inclusive RFC 3339 start for shift clock-in times. schema: type: string format: date-time - name: inEnd in: query description: Exclusive RFC 3339 end for shift clock-in times. schema: type: string format: date-time - name: outStart in: query description: Inclusive RFC 3339 start for shift clock-out times. schema: type: string format: date-time - name: outEnd in: query description: Exclusive RFC 3339 end for shift clock-out times. schema: type: string format: date-time responses: '200': description: A list of time clock entries for the location. content: application/json: schema: type: array items: $ref: '#/components/schemas/TimeClockEntry' examples: ListTimeClockEntries200Example: summary: Default listTimeClockEntries 200 response x-microcks-default: true value: - id: abc123 locationId: abc123 deleted: false voided: false employeeId: abc123 jobPositionId: abc123 payRateAmount: '12.50' declaredCashTipsAmount: '12.50' declaredCashTipsToOthersAmount: '12.50' inAt: '2025-03-15T14:30:00Z' outAt: '2025-03-15T14:30:00Z' breaks: - {} lastUpdatedAt: '2025-03-15T14:30:00Z' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/time-clock-entries/{timeClockEntryId}: get: operationId: getTimeClockEntry summary: SpotOn Get Time Clock Entry description: Retrieve a single time clock entry by its unique identifier for a location. tags: - Time Clock Entries parameters: - $ref: '#/components/parameters/LocationId' - name: timeClockEntryId in: path required: true description: The unique identifier for the time clock entry. schema: type: string responses: '200': description: The requested time clock entry. content: application/json: schema: $ref: '#/components/schemas/TimeClockEntry' examples: GetTimeClockEntry200Example: summary: Default getTimeClockEntry 200 response x-microcks-default: true value: id: abc123 locationId: abc123 deleted: false voided: false employeeId: abc123 jobPositionId: abc123 payRateAmount: '12.50' declaredCashTipsAmount: '12.50' declaredCashTipsToOthersAmount: '12.50' inAt: '2025-03-15T14:30:00Z' outAt: '2025-03-15T14:30:00Z' breaks: - id: example startedAt: example endedAt: example kind: example lastUpdatedAt: '2025-03-15T14:30:00Z' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/paid-in-outs: get: operationId: listPaidInOuts summary: SpotOn List Paid in Outs description: >- Retrieve all paid in/out records created within a specified date range for a location. A single date range cannot exceed 7 days. tags: - Paid In Outs parameters: - $ref: '#/components/parameters/LocationId' - name: createdAtStart in: query description: Inclusive RFC 3339 start of the creation range. Max 7-day range. schema: type: string format: date-time - name: createdAtEnd in: query description: Exclusive RFC 3339 end of the creation range. Must be at least 5 minutes in the past. schema: type: string format: date-time responses: '200': description: A list of paid in/out records for the location. content: application/json: schema: type: array items: $ref: '#/components/schemas/PaidInOut' examples: ListPaidInOuts200Example: summary: Default listPaidInOuts 200 response x-microcks-default: true value: - id: abc123 locationId: abc123 deleted: false voided: false paymentOptionId: abc123 amount: '12.50' employeeId: abc123 employeeName: Smoke's Burgers createdAt: '2025-03-15T14:30:00Z' kind: IN reason: Cash Low notes: Operator note '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/paid-in-outs/{paidInOutId}: get: operationId: getPaidInOut summary: SpotOn Get Paid in Out description: Retrieve a single paid in/out record by its unique identifier for a location. tags: - Paid In Outs parameters: - $ref: '#/components/parameters/LocationId' - name: paidInOutId in: path required: true description: The unique identifier for the paid in/out record. schema: type: string responses: '200': description: The requested paid in/out record. content: application/json: schema: $ref: '#/components/schemas/PaidInOut' examples: GetPaidInOut200Example: summary: Default getPaidInOut 200 response x-microcks-default: true value: id: abc123 locationId: abc123 deleted: false voided: false paymentOptionId: abc123 amount: '12.50' employeeId: abc123 employeeName: Smoke's Burgers createdAt: '2025-03-15T14:30:00Z' kind: IN reason: Cash Low notes: Operator note '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/cash-deposits: get: operationId: listCashDeposits summary: SpotOn List Cash Deposits description: Retrieve all cash deposits updated within a specified date range for a location. tags: - Cash Deposits parameters: - $ref: '#/components/parameters/LocationId' - name: updatedAtStart in: query description: Inclusive RFC 3339 start of the update range. schema: type: string format: date-time - name: updatedAtEnd in: query description: Exclusive RFC 3339 end of the update range. schema: type: string format: date-time responses: '200': description: A list of cash deposit records for the location. content: application/json: schema: type: array items: $ref: '#/components/schemas/CashDeposit' examples: ListCashDeposits200Example: summary: Default listCashDeposits 200 response x-microcks-default: true value: - id: abc123 locationId: abc123 deleted: false amount: '12.50' employeeId: abc123 jobPositionId: abc123 recordedAt: '2025-03-15T14:30:00Z' lastUpdatedByEmployeeId: abc123 lastUpdatedByJobPositionId: abc123 lastUpdatedAt: '2025-03-15T14:30:00Z' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/cash-deposits/{cashDepositId}: get: operationId: getCashDeposit summary: SpotOn Get Cash Deposit description: Retrieve a single cash deposit by its unique identifier for a location. tags: - Cash Deposits parameters: - $ref: '#/components/parameters/LocationId' - name: cashDepositId in: path required: true description: The unique identifier for the cash deposit. schema: type: string responses: '200': description: The requested cash deposit. content: application/json: schema: $ref: '#/components/schemas/CashDeposit' examples: GetCashDeposit200Example: summary: Default getCashDeposit 200 response x-microcks-default: true value: id: abc123 locationId: abc123 deleted: false amount: '12.50' employeeId: abc123 jobPositionId: abc123 recordedAt: '2025-03-15T14:30:00Z' lastUpdatedByEmployeeId: abc123 lastUpdatedByJobPositionId: abc123 lastUpdatedAt: '2025-03-15T14:30:00Z' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/report-categories: get: operationId: listReportCategories summary: SpotOn List Report Categories description: Retrieve all report categories configured for a location. tags: - Report Categories parameters: - $ref: '#/components/parameters/LocationId' responses: '200': description: A list of report categories for the location. content: application/json: schema: type: array items: $ref: '#/components/schemas/ReportCategory' examples: ListReportCategories200Example: summary: Default listReportCategories 200 response x-microcks-default: true value: - id: abc123 locationId: abc123 name: Smoke's Burgers parentId: abc123 deleted: false '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/report-categories/{reportCategoryId}: get: operationId: getReportCategory summary: SpotOn Get Report Category description: Retrieve a single report category by its unique identifier for a location. tags: - Report Categories parameters: - $ref: '#/components/parameters/LocationId' - name: reportCategoryId in: path required: true description: The unique identifier for the report category. schema: type: string responses: '200': description: The requested report category. content: application/json: schema: $ref: '#/components/schemas/ReportCategory' examples: GetReportCategory200Example: summary: Default getReportCategory 200 response x-microcks-default: true value: id: abc123 locationId: abc123 name: Smoke's Burgers parentId: abc123 deleted: false '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK components: securitySchemes: apiKeyAuth: type: apiKey in: header name: x-api-key description: API key granting per-location access to the POS Export API. parameters: LocationId: name: locationId in: path required: true description: The unique identifier for the location. schema: type: string responses: BadRequest: description: The request was malformed or violated a documented constraint such as the date range limit. content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: The API key is missing or invalid. content: application/json: schema: $ref: '#/components/schemas/Error' Forbidden: description: The API key does not have access to the requested location. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested resource does not exist. content: application/json: schema: $ref: '#/components/schemas/Error' ServerError: description: An unexpected server error occurred. content: application/json: schema: $ref: '#/components/schemas/Error' schemas: Error: type: object description: A standard error response. properties: message: type: string description: A human-readable description of the error. example: example code: type: string description: A machine-readable error code. example: A1B2 Location: type: object description: A SpotOn POS location. properties: id: type: string description: Unique location identifier. example: abc123 organizationId: type: string description: Unique organization identifier shared across all locations in the organization. example: abc123 name: type: string description: Location name. example: Smoke's Burgers deleted: type: boolean description: Whether the location is marked as deleted. example: false fiscalendofdaytime: type: integer format: int64 description: Fiscal end-of-day time, in milliseconds from the start of the day. example: 10800000 spotonmerchantid: type: string description: The SpotOn merchant identifier for the location. example: abc123 OrderType: type: object description: An order type configured at a location, such as Dine In or Takeout. properties: id: type: string description: Unique order type identifier. example: abc123 locationId: type: string description: Unique location identifier. example: abc123 name: type: string description: Order type name. example: Smoke's Burgers deleted: type: boolean description: Whether the order type is marked as deleted. example: false enabled: type: boolean description: Whether the order type is enabled at the location. example: false wtmId: type: integer format: int64 description: Organization-level unique identifier for the order type. example: 6543 MenuItemCatalog: type: object description: A menu item in a location's catalog. properties: id: type: string description: Unique menu item identifier. example: abc123 locationId: type: string description: Unique location identifier. example: abc123 deleted: type: boolean description: Whether the menu item is marked as deleted. example: false available: type: boolean description: Whether the menu item is available at the location. example: false name: type: string description: Menu item name. example: Smoke's Burgers openItem: type: boolean description: Whether the operator can override the item name at the POS. example: false reportCategoryId: type: string description: Unique report category identifier the item belongs to. example: abc123 standardPriceAmount: type: string description: Standard price of the item in US dollars, as a decimal string. example: '12.50' plu: type: string description: Price look-up (PLU) identifier for the menu item. example: '12345' PaymentOption: type: object description: A payment method configured at a location. properties: id: type: string description: Unique payment option identifier. example: abc123 locationId: type: string description: Unique location identifier. example: abc123 name: type: string description: Payment option name. example: Smoke's Burgers deleted: type: boolean description: Whether the payment option is marked as deleted. example: false enabled: type: boolean description: Whether the payment option is enabled at the location. example: false kind: type: string description: The category of payment option. enum: - CASH - CC - OTHER example: CASH Address: type: object description: A mailing address for an employee. properties: street1: type: string description: First line of the street address. example: 1242 Selma street2: type: string description: Second line of the street address. example: 1242 Selma city: type: string description: City. example: Westland state: type: string description: State or province. example: MI zip: type: string description: Postal code. example: '48185' phone: type: string description: Phone number. example: '1112223333' Employee: type: object description: An employee record at a location. properties: id: type: string description: Unique employee identifier. example: abc123 locationID: type: string description: Associated location identifier. example: abc123 firstName: type: string description: Employee first name. example: Mark lastName: type: string description: Employee last name. example: Nalepka email: type: string format: email description: Employee email address. example: jsmith@example.com nickName: type: string description: Employee nickname. example: Smoke's Burgers address: $ref: '#/components/schemas/Address' birthDate: type: string format: date-time description: Employee birth date in RFC 3339 format. May be null. nullable: true example: '2025-03-15T14:30:00Z' hireDate: type: string format: date-time description: Employee hire date in RFC 3339 format. May be null. nullable: true example: '2025-03-15T14:30:00Z' terminationDate: type: string format: date-time description: Employee termination date in RFC 3339 format. May be null. nullable: true example: '2025-03-15T14:30:00Z' loginCode: type: string description: POS login code for the employee. example: A1B2 payrollId: type: string description: Optional payroll identifier. example: abc123 active: type: boolean description: Whether the employee is active at the location. example: false posUserId: type: string description: Location-specific POS user identifier. example: abc123 deleted: type: boolean description: Whether the employee record is marked as deleted. example: false excludeFromReporting: type: boolean description: Whether the employee is excluded from reporting. example: false jobPositions: type: array description: The job positions the employee holds. items: $ref: '#/components/schemas/JobPosition' JobPosition: type: object description: A job position configured at a location. properties: id: type: string description: Unique job position identifier. example: abc123 locationId: type: string description: Associated location identifier. example: abc123 name: type: string description: Job position title. example: Smoke's Burgers deleted: type: boolean description: Whether the job position is marked as deleted. example: false Break: type: object description: A break taken during a time clock shift. properties: id: type: string description: Unique break identifier. example: abc123 startedAt: type: string format: date-time description: RFC 3339 timestamp when the break started. example: '2025-03-15T14:30:00Z' endedAt: type: string format: date-time description: RFC 3339 timestamp when the break ended. May be null if the break is ongoing. nullable: true example: '2025-03-15T14:30:00Z' kind: type: string description: Whether the break is paid or unpaid. enum: - PAID - UNPAID example: PAID TimeClockEntry: type: object description: An employee shift clock-in and clock-out record. properties: id: type: string description: Unique time clock entry identifier. example: abc123 locationId: type: string description: Associated location identifier. example: abc123 deleted: type: boolean description: Whether the entry is marked as deleted. example: false voided: type: boolean description: Whether the entry is voided. example: false employeeId: type: string description: Associated employee identifier. example: abc123 jobPositionId: type: string description: Associated job position identifier. example: abc123 payRateAmount: type: string description: Hourly pay rate in US dollars, as a decimal string. example: '12.50' declaredCashTipsAmount: type: string description: Declared cash tips collected, as a decimal string. example: '12.50' declaredCashTipsToOthersAmount: type: string description: Declared cash tips given to others, as a decimal string. example: '12.50' inAt: type: string format: date-time description: RFC 3339 shift start (clock-in) time. example: '2025-03-15T14:30:00Z' outAt: type: string format: date-time description: RFC 3339 shift end (clock-out) time. May be null if the shift is open. nullable: true example: '2025-03-15T14:30:00Z' breaks: type: array description: Break records taken during the shift. items: $ref: '#/components/schemas/Break' lastUpdatedAt: type: string format: date-time description: RFC 3339 timestamp of the last update. example: '2025-03-15T14:30:00Z' PaidInOut: type: object description: A cash paid in or paid out record at a location. properties: id: type: string description: Unique paid in/out identifier. example: abc123 locationId: type: string description: Associated location identifier. example: abc123 deleted: type: boolean description: Whether the record is marked as deleted. example: false voided: type: boolean description: Whether the record is voided. example: false paymentOptionId: type: string description: Associated payment option identifier. example: abc123 amount: type: string description: Amount in US dollars, as a decimal string. example: '12.50' employeeId: type: string description: Identifier of the employee who recorded the entry. example: abc123 employeeName: type: string description: Full name of the employee who recorded the entry. example: Smoke's Burgers createdAt: type: string format: date-time description: RFC 3339 creation timestamp. example: '2025-03-15T14:30:00Z' kind: type: string description: Whether cash was paid in or paid out. enum: - IN - OUT example: IN reason: type: string description: Predefined reason for the entry. example: Cash Low notes: type: string description: Operator notes. example: Operator note CashDeposit: type: object description: A cash deposit recorded at a location. properties: id: type: string description: Unique cash deposit identifier. example: abc123 locationId: type: string description: Associated location identifier. example: abc123 deleted: type: boolean description: Whether the deposit is marked as deleted. example: false amount: type: string description: Deposit amount in US dollars, as a decimal string. example: '12.50' employeeId: type: string description: Identifier of the employee who recorded the deposit. example: abc123 jobPositionId: type: string description: Job position of the employee during recording. example: abc123 recordedAt: type: string format: date-time description: RFC 3339 timestamp when the deposit was recorded. example: '2025-03-15T14:30:00Z' lastUpdatedByEmployeeId: type: string description: Identifier of the employee who last updated the deposit. example: abc123 lastUpdatedByJobPositionId: type: string description: Job position of the employee during the last update. example: abc123 lastUpdatedAt: type: string format: date-time description: RFC 3339 timestamp of the last update. example: '2025-03-15T14:30:00Z' ReportCategory: type: object description: A hierarchical report category used to group menu items. properties: id: type: string description: Unique report category identifier. example: abc123 locationId: type: string description: Associated location identifier. example: abc123 name: type: string description: Report category name. example: Smoke's Burgers parentId: type: string description: Parent category identifier for hierarchical organization. example: abc123 deleted: type: boolean description: Whether the report category is marked as deleted. example: false OwnerInfo: type: object description: Employee ownership details for an order. properties: employeeId: type: string description: Employee identifier. example: abc123 employeeName: type: string description: Employee name. example: Smoke's Burgers jobPositionId: type: string description: Job position identifier held during ownership. example: abc123 OrderTax: type: object description: A tax applied to an order line, modifier, or surcharge. properties: taxId: type: string description: Tax identifier. Empty for splick.it orders. example: abc123 taxName: type: string description: Tax name at the time of application. example: Smoke's Burgers percentage: type: string description: Tax percentage as a decimal string, for example "6.5". example: '8.25' amount: type: string description: Tax amount in US dollars, as a decimal string. example: '12.50' OrderDiscount: type: object description: A discount applied to an order line or modifier. properties: id: type: string description: Discount instance identifier. May repeat across levels. example: abc123 discountId: type: string description: Discount type identifier. example: abc123 discountName: type: string description: Discount name at the time of application. example: Smoke's Burgers createdAt: type: string format: date-time description: RFC 3339 timestamp when the discount was applied. example: '2025-03-15T14:30:00Z' amount: type: string description: Discount amount in US dollars, as a decimal string. example: '12.50' OrderModifier: type: object description: A modifier applied to an ordered menu item. properties: modifierId: type: string description: Modifier identifier. example: abc123 modifierOptionId: type: string description: Selected modifier option identifier. example: abc123 text: type: string description: Combined display text for the modifier, for example "Extra Cheese". example: Extra Cheese preDiscountsAmount: type: string description: Extended amount before discounts and taxes, as a decimal string. example: '12.50' discountsAmount: type: string description: Applied discount portion, as a decimal string. example: '12.50' postDiscountsAmount: type: string description: Amount after discounts and before taxes, as a decimal string. example: '12.50' taxesAmount: type: string description: Applied taxes, as a decimal string. example: '12.50' totalAmount: type: string description: Final amount after discounts and taxes, as a decimal string. example: '12.50' discounts: type: array description: Distributed discount details. items: $ref: '#/components/schemas/OrderDiscount' taxes: type: array description: Applied tax details. items: $ref: '#/components/schemas/OrderTax' OrderMenuItem: type: object description: A menu item line on an order check or guest. properties: menuItemId: type: string description: Menu item identifier. example: abc123 name: type: string description: Item name at the time the order was placed. example: Smoke's Burgers createdAt: type: string format: date-time description: RFC 3339 timestamp when the item was added. example: '2025-03-15T14:30:00Z' quantity: type: string description: Decimal quantity as a string. Subitems show the parent quantity. example: example preDiscountsAmount: type: string description: Extended amount before discounts and taxes, as a decimal string. example: '12.50' discountsAmount: type: string description: Total applied discounts, as a decimal string. example: '12.50' postDiscountsAmount: type: string description: Amount after discounts and before taxes, as a decimal string. example: '12.50' taxesAmount: type: string description: Applied taxes, as a decimal string. example: '12.50' totalAmount: type: string description: Final amount after discounts and taxes, as a decimal string. example: '12.50' discounts: type: array description: Applied discount details. items: $ref: '#/components/schemas/OrderDiscount' taxes: type: array description: Applied tax details. items: $ref: '#/components/schemas/OrderTax' subItems: type: array description: Nested subitems. items: $ref: '#/components/schemas/OrderMenuItem' giftCardIssueReload: type: boolean description: Whether the line represents a gift card sale or reload. example: false modifiers: type: array description: Applied modifiers. items: $ref: '#/components/schemas/OrderModifier' OrderSurcharge: type: object description: A surcharge applied to an order check or payment. properties: surchargeId: type: string description: Surcharge identifier. example: abc123 surchargeName: type: string description: Surcharge name at the time of application. example: Smoke's Burgers createdAt: type: string format: date-time description: RFC 3339 timestamp when the surcharge was applied. example: '2025-03-15T14:30:00Z' amount: type: string description: Surcharge amount in US dollars, as a decimal string. example: '12.50' taxesAmount: type: string description: Applied tax amount, as a decimal string. example: '12.50' taxes: type: array description: Tax details. items: $ref: '#/components/schemas/OrderTax' OrderPayment: type: object description: A payment recorded against an order check. properties: paymentOptionId: type: string description: Payment method identifier. example: abc123 paymentName: type: string description: Payment method name at the time of application. example: Smoke's Burgers createdAt: type: string format: date-time description: RFC 3339 timestamp when the payment was applied. example: '2025-03-15T14:30:00Z' amount: type: string description: Payment amount in US dollars, as a decimal string. example: '12.50' surcharges: type: array description: Payment-level surcharges. items: $ref: '#/components/schemas/OrderSurcharge' surchargesAmount: type: integer format: int64 description: Total surcharge amount. example: 0 tipAmount: type: string description: Tip amount in US dollars, as a decimal string. example: '12.50' tipDeductionAmount: type: string description: Processing fee deduction from the tip, as a decimal string. example: '12.50' tipAppliedToEmployeeId: type: string description: Identifier of the employee the tip was applied to. example: abc123 employeeId: type: string description: Identifier of the employee who processed the payment. example: abc123 employeeName: type: string description: Name of the employee who processed the payment. example: Smoke's Burgers cardType: type: string description: The card type used for the payment. enum: - Unknown - Amex - Discover - Manual CC - Mastercard - Visa example: Unknown cardNumber: type: string description: Last four digits of the card, formatted as "...XXXX". example: '3' cardholderName: type: string description: Cardholder name. example: Smoke's Burgers OrderGuest: type: object description: A guest on an order check. properties: name: type: string description: Guest name if available. example: Smoke's Burgers items: type: array description: Items ordered by the guest. items: $ref: '#/components/schemas/OrderMenuItem' voidedItems: type: array description: Items voided for the guest. items: $ref: '#/components/schemas/OrderMenuItem' OrderCheck: type: object description: A check on an order, holding guests, payments, and surcharges. properties: gratuityAmount: type: string description: Applied auto-gratuity amount, as a decimal string. example: '12.50' totalAmount: type: string description: Final check total, as a decimal string. example: '12.50' paymentsAmount: type: string description: Total payments received, as a decimal string. example: '12.50' balanceAmount: type: string description: Remaining balance, as a decimal string. example: '12.50' guests: type: array description: Guests on the check. items: $ref: '#/components/schemas/OrderGuest' surcharges: type: array description: Check-level surcharges. items: $ref: '#/components/schemas/OrderSurcharge' payments: type: array description: Payment records. items: $ref: '#/components/schemas/OrderPayment' autoGratuityTaxes: type: array description: Taxes applied to the auto-gratuity. items: $ref: '#/components/schemas/OrderTax' items: type: array description: Items applied directly to the check, typically empty. items: $ref: '#/components/schemas/OrderMenuItem' voidedItems: type: array description: Voided items applied directly to the check. items: $ref: '#/components/schemas/OrderMenuItem' Order: type: object description: An order exported from the SpotOn Restaurant POS System. properties: id: type: string description: Unique order identifier. example: abc123 name: type: string description: Order name. example: Smoke's Burgers deleted: type: boolean description: Whether the order is marked as deleted. example: false locationId: type: string description: Associated location identifier. example: abc123 orderTypeId: type: string description: Order type identifier. example: abc123 orderTypeName: type: string description: Order type name at the time of assignment. example: Smoke's Burgers createdByEmployeeId: type: string description: Identifier of the employee who created the order. example: abc123 createdByEmployeeName: type: string description: Name of the employee who created the order. example: Smoke's Burgers createdAt: type: string format: date-time description: RFC 3339 creation timestamp. example: '2025-03-15T14:30:00Z' closedAt: type: string format: date-time description: RFC 3339 closure timestamp. Null if the order is open. nullable: true example: '2025-03-15T14:30:00Z' orderNumber: type: string description: Assigned order number. Empty if unassigned. example: '3' tableNumber: type: string description: Assigned table number. Empty if none. example: '3' scheduled: type: boolean description: Whether the order is scheduled for the future. example: false releasedAt: type: string format: date-time description: RFC 3339 kitchen release time for scheduled orders. nullable: true example: '2025-03-15T14:30:00Z' ownerInfo: $ref: '#/components/schemas/OwnerInfo' totalAmount: type: string description: Final total after discounts, taxes, and surcharges, as a decimal string. example: '12.50' balanceDueAmount: type: string description: Remaining balance due, as a decimal string. example: '12.50' checks: type: array description: Checks belonging to the order. items: $ref: '#/components/schemas/OrderCheck' updatedAt: type: string format: date-time description: RFC 3339 last update timestamp, including milliseconds. example: '2025-03-15T14:30:00Z'