ラッパーAPIパッケージ・コンポーネント

Wrapper APIパッケージには、ラッパーAPIのアーカイブ・ファイル、デプロイメント用のTerraformスクリプト、および対応するPostmanコレクションが含まれています。

  • ラッパーAPIアーカイブ・ファイルの名前は<ChaincodeName>WrapperAPI.zipです。これには、スタック・リソースにデプロイする必要があるTerraformスクリプトも含まれています。
  • Postmanコレクション・ファイルの名前は<ChaincodeName>_WrapperAPI.postman_collection.jsonです。このコレクションを使用して、すべてのラッパーAPIをコールできます。

ラッパーAPIパッケージ

ラッパーAPIパッケージには、ラッパーAPIの作成に必要なすべてのOracle Cloud Infrastructure (OCI)リソースをプロビジョニングするTerraformスクリプトが含まれています。APIごとに、追加のTerraformサポート・ファイルとOracle Functionsフォルダがあります。ラッパーAPIパッケージは、次のOCIリソースを作成します。

  • Virtual Cloud Network (VCN): 通信用のネットワーク・インフラストラクチャを確立します。
  • アプリケーション(Oracle Functions): APIロジックを処理するサーバーレス・ファンクションをデプロイします。
  • APIゲートウェイ: APIリクエストを管理およびルーティングするゲートウェイを作成します。
  • APIデプロイメント: APIゲートウェイでAPIを構成およびデプロイします。
  • APIデプロイメント・ポリシー: セキュアなアクセスを有効にするために必要なIAMポリシーを設定します。
  • OCIレジストリ: Dockerイメージを管理するためのコンテナ・レジストリを提供します。
ラッパーAPIを生成した後、構成変数を変更する場合は、Visual Studio Codeで更新するか、ラッパーAPIパッケージを抽出して、更新されたエンドポイントおよびリソース名でterraform.tfvarsファイルを更新し、更新されたエンドポイントでroutes.goファイルを更新できます。エンドポイントを更新するには、terraform.tfvarsファイルのfunction_paths変数を編集します。function_paths変数は、{endpoint, methodType}という構文でエンドポイントを定義します。次のテキストは、function_paths変数の例を示しています。
function_paths="[{\"endpoint\":\"/activateCBDCAccount\",\"methodType\":[\"POST\"]},{\"endpoint\":\"/addCBAdmin\",\"methodType\":[\"POST\"]},{\"endpoint\":\"/approveBurn\",\"methodType\":[\"POST\"]}]"
routes.goファイルは、<ChaincodeName>OCIFunctionフォルダにあります。routeData変数には、ルート名、引数、オプションの引数があるかどうかなど、ゲートウェイで作成されたすべてのルートのメタデータが含まれます。terraform.tfvarsファイルのfunction_paths変数のエンドポイントを更新する場合は、次の例に示すように、routes.goファイルのrouteData変数の対応するエントリも更新する必要があります。
var routeData = map[string]Route{
    "/activateCBDCAccount": {
        Args:           []string{"activateAccount", "orgId", "userId", "tokenId"},
        OptionalParams: true,
    },
}

ポストマンコレクション

Postmanコレクションでは、機密チェーンコードおよびOAuth 2.0認証がサポートされるようになりました。詳細は、Postman Collectionsの機能拡張を参照してください。

