API プロダクト バンドルの管理

現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください
情報

以下のセクションで説明するように、1 つ以上の API プロダクトを、API プロダクト バンドルと呼ばれる単一の収益化コンテナにバンドルします。

API プロダクト バンドルとは

API プロダクト バンドルは、デベロッパーにグループとして提示される API プロダクトのコレクションであり、通常は収益化用の 1 つ以上の料金プランに関連付けられます。複数の API プロダクト バンドルを作成し、それぞれに 1 つ以上の API プロダクトを含めることができます。同じ API プロダクトを異なるバンドルに含めて、異なる(または同じ)料金プランに関連付けることができます。

デベロッパーは、現在有効な料金プランのいずれかを購入することで、API プロダクト バンドルを使用するアプリを登録できます。料金プランの管理で説明されているように、プロダクト バンドルの料金プラン(開始日は現在または将来の日付を指定して)を追加して公開するまで、API プロダクト バンドルはデベロッパーに表示されません。料金プランを追加して公開すると、デベロッパーは API プロダクト バンドルを選択して料金プランを選択できるようになります。また、管理 API を使用してデベロッパーの料金プランを承認することもできます。詳細については、API を使用して公開料金プランを購入するをご覧ください。

API プロダクトを API プロダクト バンドルに追加したら、必要に応じて API プロダクトの料金を設定します。この操作は、次のすべてに当てはまる場合にのみ行ってください。

  • その API プロダクトの収益分配料金プランを設定します。
  • デベロッパーは、API プロダクトでのリソースの使用について、サードパーティに料金を請求します。
  • デベロッパーが請求できる金額には最小または最大の制限があり、その制限をデベロッパーに通知する必要があります。

最小価格と最高価格は、API プロダクト バンドルの詳細に表示されます。

[プロダクト バンドル] ページの詳細

次の手順で [Product Bundles] ページにアクセスします。

エッジ

Edge UI を使用して API プロダクト バンドル ページにアクセスするには、左側のナビゲーション バーで [Publish] > [Monetization] > [Product Bundles] を選択します。

前の図でハイライト表示されているように、[Product Bundles] ページでは次のことができます。

商品バンドル内の API プロダクトを管理したり、商品バンドルを削除したり(料金プランが定義されていない場合)には、API のみを使用します。

従来の Edge(Private Cloud)

Classic Edge UI を使用して [API Packages] ページにアクセスするには、上部のナビゲーション バーで [Publish] > [Packages] を選択します。

[API Packages] ページでは、次のことができます。

  • すべての API パッケージ(含まれている API プロダクトや関連する料金プランを含む)の概要情報を表示する
  • API パッケージを追加する
  • API パッケージを編集する
  • 料金プランの追加と管理
  • 料金プランのアクセス設定(公開/非公開)を切り替える
  • パッケージのリストをフィルタする

API パッケージ内の API プロダクトを管理したり、API パッケージを削除したり(料金プランが定義されていない場合)には、API のみを使用します。

一括販売商品を追加する

API プロダクト バンドルを追加するには:

  1. [プロダクト バンドル] ページで、[+ API Product Bundle] をクリックします。
  2. API プロダクト バンドルの名前を入力します。
  3. [Add a Product] フィールドに API プロダクトの名前を入力します。

    API プロダクトの名前を入力すると、その文字列を含む API プロダクトのリストがプルダウンに表示されます。API プロダクトの名前をバンドルに追加します。API プロダクトを追加するには、この手順を繰り返します。

  4. さらに API プロダクト名を追加するには、ステップ 3 を繰り返します。
  5. 追加する API プロダクトごとに、トランザクション記録ポリシーを構成します。
  6. [Save Product Bundle] をクリックします。

商品バンドルの編集

一括販売商品を編集するには:

  1. [Product Bundles] ページで、編集する一括販売の行をクリックします。

    一括販売のパネルが表示されます。

  2. 必要に応じて、一括販売のフィールドを編集します。

    詳細については、トランザクション記録ポリシーを構成するをご覧ください。

  3. [Update Product Bundle] をクリックします。

API を使用した API プロダクト バンドルの管理

以降のセクションでは、API を使用して API プロダクト バンドルを管理する方法について説明します。

API を使用した API プロダクト バンドルの作成

API プロダクト バンドルを作成するには、/organizations/{org_name}/monetization-packages に POST リクエストを発行します。リクエストを発行する際は、次のことを行う必要があります。

  • API プロダクト バンドルに含める API プロダクトを特定します。
  • API プロダクト バンドルの名前と説明を指定します。
  • API プロダクト バンドルのステータス インジケーターを設定します。ステータス インジケーターの値は、CREATED、ACTIVE、INACTIVE のいずれかです。現在、指定したステータス インジケーターの値は API プロダクト バンドルで維持されますが、いかなる目的にも使用されません。

