Skip to content

Creates a new entitlement.

POST
/api/v1/provision/admin/entitlements
curl --request POST \
--url https://example.com/api/v1/provision/admin/entitlements \
--header 'Content-Type: application/json' \
--data '{ "customerContactEmail": "example", "customerContactName": "example", "legalNoticeHtml": "example", "description": "example", "name": "example", "version": "example", "status": "Draft", "isOffer": true, "issueOnUserRegistration": true, "allowAnonymousTry": true, "customerId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "orderId": "example", "reference": "example", "licenseKey": "example", "assignedPlanSetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "assignedPlanName": "example", "externalReference": "example", "customerExternalReference": "example", "metadata": "example", "tags": [ "example" ], "campaignId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }'

Entitlement creation payload.

Admin update payload for an entitlement; null properties leave the existing value unchanged. Use UpdateEntitlementDto UpdateEntitlementDto.FromEntitlement(EntitlementDto entitlement) to prefill from a current EntitlementDto.

object
customerContactEmail
null | string
customerContactName
null | string
legalNoticeHtml
null | string
description
null | string
name
null | string
version
null | string
status
One of:
null
isOffer
null | boolean
issueOnUserRegistration

On offers: self-registered users automatically get their own entitlement cloned from this offer when their email is confirmed.

null | boolean
allowAnonymousTry

On offers: visitors can use the application without an account, on a short-lived license issued per device. Needs an anonymous try policy as well.

null | boolean
customerId
null | string format: uuid
orderId
null | string
reference
null | string
licenseKey
null | string
assignedPlanSetId
null | string format: uuid
assignedPlanName
null | string
externalReference
null | string
customerExternalReference
null | string
metadata
null | object
tags

Replacement set of tag names from the TagScopeDto.Entitlement vocabulary. Null leaves the current tags unchanged; an empty list clears them; a list replaces the set wholesale. Names not yet in the registry are created there.

Array<string> | null
campaignId

Honored on create paths only (manual create and from-offer issuance): attributes the new entitlement to the campaign with an Issuance touch. Ignored on plain updates — manage attribution afterwards via the campaign-attribution endpoints.

null | string format: uuid

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
legalNoticeHtml
string
description
string
name
string
version
null | string
customerContactEmail
string
customerContactName
string
status

Admin-controlled lifecycle state of an entitlement.

Allowed values: Draft Published Disabled Archived
subscriptionStatus

Consumer-facing subscription/lifecycle status, derived server-side from EntitlementLifecycleStatus EntitlementDto.Status, expiration dates, and trial / pause state.

Allowed values: Pending Trialing Active Paused Expired Canceled PastDue
licenseKey
null | string
notValidBeforeDateTime
string format: date-time
expirationDateTime
string format: date-time
isEntitlementTrial

Read-only convenience flag; true when TrialActivationPolicyDto? EntitlementDto.TrialActivationPolicy is set.

boolean
id
string format: uuid
isOffer
boolean
issueOnUserRegistration
boolean
allowAnonymousTry

On offers: visitors can use the application without an account, on a short-lived license issued per device.

boolean
isAnonymousTry

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.

boolean
convertedToEntitlementId

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.

null | string format: uuid
sourceOfferId

Set when this entitlement was auto-issued for a self-service user; carries the source offer’s id.

null | string format: uuid
products
Array<object>

Admin read model of a catalog product: identity (code + version), lifecycle status, features, monitored assets, metrics, and presentation metadata.

object
id
string format: uuid
status

Indicates the current product status in its lifecycle.

Allowed values: Draft Preview Published Disabled Archived
providerId

Unique identifier of the provider associated with this product.

string format: uuid
name

Public-facing name of the product used for display purposes.

string
description

Description of the product as displayed in the customer portal.

string
productCode

Unique internal code of the product. Must be unique in combination with string ProductDto.ProductVersion.

string
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.

string
expirationDate

Expiration date, after which the product is no longer available for deployment. Null if no expiration is set.

null | string format: date-time
externalId

Optional external identifier, such as a CMS or ERP ID.

null | string
tags

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.

Array<string>
features

Collection of features that define additional functionalities of the product.

Array<object>

A feature as defined on a product: default value, enablement, trial/grace availability, license-token inclusion, and metering configuration. Entitlements inherit these defaults.

object
id
string format: uuid
featureCatalogId
null | string format: uuid
featureCode
string
featurePath
null | string
moduleName
null | string
name
string
description
null | string
usageMetric
null | string
units
null | string
featureType

Data type of a feature’s value; determines how Value strings are interpreted and enforced.

Allowed values: Boolean Numeric Text Enumeration Metered JsonField
enumOptions
Array<object>

One allowed value of an Enumeration-typed feature.

object
value
string
description
null | string
value
null | string
version
null | string
isEnabled
boolean
includeInLicenseToken
boolean
isAvailableDuringTrialPeriod
boolean
isAvailableDuringGracePeriod
boolean
isPaidFeature

When true, the feature is withheld for the duration of a trial even if enabled.

boolean
canModifyValueOnEntitlement
boolean
meterAggregationType
One of:
null
visibility

Who can see a feature.

Allowed values: Public Internal
sortOrder

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.

integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
isDeleted
boolean
creationTimeStamp
string format: date-time
lastUpdateTimeStamp
null | string format: date-time
revisionNumber
integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
monitoredAssets

Assets associated with the product for usage monitoring.

Array<object>

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
id
string format: uuid
entitlementId
null | string format: uuid
productId
null | string format: uuid
metricName
string
name
string
description
string
unit
string
category
string
tags
Array<string>
numberFormat
string
metricType

How reported usage values are interpreted and aggregated by the monitoring pipeline.

Allowed values: CumulativeCounter TotalCounter Gauge UpDownCounter
meteredUsageId
null | string format: uuid
meteredUsage
One of:
null
balanceUsageId
null | string format: uuid
balanceUsage
One of:
null
allowedBackDatingTolerance

How far in the past a reported usage value’s timestamp may lie and still be accepted.

string
/^-?(\d+\.)?\d{2}:\d{2}:\d{2}(\.\d{1,7})?$/
metrics

Lightweight metric definitions for this product.

Array<object>

A lightweight metric definition on a product: the machine name clients report usage under, plus display metadata (name, unit, category, number format).

object
id
string format: uuid
productId
string format: uuid
metricName

Machine identifier clients report usage under (as opposed to the display string ProductMetricDto.Name).

string
name
string
description
null | string
metricType

How reported usage values are interpreted and aggregated by the monitoring pipeline.

Allowed values: CumulativeCounter TotalCounter Gauge UpDownCounter
unit
string
category
string
numberFormat

Display format hint, e.g. "0" or "0.0".

string
productInformation

Additional product information, including URLs and revision details.

object
displayVersion
null | string
additionalInformation
null | string
revisionInformation
null | string
downloadUrl
null | string
informationUrl
null | string
supportUrl
null | string
propertyValues

Custom properties for storing additional information associated with the product.

object
key
additional properties

A custom key/value property (e.g. on a product) with optional metadata entries.

object
key
string
value
string
metadata
Array<object> | null

A key/value metadata entry attached to a PropertyValueDto.

object
key
string
value
string
isDeleted
boolean
createdAt
string format: date-time
updatedAt
null | string format: date-time
revisionNumber
integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
isLocked

Indicates if the product is locked for editing. Locked products cannot be modified.

boolean
productMetaData

Additional metadata about the product stored as a JSON string. May include technical specifications, system requirements, or custom attributes.

null | string
applicationScopes

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).

Array<string> | null
parentProductId

Parent product ID if this product belongs to an inherited version lineage.

null | string format: uuid
features
Array<object>

A feature as granted on a specific entitlement: the product feature definition plus the entitlement-level value, enablement, and expiration overrides.

object
id
string format: uuid
featureCode
string
productId
string format: uuid
moduleName
null | string
featurePath
null | string
name
string
description
null | string
value
null | string
version
null | string
isEnabled
boolean
isAvailableDuringTrialPeriod
boolean
isAvailableDuringGracePeriod
boolean
isPaidFeature

When true, the feature is withheld for the duration of a trial even if enabled.

boolean
canModifyValueOnEntitlement

True when the product allows this feature’s value to be overridden per entitlement.

boolean
meteredAssetId

Monitored asset backing a metered feature; Guid.Empty when the feature is not metered.

string format: uuid
featureExpiration

When this individual feature stops being available; null follows the entitlement’s expiration.

null | string format: date-time
catalogLifecycleStatus
One of:
null
createdAt
string format: date-time
updatedAt
string format: date-time
customerId
string format: uuid
activationPolicy
One of:
null
keyIssuancePolicy
One of:
null
claimBasedActivation
One of:
null
timeRestrictedActivationPolicy
One of:
null
trialActivationPolicy
One of:
null
subscriptionPolicy
One of:
null
anonymousTryPolicy
One of:
null
orderId
string
reference
string
externalReference

External anchor of the originating subscription/grant (e.g. stripe:subscription:sub_…).

string
customerExternalReference

External anchor of the owning customer/account (e.g. stripe:customer:cus_…).

string
metadata

Opaque connector provenance / pass-through (mirrors Stripe metadata).

object
key
additional properties
string
assignedPlanSetId
null | string format: uuid
assignedPlanName
null | string
governingSuiteId

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.

null | string format: uuid
temporaryOverride

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
planSetId
null | string format: uuid
planName
null | string
validFromUtc
null | string format: date-time
validUntilUtc
null | string format: date-time
reason
null | string
campaignId

Campaign the override runs under, when it was applied as part of one.

null | string format: uuid
previousPlanSetId
null | string format: uuid
previousPlanName
null | string
tags

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.

Array<string>
applicationScopes

Application scopes set directly on the entitlement; empty means no entitlement-level restriction.

Array<string>
effectiveApplicationScopes

Resolved scopes actually enforced at activation, combining entitlement- and product-level scopes.

Array<string>
planAssignmentHistory
Array<object>

One entry in an entitlement’s plan-assignment history.

object
changedAt
string format: date-time
previousPlanSetId
null | string format: uuid
previousPlanName
null | string
newPlanSetId
null | string format: uuid
newPlanName
null | string
source

What triggered the change (e.g. manual admin action or an approved consumer plan-change request).

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