Skip to content

Applies a catalog snapshot to the current tenant. With dryRun set to `true` the whole import runs and is then rolled back, so the response reports what would happen — including skips caused by real constraint checks — without persisting.

POST
/api/v1/provision/admin/catalog/import
curl --request POST \
--url 'https://example.com/api/v1/provision/admin/catalog/import?dryRun=false&conflictMode=CreateOrUpdate' \
--header 'Content-Type: application/json' \
--data '{ "formatVersion": "example", "exportedAt": "2026-04-15T12:00:00Z", "sourceTenantId": "example", "scope": [ "example" ], "counts": { "additionalProperty": 1 }, "references": { "additionalProperty": { "kind": "Product", "naturalKey": { "productCode": "example", "productVersion": "example", "featureCode": "example", "metricName": "example", "code": "example", "name": "example", "version": "example", "scope": "example" }, "presence": "Explicit", "referencedBy": [ "example" ] } }, "warnings": [ { "code": "example", "key": "example", "message": "example" } ], "tags": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "scope": "Product", "name": "example", "color": "example" } ], "products": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "status": "Draft", "providerId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "description": "example", "productCode": "example", "productVersion": "example", "expirationDate": "2026-04-15T12:00:00Z", "externalId": "example", "tags": [ "example" ], "features": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "featureCatalogId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "featureCode": "example", "featurePath": "example", "moduleName": "example", "name": "example", "description": "example", "usageMetric": "example", "units": "example", "featureType": "Boolean", "enumOptions": [ { "value": "example", "description": "example" } ], "value": "example", "version": "example", "isEnabled": true, "includeInLicenseToken": true, "isAvailableDuringTrialPeriod": true, "isAvailableDuringGracePeriod": true, "isPaidFeature": true, "canModifyValueOnEntitlement": true, "meterAggregationType": "CumulativeCounter", "visibility": "Public", "sortOrder": 1, "isDeleted": true, "creationTimeStamp": "2026-04-15T12:00:00Z", "lastUpdateTimeStamp": "2026-04-15T12:00:00Z", "revisionNumber": 1 } ], "monitoredAssets": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "entitlementId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "metricName": "example", "name": "example", "description": "example", "unit": "example", "category": "example", "tags": [ "example" ], "numberFormat": "example", "metricType": "CumulativeCounter", "meteredUsageId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "meteredUsage": { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "suspendedUntilAt": "2026-04-15T12:00:00Z", "lastReportedOverageSeverityStatus": "None", "usageTiers": [ { "startUsage": 1, "startPercentage": 1, "endUsage": 1, "endPercentage": 1, "baseCredits": 1, "creditsPerUnitOfConsumption": 1, "name": "example", "quotaUsageLevel": "None", "quotaUsagePolicy": "None", "fundingBalanceMetric": "example" } ], "consumptionPeriod": "example", "accumulationMethod": "Sliced" }, "balanceUsageId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "balanceUsage": { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "description": "example", "creditsUsed": 1, "totalCredits": 1, "cumulativeCreditsUsed": 1, "unfundedCredits": 1, "lastUnfundedAt": "2026-04-15T12:00:00Z", "unit": "example", "numberFormat": "example", "lastDeposit": "2026-04-15T12:00:00Z", "usageQuota": [ { "endUsage": 1, "name": "example", "quotaUsageLevel": "None" } ], "suspendedUntilAt": "2026-04-15T12:00:00Z", "overageSeverityStatus": "None", "initialCreditAmount": 1, "isUnlimitedCredits": true, "autoBalanceCronSchedule": "example", "lastAutoBalanceDate": "2026-04-15T12:00:00Z", "shouldAutoBalanceTransferCurrentCredits": true, "maxAutoBalanceCreditTransferAmount": 1, "autoBalanceCreditAmount": 1 }, "allowedBackDatingTolerance": "example" } ], "metrics": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "metricName": "example", "name": "example", "description": "example", "metricType": "CumulativeCounter", "unit": "example", "category": "example", "numberFormat": "example" } ], "productInformation": { "displayVersion": "example", "additionalInformation": "example", "revisionInformation": "example", "downloadUrl": "example", "informationUrl": "example", "supportUrl": "example" }, "propertyValues": { "additionalProperty": { "key": "example", "value": "example", "metadata": [ { "key": "example", "value": "example" } ] } }, "isDeleted": true, "createdAt": "2026-04-15T12:00:00Z", "updatedAt": "2026-04-15T12:00:00Z", "revisionNumber": 1, "isLocked": true, "productMetaData": "example", "applicationScopes": [ "example" ], "parentProductId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" } ], "featureCatalog": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "featureCode": "example", "name": "example", "units": "example", "metricName": "example", "featureType": "Boolean", "lifecycleStatus": "Draft", "visibility": "Public", "meterAggregationType": "CumulativeCounter", "valueScore": 1, "enumOptions": [ { "value": "example", "description": "example" } ], "tags": [ "example" ], "isDeleted": true, "creationTimeStamp": "2026-04-15T12:00:00Z", "lastUpdateTimeStamp": "2026-04-15T12:00:00Z", "revisionNumber": 1 } ], "monitoredAssets": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "entitlementId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "metricName": "example", "name": "example", "description": "example", "unit": "example", "category": "example", "tags": [ "example" ], "numberFormat": "example", "metricType": "CumulativeCounter", "meteredUsageId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "meteredUsage": { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "suspendedUntilAt": "2026-04-15T12:00:00Z", "lastReportedOverageSeverityStatus": "None", "usageTiers": [ { "startUsage": 1, "startPercentage": 1, "endUsage": 1, "endPercentage": 1, "baseCredits": 1, "creditsPerUnitOfConsumption": 1, "name": "example", "quotaUsageLevel": "None", "quotaUsagePolicy": "None", "fundingBalanceMetric": "example" } ], "consumptionPeriod": "example", "accumulationMethod": "Sliced" }, "balanceUsageId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "balanceUsage": { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "description": "example", "creditsUsed": 1, "totalCredits": 1, "cumulativeCreditsUsed": 1, "unfundedCredits": 1, "lastUnfundedAt": "2026-04-15T12:00:00Z", "unit": "example", "numberFormat": "example", "lastDeposit": "2026-04-15T12:00:00Z", "usageQuota": [ { "endUsage": 1, "name": "example", "quotaUsageLevel": "None" } ], "suspendedUntilAt": "2026-04-15T12:00:00Z", "overageSeverityStatus": "None", "initialCreditAmount": 1, "isUnlimitedCredits": true, "autoBalanceCronSchedule": "example", "lastAutoBalanceDate": "2026-04-15T12:00:00Z", "shouldAutoBalanceTransferCurrentCredits": true, "maxAutoBalanceCreditTransferAmount": 1, "autoBalanceCreditAmount": 1 }, "allowedBackDatingTolerance": "example" } ], "suites": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "code": "example", "name": "example", "description": "example", "members": [ { "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "productCode": "example", "productName": "example", "sortOrder": 1 } ], "isImplicit": true } ], "plans": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "suiteId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "description": "example", "status": "Draft", "revisionDate": "2026-04-15T12:00:00Z", "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" } ] } ] } ] } ] } ], "addOns": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "suiteId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "code": "example", "name": "example", "description": "example", "status": "Draft", "features": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "featureCode": "example", "name": "example", "units": "example", "metricName": "example", "featureType": "Boolean", "lifecycleStatus": "Draft", "visibility": "Public", "meterAggregationType": "CumulativeCounter", "valueScore": 1, "enumOptions": [ { "value": "example", "description": "example" } ], "tags": [ "example" ], "isDeleted": true, "creationTimeStamp": "2026-04-15T12:00:00Z", "lastUpdateTimeStamp": "2026-04-15T12:00:00Z", "revisionNumber": 1 } ], "featureValues": [ { "featureCode": "example", "value": "example", "usageTiers": [ { "startUsage": 1, "startPercentage": 1, "endUsage": 1, "endPercentage": 1, "baseCredits": 1, "creditsPerUnitOfConsumption": 1, "name": "example", "quotaUsageLevel": "None", "quotaUsagePolicy": "None", "fundingBalanceMetric": "example" } ], "planTargets": [ "example" ], "operation": "Replace" } ] } ], "entitlementOffers": [ { "legalNoticeHtml": "example", "description": "example", "name": "example", "version": "example", "customerContactEmail": "example", "customerContactName": "example", "status": "Draft", "subscriptionStatus": "Pending", "licenseKey": "example", "notValidBeforeDateTime": "2026-04-15T12:00:00Z", "expirationDateTime": "2026-04-15T12:00:00Z", "isEntitlementTrial": true, "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "isOffer": true, "issueOnUserRegistration": true, "allowAnonymousTry": true, "isAnonymousTry": true, "convertedToEntitlementId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "sourceOfferId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "products": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "status": "Draft", "providerId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "description": "example", "productCode": "example", "productVersion": "example", "expirationDate": "2026-04-15T12:00:00Z", "externalId": "example", "tags": [ "example" ], "features": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "featureCatalogId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "featureCode": "example", "featurePath": "example", "moduleName": "example", "name": "example", "description": "example", "usageMetric": "example", "units": "example", "featureType": "Boolean", "enumOptions": [ { "value": "example", "description": "example" } ], "value": "example", "version": "example", "isEnabled": true, "includeInLicenseToken": true, "isAvailableDuringTrialPeriod": true, "isAvailableDuringGracePeriod": true, "isPaidFeature": true, "canModifyValueOnEntitlement": true, "meterAggregationType": "CumulativeCounter", "visibility": "Public", "sortOrder": 1, "isDeleted": true, "creationTimeStamp": "2026-04-15T12:00:00Z", "lastUpdateTimeStamp": "2026-04-15T12:00:00Z", "revisionNumber": 1 } ], "monitoredAssets": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "entitlementId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "metricName": "example", "name": "example", "description": "example", "unit": "example", "category": "example", "tags": [ "example" ], "numberFormat": "example", "metricType": "CumulativeCounter", "meteredUsageId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "meteredUsage": { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "suspendedUntilAt": "2026-04-15T12:00:00Z", "lastReportedOverageSeverityStatus": "None", "usageTiers": [ { "startUsage": 1, "startPercentage": 1, "endUsage": 1, "endPercentage": 1, "baseCredits": 1, "creditsPerUnitOfConsumption": 1, "name": "example", "quotaUsageLevel": "None", "quotaUsagePolicy": "None", "fundingBalanceMetric": "example" } ], "consumptionPeriod": "example", "accumulationMethod": "Sliced" }, "balanceUsageId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "balanceUsage": { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "description": "example", "creditsUsed": 1, "totalCredits": 1, "cumulativeCreditsUsed": 1, "unfundedCredits": 1, "lastUnfundedAt": "2026-04-15T12:00:00Z", "unit": "example", "numberFormat": "example", "lastDeposit": "2026-04-15T12:00:00Z", "usageQuota": [ { "endUsage": 1, "name": "example", "quotaUsageLevel": "None" } ], "suspendedUntilAt": "2026-04-15T12:00:00Z", "overageSeverityStatus": "None", "initialCreditAmount": 1, "isUnlimitedCredits": true, "autoBalanceCronSchedule": "example", "lastAutoBalanceDate": "2026-04-15T12:00:00Z", "shouldAutoBalanceTransferCurrentCredits": true, "maxAutoBalanceCreditTransferAmount": 1, "autoBalanceCreditAmount": 1 }, "allowedBackDatingTolerance": "example" } ], "metrics": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "metricName": "example", "name": "example", "description": "example", "metricType": "CumulativeCounter", "unit": "example", "category": "example", "numberFormat": "example" } ], "productInformation": { "displayVersion": "example", "additionalInformation": "example", "revisionInformation": "example", "downloadUrl": "example", "informationUrl": "example", "supportUrl": "example" }, "propertyValues": { "additionalProperty": { "key": "example", "value": "example", "metadata": [ { "key": "example", "value": "example" } ] } }, "isDeleted": true, "createdAt": "2026-04-15T12:00:00Z", "updatedAt": "2026-04-15T12:00:00Z", "revisionNumber": 1, "isLocked": true, "productMetaData": "example", "applicationScopes": [ "example" ], "parentProductId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" } ], "features": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "featureCode": "example", "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "moduleName": "example", "featurePath": "example", "name": "example", "description": "example", "value": "example", "version": "example", "isEnabled": true, "isAvailableDuringTrialPeriod": true, "isAvailableDuringGracePeriod": true, "isPaidFeature": true, "canModifyValueOnEntitlement": true, "meteredAssetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "featureExpiration": "2026-04-15T12:00:00Z", "catalogLifecycleStatus": "Draft" } ], "createdAt": "2026-04-15T12:00:00Z", "updatedAt": "2026-04-15T12:00:00Z", "customerId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "activationPolicy": { "requiredAuthenticationLevel": "Default", "requireNewUserVerification": true, "requireProductCode": true, "requireActivationWorkflow": true, "requireOrganizationGroupMember": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "allowedIpCidr": [ "example" ], "requirePreConfiguredDeviceIdentification": true, "requiredDeviceIdentificationSignatureLength": 1 }, "keyIssuancePolicy": { "enabled": true, "template": "example", "alphabet": "CrockfordBase32", "customAlphabet": "example", "caseStyle": "Upper", "checksum": "None", "sequenceScope": "Entitlement", "sequenceStart": 1, "collisionRetryLimit": 1, "normalizeStripSeparators": true, "normalizeCaseInsensitive": true, "normalizeMapConfusables": true, "sequenceCurrent": 1 }, "claimBasedActivation": { "leaseTime": "example", "gracePeriod": "example", "numberOfSeats": 1, "isFloatingLicense": true, "allowOffLineUse": true, "fingerprintingMethod": "example", "componentMatchingStrategy": "MatchAll" }, "timeRestrictedActivationPolicy": { "notValidBeforeTimestamp": "2026-04-15T12:00:00Z", "notValidAfterTimestamp": "2026-04-15T12:00:00Z", "activationPeriod": "example" }, "trialActivationPolicy": { "trialPeriod": "example", "cannotActivateBeforeTimestamp": "2026-04-15T12:00:00Z", "notValidAfterTimestamp": "2026-04-15T12:00:00Z", "trialEndsAt": "2026-04-15T12:00:00Z", "trialPeriodStartsAfterFirstActivation": true, "trialPlanSetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "trialPlanName": "example" }, "subscriptionPolicy": { "renewPeriod": "example", "renewInterval": 1, "cannotActivateBeforeTimestamp": "2026-04-15T12:00:00Z", "notValidAfterTimestamp": "2026-04-15T12:00:00Z", "isSubscriptionActive": true, "subscriptionPeriodsLeft": 1, "softEnforcement": true, "nextRenewalTimeStamp": "2026-04-15T12:00:00Z" }, "anonymousTryPolicy": { "lifetime": "example", "purgeAfter": "example", "tryCode": "example", "tryPlanName": "example", "issuanceBudget": { "window": "example", "perWindow": 1, "perIpHashPerWindow": 1, "maxLiveClones": 1 } }, "orderId": "example", "reference": "example", "externalReference": "example", "customerExternalReference": "example", "metadata": { "additionalProperty": "example" }, "assignedPlanSetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "assignedPlanName": "example", "governingSuiteId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "temporaryOverride": { "planSetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "planName": "example", "validFromUtc": "2026-04-15T12:00:00Z", "validUntilUtc": "2026-04-15T12:00:00Z", "reason": "example", "campaignId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "previousPlanSetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "previousPlanName": "example" }, "tags": [ "example" ], "applicationScopes": [ "example" ], "effectiveApplicationScopes": [ "example" ], "planAssignmentHistory": [ { "changedAt": "2026-04-15T12:00:00Z", "previousPlanSetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "previousPlanName": "example", "newPlanSetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "newPlanName": "example", "source": "example" } ] } ], "ratingCampaigns": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "description": "example", "isEnabled": true, "startsAt": "2026-04-15T12:00:00Z", "endsAt": "2026-04-15T12:00:00Z", "isRunning": true, "targets": [ { "featureCatalogId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "featureCode": "example", "featureName": "example", "question": "example", "priority": 1 } ], "creationTimeStamp": "2026-04-15T12:00:00Z", "lastUpdateTimeStamp": "2026-04-15T12:00:00Z", "revisionNumber": 1 } ] }'
dryRun
boolean

