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 object version number. format: int64 type: integer title: Inventory type: object CustomInventoryAdjustmentReason: description: A custom inventory adjustment reason that retailers can use when creating stock adjustments. properties: created_at: description: The creation timestamp in RFC 3339 format. format: date-time type: string enabled: description: Whether the reason can be selected when creating stock adjustments. type: boolean id: description: Auto-generated object ID. format: uuid type: string is_from_external_source: description: '`true` when the reason was created via the API; `false` when created via the X-Series UI.' type: boolean name: description: Display name of the reason. Unique within the retailer. Max 30 characters. maxLength: 30 type: string type: description: Whether the reason can be used for positive (stock-in) or negative (stock-out) adjustments. enum: - POSITIVE - NEGATIVE type: string updated_at: description: The last update timestamp in RFC 3339 format. format: date-time type: string version: description: Auto-incrementing object version number. format: int64 type: integer required: - id - name - enabled - type - is_from_external_source - version - created_at - updated_at title: Custom Inventory Adjustment Reason type: object ReorderPointMinMaxRequestItem: additionalProperties: false description: A reorder point entry using the `MIN_MAX` method. properties: method: description: The reorder method. Must be `MIN_MAX`. enum: - MIN_MAX type: string outlet_id: description: The ID of the outlet the reorder point applies to. format: uuid maxLength: 36 type: string product_id: description: The ID of the product the reorder point applies to. format: uuid maxLength: 36 type: string 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. type: number required: - product_id - outlet_id - method - reorder_point - reorder_target title: Reorder Point Min/Max Request Item type: object CreateStockAdjustmentsRequest: additionalProperties: false description: A batch of 1–1000 stock adjustments to create. properties: stock_adjustments: description: The stock adjustments to create. items: $ref: '#/components/schemas/CreateStockAdjustmentItem' maxItems: 1000 minItems: 1 type: array required: - stock_adjustments title: Create Stock Adjustments Request type: object SetReorderPointsRequest: description: An array of reorder point entries to upsert. items: discriminator: mapping: FIXED: '#/components/schemas/ReorderPointFixedRequestItem' MIN_MAX: '#/components/schemas/ReorderPointMinMaxRequestItem' propertyName: method oneOf: - $ref: '#/components/schemas/ReorderPointFixedRequestItem' - $ref: '#/components/schemas/ReorderPointMinMaxRequestItem' maxItems: 1000 minItems: 1 title: Set Reorder Points Request type: array ReorderPointFixedRequestItem: additionalProperties: false description: A reorder point entry using the `FIXED` method. properties: method: description: The reorder method. Must be `FIXED`. enum: - FIXED type: string outlet_id: description: The ID of the outlet the reorder point applies to. format: uuid maxLength: 36 type: string product_id: description: The ID of the product the reorder point applies to. format: uuid maxLength: 36 type: string reorder_amount: description: The static quantity to order each time the reorder point is triggered. type: number reorder_point: description: The minimum inventory level below which a product is automatically suggested for reordering. type: number required: - product_id - outlet_id - method - reorder_point - reorder_amount title: Reorder Point Fixed Request Item type: object InventoryLevelsRequest: properties: group_variants: default: false description: 'If filtering by `root_product_ids` and `group_variants` is true, one aggregated level will be returned for each variant family at each outlet.' type: boolean include_composites: default: false description: Include composite products in the response. type: boolean include_inactive: default: false description: Include inactive products in the response. type: boolean location_ids: description: Optional outlet IDs to filter response by. items: format: uuid type: string maxItems: 1000 type: array offset: default: 0 description: How many inventory levels to skip. format: int64 type: integer product_ids: description: Optional product IDs to filter response by. Mutually exclusive with `root_product_ids`. When omitted, returns inventory levels for all products. items: format: uuid type: string maxItems: 1000 type: array root_product_ids: description: Optional root product IDs to filter response by. Mutually exclusive with `product_ids`. When omitted, returns inventory levels for all products. items: format: uuid type: string maxItems: 1000 type: array size: default: 100 description: How many inventory levels to return. format: int64 maximum: 10000 type: integer sort_direction: default: desc description: Whether to sort the response ascending or descending. enum: - asc - desc type: string sort_type: default: total_count description: Which response field to sort by. enum: - total_count - total_cost - average_cost - reorder_point - reorder_amount - product_name - created_at type: string supplier_ids: description: Optional supplier IDs to filter response by. items: format: uuid type: string maxItems: 1000 type: array to_be_procured_only: default: false description: Only include inventory with a positive quantity to procure. type: boolean StockAdjustmentReason: description: 'The reason for a stock adjustment. Negative reasons (require `quantity` < 0): `DAMAGE`, `EXPIRY`, `INTERNAL_USE`, `THEFT`, `DONATION`. Positive reasons (require `quantity` > 0): `STOCK_FOUND`, `SAMPLE_FOR_SALE`. For `CUSTOM`, the sign must match the referenced custom reason''s `type`.' enum: - DAMAGE - EXPIRY - INTERNAL_USE - THEFT - DONATION - STOCK_FOUND - SAMPLE_FOR_SALE - CUSTOM title: Stock Adjustment Reason type: string CreateCustomInventoryAdjustmentReasonRequest: description: Parameters for creating a new custom inventory adjustment reason. properties: enabled: description: Whether the reason can be selected when creating stock adjustments. type: boolean name: description: Display name of the reason. Must be unique within the retailer. Max 30 characters. maxLength: 30 type: string type: description: Whether the reason applies to positive (stock-in) or negative (stock-out) adjustments. enum: - POSITIVE - NEGATIVE type: string required: - name - enabled - type title: Create Custom Inventory Adjustment Reason Request type: object securitySchemes: bearerAuth: description: Bearer Token for API authentication. scheme: bearer type: http externalDocs: description: List of tz database time zones url: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones