Skip to content
Oclavex is in private preview, available to selected users. Public signup is blocked. Request access at [email protected].

Activates a license and returns complete license information with metadata.

POST
/api/v1/provision/activations/license
curl --request POST \
--url https://example.com/api/v1/provision/activations/license \
--header 'Content-Type: application/json' \
--data '{ "activationCode": "example", "fingerprint": "example", "components": "example", "deviceName": "example", "applicationScope": "example", "applicationInstanceId": "example", "email": "example", "requestedLeaseDurationSeconds": 1, "targetSoftwareVersion": "example", "useInteractiveUser": true, "tryMode": true }'

Returns the license token with the unsigned metadata around it: the entitlement’s description and license terms link, the activated features’ names and descriptions, and the licensed products with the custom properties marked Public. Prefer this when the client displays license or product information. Error codes same as /jwt endpoint.

X-Correlation-Id
string
Idempotency-Key
string

License activation request containing activation code, fingerprint, and optional email.

Represents a request to obtain (or check availability for) a license activation. All nullable fields are optional depending on the activation policy.

object
activationCode

Activation (or license) code required to identify entitlement or activation workflow.

string
0 <= 100 characters
fingerprint

The fingerprint is used to bind the license to a specific device or environment and therefore should be unique (as possible). This acts as identifier for binding a license to a seat.

null | string
0 <= 100 characters
components

Optional per-component one-way hashes of the device identity (well-known keys: MachineName, MacAddress, OsVersion, UserName). Enables the entitlement’s ComponentMatchingStrategy (MatchAny/Two/Most) during session-reuse lookup. Additive: when omitted the server falls back to exact-equality on string? LicenseRequestDto.Fingerprint (MatchAll). Values are hashed on-device; raw component values never leave the client.

null | object
deviceName

The device name is optional (but highly recommended) additional information about the device (e.g. for display in management UIs).

null | string
0 <= 100 characters
applicationScope

The license is bound to restricted to the provided application scope. This is to ensure that the activation code is used only for its intended application.

null | string
0 <= 100 characters
applicationInstanceId

Identifies the specific application or process that holds this license when concurrent licensing is enabled. Relevant when multiple processes on the same hardware require separate licenses.

null | string
0 <= 100 characters
email

End-user email (used for identity verification or association). Optional depending on policy.

null | string
0 <= 254 characters
requestedLeaseDurationSeconds

Desired lease duration, in seconds. Advisory: the server currently ignores this value and derives the lease duration from the entitlement’s license-allocation policy.

null | integer | string format: int32
<= 2147483647 /^-?(?:0|[1-9]\d*)$/
targetSoftwareVersion

Software version requesting activation (policy may restrict allowed software versions).

null | string
0 <= 100 characters
useInteractiveUser

When true, the server will resolve the authenticated user’s identity and find entitlements assigned to that user (via EntitlementPrincipal). Requires an authenticated request with a valid user token. The activation code may be omitted when this is true and the user has exactly one assigned entitlement.

boolean
tryMode

When true, string LicenseRequestDto.ActivationCode is read as an offer’s public try code and the server answers with the calling device’s own short-lived license, issuing one if the device has none. string? LicenseRequestDto.Fingerprint is required: the try code is public, so it identifies the offer and never the caller, and a request that names no device is refused.

boolean
Examplegenerated
{
"activationCode": "example",
"fingerprint": "example",
"components": "example",
"deviceName": "example",
"applicationScope": "example",
"applicationInstanceId": "example",
"email": "example",
"requestedLeaseDurationSeconds": 1,
"targetSoftwareVersion": "example",
"useInteractiveUser": true,
"tryMode": true
}

License activated successfully – returns complete license information.

Media typeapplication/json

End user license token with meta data.

object
licenseToken

The signed license JWT the SDK validates offline against the provider’s public key.

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

Link to the license terms (EULA) the license was issued under: an absolute https URL, or null when the entitlement has none. Unsigned display metadata, read from the entitlement at every issue and refresh.

null | string
activatedFeatures
Array<object>

A feature as activated on an end-user license: the granted value, enablement, trial/grace availability, and optional per-feature expiration.

object
id
string format: uuid
featureCode
string
productId
string format: uuid
moduleName
null | string
name
null | string
metricName

The metric a metered feature’s usage is recorded under, resolved by the issuer. A feature code and its metric name are deliberately different strings (MIRAGE.IMAGE.RENDERS against mirage.image.renders) and the server matches a meter by exact metric name, so this is the only name usage may be reported under. Null for a feature that has no meter, or when the issuer did not resolve one.

null | string
units

What the feature’s value is counted in (GB, seats, calls), read from the vendor’s catalog at every issue, for showing beside the value. Null for a Boolean feature, or when the catalog names none. Unsigned display metadata, like string? ActivatedFeatureDto.Name.

null | string
description
null | string
value
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
isDenied

The issuer’s verdict that this license explicitly does not grant the feature. Validation treats it as final, while the feature stays present for display — a locked capability can still be shown, and reaching for it is counted as a denied check.

boolean
featureExpiration
null | string format: date-time
products
Array<object>

A product covered by the license, with the custom properties the vendor marked Public. Display/catalog metadata carried on the unsigned EndUserLicenseDto envelope, like feature names and descriptions, so it must never gate functionality. The product code and version are also in the signed token (SignedProductDto); gate on that copy.

object
id
string format: uuid
productCode
string
productVersion

The version of the product the license was issued for, for display; empty when the product has none.

string
name
string
propertyValues
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
visibility

Whether a custom property is sent to the application with its license.

Allowed values: Private Public
meters

The license’s meters, one per metric name, with the unit each counts in.

Array<object>

A meter of the license: the metric name its usage is recorded and limited under (the key in the signed usage_limits claim) and the unit it counts in. Display metadata carried on the unsigned EndUserLicenseDto envelope, read from the same record as the customer API’s meter (string MyMonitoredAssetDto.Unit), so both report the same unit. A meter of a feature the license withholds is left out, as the feature is.

object
metricName
string
unit

What the meter counts, e.g. renders or minutes; null when the meter names none.

null | string
Example
{
"products": [
{
"propertyValues": {
"additionalProperty": {
"visibility": "Private"
}
}
}
]
}

Invalid request data or activation code.

Media typeapplication/json
object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Activation forbidden by policy (e.g., authentication required, user not verified), or every product this application may use is past its End of life and the device has never activated it (license.product_end_of_life).

Media typeapplication/json
object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Activation code not found or expired.

Media typeapplication/json
object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Device already activated, seat limit exceeded, or the Idempotency-Key was reused for a different request.

Media typeapplication/json
object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Too many requests – rate limit exceeded.

Media typeapplication/json
object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

The caller is signed in and the user directory could not be reached to look the user up (service.unavailable). Nothing was activated; retry with backoff.

Media typeapplication/json