Ограничения монетизацииПроверьте политику

Вы просматриваете документацию 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>

This element has the following attributes that are common to all policies:

Attribute Default Required? Description
name N/A Required

The internal name of the policy. The value of the name attribute can contain letters, numbers, spaces, hyphens, underscores, and periods. This value cannot exceed 255 characters.

Optionally, use the <DisplayName> element to label the policy in the management UI proxy editor with a different, natural-language name.

continueOnError false Optional Set to "false" to return an error when a policy fails. This is expected behavior for most policies. Set to "true" to have flow execution continue even after a policy fails.
enabled true Optional Set to "true" to enforce the policy. Set to "false" to "turn off" the policy. The policy will not be enforced even if it remains attached to a flow.
async   false Deprecated This attribute is deprecated.

Ссылка на дочерний элемент

В этом разделе описаны дочерние элементы <MonetizationLimitsCheck> .

<DisplayName>

Используйте в дополнение к атрибуту name , чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим, более естественным именем.

Элемент <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 отличается от установки для continueOnError элемента <MonetizationLimitsCheck> значения true . Если вы установите для continueOnError значение true , Apigee игнорирует не только ошибки переменных, но и все ошибки.

Элемент <IgnoreUnresolvedVariables> использует следующий синтаксис:

Синтаксис

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

Пример

В следующем примере для <IgnoreUnresolvedVariables> устанавливается значение false :

<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>

<Variables>

Указывает переменные потока, из которых вы хотите получить имена сущностей или ресурсов во время выполнения политики.

Внутри элемента <Variables> можно указать только элемент <Product> . Apigee получает название продукта API из переменной потока, указанной в элементе <Product> . Если вы не укажете элемент <Variables> , Apigee по умолчанию получит имя продукта API из контекстной переменной apiproduct.name . Используя название продукта API, Apigee получает соответствующий тарифный план для продукта и выполняет проверку лимитов монетизации.

Значение по умолчанию Н/Д
Необходимый? Необязательный
Тип Сложный тип
Родительский элемент <MonetizationLimitsCheck>
Дочерние элементы <Product>

Элемент <Variables> использует следующий синтаксис:

Синтаксис

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

Пример

В следующем примере имя продукта API получается из пользовательской переменной потока myproductvar.name , присутствующей в потоке прокси-сервера API.

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

Вы можете установить пользовательские переменные потока с помощью таких политик, как AssignMessage или JavaScript .

<Product>

Указывает переменную, имеющую название продукта API.

Значение по умолчанию Н/Д
Необходимый? Необязательный
Тип Нить
Родительский элемент <Variables>
Дочерние элементы Никто

Элемент <Product> использует следующий синтаксис:

Синтаксис

<Product>VARIABLE_NAME</Product>

Пример

В следующем примере имя продукта API получается из пользовательской переменной потока myproductvar.name , присутствующей в потоке прокси-сервера API.

<Product>myproductvar.name</Product>

Вы можете установить пользовательские переменные потока с помощью таких политик, как AssignMessage или JavaScript .

<FaultResponse>

Определяет ответное сообщение, возвращаемое запрашивающему клиенту в случае возникновения ошибки. Вы можете настроить ответные сообщения в соответствии со своими требованиями. Дополнительные сведения об элементе и всех его дочерних элементах см. в разделе FaultResponse .

Переменные потока

Если для атрибута ContinueOnError элемента <MonetizationLimitsCheck> установлено значение true, ошибка не возникает. В этом случае переменные потока mint.limitsViolated , mint.isDeveloperSuspended и mint.limitsPolicyError устанавливаются автоматически. При необходимости эти переменные можно использовать для дальнейшей обработки исключений.