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.
REST API for Lightspeed Retail X-Series, formerly Vend. Covers products, customers, sales, inventory, suppliers, registers, taxes, and outlets.
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