За разработчици

Спецификация, върху която да градите.

Open Brand Exchange е спецификация с три API, JSON схеми, тестови данни и тестове за съответствие. Спецификацията е източникът на истина; реализациите я следват.

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"]
}

Спецификацията

Версия 0.1. OpenAPI 3.1, JSON Schema 2020-12, примери и измислена тестова марка, Kestrel Outfitters. Лиценз CC-BY-4.0: свободна за реализиране, включително търговски.

openbrandexchange/spec · Започнете с protocol.md

Три API

APIЗаСтатусДоговор
OBX Protocolсофтуерът на търговците: discovery, OAuth2 client credentials, поток от промени, търсене по GTIN, renditions, експорти, уебкукинормативенobx-protocol.yaml · HTML
OBX Ingest APIавтоматизацията на марката: идемпотентни upsert операции по собствените ID на марката, качвания, адресирани чрез sha256, пакети, импортинормативенobx-ingest.yaml · HTML
Node Admin + Portal APIобщата администрация и порталът за търговциненормативенnode-admin.yaml · HTML

Четене на портал на марка в няколко реда

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 и инструмент за команден ред

obx-go съдържа Go SDK (типове, клиент за протокола и ingest клиент с премахване на дубликати, качвания на части и пакети), инструмента obx за марки, obx-conformance и фиктивен сървър. На други езици върши работа всеки HTTP клиент: договорът е в OpenAPI файловете.

obx-go · obx

Съответствие

Една реализация съответства на OBX за даден профил, когато obx-conformance премине всички задължителни тестове на профила. Профилите са четири: protocol, ingest, portal и 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

Реализации

ХранилищеКаквоЛицензСтатус
specспецификация, схеми, тестови данниCC-BY-4.00.1
obx-goGo SDK, инструментът obx, тестове за съответствие, фиктивен сървърApache-2.00.1
admin-uiобщ уеб интерфейс: администрация и портал за търговциApache-2.00.1
node-goПортал за Google Cloud и Docker
Go: Docker и Google Cloud Run
AGPL-3.00.1
node-phpПортал за уеб хостинг
PHP: обикновен уеб хостинг
AGPL-3.00.1
node-tsПортал за Cloudflare
TypeScript: Cloudflare Workers
AGPL-3.00.1

Изграждате собствена реализация или клиент? Уведомете ни с issue или pull request; ще влезе в таблицата, щом премине тестовете за съответствие.

Документи