The OpenPX schema.

One shared way to describe a product, which every channel can read. This is the canonical, versioned JSON Schema for OpenPX™: every OpenPX document's $id resolves here.

Reference it

Point your product at the schema.

{
  "$schema": "https://schema.openpx.org/v0.7.0/openpx-schema.json",
  "openpx": "0.7.0",
  "product": { "...": "..." }
}

Validate it

# Python
pip install jsonschema
python - <<'PY'
import json, urllib.request, jsonschema
schema = json.load(urllib.request.urlopen("https://schema.openpx.org/v0.7.0/openpx-schema.json"))
doc = json.load(open("my-product.json"))
jsonschema.Draft7Validator(schema).validate(doc)
print("valid")
PY
# JavaScript (ajv, draft-07)
npx ajv-cli validate -s <(curl -s https://schema.openpx.org/v0.7.0/openpx-schema.json) -d my-product.json
Current versionv0.7.0
DescribesOrganization · Brand · Product · Listing
FormatJSON Schema, draft-07
VersionsImmutable once published
LicenseMIT

Concepts

What the schema defines.

Define, sign, publish, verify: the four ideas behind OpenPX, as the schema expresses them.

The model, signatures and versions
Entities
organization → brand → product (+ variant) → listing, plus a signature block. Every document declares its schema version in openpx.
Identifiers
Entity ids are UUID v7 (RFC 9562), time-ordered. Products carry SKU, GTIN, UPC, EAN, MPN and model number.
Variants
A sparse override of the parent product: only the fields that differ.
Listings
A product as one channel sees it, keyed by product_id, channel and channel_account_id, with channel-specific content, availability, shipping and syndication status.
Signatures
Ed25519 over the entity's canonical JSON (sorted keys, UTF-8, Unicode NFC; signature and provenance excluded). key_ref points to the organization's public key under .openpx/keys/; value is base64; signed_at is ISO 8601.
Content hash
content_hash: SHA-256 of the same canonical form, 64 hex characters.
Versions
vMAJOR.MINOR.PATCH, immutable once published; the $id is the versioned URL. Each version has a .sha256 file.
Media type
application/json; profile="urn:openpx:v0"
Status
Developer preview. Canonicalization rules are specified by the OpenPX SDK and may be refined before 1.0.

Resources

Everything machine-readable.

Build and register your own connectors

Build and register your own connectors and OpenPX repositories. Tell us what you'd build, and we'll invite you as the CLI, SDK and repository registration open.

Join the developer waitlist

We only use what you send us to contact you about the developer waitlist.

Using OpenPX as a brand, manufacturer or distributor?

Describe your products once, sign them as yours, and publish them to every channel.

Join the early-access list →