Lightspeed Staff API
Staff API. Authorisation Code grant type is required for this API with permission ROLE_CONFIG_USERS.
Staff API. Authorisation Code grant type is required for this API with permission ROLE_CONFIG_USERS.
openapi: 3.1.0
info:
version: 1.0.0
title: Lightspeed Restaurant K Series Account Staff 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
contact:
name: Lightspeed Commerce
url: https://api-portal.lsk.lightspeed.app/
x-generated-from: documentation
x-last-validated: '2026-06-02'
x-source-url: https://api-docs.lsk.lightspeed.app/source.json
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: Staff
description: Staff API. Authorisation Code grant type is required for this API with permission ROLE_CONFIG_USERS.
paths:
/staff/v1/businessLocations/{businessLocationId}/shift:
get:
tags:
- Staff
summary: Lightspeed Get Shifts
operationId: staff-apiGetShift
parameters:
- $ref: '#/components/parameters/staff-apiBusinessLocationId'
- $ref: '#/components/parameters/staff-apiPage'
- $ref: '#/components/parameters/staff-apiSize'
- $ref: '#/components/parameters/staff-apiSortByShift'
- $ref: '#/components/parameters/staff-apiStartTime'
- $ref: '#/components/parameters/staff-apiEndTime'
- $ref: '#/components/parameters/staff-apiStaffId'
responses:
'200':
description: List of shifts with related links.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/staff-apiResponseSchema'
- type: object
properties:
data:
type: object
properties:
shifts:
type: array
items:
$ref: '#/components/schemas/staff-apiShift'
examples:
Staff-apiGetShift200Example:
summary: Default staff-apiGetShift 200 response
x-microcks-default: true
value:
data:
shifts:
- uuid: REcdfpCwQJKUR53gdzIk5Q==
businessId: 12345
businessLocationId: 1234567890
deviceId: 54321
staffId: 1234
declaredCashTips: '10.00'
dateInUTC: '2020-01-01T00:00:00Z'
events: []
links:
first:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=1&size=1&sort=userId,desc
self:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=1&size=1&sort=userId,desc
next:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=2&size=1&sort=userId,desc
last:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=5&size=1&sort=userId,desc
page:
page: 1
size: 10
totalElements: 100
totalPages: 10
security:
- OAuth2:
- staff-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/staff/v1/businessLocations/{businessLocationId}/userTypes/POS:
get:
tags:
- Staff
summary: Lightspeed Get All POS Users
operationId: staff-apiGetPOSStaff
parameters:
- $ref: '#/components/parameters/staff-apiBusinessLocationId'
- $ref: '#/components/parameters/staff-apiPage'
- $ref: '#/components/parameters/staff-apiSize'
- $ref: '#/components/parameters/staff-apiSortByStaff'
- name: isActive
description: Filter on active status.
in: query
schema:
type: boolean
- name: startDate
description: Filter on user start date. The format should be `yyyy-MM-dd'T'HH:mm:ss` (ISO 8601 format).
in: query
schema:
type: string
format: date-time
- name: endDate
description: Filter on user end date. The format should be `yyyy-MM-dd'T'HH:mm:ss` (ISO 8601 format).
in: query
schema:
type: string
format: date-time
responses:
'200':
description: Staff List
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/staff-apiResponseSchema'
- type: object
properties:
data:
type: object
properties:
staff:
type: array
items:
$ref: '#/components/schemas/staff-apiPOSStaff'
examples:
Staff-apiGetPOSStaff200Example:
summary: Default staff-apiGetPOSStaff 200 response
x-microcks-default: true
value:
data:
staff:
- staffId: {}
username: {}
userTypes: []
firstName: {}
lastName: {}
active: {}
pinCodeSet: {}
createdOn: {}
modifiedOn: {}
businessId: {}
businessLocationId: {}
groups: []
reportAccess: []
roles: []
links:
first:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=1&size=1&sort=userId,desc
self:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=1&size=1&sort=userId,desc
next:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=2&size=1&sort=userId,desc
last:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=5&size=1&sort=userId,desc
page:
page: 1
size: 10
totalElements: 100
totalPages: 10
security:
- OAuth2:
- staff-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
post:
tags:
- Staff
summary: Lightspeed Create POS User
operationId: staff-apiCreatePOSStaff
parameters:
- $ref: '#/components/parameters/staff-apiBusinessLocationId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/staff-apiCreatePosStaffDto'
examples:
Staff-apiCreatePOSStaffRequestExample:
summary: Default staff-apiCreatePOSStaff request
x-microcks-default: true
value:
username: John Doe
pinCode: '1234'
firstName: John
lastName: Doe
active: true
visible: true
group: 736
reportAccess: STAFF_REPORT_OWN_ACCESS
roles: []
responses:
'201':
description: User created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/staff-apiStaff'
examples:
Staff-apiCreatePOSStaff201Example:
summary: Default staff-apiCreatePOSStaff 201 response
x-microcks-default: true
value:
staffId: 1234
username: John Doe
userTypes:
- BACK_OFFICE
firstName: John
lastName: Doe
email: guest@example.com
active: true
pinCodeSet: true
createdOn: '2026-03-15T14:30:00Z'
modifiedOn: '2026-03-15T14:30:00Z'
businessId: 12345
businessLocationId: 1234567890
groups:
- id: 1234
name: Bar Staff
reportAccess:
- STAFF_REPORT_OWN_ACCESS
roles:
- id: 1234
name: ROLE_CAN_LOGIN
'400':
description: Bad request. Invalid input parameters.
'401':
description: Authentication failed.
'403':
description: Access Denied.
'500':
description: Internal Server Error.
security:
- OAuth2:
- staff-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/staff/v1/businessLocations/{businessLocationId}/userTypes/POS/{staffId}:
put:
tags:
- Staff
summary: Lightspeed Update POS User
operationId: staff-apiUpdatePOSStaff
parameters:
- $ref: '#/components/parameters/staff-apiBusinessLocationId'
- name: staffId
in: path
required: true
description: The unique identifier for the user.
schema:
type: integer
format: int64
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/staff-apiUpdatePosStaffDto'
examples:
Staff-apiUpdatePOSStaffRequestExample:
summary: Default staff-apiUpdatePOSStaff request
x-microcks-default: true
value:
username: John Doe
pinCode: '1234'
firstName: John
lastName: Doe
active: false
visible: false
group: -1
reportAccess: example
roles:
- example
responses:
'201':
description: User updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/staff-apiStaff'
examples:
Staff-apiUpdatePOSStaff201Example:
summary: Default staff-apiUpdatePOSStaff 201 response
x-microcks-default: true
value:
staffId: 1234
username: John Doe
userTypes:
- BACK_OFFICE
firstName: John
lastName: Doe
email: guest@example.com
active: true
pinCodeSet: false
createdOn: '2026-03-15T14:30:00Z'
modifiedOn: '2026-03-15T14:30:00Z'
businessId: 12345
businessLocationId: 1234567890
groups:
- id: 1234
name: Bar Staff
reportAccess:
- STAFF_REPORT_OWN_ACCESS
roles:
- id: 1234
name: ROLE_CAN_LOGIN
'400':
description: Bad request. Invalid input parameters.
'401':
description: Authentication failed.
'403':
description: Access Denied.
'500':
description: Internal Server Error.
security:
- OAuth2:
- staff-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/staff/v1/businessLocations/{businessLocationId}/userTypes/BACK_OFFICE:
get:
tags:
- Staff
summary: Lightspeed Get All Back Office Users
operationId: staff-apiGetBackOfficeStaff
parameters:
- $ref: '#/components/parameters/staff-apiBusinessLocationId'
- $ref: '#/components/parameters/staff-apiPage'
- $ref: '#/components/parameters/staff-apiSize'
- $ref: '#/components/parameters/staff-apiSortByStaff'
- name: email
in: query
description: Filter on email address.
schema:
type: string
format: email
- name: isActive
description: Filter on active status.
in: query
schema:
type: boolean
- name: startDate
description: Filter on user start date. The format should be `yyyy-MM-dd'T'HH:mm:ss` (ISO 8601 format).
in: query
schema:
type: string
format: date-time
- name: endDate
description: Filter on user end date. The format should be `yyyy-MM-dd'T'HH:mm:ss` (ISO 8601 format).
in: query
schema:
type: string
format: date-time
responses:
'200':
description: Staff List
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/staff-apiResponseSchema'
- type: object
properties:
data:
type: object
properties:
staff:
type: array
items:
$ref: '#/components/schemas/staff-apiBOStaff'
examples:
Staff-apiGetBackOfficeStaff200Example:
summary: Default staff-apiGetBackOfficeStaff 200 response
x-microcks-default: true
value:
data:
staff:
- staffId: {}
userTypes: []
firstName: {}
lastName: {}
email: {}
active: {}
createdOn: {}
modifiedOn: {}
businessId: {}
businessLocationId: {}
groups: []
reportAccess: []
roles: []
links:
first:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=1&size=1&sort=userId,desc
self:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=1&size=1&sort=userId,desc
next:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=2&size=1&sort=userId,desc
last:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=5&size=1&sort=userId,desc
page:
page: 1
size: 10
totalElements: 100
totalPages: 10
security:
- OAuth2:
- staff-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/staff/v1/businessLocations/{businessLocationId}/staff/{staffId}:
get:
tags:
- Staff
summary: Lightspeed Get Single User
operationId: staff-apiGetSingleStaff
parameters:
- name: businessLocationId
in: path
description: The unique identifier for the business location.
required: true
schema:
type: integer
format: int64
- name: staffId
in: path
description: The unique identifier for the user.
required: true
schema:
type: integer
format: int64
responses:
'200':
description: User object
content:
application/json:
schema:
$ref: '#/components/schemas/staff-apiStaff'
examples:
Staff-apiGetSingleStaff200Example:
summary: Default staff-apiGetSingleStaff 200 response
x-microcks-default: true
value:
staffId: 1234
username: John Doe
userTypes:
- API
firstName: John
lastName: Doe
email: guest@example.com
active: true
pinCodeSet: false
createdOn: '2026-03-15T14:30:00Z'
modifiedOn: '2026-03-15T14:30:00Z'
businessId: 12345
businessLocationId: 1234567890
groups:
- id: 1234
name: Bar Staff
reportAccess:
- STAFF_REPORT_OWN_ACCESS
roles:
- id: 1234
name: ROLE_CAN_LOGIN
security:
- OAuth2:
- staff-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/staff/v1/businessLocations/{businessLocationId}/groups:
get:
tags:
- Staff
summary: Lightspeed Get All User Groups
operationId: staff-apiGetPosUserGroups
parameters:
- $ref: '#/components/parameters/staff-apiBusinessLocationId'
- $ref: '#/components/parameters/staff-apiPage'
- $ref: '#/components/parameters/staff-apiSize'
- $ref: '#/components/parameters/staff-apiSortByStaffGroup'
- name: name
description: Filter on group name.
in: query
schema:
type: string
- name: roles
description: Filter on group roles.
in: query
schema:
type: array
items:
type: string
responses:
'200':
description: POS User Groups List
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/staff-apiResponseSchema'
- type: object
properties:
data:
type: object
properties:
staffGroupList:
type: array
items:
$ref: '#/components/schemas/staff-apiStaffGroup'
examples:
Staff-apiGetPosUserGroups200Example:
summary: Default staff-apiGetPosUserGroups 200 response
x-microcks-default: true
value:
data:
staffGroupList:
- id: 1234
name: Bar Staff
roles: []
reportAccess: {}
links:
first:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=1&size=1&sort=userId,desc
self:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=1&size=1&sort=userId,desc
next:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=2&size=1&sort=userId,desc
last:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=5&size=1&sort=userId,desc
page:
page: 1
size: 10
totalElements: 100
totalPages: 10
security:
- OAuth2:
- staff-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/staff/v1/businessLocations/{businessLocationId}/groups/{groupId}:
get:
tags:
- Staff
summary: Lightspeed Get Single User Group
operationId: staff-apiGetPosUserGroupById
parameters:
- $ref: '#/components/parameters/staff-apiBusinessLocationId'
- name: groupId
in: path
description: The unique identifier for the user group.
required: true
schema:
type: integer
format: int64
responses:
'200':
description: POS User Group
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/staff-apiResponseSchema'
- type: object
properties:
data:
type: object
properties:
staffGroup:
$ref: '#/components/schemas/staff-apiStaffGroup'
examples:
Staff-apiGetPosUserGroupById200Example:
summary: Default staff-apiGetPosUserGroupById 200 response
x-microcks-default: true
value:
data:
staffGroup:
id: 1234
name: Bar Staff
roles:
- {}
reportAccess: STAFF_REPORT_OWN_ACCESS
links:
first:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=1&size=1&sort=userId,desc
self:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=1&size=1&sort=userId,desc
next:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=2&size=1&sort=userId,desc
last:
href: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=5&size=1&sort=userId,desc
page:
page: 1
size: 10
totalElements: 100
totalPages: 10
security:
- OAuth2:
- staff-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/staff/v1/business/{businessId}/assignStaff/{staffId}:
post:
tags:
- Staff
summary: Lightspeed Add Business Location Access
operationId: staff-apiAddStaffBusinessLocationAccess
parameters:
- $ref: '#/components/parameters/staff-apiBusinessId'
- name: staffId
in: path
description: The unique identifier for the user.
required: true
schema:
type: integer
format: int64
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/staff-apiBusinessLocationIds'
examples:
Staff-apiAddStaffBusinessLocationAccessRequestExample:
summary: Default staff-apiAddStaffBusinessLocationAccess request
x-microcks-default: true
value:
businessLocationIds: &id001
- 123456789
- 987654321
responses:
'200':
description: User business location access added successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/staff-apiBusinessLocationIds'
examples:
Staff-apiAddStaffBusinessLocationAccess200Example:
summary: Default staff-apiAddStaffBusinessLocationAccess 200 response
x-microcks-default: true
value:
businessLocationIds: *id001
'400':
description: Bad request. Invalid input parameters.
'401':
description: Authentication failed.
'403':
description: Access Denied.
'500':
description: Internal Server Error.
security:
- OAuth2:
- staff-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/staff/v1/businessLocations/{businessLocationId}/unAssignStaff/{staffId}:
delete:
tags:
- Staff
summary: Lightspeed Remove Business Location Access
operationId: staff-apiDeleteStaffBusinessLocationAccess
parameters:
- $ref: '#/components/parameters/staff-apiBusinessLocationId'
- name: staffId
in: path
description: The unique identifier for the user.
required: true
schema:
type: integer
format: int64
responses:
'204':
description: User business location access removed successfully.
'400':
description: Bad request. Invalid input parameters.
'401':
description: Authentication failed.
'403':
description: Access Denied.
'500':
description: Internal Server Error.
security:
- OAuth2:
- staff-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/staff/v1/businessLocations/{businessLocationId}/webhooks:
post:
tags:
- Staff
summary: Lightspeed Create Webhook
operationId: staff-apiCreateWebhook
parameters:
- name: businessLocationId
in: path
description: The unique identifier for the business location.
required: true
schema:
type: integer
format: int64
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/staff-apiCreateWebhookRequest'
examples:
Staff-apiCreateWebhookRequestExample:
summary: Default staff-apiCreateWebhook request
x-microcks-default: true
value:
notificationType: shift.updated
url: example
webhookName: Sample webhookName
responses:
'200':
description: Webhook Created
content:
application/json:
schema:
$ref: '#/components/schemas/staff-apiWebhookDto'
examples:
Staff-apiCreateWebhook200Example:
summary: Default staff-apiCreateWebhook 200 response
x-microcks-default: true
value:
uuid: e95c2cc5-4489-4025-a7e2-a34faeaa5f9d
notificationType: shift.updated
url: example
webhookName: My Awesome Webhook
businessLocationId: 1234567890
createdAt: '2026-03-15T14:30:00Z'
updatedAt: '2026-03-15T14:30:00Z'
security:
- OAuth2:
- staff-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
get:
tags:
- Staff
summary: Lightspeed Get Webhooks
operationId: staff-apiGetWebhooks
parameters:
- name: businessLocationId
in: path
description: The unique identifier for the business location.
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Webhooks Returned
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/staff-apiWebhookDto'
examples:
Staff-apiGetWebhooks200Example:
summary: Default staff-apiGetWebhooks 200 response
x-microcks-default: true
value:
- uuid: e95c2cc5-4489-4025-a7e2-a34faeaa5f9d
notificationType: shift.deleted
url: example
webhookName: My Awesome Webhook
businessLocationId: 1234567890
createdAt: '2026-03-15T14:30:00Z'
updatedAt: '2026-03-15T14:30:00Z'
security:
- OAuth2:
- staff-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/staff/v1/businessLocations/{businessLocationId}/webhooks/{webhookId}:
patch:
tags:
- Staff
summary: Lightspeed Update Existing Webhook
description: Updates the details of an existing webhook.
operationId: staff-apiUpdateWebhook
parameters:
- $ref: '#/components/parameters/staff-apiBusinessLocationId'
- name: webhookId
in: path
required: true
description: The unique identifier for the webhook.
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/staff-apiCreateWebhookRequest'
examples:
Staff-apiUpdateWebhookRequestExample:
summary: Default staff-apiUpdateWebhook request
x-microcks-default: true
value:
notificationType: shift.updated
url: example
webhookName: Sample webhookName
responses:
'200':
description: Webhook updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/staff-apiWebhookDto'
examples:
Staff-apiUpdateWebhook200Example:
summary: Default staff-apiUpdateWebhook 200 response
x-microcks-default: true
value:
uuid: e95c2cc5-4489-4025-a7e2-a34faeaa5f9d
notificationType: shift.updated
url: example
webhookName: My Awesome Webhook
businessLocationId: 1234567890
createdAt: '2026-03-15T14:30:00Z'
updatedAt: '2026-03-15T14:30:00Z'
'400':
description: Bad request. Invalid input parameters.
'404':
description: Not found. The specified webhook ID does not exist.
'409':
description: Conflict. A webhook with the specified details already exists.
security:
- OAuth2:
- staff-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
delete:
tags:
- Staff
summary: Lightspeed Delete Webhook
operationId: staff-apiDeleteWebhook
parameters:
- name: businessLocationId
in: path
description: The unique identifier for the business location.
required: true
schema:
type: integer
format: int64
- name: webhookId
in: path
description: The unique identifier for the webhook.
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Webhook successfully deleted
security:
- OAuth2:
- staff-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/staff/v1/businessLocations/{businessLocationId}/userTypes/POS/reportAccess:
get:
tags:
- Staff
summary: Lightspeed Get Report Access Levels
operationId: staff-apiGetReportAccessLevels
parameters:
- name: businessLocationId
in: path
descript
# --- truncated at 32 KB (64 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lightspeed-pos/refs/heads/main/openapi/lightspeed-pos-staff-api-openapi.yml