Skip to content

Updates a usage plan set.

PUT
/api/v1/provision/admin/usage-plans/plan-sets/{planSetId}
curl --request PUT \
--url https://example.com/api/v1/provision/admin/usage-plans/plan-sets/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \
--header 'Content-Type: application/json' \
--data '{ "name": "example", "description": "example", "status": "Draft", "plans": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "description": "example", "sortOrder": 1, "pricingMode": "Absolute", "monthlyPrice": 1, "currency": "example", "relativeWeight": 1, "lineItems": [ { "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "included": true, "featureValues": [ { "featureCode": "example", "metricName": "example", "enforcementType": "SingleValue", "value": "example", "usageTiers": [ { "startUsage": 1, "startPercentage": 1, "endUsage": 1, "endPercentage": 1, "baseCredits": 1, "creditsPerUnitOfConsumption": 1, "name": "example", "quotaUsageLevel": "None", "quotaUsagePolicy": "None", "fundingBalanceMetric": "example" } ] } ] } ] } ] }'
planSetId
required
string format: uuid

Plan set id.

Updated payload.

Admin update payload for a plan set. A null List<UsagePlanDto>? UpdateUsagePlanSetDto.Plans keeps the existing plans; a list replaces them.

object
name
string
description
string
status

Lifecycle state of a usage plan set.

Allowed values: Draft Published Retired
plans
Array<object> | null

A usage plan such as “basic”, “standard”, or “professional”.

object
id
string format: uuid
name
string
description
string
sortOrder
integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
pricingMode

Whether the plan states its worth in money or in relative units. Every plan in one set shares a mode — a set is one price list — and a plan carries only its own mode’s fields: an Absolute plan is refused a RelativeWeight, a Relative plan is refused a MonthlyPrice or Currency. So nothing ever has to pick a winner between two answers to “what is this plan worth”.

Allowed values: Absolute Relative
monthlyPrice

What the plan charges per month, when PricingMode is Absolute. Three states: null = not priced yet (missing data — never treated as free), 0 = free/trial, positive = paid. Revenue reporting excludes null-priced plans and reports them separately.

null | number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?$/
currency

ISO 4217 code (e.g. “EUR”). Required when MonthlyPrice is positive, ignored otherwise.

null | string
relativeWeight

What the plan is worth relative to its siblings, when PricingMode is Relative — an unbounded weight, not a percentage, so “Enterprise is 10x Basic” stays expressible and adding a plan never re-keys the others. Reporting turns weights into a share of the total, so the shares add up on their own. Three states mirroring MonthlyPrice: null = not weighted yet (never treated as zero), 0 = carries no weight, positive = counts.

null | number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?$/
lineItems

One entry per suite member the tier speaks about.

Array<object>

How one tier lands on one suite member: whether the tier includes that product at all, and — when included — the feature values it stamps for it.

object
productId

The suite member this line item configures. Required on every line item except when creating a plan set for a suite of one, where the server stamps the sole member.

string format: uuid
included
boolean
featureValues
Array<object>

Defines a feature value override for a specific plan tier. Value is stored as string to support bool, enum, string, and json field values.

object
featureCode
string
metricName

The metric name this feature’s meter is keyed by — the identity every usage read and usage report must quote. It is NOT the feature code: codes are uppercase (MIRAGE.IMAGE.RENDERS), metric names are lowercase (mirage.image.renders), and the meter is resolved by an exact, case-sensitive match. Passing the code where the metric name belongs silently finds nothing.

null | string
enforcementType

How a plan enforces a feature’s value.

Allowed values: SingleValue TieredAbsolute TieredPercentage Denied NotIncluded
value
null | string
usageTiers
Array<object>

Represents a tier of usage with associated credits and severity status.

object
startUsage

Gets or sets the start usage for the tier.

null | number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/
startPercentage

Tier start as a percentage of the feature value (percentage-based enforcement).

null | number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/
endUsage

Gets or sets the end usage for the tier. Nullable.

null | number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/
endPercentage

Tier end as a percentage of the feature value (percentage-based enforcement).

null | number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/
baseCredits

Gets or sets the flat fee credits for the tier.

number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?$/
creditsPerUnitOfConsumption

Gets or sets the credits per unit of consumption for the tier.

number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?$/
name

Gets or sets the name of the usage tier.

string
quotaUsageLevel

Gets or sets the overage severity status for the tier.

Allowed values: None Normal Warning Critical OverUsage
quotaUsagePolicy

Defines the enforcement behavior applied by the resource controller or interceptor when a specific usage tier threshold is reached. Ordered from least to most restrictive.

