openapi: 3.2.0
info:
version: 1.0.0
title: Lightspeed Restaurant K Series Order and Pay API
description: '**Lightspeed Restaurant** offers a **REST API** in order to communicate with the data in the system. These APIs are built using the RESTful standards and adhere to the basic verb interactions as defined by the REST standard.
Detailed developer guides can be found in the [Lightspeed Restaurant API Portal](https://api-portal.lsk.lightspeed.app/).
These services are in continuous development and subject to change. Please find our versioning policy [here](https://api-portal.lsk.lightspeed.app/quick-start/versioning).
'
x-logo:
altText: Lightspeed Commerce
url: static/lightspeed@2x.png
servers:
- url: https://api.trial.lsk.lightspeed.app
description: Demo URL
x-bump-branch-name: demo
- url: https://api.lsk.lightspeed.app
description: Production URL
x-bump-branch-name: prod
tags:
- name: Order and Pay
paths:
/o/op/data/businesses:
get:
summary: Get Businesses
operationId: apeLookupBusinesses
description: Returns a list of all businesses and business locations associated with the access token.
tags:
- Order and Pay
responses:
'200':
description: Businesses
content:
application/json:
schema:
items:
properties:
name:
example: My Awesome Business
description: The business name.
type: string
id:
example: 454335871
description: The unique identifier for the business.
type: integer
format: int64
businessLocations:
description: The business locations within this business.
items:
properties:
id:
$ref: '#/components/schemas/apeBusinessLocationId'
name:
example: My Awesome Business - Location 1
description: The business location name.
type: string
type: object
type: array
type: object
type: array
security:
- OAuth2:
- orders-api
/o/op/data/{businessLocationId}/floorplans:
get:
summary: Get All Floorplans
operationId: apeLookupFloorPlans
description: Returns the floorplans for a specific business location.
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: path
required: true
- name: expandTables
in: query
required: false
description: 'If true, the response will include the table details for each floorplan.
If false, the response will only include the [`name`](https://api-docs.lsk.lightspeed.app/operation/operation-apelookupfloorplans#operation-apelookupfloorplans-200-body-application-json-name) and [`id`](https://api-docs.lsk.lightspeed.app/operation/operation-apelookupfloorplans#operation-apelookupfloorplans-200-body-application-json-id) for the floorplans.'
schema:
type: boolean
default: true
responses:
'200':
description: Floorplans
content:
application/json:
schema:
items:
properties:
id:
example: 141948669132976
description: The unique identifier for the floorplan.
format: int64
type: integer
name:
description: The name of the floorplan.
example: Terrace
type: string
tables:
items:
$ref: '#/components/schemas/apeTable'
type: array
type: object
type: array
'404':
description: 'Not Found
Indicates that the business location has no floorplans configured.'
security:
- OAuth2:
- orders-api
/o/op/data/{businessLocationId}/floorplans/{floorPlanId}/tables:
get:
summary: Get Floorplan Tables
operationId: apeGetTables
description: Returns the tables for a specific floorplan of a business location
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: path
required: true
- schema:
$ref: '#/components/schemas/apeFloorPlanId'
name: floorPlanId
in: path
required: true
responses:
'200':
description: Tables
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/apeTable'
security:
- OAuth2:
- orders-api
/o/op/data/account-profiles:
get:
summary: Get All Order Profiles
operationId: apeAccountProfiles
description: 'Returns a list of active [order profiles](https://k-series-support.lightspeedhq.com/hc/en-us/articles/1260804657389-About-order-profiles) for a specific business location.
The order profile [code](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code) can be used to retrieve a specific price list when [loading a menu](https://api-docs.lsk.lightspeed.app/operation/operation-apegetmenubyid).
Note: Order Profiles were previously called Account Profiles, and may still be referred to in this way in the API, in some cases.'
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: query
required: true
responses:
'200':
description: Order profiles
content:
application/json:
schema:
$ref: '#/components/schemas/apeAccountProfiles'
security:
- OAuth2:
- orders-api
/o/op/data/{businessLocationId}/account-profiles/tagcode/{tagCode}:
get:
summary: Get Single Order Profile
operationId: apeGetAccountProfile
description: 'Returns details of an active [order profile](https://k-series-support.lightspeedhq.com/hc/en-us/articles/1260804657389-About-order-profiles) based on its [code](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code).
Note: Order Profiles were previously called Account Profiles, and may still be referred to in this way in the API, in some cases.'
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: path
required: true
- schema:
$ref: '#/components/schemas/apeTagCode'
name: tagCode
in: path
required: true
responses:
'200':
description: Order profile
content:
application/json:
schema:
$ref: '#/components/schemas/apeAccountProfile'
security:
- OAuth2:
- orders-api
/o/op/1/menu/list:
get:
summary: Get All Menus
operationId: apeLoadMenus
description: Returns a list of menus for a given business location.
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: query
required: true
responses:
'200':
description: Load menus
content:
application/json:
schema:
items:
properties:
menuName:
description: The name of the menu.
example: Lunch Menu
type: string
ikentooMenuId:
type: integer
description: The unique identifier for the menu.
example: 141948669132851
format: int64
type: object
type: array
security:
- OAuth2:
- orders-api
/o/op/1/menu/load/{menuId}:
get:
summary: Get Single Menu
operationId: apeGetMenuById
deprecated: true
description: '**Deprecated:** Use [/o/op/2/menu/load/{menuId}](#/Order%20and%20Pay/getMenuByIdV2) instead. V2 includes product modifier groups and product modifiers on menu items and deal items. Returns details of a particular menu based on its unique identifier and other query parameters.'
tags:
- Order and Pay
parameters:
- name: menuId
in: path
required: true
description: The unique identifier for the menu.
schema:
type: integer
description: The unique identifier for the menu.
example: 141948669132851
format: int64
- name: businessLocationId
in: query
required: true
schema:
$ref: '#/components/schemas/apeBusinessLocationId'
- name: accountProfile
in: query
required: false
schema:
type: string
description: The order profile [`code`](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code). Item prices returned will be those associated with this order profile, when applicable. See the [order profiles](https://api-portal.lsk.lightspeed.app/guides/definitions/order-profiles) definition for more details.
example: TAKEAWAY
default: ''
- name: richContent
in: query
required: false
schema:
type: boolean
description: Query parameter to include rich content of menu items.
example: true
default: false
responses:
'200':
description: Successful retrieval of menu details.
content:
application/json:
schema:
$ref: '#/components/schemas/apeMenu'
'503':
description: Service Unavailable
content:
'*/*':
schema:
properties:
status:
enum:
- '503'
type: string
timestamp:
type: string
format: date-time
message:
type: string
apiSubExceptions:
items:
properties:
field:
type: string
rejectedValue:
type: string
message:
type: string
type: object
type: array
type: object
security:
- OAuth2:
- orders-api
/o/op/2/menu/load/{menuId}:
get:
summary: Get Single Menu V2
operationId: apeGetMenuByIdV2
description: 'Returns details of a particular menu based on its unique identifier and other query parameters. Product modifier groups and product modifiers are always included in the response.
**Migration from V1:** The response includes `menuModifierGroups` on each menu item and deal item, containing product modifier details (name, price, extraPrice, sku, rich data). Items with product modifier groups are no longer marked as `asSubItem`.'
tags:
- Order and Pay
parameters:
- name: menuId
in: path
required: true
description: The unique identifier for the menu.
schema:
type: integer
description: The unique identifier for the menu.
example: 141948669132851
format: int64
- name: businessLocationId
in: query
required: true
schema:
$ref: '#/components/schemas/apeBusinessLocationId'
- name: accountProfile
in: query
required: false
schema:
type: string
description: The order profile [`code`](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code). Item prices returned will be those associated with this order profile, when applicable. See the [order profiles](https://api-portal.lsk.lightspeed.app/guides/definitions/order-profiles) definition for more details.
example: TAKEAWAY
default: ''
- name: richContent
in: query
required: false
schema:
type: boolean
description: Query parameter to include rich content of menu items.
example: true
default: false
responses:
'200':
description: Successful retrieval of menu details including product modifiers.
content:
application/json:
schema:
$ref: '#/components/schemas/apeMenuV2'
'503':
description: Service Unavailable
content:
'*/*':
schema:
properties:
status:
enum:
- '503'
type: string
timestamp:
type: string
format: date-time
message:
type: string
apiSubExceptions:
items:
properties:
field:
type: string
rejectedValue:
type: string
message:
type: string
type: object
type: array
type: object
security:
- OAuth2:
- orders-api
/o/op/1/menu/modifiers:
get:
summary: Get Modifiers
operationId: apeLoadAllModifiers
description: Returns a list of production instructions for a specific business location.
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: query
required: true
responses:
'200':
description: Load modifiers
content:
application/json:
schema:
items:
$ref: '#/components/schemas/apeProductionInstruction'
type: array
examples:
- - multiSelectionPermitted: false
productionInstructionGroupName: Meat cooking
productionIntructionGroupId: 236025632784487
productionInstructionList:
- instruction: Bleu
ikentooModifierId: 236025632784488
- instruction: Rare
ikentooModifierId: 236025632784490
- instruction: Medium Rare
ikentooModifierId: 236025632784492
- instruction: Medium
ikentooModifierId: 236025632784494
- instruction: Medium well
ikentooModifierId: 236025632784496
- instruction: Well done
ikentooModifierId: 236025632784498
- multiSelectionPermitted: false
productionInstructionGroupName: Fish cooking
productionIntructionGroupId: 236025632784501
productionInstructionList:
- instruction: Seared
ikentooModifierId: 236025632784502
- instruction: Medium
ikentooModifierId: 236025632784504
- instruction: Well done
ikentooModifierId: 236025632784506
- multiSelectionPermitted: false
productionInstructionGroupName: Egg cooking
productionIntructionGroupId: 236025632784509
productionInstructionList:
- instruction: Sunny Side
ikentooModifierId: 236025632784510
- instruction: Over Easy
ikentooModifierId: 236025632784512
- instruction: Hard
ikentooModifierId: 236025632784514
- instruction: Scrambled
ikentooModifierId: 236025632784516
- multiSelectionPermitted: false
productionInstructionGroupName: Garnish
productionIntructionGroupId: 236025632784519
productionInstructionList:
- instruction: Fries
ikentooModifierId: 236025632784520
- instruction: Pasta
ikentooModifierId: 236025632784522
- instruction: Rice
ikentooModifierId: 236025632784524
- instruction: Vegetables
ikentooModifierId: 236025632784526
- instruction: Salad
ikentooModifierId: 236025632784528
- multiSelectionPermitted: false
productionInstructionGroupName: Flavors
productionIntructionGroupId: 236025632784531
productionInstructionList:
- instruction: Vanilla
ikentooModifierId: 236025632784532
- instruction: Strawberry
ikentooModifierId: 236025632784534
- instruction: Chocolate
ikentooModifierId: 236025632784536
- instruction: Coffee
ikentooModifierId: 236025632784538
- instruction: Caramel
ikentooModifierId: 236025632784540
security:
- OAuth2:
- orders-api
/o/op/1/menu/discounts:
get:
summary: Get Discounts
operationId: apeLoadAllDiscounts
description: Returns a list of discounts for a specific business location.
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: query
required: true
responses:
'200':
description: Load discounts
content:
application/json:
schema:
items:
$ref: '#/components/schemas/apeDiscount'
type: array
examples:
- - name: Free
code: FREE
discountPercentage: 100.0
- name: Ten Euros Off
code: TEN_OFF
discountAmount: 10.0
security:
- OAuth2:
- orders-api
/o/op/1/order/local:
post:
summary: Create Local Order
description: 'Creates a new dine-in order for a specific business location. See [Online Ordering Basics](https://api-portal.lsk.lightspeed.app/guides/tutorials/online-ordering-basics) for more details.
If the [accountIdentifier](https://api-docs.lsk.lightspeed.app/operation/operation-apelocalorder#operation-apelocalorder-body-application-json-accountidentifier) of an existing order is provided in the body of the request, the request will update the existing order.'
operationId: apeLocalOrder
requestBody:
content:
application/json:
schema:
required:
- businessLocationId
- thirdPartyReference
- endpointId
- customerInfo
properties:
businessLocationId:
$ref: '#/components/schemas/apeBusinessLocationId'
thirdPartyReference:
description: The external reference provided for this order. Must be unique. This value will be included in the order details sent to the [webhook URL](https://api-docs.lsk.lightspeed.app/operation/operation-apecreatewebhookoo#operation-apecreatewebhookoo-body-application-json-url).
type: string
minLength: 1
maxLength: 48
examples:
- MyAwesomeThirdPartyReference
endpointId:
description: Endpoint ID for a unique webhook that has been created using [the webhook endpoint](https://api-docs.lsk.lightspeed.app/operation/operation-apecreatewebhookoo).
type: string
examples:
- MY-AWESOME-ENDPOINT-ID
customerInfo:
$ref: '#/components/schemas/apeCustomerInfo'
orderNote:
description: A note added to this order and displayed on the printed dockets.
type: string
examples:
- Sample Order Note
maxTimeToAttemptOrderDeliverToPos:
description: '** Use of this feature is strongly recommended **
Maximum time to attempt delivery of this order to the POS. In milliseconds. The minimum value is 60000ms (1 minute).
If [`scheduledTimeForOrderAsIso8601`](https://api-docs.lsk.lightspeed.app/operation/operation-apelocalorder#operation-apelocalorder-body-application-json-scheduledtimefororderasiso8601) is used, this value will be added to the scheduled order time.'
type: integer
format: int32
examples:
- 60000
staffId:
description: The unique identifier for the staff member.
type: integer
format: int64
examples:
- 1234567890
accountProfileCode:
description: A valid order profile [code](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code) to associate with this order. See the [order profiles](https://api-portal.lsk.lightspeed.app/guides/definitions/order-profiles) definition for more details.
type: string
examples:
- LOCALORDER
scheduledTimeForOrderAsIso8601:
description: The time that the order will be sent to the POS. Must be in the future.
type: string
format: date-time
examples:
- '2024-04-04T09:42:00.000+00:00'
payment:
$ref: '#/components/schemas/apeOrderPayment'
collectionCode:
maxLength: 8
description: Unique collection code for this order. Generated if blank and Account Profile Delivery Mode is not local.
type: string
examples:
- ABC-1234
orderCollectionTimeAsIso8601:
description: The expected collection time of the order. Must be in the future.
type: string
format: date-time
examples:
- '2024-04-04T09:42:00.000+00:00'
accountId:
description: The system-generated account identifier for this order (Applies to iKentoo V2). If this is specified, the associated order will be updated.
deprecated: true
type: string
examples:
- '1234567890'
accountIdentifier:
description: The system-generated account identifier for this order (Applies to iKentoo V3+). If this is specified, the associated order will be updated.
type: string
examples:
- A1235.89
tableNumber:
description: The table number for this local order. If updating an existing order, (ie.`accountIdentifier` is specified), the `tableNumber` cannot be updated.
type: string
examples:
- '1'
clientCount:
description: The number of customers for this order. If updating an existing order, (ie.`accountIdentifier` is specified), the `clientCount` cannot be updated.
type: integer
format: int32
examples:
- 4
items:
description: The items in this order.
items:
$ref: '#/components/schemas/apeLocalOrderItemLine'
type: array
targetPrinterProfileId:
description: The printer profile id to use for printing the receipt for this payment. If not provided, the default active printer profile for the business location will be used.
type: integer
format: int64
examples:
- 1773881235
type: object
required: true
tags:
- Order and Pay
responses:
'200':
description: accepted
content:
application/json:
schema:
properties:
status:
description: The response.
type: string
examples:
- ok
type: object
'400':
description: Bad Request.
content:
application/json:
schema:
type: object
description: Response object for error code 400
properties:
timestamp:
type: string
format: date-time
description: The date and time at which the error occurred.
examples:
- 2023-11-07T19:15:05.043+0000
status:
type: integer
description: The HTTP status code of the error response.
examples:
- 400
error:
type: string
description: A brief title of the error status.
examples:
- Bad Request
message:
type: string
description: A message describing the nature of the error in detail.
examples:
- 'Validation failed for object=''localOrder''. Error count: 1'
errors:
type: array
description: An array of error details, outlining specific issues with the request.
items:
type: object
properties:
codes:
type: array
items:
type: string
description: A set of code strings that correspond to the validation error.
example:
- NotNull.localOrder.thirdPartyReference
- NotNull.thirdPartyReference
- NotNull.java.lang.String
- NotNull
arguments:
type: array
items:
type: object
properties:
codes:
type: array
items:
type: string
description: Argument codes that are related to the field in validation.
example:
- localOrder.thirdPartyReference
- thirdPartyReference
defaultMessage:
type: string
description: The default message associated with the failed validation.
example: thirdPartyReference
code:
type: string
description: A single code that represents the specific validation rule that was not satisfied.
example: thirdPartyReference
defaultMessage:
type: string
description: The default error message provided when the associated field fails validation.
example: must not be null
objectName:
type: string
description: The name of the object that failed validation.
example: localOrder
field:
type: string
description: The name of the field that failed validation.
example: thirdPartyReference
bindingFailure:
type: boolean
description: Indicates whether the error was a result of a binding failure.
example: false
code:
type: string
description: A code representing the specific type of validation error.
example: NotNull
path:
type: string
description: The path of the failed request.
examples:
- /o/op/1/order/local
'409':
description: Conflict
content:
'*/*':
schema:
properties:
status:
description: The request status.
type: string
examples:
- fail
msg:
description: A message describing the error.
type: string
examples:
- reference has already been used 123456789
type: object
security:
- OAuth2:
- orders-api
/o/op/1/order/toGo:
post:
summary: Create To Go Order
operationId: apePlaceToGoOrder
description: Creates a new takeaway or delivery order for a specific business location. See [Online Ordering Basics](https://api-portal.lsk.lightspeed.app/guides/tutorials/online-ordering-basics) for more details.
requestBody:
content:
application/json:
schema:
required:
- businessLocationId
- thirdPartyReference
- endpointId
- customerInfo
properties:
businessLocationId:
$ref: '#/components/schemas/apeBusinessLocationId'
thirdPartyReference:
description: The external reference provided for this order. Must be unique. This value will be included in the order details sent to the [webhook URL](https://api-docs.lsk.lightspeed.app/operation/operation-apecreatewebhookoo#operation-apecreatewebhookoo-body-application-json-url).
type: string
minLength: 1
maxLength: 48
examples:
- MyAwesomeThirdPartyReference
endpointId:
description: Endpoint id for a unique webhook that has been created using [the webhook endpoint](https://api-docs.lsk.lightspeed.app/operation/operation-apecreatewebhookoo).
type: string
examples:
- MY-AWESOME-ENDPOINT-ID
customerInfo:
$ref: '#/components/schemas/apeCustomerInfo'
orderNote:
description: A note added to this order and displayed on the printed dockets.
type: string
examples:
- Sample Order Note
maxTimeToAttemptOrderDeliverToPos:
description: '** Use of this feature is strongly recommended **
Maximum time to attempt delivery of this order to the POS. In milliseconds. The minimum value is 60000ms (1 minute).
If [`scheduledTimeForOrderAsIso8601`](https://api-docs.lsk.lightspeed.app/operation/operation-apelocalorder#operation-apelocalorder-body-application-json-scheduledtimefororderasiso8601) is used, this value will be added to the scheduled order time.'
type: integer
format: int32
examples:
- 60000
staffId:
description: The unique identifier for the staff member.
type: integer
format: int64
examples:
- 1234567890
accountProfileCode:
description: A valid order profile [code](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code) to associate with this order. See the [order profiles](https://api-portal.lsk.lightspeed.app/guides/definitions/order-profiles) definition for more details.
type: string
examples:
- TOGOORDER
scheduledTimeForOrderAsIso8601:
description: The time that the order will be sent to the POS. Must be in the future.
type: string
format: date-time
examples:
- '2024-04-04T09:42:00.000+00:00'
payment:
$ref: '#/components/schemas/apeOrderPayment'
collectionCode:
maxLength: 8
description: Unique collection code for this order. If left blank, one will be automatically generated.
type: string
examples:
- ABC-1234
orderCollectionTimeAsIso8601:
description: The expected collection time of the order. Must be in the future.
type: string
format: date-time
examples:
- '2024-04-04T09:42:00.000+00:00'
items:
type: array
items:
$ref: '#/components/schemas/apeToGoOrderItemLine'
deliveryAddress:
type: object
description: The address to which the order should be delivered.
properties:
addressLine1:
type: string
description: The first line of the street address.
addressLine2:
type: string
description: The second line of the street address (if applicable).
zip:
type: string
description: The postal code for the delivery address.
city:
type: string
description: The city in which the delivery address is located.
targetPrinterProfileId:
description: The printer profile id to use for printing the receipt for this payment. If not provided, the default active printer profile for the business location will be used.
type: integer
format: int64
examples:
- 1773881235
type: object
required: true
tags:
- Order and Pay
responses:
'200':
description: accepted
content:
application/json:
schema:
properties:
status:
description: The response.
type: string
examples:
- ok
type: object
'400':
description: Bad Request.
content:
application/json:
schema:
type: object
description: Response object for error code 400
properties:
timestamp:
type: string
format: date-time
description: The date and time at which the error occurred.
examples:
- 2023-11-07T19:15:05.043+0000
status:
type: integer
description: The HTTP status code of the error response.
examples:
- 400
error:
type: string
description: A brief title of the error status.
examples:
- Bad Request
message:
type: string
description: A message describing the nature of the error in detail.
examples:
- 'Validation failed for object=''toGoOrder''. Error count: 1'
errors:
type: array
description: An array of error details, outlining specific issues with the request.
items:
type: object
properties:
codes:
type: array
items:
type: string
description: A set of code strings that correspond to the validation error.
example:
- NotNull.toGoOrder.thirdPartyReference
- NotNull.thirdPartyReference
- NotNull.java.lang.String
- NotNull
arguments:
type: array
items:
type: object
properties:
codes:
type: array
items:
type: string
description: Argument codes that are related to the field in validation.
example:
- toGoOrder.thirdPartyReference
- thirdPartyReference
defaultMessage:
type: string
description: The default message associated with the failed validation.
example: thirdPartyReference
code:
type: string
description: A single code that represents the specific validation rule that was not satisfied.
example: thirdPartyReference
defaultMessage:
type: string
description: The default error message provided when the associated field fails validation.
example: must not be null
objectName:
type: string
description: The name of the object that failed validation.
example: toGoOrder
field:
type: string
description: The name of the field that failed validation.
example: thirdPartyReference
bindingFailure:
type: boolean
description: Indicates whether the error was a result of a binding failure.
example: false
code:
type: string
description: A code representing the specific type of validation error.
example: NotNull
path:
type: string
description: The path of the failed request.
examples:
- /o/op/1/order/toGo
'409':
description: Conflict
content:
'*/*':
schema:
properties:
status:
description: The request status.
type: string
examples:
- fail
msg:
description: A message describing the error.
type: string
examples:
- reference has already been used 123456789
type: object
security:
- OAuth2:
- orders-api
/o/op/1/order/table/getCheck:
get:
summary: Get All Open Checks
operationId: apeGetCheck
description: Returns all open orders for the current day.
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: query
required: true
responses:
'200':
description: All open orders for the current day.
content:
application/json:
schema:
items:
$ref: '#/components/schemas/apeAccountSnapshot'
type: array
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
timestamp:
type: string
format: date-time
description: The date and time at which the error occurred.
examples:
- 2023-11-07T22:18:49.101+0000
status:
type: integer
description: The HTTP status code associated with the error.
examples:
- 400
error:
type: string
description: A short description of the HTTP status code meaning.
examples:
- Bad Request
message:
type: string
description: A human-readable message providing more details about the error.
examples:
- Required request parameter 'businessLocationId' for method parameter type Long is not present
path:
type: string
description: The request path where the error occurred.
examples:
- /o/op/1/order/table/getCheck
security:
- OAuth2:
- orders-api
/o/op/1/order/table/{tableNumber}/getCheck:
get:
summary: Get Open Check by Table
operationId: apeCheckLookup
description: 'Returns an open order for a specific table.
Note: If more than one order is assigned to the table, the oldest order will be returned.'
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: query
required: true
- schema:
example: 1
description: The table [number](https://api-docs.lsk.lightspeed.app/operation/operation-apelookupfloorplans#operation-apelookupfloorplans-200-body-application-json-tables-number).
type: integer
format: int32
name: tableNumber
in: path
required: true
responses:
'200':
description: Check
content:
application/json:
schema:
$ref: '#/components/schemas/apeAccountSnapshot'
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
timestamp:
type: string
format: date-time
description: The date and time at which the error occurred.
examples:
- 2023-11-07T22:18:49.101+0000
status:
type: integer
description: The HTTP status code associated with the error.
examples:
- 404
error:
type: string
description: A short description of the HTTP status code meaning.
examples:
- Not Found
message:
type: string
description: A human-readable message providing more details about the error.
examples:
- account not found for BL 123456789
path:
type: string
description: The request path where the error occurred.
examples:
- /o/op/1/order/table/1/getCheck
security:
- OAuth2:
- orders-api
/o/op/1/order/accounts/{accountIdentifier}:
get:
summary: Get Single Check
operationId: apeCheckLookupWithaccountIdentifier
description: Returns a check based on the Account Identifier.
tags:
- Order and Pay
parameters:
- schema:
description: 'The ID of the account being requested.
(ex: A78094.69)'
example: A739800.52
type: string
name: accountIdentifier
in: path
required: true
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: query
required: true
responses:
'200':
description: The account requested.
content:
application/json:
schema:
$ref: '#/components/schemas/apeAccountSnapshot'
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
timestamp:
type: string
format: date-time
description: The date and time at which the error occurred.
examples:
- 2023-11-07T22:18:49.101+0000
status:
type: integer
description: The HTTP status code associated with the error.
examples:
- 400
error:
type: string
description: A short description of the HTTP status code meaning.
examples:
- Bad Request
message:
type: string
description: A human-readable message providing more details about the error.
examples:
- Invalid account identifier
path:
type: string
description: The request path where the error occurred.
examples:
- /o/op/1/order/accounts/-1
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
timestamp:
type: string
format: date-time
description: The date and time at which the error occurred.
examples:
- 2023-11-07T22:18:49.101+0000
status:
type: integer
description: The HTTP status code associated with the error.
examples:
- 404
error:
type: string
description: A short description of the HTTP status code meaning.
examples:
- Not Found
message:
type: string
description: A human-readable message providing more details about the error.
examples:
- account not found for BL 123456789
path:
type: string
description: The request path where the error occurred.
examples:
- /o/op/1/order/accounts/A78094.697/
security:
- OAuth2:
- orders-api
/o/op/1/pay:
post:
summary: Apply a Payment
operationId: apeMakePayment
description: Add a payment to an existing order.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/apeStandalonePayment'
required: true
tags:
- Order and Pay
responses:
'200':
description: accepted
content:
application/json:
schema:
$ref: '#/components/schemas/apePaymentSubmissionResponse'
'400':
description: Bad Request
content:
'*/*':
schema:
$ref: '#/components/schemas/apePaymentBadRequestError'
security:
- OAuth2:
- orders-api
/o/op/1/printMsg:
post:
summary: Print Message
operationId: apePrintMsg
description: Send a message to the POS. Generates a notification on the register screen. Can also be sent to the printer.
If the POS is offline, the message will be stored for up to 24h and sent when the POS comes online.
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: query
required: true
requestBody:
content:
application/json:
schema:
properties:
message:
description: The message to be printed.
type: string
examples:
- The Print Message
alsoToPrinter:
description: Print on the receipt printer as well as till (highly recommended).
type: boolean
examples:
- true
type: object
required:
- message
required: true
responses:
'200':
description: accepted
content:
application/json:
schema:
properties:
status:
description: The response.
type: string
examples:
- ok
type: object
security:
- OAuth2:
- orders-api
/o/op/1/itemAvailability:
get:
summary: Get Item Availability Information
description: Returns item availability information, by business location and SKUs.
operationId: apeGetRestrictedItems
tags:
- Order and Pay
security:
- OAuth2:
- orders-api
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: query
required: true
- name: skus
in: query
description: List of SKUs to return.
required: true
schema:
type: array
items:
type: string
example: SKU1
maxItems: 50
minItems: 1
- name: page
in: query
description: Starting page of results, when paginating. Starts at 0.
required: false
schema:
minimum: 0
type: integer
format: int32
default: 0
example: 0
- name: size
in: query
description: Number of results to return, when paginating.
required: false
schema:
maximum: 50
minimum: 1
type: integer
format: int32
default: 25
example: 25
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/apeRestrictedItemPaginatedResponse'
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
timestamp:
type: string
format: date-time
description: The date and time at which the error occurred.
examples:
- '2023-11-07T22:18:49.101Z'
status:
type: integer
description: The HTTP status code associated with the error.
examples:
- 400
error:
type: string
description: A short description of the HTTP status code meaning.
examples:
- Bad Request
message:
type: string
description: A human-readable message providing more details about the error.
examples:
- Required request parameter 'businessLocationId' for method parameter type Long is not present
path:
type: string
description: The request path where the error occurred.
examples:
- /o/op/1/itemAvailability
post:
summary: Get Item Availability Information by POST
description: Returns item availability information filtered by business location and SKUs. The list of SKUs must be provided in the request body.
operationId: apeGetRestrictedItemsByPost
tags:
- Order and Pay
security:
- OAuth2:
- orders-api
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: query
required: true
- name: page
in: query
description: Starting page of results, when paginating. Starts at 0.
required: false
schema:
minimum: 0
type: integer
format: int32
default: 0
example: 0
- name: size
in: query
description: Number of results to return, when paginating.
required: false
schema:
maximum: 100
minimum: 1
type: integer
format: int32
default: 25
example: 25
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/apeSkusRequest'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/apeRestrictedItemPaginatedResponse'
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
timestamp:
type: string
format: date-time
description: The date and time at which the error occurred.
examples:
- '2023-11-07T22:18:49.101Z'
status:
type: integer
description: The HTTP status code associated with the error.
examples:
- 400
error:
type: string
description: A short description of the HTTP status code meaning.
examples:
- Bad Request
message:
type: string
description: A human-readable message providing more details about the error.
examples:
- Required request parameter 'businessLocationId' for method parameter type Long is not present
path:
type: string
description: The request path where the error occurred.
examples:
- /o/op/1/itemAvailability
/o/op/1/onlineOrderReadiness:
get:
summary: Get the readiness status for accepting Online Orders
description: Returns the status of the Online Order readiness for a specific business location id. See the [Online Order Readiness guide](https://api-portal.lsk.lightspeed.app/guides/integration-guides/online-ordering/online-order-readiness/online-order-readiness-setup) for setup and webhook integration details.
operationId: apeGetOnlineOrderReadiness
tags:
- Order and Pay
security:
- OAuth2:
- orders-api
parameters:
- name: businessLocationId
in: query
description: The unique identifier for the business location
required: true
schema:
type: integer
format: int64
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/apeOrderApiReadinessDto'
example:
status: READY
lastUpdatedAt: '2025-12-11T07:27:47.407Z'
onlineOrderingApiConfiguration:
enabled: true
orderProfileId: 123456
staffId: 789012
posStatus:
salesPeriod: OPENED
acceptingOnlineOrders: true
availableDevices: true
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
timestamp:
type: string
format: date-time
description: The date and time at which the error occurred.
examples:
- '2023-11-07T22:18:49.101Z'
status:
type: integer
description: The HTTP status code associated with the error.
examples:
- 400
error:
type: string
description: A short description of the HTTP status code meaning.
examples:
- Bad Request
message:
type: string
description: A human-readable message providing more details about the error.
examples:
- Required request parameter 'businessLocationId' for method parameter type Long is not present
path:
type: string
description: The request path where the error occurred.
examples:
- /o/op/1/onlineOrderReadiness
webhooks:
apeOrder notification:
post:
summary: Order Notification
operationId: onlineOrderNotification
description: What your webhook implementation will receive when placing an order
tags:
- Order and Pay
requestBody:
content:
application/json:
examples:
successfulWithoutAccountInfo:
summary: successful
value:
status: SUCCESS
ikentooAccountId: '2114502594134196'
ikentooAccountIdentifier: A123080.14
thirdPartyReference: REF11
type: ORDER
readyForPickUp:
summary: ready for pickup
value:
thirdPartyReference: order-wFUBVgHNGPAJsryIrSaE
businessLocationId: 247158188015618
status: READY_FOR_PICKUP
account:
clientCount: 2
uuid: 5a81c7f4-9e2f-4db2-965d-6946a4f9c25b
openDate: 2021-12-21T13:24:49.265+0000
paidAmount: '4.00'
serviceCharge: '0.00'
name: Order NZVV
currentAmount: '4.00'
staffName: Manager
staffId: 31930
salesEntries:
- id: 304087979524125
itemName: Appetizer 2
itemSku: '21'
unitAmount: '4.00'
quantity: 1
modifiers: []
amountWithTax: '4.00'
amountLessTax: '3.33'
discountedAmount: '0.00'
grossUnitAmount: '4.00'
active: true
taxIncluded: true
paymentEntries:
- paymentMethodDescription: API Payment
externalReference: '1234567890'
paymentMethodCode: APM
amountPaid: '4.00'
paymentDate: 2021-12-21T13:25:25.082+0000
active: true
ikaccountId: A17700.3
tableNumber: 3
posId: 17700
ikentooAccountId: 304087979524124
ikentooAccountIdentifier: A17700.3
type: ORDER
failure:
summary: failure
value:
status: FAILURE
reason: A consumer already exists for this email address with a different external reference.
thirdPartyReference: REF12212
succesfulWithAccount:
summary: successful with account info
value:
thirdPartyReference: order-wFUBVgHNGPAJsryIrSaE
businessLocationId: 247158188015618
status: SUCCESS
account:
clientCount: 2
uuid: 5a81c7f4-9e2f-4db2-965d-6946a4f9c25b
openDate: 2021-12-21T13:24:49.265+0000
paidAmount: '0.00'
serviceCharge: '0.00'
name: Order NZVV
currentAmount: '4.00'
staffName: Online Order
staffId: 31930
salesEntries:
- id: 304087979524125
uuid: 1b8d016e-2c7f-456d-9349-8476eacd99bf
itemName: Appetizer 2
itemSku: '21'
unitAmount: '4.00'
quantity: 1
modifiers: []
amountWithTax: '4.00'
amountLessTax: '3.33'
discountedAmount: '0.00'
grossUnitAmount: '4.00'
timeOfTransactionUtc: 2023-11-08T13:33:52.641+0000
active: true
subLineItems: []
taxIncluded: true
paymentEntries: []
ikaccountId: A17700.3
tableNumber: 3
posId: 17700
ikentooAccountId: 304087979524124
ikentooAccountIdentifier: A17700.3
type: ORDER
checkWasUpdated:
summary: check was updated
value:
thirdPartyReference: order-wFUBVgHNGPAJsryIrSaE
businessLocationId: 247158188015618
status: CHECK_WAS_UPDATED
account:
clientCount: 2
uuid: 5a81c7f4-9e2f-4db2-965d-6946a4f9c25b
openDate: 2021-12-21T13:24:49.265+0000
paidAmount: '4.00'
serviceCharge: '0.00'
name: Order NZVV
currentAmount: '4.00'
staffName: Manager
staffId: 31930
salesEntries:
- id: 304087979524125
itemName: Appetizer 2
itemSku: '21'
unitAmount: '4.00'
quantity: 1
modifiers: []
amountWithTax: '4.00'
amountLessTax: '3.33'
discountedAmount: '0.00'
grossUnitAmount: '4.00'
active: true
taxIncluded: true
paymentEntries:
- paymentMethodDescription: API Payment
externalReference: '1234567890'
paymentMethodCode: APM
amountPaid: '4.00'
paymentDate: 2021-12-21T13:25:25.082+0000
active: true
ikaccountId: A17700.3
tableNumber: 3
posId: 17700
ikentooAccountId: 304087979524124
ikentooAccountIdentifier: A17700.3
type: ORDER
closed:
summary: closed
value:
thirdPartyReference: order-wFUBVgHNGPAJsryIrSaE
businessLocationId: 247158188015618
status: CLOSED
account:
clientCount: 2
uuid: 5a81c7f4-9e2f-4db2-965d-6946a4f9c25b
openDate: 2021-12-21T13:24:49.265+0000
paidAmount: '4.00'
serviceCharge: '0.00'
name: Order NZVV
currentAmount: '4.00'
staffName: Manager
staffId: 31930
salesEntries:
- id: 304087979524125
itemName: Appetizer 2
itemSku: '21'
unitAmount: '4.00'
quantity: 1
modifiers: []
amountWithTax: '4.00'
amountLessTax: '3.33'
discountedAmount: '0.00'
grossUnitAmount: '4.00'
active: true
taxIncluded: true
paymentEntries:
- paymentMethodDescription: API Payment
externalReference: '1234567890'
paymentMethodCode: APM
amountPaid: '4.00'
paymentDate: 2021-12-21T13:25:25.082+0000
active: true
ikaccountId: A17700.3
tableNumber: 3
posId: 17700
ikentooAccountId: 304087979524124
ikentooAccountIdentifier: A17700.3
type: ORDER
schema:
allOf:
- $ref: '#/components/schemas/apeBaseWebhookInformation'
- properties:
status:
enum:
- SUCCESS
- FAILURE
- IN_DELIVERY
- READY_FOR_PICKUP
- CLOSED
- ABANDONED
- CANCELLED
description: Status of the order operation.
type: string
type:
description: Notification type
default: ORDER
type: string
account:
allOf:
- description: Related account (if the webhook is configured to provide it)
- $ref: '#/components/schemas/apeAccountSnapshot'
type: object
required: true
responses:
'200':
description: Your server returns this code if it accepts the callback
apePayment notification:
post:
summary: Payment Notification
operationId: onlinePaymentNotification
description: What your webhook implementation will receive when placing a payment
tags:
- Order and Pay
requestBody:
content:
application/json:
examples:
successfulPayment:
summary: successful
value:
thirdPartyReference: REF11
businessLocationId: 247158188015618
status: SUCCESS
ikentooAccountId: '2114502594134196'
ikentooAccountIdentifier: A123080.14
type: PAYMENT
failurePayment:
summary: failure
value:
reason: the payment amount is greater than the amount due
thirdPartyReference: REF12212
businessLocationId: 141948669832802
status: FAILURE
ikentooAccountIdentifier: A78094.73
type: PAYMENT
failurePaymentAccountError:
summary: failure with account error
value:
reason: Account not found
thirdPartyReference: REF12213
businessLocationId: 141948669832802
status: FAILURE
errors:
account:
type: ACCOUNT_NOT_FOUND
type: PAYMENT
schema:
allOf:
- $ref: '#/components/schemas/apeBaseWebhookInformation'
- properties:
status:
enum:
- SUCCESS
- FAILURE
description: Status of the order or payment operation.
type: string
errors:
description: Error details when status is FAILURE.
type: object
properties:
timeout:
description: Timeout error details.
type: object
properties:
errorKey:
type: string
example: errors.payment.pos.task_timeout
message:
type: string
example: Not processed before validity ended
account:
description: Account error details.
type: object
properties:
type:
type: string
enum:
- ACCOUNT_NOT_FOUND
- ACCOUNT_ALREADY_CLOSED
- INVALID_TASK
- ITEM_NOT_ADDED
- ITEM_NOT_FOUND
- MISSING_STAFF
- NATIVE_PAYMENT_NOT_SUPPORTED
- OVERPAID
- PAYMENT_ID_NOT_FOUND
- PAYMENT_METHOD_NOT_FOUND
- STAFF_NOT_FOUND
- UPDATE_FAILED
- UNKNOWN
example: ACCOUNT_NOT_FOUND
type:
description: Notification type
default: PAYMENT
type: string
type: object
required: true
responses:
'200':
description: Your server returns this code if it accepts the callback
apeItem availability notification:
post:
summary: Item Availability Notification
operationId: salesRestrictionUpdatedNotification
description: What your webhook implementation will receive when item sales restrictions are updated
tags:
- Order and Pay
requestBody:
content:
application/json:
examples:
itemRestricted:
summary: item restricted
value:
sku: UGG-BB-PUR-06
businessLocationId: 247158188015618
count: 5
countUpdatedAt: '2024-04-04T09:42:00.000+00:00'
status: RESTRICTED
type: ITEM
itemNotRestricted:
summary: item not restricted
value:
sku: UGG-BB-PUR-06
businessLocationId: 247158188015618
count: null
countUpdatedAt: '2024-04-04T09:42:00.000+00:00'
status: NOT_RESTRICTED
type: ITEM
schema:
type: object
properties:
sku:
type: string
description: The SKU of the item with updated availability
examples:
- UGG-BB-PUR-06
businessLocationId:
$ref: '#/components/schemas/apeBusinessLocationId'
count:
type:
- integer
- 'null'
format: int64
description: The available count of the item. null indicates no restriction
examples:
- 5
countUpdatedAt:
type: string
format: date-time
description: The timestamp when the count was last updated
examples:
- '2024-04-04T09:42:00.000+00:00'
status:
type: string
enum:
- RESTRICTED
- NOT_RESTRICTED
description: The restriction status of the item
examples:
- RESTRICTED
type:
type: string
description: Notification type
default: ITEM
examples:
- ITEM
required:
- sku
- businessLocationId
- countUpdatedAt
- status
- type
required: true
responses:
'200':
description: Your server returns this code if it accepts the callback
apeOnline Ordering API Readiness notification:
post:
summary: Online Ordering API Readiness Notification
operationId: onlineOrderingReadinessUpdatedNotification
description: What your webhook implementation will receive when online ordering API readiness is updated. See the [Online Order Readiness guide](https://api-portal.lsk.lightspeed.app/guides/integration-guides/online-ordering/online-order-readiness/online-order-readiness-setup) for setup and integration details.
tags:
- Order and Pay
requestBody:
content:
application/json:
examples:
onlineOrderingAPIReady:
summary: Online Ordering API ready
value:
businessLocationId: 247158188015618
lastUpdatedAt: '2025-10-04T09:40:00.000+00:00'
status: READY
type: ORDER_API
onlineOrderingApiConfiguration:
enabled: true
orderProfileId: 25769803781
staffId: 3
posStatus:
salesPeriod: OPENED
acceptingOnlineOrders: true
availableDevices: true
onlineOrderingAPINotReady:
summary: Online Ordering API not ready
value:
businessLocationId: 247158188015618
lastUpdatedAt: '2025-10-04T09:40:00.000+00:00'
status: NOT_READY
type: ORDER_API
onlineOrderingApiConfiguration:
enabled: false
orderProfileId: null
staffId: null
posStatus:
salesPeriod: CLOSED
acceptingOnlineOrders: false
availableDevices: false
schema:
type: object
properties:
businessLocationId:
$ref: '#/components/schemas/apeBusinessLocationId'
lastUpdatedAt:
type: string
format: date-time
description: The timestamp when the online order readiness was last updated
examples:
- '2025-10-04T09:40:00.000+00:00'
status:
type: string
enum:
- READY
- NOT_READY
description: The readiness status of the online ordering api
examples:
- READY
type:
type: string
description: Notification type
default: ORDER_API
examples:
- ORDER_API
onlineOrderingApiConfiguration:
type: object
properties:
enabled:
type: boolean
example: true
orderProfileId:
oneOf:
- type: integer
format: int64
example: 25769803781
- type: 'null'
description: Order Profile id
staffId:
oneOf:
- type: integer
format: int64
example: 3
- type: 'null'
description: Staff id
required:
- enabled
- staffId
- orderProfileId
posStatus:
type: object
properties:
salesPeriod:
type: string
enum:
- OPENED
- CLOSED
example: OPENED
acceptingOnlineOrders:
type: boolean
example: true
availableDevices:
type: boolean
example: true
required:
- salesPeriod
- acceptingOnlineOrders
- availableDevices
required:
- businessLocationId
- lastUpdatedAt
- status
- type
- posStatus
- onlineOrderingApiConfiguration
required: true
responses:
'200':
description: Your server returns this code if it accepts the callback
components:
schemas:
apeToGoOrderItemLine:
properties:
quantity:
example: 1
description: Quantity of item to be ordered.
type: integer
format: int32
sku:
example: UGG-BB-PUR-06
maxLength: 25
description: The SKU of the item to be ordered.
type: string
customItemName:
example: My Custom Item Name
description: The custom name to be used, if overwriting is permitted for this item.
type: string
customItemPrice:
example: 10.0
description: The custom price to be used, if custom pricing is permitted for this item.
type: number
discountAmountOverride:
description: The custom discount amount applied to this item. Only one of `discountAmountOverride` or `discountPercentOverride` can be set.
type: number
example: 5.0
discountPercentOverride:
description: The custom percentage discount applied to this item. Only one of `discountAmountOverride` or `discountPercentOverride` can be set.
type: number
example: 10.0
modifiers:
description: Collection of [modifiers](https://api-docs.lsk.lightspeed.app/operation/operation-apeloadallmodifiers) to be applied to this item.
type: array
items:
$ref: '#/components/schemas/apeItemModifier'
discountCode:
example: FIVEPERCENT
description: The discount code being applied to this item, if applicable.
type: string
subItems:
type: array
items:
$ref: '#/components/schemas/apeSubItemOrderLine'
type: object
required:
- quantity
- sku
apeAccountProfile:
properties:
id:
format: int64
type: integer
description: The unique identifier for the order profile.
example: 12454575601144
code:
type: string
description: A short code representing the order profile.
example: takeaway
name:
type: string
example: Takeaway
description: The system display name for the order profile.
deliveryMode:
enum:
- NONE
- TAKE_AWAY
- DELIVERY
type: string
example: TAKE_AWAY
description: Specifies the delivery mode for the order profile.
type: object
apeBusinessLocationId:
description: The unique identifier for the business location.
type: integer
format: int64
example: 45454565682155
apeMenuItemEntryParentV2:
properties:
productName:
type: string
description: The name of the item.
example: Burger
productPrice:
type: number
description: The price of the item.
example: 10.0
extraPrice:
type: number
description: Additional item price when selected in a combo group.
example: 1.99
color:
type: string
description: The color of the menu button for this item.
example: blue
sku:
type: string
description: The SKU of the item.
example: '25'
customItemNameEnabled:
type: boolean
description: Whether the name of the item can be customized.
example: false
pricingStrategy:
type: string
description: The pricing type of the item.
example: PRICE_CANNOT_BE_CUSTOMIZED
enum:
- CUSTOMIZED_ITEM_PRICE_WILL_BE_NEGATIVE
- CUSTOMIZED_ITEM_PRICE_WILL_BE_POSTIVE
- CUSTOMIZED_ITEM_PRICE_WILL_BE_A_PERCENTAGE_OF_TOTAL
- PRICE_CANNOT_BE_CUSTOMIZED
itemRichData:
$ref: '#/components/schemas/apeItemRichData'
defaultTaxAmount:
description: The tax amount as calculated at the default tax rate (a sum for multiple taxes).
type: number
example: 1.5
defaultTaxPercentage:
description: The default tax percentage for this item (a sum for multiple taxes).
type: number
example: 15.0
taxIncludedInPrice:
description: Whether or not tax is included in the price of the item.
type: boolean
example: false
conditionalTaxRules:
description: Warning that actual tax depends on a POS Account condition and may be different from what is provided in this API.
type: boolean
taxes:
description: Detailed tax info
items:
$ref: '#/components/schemas/apeMenuItemTax'
type: array
apeItemModifier:
properties:
modifierId:
example: '236025632784492'
description: Modifier ID to be applied to this item.
type: string
type: object
apeMenuDealGroup:
type: object
properties:
description:
type: string
description: Description of the combo item grouping.
example: Side Dishes
sku:
type: string
description: The SKU of the combo item grouping.
example: '25'
mustSelectAnItem:
type: boolean
description: Whether or not this is a required selection.
example: true
multiSelectionPermitted:
type: boolean
description: Whether or not multiple items can be selected from this item grouping.
example: true
minimumSelection:
type: integer
format: int32
description: The minimum number of items that must be selected from this item grouping. If null then no minimum is set.
example: 1
maximumSelection:
type: integer
format: int32
description: The maximum number of items that can be selected from this item grouping. If null then no maximum is set.
example: 3
itemRichData:
$ref: '#/components/schemas/apeItemRichData'
items:
description: List of items to select from.
type: array
items:
$ref: '#/components/schemas/apeMenuItemEntry'
description: Collections of item groups within the combo to select from.
apeRestrictedItem:
type: object
properties:
sku:
type: string
description: The SKU assigned to the item.
example: SKU1
count:
type: integer
description: The count of available items.
format: int64
example: 50
updatedAt:
type: string
format: date-time
description: The last update of the item count.
example: '2025-07-08T14:20:00Z'
apeMenuDealEntry:
title: menuDeal
allOf:
- type: object
properties:
'@type':
type: string
description: Indicates the item is a Combo.
example: menuDeal
enum:
- menuDeal
items:
description: List of items to select from.
type: array
items:
$ref: '#/components/schemas/apeMenuItemEntry'
menuDealGroups:
type: array
description: Array of Items in the Combo
items:
$ref: '#/components/schemas/apeMenuDealGroup'
- $ref: '#/components/schemas/apeMenuItemEntryParent'
apeTopLevelMenuGroupEntryV2:
allOf:
- type: object
properties:
'@type':
type: string
description: Indicates this is a menu group.
example: group
enum:
- group
id:
type: string
description: The menu group ID.
example: '141948669133028'
name:
type: string
description: The menu group name.
example: Mains
color:
type: string
description: The color of the button in the POS.
example: blue
menuEntry:
type: array
description: Array of menu entry objects.
items:
type: object
oneOf:
- $ref: '#/components/schemas/apeMenuItemEntryV2'
- $ref: '#/components/schemas/apeMenuDealEntryV2'
- $ref: '#/components/schemas/apeMenuGroupEntryV2'
- $ref: '#/components/schemas/apeMenuProductModifierEntryV2'
discriminator:
propertyName: '@type'
mapping:
menuItem: '#/components/schemas/apeMenuItemEntryV2'
menuDeal: '#/components/schemas/apeMenuDealEntryV2'
group: '#/components/schemas/apeMenuGroupEntryV2'
menuProductModifier: '#/components/schemas/apeMenuProductModifierEntryV2'
apeMenuItemEntry:
title: menuItem
allOf:
- type: object
properties:
'@type':
type: string
description: Indicates this is an individual item.
example: menuItem
enum:
- menuItem
- $ref: '#/components/schemas/apeMenuItemEntryParent'
- type: object
properties:
asSubItem:
type: boolean
description: Indicates whether or not this product is a sub-item that cannot be sold alone. Note - when the item is nested under a `menuDeal` this will always be false.
productionInstructionList:
type: array
description: Array of production instructions for this product
items:
$ref: '#/components/schemas/apeProductionInstruction'
example:
- multiSelectionPermitted: false
productionInstructionGroupName: Meat cooking
productionIntructionGroupId: 236025632784487
productionInstructionList:
- instruction: Bleu
ikentooModifierId: 236025632784488
- instruction: Rare
ikentooModifierId: 236025632784490
- instruction: Medium Rare
ikentooModifierId: 236025632784492
- instruction: Medium
ikentooModifierId: 236025632784494
- instruction: Medium well
ikentooModifierId: 236025632784496
- instruction: Well done
ikentooModifierId: 236025632784498
apeMenuItemEntryV2:
title: menuItem
allOf:
- type: object
properties:
'@type':
type: string
description: Indicates this is an individual item.
example: menuItem
enum:
- menuItem
- $ref: '#/components/schemas/apeMenuItemEntryParentV2'
- type: object
properties:
asSubItem:
type: boolean
description: Indicates whether or not this product is a sub-item that cannot be sold alone. Note - when the item is nested under a `menuDeal` this will always be false.
productionInstructionList:
type: array
description: Array of production instructions for this product
items:
$ref: '#/components/schemas/apeProductionInstruction'
example:
- multiSelectionPermitted: false
productionInstructionGroupName: Meat cooking
productionIntructionGroupId: 236025632784487
productionInstructionList:
- instruction: Bleu
ikentooModifierId: 236025632784488
- instruction: Rare
ikentooModifierId: 236025632784490
- instruction: Medium Rare
ikentooModifierId: 236025632784492
- instruction: Medium
ikentooModifierId: 236025632784494
- instruction: Medium well
ikentooModifierId: 236025632784496
- instruction: Well done
ikentooModifierId: 236025632784498
menuModifierGroups:
type: array
description: Array of product modifier groups for this product
items:
$ref: '#/components/schemas/apeMenuModifierGroupV2'
apeTagCode:
description: The order profile [code](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code).
type: string
example: DELIVERY
apeMenuProductModifierEntryV2:
title: menuProductModifier
allOf:
- type: object
properties:
'@type':
type: string
description: Indicates this is a product modifier.
example: menuProductModifier
enum:
- menuProductModifier
- $ref: '#/components/schemas/apeMenuItemEntryParentV2'
- type: object
properties:
productionInstructionList:
type: array
description: Array of production instructions for this modifier
items:
$ref: '#/components/schemas/apeProductionInstruction'
example:
- multiSelectionPermitted: false
productionInstructionGroupName: Meat cooking
productionIntructionGroupId: 236025632784487
productionInstructionList:
- instruction: Bleu
ikentooModifierId: 236025632784488
- instruction: Rare
ikentooModifierId: 236025632784490
- instruction: Medium Rare
ikentooModifierId: 236025632784492
- instruction: Medium
ikentooModifierId: 236025632784494
- instruction: Medium well
ikentooModifierId: 236025632784496
- instruction: Well done
ikentooModifierId: 236025632784498
apeTopLevelMenuGroupEntry:
allOf:
- type: object
properties:
'@type':
type: string
description: Indicates this is a menu group, which represents a menu screen in the POS.
example: group
enum:
- group
- type: object
properties:
id:
type: string
description: The menu group ID.
example: '141948669133028'
name:
type: string
description: The menu group name.
example: Mains
color:
type: string
description: The color of the button in the POS.
example: blue
menuEntry:
type: array
description: Array of menu entry objects.
items:
type: object
oneOf:
- $ref: '#/components/schemas/apeMenuItemEntry'
- $ref: '#/components/schemas/apeMenuDealEntry'
- $ref: '#/components/schemas/apeMenuGroupEntry'
discriminator:
propertyName: '@type'
mapping:
menuItem: '#/components/schemas/apeMenuItemEntry'
menuDeal: '#/components/schemas/apeMenuDealEntry'
group: '#/components/schemas/apeMenuGroupEntry'
apeAccountSnapshot:
type: object
properties:
clientCount:
type: integer
format: int32
description: The number of guests at the table.
example: 4
identifier:
type: string
deprecated: true
uuid:
type: string
description: The account uuid.
example: a3bb189e-8f29-4cce-b0e9-f29b123dfe3d
openDate:
type: string
format: date-time
description: The date this account was opened in UTC.
example: '2021-06-21T14:20:00Z'
closeDate:
type: string
format: date-time
description: The date this account was closed in UTC.
example: '2021-06-22T10:15:00Z'
paidAmount:
type: number
description: The total of all payments on the check.
example: 100.0
serviceCharge:
type: number
description: The service charge applied to the check.
example: 10.0
name:
type: string
description: The check name.
example: ORDER A1C2E
currentAmount:
type: number
description: The current total amount on the check.
example: 110.0
staffName:
type: string
description: The name of the staff member assigned to the check.
example: Jane Smith
staffId:
type: integer
format: int64
description: The unique ID of the staff member assigned to the check.
example: 7701234
salesEntries:
type: array
description: Collection of check items.
items:
$ref: '#/components/schemas/apeAccountLineItem'
paymentEntries:
type: array
description: Collection of payment entries to the check.
items:
$ref: '#/components/schemas/apeAccountPaymentLine'
id:
type: string
deprecated: true
ikaccountId:
type: string
description: The system-generated account identifier for this check.(Applies to iKentoo V3+).
example: A78094.48
number:
type: integer
format: int32
deprecated: true
tableNumber:
type: integer
format: int32
description: The table number assigned to the check.
example: 2
posId:
type: integer
format: int64
description: The unique ID of the POS station that processed the check.
example: 54321
deviceId:
type: integer
format: int64
deprecated: true
apeBaseWebhookInformation:
type: object
properties:
reason:
description: Reason for failure if applicable.
type: string
thirdPartyReference:
description: Third-party reference you provided when the order or payment was placed.
type: string
businessLocationId:
$ref: '#/components/schemas/apeBusinessLocationId'
ikentooAccountIdentifier:
description: The K-series account identifier for a SUCCESS event (V3 format)
type: string
iKentooAccountId:
description: The K-series account identifier for a SUCCESS event (V2 format)
deprecated: true
type: integer
format: int64
apeOrderApiPosStatusDto:
type: object
properties:
salesPeriod:
description: Sales period status for the location
type: string
enum:
- OPENED
- CLOSED
acceptingOnlineOrders:
type: boolean
description: A flag indicating if a POS in the location has the option `Online Orders enabled` in `Control center`
availableDevices:
type: boolean
description: A flag indicating if the location has devices running for accepting and processing online orders
apeMenuModifierGroupV2:
type: object
description: A product modifier group containing product modifiers to select from.
properties:
description:
type: string
description: Description of the modifier group.
example: Milk options
sku:
type: string
description: The SKU of the modifier group.
example: '30'
mustSelectAnItem:
type: boolean
description: Whether or not this is a required selection.
example: false
multiSelectionPermitted:
type: boolean
description: Whether or not multiple items can be selected from this modifier group.
example: false
minimumSelection:
type: integer
format: int32
description: The minimum number of items that must be selected from this modifier group. If null then no minimum is set.
example: 0
maximumSelection:
type: integer
format: int32
description: The maximum number of items that can be selected from this modifier group. If null then no maximum is set.
example: 2
itemRichData:
$ref: '#/components/schemas/apeItemRichData'
productModifiers:
description: Array of product modifiers within this modifier group.
type: array
items:
$ref: '#/components/schemas/apeMenuProductModifierEntryV2'
apePaymentBadRequestError:
description: Standard error payload returned for a rejected payment request.
type: object
properties:
timestamp:
type: string
format: date-time
description: The date and time at which the error occurred, in UTC.
example: 2023-11-07T23:00:20.075+0000
status:
type: integer
description: The HTTP status code indicating the type of error.
example: 400
error:
type: string
description: A short description of the HTTP status code meaning.
example: Bad Request
message:
type: string
description: A detailed message describing the error, including any specific details about the request that led to the error.
example: reference has already been used 12345678901234
path:
type: string
description: The request path where the error occurred.
example: /o/op/1/pay
apeMenuItemEntryParent:
properties:
productName:
type: string
description: The name of the item.
example: Burger
productPrice:
type: number
description: The price of the item.
example: 10.0
extraPrice:
type: number
description: Additional item price when selected in a combo group.
example: 1.99
color:
type: string
description: The color of the menu button for this item.
example: blue
sku:
type: string
description: The SKU of the item.
example: '25'
customItemNameEnabled:
type: boolean
description: Whether the name of the item can be customized.
example: false
pricingStrategy:
type: string
description: The pricing type of the item.
example: PRICE_CANNOT_BE_CUSTOMIZED
enum:
- CUSTOMIZED_ITEM_PRICE_WILL_BE_NEGATIVE
- CUSTOMIZED_ITEM_PRICE_WILL_BE_POSTIVE
- CUSTOMIZED_ITEM_PRICE_WILL_BE_A_PERCENTAGE_OF_TOTAL
- PRICE_CANNOT_BE_CUSTOMIZED
itemRichData:
$ref: '#/components/schemas/apeItemRichData'
defaultTaxAmount:
description: The tax amount as calculated at the default tax rate (a sum for multiple taxes).
type: number
example: 1.5
defaultTaxPercentage:
description: The default tax percentage for this item (a sum for multiple taxes).
type: number
example: 15.0
taxIncludedInPrice:
description: Whether or not tax is included in the price of the item.
type: boolean
example: false
conditionalTaxRules:
description: Warning that actual tax depends on a POS Account condition and may be different from what is provided in this API.
type: boolean
taxes:
description: Detailed tax info
items:
$ref: '#/components/schemas/apeMenuItemTax'
type: array
apeDiscount:
type: object
properties:
name:
type: string
description: The discount name as configured in merchant account.
example: Staff Discount
code:
type: string
description: The discount code as configured in merchant account.
example: STAFF
discountPercentage:
type: number
description: The discount percentage, may be fractional. A discount can be a percentage or an amount, but not both.
example: 15
discountAmount:
type: number
description: The discount amount, may be fractional. A discount can be a percentage or an amount, but not both.
example: 5
apeItemRichData:
type: object
properties:
squareImageUrl:
description: A download link for the image associated with this item, as formatted for display in the POS.
type: string
example: http://s3-eu-west-1.amazonaws.com/com.ikentoo.trial.rich-content-store/8262_2f6c1716-0f06-488c-afc2-d888666d94fb.image/png
rawImageUrl:
description: A download link for the image associated with this item.
type: string
example: http://s3-eu-west-1.amazonaws.com/com.ikentoo.trial.rich-content-store/8262_2f6c1716-0f06-488c-afc2-d888666d94fb_raw.image/png
previewImageUrl:
description: A download link for the preview image associated with this item.
type: string
example: http://s3-eu-west-1.amazonaws.com/com.ikentoo.trial.rich-content-store/8262_2f6c1716-0f06-488c-afc2-d888666d94fb_preview.image/png
containsAlcohol:
description: Flag to indicate if the item contains alcohol.
type: boolean
example: true
alcoholPercentage:
description: The percentage of alcohol in the item.
type: number
example: 13.0
texts:
type: array
items:
$ref: '#/components/schemas/apeItemTexts'
allergenCodes:
description: The allergen codes associated with this item.
example:
- mustard
- cereals
uniqueItems: true
type: array
items:
type: string
apePaginatedMetadata:
type: object
properties:
warnings:
description: A list of warnings that occurred during the request, but which did not prevent a successful response. For instance, if the Business Location does not have the required POS app version to support item availability.
type: array
items:
$ref: '#/components/schemas/apeCurrentWarning'
current:
$ref: '#/components/schemas/apeCurrentInfo'
total:
type: integer
format: int32
example: 1
description: Total number of items requested.
totalPages:
type: integer
format: int32
example: 10
description: Total number of pages of items.
apeMenuDealEntryV2:
title: menuDeal
allOf:
- type: object
properties:
'@type':
type: string
description: Indicates the item is a Combo.
example: menuDeal
enum:
- menuDeal
items:
description: List of items to select from.
type: array
items:
$ref: '#/components/schemas/apeMenuItemEntryV2'
menuDealGroups:
type: array
description: Array of Items in the Combo
items:
$ref: '#/components/schemas/apeMenuDealGroupV2'
- $ref: '#/components/schemas/apeMenuItemEntryParentV2'
apeRestrictedItemPaginatedResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/apeRestrictedItem'
metadata:
$ref: '#/components/schemas/apePaginatedMetadata'
apeTable:
description: The tables under this floorplan.
properties:
number:
description: The table number.
format: int32
type: integer
example: 1
reference:
description: The table reference.
type: string
example: abcdefg123456
id:
description: The unique identifier for this table.
type: string
example: '141948669132977'
active:
description: If the table is active.
type: boolean
example: true
description:
description: The table description.
type: string
example: Table 1
defaultClientCount:
description: The default client count for this table.
format: int32
type: integer
example: 4
type: object
apeFloorPlanId:
type: integer
format: int64
example: 45454565682155
description: The unique identifier for the floor plan. See [Get Floorplans](https://api-docs.lsk.lightspeed.app/operation/operation-apelookupfloorplans)
apeOrderPayment:
required:
- paymentAmount
properties:
paymentMethod:
example: OOPAYMENT
description: Payment method code as configured by the merchant.
type: string
paymentAmount:
example: 14.0
description: The total amount of the payment including tips if any.
type: number
tipAmount:
example: 2.0
description: The tip amount, if any.
type: number
type: object
apeModifier:
type: object
properties:
name:
example: Rare
description: The name of the modifier.
type: string
quantity:
example: 1
description: The quantity of the modifier.
type: integer
format: int32
description: The modifiers of the item for this sale line
apeAccountProfiles:
properties:
businessLocationId:
$ref: '#/components/schemas/apeBusinessLocationId'
accountProfileList:
items:
$ref: '#/components/schemas/apeAccountProfile'
type: array
type: object
apeMenu:
properties:
menuName:
description: The name of the menu.
type: string
example: Main Menu
menuEntryGroups:
description: 'Menu groups of this menu. The top-level entry will always be of type "group", representing a menu screen. Beneath each `menuEntryGroup` will be a `menuEntry` array containing any combination of one or more menu entries:
* A `menuItemEntry` represents an individual item.
* A `menuGroupEntry` represents a menu sub-screen.
* A `menuDealEntry` represents a combo.'
items:
$ref: '#/components/schemas/apeTopLevelMenuGroupEntry'
type: array
richDataMissing:
description: Indicates whether or not rich item data is missing, if requested.
type: boolean
example: false
ikentooMenuId:
type: integer
description: The unique identifier for the menu.
example: 141948669132851
format: int64
conditionalTaxRules:
description: Warning that actual tax depends on a POS Account condition and may be different from what is provided in this API.
type: boolean
type: object
apeProductionInstruction:
type: object
properties:
multiSelectionPermitted:
type: boolean
description: Specifies if more than one production instruction can be selected for this group.
productionInstructionGroupName:
type: string
description: The group name for this production instruction.
productionIntructionGroupId:
type: integer
description: The unique identifier for this production instruction group.
format: int64
productionInstructionList:
type: array
description: Array of production instructions for this group.
items:
$ref: '#/components/schemas/apeProductionInstructionEntry'
apeMenuV2:
properties:
menuName:
description: The name of the menu.
type: string
example: Main Menu
menuEntryGroups:
description: 'Menu groups of this menu. The top-level entry will always be of type "group", representing a menu screen. Beneath each `menuEntryGroup` will be a `menuEntry` array containing any combination of one or more menu entries:
* A `menuItemEntry` represents an individual item and may include product modifier groups.
* A `menuGroupEntry` represents a menu sub-screen.
* A `menuDealEntry` represents a combo.
* A `menuProductModifierEntry` represents a product modifier.'
items:
$ref: '#/components/schemas/apeTopLevelMenuGroupEntryV2'
type: array
richDataMissing:
description: Indicates whether or not rich item data is missing, if requested.
type: boolean
example: false
ikentooMenuId:
type: integer
description: The unique identifier for the menu.
example: 141948669132851
format: int64
conditionalTaxRules:
description: Warning that actual tax depends on a POS Account condition and may be different from what is provided in this API.
type: boolean
type: object
apeOrderApiApiConfigDto:
type: object
properties:
enabled:
type: boolean
description: A flag indicating if a business location has the Online Ordering API enabled
orderProfileId:
type: integer
format: int64
description: Order Profile id
staffId:
type: integer
format: int64
description: Staff id
apeMenuGroupEntryV2:
title: group
allOf:
- type: object
properties:
'@type':
type: string
description: Indicates this is a menu group.
example: group
enum:
- group
id:
type: string
description: The menu group ID.
example: '141948669133028'
name:
type: string
description: The menu group name.
example: Mains
color:
type: string
description: The color of the button in the POS.
example: blue
menuEntry:
type: array
description: Array of menu entry objects.
items:
type: object
oneOf:
- $ref: '#/components/schemas/apeMenuItemEntryV2'
- $ref: '#/components/schemas/apeMenuDealEntryV2'
- $ref: '#/components/schemas/apeMenuGroupEntryV2'
- $ref: '#/components/schemas/apeMenuProductModifierEntryV2'
discriminator:
propertyName: '@type'
mapping:
menuItem: '#/components/schemas/apeMenuItemEntryV2'
menuDeal: '#/components/schemas/apeMenuDealEntryV2'
group: '#/components/schemas/apeMenuGroupEntryV2'
menuProductModifier: '#/components/schemas/apeMenuProductModifierEntryV2'
apeAccountPaymentLine:
type: object
properties:
paymentMethodDescription:
type: string
description: Payment method for this payment line.
example: API Payment
externalReference:
type: string
description: Payment external reference.
example: '12345678901234'
paymentMethodCode:
type: string
description: Payment method code for this payment line.
example: APM
amountPaid:
type: number
description: Amount paid for this payment line.
example: 12.65
paymentDate:
type: string
format: date-time
description: Date/Time in UTC of this payment.
example: 2023-11-07T22:05:16.127+0000
active:
type: boolean
description: Whether this payment line is active or not.
example: true
accountCancelled:
type: boolean
writeOnly: true
description: Payments associated with this check.
apeStandalonePayment:
description: Payment to apply to an existing order.
type: object
required:
- businessLocationId
- endpointId
- paymentAmount
- thirdPartyPaymentReference
properties:
iKaccountId:
example: 0
type: integer
format: int64
deprecated: true
iKaccountIdentifier:
example: A1234.56
description: The ID of the account to apply this payment to.
type: string
thirdPartyPaymentReference:
description: A unique external reference provided for this order. This value will be sent back in the webhook.
type: string
minLength: 1
maxLength: 50
example: '12345678901234'
endpointId:
description: Endpoint ID for a unique webhook that has been created using [the webhook endpoint](https://api-docs.lsk.lightspeed.app/operation/operation-apecreatewebhookoo).
type: string
example: MY-AWESOME-ENDPOINT-ID
businessLocationId:
$ref: '#/components/schemas/apeBusinessLocationId'
taskTtlInMs:
example: 60000
description: Maximum time to attempt delivery of this payment to the POS. In milliseconds. The minimum value is 60000ms (1 minute).
type: integer
format: int32
staffId:
type: integer
format: int64
description: The ID of the employee responsible for this payment.
deviceId:
description: POS device to specifically receive this payment. If left null then all POS devices may receive the payment but only one will process it.
type: integer
format: int64
example: 12345678980
paymentMethod:
example: OOPAYMENT
description: Payment method code as configured by the merchant.
type: string
paymentAmount:
example: 20.06
description: The total amount of the payment without tips.
type: number
tipAmount:
example: 2.5
description: The tip amount, if any.
type: number
targetPrinterProfileId:
example: 1773881235
description: The printer profile id to use for printing the receipt for this payment. If not provided, the default active printer profile for the business location will be used.
type: integer
format: int64
apeMenuDealGroupV2:
type: object
properties:
description:
type: string
description: Description of the combo item grouping.
example: Side Dishes
sku:
type: string
description: The SKU of the combo item grouping.
example: '25'
mustSelectAnItem:
type: boolean
description: Whether or not this is a required selection.
example: true
multiSelectionPermitted:
type: boolean
description: Whether or not multiple items can be selected from this item grouping.
example: true
minimumSelection:
type: integer
format: int32
description: The minimum number of items that must be selected from this item grouping. If null then no minimum is set.
example: 1
maximumSelection:
type: integer
format: int32
description: The maximum number of items that can be selected from this item grouping. If null then no maximum is set.
example: 3
itemRichData:
$ref: '#/components/schemas/apeItemRichData'
items:
description: List of items to select from.
type: array
items:
$ref: '#/components/schemas/apeMenuItemEntryV2'
description: Collections of item groups within the combo to select from.
apeCurrentInfo:
type: object
properties:
page:
type: integer
format: int32
description: Current page number.
example: 0
pageSize:
type: integer
format: int32
description: Number of items per page.
example: 50
apeSkusRequest:
type: object
required:
- skus
properties:
skus:
type: array
items:
type: string
example: SKU1
minItems: 1
maxItems: 50
description: List of SKUs to return.
apeItemTexts:
type: object
properties:
locale:
type: string
description: The two letter language code associated with this item text.
friendlyDisplayName:
type: string
description: The display name for this item in the configured language.
description:
type: string
description: The descriptive text for this item in the configured language.
example:
locale: en
friendlyDisplayName: Burger - ENG
description:
Burger in english
apeMenuGroupEntry: title: group allOf: - type: object properties: '@type': type: string description: Indicates this is a sub-screen of the menu in the POS. The object will have the same structure as the `menuEntryGroups` object and may contain any of the three `menuEntry` types. example: group enum: - group - type: object properties: id: type: string description: The menu group ID. example: '141948669133028' name: type: string description: The menu group name. example: Mains color: type: string description: The color of the button in the POS. example: blue menuEntry: type: array description: Array of menu entry objects. items: type: object oneOf: - $ref: '#/components/schemas/apeMenuItemEntry' - $ref: '#/components/schemas/apeMenuDealEntry' - $ref: '#/components/schemas/apeMenuGroupEntry' discriminator: propertyName: '@type' mapping: menuItem: '#/components/schemas/apeMenuItemEntry' menuDeal: '#/components/schemas/apeMenuDealEntry' group: '#/components/schemas/apeMenuGroupEntry' apePaymentSubmissionResponse: description: Acknowledgement that the payment was accepted for delivery to the POS. type: object properties: status: description: The response. example: ok type: string apeLocalOrderItemLine: properties: quantity: example: 1 description: Quantity of item to be ordered. type: integer format: int32 sku: example: UGG-BB-PUR-06 maxLength: 25 description: The SKU of the item to be ordered. type: string customItemName: example: My Custom Item Name description: The custom name to be used, if overwriting is permitted for this item. type: string customItemPrice: example: 10.0 description: The custom price to be used, if custom pricing is permitted for this item. type: number discountAmountOverride: description: The custom discount amount applied to this item. Only one of `discountAmountOverride` or `discountPercentOverride` can be set. Must be used in conjunction with a [discountCode](https://api-docs.lsk.lightspeed.app/operation/operation-apelocalorder#operation-apelocalorder-body-application-json-items-discountcode) and this discount must be configured as a "manual discount" in the POS. See [Understanding Discounts](https://k-series-support.lightspeedhq.com/hc/en-us/articles/1260804657089-Understanding-discounts). type: number example: 5.0 discountPercentOverride: description: The custom percentage discount applied to this item. Only one of `discountAmountOverride` or `discountPercentOverride` can be set. Must be used in conjunction with a [discountCode](https://api-docs.lsk.lightspeed.app/operation/operation-apelocalorder#operation-apelocalorder-body-application-json-items-discountcode) and this discount must be configured as a "manual discount" in the POS. See [Understanding Discounts](https://k-series-support.lightspeedhq.com/hc/en-us/articles/1260804657089-Understanding-discounts). type: number example: 10.0 modifiers: description: Collection of [modifiers](https://api-docs.lsk.lightspeed.app/operation/operation-apeloadallmodifiers) to be applied to this item. type: array items: $ref: '#/components/schemas/apeItemModifier' discountCode: example: FIVEPERCENT description: The discount code being applied to this item, if applicable. type: string course: example: 2 description: The course number for this item, if applicable. minimum: 0 type: integer format: int32 subItems: description: The sub-items applied to this item. items: $ref: '#/components/schemas/apeSubItemOrderLine' type: array type: object required: - quantity - sku apeProductionInstructionEntry: type: object properties: instruction: type: string description: The name of the production instruction. ikentooModifierId: description: The unique identifier of this production instruction. type: integer format: int64 description: Array of production instructions for this group apeCurrentWarning: type: object properties: information: type: string type: type: string apeOrderApiReadinessDto: type: object properties: status: type: string description: Indicates if the business location is ready for accepting online orders enum: - READY - NOT_READY lastUpdatedAt: type: string format: date-time description: Timestamp when readiness status was calculated example: '2025-12-11T07:27:47.407Z' onlineOrderingApiConfiguration: allOf: - $ref: '#/components/schemas/apeOrderApiApiConfigDto' description: Online Ordering API configuration posStatus: allOf: - $ref: '#/components/schemas/apeOrderApiPosStatusDto' description: POS status for accepting online orders apeCustomerInfo: required: - firstName properties: firstName: example: Jane description: Customer first name. type: string minLength: 1 maxLength: 128 lastName: example: Doe description: Customer last name. type: string thirdPartyReference: example: ZEN-7074522d-c71d-403f type: string description: The unique reference for this customer which can help to identify them later on. If the email is left empty, this should be empty as well. email: example: jane.doe@example.com description: The email address for this customer. type: string contactNumberAsE164: example: '+14155552671' description: The customer phone number in E164 format. type: string notes: example: Notes about the customer. description: The notes attached to the customer. type: string salutation: example: Mr. description: Salutation for the customer (Mr., Mrs., Dr., etc...). type: string sendEmailReceipts: example: true description: Default value of emailNotification setting for new customers type: boolean emailNotification: default: DONT_CHANGE description: Update the customer email notification setting. For example, sendEmailReceipts = true, emailNotification = DONT_CHANGE - sends receipt email for all users who haven't disabled it in the Backoffice. sendEmailReceipts = false, emailNotification = DONT_CHANGE - will not send receipt email for all users except those who enabled it in the Backoffice enum: - ENABLE - DISABLE - DONT_CHANGE type: string type: object apeAccountLineItem: type: object properties: id: type: integer format: int64 description: The unique ID assigned to the sale line. example: 1341648999023061 uuid: type: string description: The UUID assigned to the sale line. example: 2c83b049-a2c1-4bc5-8479-eb152e5a54be itemName: type: string description: The name given to the item. example: Burger itemSku: type: string description: The SKU assigned to the item. example: '14' unitAmount: type: number description: The price per unit. example: 10.0 quantity: type: number format: double description: The quantity of the item for this sale line. example: 1.0 modifiers: type: array description: The modifiers of the item for this sale line. items: $ref: '#/components/schemas/apeModifier' amountWithTax: type: number description: The total price of the item including tax. example: 11.5 amountLessTax: type: number description: The total price of the item without tax. example: 10.0 discountedAmount: type: number description: The amount the item was discounted. example: 0.0 timeOfTransactionUtc: type: string format: date-time description: The date and time in UTC when the transaction occurred. example: 2023-11-07T21:24:44.741+0000 active: type: boolean deprecated: true example: true parentId: type: integer format: int64 writeOnly: true subLineItems: type: array description: Collection of sub-line items associated with this sale line. items: $ref: '#/components/schemas/apeAccountLineItem' example: - id: 1341648999023062 uuid: 2c83b049-a2c1-4bc5-8479-eb152e5a54be itemName: Extra Cheese itemSku: '35' unitAmount: 1.0 quantity: 1.0 modifiers: [] amountWithTax: 1.15 amountLessTax: 1.0 discountedAmount: 0.0 grossUnitAmount: 1.0 timeOfTransactionUtc: 2023-11-07T21:24:44.755+0000 active: true subLineItems: [] taxIncluded: false isTaxIncluded: type: boolean writeOnly: true taxIncluded: type: boolean description: Indicates whether tax is included in the unit amount. example: false apeMenuItemTax: type: object properties: description: type: string description: Tax description as it appears on a POS and receipt. example: 5% GST amount: type: number description: The amount of Tax applied by default by this Tax, this can change dynamically at time of sale. example: 12.55 percentage: type: number description: The percentage of Tax applied by default by this Tax, this can change dynamically at time of sale. example: 5.0 apeSubItemOrderLine: required: - quantity - sku properties: quantity: example: 1 description: Quantity of sub-item to be ordered. type: integer format: int32 sku: example: ABC-123 maxLength: 25 description: The SKU of the sub-item to be ordered. type: string customItemName: example: My Custom Sub-Item Name description: The custom name to be used if overwriting is supported for this sub-item. type: string customItemPrice: example: 2.0 description: The custom price to be used if overwriting is supported for this sub-item. type: number modifiers: description: Collection of modifiers to be applied to this sub-item. items: $ref: '#/components/schemas/apeItemModifier' type: array subItems: description: Product modifiers applied to this item. items: $ref: '#/components/schemas/apeSubItemOrderLine' type: array type: object securitySchemes: OAuth2: description: 'The Lightspeed Restaurant K-Series APIs support OAuth2 authentication using the [authorization code grant flow](https://www.oauth.com/oauth2-servers/server-side-apps/authorization-code/). See our [Authorization Quick Start Guide](https://api-portal.lsk.lightspeed.app/quick-start/authentication/authorization-overview) for more details on how to authenticate. ' type: oauth2 flows: authorizationCode: authorizationUrl: /oauth/authorize tokenUrl: /oauth/token scopes: orders-api: 'Read business information, floors, menus, discounts, and production instructions. Read and write orders and payments. Read [Rich Item](https://api-docs.lsk.lightspeed.app/prod/group/endpoint-rich-item) data.' financial-api: Read financial data reservation-***: Platform reservations scope. The `***` will be replaced by the [platform-code](https://api-docs.lsk.lightspeed.app/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-platform-code) of the reservation platform. items: Read and write items propertymanagement: Read and write Property Management System configurations. id-cards: Create and manage ID card batches and cards. staff-api: Read shift information, read and write user information. reservations-api: 'Configure *legacy* reservation integrations. **Note:** This API will eventually be deprecated in favour of the new [Reservations for Platforms](https://api-docs.lsk.lightspeed.app/group/endpoint-reservations-for-platforms) API. More information on the new reservations workflows can be found in the [Integration Guide](https://api-portal.lsk.lightspeed.app/category/reservations).' x-tagGroups: - name: Rich Item API tags: - Rich Item - Migration - name: Tax Preview API tags: - Tax Breakdown - name: Staff Api tags: - Staff - Internal Staff - name: Reservation API tags: - Reservations for Platforms - name: PMS API tags: - PMS - name: Items API tags: - Items - ItemsV2 - Menus - Buttons - Production Instructions - Inventory - Combos - Groups - MenusV2 - Accounting Group - IntegrationMenu - Price Lists - Products - ItemAppearance - Modifiers - ModifierGroups - Allergens - Locales - RichItem - name: id-cards-api API tags: - ID Cards - name: Financial API tags: - Financial - FinancialV2 - name: Online Ordering API tags: - Order and Pay - 'Order and Pay: Webhook'