Utvecklare

En specifikation att bygga vidare på.

Open Brand Exchange är en specifikation med tre API:er, JSON Schemas, testdata och konformitetstester. Specifikationen är källan; implementationerna följer den.

Terminal
$ curl https://brands.kestrel.example/.well-known/obx
200 OK · application/json
{
  "obx_version": "0.1",
  "publisher": { "name": "Kestrel Outfitters" },
  "api_base": "https://brands.kestrel.example/obx/v1",
  "portal_url": "https://brands.kestrel.example/",
  "capabilities": ["changes", "products", "by_gtin",
                   "renditions", "exports", "webhooks"]
}

Specifikationen

Version 0.1. OpenAPI 3.1, JSON Schema 2020-12, exempel och ett fiktivt testvarumärke, Kestrel Outfitters. Licens CC-BY-4.0: fri att implementera, även kommersiellt.

openbrandexchange/spec · Börja med protocol.md

Tre API:er

APIFörStatusKontrakt
OBX Protocolåterförsäljares system: discovery, OAuth2 client credentials, ändringsflöde, GTIN-sökning, renditions, exporter, webhooksnormativobx-protocol.yaml · HTML
OBX Ingest APIett varumärkes automatisering: idempotenta upserts på varumärkets egna id:n, uppladdningar adresserade med sha256, omgångar, importernormativobx-ingest.yaml · HTML
Node Admin + Portal APIden gemensamma administrationen och återförsäljarportalenicke-normativnode-admin.yaml · HTML

Läs en varumärkesportal på några rader

HOST=https://brands.kestrel.example
curl -s $HOST/.well-known/obx                       # what does this brand offer?
TOKEN=$(curl -s -u "$CLIENT_ID:$CLIENT_SECRET" -d grant_type=client_credentials \
  $HOST/obx/v1/oauth/token | jq -r .access_token)
curl -s -H "Authorization: Bearer $TOKEN" "$HOST/obx/v1/changes?limit=500"   # everything, then only changes
curl -s -H "Authorization: Bearer $TOKEN" -X POST -H 'Content-Type: application/json' \
  -d '{"gtins":["2000100101025"]}' "$HOST/obx/v1/products:by-gtin"
# or let the obx tool keep a copy in a folder, only fetching what changed:
OBX_CLIENT_ID=$CLIENT_ID OBX_CLIENT_SECRET=$CLIENT_SECRET obx pull $HOST --out ./kestrel

SDK och kommandoradsverktyg

obx-go innehåller Go-SDK:t (typer, en protokollklient och en ingest-klient med deduplicering, multipart-uppladdningar och omgångar), verktyget obx för varumärken, obx-conformance och en mockserver. I andra språk fungerar vilken HTTP-klient som helst: kontraktet finns i OpenAPI-filerna.

obx-go · obx

Konformitet

En implementation är OBX-konform för en profil när obx-conformance klarar alla obligatoriska tester i profilen. Det finns fyra profiler: protocol, ingest, portal och security. conformance.md

obx-conformance all --url http://localhost:8080 --setup-code …   # a fresh portal: setup, fixtures, every profile
obx-conformance protocol --url https://brands.kestrel.example --client-id obxc_… --client-secret obxs_…
obx-conformance mock                                              # a mock server that passes everything

Implementationer

RepoVadLicensStatus
specspecifikation, scheman, testdataCC-BY-4.00.1
obx-goGo-SDK, verktyget obx, konformitetstester, mockserverApache-2.00.1
admin-uigemensamt webbgränssnitt: administration och återförsäljarportalApache-2.00.1
node-goPortal för Google Cloud och Docker
Go: Docker och Google Cloud Run
AGPL-3.00.1
node-phpPortal för webbhotell
PHP: vanligt webbhotell
AGPL-3.00.1
node-tsPortal för Cloudflare
TypeScript: Cloudflare Workers
AGPL-3.00.1

Bygger du en egen implementation eller klient? Hör av dig med ett issue eller en pull request; den hamnar i tabellen så fort den klarar konformitetstesterna.

Dokument