コンテンツにジャンプ
概要 概要 ニュース ニュース
共有

ウェブフックとイベント

リアルタイムイベント。 HMAC署名付きで配信されます。

PaperOfficeは、ドキュメント、ジョブ、ワークスペース、またはタスクに変更があった際にエンドポイントを呼び出します。ポーリングは不要です。

22種類のイベントタイプ、HMAC-SHA256署名、3つのリトライ戦略、および試行ごとの配信ログ。

すべての配信でHMAC-SHA256を使用 最大10回(標準5回) イベントIDで冪等性

利用可能なイベント

22イベントタイプ、エンティティ別にグループ化

個別のイベントを購読するか、すべてのイベントにプレースホルダー*を使用してください。

ドキュメント

14
  • document.uploaded ワークスペースに新しいドキュメントがアップロードされました
  • document.created document.uploadedのエイリアス(互換性用)
  • document.processed OCR/AI-IDPパイプラインが正常に完了しました
  • document.edited ドキュメントが編集されました:メタデータ、タグ、またはコンテンツが更新されました
  • document.deleted ドキュメントがゴミ箱に移動されました
  • document.restored ドキュメントがゴミ箱から復元されました
  • document.moved ドキュメントがワークスペース間で移動されました
  • document.version_created 既存ドキュメントの新しいバージョン
  • document.lifecycle_changed 保管/アーカイブステータスが変更されました
  • document.comment_added ドキュメントにコメントが作成されました
  • document.note_added 内部メモが添付されました
  • document.tag_added タグがドキュメントに割り当てられました
  • document.legal_hold_placed 法的保持が有効化されました(不変)
  • document.legal_hold_released 法的保持が解除されました

ジョブ

3
  • job.completed 非同期ジョブが正常に完了しました
  • job.failed 非同期ジョブが最終的に失敗しました
  • job.progress 進捗状況の更新(長時間実行ジョブ)

Workspaces

2
  • workspace.shared ワークスペースがユーザーまたはチームと共有されました
  • workspace.unshared ワークスペースへのアクセス権が取り消されました

タスク

3
  • task.created 新しいタスクが作成されました
  • task.completed タスクが完了としてマークされました
  • task.overdue タスクの期限が過ぎました

ペイロードとヘッダー

すべての配信は同じスキーマに従います

予測可能なJSONボディ、固定HTTPヘッダー、ISO-8601 UTCタイムスタンプ。

リクエストボディ

{
  "event_type": "document.processed",
  "event_id": "a3b7f9c1d4e8b2a6c9f1d4e7b2a5c8f1",
  "timestamp": "2026-04-17T14:23:11Z",
  "subscription_id": 42,
  "data": {
    "pofid": "doc_01HZY8K3M7P2Q9R5T1V6W4X2Y8",
    "workspace_id": 17,
    "filename": "invoice-2026-04-17.pdf",
    "mime_type": "application/pdf",
    "size_bytes": 284521,
    "processing_result": {
      "ocr_done": true,
      "classification": "invoice",
      "confidence": 0.98
    }
  }
}

HTTPリクエストヘッダー

ヘッダー 例値 意味
Content-Type application/json 常にJSON、UTF-8エンコーディング
User-Agent PaperOffice-Webhook/1.0 ファイアウォール許可リスト用の固定識別子
X-PaperOffice-Event document.processed 配信されたイベントタイプ
X-PaperOffice-Event-ID a3b7f9c1… 128ビット一意のID。アイデンプテンシーキーとして使用してください。
X-PaperOffice-Subscription-ID 42 イベントを受信するサブスクリプションのID
X-PaperOffice-Signature sha256=… 生ボディのHMAC-SHA256(16進数エンコード)
cURL
curl -X POST "https://api.paperoffice.ai/latest/webhooks/subscribe" \  -H "Authorization: Bearer po_ut_YOUR_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "name": "My Production Webhook",    "url": "https://yourdomain.com/webhooks/paperoffice",    "events": ["document.processed", "job.completed", "job.failed"],    "retry_policy": "exponential",    "max_retries": 5,    "timeout_ms": 10000  }'

署名検証

各配信をHMAC-SHA256で検証する

共有シークレットを使用して生リクエストボディのHMAC-SHA256を計算し、その結果をX-PaperOffice-Signatureと比較してください。定数実行時間での比較が必須です。

  • 定数実行時間での比較

    hash_equals、hmac.compare_digest、またはcrypto.timingSafeEqualを使用してください。比較処理は実行時間の差異を外部に漏らしてはいけません。

  • 生のボディに署名する

    署名は変更されていないリクエストボディに対して有効です。検証後にJSONを解析してください。それ以外の場合、ハッシュ値が異なります。

  • APIによる購読

    name、url、eventsを指定してPOST /latest/webhooks/subscribeを実行します。secretが空の場合、PaperOfficeが生成し、一度だけ返します。

リトライと配信

最大10回の再試行を行う3つのリトライ戦略

ポリシーを購読ごとに選択します。各試行はステータスコード、レスポンスボディ、および計測時間とともにログに記録されます。

  • 標準 exponential

    指数関数的(デフォルト)

    試行間の間隔は、各失敗後に2倍になります。

  • linear

    線形

    試行間の間隔は固定のステップで増加します。

  • none

    なし

    5xxでも再試行しません(送信して忘れ)。テストフックに有用。

  • 成功 タイムアウトウィンドウ内でのHTTP 2xx
  • 最大再試行回数 最大10回の再試行(デフォルト5回)
  • タイムアウト 1,000〜30,000 ms/試行(標準 10,000)
  • 配信ログ 各試行はログに記録されます。サブスクリプションを削除しても、ログは保持されます。

