MonetizationLimitsCheck ポリシー

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

概要

MonetizationLimitsCheck ポリシーを使用すると、アプリ デベロッパーが行う API 呼び出しに収益化制限を適用できます。

ポリシーがトリガーされるのは、次のような場合です。

  • 収益化対象の API にアクセスするアプリ デベロッパーが、関連する API プロダクトの定期購入を購入していない場合
  • デベロッパーのアカウントの残高が不足しています。
  • デベロッパーが取引量の上限を超えている。

ポリシーを API プロキシに接続する方法については、API プロキシに収益化制限を適用するをご覧ください。

<MonetizationLimitsCheck> 要素

MonetizationLimitsCheck ポリシーを指定します。

デフォルト値 なし
必須かどうか 必須
タイプ 複合型
親要素 なし
子要素 <DisplayName>
<FaultResponse>
<IgnoreUnresolvedVariables>
<Variables>

次の表は、<MonetizationLimitsCheck> の子要素の概要をまとめたものです。

子要素 必須かどうか 説明
<DisplayName> 省略可 ポリシーのカスタム名。
<FaultResponse> 省略可 エラーが発生したときにリクエスト元のクライアントに返されるレスポンス メッセージを指定します。
<IgnoreUnresolvedVariables> 省略可 未解決の変数を検出したときに処理を停止するかどうかを決定します。
<Variables> 省略可 収益化の上限を確認するフロー変数を指定します。

<MonetizationLimitsCheck> 要素の構文は次のとおりです。

構文

<?xml version="1.0" encoding="UTF-8"?>
<MonetizationLimitsCheck async="false" continueOnError="false" enabled="true" name="POLICY_NAME">
    <DisplayName>DISPLAY_NAME</DisplayName>
    <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>
    <Variables>
        <Product>VARIABLE_NAME</Product>
    </Variables>
    <FaultResponse>
        <Set>
            <Payload contentType="text/xml">
                <error>
                    <messages>
                        <message>MESSAGE_TEXT</message>
                        <message>MESSAGE_TEXT</message>
                    </messages>
                </error>
            </Payload>
            <StatusCode>HTTP_STATUS</StatusCode>
            <ReasonPhrase>REASON_TEXT</ReasonPhrase>
        </Set>
    </FaultResponse>
</MonetizationLimitsCheck>

次の例は、MonetizationLimitsCheck ポリシー定義を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<MonetizationLimitsCheck async="false" continueOnError="false" enabled="true" name="Monetization-Limits-Check">
    <DisplayName>Monetization Limits Check</DisplayName>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <Variables>
        <Product>myproductvar.name</Product>
    </Variables>
	<FaultResponse>
	        <Set>
	            <Payload contentType="text/xml">
	                <error>
	                    <messages>
	                        <message>Developer has reached usage quota</message>
	                        <message>Is Developer Suspended - {monetizationLimits.isDeveloperSuspended} </message>
	                    </messages>
	                </error>
	            </Payload>
	            <StatusCode>403</StatusCode>
	            <ReasonPhrase>Forbidden</ReasonPhrase>
	        </Set>
	</FaultResponse>
 </MonetizationLimitsCheck>

この要素には、すべてのポリシーに共通する次の属性があります。

属性 デフォルト 必須? Description
name なし 必須

ポリシーの内部名。name 属性の値には、アルファベット、数字、スペース、ハイフン、アンダースコア、ピリオドを使用できます。この値は 255 文字を超えることはできません。

必要に応じて <DisplayName> 要素を使用して、管理 UI プロキシ エディタのポリシーに別の自然言語の名前でラベルを付けます。

continueOnError false 省略可 ポリシーが失敗したときにエラーを返すには、「false」に設定します。これはほとんどのポリシーで想定される挙動です。ポリシーが失敗した後でも、フローの実行を続行するには、「true」に設定します。
enabled true 省略可 ポリシーを適用するには、「true」に設定します。ポリシーを「無効」にするには、「false」に設定します。ポリシーがフローに接続されている場合でも適用されません。
async   false 非推奨 この属性はサポートが終了しています。