Preview only; roll back instead of committing.

conflictMode

How the importer treats an item that already exists in the target tenant.

default: CreateOrUpdate
Allowed values: CreateOrUpdate CreateOnly UpdateOnly

How to treat items that already exist: CreateOrUpdate (default), CreateOnly, or UpdateOnly.

The snapshot to apply.

        Portable snapshot of a tenant's catalog. Versioned by string CatalogExportEnvelopeDto.FormatVersion; the major
        component gates import compatibility.
        Entities reference each other by their source-tenant Guid. Those Guids are meaningless in

another tenant, so every one of them is resolvable through Dictionary<Guid, CatalogReferenceDto> CatalogExportEnvelopeDto.References.

object
formatVersion

Schema version of this envelope. See CatalogFormatVersions.

string
exportedAt

When the snapshot was taken.

string format: date-time
sourceTenantId

Identifier of the tenant the snapshot was taken from.

string
scope

Which sections are populated in this snapshot.

Array<string>
counts

Item count per section, keyed by CatalogScopes constant.

object
key
additional properties
integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
references

Source-tenant Guid to portable key, for every cross-section reference in the snapshot.

object
key
additional properties

Maps one source-tenant Guid to a portable key. Every cross-section Guid the snapshot contains has an entry, including ones whose target is present — so an importer has exactly one resolution path rather than a Guid path and a key path that disagree.

