カスタム属性を使用して料金プランを構成する

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

はじめに

場合によっては、トランザクション カウンタを変数またはカスタム値に基づいて設定する必要があります。 たとえば、次のようなことが必要になる場合があります。

  • API 呼び出しのメッセージで指定された値に基づいて、デベロッパーに可変の金額を請求する。たとえば、API リクエストで送信されたバイト数 に基づいて、アプリ デベロッパーに課金できます。
  • 複数の API 呼び出しを 1 つのトランザクションにバンドルする。

カスタム属性付きの料金プランを使用すると、API 呼び出しのメッセージでカウンタとして機能する値を特定し、トランザクション数と料金の計算に使用できます。

カスタム属性付きの次の料金プランがサポートされています。

  • カスタム属性付きの料金表
  • カスタム属性付きの調整可能な通知

料金プランごとに最大 10 個のカスタム属性を設定できます。

カスタム属性の計算について

カスタム属性の値が料金プランのトランザクション数と料金にどのように反映されるか は、次の表に示すように、課金モデルによって異なります。

課金モデル カスタム属性の計算
定額制とボリュームバンド

custom attribute number * rate = charge to developer

定額制の場合、カスタム属性の数値は、料金を乗算するトランザクション数になります。 ボリュームバンドの場合、バンド内のトランザクション数はカスタム属性の数値だけ増加し、デベロッパーはそのトランザクション数に対して課金されます。たとえば、メッセージ内のカスタム属性の値が 10 の場合、 デベロッパーには 10 トランザクション分の料金が請求され、現在のバンド数に 10 トランザクションが追加されます。デベロッパーの現在の バンドに残っているトランザクション数が 6 つしかない場合、6 にそのバンドの料金が掛けられます。残りの 4 つは次のバンドに移行し 、そのバンドの料金が掛けられます。

ボリュームバンド プランで、最後のボリュームバンドに上限があり(「無制限」ではない)、 トランザクションがその上限を超えると、次の 2 つのことが起こります。

バンドル

バンドルはトランザクションごとではなくグループごとに課金されるため、次の 計算が行われます。

custom attribute number = amount added to bundle count

たとえば、メッセージ内のカスタム属性の数値が 10 の場合、バンドルで使用されるトランザクション数に 10 が追加されます。デベロッパーの現在のバンドルに残っているトランザクション数が 6 つしかない場合、そのバンドルは上限に達し、次の バンドル数が 4 つ増加します。次のバンドルの料金が 請求されます(ある場合)。

最後のバンドルに上限があり(「無制限」ではない)、トランザクションがその 上限を超えると、次の 2 つのことが起こります。

調整可能な通知

調整可能な通知の場合、次の計算が行われます。

custom attribute number = amount added to transaction count

たとえば、メッセージ内のカスタム属性の数値が 10 の場合、トランザクションの合計数に 10 が追加されます。

料金プランで カスタム属性の値を取得する場所

トランザクション記録ポリシー(API プロダクト バンドル)は、収益化に対して、 メッセージ内のカスタム属性の属性値を探す場所を指示します。カスタム属性は、API プロダクト バンドルのトランザクション記録ポリシーの [Custom Attributes] セクションで定義します。

次に、カスタム属性が定義されたトランザクション記録ポリシーを含む API プロダクト バンドルを作成したら、料金プランでそのカスタム属性を選択できます。

フローの概要は次のとおりです。

  1. API プロダクトを追加するときにカスタム属性を定義します
  2. プロダクトを含む API プロダクト バンドルを作成します。
    API プロダクト バンドルのトランザクション記録ポリシーで、料金プランの定義に使用するカスタム属性を 追加します。
  3. 料金プランを作成し、API プロダクト バンドルに料金表または調整可能な通知タイプ を指定し、カスタム評価パラメータを指定します。

次の図は、トランザクション記録ポリシーで定義されたカスタム属性と料金表プランの構成の関係を示しています。カスタム属性付きの調整可能な通知の料金プランの関係も同様ですが、ボリュームの値は適用されません。

