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/Concepts/Digital Link & resolution

    Digital Link & resolution

    A Digital Link identifier maps a GS1 01 (GTIN) / 21 (serial) pair to a product, so a scanner in the outside world can resolve the published passport. Registration is deliberate — creating a product does not register it.

    Registration

    POST /products/{id}/publish-dpp is the step that registers the identifier (dpp_identifiers count 0 → 1). Only after this does the item resolve.

    Resolution

    HTTP
    GET /api/v2/01/{gtin}/21/{serial}                      → 302 to /p/{productId}   (measured 0.16s)
    GET /api/v2/01/{gtin}/21/{serial}
        Accept: application/linkset+json                    → GS1 KAV linkset
    GET /api/v2/public/passport/{uid}                       → audience-filtered passport JSON
    GET /api/v2/public/passport/{uid}/verify                → signature + anchor verification

    Typed failures you can branch on

    ConditionResponse
    Unknown-but-valid GTIN404 PRODUCT_NOT_FOUND (names gtin/serial/host)
    Bad check digit400 INVALID_GTIN
    Over-long serial400 INVALID_SERIAL
    Voided item410 SERIAL_VOIDED + tombstone
    Draft / unpublished404 "not found or not published"

    Audience tiers

    Public reads are audience-filtered. Anonymous callers get the consumer minimum; only a cryptographically verified X-DPP-Access-Token elevates disclosure. Self-declared hints (e.g. ?viewer=) never do. Every public read is logged with its audience.

    ▲
    Two resolver deviations. The resolver currently 401s anonymous scanners that send no Authorization header, and the public passport route is edge-gated though treated as public. Both are documented in Deviations — assert them as-is.
    Was this page helpful?
    Thanks — noted.Feedback goes to the docs team by email.
    ← PreviousPassports & versionsNext →Compliance & regulations
    On this page
    RegistrationResolutionTyped failures you can branch onAudience tiers
    Norruva DPP API · sandbox developer docsGenerated 2026-07-29 · PRD-aligned (TSC roadmap rev 2) · statuses reflect E2E-verified sandbox behaviour — not marketing