object
kind

The kind of entity the Guid identifies.

Allowed values: Product FeatureCatalog MonitoredAsset UsagePlanSet AddOn EntitlementOffer RatingCampaign Suite Tag
naturalKey

How to find the same entity in another tenant.

object
productCode

Owning product code — set for products and for everything scoped to a product.

null | string
productVersion

Owning product version.

null | string
featureCode

Feature code, for feature catalog entries.

null | string
metricName

Metric name, for monitored assets.

null | string
code

Add-on code.

null | string
name

Name, for plan sets, rating campaigns and entitlement offers.

null | string
version

Version, for entitlement offers.

null | string
scope

Vocabulary, for tags. Part of the key rather than a detail: the same name in two scopes is two different tags, so a key without it matches the wrong registry entry.

null | string
presence

Whether the entity was selected, pulled in, or is referenced but absent.

Allowed values: Explicit Implicit Absent
referencedBy

Human-readable provenance — the edges that reached this entity, e.g. add-on "Fleet add-on" → plan set. Empty when it was selected directly.

Array<string>
warnings

Non-fatal problems encountered while building the snapshot.

Array<object>

Something the export could not express cleanly. Warnings never block an export.

object
code

Stable machine-readable code, e.g. ambiguous-natural-key.

string
key

The affected entity’s key, when the warning is about one entity.

