PUT/v1/customers/{external_id}/spending-caps/{feature_key}
Set a spending cap
Sets or clears the customer's spending cap on a feature's overage: amount in the customer's currency's stored unit, or none to clear it. Usage that would take the overage past the cap is denied SPENDING_CAP_REACHED until the next period. Requires idempotencyKey; productId is optional. Needs customers:write or billing:self.
curl -X PUT 'https://api.entitler.co/v1/customers/ada/spending-caps/priority_support' \
-H "Authorization: Bearer $ENTITLER_KEY" \
-H "Content-Type: application/json" \
-d '{"amount":1,"currency":"currency","expectedRevision":{"value":1},"idempotencyKey":"idempotencyKey","productId":"productId","reason":"reason","target":{"environmentId":"environmentId","projectId":"projectId","teamId":"teamId"}}'Credentials
Send any one of these:
- Bearer token
Path parameters
| Name | Type | Description |
|---|---|---|
external_idrequired | string | The customer's external ID, or me for the customer a customer token or identity token names. |
feature_keyrequired | string |
Request body
object
amountintegerat least 0; at most 18446744073709552000
currencystringexpectedRevisioncommon.Revision-Inputvalueintegerat least 0; at most 18446744073709552000
idempotencyKeystringproductIdstringreasonstringtargetProductTargetenvironmentIdstringprojectIdstringteamIdstring
Responses
200The SetSpendingCapResponse message.
SetSpendingCapResponse
resultChangeResultchangePlanChangeatintegerrequiredat least 0; at most 18446744073709552000
changedbooleanrequiredeffectiveEffectiverequiredOne of
EFFECTIVE_UNSPECIFIED,EFFECTIVE_NOW,EFFECTIVE_RENEWAL.planSubscriptionPlanbillingConnectionIdstringcohortIdstringcohortNumberintegerat least 0; at most 18446744073709552000
modeModerequiredOne of
MODE_UNSPECIFIED,MODE_LIVE,MODE_TEST.periodIdstringplanIdstringrequiredplanKeystringrequiredplanNamestringrequiredpriceLockedUntilintegerat least 0; at most 18446744073709552000
purchaseSourcestringversionNumberintegerrequiredat least 0; at most 18446744073709552000
productIdstringquantityinteger (int64)at least 0; at most 4294967295
typePlanChangeTyperequiredOne of
PLAN_CHANGE_TYPE_UNSPECIFIED,PLAN_CHANGE_TYPE_UPGRADE,PLAN_CHANGE_TYPE_DOWNGRADE,PLAN_CHANGE_TYPE_CROSSGRADE,PLAN_CHANGE_TYPE_LONGER_PERIOD,PLAN_CHANGE_TYPE_SHORTER_PERIOD.untilintegerat least 0; at most 18446744073709552000
customerIdstringrequiredgrantsarray of GrantrequiredfeatureKeystringrequiredfromintegerrequiredat least 0; at most 18446744073709552000
grantedBycommon.Actoridstringrequiredtypecommon.ActorTyperequiredOne of
ACTOR_TYPE_UNSPECIFIED,ACTOR_TYPE_USER,ACTOR_TYPE_KEY,ACTOR_TYPE_SYSTEM.
idstringrequiredreasonstringrequiredrevokeReasonstringrevokedAtintegerat least 0; at most 18446744073709552000
revokedBycommon.Actoridstringrequiredtypecommon.ActorTyperequiredOne of
ACTOR_TYPE_UNSPECIFIED,ACTOR_TYPE_USER,ACTOR_TYPE_KEY,ACTOR_TYPE_SYSTEM.
untilintegerat least 0; at most 18446744073709552000
valueGrantValueenabledbooleanlimitcommon.Limitcountintegerat least 0; at most 18446744073709552000
unlimitedcommon.Unlimited
modeModerequiredOne of
MODE_UNSPECIFIED,MODE_LIVE,MODE_TEST.overLimitsarray of OverLimitrequiredfeatureKeystringrequiredkindOverLimitKindrequiredOne of
OVER_LIMIT_KIND_UNSPECIFIED,OVER_LIMIT_KIND_FEATURE,OVER_LIMIT_KIND_MEMBERS.limitintegerrequiredat least 0; at most 18446744073709552000
usedintegerrequiredat least 0; at most 18446744073709552000
revisionintegerrequiredat least 0; at most 18446744073709552000
subscriptionSubscriptionaddOnsarray of SubscriptionAddOnrequiredaddedAtintegerrequiredat least 0; at most 18446744073709552000
billingConnectionIdstringcohortIdstringcohortNumberintegerat least 0; at most 18446744073709552000
modeModerequiredOne of
MODE_UNSPECIFIED,MODE_LIVE,MODE_TEST.planIdstringrequiredplanKeystringrequiredplanNamestringrequiredpriceLockedUntilintegerat least 0; at most 18446744073709552000
purchaseSourcestringquantityinteger (int64)requiredat least 0; at most 4294967295
requiredbooleanrequiredscheduledPlanIdstringversionNumberintegerrequiredat least 0; at most 18446744073709552000
amountDueAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
amountOverdueAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
billedBilledPlanbillingConnectionIdstringcohortIdstringperiodIdstringplanIdstringrequiredsinceintegerrequiredat least 0; at most 18446744073709552000
versionNumberintegerrequiredat least 0; at most 18446744073709552000
billingSubscriptionBillingrequiredOne of
SUBSCRIPTION_BILLING_UNSPECIFIED,SUBSCRIPTION_BILLING_RECURRING,SUBSCRIPTION_BILLING_ONE_TIME.cancellationCancellationdiscountClawbackAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
earlyTerminationFeeAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
endsAtintegerrequiredat least 0; at most 18446744073709552000
cancelsAtintegerat least 0; at most 18446744073709552000
collectionMethodCollectionMethodrequiredOne of
COLLECTION_METHOD_UNSPECIFIED,COLLECTION_METHOD_PAYMENT_PROVIDER,COLLECTION_METHOD_MANUAL,COLLECTION_METHOD_COMPLIMENTARY.contractStartedAtintegerat least 0; at most 18446744073709552000
contractTermContractTermafterTermAfterTermrequiredOne of
AFTER_TERM_UNSPECIFIED,AFTER_TERM_RENEW,AFTER_TERM_ROLLING,AFTER_TERM_END.endsAtintegerrequiredat least 0; at most 18446744073709552000
coolingOffEndsAtintegerat least 0; at most 18446744073709552000
discountsarray of AppliedDiscountrequiredamountAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
appliedbooleanrequiredappliedAtintegerrequiredat least 0; at most 18446744073709552000
feesarray of OfferFeerequiredfeeKeystringrequiredplanIdstringrequired
minimumTermMonthsinteger (int64)at least 0; at most 4294967295
offerIdstringrequiredofferKeystringrequiredofferNamestringrequiredpayerIdstringpercentThousandthsinteger (int64)at least 0; at most 4294967295
periodIdsarray of stringrequiredperiodsLeftinteger (int64)at least 0; at most 4294967295
planIdsarray of stringrequiredsourceDiscountSourcerequiredOne of
DISCOUNT_SOURCE_UNSPECIFIED,DISCOUNT_SOURCE_BUSINESS,DISCOUNT_SOURCE_CUSTOMER,DISCOUNT_SOURCE_CODE,DISCOUNT_SOURCE_SEGMENT,DISCOUNT_SOURCE_REFERRAL.startsAtintegerat least 0; at most 18446744073709552000
untilintegerat least 0; at most 18446744073709552000
usagePricesarray of OfferUsagePricerequiredplanIdstringrequiredusagePriceKeystringrequired
instalmentsInstalmentPlanamountLeftAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
paidinteger (int64)requiredat least 0; at most 4294967295
totalinteger (int64)requiredat least 0; at most 4294967295
onDefaultPlanbooleanrequiredoverduePeriodsinteger (int64)requiredat least 0; at most 4294967295
paidOffAtintegerat least 0; at most 18446744073709552000
paidUntilintegerat least 0; at most 18446744073709552000
pausePausedaysLeftThisYearinteger (int64)at least 0; at most 4294967295
endsAtintegerrequiredat least 0; at most 18446744073709552000
startedAtintegerrequiredat least 0; at most 18446744073709552000
payersarray of SubscriptionPayerrequiredaddedAtintegerrequiredat least 0; at most 18446744073709552000
customerIdstringrequiredendsAtintegerat least 0; at most 18446744073709552000
externalIdstringrequiredofferKeysarray of stringrequiredpayerIdstringrequiredsharePayerShareamountAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
percentThousandthsinteger (int64)at least 0; at most 4294967295
startsAtintegerat least 0; at most 18446744073709552000
untilintegerat least 0; at most 18446744073709552000
paymentDueAtintegerat least 0; at most 18446744073709552000
paymentTermsPaymentTermsdaysUntilDueinteger (int64)requiredat least 0; at most 4294967295
suspensionSuspensionperiodsWhileSuspendedPeriodsWhileSuspendedrequiredOne of
PERIODS_WHILE_SUSPENDED_UNSPECIFIED,PERIODS_WHILE_SUSPENDED_STOP,PERIODS_WHILE_SUSPENDED_CONTINUE.suspendAfterDaysinteger (int64)requiredat least 0; at most 4294967295
planSubscriptionPlanbillingConnectionIdstringcohortIdstringcohortNumberintegerat least 0; at most 18446744073709552000
modeModerequiredOne of
MODE_UNSPECIFIED,MODE_LIVE,MODE_TEST.periodIdstringplanIdstringrequiredplanKeystringrequiredplanNamestringrequiredpriceLockedUntilintegerat least 0; at most 18446744073709552000
purchaseSourcestringversionNumberintegerrequiredat least 0; at most 18446744073709552000
prepaidPeriodsinteger (int64)requiredat least 0; at most 4294967295
productIdstringrenewsAtintegerat least 0; at most 18446744073709552000
scheduledChangeScheduledChangeatintegerrequiredat least 0; at most 18446744073709552000
cancellationScheduledCancellationplanChangeScheduledPlanChangeperiodIdstringplanIdstringrequiredstartsNewContractbooleanrequireduntilintegerat least 0; at most 18446744073709552000
scheduledVersionChangesarray of ScheduledVersionChangerequiredacceptanceRequiredbooleanrequiredacceptedbooleanrequiredamountAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
effectiveAtintegerrequiredat least 0; at most 18446744073709552000
planIdstringrequiredrolloutIdstringrequiredversionNumberintegerrequiredat least 0; at most 18446744073709552000
spendingCapsarray of SpendingCaprequiredamountAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
featureKeystringrequired
startedAtintegerat least 0; at most 18446744073709552000
statusSubscriptionStatusrequiredOne of
SUBSCRIPTION_STATUS_UNSPECIFIED,SUBSCRIPTION_STATUS_ACTIVE,SUBSCRIPTION_STATUS_TRIALING,SUBSCRIPTION_STATUS_INCOMPLETE,SUBSCRIPTION_STATUS_SUSPENDED,SUBSCRIPTION_STATUS_PAUSED,SUBSCRIPTION_STATUS_PAID_OFF.suspendedAtintegerat least 0; at most 18446744073709552000
suspensionEndsAtintegerat least 0; at most 18446744073709552000
trialTrialconvertedAtintegerat least 0; at most 18446744073709552000
endsAtintegerrequiredat least 0; at most 18446744073709552000
fallsBackToPlanIdstring
trialEndsAtintegerat least 0; at most 18446744073709552000
untilintegerat least 0; at most 18446744073709552000
subscriptionsarray of SubscriptionrequiredaddOnsarray of SubscriptionAddOnrequiredaddedAtintegerrequiredat least 0; at most 18446744073709552000
billingConnectionIdstringcohortIdstringcohortNumberintegerat least 0; at most 18446744073709552000
modeModerequiredOne of
MODE_UNSPECIFIED,MODE_LIVE,MODE_TEST.planIdstringrequiredplanKeystringrequiredplanNamestringrequiredpriceLockedUntilintegerat least 0; at most 18446744073709552000
purchaseSourcestringquantityinteger (int64)requiredat least 0; at most 4294967295
requiredbooleanrequiredscheduledPlanIdstringversionNumberintegerrequiredat least 0; at most 18446744073709552000
amountDueAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
amountOverdueAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
billedBilledPlanbillingConnectionIdstringcohortIdstringperiodIdstringplanIdstringrequiredsinceintegerrequiredat least 0; at most 18446744073709552000
versionNumberintegerrequiredat least 0; at most 18446744073709552000
billingSubscriptionBillingrequiredOne of
SUBSCRIPTION_BILLING_UNSPECIFIED,SUBSCRIPTION_BILLING_RECURRING,SUBSCRIPTION_BILLING_ONE_TIME.cancellationCancellationdiscountClawbackAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
earlyTerminationFeeAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
endsAtintegerrequiredat least 0; at most 18446744073709552000
cancelsAtintegerat least 0; at most 18446744073709552000
collectionMethodCollectionMethodrequiredOne of
COLLECTION_METHOD_UNSPECIFIED,COLLECTION_METHOD_PAYMENT_PROVIDER,COLLECTION_METHOD_MANUAL,COLLECTION_METHOD_COMPLIMENTARY.contractStartedAtintegerat least 0; at most 18446744073709552000
contractTermContractTermafterTermAfterTermrequiredOne of
AFTER_TERM_UNSPECIFIED,AFTER_TERM_RENEW,AFTER_TERM_ROLLING,AFTER_TERM_END.endsAtintegerrequiredat least 0; at most 18446744073709552000
coolingOffEndsAtintegerat least 0; at most 18446744073709552000
discountsarray of AppliedDiscountrequiredamountAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
appliedbooleanrequiredappliedAtintegerrequiredat least 0; at most 18446744073709552000
feesarray of OfferFeerequiredfeeKeystringrequiredplanIdstringrequired
minimumTermMonthsinteger (int64)at least 0; at most 4294967295
offerIdstringrequiredofferKeystringrequiredofferNamestringrequiredpayerIdstringpercentThousandthsinteger (int64)at least 0; at most 4294967295
periodIdsarray of stringrequiredperiodsLeftinteger (int64)at least 0; at most 4294967295
planIdsarray of stringrequiredsourceDiscountSourcerequiredOne of
DISCOUNT_SOURCE_UNSPECIFIED,DISCOUNT_SOURCE_BUSINESS,DISCOUNT_SOURCE_CUSTOMER,DISCOUNT_SOURCE_CODE,DISCOUNT_SOURCE_SEGMENT,DISCOUNT_SOURCE_REFERRAL.startsAtintegerat least 0; at most 18446744073709552000
untilintegerat least 0; at most 18446744073709552000
usagePricesarray of OfferUsagePricerequiredplanIdstringrequiredusagePriceKeystringrequired
instalmentsInstalmentPlanamountLeftAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
paidinteger (int64)requiredat least 0; at most 4294967295
totalinteger (int64)requiredat least 0; at most 4294967295
onDefaultPlanbooleanrequiredoverduePeriodsinteger (int64)requiredat least 0; at most 4294967295
paidOffAtintegerat least 0; at most 18446744073709552000
paidUntilintegerat least 0; at most 18446744073709552000
pausePausedaysLeftThisYearinteger (int64)at least 0; at most 4294967295
endsAtintegerrequiredat least 0; at most 18446744073709552000
startedAtintegerrequiredat least 0; at most 18446744073709552000
payersarray of SubscriptionPayerrequiredaddedAtintegerrequiredat least 0; at most 18446744073709552000
customerIdstringrequiredendsAtintegerat least 0; at most 18446744073709552000
externalIdstringrequiredofferKeysarray of stringrequiredpayerIdstringrequiredsharePayerShareamountAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
percentThousandthsinteger (int64)at least 0; at most 4294967295
startsAtintegerat least 0; at most 18446744073709552000
untilintegerat least 0; at most 18446744073709552000
paymentDueAtintegerat least 0; at most 18446744073709552000
paymentTermsPaymentTermsdaysUntilDueinteger (int64)requiredat least 0; at most 4294967295
suspensionSuspensionperiodsWhileSuspendedPeriodsWhileSuspendedrequiredOne of
PERIODS_WHILE_SUSPENDED_UNSPECIFIED,PERIODS_WHILE_SUSPENDED_STOP,PERIODS_WHILE_SUSPENDED_CONTINUE.suspendAfterDaysinteger (int64)requiredat least 0; at most 4294967295
planSubscriptionPlanbillingConnectionIdstringcohortIdstringcohortNumberintegerat least 0; at most 18446744073709552000
modeModerequiredOne of
MODE_UNSPECIFIED,MODE_LIVE,MODE_TEST.periodIdstringplanIdstringrequiredplanKeystringrequiredplanNamestringrequiredpriceLockedUntilintegerat least 0; at most 18446744073709552000
purchaseSourcestringversionNumberintegerrequiredat least 0; at most 18446744073709552000
prepaidPeriodsinteger (int64)requiredat least 0; at most 4294967295
productIdstringrenewsAtintegerat least 0; at most 18446744073709552000
scheduledChangeScheduledChangeatintegerrequiredat least 0; at most 18446744073709552000
cancellationScheduledCancellationplanChangeScheduledPlanChangeperiodIdstringplanIdstringrequiredstartsNewContractbooleanrequireduntilintegerat least 0; at most 18446744073709552000
scheduledVersionChangesarray of ScheduledVersionChangerequiredacceptanceRequiredbooleanrequiredacceptedbooleanrequiredamountAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
effectiveAtintegerrequiredat least 0; at most 18446744073709552000
planIdstringrequiredrolloutIdstringrequiredversionNumberintegerrequiredat least 0; at most 18446744073709552000
spendingCapsarray of SpendingCaprequiredamountAmountamountintegerrequiredat least 0; at most 18446744073709552000
currencystringrequireddisplaystringrequired
featureKeystringrequired
startedAtintegerat least 0; at most 18446744073709552000
statusSubscriptionStatusrequiredOne of
SUBSCRIPTION_STATUS_UNSPECIFIED,SUBSCRIPTION_STATUS_ACTIVE,SUBSCRIPTION_STATUS_TRIALING,SUBSCRIPTION_STATUS_INCOMPLETE,SUBSCRIPTION_STATUS_SUSPENDED,SUBSCRIPTION_STATUS_PAUSED,SUBSCRIPTION_STATUS_PAID_OFF.suspendedAtintegerat least 0; at most 18446744073709552000
suspensionEndsAtintegerat least 0; at most 18446744073709552000
trialTrialconvertedAtintegerat least 0; at most 18446744073709552000
endsAtintegerrequiredat least 0; at most 18446744073709552000
fallsBackToPlanIdstring
trialEndsAtintegerat least 0; at most 18446744073709552000
untilintegerat least 0; at most 18446744073709552000
ErrorA refusal, with the HTTP status of its gRPC code.
Error
errorobjectrequiredcodestringrequiredparametersobjectrequiredEach value: string
reasonstringor nullrequired