Lightspeed Commerce Inventory API

Inventory operations

Business capability
Inventory Management BC-530

Operations 10

GET /custom_inventory_adjustment_reasons List custom inventory adjustment reasons #
POST /custom_inventory_adjustment_reasons Create a custom inventory adjustment reason #
PUT /custom_inventory_adjustment_reasons/{custom_reason_id} Update a custom inventory adjustment reason #
POST /inventory List inventory records #
POST /inventory/reorder_points Set reorder points #
GET /inventory/{product_id} List inventory records for a single product #
POST /inventory_levels List inventory levels #
GET /inventory_levels/{product_id} List inventory levels for a single product. #
GET /stock_adjustments List stock adjustments #
POST /stock_adjustments Create stock adjustments #

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-inventory-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-inventory-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: x-series.api@lightspeedhq.com
    name: Lightspeed Developer Relations
    url: https://developers.retail.lightspeed.app
  description: Lightspeed Retail (X-Series) API.
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  termsOfService: https://developers.lightspeedhq.com/terms
  title: 2026-07 Inventory API
  version: 2026-07
servers:
- url: https://{domain_prefix}.retail.lightspeed.app/api/2026-07
  variables:
    domain_prefix:
      default: example
      description: Domain prefix of the store to be operated on
security:
- bearerAuth: []
tags:
- description: Inventory operations
  name: Inventory