null | string
message

What the caller should know.

string
tags

The tag registry. Carries the entries the snapshot’s items quote by name, plus — on a whole-section export — the ones nothing is tagged with, which have no other way to travel.

Array<object> | null

One entry of the tenant’s tag registry, as a snapshot carries it.

object
id

Source-tenant registry id. Carried like every other section’s id, so a picker can select one.

string format: uuid
scope

The vocabulary this tag belongs to. Half of the tag’s identity: the same name in two vocabularies is two different tags.

Allowed values: Product FeatureCatalog Entitlement
name

Display name. Matched case-insensitively against the target’s registry.

string
color

Chip colour as a #rrggbb hex triplet, or null for the default chip colour.

null | string
products

Products. Nested MonitoredAssets are echoed for readability only — the List<MonitoredAssetDto>? CatalogExportEnvelopeDto.MonitoredAssets section is the authoritative carrier and an importer must take assets from there, or a shared asset is created twice.

Array<object> | null

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
featureCatalog

Feature catalog entries. Carries the fields a product feature’s bare Guid cannot.

Array<object> | null

A feature definition in a product’s feature catalog: the canonical source for a feature code’s type, allowed values, metering, and visibility. Whether end users are asked to rate a feature is configured separately, per campaign — see RatingCampaignDto.

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

