iotoms Docs

Match external rows to catalog items

POST
/api/v1/catalog/items/match

Matches up to 500 rows from an external source to catalog items, trying itemId, then UPC, then case-insensitive item name. Names shared by more than one item are returned as ambiguous rather than guessed. Read only, so it is safe to call before an import.

How to use it

  1. Read your external rows and give each a row number plus whatever it has: itemId, UPC and/or item name.
  2. Send up to 500 candidates per call; split larger files into chunks.
  3. Use matched rows' item codes for your import and review unmatched rows, especially AMBIGUOUS_NAME, by hand. Nothing is saved.

Authorization

BearerAuth
headerAuthorizationBearer <JWT>

Header Parameters

Request Body

application/json
  1. body
candidates*array<>

Rows to match, 1 to 500 per request. Split larger files into chunks.

Items0 <= items <= 500

Response Body

OK

*/*
  1. response
status*string

Outcome of the call: SUCCESS when the request worked, ERROR when it did not.

message*string

Short human-readable message describing the result, for logs or display; do not parse it.

data?

Rows that matched a catalog item and rows that did not, each identified by the row number you sent.

Example Request
curl -X POST 'https://beta.iotoms.com/api/v1/catalog/items/match' \  -H 'Content-Type: application/json' \  -d '{  "candidates": []}'
Example Response
{  "status": "string",  "message": "string",  "data": {    "matched": [      {        "row": 0,        "matchedBy": "ITEM_ID",        "item": {          "itemId": "string",          "itemName": "string",          "categoryName": "string",          "brandName": "string",          "departmentName": "string",          "sellingPrice": 0.1        }      }    ],    "unmatched": [      {        "row": 0,        "reason": "NO_MATCH"      }    ]  }}