Product · product
Portable restaurant product contract. externalId and name are the stable base fields. categoryExternalId is especially important for Clover targets, where item-group mapping is required.
Entity type:
product· Methods: GET · POST
Portable restaurant product contract. externalId and name are the stable base fields. categoryExternalId is especially important for Clover targets, where item-group mapping is required.
Endpoints
GET /unified/{accountId}/product # List normalized product records
POST /unified/{accountId}/product # Create / push one productSchema
| Field | Type | Required | Description |
|---|---|---|---|
externalId | string | Yes | Stable source product / item identifier. Used as the idempotency key on writes. |
name | string | Yes | Primary menu item / product name. |
description | string | — | Optional long or alternate description. |
sku | string | — | Primary SKU / PLU / product code. |
barcode | string | — | Barcode / UPC / external item code. |
price | number | — | Primary sell price in major currency units. |
cost | number | — | Unit cost in major currency units when available. |
active | boolean | — | Whether the product is available / active. |
taxable | boolean | — | Whether default taxes should apply. |
categoryExternalId | string | — | Source category / menu group identifier. Required by Clover targets. |
trackInventory | boolean | — | Whether the source item tracks inventory. |
stockOnHand | integer | — | On-hand stock quantity when available. |
currencyCode | string · ISO 4217 | — | 3-letter currency code when available. |
priceType | enum | — | Price type when known. Values: FIXED, VARIABLE, PER_UNIT. |
Example object
{
"externalId": "itm_smash_burger",
"name": "Smash Burger",
"description": "Double patty, american cheese, house sauce.",
"sku": "BRG-001",
"price": 14.5,
"active": true,
"taxable": true,
"categoryExternalId": "cat_burgers",
"currencyCode": "USD",
"priceType": "FIXED"
}The same shape is used as the POST request body and returned by GET reads — reads from
every connected system are normalized to it.
Requests
curl "https://dev.flow.staging.linktoany.com/api/1.0/standalone-link-engine-service/unified/{accountId}/product?mappingKey={readKey}&pageSize=50" \
-H "authorization: Bearer <token>"curl -X POST "https://dev.flow.staging.linktoany.com/api/1.0/standalone-link-engine-service/unified/{accountId}/product?mappingKey={writeKey}" \
-H "authorization: Bearer <token>" \
-H "content-type: application/json" \
-d '{"externalId":"itm_smash_burger","name":"Smash Burger","description":"Double patty, american cheese, house sauce.","sku":"BRG-001","price":14.5,"active":true,"taxable":true,"categoryExternalId":"cat_burgers","currencyCode":"USD","priceType":"FIXED"}'Supported systems
| System | Read | Write | Auth | Rate limit |
|---|---|---|---|---|
| Square | Yes | — | OAuth 2.0 | 5 req / s |
| Clover (Asia Pacific) | Yes | Yes | API token | 10 req / s · 100 req / min |
| Clover (US) | Yes | Yes | API token | 10 req / s · 100 req / min |
| Lightspeed K-Series | Yes | — | OAuth 2.0 | 100 req / 60s |
Order · order
Portable restaurant order contract with normalized identity, timing, party references, totals, and line items. lineItems[].productExternalId matters for Clover atomic-order writes; currencyCode and locationExternalId matter for Square writes.
Shift · shift
Portable restaurant labor shift / timecard contract.