Flow Unified API
API ReferenceRetail POS

Product · product

Portable POS product contract. externalId and name are the stable core fields; description, price, taxable, currencyCode, and categoryExternalId become important for some write targets such as Lightspeed R-Series, Square, and Clover.

Entity type: product · Methods: GET · POST

Portable POS product contract. externalId and name are the stable core fields; description, price, taxable, currencyCode, and categoryExternalId become important for some write targets such as Lightspeed R-Series, Square, and Clover.

Endpoints

GET  /unified/{accountId}/product   # List normalized product records
POST /unified/{accountId}/product   # Create / push one product

Schema

FieldTypeRequiredDescription
externalIdstringYesStable product identifier. Used as the idempotency key on writes.
namestringYesPrimary sellable product name.
descriptionstringHuman-readable product description or long description.
skustringPrimary SKU or item code.
barcodestringPrimary barcode / UPC / EAN / product code.
pricenumberPrimary sell price in major currency units.
costnumberPrimary unit cost in major currency units.
activebooleanWhether the product is active / available.
taxablebooleanWhether the product is taxable when the target requires that flag.
stockOnHandintegerPrimary on-hand stock quantity when available.
categoryExternalIdstringSource or mapped category / group identifier used by some targets.
categoryNamestringHuman-readable category / product type name.
vendorstringVendor / manufacturer / brand label when present.
tagsstring[]Searchable tags or labels.
imageUrlstring · URLPrimary product image URL.
currencyCodestring · ISO 42173-letter currency code. Needed by some write targets such as Square.

Example object

{
  "externalId": "prd_tee_black_m",
  "name": "Organic Tee — Black / M",
  "description": "100% organic cotton, garment dyed.",
  "sku": "TEE-BLK-M",
  "barcode": "840000012345",
  "price": 32,
  "cost": 11.4,
  "active": true,
  "taxable": true,
  "stockOnHand": 142,
  "categoryExternalId": "cat_apparel",
  "categoryName": "Apparel",
  "vendor": "Drift Basics",
  "tags": [
    "organic",
    "core"
  ],
  "currencyCode": "USD"
}

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

read product
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>"
write product
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":"prd_tee_black_m","name":"Organic Tee — Black / M","description":"100% organic cotton, garment dyed.","sku":"TEE-BLK-M","barcode":"840000012345","price":32,"cost":11.4,"active":true,"taxable":true,"stockOnHand":142,"categoryExternalId":"cat_apparel","categoryName":"Apparel","vendor":"Drift Basics","tags":["organic","core"],"currencyCode":"USD"}'

Supported systems

SystemReadWriteAuthRate limit
ShopifyYesYesOAuth 2.01 req / s
Lightspeed X-SeriesYesYesOAuth 2.010 req / s · 100 req / min
Lightspeed R-SeriesYesYesOAuth 2.01 req / 10s
SquareYesYesOAuth 2.05 req / s
Clover (Asia Pacific)YesYesAPI token10 req / s · 100 req / min

On this page