Skip to main content
    Skip to content
    NorruvaDeveloper Docs
    Sandbox · verified 2026-07-29
    This page
    Whole docs
    Machine formats

    PlaygroundGet API keys
    IntroductionQuickstartAuthenticationErrors & conventionsSandbox & environments
    Entity modelProducts & categoriesPassports & versionsDigital Link & resolutionCompliance & regulationsWebhooks & eventsAutoID print loopImport jobsObservability & audit
    OverviewAuth & API keysProductsCompliance & regulationsPassportsResolver & publicWebhooksPrint jobs & devicesImport / bulkObservabilityBeyond happy path
    Integration playbookWebhook receiver guideRun a print deviceDeviations & gotchas
    EN 18222 API methodsAnnex ZA — ESPR correspondence
    Docs/Playbook/Integration playbook

    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

    1. Wire GET /health into your smoke test; pull public/openapi.json for discovery.
    2. Get one credential working end-to-end (key or OAuth) before touching products.
    3. Confirm a category resolves by doing a real create — don't trust hint lists.
    4. Drive the full happy path once by hand, then codify it. Capture productId and passportUid only from documented response fields.
    5. 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-dpp and oauth/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

    TopicContract today
    VersioningOne stable major, /api/v2. Ignore any /v1 examples elsewhere — the /api/v2 contract is authoritative.
    Rate limitingEnforced — per-tier budgets (Redis-backed). Over budget → 429 RATE_LIMITED + Retry-After; watch the X-RateLimit-* headers.
    PaginationNot 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.

    Was this page helpful?
    Thanks — noted.Feedback goes to the docs team by email.
    ← PreviousBeyond happy pathNext →Webhook receiver guide
    On this page
    Build in this orderIdempotencyCorrelation & debuggingVersioning, pagination & limitsSandbox safety
    Norruva DPP API · sandbox developer docsGenerated 2026-07-29 · PRD-aligned (TSC roadmap rev 2) · statuses reflect E2E-verified sandbox behaviour — not marketing