CanopyDocs
Reference

Inventory

GET
/api/inventory/skus

Authorization

oauth2 inventory:read
AuthorizationBearer <token>

OAuth2 client-credentials grant.

In: header

Scope: inventory:read

Query Parameters

page?integer
Range0 < value
Default1
limit?integer
Range0 < value <= 500
Default20
search?string

Matches skuCode, name, or barcode.

Lengthlength <= 100
sortBy?string
Lengthlength <= 50
sortOrder?string
Default"asc"

Value in

  • "asc"
  • "desc"
isActive?string

Value in

  • "true"
  • "false"
isKit?string

Value in

  • "true"
  • "false"
hasStock?string

Value in

  • "true"
  • "false"
storageAttributeId?string

Header Parameters

X-Client-Id?string

Scope results to one client (brand). Resolve a client name to its id via GET /api/clients/lookup. Validated against the credential's tenant; ignored by a client-pinned credential.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/inventory/skus"
{  "success": true,  "data": [    {      "id": "string",      "clientId": "string",      "skuCode": "string",      "name": "string",      "description": "string",      "barcode": "string",      "weight": 0,      "length": 0,      "width": 0,      "height": 0,      "sizeCategory": "SMALL",      "imageUrl": "string",      "price": 0,      "customsValue": "string",      "customsCurrency": "string",      "customsDescription": "string",      "countryOfManufacture": "string",      "tariffCode": "string",      "vendorPartNumber": "string",      "vendorName": "string",      "isKit": true,      "kitBuildType": "ON_DEMAND",      "nonPhysical": true,      "autoBreakPack": true,      "isActive": true,      "reorderPoint": 0,      "reorderTargetQty": 0,      "lotTracked": true,      "expiryRequired": true,      "minShelfLifeDays": 0,      "pickStrategy": "FEFO",      "createdAt": "2019-08-24T14:15:22Z",      "updatedAt": "2019-08-24T14:15:22Z",      "client": {        "id": "string",        "name": "string",        "code": "string"      },      "inventoryItems": [        {          "quantity": 0,          "lot": {            "expiresAt": "2019-08-24T14:15:22Z",            "status": "ACTIVE"          },          "bin": {            "zone": {              "warehouse": {                "name": "string"              }            }          }        }      ],      "kitComponents": [        {          "componentSkuId": "string",          "quantity": 0        }      ],      "kitMemberships": [        {          "kitSkuId": "string"        }      ],      "storageRequirements": [        {          "attributeId": "string"        }      ],      "totalStock": 0,      "sellableStock": 0,      "unsellableStock": 0,      "allocated": 0,      "available": 0,      "backordered": 0,      "locationCount": 0,      "warehouses": [        "string"      ],      "isKitComponent": true,      "dailyVelocity": 0,      "daysOfStock": 0    }  ],  "pagination": {    "page": 0,    "limit": 0,    "total": 0,    "totalPages": 0  }}
GET
/api/inventory/skus/{id}

Authorization

oauth2 inventory:read
AuthorizationBearer <token>

OAuth2 client-credentials grant.

In: header

Scope: inventory:read

Path Parameters

id*string

