Public
Released products and public listings, signed by the organization. Anyone can verify each product's signature.
The OpenPX™ schema is live and open. Validate a product against it today, with the JSON Schema tools you already use.
Reference it
{
"$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
Built on Git
OpenPX is built on Git. An organization's products, variants and listings are JSON files in its own repositories, so every change is a commit with full history, and anyone you grant access can review and verify the data with standard Git tools. Register your repositories with OpenPX: public ones so anyone can verify your products, private ones for your team and your trading partners.
Released products and public listings, signed by the organization. Anyone can verify each product's signature.
Shared with one trading partner: partner-specific terms and listings. Only your organization and that partner can read it.
Everything: drafts, costs, supplier data and connector configuration. Private to your organization, and the source the other tiers are promoted from.
The CLI · Ships with early access
# create a repository, its CI workflows and an Ed25519 org key
openpx repo init --tier internal --with-workflows --generate-key
# check an entity against the schema
openpx validate catalog/my-product.json
# sign active entities, then verify against .openpx/keys/
openpx sign --status active
openpx verify --all
# promote: internal → public and partner repositories
openpx promote run --filter visibility=public
Connectors
Connectors move product data between your repositories and other systems. Publisher connectors bring data in from a PIM, ERP or file; consumer connectors send listings out to a channel. They run as CI workflows in your own repositories, with credentials kept in your repository's secrets, so OpenPX never sits in the middle.
# scaffold a connector: mapper, config and tests
openpx connector new --type consumer --name my-channel
Define · The data model
An OpenPX document is JSON validated against a versioned JSON Schema (draft-07). Every document declares the schema version it was written against in its openpx field.
Organization→Brand→Product+Variant→Listing, per channel
A product carries identifiers (SKU, GTIN, UPC, EAN, MPN, model number), classification, attributes, physical specifications, media, compliance and warranty. A variant is a sparse override: it holds only the fields that differ from its parent product.
A listing is a product as one channel sees it: it references its product_id and names its channel and channel_account_id, with channel-specific content, availability and shipping, plus syndication status for that channel.
Every entity id is a UUID v7 (RFC 9562): time-ordered, so ids sort by creation time and index well. Organizations and brands carry their own external identifiers alongside.
Sign · Verify
The organization signs each entity with its Ed25519 key. The signature covers the entity's fields in canonical JSON, so the same data always produces the same bytes, and any change to a single value breaks verification.
"signature": {
"key_ref": ".openpx/keys/acme-2026-10-01.pub",
"algorithm": "Ed25519",
"value": "<base64 Ed25519 signature>",
"signed_at": "2026-10-17T14:02:11Z"
}
Developer preview: the canonicalization rules are specified by the OpenPX SDK and may be refined before version 1.0.
Publish · Mapping and channels
Inbound, a brand's own catalog (PIM, ERP or spreadsheet) is mapped to OpenPX attributes, values and units, with AI-suggested mappings held for human review. Outbound, OpenPX categories and attributes are mapped to each channel's taxonomy, and listings are checked against the channel's requirements before they are sent.
Versions and integrity
vMAJOR.MINOR.PATCH. Each published version is served at its own URL and never changes.$id is its versioned URL, for example https://schema.openpx.org/v0.7.0/openpx-schema.json./latest/openpx-schema.json is a moving alias to the newest version. Pin a version in production..sha256 file, and index.json lists every version with its hash and status (current or superseded).application/json; profile="urn:openpx:v0"SDK and CLI · Early release
The OpenPX SDK and command-line tool are on their way. Today's early releases carry the schema address and hold the names; signing, verifying and publishing follow.
Developer waitlist
Tell us what you'd build, and we'll invite you as the CLI, SDK and repository registration open.
We only use what you send us to contact you about the developer waitlist.