メッセージでカスタム属性値を生成する方法

トランザクション記録ポリシーでは、レスポンス ヘッダー、レスポンス本文、レスポンス内の事前定義されたフロー変数など、いくつかの場所でカスタム属性の属性値を探すことができます。(リクエストは使用できません。トランザクションは、成功 レスポンスを受け取るまで正式なものではないためです)。次の例では、数値を含むレスポンス ヘッダー をメッセージに追加する方法を示します。どちらの場合も、変数と組み合わせて Assign Message ポリシー を 使用します。

リクエスト ペイロード サイズをレスポンス ヘッダーに追加する

各メッセージ リクエストには、リクエスト ペイロードのバイト数を含む client.received.content.length 変数があります。Assign Message ポリシーを Proxy Endpoint レスポンスに接続することで、長さの値を含むmessageSize という レスポンス ヘッダーを生成できます。

<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
    <DisplayName>Assign Message 1</DisplayName>
    <Set>
        <Headers>
          <Header name="messageSize">{client.received.content.length}</Header> 
        </Headers>  
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

アプリのカスタム属性値をヘッダーに追加する

同様に、アプリのカスタム属性の値を含むヘッダーを生成できます。 たとえば、次のように、各デベロッパー アプリにappratingというカスタム属性を含める場合を考えてみましょう。

Verify API Key ポリシー(収益化に必要)を使用すると、この値は verifyapikey.{policy_name}.apprating という変数に保存されます。Proxy Endpoint レスポンスに接続された Assign Message ポリシーを使用すると、アプリの apprating 値を含む apprating というヘッダーを生成できます。

<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
    <DisplayName>Assign Message 1</DisplayName>
    <Set>
        <Headers>
          <Header name="apprating">{verifyapikey.Verify-API-Key-1.apprating}</Header> 
        </Headers>  
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

料金プランを設定する

上記のカスタム属性の設定以外に、料金プランは通常と同じ方法で 設定されます(カスタム属性のない料金プランの場合)。ただし、次の要件を満たす必要があります。

UI を使用してカスタム属性付きの料金表プランを構成する

次のセクションで説明するように、Edge UI または Classic Edge UI を使用して、カスタム属性付きの料金表プランを構成します。

エッジ

Edge UI を使用してカスタム属性付きの料金表プランを構成するには:

  1. API プロダクトを追加するときにカスタム属性を定義します
  2. プロダクトを含む API プロダクト バンドルを作成します。API プロダクト バンドルを作成するをご覧ください。
    API プロダクト バンドルのトランザクション記録ポリシーで、料金プランの定義に使用するカスタム属性を追加します。詳細については、このトピックの概要とトランザクション記録ポリシーを作成するをご覧ください。
  3. API プロダクト バンドルに料金プランを作成し、 カスタム評価パラメータ を指定します。

詳細については、UI を使用して料金表プランの詳細を構成するをご覧ください。

Classic Edge(Private Cloud)

Classic Edge UI を使用してカスタム属性付きの料金表プランを作成する手順は次のとおりです。

  1. API プロダクトのトランザクション記録ポリシーで、料金プランの定義に使用するカスタム属性を追加します。詳細については、このトピックの概要とトランザクション記録ポリシーを作成するをご覧ください。API パッケージに含める API プロダクトごとにこれを行います。
  2. API プロダクトとトランザクション記録ポリシーを目的どおりに構成したら 、プロダクトを含む API パッケージを作成します。API パッケージを作成するをご覧ください。
  3. API パッケージの料金プランを作成し、料金プランのタイプとして [料金表 カスタム属性付き] を選択します。
  4. [料金表] リンクをクリックします。[料金表] ウィンドウが開きます。

  5. [Custom Attribute] プルダウン メニューでカスタム属性を選択します。メニューには、トランザクション記録ポリシーでプロダクト用に作成されたカスタム 属性が表示されます。デベロッパーには、各トランザクション内の選択したカスタム属性の値に基づいて課金されます。
    (属性値 * 料金 = デベロッパーへの請求額)
  6. 必要に応じて、料金表プラン の詳細を指定するの説明に沿って、フリーミアム プランを設定します。
  7. 料金表プランの 詳細を指定するの説明に沿って、課金モデルを設定します。ただし、カスタム属性付きの料金表の料金プラン タイプの場合、 課金モデルは選択したカスタム属性に基づきます。たとえば、課金モデルとして定額制を選択した場合、デベロッパーには、トランザクションごとの固定料金ではなく、各トランザクションで送信されるバイト数などのカスタム属性に基づいて固定料金が請求されます。詳細については、計算をご覧ください。
  8. [Save Draft] をクリックします。
    プランが最終版であることが確実な場合にのみ、プランを公開してください。公開日を設定してプランを公開する方法については、料金プランを 公開するをご覧ください。

