CirculeID

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

パスポートを発行する

製品レコードをそのGS1識別子に対して送信します。応答には、解決可能なDigital Link、キャリアのペイロード、そして当該製品グループのギャップレポートが含まれます。
POST /v1/passports
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

サプライチェーンのイベントを追加する

JSON-LDシリアライズによるEPCIS 2.0。どの対象が、いつ、どこで、どの業務ステップか — すべてのイベントが答える四つの次元です。
POST /v1/events
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

サプライヤーの主張に署名する

サプライヤーが自らの分散型識別子のもとで発行するため、主張には作成者が伴います。これが、保存された数値を証拠に変えます。
POST /v1/credentials
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

提示された主張を検証する

検証では署名と失効状態を確認します。CirculeID は不要です。このエンドポイントは利便性のためのものであり、依存先ではありません。
POST /v1/credentials/verify
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

スキャンに応答する

公開経路です。鍵もアカウントも不要で、すべての匿名の呼び出しに同一の応答を返します。だからこそエッジでキャッシュできます。
GET /01/{gtin}
# 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.

パターン

それぞれが通常どこにあるか

同じ5つの操作を、通常それらを担っているシステムに割り当てたもの。
  • 発行パイプライン

    PLMを読み取り、次の生産ロット向けにパスポートを発行する定期ジョブ。

  • イベントの取り込み

    WMSおよびMESのメッセージを、発生と同時にEPCISイベントへ変換するサービス。

  • サプライヤー向けポータル

    二次サプライヤーが、貴社自身では主張できないクレームを提出し署名する場所。

  • ストアフロント

    公開階層を読み取り、裏づけのあるサステナビリティ情報を商品ページに表示する。

  • キャリアそのもの

    貴社側のコードは一切不要です。リゾルバがスキャンに直接応答します。

  • 回収時の受入

    返品またはリサイクル施設のラインで、処理階層を読み取る。

回答

よくある質問

どの例から始めるべきですか。

パスポートを発行し、次にイベントを追加します。この二つで連携のトラフィックの大半を占め、識別モデル — モデル、ロット、個体 — を確定せざるを得なくなります。他のすべてが依存し、後から変えるのが最も難しい判断です。

初日からクレデンシャルを扱う必要がありますか。

いいえ。署名のないデータのパスポートも、パスポートとして機能します。ただ、どの数値を誰が主張したのかを示せないだけです。多くの計画はまず発行し、サプライヤーの登録が進むにつれて署名済みの主張を追加します。それが、サプライヤーとの調整が現実に許す順序でもあります。

消費者はスキャンから実際に何を受け取りますか。

キャリア内の GS1 Digital Link 識別子から解決されるパスポートの公開階層。ブラウザ向けにはページとして描画され、要求するシステムには JSON として返されます。認証もアカウントも不要で、スキャンした人物のプロファイルも作成しません。

本番環境に触れずにテストできますか。

はい。サンドボックスの鍵は別のホスト名に対して解決され、サンドボックスのパスポートは本番とまったく同じ挙動になります。本番のパスポートは長期にわたり公開される成果物であるため、この分離は慣行ではなく強制です。サンドボックスの鍵は本番に到達できません。

Next step

最初の二つをサンドボックスのキーで実行する

パスポートを一件発行し、イベントを一件追加してください。それだけで識別モデルは確定します。他のすべてがそこに依存する判断です。

Index