Skip to content

Adds a new feature to a product.

POST
/api/v1/provision/admin/products/{productId}/features
curl --request POST \
--url https://example.com/api/v1/provision/admin/products/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/features \
--header 'Content-Type: application/json' \
--data '{ "featureCatalogId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "moduleName": "example", "featureCode": "example", "description": "example", "value": "example", "units": "example", "featureType": "Boolean", "enumOptions": [ { "value": "example", "description": "example" } ], "isAvailableDuringTrialPeriod": true, "isAvailableDuringGracePeriod": true, "isEnabled": true, "isPaidFeature": true, "includeInLicenseToken": true, "canModifyValueOnEntitlement": true, "canModifyEnabledOnEntitlement": true, "sortOrder": 1, "missingFeatureCatalogBehavior": "Fail" }'
productId
required
string format: uuid

The unique identifier of the product.

The details of the feature to be added.

Admin request to add a feature to a product. Links to a feature catalog entry via Guid? AddProductFeatureDto.FeatureCatalogId or string AddProductFeatureDto.FeatureCode; a missing catalog entry is handled per MissingFeatureCatalogBehavior AddProductFeatureDto.MissingFeatureCatalogBehavior.

object
featureCatalogId
null | string format: uuid
name
string
moduleName
null | string
featureCode
string
description
null | string
value
null | string
units
null | string
featureType
One of:
null
enumOptions
Array<object>

One allowed value of an Enumeration-typed feature.

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

When true, the feature is withheld for the duration of a trial even if bool AddProductFeatureDto.IsEnabled is set. bool AddProductFeatureDto.IsAvailableDuringTrialPeriod only ever grants access to a feature that is otherwise off, so it cannot express “enabled, but not while trialling”; this can.

boolean
includeInLicenseToken

When true, the feature is embedded in the signed license token issued to clients.

boolean
canModifyValueOnEntitlement

When true, the feature’s value may be overridden per entitlement.

boolean
canModifyEnabledOnEntitlement

When true, the feature’s enabled flag may be overridden per entitlement.

boolean
sortOrder

Where the feature appears among the product’s features. Leave at 0 to append it after the ones already there.

integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
missingFeatureCatalogBehavior

What to do when a product feature references a feature code with no catalog entry.

Allowed values: Fail CreateDraft

Returns the details of the newly added feature.

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*)$/