Fluent Commerce Logo
Docs

Inventory Catalogue Workflow Interface Contracts

Interface Contract

Changed on:

31 Aug 2026

Detailed Description

The below Interface Contracts document the interaction points with the Inventory Catalogue workflow. These allow you to ensure that any integration made into the workflow will enable the workflow to work correctly.

UpdateInventoryQty Event

This event is used anytime an external (anything from outside this workflow) creation of inventory quantities is triggered.

Request Payload

PropertyDescriptionTypeRequired?
itemsThe list of items whose inventory positions to be updatedListRequired
Item Definition
PropertyDescriptionTypeRequired?Notes
`fulfilmentId`The fulfilment ID against which the inventory quantities are to be created/updatedStringRequired
`skuRef`The SKU reference of the inventory positionStringRequired
`locationRef`The SKU reference of the inventory positionStringRequired
`reserveQty`The count of RESERVED quantitiesIntConditionalOnly required when reserve stock
`correctionQty`The count of CORRECTED quantitiesIntConditionalOnly required when confirm a fulfilment
`saleQty`The count of SALE quantitiesIntConditionalOnly required when confirm a fulfilment
`cancelQty`The count of CANCELLED quantitiesIntConditionalOnly required when cancel a fulfilment

Event Request Example

1{
2    "name": "UpdateInventoryQty",
3    "retailerId": "{{retailer.id}}",
4    "entityRef": "{{inventoryCatalogue.ref}}",
5    "entityType": "INVENTORY_CATALOGUE",
6    "entitySubtype": "{{inventoryCatalogue.type}}",
7    "rootEntityType": "INVENTORY_CATALOGUE",
8    "rootEntityRef": "{{inventoryCatalogue.ref}}",
9    "attributes": {
10        "items": [
11            {
12                "skuRef": "{{product.ref}}",
13                "locationRef": "{{location.ref}}",
14                "fulfilmentId": "100",
15                "reserveQty": -5,
16                "correctionQty": 0,
17                "saleQty": 0,
18                "cancelQty": 0
19            }
20        ]
21    }
22}

Inventory Batch Event 

This event is generated by the Inventory Batch API and is defined in the `event` field of the batch payload (see Submit Inventory Batches With Attributes)

Request Payload

PropertyDescriptionTypeRequired?
inventoryPositionThe inventory position that has changedObjectRequired
`source`The batch source systemStringOptional
`trailLogs`The job and batch lineageArrayOptional

`inventoryPosition` Definition
PropertyDescriptionTypeRequiredNotes
`ref`The inventory position referenceStringOptionalFormat: `locationRef:productRef`
`productRef`The product reference associated with the inventory positionStringRequired
`locationRef`The location reference associated with the inventory positionStringRequired
`qty`The quantity associated with the inventory positionIntegerRequired
`correctedQty`The corrected quantityIntegerDeprecated
`inventoryQuantity`Additional inventory quantity dataObjectOptionalContains custom quantity details and attributes

`inventoryQuantity` Definition

PropertyDescriptionTypeRequiredNotes
`ref`Reference for the custom inventory quantityStringOptional
`type`Type of the custom inventory quantityStringOptionalE.g., `"PURCHASE_ORDER"`
`status`Status of the custom inventory quantityStringOptionalE.g., `"ACTIVE"`
`attributes`Custom attributes for the custom inventory quantityObjectOptionalContains key-value pairs for additional data
1{
2  "name": "InventoryChanged",  //matching the `event` field in the batch payload
3  "accountId": "{{account.id}}",
4  "retailerId": "{{retailer.id}}",
5  "entityRef": "{{inventoryCatalogue.ref}}",
6  "entityType": "INVENTORY_CATALOGUE",
7  "entitySubtype": "{{inventoryCatalogue.type}}",
8  "rootEntityType": "INVENTORY_CATALOGUE",
9  "rootEntityRef": "{{inventoryCatalogue.ref}}",
10  "source": "your-batch-source", // Optional
11  "trailLogs": [
12    "job:{{job.id}}",
13    "batch:{{batch.id}}"
14  ],
15  "attributes": {
16    "inventoryPosition": {
17      "ref": "{{location.ref}}:{{product.ref}}", // optional, format: "locationRef:productRef"
18      "productRef": "{{product.ref}}",
19      "locationRef": "{{location.ref}}",
20      "qty": 40,
21      "correctedQty": 0, // deprecated
22      "inventoryQuantity": { // optional
23        "ref": "{{inventoryQuantity.ref}}", // optional
24        "type": "{{inventoryQuantity.type}}", // optional
25        "status": "{{inventoryQuantity.status}}", // optional
26        "attributes": { // optional, additional attributes e.g. countryOfOrigin, expectedOn, associationRef etc.
27            ... 
28        }
29      }
30    }
31  }
32}
33