paths:
  /custom_inventory_adjustment_reasons:
    get:
      description: 'Returns a paginated list of custom inventory adjustment reasons for the authenticated retailer.


        🔒 Requires: `inventory:write` scope'
      operationId: ListCustomInventoryAdjustmentReasons
      parameters:
      - description: The maximum number of items to be returned in the response.
        in: query
        name: page_size
        schema:
          default: 100
          maximum: 100
          type: integer
      - description: Return records with a version greater than this value.
        in: query
        name: after
        schema:
          format: int64
          type: integer
      - description: Return records with a version less than this value.
        in: query
        name: before
        schema:
          format: int64
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomInventoryAdjustmentReasonCollection'
          description: The list of custom inventory adjustment reasons was successfully retrieved.
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      summary: List custom inventory adjustment reasons
      tags:
      - Inventory
    post:
      description: 'Creates a new custom inventory adjustment reason for the authenticated retailer.


        🔒 Requires: `inventory:write` scope'
      operationId: CreateCustomInventoryAdjustmentReason
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomInventoryAdjustmentReasonRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomInventoryAdjustmentReasonSingleton'
          description: The custom inventory adjustment reason was successfully created.
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '409':
          description: Conflict
        '422':
          description: Unprocessable Entity
      summary: Create a custom inventory adjustment reason
      tags:
      - Inventory
  /custom_inventory_adjustment_reasons/{custom_reason_id}:
    put:
      description: 'Updates a custom inventory adjustment reason.


        🔒 Requires: `inventory:write` scope'
      operationId: UpdateCustomInventoryAdjustmentReason
      parameters:
      - description: The ID of the custom inventory adjustment reason to update.
        in: path
        name: custom_reason_id
        required: true
        schema:
          format: uuid
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCustomInventoryAdjustmentReasonRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomInventoryAdjustmentReasonSingleton'
          description: The custom inventory adjustment reason was successfully updated.
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '409':
          description: Conflict
        '422':
          description: Unprocessable Entity
      summary: Update a custom inventory adjustment reason
      tags:
      - Inventory
  /inventory:
    post:
      description: 'Returns a paginated list of inventory records.


        🔒 Requires: `inventory:read` scope'
      operationId: ListInventoryRecords
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InventoryRequest'
      responses:
        '200':
          content:
            application/json:
              example:
              - current_inventory_level: 10
                id: 7896f269-2b20-ff38-602a-ace60b172b12
                outlet_id: b8ca3a65-0183-11e4-fbb5-2816d2677218
                product_id: a0369f1f-9083-11e4-f68e-d26298afef03
                quantity_to_procure: 0
                reorder_amount: 20
                reorder_method: FIXED
                reorder_point: 5
                reorder_target: 25
                version: 1639940
              - current_inventory_level: 6
                id: c15190b9-0c37-6b52-54e2-f804b00fa8c5
                outlet_id: b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4
                product_id: a0369f1f-9083-11e4-f68e-d26298afef03
                quantity_to_procure: 2
                reorder_amount: 54
                reorder_method: MIN_MAX
                reorder_point: 10
                reorder_target: 60
                version: 1639941
              - current_inventory_level: 0
                id: 0b32fb5c-9cff-5d26-2b64-1593ed2a463b
                outlet_id: b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4
                product_id: a0369f1f-9083-11e4-f68e-cc284567c50d
                quantity_to_procure: 12
                reorder_amount: null
                reorder_method: null
                reorder_point: null
                reorder_target: null
                version: 3426971
              schema:
                items:
                  $ref: '#/components/schemas/Inventory'
                type: array
          description: ''
      summary: List inventory records
      tags:
      - Inventory
  /inventory/reorder_points:
    post:
      description: 'Sets reorder points for one or more products at specific outlets. The method must be consistent across all outlets for a product and within the same variant family.


        🔒 Requires: `inventory:write` scope'
      operationId: SetReorderPoints
      requestBody:
        content:
          application/json:
            example:
            - method: FIXED
              outlet_id: b8ca3a65-0183-11e4-fbb5-2816d2677218
              product_id: a0369f1f-9083-11e4-f68e-d26298afef03
              reorder_amount: 20
              reorder_point: 5
            - method: FIXED
              outlet_id: b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4
              product_id: a0369f1f-9083-11e4-f68e-d26298afef03
              reorder_amount: 30
              reorder_point: 10
            schema:
              $ref: '#/components/schemas/SetReorderPointsRequest'
        description: An array of 1 to 1000 reorder point entries to upsert.
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                - method: FIXED
                  outlet_id: b8ca3a65-0183-11e4-fbb5-2816d2677218
                  product_id: a0369f1f-9083-11e4-f68e-d26298afef03
                  reorder_amount: 20
                  reorder_point: 5
                - method: FIXED
                  outlet_id: b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4
                  product_id: a0369f1f-9083-11e4-f68e-d26298afef03
                  reorder_amount: 30
                  reorder_point: 10
              schema:
                $ref: '#/components/schemas/ReorderPointsCollection'
          description: Reorder points set successfully.
        '403':
          description: Forbidden
        '422':
          content:
            application/json:
              schema:
                type: object
          description: Validation failed.
      summary: Set reorder points
      tags:
      - Inventory
  /inventory/{product_id}:
    get:
      description: 'Returns inventory records for a single product at all outlets.


        🔒 Requires: `inventory:read` scope'
      operationId: ListProductInventoryRecords
      parameters:
      - description: 'The product to fetch inventory levels for. When combined with variants: true, it''s treated as a root product

          ID and matches all variants of that product; otherwise it matches the exact product.'
        in: path
        name: product_id
        required: true
        schema:
          type: string
      - description: The lower limit for the version numbers to be included in the response.
        in: query
        name: after
        schema:
          format: int64
          type: integer
      - description: The upper limit for the version numbers to be included in the response.
        in: query
        name: before
        schema:
          format: int64
          type: integer
      - description: The maximum number of items to be returned in the response.
        in: query
        name: page_size
        schema:
          default: 1000
          maximum: 5000
          type: integer
      - description: 'When true (and product_id is set), matches all variant products sharing the same root_product_id, rather

          than just the exact product.'
        in: query
        name: variants
        schema:
          default: false
          type: boolean
      - description: Whether to include inventory records for deleted products.
        in: query
        name: include_deleted
        schema:
          default: false
          type: boolean
      - description: Whether to order the results ascending or descending by version.
        in: query
        name: order_direction
        schema:
          default: asc
          enum:
          - asc
          - desc
          type: string
      responses:
        '200':
          content:
            application/json:
              example:
              - average_cost: 100
                current_inventory_level: 21
                id: 18e86393-ebdf-fbba-5455-4120bc6773fd
                outlet_id: b8ca3a65-0183-11e4-fbb5-2816d2677218
                product_id: b8ca3a65-0183-11e4-fbb5-7988a6ed80f8
                quantity_to_procure: 0
                reorder_amount: 20
                reorder_method: FIXED
                reorder_point: 5
                reorder_target: 25
                version: 2398817047
              - average_cost: 100
                current_inventory_level: 42
                id: eb650394-9d49-8985-41f5-51507838d3b7
                outlet_id: 06bf537b-c783-11e6-f6b9-53a81bd6b215
                product_id: b8ca3a65-0183-11e4-fbb5-7988a6ed80f8
                quantity_to_procure: 3
                reorder_amount: 18
                reorder_method: MIN_MAX
                reorder_point: 5
                reorder_target: 60
                version: 2398817048
              - average_cost: 0
                current_inventory_level: 19
                id: a020eed7-7f96-3b50-e133-a435dfbc242b
                outlet_id: b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4
                product_id: b8ca3a65-0183-11e4-fbb5-7988a6ed80f8
                quantity_to_procure: 0
                reorder_amount: null
                reorder_method: null
                reorder_point: null
                reorder_target: null
                version: 3630064802
              schema:
                items:
                  $ref: '#/components/schemas/Inventory'
                type: array
          description: ''
      summary: List inventory records for a single product
      tags:
      - Inventory
  /inventory_levels:
    post:
      description: 'Returns a paginated list of inventory levels.


        🔒 Requires: `inventory:read` scope'
      operationId: ListInventoryLevels
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InventoryLevelsRequest'
      responses:
        '200':
          content:
            application/json:
              example:
              - average_cost: 10
                current_inventory_level: 4
                location_id: 0242ac12-0002-11e9-e8c4-659494e196e3
                name: string
                product_id: 0242ac12-0002-11e9-e8c4-659494e33155
                quantity_to_procure: 0
                reorder_amount: 22
                reorder_method: FIXED
                reorder_target: 24
                reorder_threshold: 2
                root_product_id: 0242ac12-0002-11e9-e8c4-659494e33155
                total_cost: 40
              - average_cost: 10
                current_inventory_level: 4
                location_id: 0242ac12-0002-11e9-e8c4-659494e196e3
                name: string
                product_id: 0242ac12-0002-11e9-e8c4-659494e33156
                quantity_to_procure: 0
                reorder_amount: 7
                reorder_method: MIN_MAX
                reorder_target: 11
                reorder_threshold: 1
                root_product_id: 0242ac12-0002-11e9-e8c4-659494e33156
                total_cost: 40
              - average_cost: 5
                current_inventory_level: 15
                location_id: 0242ac12-0002-11e9-e8c4-659494e196e3
                name: string
                product_id: 0242ac12-0002-11e9-e8c4-659494e33157
                quantity_to_procure: 0
                root_product_id: 0242ac12-0002-11e9-e8c4-659494e33157
                total_cost: 75
              schema:
                items:
                  $ref: '#/components/schemas/InventoryLevel'
                type: array
          description: ''
      summary: List inventory levels
      tags:
      - Inventory
  /inventory_levels/{product_id}:
    get:
      description: 'Returns a paginated list of inventory levels for a single product.


        🔒 Requires: `inventory:read` scope'
      operationId: ListProductInventoryLevels
      parameters:
      - description: The product to fetch inventory levels for.
        in: path
        name: product_id
        required: true
        schema:
          format: uuid
          type: string
      - description: Whether to include inactive products in the response.
        in: query
        name: include_inactive
        schema:
          default: false
          type: boolean
      responses:
        '200':
          content:
            application/json:
              example:
              - average_cost: 10
                current_inventory_level: 4
                location_id: 0242ac12-0002-11e9-e8c4-659494e196e3
                name: string
                product_id: 0242ac12-0002-11e9-e8c4-659494e33155
                quantity_to_procure: 0
                reorder_amount: 22
                reorder_method: FIXED
                reorder_target: 24
                reorder_threshold: 2
                root_product_id: 0242ac12-0002-11e9-e8c4-659494e33155
                total_cost: 40
              - average_cost: 10
                current_inventory_level: 4
                location_id: 0242ac12-0002-11e9-e8c4-659494e196e4
                name: string
                product_id: 0242ac12-0002-11e9-e8c4-659494e33155
                quantity_to_procure: 0
                reorder_amount: 7
                reorder_method: MIN_MAX
                reorder_target: 11
                reorder_threshold: 1
                root_product_id: 0242ac12-0002-11e9-e8c4-659494e33155
                total_cost: 40
              - average_cost: 10
                current_inventory_level: 15
                location_id: 0242ac12-0002-11e9-e8c4-659494e196e5
                name: string
                product_id: 0242ac12-0002-11e9-e8c4-659494e33155
                quantity_to_procure: 0
                root_product_id: 0242ac12-0002-11e9-e8c4-659494e33155
                total_cost: 150
              schema:
                items:
                  $ref: '#/components/schemas/InventoryLevel'
                type: array
          description: ''
      summary: List inventory levels for a single product.
      tags:
      - Inventory
  /stock_adjustments:
    get:
      description: 'Returns a paginated list of stock adjustments for the authenticated retailer.


        🔒 Requires: `inventory:write` scope'
      operationId: ListStockAdjustments
      parameters:
      - description: The maximum number of items to be returned in the response.
        in: query
        name: page_size
        schema:
          default: 100
          maximum: 1000
          type: integer
      - description: Return records with a version greater than this value.
        in: query
        name: after
        schema:
          format: int64
          type: integer
      - description: Return records with a version less than this value.
        in: query
        name: before
        schema:
          format: int64
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StockAdjustmentCollection'
          description: The list of stock adjustments was successfully retrieved.
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      summary: List stock adjustments
      tags:
      - Inventory
    post:
      description: 'Creates one or more stock adjustments in a single batch (1–1000 items per request).


        🔒 Requires: `inventory:write` scope'
      operationId: CreateStockAdjustments
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateStockAdjustmentsRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StockAdjustmentBatchResponse'
          description: The stock adjustments were successfully created.
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '422':
          content:
            application/json:
              schema:
                type: object
          description: Unprocessable Entity
      summary: Create stock adjustments
      tags:
      - Inventory
components:
  schemas:
    Version:
      description: An object containing the highest and lowest version numbers for all items of the returned collection.
      properties:
        max:
          description: Highest version number of the payload, or `null` when the result set is empty.
          format: int64
          type:
          - integer
          - 'null'
        min:
          description: Lowest version number of the payload, or `null` when the result set is empty.
          format: int64
          type:
          - integer
          - 'null'
      required:
      - max
      - min
      type: object
    StockAdjustmentCollection:
      description: A paginated list of stock adjustments.
      properties:
        data:
          description: An array of stock adjustments.
          items:
            $ref: '#/components/schemas/StockAdjustment'
          type: array
        version:
          $ref: '#/components/schemas/Version'
      required:
      - data
      - version
      title: Stock Adjustment Collection
      type: object
    StockAdjustmentBatchResponse:
      description: The response wrapper for a batch stock adjustment create.
      properties:
        data:
          description: The stock adjustments that were created, in the same order as the request.
          items:
            $ref: '#/components/schemas/StockAdjustment'
          type: array
      required:
      - data
      title: Stock Adjustment Batch Response
      type: object
    InventoryRequest:
      properties:
        after:
          description: The lower limit for the version numbers to be included in the response.
          format: int64
          type: integer
        before:
          description: The upper limit for the version numbers to be included in the response.
          format: int64
          type: integer
        include_deleted:
          default: false
          description: Whether to include inventory records for deleted products.
          type: boolean
        product_id:
          description: "Optional filter to restrict results to the specified product. When combined with variants: true, it's \ntreated as a root product ID and matches all variants of that product; otherwise it matches the exact \nproduct."
          format: uuid
          type: string
        size:
          default: 1000
          description: The maximum number of inventory records to return.
          format: int64
          maximum: 5000
          type: integer
        sort_direction:
          default: desc
          description: Whether to sort the response by ascending or descending.
          enum:
          - asc
          - desc
          type: string
        variants:
          default: false
          description: 'When true (and product_id is set), matches all variant products sharing the same root_product_id, rather

            than just the exact product.'
          type: boolean
    CreateStockAdjustmentItem:
      additionalProperties: false
      description: A single stock adjustment to create as part of a batch.
      properties:
        custom_inventory_adjustment_reason_id:
          description: Required when `reason` is `CUSTOM`; must be omitted otherwise.
          format: uuid
          maxLength: 36
          minLength: 1
          type: string
        outlet_id:
          description: The ID of the outlet where the adjustment is recorded.
          format: uuid
          maxLength: 36
          minLength: 1
          type: string
        product_id:
          description: The ID of the product to adjust.
          format: uuid
          maxLength: 36
          minLength: 1
          type: string
        quantity:
          description: Quantity to adjust. Must be a numeric string (e.g. `"1"` or `"-3"`). Negative for DAMAGE/EXPIRY/etc., positive for STOCK_FOUND/SAMPLE_FOR_SALE.
          example: '1'
          maxLength: 32
          type: string
        reason:
          $ref: '#/components/schemas/StockAdjustmentReason'
      required:
      - product_id
      - outlet_id
      - quantity
      - reason
      title: Create Stock Adjustment Item
      type: object
    ReorderPointsCollection:
      description: The response wrapper for the reorder points upsert endpoint.
      properties:
        data:
          description: An array of upserted reorder point entries, in the same order as the request.
          items:
            $ref: '#/components/schemas/ReorderPointEntry'
          type: array
      required:
      - data
      title: Reorder Points Collection
      type: object
    InventoryLevel:
      properties:
        average_cost:
          description: 'The average cost of inventory available to sell.


            🔒 Requires: `product:cost:view` scope'
          format: double
          type: number
        brand_id:
          format: uuid
          type: string
        current_inventory_level:
          description: Total inventory available to sell.
          format: double
          type: number
        location_id:
          format: uuid
          type: string
        name:
          type: string
        product_id:
          format: uuid
          type: string
        product_type_id:
          format: uuid
          type: string
        quantity_to_procure:
          description: Quantity of stock to procure in order to satisfy current fulfilments and service orders.
          format: double
          type: number
        reorder_amount:
          description: The quantity of stock to reorder. For `FIXED`, this is the static amount configured when the reorder method was set up. For `MIN_MAX`, this is dynamically computed as `reorder_target` minus `current_inventory_level` (or zero if current stock already meets or exceeds the target). Omitted if no reorder method is configured.
          format: double
          type: number
        reorder_method:
          description: The reorder strategy in use. `FIXED` uses a static reorder amount each time the threshold is reached. `MIN_MAX` dynamically computes the reorder amount to bring stock up to the configured maximum. Omitted if no reorder method is configured.
          enum:
          - FIXED
          - MIN_MAX
          - null
          type:
          - string
          - 'null'
        reorder_target:
          description: The target inventory level for replenishment. For `FIXED`, this equals `reorder_threshold` + `reorder_amount`. For `MIN_MAX`, this is the maximum inventory level to restock to. Omitted if no reorder method is configured.
          format: double
          type: number
        reorder_threshold:
          description: The inventory level at which reordering is triggered. For `FIXED`, this is the reorder point below which a reorder is suggested. For `MIN_MAX`, this is the minimum inventory level. Omitted if no reorder method is configured.
          format: double
          type: number
        root_product_id:
          description: The root product ID of the product's variant family.
          format: uuid
          type: string
        supplier_id:
          format: uuid
          type: string
        total_cost:
          description: The total cost of inventory available to sell.
          format: double
          type: number
    UpdateCustomInventoryAdjustmentReasonRequest:
      description: Parameters for updating a custom inventory adjustment reason.
      properties:
        enabled:
          description: Whether the reason can be selected when creating stock adjustments.
          type: boolean
        name:
          description: New display name. Must remain unique within the retailer. Max 30 characters.
          maxLength: 30
          type: string
      title: Update Custom Inventory Adjustment Reason Request
      type: object
    ReorderPointEntry:
      description: A reorder point entry returned by the upsert endpoint.
      properties:
        method:
          description: The reorder strategy in use for this product/outlet pair.
          enum:
          - FIXED
          - MIN_MAX
          type: string
        outlet_id:
          description: The ID of the outlet the reorder point applies to.
          format: uuid
          type: string
        product_id:
          description: The ID of the product the reorder point applies to.
          format: uuid
          type: string
        reorder_amount:
          description: The static quantity to order. Present only when `method` is `FIXED`.
          type: number
        reorder_point:
          description: The minimum inventory level below which a product is automatically suggested for reordering.
          type: number
        reorder_target:
          description: The desired stock level to restore to when reordering. Present only when `method` is `MIN_MAX`.
          type: number
      required:
      - product_id
      - outlet_id
      - method
      - reorder_point
      title: Reorder Point Entry
      type: object
    StockAdjustment:
      description: A recorded stock adjustment.
      properties:
        created_at:
          description: The creation timestamp in RFC 3339 format.
          format: date-time
          type: string
        custom_inventory_adjustment_reason_id:
          description: The ID of the custom reason. Present only when `reason` is `CUSTOM`; omitted otherwise.
          format: uuid
          type: string
        id:
          description: Auto-generated object ID.
          format: uuid
          type: string
        outlet_id:
          description: The ID of the outlet where the adjustment was recorded.
          format: uuid
          type: string
        product_id:
          description: The ID of the product that was adjusted.
          format: uuid
          type: string
        quantity:
          description: Quantity to adjust.
          type: string
        reason:
          $ref: '#/components/schemas/StockAdjustmentReason'
        updated_at:
          description: The last update timestamp in RFC 3339 format.
          format: date-time
          type: string
        user_id:
          description: The ID of the user who created the adjustment.
          format: uuid
          type: string
        version:
          description: Auto-incrementing object version number.
          format: int64
          type: integer
      required:
      - id
      - user_id
      - product_id
      - outlet_id
      - quantity
      - reason
      - created_at
      - updated_at
      - version
      title: Stock Adjustment
      type: object
    CustomInventoryAdjustmentReasonSingleton:
      description: A single custom inventory adjustment reason response.
      properties:
        data:
          $ref: '#/components/schemas/CustomInventoryAdjustmentReason'
      required:
      - data
      title: Custom Inventory Adjustment Reason Response
      type: object
    CustomInventoryAdjustmentReasonCollection:
      description: A paginated list of custom inventory adjustment reasons.
      properties:
        data:
          description: An array of custom inventory adjustment reasons.
          items:
            $ref: '#/components/schemas/CustomInventoryAdjustmentReason'
          type: array
        version:
          $ref: '#/components/schemas/Version'
      required:
      - data
      - version
      title: Custom Inventory Adjustment Reason Collection
      type: object
    Inventory:
      properties:
        average_cost:
          description: The average cost of inventory available to sell.
          format: double
          type:
          - number
          - 'null'
        current_inventory_level:
          description: Current inventory level.
          format: double
          type: number
        deleted_at:
          description: The deletion timestamp in UTC, or null if not deleted.
          format: date-time
          type:
          - string
          - 'null'
        id:
          description: Auto-generated object ID.
          type: string
        outlet_id:
          description: The ID of the outlet associated with this inventory record.
          type: string
        product_id:
          description: The ID of the product associated with this inventory record.
          type: string
        quantity_to_procure:
          description: Quantity of stock to procure in order to satisfy current fulfilments and service orders.
          format: double
          type: number
        reorder_amount:
          description: The quantity to order to reach the desired stock level. For the `FIXED` method, this is a static amount that was set when the reorder method was configured. For `MIN_MAX`, this is dynamically computed as the difference between reorder_target and current_inventory_level, or zero if current stock exceeds the target. This computation is independent of reorder_point and may produce a non-zero value even when current_inventory_level is above the reorder point. It is null if no reorder method is configured.
          format: double
          type:
          - number
          - 'null'
        reorder_method:
          description: The reorder strategy in use. Either `FIXED` or `MIN_MAX`. Null if no reorder method is configured.
          enum:
          - FIXED
          - MIN_MAX
          - null
          type:
          - string
          - 'null'
        reorder_point:
          description: The inventory level at which a product should be automatically included in stock orders.
          format: double
          type:
          - number
          - 'null'
        reorder_target:
          description: The desired stock level to restore to when reordering. For reorder_method `MIN_MAX`, this is the target the reorder amount is computed against. For `FIXED`, this equals reorder_point + reorder_amount. Null if no reorder method is configured.
          format: double
          type:
          - number
          - 'null'
        version:
          description: Auto-incrementing

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