Examples
統合が実際に行う5つのリクエスト
パスポートを発行する。イベントを追加する。サプライヤーの主張に署名する。それを検証する。スキャンに応じる。ほとんどの連携はこの五つの繰り返しであり、それ以外はマッピングです。
- まずは
- 発行と追加
- 後で追加
- 署名済みの主張
- 環境
- まずサンドボックスで
Definition
一般的なパスポート連携は実際に何をするのですか。
繰り返される五つの操作。GS1識別子に対してパスポートを発行する。製品の移動に応じてEPCIS 2.0イベントを追加する。サプライヤーから署名済みの主張を集める。提示された主張を検証する。そして製品上のデータキャリアがスキャンされたときに公開ビューを返す。
The volume is dominated by the first two. The difficulty is dominated by the third, which is a supplier relationship problem rather than a technical one.
01
パスポートを発行する
curl https://api.circuleid.com/v1/passports \
-H "Authorization: Bearer $CIRCULEID_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"gtin": "09506000134352",
"productGroup": "textiles",
"level": "model",
"record": {
"name": "Merino Crew Knit",
"materials": [
{ "name": "merino wool", "share": 0.82, "certification": "RWS" },
{ "name": "recycled polyamide", "share": 0.18 }
],
"carbonFootprint": { "value": 14.2, "unit": "kgCO2e", "method": "ISO 14067" }
}
}'02
サプライチェーンのイベントを追加する
curl https://api.circuleid.com/v1/events \
-H "Authorization: Bearer $CIRCULEID_API_KEY" \
-d '{
"type": "ObjectEvent",
"action": "OBSERVE",
"eventTime": "2026-03-14T09:22:00+01:00",
"epcList": ["urn:epc:id:sgtin:0950600.013435.SN8817403"],
"bizStep": "urn:epcglobal:cbv:bizstep:commissioning",
"disposition": "urn:epcglobal:cbv:disp:active",
"bizLocation": { "id": "urn:epc:id:sgln:0950600.00001.0" }
}'03
サプライヤーの主張に署名する
curl https://api.circuleid.com/v1/credentials \
-H "Authorization: Bearer $SUPPLIER_API_KEY" \
-d '{
"type": "RecycledContentCredential",
"issuer": "did:web:mill.example.com",
"subject": "01/09506000134352",
"validUntil": "2027-03-14T00:00:00Z",
"claim": {
"material": "polyamide",
"recycledShare": 0.18,
"basis": "mass",
"chainOfCustody": "mass-balance"
}
}'04
提示された主張を検証する
curl https://api.circuleid.com/v1/credentials/verify \
-H "Authorization: Bearer $CIRCULEID_API_KEY" \
-d '{ "credential": { /* the credential as presented */ } }'
# {
# "verified": true,
# "issuer": "did:web:mill.example.com",
# "issuedAt": "2026-03-14T09:31:02Z",
# "status": "active" # "revoked" fails verification
# }05
スキャンに応答する
# What the phone requests when a consumer scans the carrier:
curl https://id.circuleid.com/01/09506000134352 \
-H "Accept: application/json"
# A browser gets the rendered public passport instead.
# A verified recycler presenting a credential gets the treatment tier
# from the same URL — the resolver decides, not the caller.パターン
それぞれが通常どこにあるか
発行パイプライン
PLMを読み取り、次の生産ロット向けにパスポートを発行する定期ジョブ。
イベントの取り込み
WMSおよびMESのメッセージを、発生と同時にEPCISイベントへ変換するサービス。
サプライヤー向けポータル
二次サプライヤーが、貴社自身では主張できないクレームを提出し署名する場所。
ストアフロント
公開階層を読み取り、裏づけのあるサステナビリティ情報を商品ページに表示する。
キャリアそのもの
貴社側のコードは一切不要です。リゾルバがスキャンに直接応答します。
回収時の受入
返品またはリサイクル施設のラインで、処理階層を読み取る。
回答
よくある質問
どの例から始めるべきですか。
パスポートを発行し、次にイベントを追加します。この二つで連携のトラフィックの大半を占め、識別モデル — モデル、ロット、個体 — を確定せざるを得なくなります。他のすべてが依存し、後から変えるのが最も難しい判断です。
初日からクレデンシャルを扱う必要がありますか。
いいえ。署名のないデータのパスポートも、パスポートとして機能します。ただ、どの数値を誰が主張したのかを示せないだけです。多くの計画はまず発行し、サプライヤーの登録が進むにつれて署名済みの主張を追加します。それが、サプライヤーとの調整が現実に許す順序でもあります。
消費者はスキャンから実際に何を受け取りますか。
キャリア内の GS1 Digital Link 識別子から解決されるパスポートの公開階層。ブラウザ向けにはページとして描画され、要求するシステムには JSON として返されます。認証もアカウントも不要で、スキャンした人物のプロファイルも作成しません。
本番環境に触れずにテストできますか。
はい。サンドボックスの鍵は別のホスト名に対して解決され、サンドボックスのパスポートは本番とまったく同じ挙動になります。本番のパスポートは長期にわたり公開される成果物であるため、この分離は慣行ではなく強制です。サンドボックスの鍵は本番に到達できません。
Next step
最初の二つをサンドボックスのキーで実行する
パスポートを一件発行し、イベントを一件追加してください。それだけで識別モデルは確定します。他のすべてがそこに依存する判断です。