詳細については、 UI を使用して料金表プランの詳細を指定するをご覧ください。

UI を使用してカスタム属性付きの調整可能な通知プランを構成する

カスタム属性付きの調整可能な通知プランを構成する方法は次のとおりです。

エッジ

Edge UI を使用してカスタム属性付きの料金表プランを構成するには:

  1. API プロダクトを追加するときにカスタム属性を定義します
  2. プロダクトを含む API プロダクト バンドルを作成します。API プロダクト バンドルを作成するをご覧ください。
    API プロダクト バンドルのトランザクション記録ポリシーで、料金プランの定義に使用するカスタム属性を追加します。詳細については、このトピックの概要とトランザクション記録ポリシーを作成するをご覧ください。
  3. API プロダクト バンドルに料金プランを作成し、 カスタム評価パラメータ を指定します。

詳細については、UI を使用して調整可能な通知プランを構成するをご覧ください。

Classic Edge(Private Cloud)

Classic Edge UI を使用してカスタム属性付きの料金表プランを構成するには:

  1. API プロダクトのトランザクション記録ポリシーで、料金プランの定義に使用するカスタム属性を追加します。詳細については、このトピックの概要とトランザクション記録ポリシーを作成するをご覧ください。API パッケージに含める API プロダクトごとにこれを行います。
  2. API プロダクトとトランザクション記録ポリシーを目的どおりに構成したら 、プロダクトを含む API パッケージを作成します。API パッケージを作成するをご覧ください。
  3. API パッケージの料金プランを作成し、料金プランのタイプとして [Adjustable Notification with Custom Attribute] を選択します。
  4. [詳細] リンクをクリックします。[調整可能な通知] ウィンドウが開きます。

  5. [Custom Attribute] プルダウン メニューでカスタム属性を選択します。メニューには、トランザクション記録ポリシーでプロダクト用に作成されたカスタム属性が表示されます。デベロッパーのトランザクションの合計数は、各トランザクション内の選択したカスタム属性の値に基づいて計算されます。
  6. [Aggregation Basis] を、トランザクションのボリュームが集計される期間に設定します。1 ~ 24 か月の数値を選択します。この値のデフォルトは 1 か月です。
  7. [Apply and Close] をクリックします。
  8. [Save Draft] をクリックします。
    プランが最終版であることが確実な場合にのみ、プランを公開してください。公開日を設定してプランを公開する方法については、料金プランを 公開するをご覧ください。

詳細については、 UI を使用して調整可能な通知プランの詳細を指定するをご覧ください。

API を使用してカスタム属性付きの料金プランの詳細を指定する

次の前提条件の手順を行います。

  1. API プロダクトのトランザクション記録ポリシーで、料金プランの定義に使用するカスタム属性を追加します。詳細については、このトピックの概要とトランザクション記録ポリシーを作成するをご覧ください。API パッケージに含める API プロダクトごとにこれを行います。
  2. API プロダクトとトランザクション記録ポリシーを目的どおりに構成したら 、プロダクトを含む API パッケージを作成します。API パッケージを作成するをご覧ください。