必要に応じて、組織を指定できます。

API に公開されるオプションの一覧については、API プロダクト バンドル構成プロパティをご覧ください。

例:

$ curl -H "Content-Type:application/json" -X POST -d \
'{
     "description": "payment messaging package",
     "displayName": "Payment Messaging Package",
     "name": "Payment Messaging Package",
     "organization": { "id": "{org_name}" },
     "product": [
       { "id": "messaging" },
       { "id": "payment" }
     ],
     "status": "CREATED"
}' \
"https://api.enterprise.apigee.com/v1/mint/organizations/{org_name}/monetization-packages" \
-u email:password

レスポンスは次のようになります。

{
   "description" : "payment messaging package",
   "displayName" : "Payment Messaging Package",
   "id" : "payment_messaging_package",
   "name" : "Payment Messaging Package",
   "organization" : {
     "id" : "{org_name}",
     "separateInvoiceForFees" : false
   },
   "product" : [ {
     "customAtt1Name" : "user",
     "description" : "Messaging",
     "displayName" : "Messaging",
     "id" : "messaging",
     "name" : "messaging",
     "organization" : {
       "id" : "{org_name}",
       "separateInvoiceForFees" : false
     },
     "status" : "CREATED"
   }, {
     "customAtt1Name" : "user",
     "description" : "Payment",
     "displayName" : "Payment",
     "id" : "payment",
     "name" : "payment",
     "organization" : {
       "id" : "{org_name}",
       "separateInvoiceForFees" : false
     },
     "status" : "CREATED"
   }],
   "status" : "CREATED"
 }

レスポンスには、API プロダクトに関する追加情報と、それらの API プロダクトに指定されたカスタム属性が含まれています。(カスタム属性は API プロダクトの作成時に指定します)。API プロダクトのカスタム属性は、さまざまな料金プランに組み込まれます。たとえば、トランザクションごとにデベロッパーに請求する料金表プランを設定する場合、トランザクションで送信されたバイト数などのカスタム属性に基づいて、プランの料金を設定できます。

API を使用して API プロダクト バンドル内の API プロダクトを管理する

以降のセクションで説明するように、API を使用して API プロダクト バンドルに対して API プロダクトを追加または削除できます。

API プロダクト バンドルに API プロダクトを追加する

API プロダクトを API プロダクト バンドルに追加するには、POST リクエストを organizations/{org_name}/monetization-packages/{package_id}/products/{product_id} に送信します。ここで、{org_name} には組織の名前、{package_id} には API プロダクト バンドル名、{product_id} には API プロダクトの ID を指定します。

例:

$ curl -H "Accept:application/json" -X POST -d \
'{}'\
"https://api.enterprise.apigee.com/v1/mint/organizations/{org_name}/monetization-packages/{package_id}/products/{product_id}" \
-u email:password

API プロダクト固有の料金プランが設定された API プロダクト バンドルに API プロダクトを追加する

1 つ以上の API プロダクト固有の料金プラン(レート表または収益分配率)が定義されている API プロダクト バンドルに API プロダクトを追加するには、organizations/{org_name}/monetization-packages/{package_id}/products/{product_id} に POST リクエストを発行します。ここで、{org_name} には組織の名前、{package_id} には API プロダクト バンドル名、{product_id} には API プロダクトの ID を指定します。

新しい API プロダクトの料金プランの詳細をリクエスト本文に渡す必要があります。料金プランの値は、ratePlanRates 配列を除き、他のすべての API プロダクトに指定されている値と一致する必要があります。定義できる料金プラン属性の詳細については、料金プランの構成プロパティをご覧ください。

例:

$ curl -H "Content-Type:application/json" -X POST -d \
'{
    "ratePlan": [ 
        {
            "id": "mypackage_rateplan1",
            "ratePlanDetails": [
                {
                    "currency": {
                        "id": "usd"
                    },
                    "duration": 1,
                    "durationType": "MONTH",
                    "meteringType": "UNIT",
                    "organization" : {
                        "id": "{org_name}",
                    "paymentDueDays": "30",
                    "ratePlanRates": [
                        {
                            "rate": "1.99",
                            "startUnit": "0",
                            "type": "RATECARD"
                        }
                    ],
                    "ratingParameter": "VOLUME",
                    "type": "RATECARD"
                }
            ]
        }
    ]
}' \
"https://api.enterprise.apigee.com/v1/mint/organizations/{org_name}/monetization-packages/{package_id}/products/{product_id}" \
-u email:password

API プロダクト バンドルから API プロダクトを削除する

API プロダクト バンドルから API プロダクトを削除するには、organizations/{org_name}/monetization-packages/{package_id}/products/{product_id} に DELETE リクエストを発行します。ここで、{org_name} には組織の名前、{package_id} には API プロダクト バンドル名、{product_id} には API プロダクトの ID を指定します。

