Lightspeed Retail X-Series API (Vend)

REST API for Lightspeed Retail X-Series, formerly Vend. Covers products, customers, sales, inventory, suppliers, registers, taxes, and outlets.

OpenAPI Specification

lightspeed-pos-retail-x-series-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Lightspeed Retail X-Series API
  description: |
    Partial OpenAPI 3.1 representation of the Lightspeed Retail X-Series
    (formerly Vend) REST API. The X-Series API is documented at
    https://x-series-api.lightspeedhq.com/ and uses OAuth 2.0 with scope-based
    access control. The base URL is per-tenant under the
    https://x-series-api.lightspeedhq.com domain. Authentication uses Bearer
    access tokens issued via the OAuth 2.0 authorization-code flow.
  version: "2.0.0"
  contact:
    name: Lightspeed Commerce
    url: https://x-series-api.lightspeedhq.com/
servers:
- url: https://{domainPrefix}.retail.lightspeed.app/api/2.0
  description: Per-retailer X-Series API host.
  variables:
    domainPrefix:
      default: example
      description: Retailer subdomain prefix.
security:
- OAuth2: []
paths:
  /brands:
    get:
      summary: Lightspeed List Brands
      operationId: listBrands
      security:
      - OAuth2: [products.read]
      parameters:
      - name: page_size
        in: query
        schema:
          type: integer
          default: 50
      - name: after
        in: query
        description: Cursor for paging.
        schema:
          type: integer
      responses:
        '200':
          description: A page of brands.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Brand'
              examples:
                ListBrands200Example:
                  summary: Default listBrands 200 response
                  x-microcks-default: true
                  value:
                    data:
                    - id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                      name: Sample name
                      description: example
                      deleted_at: '2026-03-15T14:30:00Z'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      summary: Lightspeed Create a Brand
      operationId: createBrand
      security:
      - OAuth2: [products.write]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Brand'
            examples:
              CreateBrandRequestExample:
                summary: Default createBrand request
                x-microcks-default: true
                value:
                  id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                  name: Sample name
                  description: example
                  deleted_at: '2026-03-15T14:30:00Z'
      responses:
        '201':
          description: Brand created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Brand'
              examples:
                CreateBrand201Example:
                  summary: Default createBrand 201 response
                  x-microcks-default: true
                  value:
                    id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                    name: Sample name
                    description: example
                    deleted_at: '2026-03-15T14:30:00Z'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /brands/{id}:
    get:
      summary: Lightspeed Get a Brand by ID
      operationId: getBrand
      security:
      - OAuth2: [products.read]
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: The brand.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Brand'
              examples:
                GetBrand200Example:
                  summary: Default getBrand 200 response
                  x-microcks-default: true
                  value:
                    id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                    name: Sample name
                    description: example
                    deleted_at: '2026-03-15T14:30:00Z'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      summary: Lightspeed Update a Brand
      operationId: updateBrand
      security:
      - OAuth2: [products.write]
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Brand'
            examples:
              UpdateBrandRequestExample:
                summary: Default updateBrand request
                x-microcks-default: true
                value:
                  id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                  name: Sample name
                  description: example
                  deleted_at: '2026-03-15T14:30:00Z'
      responses:
        '200':
          description: Brand updated.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      summary: Lightspeed Delete a Brand
      operationId: deleteBrand
      security:
      - OAuth2: [products.write]
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: Brand deleted.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /products:
    get:
      summary: Lightspeed List Products
      operationId: listProducts
      security:
      - OAuth2: [products.read]
      parameters:
      - name: page_size
        in: query
        schema:
          type: integer
          default: 50
      responses:
        '200':
          description: A page of products.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Product'
              examples:
                ListProducts200Example:
                  summary: Default listProducts 200 response
                  x-microcks-default: true
                  value:
                    data:
                    - id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                      source_id: '500123'
                      handle: example
                      sku: SKU-1001
                      name: Sample name
                      description: example
                      price_excluding_tax: 69.88
                      brand_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                      active: true
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      summary: Lightspeed Create a Product
      operationId: createProduct
      security:
      - OAuth2: [products.write]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Product'
            examples:
              CreateProductRequestExample:
                summary: Default createProduct request
                x-microcks-default: true
                value:
                  id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                  source_id: '500123'
                  handle: example
                  sku: SKU-1001
                  name: Sample name
                  description: example
                  price_excluding_tax: 48.7
                  brand_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                  active: false
      responses:
        '201':
          description: Product created.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /products/{id}:
    get:
      summary: Lightspeed Get a Product by ID
      operationId: getProduct
      security:
      - OAuth2: [products.read]
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: The product.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
              examples:
                GetProduct200Example:
                  summary: Default getProduct 200 response
                  x-microcks-default: true
                  value:
                    id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                    source_id: '500123'
                    handle: example
                    sku: SKU-1001
                    name: Sample name
                    description: example
                    price_excluding_tax: 14.96
                    brand_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                    active: true
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      summary: Lightspeed Update a Product
      operationId: updateProduct
      security:
      - OAuth2: [products.write]
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Product'
            examples:
              UpdateProductRequestExample:
                summary: Default updateProduct request
                x-microcks-default: true
                value:
                  id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                  source_id: '500123'
                  handle: example
                  sku: SKU-1001
                  name: Sample name
                  description: example
                  price_excluding_tax: 5.13
                  brand_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                  active: false
      responses:
        '200':
          description: Product updated.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /sales:
    get:
      summary: Lightspeed List Sales
      operationId: listSales
      security:
      - OAuth2: [sales.read]
      responses:
        '200':
          description: A page of sales.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Sale'
              examples:
                ListSales200Example:
                  summary: Default listSales 200 response
                  x-microcks-default: true
                  value:
                    data:
                    - id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                      outlet_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                      register_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                      user_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                      customer_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                      status: OPEN
                      total_price: 49.56
                      total_tax: 45.6
                      line_items:
                      - {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      summary: Lightspeed Create a Sale
      operationId: createSale
      security:
      - OAuth2: [sales.write]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Sale'
            examples:
              CreateSaleRequestExample:
                summary: Default createSale request
                x-microcks-default: true
                value:
                  id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                  outlet_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                  register_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                  user_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                  customer_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                  status: CLOSED
                  total_price: 8.96
                  total_tax: 20.69
                  line_items:
                  - {}
      responses:
        '201':
          description: Sale created.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /sales/{id}:
    get:
      summary: Lightspeed Get a Sale by ID
      operationId: getSale
      security:
      - OAuth2: [sales.read]
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: The sale.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Sale'
              examples:
                GetSale200Example:
                  summary: Default getSale 200 response
                  x-microcks-default: true
                  value:
                    id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                    outlet_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                    register_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                    user_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                    customer_id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                    status: LAYBY
                    total_price: 39.32
                    total_tax: 37.15
                    line_items:
                    - {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /customers:
    get:
      summary: Lightspeed List Customers
      operationId: listCustomers
      security:
      - OAuth2: [customers.read]
      responses:
        '200':
          description: A page of customers.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      summary: Lightspeed Create a Customer
      operationId: createCustomer
      security:
      - OAuth2: [customers.write]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Customer'
            examples:
              CreateCustomerRequestExample:
                summary: Default createCustomer request
                x-microcks-default: true
                value:
                  id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                  first_name: Sample first_name
                  last_name: Sample last_name
                  email: guest@example.com
                  phone: example
                  customer_code: example
      responses:
        '201':
          description: Customer created.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /customers/{id}:
    get:
      summary: Lightspeed Get a Customer by ID
      operationId: getCustomer
      security:
      - OAuth2: [customers.read]
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: The customer.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer'
              examples:
                GetCustomer200Example:
                  summary: Default getCustomer 200 response
                  x-microcks-default: true
                  value:
                    id: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
                    first_name: Sample first_name
                    last_name: Sample last_name
                    email: guest@example.com
                    phone: example
                    customer_code: example
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /gift_cards:
    get:
      summary: Lightspeed List Gift Cards
      operationId: listGiftCards
      security:
      - OAuth2: [products.read]
      responses:
        '200':
          description: A page of gift cards.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      summary: Lightspeed Create a Gift Card
      operationId: createGiftCard
      security:
      - OAuth2: [products.write]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            examples:
              CreateGiftCardRequestExample:
                summary: Default createGiftCard request
                x-microcks-default: true
                value: {}
      responses:
        '201':
          description: Gift card created.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  securitySchemes:
    OAuth2:
      type: oauth2
      description: OAuth 2.0 authorization-code flow with scope-based access.
      flows:
        authorizationCode:
          authorizationUrl: https://secure.retail.lightspeed.app/connect
          tokenUrl: https://{domainPrefix}.retail.lightspeed.app/api/1.0/token
          scopes:
            products.read: Read products, brands, and inventory.
            products.write: Create or modify products, brands, and inventory.
            sales.read: Read sales transactions.
            sales.write: Create or modify sales.
            customers.read: Read customers.
            customers.write: Create or modify customers.
  schemas:
    Brand:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        description:
          type: string
        deleted_at:
          type: string
          format: date-time
          nullable: true
    Product:
      type: object
      properties:
        id:
          type: string
          format: uuid
        source_id:
          type: string
        handle:
          type: string
        sku:
          type: string
        name:
          type: string
        description:
          type: string
        price_excluding_tax:
          type: number
          format: float
        brand_id:
          type: string
          format: uuid
        active:
          type: boolean
    Sale:
      type: object
      properties:
        id:
          type: string
          format: uuid
        outlet_id:
          type: string
          format: uuid
        register_id:
          type: string
          format: uuid
        user_id:
          type: string
          format: uuid
        customer_id:
          type: string
          format: uuid
        status:
          type: string
          enum: [OPEN, CLOSED, ONACCOUNT, LAYBY, VOIDED]
        total_price:
          type: number
          format: float
        total_tax:
          type: number
          format: float
        line_items:
          type: array
          items:
            type: object
    Customer:
      type: object
      properties:
        id:
          type: string
          format: uuid
        first_name:
          type: string
        last_name:
          type: string
        email:
          type: string
          format: email
        phone:
          type: string
        customer_code:
          type: string