Metric name a Metered feature reports usage under.

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
lifecycleStatus

Lifecycle state of a feature catalog entry.

Allowed values: Draft Preview Published Disabled Archived
visibility

Who can see a feature.

Allowed values: Public Internal
meterAggregationType
One of:
null
valueScore

Relative, unitless value weight used by value-delivered analytics. Null means the feature is not valued yet and contributes nothing. Weights are applied when a report is generated, so changing one re-values history — intended behaviour for a relative measure.

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

One allowed value of an Enumeration-typed feature.

object
value
string
description
null | string
tags

Tag names applied to this entry, from the tenant’s TagScopeDto.FeatureCatalog vocabulary.

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

Product-level monitored asset templates, each appearing exactly once.

Array<object> | null

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})?$/
suites

Suites in the snapshot. Emitted before plans — a plan set needs its suite.

Array<object> | null

A suite: an ordered set of member products sold together, and the owner of the usage plan sets (tiers) that configure them.

object
id
string format: uuid
code
string
name
string
description
string
members
Array<object>

One member product of a suite, in sell order.

object
productId
string format: uuid
productCode
string
productName
string
sortOrder
integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
isImplicit

True for the suite auto-created behind a product the first time it is priced, rather than one an operator built. Listing excludes these by default; pass includeImplicit to see them. Becomes false permanently once a second product joins.