Allowed values: None NotifyOnly AllowWithOverage AllowWithGrace RateLimit Deny SuspendUsage
fundingBalanceMetric

Metric name of the credit balance, on the same entitlement, that pays for consumption in this tier. Only meaningful on a tier whose policy is AllowWithOverage: name a balance and every unit past the tier’s start is priced and charged to it on commit, refusing the commit when it cannot be paid for; leave it empty and the overage is allowed and merely reported.

string

OK

A named collection of usage plans (e.g. “My SaaS Plans”).

object
id
string format: uuid
suiteId

The suite this plan set belongs to. A single-product plan set belongs to that product’s implicit suite-of-one. Which member each tier configures is on the plan’s line items — the set itself names no product.

string format: uuid
name
string
description
string
status

Lifecycle state of a usage plan set.

Allowed values: Draft Published Retired
revisionDate
string format: date-time
plans
Array<object>

A usage plan such as “basic”, “standard”, or “professional”.

object
id
string format: uuid
name
string
description
string
sortOrder
integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
pricingMode

Whether the plan states its worth in money or in relative units. Every plan in one set shares a mode — a set is one price list — and a plan carries only its own mode’s fields: an Absolute plan is refused a RelativeWeight, a Relative plan is refused a MonthlyPrice or Currency. So nothing ever has to pick a winner between two answers to “what is this plan worth”.

Allowed values: Absolute Relative
monthlyPrice

What the plan charges per month, when PricingMode is Absolute. Three states: null = not priced yet (missing data — never treated as free), 0 = free/trial, positive = paid. Revenue reporting excludes null-priced plans and reports them separately.

null | number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?$/
currency

ISO 4217 code (e.g. “EUR”). Required when MonthlyPrice is positive, ignored otherwise.

null | string
relativeWeight

What the plan is worth relative to its siblings, when PricingMode is Relative — an unbounded weight, not a percentage, so “Enterprise is 10x Basic” stays expressible and adding a plan never re-keys the others. Reporting turns weights into a share of the total, so the shares add up on their own. Three states mirroring MonthlyPrice: null = not weighted yet (never treated as zero), 0 = carries no weight, positive = counts.

null | number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?$/
lineItems

One entry per suite member the tier speaks about.

Array<object>

How one tier lands on one suite member: whether the tier includes that product at all, and — when included — the feature values it stamps for it.

object
productId

The suite member this line item configures. Required on every line item except when creating a plan set for a suite of one, where the server stamps the sole member.

string format: uuid
included
boolean
featureValues
Array<object>

Defines a feature value override for a specific plan tier. Value is stored as string to support bool, enum, string, and json field values.

object
featureCode
string
metricName

The metric name this feature’s meter is keyed by — the identity every usage read and usage report must quote. It is NOT the feature code: codes are uppercase (MIRAGE.IMAGE.RENDERS), metric names are lowercase (mirage.image.renders), and the meter is resolved by an exact, case-sensitive match. Passing the code where the metric name belongs silently finds nothing.

null | string
enforcementType

How a plan enforces a feature’s value.

Allowed values: SingleValue TieredAbsolute TieredPercentage Denied NotIncluded
value
null | string
usageTiers
Array<object>

Represents a tier of usage with associated credits and severity status.

object
startUsage

Gets or sets the start usage for the tier.

null | number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/
startPercentage

Tier start as a percentage of the feature value (percentage-based enforcement).

null | number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/
endUsage

Gets or sets the end usage for the tier. Nullable.

null | number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/
endPercentage

Tier end as a percentage of the feature value (percentage-based enforcement).

null | number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/
baseCredits

Gets or sets the flat fee credits for the tier.

number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?$/
creditsPerUnitOfConsumption

Gets or sets the credits per unit of consumption for the tier.

number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?$/
name

Gets or sets the name of the usage tier.

string
quotaUsageLevel

Gets or sets the overage severity status for the tier.

Allowed values: None Normal Warning Critical OverUsage
quotaUsagePolicy

Defines the enforcement behavior applied by the resource controller or interceptor when a specific usage tier threshold is reached. Ordered from least to most restrictive.

Allowed values: None NotifyOnly AllowWithOverage AllowWithGrace RateLimit Deny SuspendUsage
fundingBalanceMetric

Metric name of the credit balance, on the same entitlement, that pays for consumption in this tier. Only meaningful on a tier whose policy is AllowWithOverage: name a balance and every unit past the tier’s start is priced and charged to it on commit, refusing the commit when it cannot be paid for; leave it empty and the overage is allowed and merely reported.

string

Bad Request

object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string

Not Found

object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string