Lightspeed Commerce Staff API

Staff API. Authorisation Code grant type is required for this API with permission ROLE_CONFIG_USERS.

Operations 17

GET /staff/v1/businessLocations/{businessLocationId}/shift Get Shifts #
GET /staff/v1/businessLocations/{businessLocationId}/userTypes/POS Get All POS Users #
POST /staff/v1/businessLocations/{businessLocationId}/userTypes/POS Create POS User #
PUT /staff/v1/businessLocations/{businessLocationId}/userTypes/POS/{staffId} Update POS User #
GET /staff/v1/businessLocations/{businessLocationId}/userTypes/BACK_OFFICE Get All Back Office Users #
GET /staff/v1/businessLocations/{businessLocationId}/staff/{staffId} Get Single User #
GET /staff/v1/businessLocations/{businessLocationId}/groups Get All User Groups #
GET /staff/v1/businessLocations/{businessLocationId}/groups/{groupId} Get Single User Group #
POST /staff/v1/business/{businessId}/assignStaff/{staffId} Add Business Location Access #
DELETE /staff/v1/businessLocations/{businessLocationId}/unAssignStaff/{staffId} Remove Business Location Access #
POST /staff/v1/businessLocations/{businessLocationId}/webhooks Create Webhook #
GET /staff/v1/businessLocations/{businessLocationId}/webhooks Get Webhooks #
PATCH /staff/v1/businessLocations/{businessLocationId}/webhooks/{webhookId} Update Existing Webhook #
DELETE /staff/v1/businessLocations/{businessLocationId}/webhooks/{webhookId} Delete Webhook #
GET /staff/v1/businessLocations/{businessLocationId}/userTypes/POS/reportAccess Get Report Access Levels #
GET /staff/v1/businessLocations/{businessLocationId}/userTypes/BACK_OFFICE/roles Get All Back Office User Permissions #
GET /staff/v1/businessLocations/{businessLocationId}/userTypes/POS/roles Get All POS User Permissions #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/lightspeed-staff-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

lightspeed-staff-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.0.0
  title: Lightspeed Restaurant K Series 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
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: 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'
      security:
      - OAuth2:
        - staff-api
  /staff/v1/businessLocations/{businessLocationId}/userTypes/POS:
    get:
      tags:
      - Staff
      summary: 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'
      security:
      - OAuth2:
        - staff-api
    post:
      tags:
      - Staff
      summary: Create POS User
      operationId: staff-apiCreatePOSStaff
      parameters:
      - $ref: '#/components/parameters/staff-apiBusinessLocationId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/staff-apiCreatePosStaffDto'
      responses:
        '201':
          description: User created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/staff-apiStaff'
        '400':
          description: Bad request. Invalid input parameters.
        '401':
          description: Authentication failed.
        '403':
          description: Access Denied.
        '500':
          description: Internal Server Error.
      security:
      - OAuth2:
        - staff-api
  /staff/v1/businessLocations/{businessLocationId}/userTypes/POS/{staffId}:
    put:
      tags:
      - Staff
      summary: 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'
      responses:
        '201':
          description: User updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/staff-apiStaff'
        '400':
          description: Bad request. Invalid input parameters.
        '401':
          description: Authentication failed.
        '403':
          description: Access Denied.
        '500':
          description: Internal Server Error.
      security:
      - OAuth2:
        - staff-api
  /staff/v1/businessLocations/{businessLocationId}/userTypes/BACK_OFFICE:
    get:
      tags:
      - Staff
      summary: 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'
      security:
      - OAuth2:
        - staff-api
  /staff/v1/businessLocations/{businessLocationId}/staff/{staffId}:
    get:
      tags:
      - Staff
      summary: 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'
      security:
      - OAuth2:
        - staff-api
  /staff/v1/businessLocations/{businessLocationId}/groups:
    get:
      tags:
      - Staff
      summary: 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'
      security:
      - OAuth2:
        - staff-api
  /staff/v1/businessLocations/{businessLocationId}/groups/{groupId}:
    get:
      tags:
      - Staff
      summary: 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'
      security:
      - OAuth2:
        - staff-api
  /staff/v1/business/{businessId}/assignStaff/{staffId}:
    post:
      tags:
      - Staff
      summary: 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'
      responses:
        '200':
          description: User business location access added successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/staff-apiBusinessLocationIds'
        '400':
          description: Bad request. Invalid input parameters.
        '401':
          description: Authentication failed.
        '403':
          description: Access Denied.
        '500':
          description: Internal Server Error.
      security:
      - OAuth2:
        - staff-api
  /staff/v1/businessLocations/{businessLocationId}/unAssignStaff/{staffId}:
    delete:
      tags:
      - Staff
      summary: 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
  /staff/v1/businessLocations/{businessLocationId}/webhooks:
    post:
      tags:
      - Staff
      summary: 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'
      responses:
        '200':
          description: Webhook Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/staff-apiWebhookDto'
      security:
      - OAuth2:
        - staff-api
    get:
      tags:
      - Staff
      summary: 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'
      security:
      - OAuth2:
        - staff-api
  /staff/v1/businessLocations/{businessLocationId}/webhooks/{webhookId}:
    patch:
      tags:
      - Staff
      summary: 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'
      responses:
        '200':
          description: Webhook updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/staff-apiWebhookDto'
        '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
    delete:
      tags:
      - Staff
      summary: 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
  /staff/v1/businessLocations/{businessLocationId}/userTypes/POS/reportAccess:
    get:
      tags:
      - Staff
      summary: Get Report Access Levels
      operationId: staff-apiGetReportAccessLevels
      parameters:
      - name: businessLocationId
        in: path
        description: The unique identifier for the business location.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: List of report access levels.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/staff-apiReportAccessLevel'
      security:
      - OAuth2:
        - staff-api
  /staff/v1/businessLocations/{businessLocationId}/userTypes/BACK_OFFICE/roles:
    get:
      tags:
      - Staff
      summary: Get All Back Office User Permissions
      operationId: staff-apiGetBackOfficeUserPermissions
      parameters:
      - name: businessLocationId
        in: path
        description: The unique identifier for the business location.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: User permissions List
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/staff-apiUserPermission'
      security:
      - OAuth2:
        - staff-api
  /staff/v1/businessLocations/{businessLocationId}/userTypes/POS/roles:
    get:
      tags:
      - Staff
      summary: Get All POS User Permissions
      operationId: staff-apiGetPosUserPermissions
      parameters:
      - name: businessLocationId
        in: path
        description: The unique identifier for the business location.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: User permissions List
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/staff-apiUserPermission'
      security:
      - OAuth2:
        - staff-api