boolean
plans

Usage plan sets in the snapshot.

Array<object> | null

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
addOns

Add-ons.

Array<object> | null

An add-on: a named set of feature adjustments, scoped to a suite, that can be granted to entitlements on top of their plan. Scoped to the suite rather than one of its plan-set revisions — revisions fork, the suite is what persists.

object
id
string format: uuid
suiteId
string format: uuid
code
string
name
string
description
string
status

Lifecycle state of an add-on.

Allowed values: Draft Published Archived
features
Array<object>

A feature definition in a product’s feature catalog: the canonical source for a feature code’s type, allowed values, metering, and visibility. Whether end users are asked to rate a feature is configured separately, per campaign — see RatingCampaignDto.

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

Metric name a Metered feature reports usage under.

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
lifecycleStatus

Lifecycle state of a feature catalog entry.

Allowed values: Draft Preview Published Disabled Archived
visibility

Who can see a feature.

Allowed values: Public Internal
meterAggregationType
One of:
null
valueScore

Relative, unitless value weight used by value-delivered analytics. Null means the feature is not valued yet and contributes nothing. Weights are applied when a report is generated, so changing one re-values history — intended behaviour for a relative measure.

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

One allowed value of an Enumeration-typed feature.

object
value
string
description
null | string
tags

Tag names applied to this entry, from the tenant’s TagScopeDto.FeatureCatalog vocabulary.

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

One feature adjustment an add-on applies, and how it combines with the plan value.

object
featureCode
string
value

Operand for the operation, as a string interpreted per the feature’s data type; unused for Tiered.

null | string
usageTiers

Usage tiers applied when AddOnFeatureValueOperationDto AddOnFeatureValueDto.Operation is Tiered.

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
planTargets

Plan names this adjustment applies to; empty applies it to every plan.

Array<string>
operation

How an add-on’s feature value combines with the plan-provided value.

Allowed values: Replace Add Multiply Tiered
entitlementOffers

Entitlements marked as offers (IsOffer = true).

Array<object> | null

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
ratingCampaigns

Rating campaigns with their targets.

Array<object> | null

A rating campaign: a transient ask (“how is export working out this quarter?”) layered over the permanent feature catalog. A user is prompted about a targeted feature only while the campaign is running and only if they are entitled to that feature.

object
id
string format: uuid
name
string
description
null | string
isEnabled
boolean
startsAt
null | string format: date-time
endsAt
null | string format: date-time
isRunning

True when the campaign is enabled and the current time is inside its window.

boolean
targets
Array<object>

A campaign target as returned by the admin API, denormalized with the feature’s display fields.

object
featureCatalogId
string format: uuid
featureCode
string
featureName
string
question

Question shown for this feature; null or empty falls back to the generic prompt.

null | string
priority

Lower is asked first. Null means no set order — reached by recent usage only.

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

OK

Media typeapplication/json

Outcome of a catalog import. With dryRun = true the same counts and item statuses are returned but the transaction is rolled back, so the skip reasons still reflect real unique index and foreign key checks.

object
dryRun

Whether the run was a preview.

boolean
conflictMode

How existing rows were treated.

Allowed values: CreateOrUpdate CreateOnly UpdateOnly
formatVersion

The FormatVersion of the envelope that was applied.

string
sections

