Authors a new offer from scratch, declaring the suite it is a grant shape for — named directly, or through the product it sells, whose suite is created if it has none. The new offer holds that suite's members.
const url = 'https://example.com/api/v1/provision/admin/entitlements/offers';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"name":"example","version":"example","description":"example","suiteId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","productId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/api/v1/provision/admin/entitlements/offers \ --header 'Content-Type: application/json' \ --data '{ "name": "example", "version": "example", "description": "example", "suiteId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }'Request Bodyrequired
Section titled “Request Bodyrequired”Cancellation token.
Admin request to author a new offer from scratch — the alternative to saving one from an existing entitlement (CreateOfferFromEntitlementRequestDto).
object
Names the offer’s suite by the product it sells, for a product that may not have one
yet: the server resolves the product’s existing suite, or creates its implicit
suite-of-one the same way pricing the product would. A product belonging to more than
one suite is ambiguous and refused rather than guessed. Ignored when SuiteId is
set.
Examplegenerated
{ "name": "example", "version": "example", "description": "example", "suiteId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"}Admin request to author a new offer from scratch — the alternative to saving one from an existing entitlement (CreateOfferFromEntitlementRequestDto).
object
Names the offer’s suite by the product it sells, for a product that may not have one
yet: the server resolves the product’s existing suite, or creates its implicit
suite-of-one the same way pricing the product would. A product belonging to more than
one suite is ambiguous and refused rather than guessed. Ignored when SuiteId is
set.
Examplegenerated
{ "name": "example", "version": "example", "description": "example", "suiteId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"}Admin request to author a new offer from scratch — the alternative to saving one from an existing entitlement (CreateOfferFromEntitlementRequestDto).
object
Names the offer’s suite by the product it sells, for a product that may not have one
yet: the server resolves the product’s existing suite, or creates its implicit
suite-of-one the same way pricing the product would. A product belonging to more than
one suite is ambiguous and refused rather than guessed. Ignored when SuiteId is
set.
Examplegenerated
{ "name": "example", "version": "example", "description": "example", "suiteId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"}Responses
Section titled “Responses”OK
The central admin read model for an entitlement: a customer’s grant to use one or more products, carrying lifecycle state, activation/trial/subscription policies, features, plan assignment, and external billing references.
object
Admin-controlled lifecycle state of an entitlement.
Consumer-facing subscription/lifecycle status, derived server-side from EntitlementLifecycleStatus EntitlementDto.Status, expiration dates, and trial / pause state.
Read-only convenience flag; true when TrialActivationPolicyDto? EntitlementDto.TrialActivationPolicy is set.
On offers: visitors can use the application without an account, on a short-lived license issued per device.
Read-only; true when this entitlement is held by a device rather than a person — an anonymous try license. Derived from the assignment, never stored.
On a try license whose device later signed up: the license they were issued. Nothing else carries over — the try license’s usage is purged with it.
Set when this entitlement was auto-issued for a self-service user; carries the source offer’s id.
Admin read model of a catalog product: identity (code + version), lifecycle status, features, monitored assets, metrics, and presentation metadata.
object
Indicates the current product status in its lifecycle.
Unique identifier of the provider associated with this product.
Public-facing name of the product used for display purposes.
Description of the product as displayed in the customer portal.
Unique internal code of the product. Must be unique in combination with string ProductDto.ProductVersion.
Version of the product visible to the end user. Not SemVer: one to four dot-separated numbers (e.g. “1”, “1.2”, “1.2.3.4”), or empty. Prerelease and build suffixes are rejected.
Expiration date, after which the product is no longer available for deployment. Null if no expiration is set.
Optional external identifier, such as a CMS or ERP ID.
Tag names applied to this product, from the tenant’s TagScopeDto.Product vocabulary. Vendor-facing catalog organization only — tags never reach an entitlement snapshot, a license token, or the end-user portal.
Collection of features that define additional functionalities of the product.
A feature as defined on a product: default value, enablement, trial/grace availability, license-token inclusion, and metering configuration. Entitlements inherit these defaults.
object
Data type of a feature’s value; determines how Value strings are interpreted and enforced.
One allowed value of an Enumeration-typed feature.
object
When true, the feature is withheld for the duration of a trial even if enabled.
Who can see a feature.
Where the feature appears among the product’s features. The vendor sets it; every list of a product’s features is ordered by it, so the screens agree with each other.
Assets associated with the product for usage monitoring.
A usage-tracked metric on a product or entitlement. Depending on how it is charged, either AssetMeteredUsageDto? MonitoredAssetDto.MeteredUsage (tiered, period-based metering) or AssetBalanceUsageDto? MonitoredAssetDto.BalanceUsage (prepaid credit balance) is attached.
object
How reported usage values are interpreted and aggregated by the monitoring pipeline.
Admin view of tiered, period-based metering on a monitored asset: the usage tiers, the consumption period they reset on, and how usage accumulates across tiers.
object
Consumption is suspended until this time (e.g. after an overage); null when not suspended.
Severity of consumption relative to the configured usage tiers.
Represents a tier of usage with associated credits and severity status.
object
Gets or sets the start usage for the tier.
Tier start as a percentage of the feature value (percentage-based enforcement).
Gets or sets the end usage for the tier. Nullable.
Tier end as a percentage of the feature value (percentage-based enforcement).
Gets or sets the flat fee credits for the tier.
Gets or sets the credits per unit of consumption for the tier.
Gets or sets the name of the usage tier.
Gets or sets the overage severity status for the tier.
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.
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.
Name of the consumption period the tiers reset on (see ConsumptionPeriodType), e.g. "Monthly".
How periodic consumption is attributed across usage tiers for charging.
Admin view of a prepaid credit balance on a monitored asset: credits available, consumed, quota thresholds, and the automatic re-balance (top-up) schedule.
object
Consumed credits since last deposit. Remaining credits are calculated as TotalCredits - CreditsUsed.
Total available credits.
The total of all credits used over time.
Consumption this balance was asked to pay for and could not: usage the vendor is owed and has not been paid for. Cumulative, and not reduced by a later top-up.
When this balance last failed to cover consumption that had already happened.
A named quota threshold on a credit balance and the severity level it maps to.
object
Remaining-balance threshold for this band: the band applies while the credit balance is below this value, and when several bands match the lowest threshold wins. A matching band at Critical severity blocks further deductions.
Severity of consumption relative to the configured quotas.
Consumption is suspended until this time (e.g. after an overage); null when not suspended.
Severity of consumption relative to the configured quotas.
The credits available when the entitlement is created.
Indicates if the resource has unlimited credits.
Cron schedule for automatic credit balance. The cron syntax consists of five fields separated by spaces:
- Minute (0-59)
- Hour (0-23)
- Day of the Month (1-31)
- Month (1-12 or Jan-Dec)
- Day of the Week (0-6 or Sun-Sat) Special characters:
-
- (asterisk): Represents any value for the field.
- , (comma): Separates multiple values.
-
- (hyphen): Specifies a range of values.
- / (slash): Specifies increments. Example: “0 0 * * *” means “at midnight every day.”
Date and time of the last automatic credit balance.
Indicates if the current credits should be transferred.
Maximum amount of credits that can be transferred automatically.
Amount of credits to balance automatically.
How far in the past a reported usage value’s timestamp may lie and still be accepted.
Lightweight metric definitions for this product.
A lightweight metric definition on a product: the machine name clients report usage under, plus display metadata (name, unit, category, number format).
object
Machine identifier clients report usage under (as opposed to the display string ProductMetricDto.Name).
How reported usage values are interpreted and aggregated by the monitoring pipeline.
Display format hint, e.g. "0" or "0.0".
Additional product information, including URLs and revision details.
object
Custom properties for storing additional information associated with the product.
object
A custom key/value property (e.g. on a product) with optional metadata entries.
object
A key/value metadata entry attached to a PropertyValueDto.
object
Indicates if the product is locked for editing. Locked products cannot be modified.
Additional metadata about the product stored as a JSON string. May include technical specifications, system requirements, or custom attributes.
List of application scopes that are authorized to use this product. Application scopes define which application types or deployment targets can activate this product. If null or empty, any application can use this product (no scope restrictions).
Parent product ID if this product belongs to an inherited version lineage.
A feature as granted on a specific entitlement: the product feature definition plus the entitlement-level value, enablement, and expiration overrides.
object
When true, the feature is withheld for the duration of a trial even if enabled.
True when the product allows this feature’s value to be overridden per entitlement.
Monitored asset backing a metered feature; Guid.Empty when the feature is not metered.
When this individual feature stops being available; null follows the entitlement’s expiration.
Activation-time requirements on an entitlement: the authentication level a user must meet, code/workflow requirements, network restrictions, and device-identification rules. Carried on ActivationPolicyDto? EntitlementDto.ActivationPolicy.
object
Authentication level a user must meet before a license activation is permitted. Used on activation policies and activation workflows.
Organization group the activating user must belong to; Guid.Empty means no group restriction.
Activation is permitted only from these CIDR ranges, IPv4 or IPv6 (empty = unrestricted).
When true, only devices whose identification was registered in advance can activate.
Configured length requirement for the device-identification signature (fingerprint). Stored with the policy and returned on reads; the activation pipeline does not currently enforce it.
Shape of the activation codes issued for this entitlement; null means the platform default random code.
object
When false the platform default random code is issued and string KeyIssuancePolicyDto.Template is ignored.
Template the code is rendered from, e.g. ACME-{DATE:yyMM}-{SEQ:6}-{RAND:4}{CHK}.
Character set {RAND} draws from.
Characters {RAND} draws from when KeyAlphabet KeyIssuancePolicyDto.Alphabet is KeyAlphabet.Custom.
Casing applied to the rendered code.
Check-character algorithm used by the {CHK} token.
Counter the {SEQ} token draws from.
First value the counter issues.
How many times generation re-rolls the random segment after a uniqueness collision before the
item fails. Templates whose only variable part is {SEQ} have nothing to re-roll, so they
depend on the counter only ever moving forward.
Ignore separators (spaces and dashes) in a submitted code before lookup.
Match a submitted code without regard to case.
Fold characters the alphabet excludes onto the ones it keeps before lookup, so a user who types O for 0 or I for 1 still resolves. Only defined for alphabets that omit the confusable pair.
Value the counter will issue next. Populated on reads; ignored on writes. A snapshot taken while other requests may be reserving blocks, so treat it as advisory rather than a count.
Defines allocation and usage policy for a license: seat limits, lease/grace periods, pooling (floating), transfer capability, offline allowance and fingerprinting method.
object
Duration a seat remains leased before renewal is required.
Extra allowed time after lease expiration before the license is considered invalid.
Maximum number of device activations (seats) allowed.
Indicates if seats are drawn from a shared pool (floating license).
Indicates if a device may continue operating without online validation for a period.
Identifier for the device fingerprinting method used.
Strictness of fingerprint-component matching during activation lookup.
Defaults to ComponentMatchingStrategy.MatchAll (exact-equality).
All four strategies are accepted. The tolerant ones (MatchAny, MatchTwo,
MatchMost) take effect when the client supplies per-component fingerprint
hashes (an SDK node-id provider implementing IComponentNodeIdProvider);
activations without components fall back to exact-fingerprint matching.
Constrains license activation to a time window on an entitlement. Null bounds leave that side of the window open.
object
Duration the license stays valid after the first activation (TimeSpan.Zero means no per-activation limit); the resulting expiry is capped at DateTimeOffset? TimeRestrictedActivationPolicyDto.NotValidAfterTimestamp.
Data transfer object for trial activation policy settings.
object
The duration of the trial period.
Optional timestamp before which the trial cannot be activated.
Optional timestamp after which the trial is no longer valid.
The calculated timestamp when the trial ends.
If true, the trial period starts after the first license activation otherwise the trial starts now.
Optional plan set id containing the trial plan to auto-apply at first trial activation. If omitted, entitlement.AssignedPlanSetId is used.
Optional trial plan name to auto-apply at first trial activation.
Recurring-renewal policy on an entitlement: how often it renews, how many periods remain, and the outer validity bounds.
object
Calendar unit of one renewal period (e.g. "month"); combined with int SubscriptionPolicyDto.RenewInterval.
Number of string SubscriptionPolicyDto.RenewPeriod units per renewal (e.g. 3 with “month” renews quarterly).
Renewal periods remaining before the subscription lapses (capped at int SubscriptionPolicyDto.MaxSubscriptionPeriods).
Stored with the policy and returned on reads; license validation does not currently act on this flag.
On offers: the terms anonymous try licenses are issued under. On a try license: the terms it was issued under, so a later edit to the offer never moves its expiry.
object
How long a try license lasts, measured from the moment it is issued. Never extended by use: a window that moved on every visit would let one visit a day keep a license alive forever. Capped at 7 days — anything longer is an account-based trial.
How long an expired try license is kept before it is deleted, together with the device identifier it holds. One whose device signed up is deleted at the next sweep instead.
The public code an application presents to start a try. Separate from the offer’s own license key, so it can be rotated without disturbing anything else.
The plan try licenses are issued on. Leave empty to use the offer’s own plan.
What this offer will hand out before it stops.
object
The period the two counts below are measured over.
Try licenses this offer may issue within one window.
Try licenses one caller address may be issued within one window.
Unexpired try licenses this offer may hold at once.
External anchor of the originating subscription/grant (e.g. stripe:subscription:sub_…).
External anchor of the owning customer/account (e.g. stripe:customer:cus_…).
Opaque connector provenance / pass-through (mirrors Stripe metadata).
object
The suite the plan, trial, temporary override and add-ons belong to. Attached products outside it ride along as add-ons at the values stamped on them, and still contribute their features to the license. Null only while nothing has established governance yet — the first plan-shaped assignment or an explicit suite attach.
A time-boxed plan override on an entitlement. While the validity window is active the override plan applies instead of the assigned plan; the previous plan fields allow restoring it when the override lapses.
object
Campaign the override runs under, when it was applied as part of one.
Tag names applied to this entitlement, from the tenant’s TagScopeDto.Entitlement vocabulary. Offers share that vocabulary and keep their tags across save-as-offer and order-from-offer. Vendor-facing organization only — tags never reach an entitlement snapshot, a license token, or the end-user portal.
Application scopes set directly on the entitlement; empty means no entitlement-level restriction.
Resolved scopes actually enforced at activation, combining entitlement- and product-level scopes.
One entry in an entitlement’s plan-assignment history.
object
What triggered the change (e.g. manual admin action or an approved consumer plan-change request).
The central admin read model for an entitlement: a customer’s grant to use one or more products, carrying lifecycle state, activation/trial/subscription policies, features, plan assignment, and external billing references.
object
Admin-controlled lifecycle state of an entitlement.
Consumer-facing subscription/lifecycle status, derived server-side from EntitlementLifecycleStatus EntitlementDto.Status, expiration dates, and trial / pause state.
Read-only convenience flag; true when TrialActivationPolicyDto? EntitlementDto.TrialActivationPolicy is set.
On offers: visitors can use the application without an account, on a short-lived license issued per device.
Read-only; true when this entitlement is held by a device rather than a person — an anonymous try license. Derived from the assignment, never stored.
On a try license whose device later signed up: the license they were issued. Nothing else carries over — the try license’s usage is purged with it.
Set when this entitlement was auto-issued for a self-service user; carries the source offer’s id.
Admin read model of a catalog product: identity (code + version), lifecycle status, features, monitored assets, metrics, and presentation metadata.
object
Indicates the current product status in its lifecycle.
Unique identifier of the provider associated with this product.
Public-facing name of the product used for display purposes.
Description of the product as displayed in the customer portal.
Unique internal code of the product. Must be unique in combination with string ProductDto.ProductVersion.
Version of the product visible to the end user. Not SemVer: one to four dot-separated numbers (e.g. “1”, “1.2”, “1.2.3.4”), or empty. Prerelease and build suffixes are rejected.
Expiration date, after which the product is no longer available for deployment. Null if no expiration is set.
Optional external identifier, such as a CMS or ERP ID.
Tag names applied to this product, from the tenant’s TagScopeDto.Product vocabulary. Vendor-facing catalog organization only — tags never reach an entitlement snapshot, a license token, or the end-user portal.
Collection of features that define additional functionalities of the product.
A feature as defined on a product: default value, enablement, trial/grace availability, license-token inclusion, and metering configuration. Entitlements inherit these defaults.
object
Data type of a feature’s value; determines how Value strings are interpreted and enforced.
One allowed value of an Enumeration-typed feature.
object
When true, the feature is withheld for the duration of a trial even if enabled.
Who can see a feature.
Where the feature appears among the product’s features. The vendor sets it; every list of a product’s features is ordered by it, so the screens agree with each other.
Assets associated with the product for usage monitoring.
A usage-tracked metric on a product or entitlement. Depending on how it is charged, either AssetMeteredUsageDto? MonitoredAssetDto.MeteredUsage (tiered, period-based metering) or AssetBalanceUsageDto? MonitoredAssetDto.BalanceUsage (prepaid credit balance) is attached.
object
How reported usage values are interpreted and aggregated by the monitoring pipeline.
Admin view of tiered, period-based metering on a monitored asset: the usage tiers, the consumption period they reset on, and how usage accumulates across tiers.
object
Consumption is suspended until this time (e.g. after an overage); null when not suspended.
Severity of consumption relative to the configured usage tiers.
Represents a tier of usage with associated credits and severity status.
object
Gets or sets the start usage for the tier.
Tier start as a percentage of the feature value (percentage-based enforcement).
Gets or sets the end usage for the tier. Nullable.
Tier end as a percentage of the feature value (percentage-based enforcement).
Gets or sets the flat fee credits for the tier.
Gets or sets the credits per unit of consumption for the tier.
Gets or sets the name of the usage tier.
Gets or sets the overage severity status for the tier.
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.
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.
Name of the consumption period the tiers reset on (see ConsumptionPeriodType), e.g. "Monthly".
How periodic consumption is attributed across usage tiers for charging.
Admin view of a prepaid credit balance on a monitored asset: credits available, consumed, quota thresholds, and the automatic re-balance (top-up) schedule.
object
Consumed credits since last deposit. Remaining credits are calculated as TotalCredits - CreditsUsed.
Total available credits.
The total of all credits used over time.
Consumption this balance was asked to pay for and could not: usage the vendor is owed and has not been paid for. Cumulative, and not reduced by a later top-up.
When this balance last failed to cover consumption that had already happened.
A named quota threshold on a credit balance and the severity level it maps to.
object
Remaining-balance threshold for this band: the band applies while the credit balance is below this value, and when several bands match the lowest threshold wins. A matching band at Critical severity blocks further deductions.
Severity of consumption relative to the configured quotas.
Consumption is suspended until this time (e.g. after an overage); null when not suspended.
Severity of consumption relative to the configured quotas.
The credits available when the entitlement is created.
Indicates if the resource has unlimited credits.
Cron schedule for automatic credit balance. The cron syntax consists of five fields separated by spaces:
- Minute (0-59)
- Hour (0-23)
- Day of the Month (1-31)
- Month (1-12 or Jan-Dec)
- Day of the Week (0-6 or Sun-Sat) Special characters:
-
- (asterisk): Represents any value for the field.
- , (comma): Separates multiple values.
-
- (hyphen): Specifies a range of values.
- / (slash): Specifies increments. Example: “0 0 * * *” means “at midnight every day.”
Date and time of the last automatic credit balance.
Indicates if the current credits should be transferred.
Maximum amount of credits that can be transferred automatically.
Amount of credits to balance automatically.
How far in the past a reported usage value’s timestamp may lie and still be accepted.
Lightweight metric definitions for this product.
A lightweight metric definition on a product: the machine name clients report usage under, plus display metadata (name, unit, category, number format).
object
Machine identifier clients report usage under (as opposed to the display string ProductMetricDto.Name).
How reported usage values are interpreted and aggregated by the monitoring pipeline.
Display format hint, e.g. "0" or "0.0".
Additional product information, including URLs and revision details.
object
Custom properties for storing additional information associated with the product.
object
A custom key/value property (e.g. on a product) with optional metadata entries.
object
A key/value metadata entry attached to a PropertyValueDto.
object
Indicates if the product is locked for editing. Locked products cannot be modified.
Additional metadata about the product stored as a JSON string. May include technical specifications, system requirements, or custom attributes.
List of application scopes that are authorized to use this product. Application scopes define which application types or deployment targets can activate this product. If null or empty, any application can use this product (no scope restrictions).
Parent product ID if this product belongs to an inherited version lineage.
A feature as granted on a specific entitlement: the product feature definition plus the entitlement-level value, enablement, and expiration overrides.
object
When true, the feature is withheld for the duration of a trial even if enabled.
True when the product allows this feature’s value to be overridden per entitlement.
Monitored asset backing a metered feature; Guid.Empty when the feature is not metered.
When this individual feature stops being available; null follows the entitlement’s expiration.
Activation-time requirements on an entitlement: the authentication level a user must meet, code/workflow requirements, network restrictions, and device-identification rules. Carried on ActivationPolicyDto? EntitlementDto.ActivationPolicy.
object
Authentication level a user must meet before a license activation is permitted. Used on activation policies and activation workflows.
Organization group the activating user must belong to; Guid.Empty means no group restriction.
Activation is permitted only from these CIDR ranges, IPv4 or IPv6 (empty = unrestricted).
When true, only devices whose identification was registered in advance can activate.
Configured length requirement for the device-identification signature (fingerprint). Stored with the policy and returned on reads; the activation pipeline does not currently enforce it.
Shape of the activation codes issued for this entitlement; null means the platform default random code.
object
When false the platform default random code is issued and string KeyIssuancePolicyDto.Template is ignored.
Template the code is rendered from, e.g. ACME-{DATE:yyMM}-{SEQ:6}-{RAND:4}{CHK}.
Character set {RAND} draws from.
Characters {RAND} draws from when KeyAlphabet KeyIssuancePolicyDto.Alphabet is KeyAlphabet.Custom.
Casing applied to the rendered code.
Check-character algorithm used by the {CHK} token.
Counter the {SEQ} token draws from.
First value the counter issues.
How many times generation re-rolls the random segment after a uniqueness collision before the
item fails. Templates whose only variable part is {SEQ} have nothing to re-roll, so they
depend on the counter only ever moving forward.
Ignore separators (spaces and dashes) in a submitted code before lookup.
Match a submitted code without regard to case.
Fold characters the alphabet excludes onto the ones it keeps before lookup, so a user who types O for 0 or I for 1 still resolves. Only defined for alphabets that omit the confusable pair.
Value the counter will issue next. Populated on reads; ignored on writes. A snapshot taken while other requests may be reserving blocks, so treat it as advisory rather than a count.
Defines allocation and usage policy for a license: seat limits, lease/grace periods, pooling (floating), transfer capability, offline allowance and fingerprinting method.
object
Duration a seat remains leased before renewal is required.
Extra allowed time after lease expiration before the license is considered invalid.
Maximum number of device activations (seats) allowed.
Indicates if seats are drawn from a shared pool (floating license).
Indicates if a device may continue operating without online validation for a period.
Identifier for the device fingerprinting method used.
Strictness of fingerprint-component matching during activation lookup.
Defaults to ComponentMatchingStrategy.MatchAll (exact-equality).
All four strategies are accepted. The tolerant ones (MatchAny, MatchTwo,
MatchMost) take effect when the client supplies per-component fingerprint
hashes (an SDK node-id provider implementing IComponentNodeIdProvider);
activations without components fall back to exact-fingerprint matching.
Constrains license activation to a time window on an entitlement. Null bounds leave that side of the window open.
object
Duration the license stays valid after the first activation (TimeSpan.Zero means no per-activation limit); the resulting expiry is capped at DateTimeOffset? TimeRestrictedActivationPolicyDto.NotValidAfterTimestamp.
Data transfer object for trial activation policy settings.
object
The duration of the trial period.
Optional timestamp before which the trial cannot be activated.
Optional timestamp after which the trial is no longer valid.
The calculated timestamp when the trial ends.
If true, the trial period starts after the first license activation otherwise the trial starts now.
Optional plan set id containing the trial plan to auto-apply at first trial activation. If omitted, entitlement.AssignedPlanSetId is used.
Optional trial plan name to auto-apply at first trial activation.
Recurring-renewal policy on an entitlement: how often it renews, how many periods remain, and the outer validity bounds.
object
Calendar unit of one renewal period (e.g. "month"); combined with int SubscriptionPolicyDto.RenewInterval.
Number of string SubscriptionPolicyDto.RenewPeriod units per renewal (e.g. 3 with “month” renews quarterly).
Renewal periods remaining before the subscription lapses (capped at int SubscriptionPolicyDto.MaxSubscriptionPeriods).
Stored with the policy and returned on reads; license validation does not currently act on this flag.
On offers: the terms anonymous try licenses are issued under. On a try license: the terms it was issued under, so a later edit to the offer never moves its expiry.
object
How long a try license lasts, measured from the moment it is issued. Never extended by use: a window that moved on every visit would let one visit a day keep a license alive forever. Capped at 7 days — anything longer is an account-based trial.
How long an expired try license is kept before it is deleted, together with the device identifier it holds. One whose device signed up is deleted at the next sweep instead.
The public code an application presents to start a try. Separate from the offer’s own license key, so it can be rotated without disturbing anything else.
The plan try licenses are issued on. Leave empty to use the offer’s own plan.
What this offer will hand out before it stops.
object
The period the two counts below are measured over.
Try licenses this offer may issue within one window.
Try licenses one caller address may be issued within one window.
Unexpired try licenses this offer may hold at once.
External anchor of the originating subscription/grant (e.g. stripe:subscription:sub_…).
External anchor of the owning customer/account (e.g. stripe:customer:cus_…).
Opaque connector provenance / pass-through (mirrors Stripe metadata).
object
The suite the plan, trial, temporary override and add-ons belong to. Attached products outside it ride along as add-ons at the values stamped on them, and still contribute their features to the license. Null only while nothing has established governance yet — the first plan-shaped assignment or an explicit suite attach.
A time-boxed plan override on an entitlement. While the validity window is active the override plan applies instead of the assigned plan; the previous plan fields allow restoring it when the override lapses.
object
Campaign the override runs under, when it was applied as part of one.
Tag names applied to this entitlement, from the tenant’s TagScopeDto.Entitlement vocabulary. Offers share that vocabulary and keep their tags across save-as-offer and order-from-offer. Vendor-facing organization only — tags never reach an entitlement snapshot, a license token, or the end-user portal.
Application scopes set directly on the entitlement; empty means no entitlement-level restriction.
Resolved scopes actually enforced at activation, combining entitlement- and product-level scopes.
One entry in an entitlement’s plan-assignment history.
object
What triggered the change (e.g. manual admin action or an approved consumer plan-change request).
Example
{ "status": "Draft", "subscriptionStatus": "Pending", "products": [ { "status": "Draft", "features": [ { "featureType": "Boolean", "meterAggregationType": "CumulativeCounter", "visibility": "Public" } ], "monitoredAssets": [ { "metricType": "CumulativeCounter", "meteredUsage": { "lastReportedOverageSeverityStatus": "None", "usageTiers": [ { "quotaUsageLevel": "None", "quotaUsagePolicy": "None" } ], "accumulationMethod": "Sliced" }, "balanceUsage": { "usageQuota": [ { "quotaUsageLevel": "None" } ], "overageSeverityStatus": "None" } } ], "metrics": [ { "metricType": "CumulativeCounter" } ] } ], "features": [ { "catalogLifecycleStatus": "Draft" } ], "activationPolicy": { "requiredAuthenticationLevel": "Default" }, "keyIssuancePolicy": { "alphabet": "CrockfordBase32", "caseStyle": "Upper", "checksum": "None", "sequenceScope": "Entitlement" }, "claimBasedActivation": { "componentMatchingStrategy": "MatchAll" }}The central admin read model for an entitlement: a customer’s grant to use one or more products, carrying lifecycle state, activation/trial/subscription policies, features, plan assignment, and external billing references.
object
Admin-controlled lifecycle state of an entitlement.
Consumer-facing subscription/lifecycle status, derived server-side from EntitlementLifecycleStatus EntitlementDto.Status, expiration dates, and trial / pause state.
Read-only convenience flag; true when TrialActivationPolicyDto? EntitlementDto.TrialActivationPolicy is set.
On offers: visitors can use the application without an account, on a short-lived license issued per device.
Read-only; true when this entitlement is held by a device rather than a person — an anonymous try license. Derived from the assignment, never stored.
On a try license whose device later signed up: the license they were issued. Nothing else carries over — the try license’s usage is purged with it.
Set when this entitlement was auto-issued for a self-service user; carries the source offer’s id.
Admin read model of a catalog product: identity (code + version), lifecycle status, features, monitored assets, metrics, and presentation metadata.
object
Indicates the current product status in its lifecycle.
Unique identifier of the provider associated with this product.
Public-facing name of the product used for display purposes.
Description of the product as displayed in the customer portal.
Unique internal code of the product. Must be unique in combination with string ProductDto.ProductVersion.
Version of the product visible to the end user. Not SemVer: one to four dot-separated numbers (e.g. “1”, “1.2”, “1.2.3.4”), or empty. Prerelease and build suffixes are rejected.
Expiration date, after which the product is no longer available for deployment. Null if no expiration is set.
Optional external identifier, such as a CMS or ERP ID.
Tag names applied to this product, from the tenant’s TagScopeDto.Product vocabulary. Vendor-facing catalog organization only — tags never reach an entitlement snapshot, a license token, or the end-user portal.
Collection of features that define additional functionalities of the product.
A feature as defined on a product: default value, enablement, trial/grace availability, license-token inclusion, and metering configuration. Entitlements inherit these defaults.
object
Data type of a feature’s value; determines how Value strings are interpreted and enforced.
One allowed value of an Enumeration-typed feature.
object
When true, the feature is withheld for the duration of a trial even if enabled.
Who can see a feature.
Where the feature appears among the product’s features. The vendor sets it; every list of a product’s features is ordered by it, so the screens agree with each other.
Assets associated with the product for usage monitoring.
A usage-tracked metric on a product or entitlement. Depending on how it is charged, either AssetMeteredUsageDto? MonitoredAssetDto.MeteredUsage (tiered, period-based metering) or AssetBalanceUsageDto? MonitoredAssetDto.BalanceUsage (prepaid credit balance) is attached.
object
How reported usage values are interpreted and aggregated by the monitoring pipeline.
Admin view of tiered, period-based metering on a monitored asset: the usage tiers, the consumption period they reset on, and how usage accumulates across tiers.
object
Consumption is suspended until this time (e.g. after an overage); null when not suspended.
Severity of consumption relative to the configured usage tiers.
Represents a tier of usage with associated credits and severity status.
object
Gets or sets the start usage for the tier.
Tier start as a percentage of the feature value (percentage-based enforcement).
Gets or sets the end usage for the tier. Nullable.
Tier end as a percentage of the feature value (percentage-based enforcement).
Gets or sets the flat fee credits for the tier.
Gets or sets the credits per unit of consumption for the tier.
Gets or sets the name of the usage tier.
Gets or sets the overage severity status for the tier.
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.
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.
Name of the consumption period the tiers reset on (see ConsumptionPeriodType), e.g. "Monthly".
How periodic consumption is attributed across usage tiers for charging.
Admin view of a prepaid credit balance on a monitored asset: credits available, consumed, quota thresholds, and the automatic re-balance (top-up) schedule.
object
Consumed credits since last deposit. Remaining credits are calculated as TotalCredits - CreditsUsed.
Total available credits.
The total of all credits used over time.
Consumption this balance was asked to pay for and could not: usage the vendor is owed and has not been paid for. Cumulative, and not reduced by a later top-up.
When this balance last failed to cover consumption that had already happened.
A named quota threshold on a credit balance and the severity level it maps to.
object
Remaining-balance threshold for this band: the band applies while the credit balance is below this value, and when several bands match the lowest threshold wins. A matching band at Critical severity blocks further deductions.
Severity of consumption relative to the configured quotas.
Consumption is suspended until this time (e.g. after an overage); null when not suspended.
Severity of consumption relative to the configured quotas.
The credits available when the entitlement is created.
Indicates if the resource has unlimited credits.
Cron schedule for automatic credit balance. The cron syntax consists of five fields separated by spaces:
- Minute (0-59)
- Hour (0-23)
- Day of the Month (1-31)
- Month (1-12 or Jan-Dec)
- Day of the Week (0-6 or Sun-Sat) Special characters:
-
- (asterisk): Represents any value for the field.
- , (comma): Separates multiple values.
-
- (hyphen): Specifies a range of values.
- / (slash): Specifies increments. Example: “0 0 * * *” means “at midnight every day.”
Date and time of the last automatic credit balance.
Indicates if the current credits should be transferred.
Maximum amount of credits that can be transferred automatically.
Amount of credits to balance automatically.
How far in the past a reported usage value’s timestamp may lie and still be accepted.
Lightweight metric definitions for this product.
A lightweight metric definition on a product: the machine name clients report usage under, plus display metadata (name, unit, category, number format).
object
Machine identifier clients report usage under (as opposed to the display string ProductMetricDto.Name).
How reported usage values are interpreted and aggregated by the monitoring pipeline.
Display format hint, e.g. "0" or "0.0".
Additional product information, including URLs and revision details.
object
Custom properties for storing additional information associated with the product.
object
A custom key/value property (e.g. on a product) with optional metadata entries.
object
A key/value metadata entry attached to a PropertyValueDto.
object
Indicates if the product is locked for editing. Locked products cannot be modified.
Additional metadata about the product stored as a JSON string. May include technical specifications, system requirements, or custom attributes.
List of application scopes that are authorized to use this product. Application scopes define which application types or deployment targets can activate this product. If null or empty, any application can use this product (no scope restrictions).
Parent product ID if this product belongs to an inherited version lineage.
A feature as granted on a specific entitlement: the product feature definition plus the entitlement-level value, enablement, and expiration overrides.
object
When true, the feature is withheld for the duration of a trial even if enabled.
True when the product allows this feature’s value to be overridden per entitlement.
Monitored asset backing a metered feature; Guid.Empty when the feature is not metered.
When this individual feature stops being available; null follows the entitlement’s expiration.
Activation-time requirements on an entitlement: the authentication level a user must meet, code/workflow requirements, network restrictions, and device-identification rules. Carried on ActivationPolicyDto? EntitlementDto.ActivationPolicy.
object
Authentication level a user must meet before a license activation is permitted. Used on activation policies and activation workflows.
Organization group the activating user must belong to; Guid.Empty means no group restriction.
Activation is permitted only from these CIDR ranges, IPv4 or IPv6 (empty = unrestricted).
When true, only devices whose identification was registered in advance can activate.
Configured length requirement for the device-identification signature (fingerprint). Stored with the policy and returned on reads; the activation pipeline does not currently enforce it.
Shape of the activation codes issued for this entitlement; null means the platform default random code.
object
When false the platform default random code is issued and string KeyIssuancePolicyDto.Template is ignored.
Template the code is rendered from, e.g. ACME-{DATE:yyMM}-{SEQ:6}-{RAND:4}{CHK}.
Character set {RAND} draws from.
Characters {RAND} draws from when KeyAlphabet KeyIssuancePolicyDto.Alphabet is KeyAlphabet.Custom.
Casing applied to the rendered code.
Check-character algorithm used by the {CHK} token.
Counter the {SEQ} token draws from.
First value the counter issues.
How many times generation re-rolls the random segment after a uniqueness collision before the
item fails. Templates whose only variable part is {SEQ} have nothing to re-roll, so they
depend on the counter only ever moving forward.
Ignore separators (spaces and dashes) in a submitted code before lookup.
Match a submitted code without regard to case.
Fold characters the alphabet excludes onto the ones it keeps before lookup, so a user who types O for 0 or I for 1 still resolves. Only defined for alphabets that omit the confusable pair.
Value the counter will issue next. Populated on reads; ignored on writes. A snapshot taken while other requests may be reserving blocks, so treat it as advisory rather than a count.
Defines allocation and usage policy for a license: seat limits, lease/grace periods, pooling (floating), transfer capability, offline allowance and fingerprinting method.
object
Duration a seat remains leased before renewal is required.
Extra allowed time after lease expiration before the license is considered invalid.
Maximum number of device activations (seats) allowed.
Indicates if seats are drawn from a shared pool (floating license).
Indicates if a device may continue operating without online validation for a period.
Identifier for the device fingerprinting method used.
Strictness of fingerprint-component matching during activation lookup.
Defaults to ComponentMatchingStrategy.MatchAll (exact-equality).
All four strategies are accepted. The tolerant ones (MatchAny, MatchTwo,
MatchMost) take effect when the client supplies per-component fingerprint
hashes (an SDK node-id provider implementing IComponentNodeIdProvider);
activations without components fall back to exact-fingerprint matching.
Constrains license activation to a time window on an entitlement. Null bounds leave that side of the window open.
object
Duration the license stays valid after the first activation (TimeSpan.Zero means no per-activation limit); the resulting expiry is capped at DateTimeOffset? TimeRestrictedActivationPolicyDto.NotValidAfterTimestamp.
Data transfer object for trial activation policy settings.
object
The duration of the trial period.
Optional timestamp before which the trial cannot be activated.
Optional timestamp after which the trial is no longer valid.
The calculated timestamp when the trial ends.
If true, the trial period starts after the first license activation otherwise the trial starts now.
Optional plan set id containing the trial plan to auto-apply at first trial activation. If omitted, entitlement.AssignedPlanSetId is used.
Optional trial plan name to auto-apply at first trial activation.
Recurring-renewal policy on an entitlement: how often it renews, how many periods remain, and the outer validity bounds.
object
Calendar unit of one renewal period (e.g. "month"); combined with int SubscriptionPolicyDto.RenewInterval.
Number of string SubscriptionPolicyDto.RenewPeriod units per renewal (e.g. 3 with “month” renews quarterly).
Renewal periods remaining before the subscription lapses (capped at int SubscriptionPolicyDto.MaxSubscriptionPeriods).
Stored with the policy and returned on reads; license validation does not currently act on this flag.
On offers: the terms anonymous try licenses are issued under. On a try license: the terms it was issued under, so a later edit to the offer never moves its expiry.
object
How long a try license lasts, measured from the moment it is issued. Never extended by use: a window that moved on every visit would let one visit a day keep a license alive forever. Capped at 7 days — anything longer is an account-based trial.
How long an expired try license is kept before it is deleted, together with the device identifier it holds. One whose device signed up is deleted at the next sweep instead.
The public code an application presents to start a try. Separate from the offer’s own license key, so it can be rotated without disturbing anything else.
The plan try licenses are issued on. Leave empty to use the offer’s own plan.
What this offer will hand out before it stops.
object
The period the two counts below are measured over.
Try licenses this offer may issue within one window.
Try licenses one caller address may be issued within one window.
Unexpired try licenses this offer may hold at once.
External anchor of the originating subscription/grant (e.g. stripe:subscription:sub_…).
External anchor of the owning customer/account (e.g. stripe:customer:cus_…).
Opaque connector provenance / pass-through (mirrors Stripe metadata).
object
The suite the plan, trial, temporary override and add-ons belong to. Attached products outside it ride along as add-ons at the values stamped on them, and still contribute their features to the license. Null only while nothing has established governance yet — the first plan-shaped assignment or an explicit suite attach.
A time-boxed plan override on an entitlement. While the validity window is active the override plan applies instead of the assigned plan; the previous plan fields allow restoring it when the override lapses.
object
Campaign the override runs under, when it was applied as part of one.
Tag names applied to this entitlement, from the tenant’s TagScopeDto.Entitlement vocabulary. Offers share that vocabulary and keep their tags across save-as-offer and order-from-offer. Vendor-facing organization only — tags never reach an entitlement snapshot, a license token, or the end-user portal.
Application scopes set directly on the entitlement; empty means no entitlement-level restriction.
Resolved scopes actually enforced at activation, combining entitlement- and product-level scopes.
One entry in an entitlement’s plan-assignment history.
object
What triggered the change (e.g. manual admin action or an approved consumer plan-change request).
Example
{ "status": "Draft", "subscriptionStatus": "Pending", "products": [ { "status": "Draft", "features": [ { "featureType": "Boolean", "meterAggregationType": "CumulativeCounter", "visibility": "Public" } ], "monitoredAssets": [ { "metricType": "CumulativeCounter", "meteredUsage": { "lastReportedOverageSeverityStatus": "None", "usageTiers": [ { "quotaUsageLevel": "None", "quotaUsagePolicy": "None" } ], "accumulationMethod": "Sliced" }, "balanceUsage": { "usageQuota": [ { "quotaUsageLevel": "None" } ], "overageSeverityStatus": "None" } } ], "metrics": [ { "metricType": "CumulativeCounter" } ] } ], "features": [ { "catalogLifecycleStatus": "Draft" } ], "activationPolicy": { "requiredAuthenticationLevel": "Default" }, "keyIssuancePolicy": { "alphabet": "CrockfordBase32", "caseStyle": "Upper", "checksum": "None", "sequenceScope": "Entitlement" }, "claimBasedActivation": { "componentMatchingStrategy": "MatchAll" }}Bad Request
object
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}Unauthorized
object
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}