イベントのサブスクライブ
/restproxy/api/v2/channels/{channelName}/event-subscriptions
リクエスト
- application/json
- channelName(必須): string
チャネルのID
object
- block: integer(int64)
ブロックの番号
- callbackTLSCerts: object callbackTLSCerts
- callbackURL(必須): string
コールバックするURL
- chaincode: string
チェーンコードの名前
- event: string
イベントの名前。
- expires: string
サブスクリプションの有効期限
- maxCallbackRetry: integer
再試行の最大数再試行間隔は、指数関数的バックオフに基づいて最大2分まで長くなります。
- oauth: object oauth
コールバック・サーバーがOAuth2で保護されている場合、オプションでOAuthアプリケーションの詳細を指定します。クライアント資格証明およびリフレッシュ・トークン・フローのみがサポートされています。
- role: string
使用するHyperledger Fabric登録を指定します
- seek: string
許容値:
[ "oldest", "newest", "from" ]
イベントの開始位置。typeが"block"および"filteredblock"の場合にのみ使用されます - txid: string
トランザクションのID
- type(必須): string
許容値:
[ "block", "filteredblock", "transaction", "chaincode" ]
サブスクライブするイベント・タイプ
object
- authInHeader: boolean
ヘッダーで認可パラメータを渡す必要がある場合はtrueに設定します。
- clientID: string
OAuthアプリケーションのクライアントID。クライアント資格証明フローの場合は必須であり、オプションでリフレッシュ・トークン・フローにも指定できます
- clientSecret: string
OAuthアプリケーションのクライアント・シークレット。クライアント資格証明フローには必須で、リフレッシュ・トークン・フローではオプションです。
- refreshToken: string
リフレッシュ・トークン・フローを使用している場合は、リフレッシュ・トークンを生成して渡します。
- scopes: array scopes
トークンに関連付けるスコープのリスト。
- tokenUrl: string
アクセス・トークンを生成するためのコールが行われるURL。
レスポンス
- application/json
200レスポンス
object
- error: string
デフォルト値:操作が失敗した場合のエラー・メッセージ
- result: object result
- returnCode(必須): string
許容値:
[ "Success", "Failure" ]
400レスポンス
401レスポンス
403レスポンス
404レスポンス
500レスポンス
例
このエンドポイントは、イベント・サブスクリプションをリクエストするために使用されます。
TLS証明書を使用したコールバック・エンドポイントの呼出し
次の例は、cURLを使用してRESTリソースに対するPOSTリクエストを発行し、イベント・サブスクリプションをリクエストする方法を示しています。
curl -v -u <username>:<password> -X POST \ "https://<restproxy of your Blockchain instance>/api/v2/channels/<channelName>/event-subscriptions" \ -H "accept: application/json" \ -H "Content-Type: application/json" \ --data @<JSON file with the request parameters>
たとえば、
curl -v -u obpuser:<password> -X POST \ "https://myvm.oracle.com:10000/restproxy/api/v2/channels/default/event-subscriptions" \ -H "accept: application/json" \ -H "Content-Type: application/json" \ --data @file.json
file.json
の内容は次のとおりです。{ "role": "myinstance_defaultuser", "type": "chaincode", "callbackURL": "http://192.0.2.1:9000", "expires": "1m", "callbackTLSCerts": { "caCert": "", "clientCert": "", "keyPassword": "" }, "txid": "b1c11242383212cfdcca97d68efc0b3641436b1845a9b4c6e822cf6099ca49ee", "chaincode": "obcs-example02", "seek": "oldest", "block": 0, "event": ".*", "oauth": {} }
ペイロード・ファイルの各パラメータが表す内容は次のとおりです:
表 - ペイロードのパラメータ
パラメータ | 用途 | 有効な値 |
---|---|---|
role |
使用するFabric登録の名前 | |
type |
イベント・タイプ |
|
callbackURL |
イベントのコールバック・アドレス。 | 有効なHTTP/HTTPSアドレスである必要があります。 |
maxCallbackRetry |
このパラメータは、イベント配信が成功するか、RESTプロキシが再起動するまで、コールの再試行を継続する回数を示します。
再試行間隔は、1秒から開始して120秒まで指数関数的に増加します。 HTTP 4XXレスポンス(HTTP 401およびHTTP 429を除く)は、端末障害とみなされるため、この値をオーバーライドします。システムは、その特定のイベントを障害として記録し、キュー内の残りのイベントをすべて処理します。 |
整数を指定する必要があります。最初のコール後に再試行する回数を表します。
デフォルトは7です。 |
expires |
現在のリクエスト時以降、サブスクライブ済イベントが期限切れになるまでの時間。 |
|
callbackTLSCerts |
TLS証明書をコールバックします。 | 次のものが含まれます:
|
txid |
トランザクションID | |
chaincode |
サブスクライブしているチェーンコード・アプリケーションのチェーンコードID。 | |
seek |
配信されるブロック。 |
このオプションは、 |
block |
ブロック番号 | この値は、seek がfrom の場合に使用されます。
|
event |
チェーンコードのイベント・フィルタ | * は、すべてのイベントを指定します。
|
ノート:
ブロックチェーン・インスタンスのRESTプロキシ値は、インスタンス・コンソールの「ノード」タブから確認できます。イベントの最大ペイロード・サイズは50KBに制限されます。最大ペイロード・サイズより大きいイベントは削除されます。Oracle DevOpsチームは、リクエストによってこのパラメータを変更できます。ペイロードが50KBを超えるイベントをサブスクライブする場合は、My Oracle Supportでサービス・リクエスト(SR)を開き、最大イベント・サイズを大きくするようリクエストします。
OAuth 2.0で保護されたコールバック・エンドポイントの呼出し
callbackTLSCerts
パラメータのかわりにoauth
パラメータを渡します。次の例は、OAuth 2.0トークンを使用したイベント・サブスクリプションのペイロード・ファイルを示しています: {
"type": "block",
"callbackURL": "192.0.2.1",
"callbackTLSCerts": {},
"expires": "30m",
"seek": "newest",
"event": ".*",
"maxCallbackRetry": 7,
"oauth": {
"clientID": "my-client-id",
"clientSecret": "my-client-secret",
"tokenUrl": "https://identity.example.com/oauth2/v1/token",
"authInHeader": true,
"scopes": ["urn:opc:idm:__myscopes__"]
}
}
type
は、イベント・タイプを指定します。この例では、block
はブロックのデータが返されることを示します。callbackURL
は、有効なHTTP/HTTPSアドレスであるイベント・コールバック・アドレスを指定します。expires
は、このサブスクリプションが現在のリクエストから30分後に失効することを示します。seek
は、配信するブロックを指定します。この例では、newest
は、このサブスクリプションが最新のブロックを配信することを示しています。このオプションは、transaction
を除くすべてのtype
パラメータに使用できます。event
はチェーンコード・イベント・フィルタです。*
は、ユーザーが指定されたチェーンコード内のすべてのイベントにサブスクライブしていることを示します。maxCallbackRetry
は、イベント配信が成功するまで試行される回数を指定します。maxCallbackRetry
パラメータのデフォルト値は7です。
oauth
パラメータには、次のパラメータが含まれます:
表 - OAuthのパラメータ
パラメータ | 用途 |
---|---|
clientID |
クライアントID。クライアント資格証明を使用する場合は必須です。期限切れトークンをリフレッシュする場合はオプションです。 |
clientSecret |
クライアント・シークレット。クライアント資格証明を使用する場合は必須です。期限切れトークンをリフレッシュする場合はオプションです。 |
refreshToken |
リフレッシュ・トークン。期限切れのアクセス・トークンの使用をリフレッシュする場合は必須です。 |
tokenUrl |
トークンの取得に使用するURL。このパラメータは常に必須です。 |
scopes |
トークンに関連付けるスコープのリスト。 |
authInHeader |
資格証明の渡し方を示すブール値。trueの場合、資格証明は基本認証を使用してヘッダーで渡されます。falseの場合、資格証明はペイロードで渡されます。 |
レスポンス本文の例
JSON形式のレスポンス本文のコンテンツの例を次に示します。
{ "returnCode": "Success", "error": "", "result": { "subid": "obpuser-dc28b77c-7e58-4b09-ae23-b2c01fa01b70" } }