Skip to content

BenefitDefinition

Public supported benefits; unknown families fail rather than silently disappearing.

const BenefitDefinition: Schema.toTaggedUnion<"type", readonly [Schema.Struct<{
entitlements: Schema.$Array<Schema.brand<Schema.String, "EntitlementKey">>;
type: Schema.tag<"entitlements">;
duration: Schema.Union<readonly [Schema.Literals<readonly [..., ...]>, Schema.Struct<{
type: Schema.tag<...>;
months: Schema.brand<..., ...>;
anchor: Schema.Literal<...>;
calendar: Schema.Literal<...>;
}>]>;
}>, Schema.Struct<{
entitlement: Schema.brand<Schema.String, "EntitlementKey">;
activationLimit: Schema.Int;
type: Schema.tag<"license_eligibility">;
validity: Schema.withConstructorDefault<Schema.Literal<"while_entitled">>;
}>, Schema.Struct<{
type: Schema.tag<"download">;
asset: Schema.Struct<{
key: Schema.brand<Schema.String, "DownloadAssetKey">;
revision: Schema.brand<Schema.Int, "DefinitionRevision">;
}>;
duration: Schema.Union<readonly [Schema.Literals<readonly [..., ...]>, Schema.Struct<{
type: Schema.tag<...>;
months: Schema.brand<..., ...>;
anchor: Schema.Literal<...>;
calendar: Schema.Literal<...>;
}>]>;
}>, Schema.Struct<{
unit: Schema.brand<Schema.String, "UsageUnitKey">;
quantity: Schema.brand<Schema.BigInt, "UsageCreditQuantity">;
expiry: Schema.Literal<"never">;
type: Schema.tag<"usage_credits">;
}>, Schema.Struct<{
pool: Schema.brand<Schema.String, "SeatPoolKey">;
quantity: Schema.Union<readonly [Schema.brand<Schema.Int, "SeatCapacityQuantity">, Schema.Literal<"purchase_quantity">]>;
entitlement: Schema.brand<Schema.String, "EntitlementKey">;
validity: Schema.Literal<"while_entitled">;
type: Schema.tag<"seat_capacity">;
}>, Schema.Struct<{
entitlement: Schema.brand<Schema.String, "EntitlementKey">;
validity: Schema.Literal<"while_entitled">;
type: Schema.tag<"external_fulfillment">;
binding: Schema.Struct<{
key: Schema.brand<Schema.String, "FulfillmentBindingKey">;
revision: Schema.brand<Schema.Int, "DefinitionRevision">;
}>;
}>, Schema.Struct<{
recipient: Schema.Literal<"customer">;
trigger: Schema.Literal<"eligible_settlement">;
type: Schema.tag<"download_email">;
asset: Schema.Struct<{
key: Schema.brand<Schema.String, "DownloadAssetKey">;
revision: Schema.brand<Schema.Int, "DefinitionRevision">;
}>;
}>, Schema.Struct<{
resource: Schema.brand<Schema.String, "ResourceLimitKey">;
quantity: Schema.brand<Schema.Int, "ResourceLimitQuantity">;
entitlement: Schema.brand<Schema.String, "EntitlementKey">;
validity: Schema.Literal<"while_entitled">;
type: Schema.tag<"resource_limit">;
}>]>;