管理-API

/latest/webhooks/ 以下の5つのエンドポイント

サブスクリプションの作成、一覧表示、更新、削除 — さらにテスト用エンドポイント。各呼び出しにはBearerトークンが必要です。

  • POST /webhooks/subscribe サブスクリプションを作成;ペイロードはHMAC-SHA256で署名されます MCPツールpo-webhooks-subscribe
  • GET /webhooks/list アカウントのすべてのWebhookサブスクリプションを一覧表示 MCPツールpo-webhooks-list
  • POST /webhooks/update URL、イベント、ヘッダー、リトライポリシー、またはアクティブステータスを更新 MCPツールpo-webhooks-update
  • POST /webhooks/delete 購読を削除;配信ログは保持されます MCPツールpo-webhooks-delete
  • POST /webhooks/test 購読先にテストイベントを送信し、配信を確認します MCPツールpo-webhooks-test

セキュリティ

ゼロからのハードニング

すべての配信において機能する6つのメカニズム — PaperOffice側とお客様の側で。

  • HMAC-SHA256

    すべての配信はあなたのシークレットで署名されます。比較は必ず一定の時間で実行する必要があります。

  • SSRF保護

    購読時およびディスパッチ時に、プライベートIP、内部IP、ローカルホスト、クラウドメタデータエンドポイントがブロックされます。

  • DNSリバインディング対策済み

    ディスパッチ時にIPが再検証され、CURLOPT_RESOLVEによって固定されます。

  • HTTPS推奨

    httpとhttpsの両方が受け入れられます。本番環境ではHTTPSを推奨します。

  • イベントIDによる冪等性

    各配信には一意のX-PaperOffice-Event-IDが付随します。クライアント側で重複排除してください。

  • 完全な配信ログ

    すべての試行がログに記録されます:ステータスコード、レスポンスボディ、計測時間、エラーメッセージ。

制限

サブスクリプションごとの配信動作を構成可能

すべての値は、作成時または後から /webhooks/update を介して設定できます。アカウントごとではなく、サブスクリプションごとに適用されます。

  • 0–10 1回あたりの再試行回数(デフォルト: 5)
  • 1,000–30,000 ms 各試行のタイムアウト(デフォルト: 10,000 ms)
  • 3 再試行ポリシー: none, linear, exponential
  • HMAC-SHA256 各配信で署名を使用

WebhookはプランProfessionalからご利用いただけます。お客様のセットアップに最適なプランは、料金表でご確認いただけます。

動画

実践での Webhook

PaperOffice Webhook が実際にどのように機能するかをご覧ください。

実践での Webhook

よくある質問

Webhookに関するよくある質問

配信を検証するにはどうすればよいですか?

サブスクリプションのシークレットを使用して、生リクエストボディにHMAC-SHA256を計算し、結果をX-PaperOffice-Signatureヘッダー(形式:sha256=<hex>)と比較します。署名が一致しない場合は、HTTP 401で応答し、ボディを処理しないでください。

シークレットはどこから取得しますか?

POST /latest/webhooks/subscribeでサブスクリプションを作成する際。secretフィールドを空にすると、PaperOfficeがシークレットを生成し、一度だけ応答で返します。POST /latest/webhooks/updateを使用して、いつでも置き換えることができます。

エンドポイントが応答しない場合どうなりますか?

HTTP 2xx 以外の応答またはタイムアウトはすべて失敗としてカウントされます。再試行ポリシー(指数関数的、線形、なし)に応じて、PaperOffice は設定された再試行回数(0〜10、デフォルトは 5)まで配信を繰り返します。各試行は、ステータスコード、応答内容、および計測時間とともに配信ログに記録されます。

同じ配信が重複して届くことはありますか?

はい、タイムアウト後の再試行により重複する可能性があります。そのため、X-PaperOffice-Event-ID を使用してデ.duplication(重複排除)を行ってください。この ID はイベントごとに一意であり、データベースでのインデペンデンシー(冪等性)キーとして適しています。

どのイベントを購読できますか?

4つのグループ(ドキュメント、ジョブ、ワークスペース、タスク)から22種類のイベントタイプがあります。特定のイベントのみを購読することも、プレースホルダー * を使用してすべてを購読することもできます。filters(例:workspace_id や pofid)を使用して、購読対象をさらに絞り込むことができます。

Webhook はどのプランに含まれていますか?

Webhook はプラン Professional から利用可能です。お客様のセットアップに最適なプランは、料金表でご確認いただけます。

PaperOfficeをどこで試しますか?

PCとスマートフォンが接続されました:PCでワークスペース、電話で取得。

テスト版が準備完了しました

どこから始めますか?

フルワークスペースはPC用に最適化されています。モバイルバージョンは文書の取得、確認、共有に適しています。

app.paperoffice.ai

PCで開始する

パーソナルアクセスリンクをメールアドレスにお送りします。

無料で登録 アプリを開く PaperOfficeアプリ フル製品:ウェブ、デスクトップ、モバイル。文書の取り込み、整理、検索、チームでの作業。 無料アカウントが必要です Playgroundを開く Playground 選択した機能をすぐに試せます — 登録なし、制限付きのデモAPIキーで。 登録不要、ただし制限付きのデモAPIキー