Lightspeed Customer API

Customer records and contact details.

OpenAPI Specification

lightspeed-pos-customer-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: 1.0.0
  title: Lightspeed Restaurant K Series Account Customer 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: Customer
  description: Customer records and contact details.
paths:
  /Account/{accountID}/Customer.json:
    get:
      summary: Lightspeed List Customers
      operationId: getCustomers
      description: Returns customer records for the account.
      tags:
      - Customer
      security:
      - OAuth2:
        - employee:customers_read
      parameters:
      - $ref: '#/components/parameters/accountID'
      - name: limit
        in: query
        schema:
          type: integer
          default: 100
      responses:
        '200':
          description: A page of customers.
          content:
            application/json:
              schema:
                type: object
                properties:
                  '@attributes':
                    $ref: '#/components/schemas/Attributes'
                  Customer:
                    type: array
                    items:
                      $ref: '#/components/schemas/Customer'
              examples:
                GetCustomers200Example:
                  summary: Default getCustomers 200 response
                  x-microcks-default: true
                  value:
                    '@attributes':
                      count: 739
                      offset: 994
                      limit: 647
                    Customer:
                    - customerID: '500123'
                      firstName: Sample firstName
                      lastName: Sample lastName
                      company: example
                      contactID: '500123'
                      discountID: '500123'
                      taxCategoryID: '500123'
                      Contact: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      summary: Lightspeed Create Customer
      operationId: createCustomer
      description: Creates a new customer record.
      tags:
      - Customer
      security:
      - OAuth2:
        - employee:customers
      parameters:
      - $ref: '#/components/parameters/accountID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Customer'
            examples:
              CreateCustomerRequestExample:
                summary: Default createCustomer request
                x-microcks-default: true
                value:
                  customerID: '500123'
                  firstName: Sample firstName
                  lastName: Sample lastName
                  company: example
                  contactID: '500123'
                  discountID: '500123'
                  taxCategoryID: '500123'
                  Contact:
                    contactID: '500123'
                    custom: example
                    noEmail: true
                    noPhone: true
                    noMail: true
      responses:
        '200':
          description: Customer created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Customer:
                    $ref: '#/components/schemas/Customer'
              examples:
                CreateCustomer200Example:
                  summary: Default createCustomer 200 response
                  x-microcks-default: true
                  value:
                    Customer:
                      customerID: '500123'
                      firstName: Sample firstName
                      lastName: Sample lastName
                      company: example
                      contactID: '500123'
                      discountID: '500123'
                      taxCategoryID: '500123'
                      Contact:
                        contactID: '500123'
                        custom: example
                        noEmail: true
                        noPhone: true
                        noMail: false
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /Account/{accountID}/Customer/{customerID}.json:
    get:
      summary: Lightspeed Get Customer by ID
      operationId: getCustomerById
      description: Returns a single customer by its customerID.
      tags:
      - Customer
      security:
      - OAuth2:
        - employee:customers_read
      parameters:
      - $ref: '#/components/parameters/accountID'
      - $ref: '#/components/parameters/customerID'
      responses:
        '200':
          description: The customer.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Customer:
                    $ref: '#/components/schemas/Customer'
              examples:
                GetCustomerById200Example:
                  summary: Default getCustomerById 200 response
                  x-microcks-default: true
                  value:
                    Customer:
                      customerID: '500123'
                      firstName: Sample firstName
                      lastName: Sample lastName
                      company: example
                      contactID: '500123'
                      discountID: '500123'
                      taxCategoryID: '500123'
                      Contact:
                        contactID: '500123'
                        custom: example
                        noEmail: false
                        noPhone: true
                        noMail: true
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    Customer:
      type: object
      description: A customer record.
      properties:
        customerID:
          type: string
          description: Unique customer identifier.
        firstName:
          type: string
          description: Customer first name.
        lastName:
          type: string
          description: Customer last name.
        company:
          type: string
          description: Customer company name.
        contactID:
          type: string
          description: Identifier of the related contact record.
        discountID:
          type: string
          description: Default discount applied to the customer.
        taxCategoryID:
          type: string
          description: Tax category for the customer.
        Contact:
          $ref: '#/components/schemas/Contact'
    Contact:
      type: object
      description: Contact details associated with a customer.
      properties:
        contactID:
          type: string
          description: Unique contact identifier.
        custom:
          type: string
          description: Custom contact field.
        noEmail:
          type: boolean
          description: Whether the contact opted out of email.
        noPhone:
          type: boolean
          description: Whether the contact opted out of phone contact.
        noMail:
          type: boolean
          description: Whether the contact opted out of mail.
    Attributes:
      type: object
      description: Pagination metadata returned in list responses.
      properties:
        count:
          type: integer
          description: Total number of matching records.
        offset:
          type: integer
          description: Offset of the current page.
        limit:
          type: integer
          description: Page size limit.
  parameters:
    accountID:
      name: accountID
      in: path
      required: true
      description: The numeric Lightspeed Retail account identifier, resolved via GET /Account.json.
      schema:
        type: string
    customerID:
      name: customerID
      in: path
      required: true
      description: The unique identifier of the customer.
      schema:
        type: string
  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'