例:

$ curl -H "Accept:application/json" -X DELETE \
"https://api.enterprise.apigee.com/v1/mint/organizations/{org_name}/monetization-packages/{package_id}/products/{product_id}" \
-u email:password

API を使用して API プロダクト バンドルを表示する

組織内の特定の API プロダクト バンドルまたはすべての API プロダクト バンドルを取得できます。また、特定の期間にトランザクションが発生した API プロダクト バンドルを取得することもできます。つまり、指定された開始日と終了日の間に、それらのパッケージ内の API にアクセスするアプリをユーザーが呼び出すパッケージだけに限られます。

特定の API プロダクト バンドルを表示する: 特定の API プロダクト バンドルを取得するには、GET リクエストを /organizations/{org_name}/monetization-packages/{package_id} に発行します。ここで、{package_id} は API プロダクト バンドルの ID です(ID は、API プロダクト バンドルの作成時にレスポンスで返されます)。例:

$ curl -H "Accept:application/json" -X GET \
"https://api.enterprise.apigee.com/v1/mint/organizations/{org_name}/monetization-packages/payment_messaging_package" \
-u email:password

すべての API プロダクト バンドルを表示する: 組織のすべての API プロダクト バンドルを取得するには、/organizations/{org_name}/monetization-packages に GET リクエストを発行します。例:

$ curl -H "Accept:application/json" -X GET \
"https://api.enterprise.apigee.com/v1/mint/organizations/{org_name}/monetization-packages" \
-u email:password

次のクエリ パラメータを渡して、結果をフィルタリングできます。

クエリ パラメータ 説明
all すべての API プロダクト バンドルを返すかどうかを指定するフラグ。false に設定した場合、1 ページあたりで返される API プロダクト バンドルの数は size クエリ パラメータで定義されます。デフォルトは false です。
size ページごとに返される API プロダクト バンドルの数です。デフォルトは 20 です。all クエリ パラメータが true に設定されている場合、このパラメータは無視されます。
page 返すページの数(コンテンツがページ分けされている場合)。all クエリ パラメータが true に設定されている場合、このパラメータは無視されます。

組織内のすべての API プロダクト バンドルを表示すると、レスポンスは次のようになります(レスポンスの一部のみが表示されます)。

{
  "monetizationPackage" : [ {
    "description" : "payment messaging package",
    "displayName" : "Payment Messaging Package",
    "id" : "payment_messaging_package",
    "name" : "Payment Messaging Package",
    "organization" : {
      ...
    },
    "product" : [ {
      "customAtt1Name" : "user",
      "description" : "Messaging",
      "displayName" : "Messaging",
      "id" : "messaging",
      "name" : "messaging",
      "organization" : {
        ...
      },
      "status" : "CREATED"
    }, {
      "customAtt1Name" : "user",
      "description" : "Payment",
      "displayName" : "Payment",
      "id" : "payment",
      "name" : "payment",
      "organization" : {
        ...
      },
      "status" : "CREATED"
    } ],
    "status" : "CREATED"
  }, {
    "description" : "Communications",
    "displayName" : "Communications",
    "id" : "communications",
    "name" : "Communications",
    "organization" : {
      ...
    },
    "product" : [ {
      "customAtt1Name" : "user",
      "description" : "Location",
      "displayName" : "Location",
      "id" : "location",
      "name" : "location",
      "organization" : {
        ...
      },
      "status" : "CREATED"
    }, {
      "customAtt1Name" : "user",
      "description" : "Messaging",
      "displayName" : "Messaging",
      "id" : "messaging",
      "name" : "messaging",
      "organization" : {
        ...
      },
      "status" : "CREATED"
    } ],
    "status" : "CREATED"
  }, {
    "description" : "Payment",
    "displayName" : "Payment",
    "id" : "payment",
    "name" : "Payment",
    "organization" : {
     ...
    },
    "product" : [ {
      "customAtt1Name" : "user",
      "description" : "Payment",
      "displayName" : "Payment",
      "id" : "payment",
      "name" : "payment",
      "organization" : {
        ...
      },
      "status" : "CREATED"
    } ],
    "status" : "CREATED"
  } ],
  "totalRecords" : 3
}

トランザクションを含む API プロダクト バンドルを表示する: 指定期間のトランザクションを含む API プロダクト バンドルを取得するには、/organizations/{org_name}/packages-with-transactions に GET リクエストを発行します。リクエストを発行する際に、日付範囲の開始日と終了日をクエリ パラメータとして指定する必要があります。たとえば、次のリクエストでは、2013 年 8 月中のトランザクションを含む API プロダクト バンドルを取得します。

$ curl -H "Accept:application/json" -X GET \
"https://api.enterprise.apigee.com/v1/mint/organizations/{org_name}/packages-with-transactions?START_DATE=2013-08-01&END_DATE=2013-08-31" \
-u email:password

