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

ここに表示されているのは Apigee Edge のドキュメントです。
Go to the Apigee X のドキュメントに移動します。
info

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

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

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

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

API プロダクトを API プロダクト バンドルに追加した後、 API プロダクトの価格ポイントを設定する必要がある場合があります。これを行う必要があるのは、次の条件をすべて満たす場合のみです。

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

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

[Product Bundles] ページについて

以下の手順に従って、[Product Bundles] ページにアクセスします。

エッジ

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

前の図のように、[Product Bundles] ページでは次のことができます。

プロダクト バンドル内の API プロダクトの管理や、プロダクト バンドルの削除(料金プランが定義されていない場合)は、API を使用してのみ行うことができます。

Classic Edge(Private Cloud)

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

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

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

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

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

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

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

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

  4. 手順 3 を繰り返して、API プロダクト名を追加します。
  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 プロダクト バンドルに追加するには、 organizations/{org_name}/monetization-packages/{package_id}/products/{product_id} に POST リクエストを発行します。 ここで、{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 プロダクト バンドルの識別子です(API プロダクト バンドルを作成すると、 レスポンスで ID が返されます)。次に例を示します。

$ 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 プロダクト バンドルを取得するには、GET リクエストを /organizations/{org_name}/monetization-packages に発行します。次に例を示します。

$ 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 に設定すると、ページごとに返される 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 プロダクト バンドルを取得するには、 GET リクエストを発行します /organizations/{org_name}/packages-with-transactions。リクエストを発行する際は、 期間の開始日と終了日をクエリ パラメータとして指定する必要があります。たとえば、次のリクエストは、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 プロダクト バンドルを指します。企業またはデベロッパー専用の 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 のいずれかの値を指定できます。

なし はい