One entry per section the importer processed, in the order it processed them.

Array<object>

Per-section import tally (created/updated/skipped counts) with one status entry per item.

object
onlyInTarget

Business keys present in this environment that the file does not mention. Informational: an import never removes anything, and a granular file legitimately covers only part of a section — so this is context for the reviewer, not a list of pending deletions. Populated only when bool CatalogImportOptionsDto.IncludeComparison is set.

Array<string>
section

Which section this tally is for — a CatalogScopes constant.

string
created

Items that did not exist in the target tenant and were created.

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

Items that matched an existing row and were updated.

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

Items that were not applied. Every one carries a string? CatalogImportItemStatus.Reason.

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

Items carried through with a metric name no monitored asset could be created for.

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

One entry per item in the section.

Array<object>

Outcome for one item in a catalog import.

object
key

Stable business key the entity was matched by — code@version for products, code for add-ons, name for plan sets and rating campaigns. This is the same key accepted by Dictionary<string, List<string>> CatalogImportOptionsDto.Keys, so a preview can be turned into a selective apply without translation.

string
sourceId

The item’s id in the source envelope, for correlating a status back to the uploaded file.

null | string format: uuid
action

What happened to the item.

Allowed values: Created Updated Skipped
reason

Why, in human-readable form. Always set for Skipped, and also set on Updated when the update was partial — an existing product’s features and monitored assets are not overwritten, and that has to be said rather than implied.

null | string
changes

Field-by-field comparison for an item that would be updated. Populated only when bool CatalogImportOptionsDto.IncludeComparison is set.

Array<object>

One field an import would write, with the value already there beside the incoming one. Recorded as the importer assigns the field, so the comparison lists exactly the fields that can change and cannot drift from what an apply would do.

object
field

Property name as the operator would recognise it.

string
current

Rendered value in this environment before the import.

null | string
incoming

Rendered value the file would write.

null | string
isDifferent

Whether the two differ. False means the file restates a value already set.

boolean
products

The products section. Superseded by List<CatalogImportSectionResult> CatalogImportResultDto.Sections, which covers every section; this points at the same instance and is kept because removing it would break callers compiled against 1.x.

object
onlyInTarget

Business keys present in this environment that the file does not mention. Informational: an import never removes anything, and a granular file legitimately covers only part of a section — so this is context for the reviewer, not a list of pending deletions. Populated only when bool CatalogImportOptionsDto.IncludeComparison is set.

Array<string>
section

Which section this tally is for — a CatalogScopes constant.

string
created

Items that did not exist in the target tenant and were created.

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

Items that matched an existing row and were updated.

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

Items that were not applied. Every one carries a string? CatalogImportItemStatus.Reason.

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

Items carried through with a metric name no monitored asset could be created for.

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

One entry per item in the section.

Array<object>

Outcome for one item in a catalog import.

object
key

Stable business key the entity was matched by — code@version for products, code for add-ons, name for plan sets and rating campaigns. This is the same key accepted by Dictionary<string, List<string>> CatalogImportOptionsDto.Keys, so a preview can be turned into a selective apply without translation.

string
sourceId

The item’s id in the source envelope, for correlating a status back to the uploaded file.

null | string format: uuid
action

What happened to the item.

Allowed values: Created Updated Skipped
reason

Why, in human-readable form. Always set for Skipped, and also set on Updated when the update was partial — an existing product’s features and monitored assets are not overwritten, and that has to be said rather than implied.

null | string
changes

Field-by-field comparison for an item that would be updated. Populated only when bool CatalogImportOptionsDto.IncludeComparison is set.

Array<object>

One field an import would write, with the value already there beside the incoming one. Recorded as the importer assigns the field, so the comparison lists exactly the fields that can change and cannot drift from what an apply would do.

object
field

Property name as the operator would recognise it.

string
current

Rendered value in this environment before the import.

null | string
incoming

Rendered value the file would write.

null | string
isDifferent

Whether the two differ. False means the file restates a value already set.

boolean
Example
{
"conflictMode": "CreateOrUpdate",
"sections": [
{
"items": [
{
"action": "Created"
}
]
}
],
"products": {
"items": [
{
"action": "Created"
}
]
}
}

Bad 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"
}

Unauthorized

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"
}