SKU id

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/inventory/skus/string"
{  "success": true,  "data": {    "id": "string",    "clientId": "string",    "skuCode": "string",    "name": "string",    "description": "string",    "barcode": "string",    "weight": 0,    "length": 0,    "width": 0,    "height": 0,    "sizeCategory": "SMALL",    "imageUrl": "string",    "price": 0,    "customsValue": "string",    "customsCurrency": "string",    "customsDescription": "string",    "countryOfManufacture": "string",    "tariffCode": "string",    "vendorPartNumber": "string",    "vendorName": "string",    "isKit": true,    "kitBuildType": "ON_DEMAND",    "nonPhysical": true,    "autoBreakPack": true,    "isActive": true,    "reorderPoint": 0,    "reorderTargetQty": 0,    "lotTracked": true,    "expiryRequired": true,    "minShelfLifeDays": 0,    "pickStrategy": "FEFO",    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z",    "client": {      "id": "string",      "name": "string",      "code": "string",      "defaultPickStrategy": "FEFO"    },    "inventoryItems": [      {        "id": "string",        "clientId": "string",        "skuId": "string",        "binId": "string",        "uomId": "string",        "quantity": 0,        "lotId": "string",        "lotNumber": "string",        "expiresAt": "2019-08-24T14:15:22Z",        "createdAt": "2019-08-24T14:15:22Z",        "updatedAt": "2019-08-24T14:15:22Z",        "bin": {          "id": "string",          "zoneId": "string",          "warehouseId": "string",          "label": "string",          "type": "SHELF",          "isActive": true,          "isPickable": true,          "isSellable": true,          "zone": {            "id": "string",            "name": "string",            "type": "RECEIVING",            "warehouse": {              "id": "string",              "name": "string"            }          }        },        "lot": {          "expiresAt": "2019-08-24T14:15:22Z",          "status": "ACTIVE"        },        "uom": {          "id": "string",          "code": "EACH",          "displayName": "string",          "baseQty": 0        }      }    ],    "uoms": [      {        "id": "string",        "clientId": "string",        "skuId": "string",        "code": "EACH",        "displayName": "string",        "baseQty": 0,        "barcode": "string",        "weight": 0,        "length": 0,        "width": 0,        "height": 0,        "isBase": true,        "isActive": true,        "createdAt": "2019-08-24T14:15:22Z",        "updatedAt": "2019-08-24T14:15:22Z"      }    ],    "storageRequirements": [      {        "attributeId": "string"      }    ],    "totalStock": 0,    "sellableStock": 0,    "unsellableStock": 0,    "allocated": 0,    "available": 0,    "backordered": 0,    "stockByForm": [      {        "code": "EACH",        "displayName": "string",        "baseQty": 0,        "eaches": 0,        "units": 0      }    ],    "effectivePickStrategy": "FEFO",    "locationCount": 0,    "locations": [      {        "inventoryItemId": "string",        "binId": "string",        "binLabel": "string",        "binType": "SHELF",        "zoneName": "string",        "warehouseId": "string",        "warehouseName": "string",        "quantity": 0,        "uomId": "string",        "uomCode": "EACH",        "uomBaseQty": 0,        "isPickable": true,        "lotId": "string",        "lotNumber": "string",        "expiresAt": "2019-08-24T14:15:22Z",        "sellable": true      }    ]  }}
GET
/api/inventory/stock-changes

Tenant-wide credentials only. A credential pinned to one client is refused (403), as that client's portal users are; use a tenant-wide credential with X-Client-Id. The adjustment ledger for one skuId, aggregated by cause over a window (since / until, default 7 days, clamped to 90): net change, units in and out, the causes ranked by size with their actors, and the largest individual movements.

Authorization

oauth2 inventory:read
AuthorizationBearer <token>

OAuth2 client-credentials grant.

In: header

Scope: inventory:read

Query Parameters

skuId*string
Length1 <= length
since?string

Default: 7 days before until; never more than 90.

Formatdate-time
until?string

Default: now.

Formatdate-time

Header Parameters

X-Client-Id?string

Scope results to one client (brand). Resolve a client name to its id via GET /api/clients/lookup. Validated against the credential's tenant; ignored by a client-pinned credential.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/inventory/stock-changes?skuId=string"
{  "success": true,  "data": {    "sku": {      "id": "string",      "skuCode": "string",      "name": "string"    },    "window": {      "from": "2019-08-24T14:15:22Z",      "to": "2019-08-24T14:15:22Z",      "days": 0    },    "onHandNow": 0,    "netChange": 0,    "unitsAdded": 0,    "unitsRemoved": 0,    "changeCount": 0,    "causes": [      {        "adjustmentType": "RECEIVE",        "reason": "string",        "referenceType": "string",        "changeCount": 0,        "unitsAdded": 0,        "unitsRemoved": 0,        "netChange": 0,        "actors": [          "string"        ]      }    ],    "largestChanges": [      {        "at": "2019-08-24T14:15:22Z",        "quantityChange": 0,        "adjustmentType": "RECEIVE",        "reason": "string",        "referenceType": "string",        "referenceId": "string",        "binLabel": "string",        "performedBy": "string"      }    ],    "truncated": true  }}
GET
/api/inventory/stock

Tenant-wide credentials only. A credential pinned to one client is refused (403), as that client's portal users are; use a tenant-wide credential with X-Client-Id.

Authorization

oauth2 inventory:read
AuthorizationBearer <token>

OAuth2 client-credentials grant.

In: header

Scope: inventory:read

Query Parameters

page?integer
Range0 < value
Default1
limit?integer
Range0 < value <= 500
Default20
search?string

Matches skuCode, SKU name, or bin label.

Lengthlength <= 100
sortBy?string
Lengthlength <= 50
sortOrder?string
Default"asc"

Value in

  • "asc"
  • "desc"
skuId?string
binId?string
zoneId?string
warehouseId?string
pickableOnly?"true"

Value in

  • "true"
sellableOnly?"true"

Only with skuId: sellable lots in bins with no open discrepancy.

Value in

  • "true"
zoneGroup?string

Value in

  • "storage"
  • "nonstorage"
includeEmpty?"true"

Also return zero-quantity rows, with lastMovementAt.

Value in

  • "true"

Header Parameters

X-Client-Id?string

Scope results to one client (brand). Resolve a client name to its id via GET /api/clients/lookup. Validated against the credential's tenant; ignored by a client-pinned credential.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/inventory/stock"
{  "success": true,  "data": [    {      "inventoryItemId": "string",      "binId": "string",      "binLabel": "string",      "binType": "SHELF",      "zoneId": "string",      "zoneName": "string",      "zoneType": "RECEIVING",      "warehouseId": "string",      "warehouseName": "string",      "skuId": "string",      "skuCode": "string",      "skuName": "string",      "skuImageUrl": "string",      "quantity": 0,      "uomId": "string",      "uomCode": "EACH",      "uomBaseQty": 0,      "isPickable": true,      "lotId": "string",      "lotNumber": "string",      "expiresAt": "2019-08-24T14:15:22Z",      "sellable": true,      "pickPriority": 0,      "clientId": "string",      "clientName": "string",      "clientCode": "string",      "lastMovementAt": "2019-08-24T14:15:22Z"    }  ],  "pagination": {    "page": 0,    "limit": 0,    "total": 0,    "totalPages": 0  }}