イベントのサブスクライブ

post

/restproxy/api/v2/channels/{channelName}/event-subscriptions

イベントをサブスクライブします

リクエスト

サポートされるメディア・タイプ
パス・パラメータ
本文()
イベントをサブスクライブするリクエスト
ルート・スキーマ: EventSubscription
型: object
ソースの表示
ネストしたスキーマ: callbackTLSCerts
型: object
ソースの表示
ネストしたスキーマ: oauth
型: object
コールバック・サーバーがOAuth2で保護されている場合、オプションでOAuthアプリケーションの詳細を指定します。クライアント資格証明およびリフレッシュ・トークン・フローのみがサポートされています。
ソースの表示
  • ヘッダーで認可パラメータを渡す必要がある場合はtrueに設定します。
  • OAuthアプリケーションのクライアントID。クライアント資格証明フローの場合は必須であり、オプションでリフレッシュ・トークン・フローにも指定できます
  • OAuthアプリケーションのクライアント・シークレット。クライアント資格証明フローには必須で、リフレッシュ・トークン・フローではオプションです。
  • リフレッシュ・トークン・フローを使用している場合は、リフレッシュ・トークンを生成して渡します。
  • scopes
    トークンに関連付けるスコープのリスト。
  • アクセス・トークンを生成するためのコールが行われるURL。
ネストしたスキーマ: scopes
型: array
トークンに関連付けるスコープのリスト。
ソースの表示
先頭に戻る

レスポンス

サポートされるメディア・タイプ

200レスポンス

操作の成功
本文()
ルート・スキーマ: schema
型: object
ソースの表示
ネストしたスキーマ: result
型: object
ソースの表示

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 イベント・タイプ
  • transaction: 特定のトランザクションIDに対するイベントに関連します。
  • chaincode: チェーンコードから生成されたイベントを返します。
  • block: ブロック内のデータ全体を返します。
  • filteredblock: ブロック番号と各トランザクションIDを、チェーンコード・イベントの検証コードおよびペイロードとともに返します。
callbackURL イベントのコールバック・アドレス。 有効なHTTP/HTTPSアドレスである必要があります。
maxCallbackRetry このパラメータは、イベント配信が成功するか、RESTプロキシが再起動するまで、コールの再試行を継続する回数を示します。

再試行間隔は、1秒から開始して120秒まで指数関数的に増加します。

HTTP 4XXレスポンス(HTTP 401およびHTTP 429を除く)は、端末障害とみなされるため、この値をオーバーライドします。システムは、その特定のイベントを障害として記録し、キュー内の残りのイベントをすべて処理します。

整数を指定する必要があります。最初のコール後に再試行する回数を表します。

デフォルトは7です。

expires 現在のリクエスト時以降、サブスクライブ済イベントが期限切れになるまでの時間。
  • <xx>M<xx>w<xx>d<xx>h<xx>m:
    • xxは有効な整数です。
    • Mは月を表します。
    • wは週です。
    • dは日です。
    • hは時間です
    • mは分を示します。
  • 設定されていない場合、デフォルト値は1d (1日)です。
callbackTLSCerts TLS証明書をコールバックします。 次のものが含まれます:
  • caCert (オプション): コールバック・サーバーのCA証明書。コールバック・サーバーを検証するために、RESTプロキシによって使用されます。証明書はPEM形式で作成されている必要があります。
  • clientCert (オプション): コールバック・サーバーへの接続時に、RESTプロキシの証明書として使用されるクライアント証明書。コールバック・サーバーで相互認証を有効にする場合にのみ必要です。証明書はPEM形式で、秘密キーとクライアント証明書を連結したものであることが必要です。
  • keyPassword (オプション): 暗号化された秘密キーのパスワード。base64でエンコードされている必要があり、clientCertに暗号化された秘密キーが含まれる場合にのみ必要です。
txid トランザクションID  
chaincode サブスクライブしているチェーンコード・アプリケーションのチェーンコードID。  
seek 配信されるブロック。
  • oldest: すべてのブロックを最も古いブロックから配信します
  • newest: 最新のブロックを配信します
  • from: blockパラメータに指定されたブロック番号から配信します。

このオプションは、transactionを除くすべてのパラメータtypeに使用できます。

block ブロック番号 この値は、seekfromの場合に使用されます。
event チェーンコードのイベント・フィルタ *は、すべてのイベントを指定します。

ノート:

ブロックチェーン・インスタンスのRESTプロキシ値は、インスタンス・コンソールの「ノード」タブから確認できます。

イベントの最大ペイロード・サイズは50KBに制限されます。最大ペイロード・サイズより大きいイベントは削除されます。Oracle DevOpsチームは、リクエストによってこのパラメータを変更できます。ペイロードが50KBを超えるイベントをサブスクライブする場合は、My Oracle Supportでサービス・リクエスト(SR)を開き、最大イベント・サイズを大きくするようリクエストします。

OAuth 2.0で保護されたコールバック・エンドポイントの呼出し

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"
   }
}
先頭に戻る