包装義務モニター
言語: 日本語

包装義務モニター · 開発者アクセス

APIとWebhook

以下の例では製品のURLを使用してください。APIキーはサーバーに保管してください。 対話型APIドキュメントを開く ↗

公開記録を読む

curl 'https://verpackung.getregisters.com/api/v1/feeds/de-packaging-compliance/records?limit=50&offset=0'

公開レスポンスには登録簿ごとの最新3件の記録のみが含まれます。古い記録の内容にはPROが必要です。直接URLでは限定プレビューを表示します。next_offsetがnullになるまで、絞り込み後のページに記録がない場合も含めて続けてください。各original_source_urlを引用してください。公開日と観測日は異なる事象を表します。

PRO記録を読む

curl 'https://verpackung.getregisters.com/api/v1/feeds/de-packaging-compliance/records?limit=50&offset=0' \
  -H 'Authorization: Bearer YOUR_SCOPED_KEY'

アカウントでキーを作成またはローテーション. キーはこの製品でのみ、かつ有料アクセスが有効な間だけ機能します。

エクスポート形式

PROにはCSV、Excel(.xlsx)、XML、RSS、Atomが含まれます。すべての形式で製品のAPIキーと同じフィルターを使用してください。例として、最大100件の記録をExcelブックとしてダウンロードします。

curl 'https://verpackung.getregisters.com/api/v1/feeds/de-packaging-compliance/records/export.xlsx?limit=100&offset=0' \
  -H 'Authorization: Bearer YOUR_SCOPED_KEY' \
  -D export-headers.txt -o records.xlsx

xlsxをcsv、xml、rss、atomのいずれかに置き換えてください。document_type=adoptedやfacility_id=YOUR_FACILITY_IDなどのフィルターを追加できます。rel="next"のLinkヘッダーがなくなるまで追跡し、各リクエストでAuthorizationヘッダーを保持してください。各ページは100件に制限されます。絞り込み後のページが空でも、後続ページが存在する場合があります。

RSSとAtomでは、Authorizationヘッダーに対応するリーダーを設定してください。リーダーURLにキーは含まれません。エントリには安定した記録IDがあり、ページネーションに従わないリーダーには最新ページが届きます。すべての記録が必要な場合はページネーション対応APIを使用してください。

記録の履歴を読む

curl 'https://verpackung.getregisters.com/api/v1/records/RECORD_ID/history?limit=50&offset=0' \
  -H 'Authorization: Bearer YOUR_SCOPED_KEY'

返された記録IDでRECORD_IDを置き換えてください。履歴は新しい順の配列で返されます。ページの長さがリクエストしたlimitより短くなるまで、ページ長をoffsetに加えて続けてください。バージョンには情報源の変更または抽出内容の訂正が反映される場合があります。

MCPで接続

curl 'https://verpackung.getregisters.com/api/v1/mcp' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"read_register","arguments":{"feed_id":"de-packaging-compliance"}}}'

PRO項目には同じAuthorizationヘッダーを追加してください。エンドポイントはinitialize、tools/list、notifications/initializedにも対応しています。完全な登録簿を読む場合は上記のRESTページネーションを使用してください。

Webhook署名を検証

署名ヘッダーはX-Register-Signature: t=TIMESTAMP,v1=HEX_DIGESTです。JSONを解析する前に、生の本文を検証してください。正常に処理したX-Register-Event IDを永続的に記録し、再試行で副作用が繰り返されないようにしてください。

import { createHmac, timingSafeEqual } from 'node:crypto';

export function verify(rawBody, header, secret) {
  const fields = Object.fromEntries(header.split(',').map(x => x.split('=')));
  const timestamp = Number(fields.t);
  if (!Number.isFinite(timestamp) || Math.abs(Date.now()/1000 - timestamp) > 300) return false;
  if (!/^[a-f0-9]{64}$/.test(fields.v1 || '')) return false;
  const expected = createHmac('sha256', secret).update(fields.t + '.').update(rawBody).digest();
  const supplied = Buffer.from(fields.v1, 'hex');
  return supplied.length === expected.length && timingSafeEqual(supplied, expected);
}

イベントを永続的に記録してから、成功レスポンスを返してください。配信の再試行回数には上限があります。アカウントには最後に記録された結果が表示されます。配信確認は、アプリケーションがイベントの処理を完了したことを確認するものではありません。