次に、API を使用して料金プランを作成します。

料金プランを作成するときに、カスタム属性付きの料金プランの詳細を指定します。詳細は、/organizations/{org_name}/monetization-packages/{package_id}/rate-plans の呼び出しのリクエスト本文の ratePlanDetails プロパティで指定します。詳細では、カスタム属性の名前を識別する評価パラメータ値を指定します。指定した時間間隔でカスタム属性 を集計する評価パラメータ値を指定することもできます。

料金プランの詳細オプションの完全なリストについては、料金プラン の詳細構成設定をご覧ください。

たとえば、次の例では、messageSize という名前のカスタム 属性に基づいて、カスタム属性付きの料金表プランを作成します(太字 の項目を参照)。

$ curl -H "Content-Type:application/json" -X POST -d \
'{
   "name": "Custom attribute-based rate card plan",
   "developer":null,
   "developerCategory":null,
   "currency": {
     "id" : "usd"
     },     
   "description": "Custom attribute-based rate card plan",
   "displayName" : "Custom attribute-based rate card plan",
   "frequencyDuration": "1",
   "frequencyDurationType": "MONTH",
   "earlyTerminationFee": "10",
   "monetizationPackage": {
      "id": "location"
        },
      "organization": {
       "id": "{org_name}"
      },    
   "paymentDueDays": "30",
   "prorate": "false",
   "published": "false",     
   "ratePlanDetails":[
      {
        "currency":{
           "id":"usd"
        },
      "duration":1,
      "durationType":"MONTH",
      "meteringType":"VOLUME",
      "paymentDueDays":"30",
      "ratingParameter":"messageSize",
      "ratingParameterUnit":"MB",
      "organization":{
         "id":"{org_name}"
      },
      "ratePlanRates":[
         {
           "rate":0.15,
           "startUnit":0,
           "type":"RATECARD",
           "endUnit":1000
         },
         {
           "rate":0.1,
           "startUnit":1000,
           "type":"RATECARD",
           "endUnit":null
         }
      ],
      "freemiumUnit":0,
      "freemiumDuration":0,
      "freemiumDurationType":"MONTH",
      "type":"RATECARD",
      "customPaymentTerm":false
      }
    ],
    "freemiumUnit":0,
    "freemiumDuration":0,
    "freemiumDurationType":"MONTH",
    "contractDuration":"1",
    "contractDurationType":"YEAR", 
    "recurringStartUnit": 1,
    "recurringType": "CALENDAR",
    "recurringFee": "10",
    "setUpFee": "10",
    "startDate": "2013-09-15 00:00:00",
    "type": "STANDARD"
}' \
"https://api.enterprise.apigee.com/v1/mint/organizations/{org_name}/monetization-packages/location/rate-plans" \
-u email:password

次の例では、 messageSizeという名前のカスタム属性に基づいて、カスタム属性付きの調整可能な通知の料金プランを作成します(太字 の項目を参照)。

$ curl -H "Content-Type:application/json" -X POST -d \
'{
     "name": "AdjustableNotification",
     "displayName": "Custom attribute-based adjustable notification plan",
     "description": "Custom attribute-based adjustable notification plan",
     "published": "true",  
     "organization": {
      "id": "myorg"
     },
     "startDate": "2016-04-15 00:00:00",
     "type": "STANDARD",
     "monetizationPackage": {
        "id": "p1",
        "name": "test"
     },
     "currency": {
        "id" : "usd",
        "name" : "USD"
     },
     "ratePlanDetails": [
        {
           "type": "USAGE_TARGET",
           "meteringType": "DEV_SPECIFIC",
           "duration": 1,
           "durationType": "MONTH",
           "ratingParameter": "messageSize",
           "ratingParameterUnit": "MB",
           "organization": {
             "id": "myorg"
           },
           "currency": {
             "id": "usd",
             "name": "USD"
           }
        }
     ]
}' \
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/monetization-packages/p1/rate-plans"  \
-u email:password