子要素のリファレンス

このセクションでは、<MonetizationLimitsCheck> の子要素について説明します。

<DisplayName>

name 属性に加えて、管理 UI プロキシ エディタでポリシーを別の、より自然な響きの名前でラベル付けするために使います。

<DisplayName> 要素はすべてのポリシーに共通です。

デフォルト値 なし
必須 (省略可)<DisplayName> を省略した場合、ポリシーの name 属性の値が使用されます。
タイプ 文字列
親要素 <PolicyElement>
子要素 なし

<DisplayName> 要素の構文は次のとおりです。

構文

<PolicyElement>
  <DisplayName>policy_display_name</DisplayName>
  ...
</PolicyElement>

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

<DisplayName> 要素に属性や子要素はありません。

<IgnoreUnresolvedVariables>

Apigee が未解決の変数を検出したときに、ポリシーの処理を停止するかどうかを決定します。

デフォルト値 正しい
必須かどうか 省略可
タイプ ブール値
親要素 <MonetizationLimitsCheck>
子要素 なし

未解決の変数を無視して処理を続行するには、値を true に設定します。それ以外の場合は、false に設定します。デフォルト値は true です。

<IgnoreUnresolvedVariables>true に設定することは、<MonetizationLimitsCheck> 要素の continueOnErrortrue に設定することとは異なります。continueOnErrortrue に設定すると、Apigee は変数エラーだけでなく、すべてのエラーを無視します。

<IgnoreUnresolvedVariables> 要素の構文は次のとおりです。

構文

<IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>

次の例では、<IgnoreUnresolvedVariables>false に設定されます。

<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>

<Variables>

ポリシーの実行中にエンティティまたはリソース名を取得するフロー変数を指定します。

<Variables> 要素内には <Product> 要素のみを指定できます。Apigee は、<Product> 要素で指定されたフロー変数から API プロダクト名を取得します。<Variables> 要素を指定しない場合、Apigee はデフォルトで apiproduct.name コンテキスト変数から API プロダクト名を取得します。API プロダクト名を使用して、Apigee はプロダクトの対応する料金プランを取得し、収益化の上限チェックを行います。

デフォルト値 なし
必須かどうか 省略可
タイプ 複合型
親要素 <MonetizationLimitsCheck>
子要素 <Product>

<Variables> 要素の構文は次のとおりです。

構文

<Variables>
    <Product>VARIABLE_NAME</Product>
</Variables>

次の例では、API プロキシフローに存在する myproductvar.name カスタムフロー変数から API プロダクト名を取得します。

<Variables>
    <Product>myproductvar.name</Product>
</Variables>

カスタムフロー変数は、AssignMessageJavaScript などのポリシーを使用して設定できます。

<Product>

API プロダクト名を持つ変数を指定します。

デフォルト値 なし
必須かどうか 省略可
文字列
親要素 <Variables>
子要素 なし

<Product> 要素の構文は次のとおりです。

構文

<Product>VARIABLE_NAME</Product>

次の例では、API プロキシフローに存在する myproductvar.name カスタムフロー変数から API プロダクト名を取得します。

<Product>myproductvar.name</Product>

カスタムフロー変数は、AssignMessageJavaScript などのポリシーを使用して設定できます。

<FaultResponse>

エラーが発生したときにリクエスト元のクライアントに返されるレスポンス メッセージを定義します。要件に基づいてレスポンス メッセージをカスタマイズできます。要素とそのすべての子要素の詳細については、FaultResponse をご覧ください。

フロー変数

<MonetizationLimitsCheck> 要素の ContinueOnError 属性を true に設定すると、エラーは発生しません。この場合、フロー変数 mint.limitsViolatedmint.isDeveloperSuspendedmint.limitsPolicyError が自動的に設定されます。これらの変数は、必要に応じてさらに例外処理を行うために使用できます。