webhooks:
  staff-apiShift notification:
    post:
      summary: Shift notification
      operationId: shiftNotification
      description: Notify about a shift event.
      tags:
      - Staff
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/staff-apiWebhookEventDto'
        required: true
      responses:
        '200':
          description: Your server returns this code if it accepts the callback.
components:
  schemas:
    staff-apiEmail:
      description: The email associated with the user. Only used for Back Office staff.
      type: string
      format: email
      maxLength: 128
    staff-apiStaffGroup:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for the user group.
          example: 1234
        name:
          type: string
          description: The name of the user group.
          example: Bar Staff
        posAccessForbidden:
          type: boolean
          description: Whether POS users in this group are restricted from POS access (for e.g. time-clock access only).
          example: false
        roles:
          type: array
          items:
            $ref: '#/components/schemas/staff-apiStaffRoleDto'
        reportAccess:
          $ref: '#/components/schemas/staff-apiReportAccess'
    staff-apiResponseSchema:
      type: object
      properties:
        data:
          type: object
          items: {}
        links:
          type: object
          properties:
            first:
              type: object
              properties:
                href:
                  type: string
                  description: The URL for the first page of results.
                  format: uri
                  example: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=1&size=1&sort=userId,desc
            self:
              type: object
              properties:
                href:
                  type: string
                  description: The URL for the current page of results.
                  format: uri
                  example: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=1&size=1&sort=userId,desc
            next:
              type: object
              properties:
                href:
                  type: string
                  description: The URL for the next page of results.
                  format: uri
                  example: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=2&size=1&sort=userId,desc
            last:
              type: object
              properties:
                href:
                  type: string
                  description: The URL for the last page of results.
                  format: uri
                  example: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=5&size=1&sort=userId,desc
        page:
          $ref: '#/components/schemas/staff-apiPageInfo'
    staff-apiFirstName:
      type: string
      maxLength: 128
      description: The first name of the user.
      default: ''
      example: John
    staff-apiUserPermission:
      type: object
      x-plural: userPermissions
      properties:
        value:
          type: string
          description: The value of the user permission.
          example: ROLE_MANAGER
        description:
          type: string
          description: The description of the user permission.
          example: POS user is a manager
    staff-apiVisible:
      type: boolean
      default: true
      description: Indicates if the user is visible.
    staff-apiUserType:
      description: The user type.
      type: string
      enum:
      - POS
      - BACK_OFFICE
      - API
    staff-apiPinCodeSet:
      type: boolean
      description: Indicates if the user has a PIN code set. Relevant for POS users only.
    staff-apiPageInfo:
      type: object
      properties:
        page:
          type: integer
          example: 1
          description: The current page number.
        size:
          type: integer
          example: 10
          description: The number of elements in the page.
        totalElements:
          type: integer
          example: 100
          description: The total number of elements.
        totalPages:
          type: integer
          example: 10
          description: The total number of pages of results.
    staff-apiUsername:
      description: The staff username. Only used for POS staff.
      type: string
      x-nonempty: true
      maxLength: 128
      example: John Doe
    staff-apiPOSStaff:
      type: object
      x-plural: staff
      properties:
        staffId:
          $ref: '#/components/schemas/staff-apiStaffId'
        username:
          $ref: '#/components/schemas/staff-apiUsername'
        userTypes:
          type: array
          items:
            $ref: '#/components/schemas/staff-apiUserType'
        firstName:
          $ref: '#/components/schemas/staff-apiFirstName'
        lastName:
          $ref: '#/components/schemas/staff-apiLastName'
        active:
          $ref: '#/components/schemas/staff-apiActive'
        pinCodeSet:
          $ref: '#/components/schemas/staff-apiPinCodeSet'
        pinLength:
          $ref: '#/components/schemas/staff-apiPinLength'
        createdOn:
          $ref: '#/components/schemas/staff-apiCreatedOn'
        modifiedOn:
          $ref: '#/components/schemas/staff-apiModifiedOn'
        businessId:
          $ref: '#/components/schemas/staff-apiBusinessId'
        businessLocationId:
          $ref: '#/components/schemas/staff-apiBusinessLocationId'
        groups:
          type: array
          items:
            $ref: '#/components/schemas/staff-apiStaffGroupIdDto'
        reportAccess:
          type: array
          items:
            $ref: '#/components/schemas/staff-apiReportAccess'
        roles:
          type: array
          description: The roles assigned to the user.
          items:
            $ref: '#/components/schemas/staff-apiStaffRoleDto'
    staff-apiStaff:
      type: object
      x-plural: staff
      properties:
        staffId:
          $ref: '#/components/schemas/staff-apiStaffId'
        username:
          $ref: '#/components/schemas/staff-apiUsername'
        userTypes:
          type: array
          items:
            $ref: '#/components/schemas/staff-apiUserType'
        firstName:
          $ref: '#/components/schemas/staff-apiFirstName'
        lastName:
          $ref: '#/components/schemas/staff-apiLastName'
        email:
          $ref: '#/components/schemas/staff-apiEmail'
        active:
          $ref: '#/components/schemas/staff-apiActive'
        pinCodeSet:
          $ref: '#/components/schemas/staff-apiPinCodeSet'
        pinLength:
          $ref: '#/components/schemas/staff-apiPinLength'
        createdOn:
          $ref: '#/components/schemas/staff-apiCreatedOn'
        modifiedOn:
          $ref: '#/components/schemas/staff-apiModifiedOn'
        businessId:
          $ref: '#/components/schemas/staff-apiBusinessId'
        businessLocationId:
          $ref: '#/components/schemas/staff-apiBusinessLocationId'
        groups:
          type: array
          items:
            $ref: '#/components/schemas/staff-apiStaffGroupIdDto'
        reportAccess:
          type: array
          items:
            $ref: '#/components/schemas/staff-apiReportAccess'
        roles:
          type: array
          description: The roles assigned to the user.
          items:
            $ref: '#/components/schemas/staff-apiStaffRoleDto'
    staff-apiPinLength:
      type: integer
      format: int32
      nullable: true
      description: Length of the user's PIN code. Null when PIN is not set.
    staff-apiCreateWebhookRequest:
      type: object
      required:
      - notificationType
      - url
      - webhookName
      properties:
        notificationType:
          $ref: '#/components/schemas/staff-apiWebhookTopic'
        url:
          type: string
          description: The URL for the webhook.
          format: uri
        webhookName:
          type: string
          description: The name for the webhook.
    staff-apiWebhookEventDto:
      type: object
      properties:
        notificationType:
          $ref: '#/components/schemas/staff-apiWebhookTopic'
        data:
          $ref: '#/components/schemas/staff-apiShift'
    staff-apiShift:
      description: Shift details.
      x-plural: shifts
      type: object
      properties:
        uuid:
          description: The unique identifier for the shift.
          type: string
          example: REcdfpCwQJKUR53gdzIk5Q==
        businessId:
          description: The unique identifier for the business.
          type: integer
          format: int64
          example: 12345
        businessLocationId:
          description: The unique identifier for the business location.
          type: integer
          format: int64
          example: 1234567890
        deviceId:
          description: The unique identifier for the device.
          type: integer
          format: int64
          example: 54321
        staffId:
          description: The unique identifier for the user.
          type: integer
          format: int64
          example: 1234
        declaredCashTips:
          description: The declared tips for the shift.
          type: string
          example: '10.00'
          multipleOf: 0.01
        dateInUTC:
          description: The timestamp of the last update to the shift.
          type: string
          format: date-time
          example: '2020-01-01T00:00:00Z'
        events:
          description: List of events during the shift.
          type: array
          items:
            $ref: '#/components/schemas/staff-apiEvent'
    staff-apiVisibleNoDefault:
      type: boolean
      description: Indicates if the user is visible.
    staff-apiStaffId:
      type: integer
      format: int64
      description: The unique identifier for the user.
      example: 1234
    staff-apiCreatestaffRoleDto:
      type: string
      description: List of roles assigned to the user. Normally, these are the default POS user roles. See [Get All POS User Permissions](https://api-docs.lsk.lightspeed.app/operation/operation-staff-apigetposuserpermissions) for a list of roles.
    staff-apiEventType:
      description: The type of event.
      type: string
      enum:
      - CLOCK_IN
      - CLOCK_OUT
    staff-apiActive:
      type: boolean
      default: true
      description: Indicates if the user is active.
    staff-apiBOStaff:
      type: object
      x-plural: staff
      properties:
        staffId:
          $ref: '#/components/schemas/staff-apiStaffId'
        userTypes:
          type: array
          items:
            $ref: '#/components/schemas/staff-apiUserType'
        firstName:
          $ref: '#/components/schemas/staff-apiFirstName'
        lastName:
          $ref: '#/components/schemas/staff-apiLastName'
        email:
          $ref: '#/components/schemas/staff-apiEmail'
        active:
          $ref: '#/components/schemas/staff-apiActive'
        createdOn:
          $ref: '#/components/schemas/staff-apiCreatedOn'
        modifiedOn:
          $ref: '#/components/schemas/staff-apiModifiedOn'
        businessId:
          $ref: '#/components/schemas/staff-apiBusinessId'
        businessLocationId:
          $ref: '#/components/schemas/staff-apiBusinessLocationId'
        groups:
          type: array
          items:
            $ref: '#/components/schemas/staff-apiStaffGroupIdDto'
        reportAccess:
          type: array
          items:
            $ref: '#/components/schemas/staff-apiReportAccess'
        roles:
          type: array
          description: The roles assigned to the user.
          items:
            $ref: '#/components/schemas/staff-apiStaffRoleDto'
    staff-apiBusinessLocationId:
      type: integer
      format: int64
      description: The unique identifier for the business location.
      example: 1234567890
    staff-apiBusinessLocationIds:
      type: object
      properties:
        businessLocationIds:
          type: array
          items:
            type: integer
            format: int64
          description: List of all `businessLocationIds` to be added.
          example:
          - 123456789
          - 987654321
    staff-apiStaffGroupIdDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for the user group.
          example: 1234
        name:
          type: string
          description: The name of the user group.
          example: Bar Staff
    staff-apiWebhookTopic:
      description: The type of webhook notification.
      type: string
      enum:
      - shift.created
      - shift.updated
      - shift.deleted
    staff-apiEvent:
      description: Shift event such as clock in/out, please use the newest one when multiple events existing with same event type.
      type: object
      properties:
        uuid:
          description: The unique identifier for the event.
          type: string
          example: REcdfpCwQJKUR53gdzIk5Q==
        timestamp:
          description: The time of the event.
          type: string
          format: date-time
          example: '2020-01-01T00:00:00Z'
        createdOn:
          description: The creation time of the event.
          type: string
          format: date-time
          example: '2020-01-01T00:00:00Z'
        eventType:
          $ref: '#/components/schemas/staff-apiEventType'
    staff-apiBusinessId:
      type: integer
      format: int64
      description: The unique identifier for the business.
      example: 12345
    staff-apiReportAccess:
      type: string
      default: STAFF_REPORT_OWN_ACCESS
      description: User report permissions.
    staff-apiUpdatePosStaffDto:
      type: 

# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lightspeed/refs/heads/main/openapi/lightspeed-staff-api-openapi.yml