Postmanコレクションには、すべてのAPIの更新されたエンドポイントおよびペイロードが含まれます。次のコードは、ペイロードの例を示しています。
{
    "orgId": "{{bc-org-id}}",
    "userId": "user1",
    "tokenType": "fungible",
    "applicationGroups": "[\"application_groups value\"]",
    "dailyLimits": "{\"max_daily_amount\":10000,\"max_daily_transactions\":100}",
    "endorsers": {{endorsers}}
}
次の表に、Postmanコレクションの変数を示します。
可変 説明 デフォルト値
bc-admin-user adminロールを持ち、すべてのPOSTリクエストにアクセスできる管理ユーザー。デフォルトでは、このユーザーはチェーンコード内のすべてのPOSTリクエストのコール元です。 bc-admin-userの値
bc-admin-user-password 管理ユーザーのパスワード。 bc-admin-user-passwordの値
bc-org-id すべてのPOSTリクエストにおけるデフォルトの組織ID。orgIdはパラメータ名です。 bc-org-id値
bc-user-id すべてのPOSTリクエストのデフォルト・ユーザーID。userIdはパラメータ名です。 bc-user-id値
bc-token-id すべてのPOSTリクエストのデフォルト・トークンID。tokenIdはパラメータ名です。 bc-token-id値
endorsers endorsers配列には、このトランザクションを承認するための特定のピア(peer1、peer2など)がリストされます。 ["org1-xyz-abc.blockchain.ocp.oraclecloud.com:20009", "org2-xyz-abc.blockchain.ocp.oraclecloud.com:20009"]
api-gateway-endpoint ラッパーAPIエンドポイントのベース・パスとして機能する、各リクエストのエンドポイント。

APIが50未満の場合は、単一のエンドポイントが使用されます。50を超えるAPIがある場合、エンドポイントはAPIの数に基づいてapi-gateway-endpoint1api-gateway-endpoint2などとして動的に生成されます。

https://xyz.apigateway.region.oci.customer-oci.com/CBDC
bc-url Oracle Blockchain PlatformインスタンスのRESTプロキシURL。 https://test-xyz-abc.blockchain.ocp.oraclecloud.com:7443/restproxy
access-token-url Oracle Identity Cloud Service (IDCS)アクセス・トークンURL。例: <idcs_endpoint>/oauth/v1/token access-token-url値
client-id Oracle Blockchain PlatformインスタンスのクライアントID。 クライアントID
client-secret Oracle Blockchain Platformインスタンスのクライアント・シークレット。 クライアント・シークレット
peer この変数は、すべてのsetterおよびgetter APIのピア・ヘッダーを必要とする機密チェーンコード・ラッパーAPI Postmanコレクションにのみ存在します。 org-xyz-abc.blockchain.ocp.oraclecloud.com:20009

ラッパーAPIパッケージをデプロイした後、スタック・リソース・デプロイメントからの出力は、ゲートウェイ・エンドポイント値を含むJSONオブジェクトです。50を超えるAPIを生成すると、50のAPIごとに1つずつ、複数のゲートウェイ・エンドポイントが生成されます。これらのエンドポイントに関連するPostmanコレクション変数を更新する必要があります。Postmanコレクションのエンドポイント関連の変数は、Stack Resource ManagerのラッパーAPIパッケージ・デプロイメントの出力からの適切な値で更新する必要があります。

ラッパーAPI Postmanコレクションのすべてのsetter APIには、リクエスト・ペイロードのendorsersまたはsameOrgEndorserパラメータが含まれます。sameOrgEndorserパラメータを必要とするAPIを指定する情報は、チェーンコードの.ochain.jsonファイルのsameOrgEndorserOptionInWrapperAPIパラメータで定義されます。このパラメータにリストされているAPIでは、ペイロードでsameOrgEndorserがtrueに設定されます。他のすべてのsetter APIには、かわりにendorsersパラメータが含まれます。次の例は、卸売CBDCチェーンコードのパラメータを示しています。
"sameOrgEndorserOptionInWrapperAPI": ["addConversionRate","addTokenAdmin","addTokenAuditor","approveBurn","approveMint","burnTokens","createExchangePoolAccounts","deleteHistoricalTransactions","initializeCBDCToken","initializeExchangePoolUser","mintWithFundingExchangePool","rejectBurn","rejectMint","removeTokenAdmin","removeTokenAuditor","requestBurn","requestMint","updateCBDCToken","updateConversionRate"]
必要に応じて、.ochain.jsonファイルのsameOrgEndorserOptionInWrapperAPIパラメータをカスタマイズできます。ラッパーAPIを生成すると、指定したAPIによって、ペイロードにsameOrgEndorserパラメータがtrueとして含まれます。
Postmanコレクションの使用方法の詳細は、次のトピックを参照してください。