Parse a GS1 Digital Link URI
const url = 'https://api.listrar.com/v1/digital-links/resolve';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"uri":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.listrar.com/v1/digital-links/resolve \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "uri": "example" }'Parses a Digital Link URI (syntax 1.7.0) into its primary identifier and qualifier element strings. Syntax only at this revision: it does not fetch the resolver’s linkset or any link target.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
Examplegenerated
{ "uri": "example"}Responses
Section titled “Responses”The parsed primary identifier and qualifiers.
object
Typed result status. Absence (‘not_found’, ‘unknown’) is an answer carried at HTTP 200, never a 404 — see ERROR_MODEL.md design rule 1. ‘not_found’ MUST NOT be softened (06 §9).
REQUIRED when status = ‘unknown’.
object
object
INFERENCE and ESTIMATION can never be promoted to FACT. See 10 §3.
REQUIRED for INFERENCE and ESTIMATION
object
object
What was actually consulted, so a caller can distinguish ‘does not exist’ from ‘not covered’. Present on absence and on batch responses.
object
object
Opaque cursor for the next page; absent means end of results. Cursor pagination only, never offset.
Up to four independent axes, never collapsed into one verdict (12 §5). A class is absent when no rule of that class has been evaluated for this subject — which is not the same as ‘not_assessed’, a recorded verdict.
object
object
object
Example
{ "status": "found", "reason": "NO_SOURCE", "claims": [ { "subject": "gtin14:04012345678901", "predicate": "dpp:carbonFootprintKgCO2e", "claim_type": "FACT", "verification_status": "unverified", "trust_level": "L0" } ], "sources": [ { "kind": "registry" } ], "meta": { "coverage": { "sources_skipped": [ { "reason": "LICENCE_RESTRICTED" } ] } }, "validation": { "technical": "pass", "business": "pass", "regulatory": "pass", "authority": "none" }, "warnings": [ { "severity": "info" } ]}Headers
Section titled “Headers”Echoes the envelope’s request_id.
MALFORMED_URI, UNSUPPORTED_URI_FORM, NO_PRIMARY_IDENTIFIER, INVALID_IDENTIFIER
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "code": "example", "detail": "example", "request_id": "example", "retryable": true, "docs_url": "https://example.com"}UNAUTHENTICATED
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "code": "example", "detail": "example", "request_id": "example", "retryable": true, "docs_url": "https://example.com"}TENANT_QUOTA_EXCEEDED
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "code": "example", "detail": "example", "request_id": "example", "retryable": true, "docs_url": "https://example.com"}RATE_LIMITED
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "code": "example", "detail": "example", "request_id": "example", "retryable": true, "docs_url": "https://example.com"}INTERNAL_ERROR
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "code": "example", "detail": "example", "request_id": "example", "retryable": true, "docs_url": "https://example.com"}