SellSafely

Standards & APIs

What we actually output.

Three honest claims you can verify in a few clicks: UNTP-aligned JSON-LD, GS1 Digital Link-compliant URLs, and role-based access views.

UNTP-alignedGS1 Digital LinkJSON-LDRole-based views

UNTP-aligned JSON-LD

Every published passport produces JSON-LD that aligns with the UN Transparency Protocol vocabulary[UNTP] and uses the schema.org core for product fields.

The UNTP specifications are deliberately framed by UN/CEFACT as suitable for pre-production pilot implementations. We treat that as a feature, not a bug — we ship the parts that are ready and clearly mark the parts that aren't (see What we don't claim below).

textile-sample.jsonld (excerpt)JSON-LD
{
  "@context": [
    "https://vocabulary.uncefact.org/untp/",
    "https://schema.org/",
    { "ss": "https://schema.sellsafely.ai/" }
  ],
  "type": ["DigitalProductPassport", "Product"],
  "id": "https://sellsafely.ai/01/01234567890128",
  "name": "Classic Crew Neck Tee — Forest Green",
  "materialProvenance": [
    { "materialName": "Organic Cotton", "massFraction": 0.95 },
    { "materialName": "Elastane", "massFraction": 0.05 }
  ],
  "certification": [ /* ... */ ],
  "ss:gs1DigitalLink": "https://sellsafely.ai/01/01234567890128",
  "ss:isSample": true
}

GS1 Digital Link

One product ID, one URL, multiple views. GS1 Digital Link[GS1 Digital Link] is the standards-based way to encode a GS1 identifier (GTIN, batch, serial) in a Web URI that resolves to the right content for the right audience.

Resolver URL pattern

https://sellsafely.ai/01/{gtin14}/21/{serial}

/01/ is the GS1 Application Identifier for GTIN. /21/ is the AI for serial number — optional. Hit the URL with Accept: application/ld+json to get JSON-LD; default text/html renders the human passport. Future work: linkset routing per RFC 9264[RFC 9264].

Resolver & view model

The same passport URL can serve different views to different audiences. Today the public viewer is at /p/{gtin}; the canonical GS1 path (id.sellsafely.ai/01/...) ships when the DPP CDN goes live. See the access model on /security for what each tier sees.

Material allocation vs material ledger

Two different problems. We solve one of them.

What we do

Material Allocation

Allocate certified material quantities and evidence coverage across shipment lines, products, and claims with explicit allocation methods (BOM-weight, unit-weight, equal-split with confirmation, manual).

  • Shipment-coverage support — “does this evidence cover this product line?”
  • Claim support allocation with reasoning recorded on every allocation
  • Evidence-linked claim records (per-product, with provenance)
What we don't replace

Material Ledger

A certified balance-reconciliation system that tracks volumes of certified material available for sale — bank-account-style accounting against scope and transaction certificates.

  • Certified balance reconciliation (e.g., Textile Exchange Trackit)[Textile Exchange Trackit]
  • Volume-tracking ledger across organizations + transactions
  • Trackit-style certified-balance accounting

Material allocation supports shipment-level claim records — recording which evidence backs which product line. It is not a substitute for certified material-ledger accounting. If you need certified-volume reconciliation across transactions, that's Trackit's domain[Textile Exchange Trackit].

Developer docs

Want to see this on your products?

Bring 1–2 supplier files. We'll show you UNTP-aligned JSON-LD on real SKUs in 15 minutes.