Callbackオブジェクト
親操作に関連する可能性のある帯域外コールバックのマップ。マップ内の各値は、API プロバイダーによって開始される可能性のある一連の要求と予期される応答を記述するパス項目オブジェクトです。パス項目オブジェクトを識別するために使用されるキー値は、実行時に評価される式であり、コールバック操作に使用する URL を識別します。
別の API 呼び出しから独立して API プロバイダーからの受信リクエストを記述するには、webhooksフィールドを使用します。
パターン化されたフィールド
| フィールドパターン | タイプ | 説明 |
|---|---|---|
| {表現} | パス項目オブジェクト| 参照オブジェクト | コールバック要求と予期される応答を定義するために使用されるパス項目オブジェクト、またはその参照。完全な例が利用可能です。 |
このオブジェクトは、仕様拡張機能を使用して拡張できます。
キー表現
パス アイテム オブジェクトを識別するキーは、ランタイムHTTP リクエスト/レスポンスのコンテキストで評価できるランタイム式で、コールバック リクエストに使用される URL を識別します。簡単な例は$request.body#/urlのとおりです。ただし、ランタイム式を使用すると、完全な HTTP メッセージにアクセスできます。これには、JSON ポインターRFC6901が参照できる本文の任意の部分へのアクセスが含まれます。
たとえば、次の HTTP リクエストがあるとします。
POST /subscribe/myevent?queryUrl=https://clientdomain.com/stillrunning HTTP/1.1Host: example.orgContent-Type: application/jsonContent-Length: 187{ "failedUrl" : "https://clientdomain.com/failed", "successUrls" : [ "https://clientdomain.com/fast", "https://clientdomain.com/medium", "https://clientdomain.com/slow" ] }201 CreatedLocation: https://example.org/subscription/1
次の例は、コールバック操作に eventTypeという名前のパス パラメーターとqueryUrl という名前のクエリ パラメーターがあると仮定して、さまざまな式がどのように評価されるかを示しています。
| 表現 | 価値 |
|---|---|
| $url | https://example.org/subscribe/myevent?queryUrl=https://clientdomain.com/stillrunning |
| $メソッド | 役職 |
| $request.path.eventType | 私のイベント |
| $request.query.queryUrl | https://clientdomain.com/stillrunning |
| $request.header.content-Type | アプリケーション/json |
| $request.body#/failedUrl | https://clientdomain.com/failed |
| $request.body#/successUrls/2 | https://clientdomain.com/medium |
| $response.header.Location | https://example.org/subscription/1 |
Callbackオブジェクトの例
次の例では、ユーザー指定のqueryUrlクエリ文字列パラメーターを使用してコールバック URL を定義します。これは、コールバック オブジェクトを使用して、WebHook への登録を可能にするサブスクリプション操作に伴う WebHook コールバックを記述する方法の例です。
myCallback: '{$request.query.queryUrl}': post: requestBody: description: Callback payload content: 'application/json': schema: $ref: '#/components/schemas/SomePayload' responses: '200': description: callback successfully processed
次の例は、サーバーがハードコーディングされているが、クエリ文字列パラメータがリクエスト本文のid およびemailプロパティから設定されるコールバックを示しています。
transactionCallback: 'http://notificationServer.com?transactionId={$request.body#/id}&email={$request.body#/email}': post: requestBody: description: Callback payload content: 'application/json': schema: $ref: '#/components/schemas/SomePayload' responses: '200': description: callback successfully processed