End-to-end flow
1. Bootstrap the catalog
UseGET /api/v1/catalog/items with catalog:read. The JSON response is
cursor-paged and includes both products and variants, product-family identity,
SKU and UPC, brand and category, tags, cost, list/sale/compare-at/MAP/MSRP
prices, currency, inventory, active promotion context, and exact marketplace
identifiers.
data.nextCursor until data.hasMore is false. For incremental exports,
save a high-water timestamp and pass updatedSince with an overlap window.
Items are ordered by updatedAt, then ID.
If Spresso requests its documented flat-file intake, request CSV instead:
X-Has-More and X-Next-Cursor.
The export includes Spresso’s documented core columns such as Product Family
Name, Name, SKU Id, Product Id, UPC, Brand, Category, Cost, Price, MAP Price,
and MSRP Price. OmniCommerce can deliver that file to the SFTP location Spresso
provisions; SFTP credentials are not configured by this API.
2. Subscribe to incremental outcomes
Create a webhook subscription withwebhooks:manage:
Settlement and return events are separate from
order.updated. They often
arrive hours or days later and can be corrected independently.
Verify X-Omni-Signature against the raw request body before parsing. Persist
the event ID in the same transaction as the snapshot and return 2xx only
after durable acceptance. See Webhooks.
3. Apply a Spresso decision
Use the product or variant UUID from the catalog export. Both endpoints requirecatalog:write and derive the organization from the bearer credential.
{platform, accountId} targets are accepted.
Omit targets to use all eligible listings, or set syncToMarketplaces=false
to change only the OmniCommerce catalog. Product source-ownership, active
promotion, and sale-price safeguards still apply.
4. Track and recover
Marketplace writes are asynchronous. A synchronized price or inventory update returns202, job IDs, and immediate per-target queue status. Poll every job:
data.nextCursor. You can
repeat eventType or comma-separate event keys. Applying the same event twice
must be safe because webhook delivery is at least once.
For resource reconciliation, use the pull APIs:
Settlement reads expose normalized snapshots created by the settlement event
pipeline. Use them for ongoing integration and recovery; a historical finance
backfill must run before expecting older orders to appear.
Activation checklist
- Obtain Spresso’s provisioned SFTP and/or receiver contract and credentials.
- Agree on catalog cadence, timezone, currency handling, event schema versions, and the identifier Spresso returns with each price decision.
- Bootstrap and reconcile product-family/SKU counts before enabling writes.
- Test HMAC verification, duplicate delivery, out-of-order resource versions, and pull recovery.
- Start with
syncToMarketplaces=false, then enable one exact test account. - Verify MAP, min/max, rounding, promotion, and catalog source-ownership rules.
- Confirm storefront and cart surfaces use the same Spresso-selected price where the Spresso Web SDK or price token is required.
- Alert on terminal job failures and catalog/order/return/settlement lag.