Integration playbook
The short list of things that will save you time — distilled from the integrator journey. If you read only one page beyond the quickstart, read this and Deviations.
Build in this order
- Wire
GET /healthinto your smoke test; pullpublic/openapi.jsonfor discovery. - Get one credential working end-to-end (key or OAuth) before touching products.
- Confirm a category resolves by doing a real create — don't trust hint lists.
- Drive the full happy path once by hand, then codify it. Capture
productIdandpassportUidonly from documented response fields. - Subscribe to webhooks before you build polling — most state you want is pushed.
Idempotency
- Generate one
Idempotency-Key(uuid) per logical operation and reuse it on retries. - Required on
publish-dppandoauth/token; recommended everywhere else. - Same key + different body → typed conflict. Never recycle a key across different operations.
Correlation & debugging
Attach X-Correlation-Id to every request from day one. It shows up in audit-logs as requestId and ties your call to metrics — it is the fastest way to answer "what happened to my request?".
Versioning, pagination & limits
| Topic | Contract today |
|---|---|
| Versioning | One stable major, /api/v2. Ignore any /v1 examples elsewhere — the /api/v2 contract is authoritative. |
| Rate limiting | Enforced — per-tier budgets (Redis-backed). Over budget → 429 RATE_LIMITED + Retry-After; watch the X-RateLimit-* headers. |
| Pagination | Not specified in the current contract — do not assume a cursor convention. |
Sandbox safety
Run everything in sandbox first: no anchoring, no production email, no registry submission, no billing. Treat full isolation as the design contract and verify anything safety-critical yourself while guards are hardened.