ウェブフックエンドポイント仕様
ポケットサインは各種イベントの発生時に、以下の仕様のHTTPリクエストを事前に登録されたサービスのバックエンドサーバーのエンドポイントに送信し、PSLinkEventを通知します。
リクエスト
| 項目 | 内容 |
|---|---|
| 送信先エンドポイント | https://{事前に登録されたポケットサインサーバーからアクセス可能なアドレス} |
| HTTP メソッド | POST |
| Content-Type | application/pslinkevent+jwt |
| リクエストボディ | 詳細はpslinkevent+jwt |
サービスはバックエンドサーバーにこのリクエストを受け取るエンドポイントを実装する必要があります。
pslinkevent+jwt
PSLinkEvent仕様で規定されているJWTを、通知送信HTTPリクエストのリクエストボディとして送信します。
署名付き値と同様に、サービスのバックエンドサーバーは、JWTの有効性を検証することで、このエンドポイントに送信されたリクエストが真にポケットサインから送信されたものかを確認する必要があります。
検証を怠ると、ポケットサインとは全く関係のない第三者から、実際には発生していない架空のイベント通知を受け取り処理してしまう危険性があります。
JWTの有効性検証で用いる公開鍵
ポケットサインサーバーから公開鍵を取得します。以下のエンドポイントで取得できます。
| 環境名 | エンドポイント |
|---|---|
| モック環境 | https://api.core.mock.p8n.app/jwks |
| 本番環境 | https://api.core.p8n.app/jwks |
これらのエンドポイントは、RFC7517のJWK Set Formatで返します。
これらは、署名付き値の検証に使用される公開鍵と同一です。
レスポンス
サービスのバックエンドサーバーは、PSLinkEventを正常に受け取った場合、204 No Contentまたはレスポンスボディが空の200 OKのレスポンスを返却してください。
また、サービスのバックエンドサーバーはレスポンスを30秒以内に返却する必要があります。30秒以内に返却されなかった場合は、ポケットサインはリクエストをタイムアウトとして切断します。
200番台以外のステータスコードが返却された・リクエストがタイムアウトした場合、ポケットサインは通知の送信をリトライします。 最大5回までリトライを行い、リトライまでの時間間隔は指数バックオフアルゴリズムによって増加します。