レスポンスは次のようになります(レスポンスの一部のみが表示されます)。

{
  "monetizationPackage" : [ {
    "description" : "Payment Package",
    "displayName" : "Payment Package",
    "id" : "payment_package",
    "name" : "Payment Package",
    "organization" : {
      ...
    },
    "product" : [ {
      "customAtt1Name" : "user",
      "customAtt2Name" : "response size",
      "customAtt3Name" : "content-length",
      "description" : "payment api product",
      "displayName" : "payment",
      "id" : "payment",
      "name" : "payment",
      "organization" : {
        ...
      },
      "status" : "CREATED",
      "transactionSuccessCriteria" : "status == 'SUCCESS'"
    } ],
    "status" : "CREATED"
  }, {
    "description" : "messaging package",
    "displayName" : "Messaging Package",
    "id" : "messaging_package",
    "name" : "Messaging Package",
    "organization" : {
      ...
    },
    "product" : [ {
      "customAtt1Name" : "user",
      "customAtt2Name" : "response size",
      "customAtt3Name" : "content-length",
      "description" : "messaging api product",
      "displayName" : "messaging",
      "id" : "messaging",
      "name" : "messaging",
      "organization" : {
        ...
      },
      "status" : "CREATED",
      "transactionSuccessCriteria" : "status == 'SUCCESS'"
    } ],
    "status" : "CREATED"
  },
     ...
  } ]
}

デベロッパーまたは企業が API を使用して承諾した API プロダクト バンドルを表示する

特定のデベロッパーまたは会社が承認した API プロダクト バンドルを表示するには、次の API に GET リクエストを発行します。

  • /organizations/{org_name}/developers/{developer_id}/monetization-packages: ここで、{developer_id} はデベロッパーの ID(メールアドレス)です。
  • /organizations/{org_name}/companies/{company_id}/monetization-packages。ここで、{company_id} は会社の ID です。

リクエストを発行する際に、必要に応じて次のクエリ パラメータを指定できます。

クエリ パラメータ 説明 デフォルト
current 有効な API プロダクト バンドルのみを取得する(current=true)か、すべてのパッケージを取得する(current=false)かを指定するフラグ。有効なパッケージ内のすべての料金プランが利用可能とみなされます。 current=false
allAvailable 利用可能なすべての API プロダクト バンドルを取得する(allAvailable=true)か、特定のデベロッパーまたは会社のみで利用可能な API プロダクト バンドルのみを取得する(allAvailable=false)かを指定するフラグ。「利用可能なすべて」とは、他のデベロッパーや会社に加えて、指定したデベロッパーまたは会社が利用できる API プロダクト バンドルを指します。企業またはデベロッパーのみが利用できる API プロダクト バンドルに含まれるのは、その会社またはデベロッパーのみが利用できる料金プランです。 allAvailable=true

たとえば、次のリクエストでは、特定のデベロッパーが承認しているすべての API プロダクト バンドルを取得します。

$ curl -H "Accept:application/json" -X GET \
"https://api.enterprise.apigee.com/v1/mint/organizations/{org_name}/developers/dev1@myorg.com/monetization-packages" \
-u email:password

次のリクエストでは、特定の会社が受け入れたアクティブな API パッケージのみを取得します。

$ curl -H "Accept:application/json" -X GET \
"https://api.enterprise.apigee.com/v1/mint/organizations/{org_name}/companies/myCompany/monetization-packages?current=true" \
-u email:password

API を使用して API プロダクト バンドルを削除する

API プロダクト バンドルは、料金プランが定義されていない場合にのみ削除できます。

料金プランが定義されていない API プロダクト バンドルを削除するには、organizations/{org_name}/monetization-packages/{package_id} に DELETE リクエストを発行します。ここで、{org_name} には組織の名前、{package_id} には API プロダクト バンドル名を指定します。

例:

$ curl -H "Accept:application/json" -X DELETE \
"https://api.enterprise.apigee.com/v1/mint/organizations/{org_name}/monetization-packages/{package_id}" \
-u email:password

API 用の API プロダクト バンドル構成プロパティ

次の API プロダクト バンドル構成オプションが API に公開されます。

名前 説明 デフォルト 必須 / 任意
description

API プロダクト バンドルの説明。

なし
displayName

API プロダクト バンドルに表示する名前(API パッケージのカタログなど)。

なし
name

API プロダクト バンドルの名前。

なし
organization

API プロダクト バンドルを含む組織。

なし ×
product

API プロダクト バンドルに含まれる 1 つ以上のプロダクトの配列。

なし ×
status

API プロダクト バンドルのステータス インジケーター。ステータス インジケーターの値は、CREATED、ACTIVE、INACTIVE のいずれかです。

なし