---
title: "Get ruleset (V2)"
method: GET
path: "/v2/applications/{applicationId}/campaigns/{campaignId}/rulesets/{rulesetId}"
tags: ["Campaigns"]
---

# Get ruleset (V2)

`GET /v2/applications/{applicationId}/campaigns/{campaignId}/rulesets/{rulesetId}`

## Request

- Base URL: `https://yourbaseurl.talon.one`
- URL: `https://yourbaseurl.talon.one/v2/applications/{applicationId}/campaigns/{campaignId}/rulesets/{rulesetId}`
- Auth: one of:
  - API key in header `Authorization`
  - API key in header `Authorization`
- TypeScript: <https://skmtc.dev/talon/apis/management-api/docs/v2/applications/:applicationId/campaigns/:campaignId/rulesets/:rulesetId/get.ts> (a function with typed inputs; its response is checked against the schema)

> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.

Retrieve the specified ruleset as a JSON object.

## Path parameters

- `applicationId` integer, required
- `campaignId` integer, required
- `rulesetId` integer, required

## Response `200`

OK

- RulesetV2: Ruleset in the V2 JSON block format.
  - `id` integer: Internal ID of this entity.
  - `created` string, date-time: The time this entity was created.
  - `userId` integer: The ID of the user that created this ruleset.
  - `campaignId` integer: The ID of the campaign that owns this entity.
  - `templateId` integer: The ID of the campaign template that owns this entity.
  - `activatedAt` string, date-time: Timestamp indicating when this ruleset was activated.
  - `promotionRules` RuleV2[], required: Set of promotion rules.
    - `id` string: Unique identifier of the rule.
    - `parentId` string: ID of the parent rule, if any.
    - `title` string, required: A short description of the rule.
    - `description` string: A longer description of the rule.
    - `blocks` Block[], required: The condition and effect blocks that make up this rule.
      - union: Describes a part of the logic of the rule.
        - GroupBlock: A structural combinator block that groups child blocks using a logical operator. Evaluates to true when its operator condition is satisfied across all child blocks.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'all' | 'atLeastOne' | 'none', required: Logical operator applied across child blocks. `all` requires every child to pass, `atLeastOne` requires at least one, `none` requires all to fail.
          - `blocks` Block[], required: Child blocks evaluated according to the operator.
          - `onFailure` Block[]: Blocks evaluated when this block fails or returns false.
          - `onError` object: Named error handlers evaluated when a specific error occurs.
        - AwardDiscountBlock: A block that grants a discount when its rule conditions evaluate to `true`. The `target` field determines what the discount applies to (the whole cart, a subset of items, a bundle, an additional cost, etc.); the `value` field is the discount amount.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `name` string, required: The human-readable label attached to the discount.
          - `value` union, required: Discount amount. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `partial` boolean, required: Whether to apply a partial discount when the requested value exceeds the configured budget.
          - `target` union, required: Identifies the scope a discount applies to. The `type` field selects the concrete target variant.
            - AwardDiscountCartTarget: Applies the discount to the entire cart as a single unit.
              - …
            - AwardDiscountAllItemsTarget: Applies the discount across all cart items.
              - …
            - AwardDiscountGlobalFilterTarget: Applies the discount to items matched by a named Application-level cart-item filter.
              - …
            - AwardDiscountSelectorTarget: Applies the discount to items matched by a named selector binding.
              - …
            - AwardDiscountBundleTarget: Applies the discount to items belonging to a named bundle.
              - …
            - AwardDiscountAdditionalCostTarget: Applies the discount to an additional cost. The `target` field determines which subset of cart items the additional cost contribution is applied to.
              - …
        - PassthroughBlock: A block representing a Talang expression that could not be mapped to a typed block. The expression is preserved in its raw Talang array form for diagnostic and round-trip purposes.
          - `id` string: Unique identifier for this block.
          - `type` 'passthrough', required: The type discriminator for this block.
          - `expression` unknown[], required: The raw Talang expression as an array. For a function call, the first element is the function name and subsequent elements are its arguments. For any other expression (for example a bare attribute path or a literal value), this is a single-element array containing that value.
            - unknown
        - ShowNotificationBlock: A block that displays a notification to the customer with a configurable type, title, and body message.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `notificationType` string, required: The type of notification to display.
          - `title` string, required: The notification heading shown to the customer.
          - `body` string, required: The notification body text. Supports template placeholders (e.g. "{{$Session.Total}}") evaluated at rule execution time.
          - `onError` object: Named error handlers evaluated when a specific error occurs.
        - AwardItemBlock: A block that awards a free cart item to the customer. The item is identified by SKU and name and has a configurable quantity.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `sku` string, required: The stock keeping unit of the item to award.
          - `name` string, required: The display name of the item to award.
          - `quantity` string, required: The number of items to award. Supports template placeholders (e.g. "{{$Session.Total / 2}}") for dynamic quantities.
          - `partial` boolean: When set to `true`, applies a partial item reward if the remaining budget is insufficient to award the full reward. When omitted, the Application's partial discounts setting applies.
          - `onFailure` Block[]: Blocks evaluated when this block fails or returns false.
          - `onError` object: Named error handlers evaluated when a specific error occurs.
        - AwardGiveawayBlock: A block that awards a giveaway item from a configured giveaway pool to the specified customer profile.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `giveawayPool` GiveawayPoolBlockReference, required: The giveaway pool from which a giveaway is awarded.
            - `id` integer, required: The unique identifier of the giveaway pool.
            - `name` string: The display name of the giveaway pool.
          - `profile` 'Current' | 'Advocate', required: The customer profile to award the giveaway to. `Current` targets the customer in the current session; `Advocate` targets the person who invited their friend via referral program.
          - `onError` object: Named error handlers evaluated when a specific error occurs.
        - union
          - object: Variant of `CheckAttributeBlock` for operators that compare an attribute against a single value.
            - `id` string: Unique identifier for this block.
            - `type` 'checkAttribute', required: A block discriminator of type `checkAttribute`.
            - `tags` string[]: Semantic labels attached to this block.
            - `operator` 'equals' | 'not(equals)' | 'lessThan' | 'lessThanOrEqual' | 'greaterThan' | 'greaterThanOrEqual' | 'contains' | 'not(contains)' | 'matchesRegexp' | 'startsWith' | 'endsWith' | 'oneOf' | 'not(oneOf)' | 'inCollection' | 'not(inCollection)' | 'after' | 'before', required: The comparison operator applied to the attribute.
            - `attribute` string, required: The attribute path identifier (e.g. "$Session.Total").
            - `value` unknown, required
            - `min` unknown
            - `max` unknown
            - `start` string: The start value for the `within` operator.
            - `end` string: The end value for the `within` operator.
            - `startInclusive` boolean: When `true`, the `start` value is included in the range for the `within` operator.
            - `endInclusive` boolean: When `true`, the `end` value is included in the range for the `within` operator.
            - `timezoneInsensitive` boolean: Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account.
            - `values` unknown
            - `count` unknown
            - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
          - object: Variant of `CheckAttributeBlock` for the `between` operator, which requires both a minimum and maximum value.
            - `id` string: Unique identifier for this block.
            - `type` 'checkAttribute', required: A block discriminator of type `checkAttribute`.
            - `tags` string[]: Semantic labels attached to this block.
            - `operator` 'between', required: The range comparison operator. Must be `between`.
            - `attribute` string, required: The attribute path identifier (e.g. "$Session.Total").
            - `value` unknown
            - `min` unknown, required
            - `max` unknown, required
            - `start` string: The start value for the `within` operator.
            - `end` string: The end value for the `within` operator.
            - `startInclusive` boolean: When `true`, the `start` value is included in the range for the `within` operator.
            - `endInclusive` boolean: When `true`, the `end` value is included in the range for the `within` operator.
            - `timezoneInsensitive` boolean: Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account.
            - `values` unknown
            - `count` unknown
            - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
          - object: Variant of `CheckAttributeBlock` for operators that test list membership against a set of values.
            - `id` string: Unique identifier for this block.
            - `type` 'checkAttribute', required: A block discriminator of type `checkAttribute`.
            - `tags` string[]: Semantic labels attached to this block.
            - `operator` 'containsOneOf' | 'containsNoneOf' | 'containsAllOf', required: The list membership operator applied to the attribute.
            - `attribute` string, required: The attribute path identifier (e.g. "$Session.Total").
            - `value` unknown
            - `min` unknown
            - `max` unknown
            - `start` string: The start value for the `within` operator.
            - `end` string: The end value for the `within` operator.
            - `startInclusive` boolean: When `true`, the `start` value is included in the range for the `within` operator.
            - `endInclusive` boolean: When `true`, the `end` value is included in the range for the `within` operator.
            - `timezoneInsensitive` boolean: Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account.
            - `values` unknown, required
            - `count` unknown
            - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
          - object: Variant of `CheckAttributeBlock` for operators that test list membership with a minimum or exact count threshold.
            - `id` string: Unique identifier for this block.
            - `type` 'checkAttribute', required: A block discriminator of type `checkAttribute`.
            - `tags` string[]: Semantic labels attached to this block.
            - `operator` 'containsAtLeast' | 'containsExactly', required: The list membership operator with a count threshold applied to the attribute.
            - `attribute` string, required: The attribute path identifier (e.g. "$Session.Total").
            - `value` unknown
            - `min` unknown
            - `max` unknown
            - `start` string: The start value for the `within` operator.
            - `end` string: The end value for the `within` operator.
            - `startInclusive` boolean: When `true`, the `start` value is included in the range for the `within` operator.
            - `endInclusive` boolean: When `true`, the `end` value is included in the range for the `within` operator.
            - `timezoneInsensitive` boolean: Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account.
            - `values` unknown, required
            - `count` unknown, required
            - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
          - object: Variant of `CheckAttributeBlock` for operators that test a property of the attribute itself with no comparison value.
            - `id` string: Unique identifier for this block.
            - `type` 'checkAttribute', required: A block discriminator of type `checkAttribute`.
            - `tags` string[]: Semantic labels attached to this block.
            - `operator` 'empty' | 'not(empty)' | 'exists' | 'not(exists)' | 'isTrue' | 'isFalse', required: The unary operator applied to the attribute. These operators require no comparison value.
            - `attribute` string, required: The attribute path identifier (e.g. "$Session.Total").
            - `value` unknown
            - `min` unknown
            - `max` unknown
            - `start` string: The start value for the `within` operator.
            - `end` string: The end value for the `within` operator.
            - `startInclusive` boolean: When `true`, the `start` value is included in the range for the `within` operator.
            - `endInclusive` boolean: When `true`, the `end` value is included in the range for the `within` operator.
            - `timezoneInsensitive` boolean: Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account.
            - `values` unknown
            - `count` unknown
            - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
          - object: Variant of `CheckAttributeBlock` for the `within` and `not(within)` operators, which require both a start and end value.
            - `id` string: Unique identifier for this block.
            - `type` 'checkAttribute', required: A block discriminator of type `checkAttribute`.
            - `tags` string[]: Semantic labels attached to this block.
            - `operator` 'within' | 'not(within)', required: The range comparison operator. Must be `within` or `not(within)`.
            - `attribute` string, required: The attribute path identifier (e.g. "$Session.Total").
            - `value` unknown
            - `min` unknown
            - `max` unknown
            - `start` string, required: The start value for the `within` operator.
            - `end` string, required: The end value for the `within` operator.
            - `startInclusive` boolean: When `true`, the `start` value is included in the range for the `within` operator.
            - `endInclusive` boolean: When `true`, the `end` value is included in the range for the `within` operator.
            - `timezoneInsensitive` boolean: Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account.
            - `values` unknown
            - `count` unknown
            - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
          - object: A block variant of `CheckAttributeBlock` for operators that check whether a geographical location is inside a set of geometric areas.
            - `id` string: Unique identifier for this block.
            - `type` 'checkAttribute', required: A block discriminator of type `checkAttribute`.
            - `tags` string[]: Semantic labels attached to this block.
            - `operator` 'in' | 'not(in)', required: The location membership operator applied to the attribute.
            - `attribute` string, required: The attribute path identifier (e.g. "$Session.Total").
            - `value` unknown
            - `min` unknown
            - `max` unknown
            - `start` string: The start value for the `within` operator.
            - `end` string: The end value for the `within` operator.
            - `startInclusive` boolean: When `true`, the `start` value is included in the range for the `within` operator.
            - `endInclusive` boolean: When `true`, the `end` value is included in the range for the `within` operator.
            - `timezoneInsensitive` boolean: Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account.
            - `values` union, required
              - …
            - `count` unknown
            - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CheckAudienceBlock: A block that checks whether a given customer profile is a member of an audience.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'member' | 'not(member)' | 'justJoined' | 'justLeft', required: An indicator of how the block compares its elements.
          - `profile` 'Current' | 'Advocate': The customer profile to check against the audience. `Current` targets the customer in the current session; `Advocate` targets the person who invited their friend via referral program. Only applies to the `member` and `not(member)` operators; ignored for `justJoined` and `justLeft`.
          - `audience` AudienceBlockReference, required: The audience to check the profile against.
            - `id` integer, required: The ID of the audience.
            - `name` string: The display name of the audience.
            - `integration` string: The Talon.One-supported [3rd-party platform](https://docs.talon.one/docs/dev/technology-partners/overview) that this audience was created in. For example, `mParticle`, `Segment`, `Shopify`, `Braze`, or `Iterable`. **Note:** If you do not integrate with any of these platforms, do not use this property.
            - `integrationId` string: The ID of this audience in the third-party integration. **Note:** To create an audience that doesn't come from a 3rd party platform, do not use this property.
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CheckLoyaltyBalanceBlock: A block that checks a specific loyalty program's ledger or subledger balance against a numeric value.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'equals' | 'not(equals)' | 'lessThan' | 'lessThanOrEqual' | 'greaterThan' | 'greaterThanOrEqual', required: An indicator of how the block compares the balance to the value.
          - `program` object, required: The loyalty program whose ledger balance is checked.
            - `id` integer, required: The ID of the loyalty program.
            - `name` string: The internal name of the loyalty program.
            - `title` string: The display name of the loyalty program.
          - `subledger` string, required: The name of the subledger to check the balance of. Can be empty if this block checks the loyalty program's main ledger balance instead of a subledger. A subledger can only be used when the loyalty program has subledgers enabled.
          - `balance` 'current' | 'pending' | 'negative' | 'tentativeCurrent', required: The type of balance to check: - `current` is the sum of currently active points - `pending` is the sum of pending points. - `negative` is the sum of negative points. It cannot be used with a subledger. - `tentativeCurrent` is the tentative points balance within the current open customer session.
          - `value` number, required: The numeric value to compare the balance against.
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CheckCouponBlock: A block that validates the coupon code value and date.
          - `id` string: Unique identifier for this block.
          - `type` 'checkCoupon', required: A block discriminator of type `checkCoupon`.
          - `tags` string[]: Semantic labels attached to this block.
          - `redeem` boolean, required: When `true`, the coupon code is redeemed.
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CheckReferralBlock: A block that validates the referral code value and date.
          - `id` string: Unique identifier for this block.
          - `type` 'checkReferral', required: A block discriminator of type `checkReferral`.
          - `tags` string[]: Semantic labels attached to this block.
          - `redeem` boolean, required: When `true`, the referral code is redeemed.
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - UpdateAudienceMembershipBlock: A block that adds a customer to or removes them from an audience.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'add' | 'remove', required: The action to perform.
          - `profile` 'Current' | 'Advocate', required: The customer profile to add or remove from the audience. `Current` targets the customer in the current session; `Advocate` targets the person who invited their friend via referral program.
          - `audience` AudienceBlockReference, required: The audience to check the profile against.
            - `id` integer, required: The ID of the audience.
            - `name` string: The display name of the audience.
            - `integration` string: The Talon.One-supported [3rd-party platform](https://docs.talon.one/docs/dev/technology-partners/overview) that this audience was created in. For example, `mParticle`, `Segment`, `Shopify`, `Braze`, or `Iterable`. **Note:** If you do not integrate with any of these platforms, do not use this property.
            - `integrationId` string: The ID of this audience in the third-party integration. **Note:** To create an audience that doesn't come from a 3rd party platform, do not use this property.
        - UpdateAchievementProgressBlock: A block that updates the progress of a customer in an achievement.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'increaseBy', required
          - `value` union, required: The value to update the progress by. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `achievement` AchievementBlockReference, required: The achievement to check for.
            - `id` integer, required: The ID of the achievement.
            - `title` string: The display name for the achievement in the Campaign Manager.
            - `name` string: The internal name of the achievement used in API requests.
            - `target` number: The required number of actions or the transactional milestone to complete the achievement.
        - UpdateAttributeValueBlock: A block that sets or updates an attribute. The `type` may be empty for [built-in attributes](https://docs.talon.one/docs/dev/concepts/attributes).
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'setTo' | 'increaseBy' | 'decreaseBy' | 'multiplyBy' | 'divideBy' | 'toggle' | 'laterBy' | 'earlierBy', required: The update operation applied to the attribute.
          - `attribute` AttributeBlockReference, required: The attribute being updated.
            - `id` integer, required: The internal ID of the attribute. Reverts to `0` when the attribute is deleted or does not exist.
            - `entity` string, required: The entity type that owns the attribute. Reverts to an empty string when the attribute is deleted or does not exist.
            - `name` string, required: The attribute name as used in API requests.
            - `title` string: The human-readable name of the attribute.
            - `type` string: The data type of the attribute.
          - `value` unknown
          - `target` object, required: The entity or item scope that this effect operates on.
            - `type` 'session' | 'profile' | 'advocateProfile' | 'coupon' | 'referral' | 'event' | 'loyaltyCard' | 'allItems' | 'selector' | 'globalFilter', required: Identifies the target scope of the attribute update.
            - `name` string: Identifies the name of the target when its type is set to `selector` or `globalFilter`.
        - TriggerWebhookBlock: A block that triggers a configured webhook and passes its required parameters.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `webhook` WebhookBlockReference, required: The webhook to trigger.
            - `id` integer, required: The unique identifier of the webhook.
            - `title` string: The display name of the webhook.
          - `params` object: The webhook's parameters, in configured order. Each property name is the parameter's title, lowercased with spaces replaced by underscores (for example, `Order ID` becomes `order_id`); falls back to `param_0`, `param_1`, and so on if a title is blank or collides with another.
          - `onError` object: Named error handlers evaluated when a specific error occurs.
        - TriggerCustomEffectBlock: A block that triggers a configured custom effect and passes its required parameters.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `customEffect` CustomEffectBlockReference, required: The custom effect to trigger.
            - `id` integer, required: The unique identifier of the custom effect.
            - `name` string: The name of the custom effect, as used in API requests.
            - `title` string: The display name of the custom effect.
          - `params` object: The custom effect's parameters, in configured order. Each property name is the parameter's title, lowercased with spaces replaced by underscores (for example, `Order ID` becomes `order_id`); falls back to `param_0`, `param_1`, and so on if a title is blank or collides with another.
          - `target` object, required: The target scope of this effect.
            - `type` 'cart' | 'allItems' | 'selector' | 'globalFilter' | 'bundle', required: The scope the custom effect applies to: - `cart` applies once to the whole cart. - `allItems` applies once per cart item. - `selector` applies once per item matched by the named selector. - `globalFilter` applies once per item matched by the named global item filter. - `bundle` applies once per item in the named bundle.
            - `name` string: The name of the targeted selector or bundle. Only set when `type` is `selector`, `globalFilter`, or `bundle`.
          - `onError` object: Named error handlers evaluated when a specific error occurs.
        - CheckEventBlock: A block that validates the event type.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `eventType` string, required: The event type to check against.
          - `matchers` Block[]
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CheckAchievementBlock: A block that checks the current customer's completion or progress status in an achievement.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'justCompleted' | 'started' | 'not(started)' | 'inProgress' | 'not(inProgress)' | 'completed' | 'not(completed)', required: The comparison operator applied to the achievement.
          - `achievement` AchievementBlockReference, required: The achievement to check for.
            - `id` integer, required: The ID of the achievement.
            - `title` string: The display name for the achievement in the Campaign Manager.
            - `name` string: The internal name of the achievement used in API requests.
            - `target` number: The required number of actions or the transactional milestone to complete the achievement.
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CheckBudgetBlock: A block that verifies if a specific budget has sufficient limit available, and whether this limit meets or exceeds a specific value.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'available' | 'enoughFor', required: The comparison operator applied to the limit. `available` checks if there is budget available for a given limitable action; `enoughFor` checks if the available budget meets or exceeds a specific value limit.
          - `action` 'redeemCoupon' | 'redeemReferral' | 'setDiscount' | 'createCoupon' | 'createReferral' | 'setDiscountEffect' | 'createLoyaltyPoints' | 'createLoyaltyPointsEffect' | 'redeemLoyaltyPoints' | 'redeemLoyaltyPointsEffect' | 'awardGiveaway' | 'addFreeItemEffect' | 'customEffect' | 'callApi', required: The limitable action to check.
          - `value` number: The value to check against when using the `enoughFor` operator.
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CreateCouponBlock: A block that creates a coupon code.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `campaignId` union, required: The ID of the campaign in which the coupon code is created.
            - number
            - string
          - `recipientId` string, required: The integration ID of the customer that is allowed to redeem this coupon.
          - `storeInSession` boolean, required: When `true`, the coupon is stored in the session.
          - `usageLimit` union: The number of times the coupon code can be redeemed. `0` means unlimited redemptions, but any campaign usage limits still apply. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `discountLimit` union: The total discount value that the code can give. Typically used to represent a gift card value. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `startDate` string: Timestamp at which point the coupon becomes valid.
          - `expiryDate` string: Expiration date of the coupon. Coupon never expires if this is omitted.
          - `attributes` unknown
          - `validCharacters` string: Characters used to generate the random parts of a code.
          - `pattern` string: The pattern used to generate codes, such as coupon codes, referral codes, and loyalty cards. The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set.
        - CreateReferralBlock: A block that creates a referral code.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `campaignId` union, required: The ID of the campaign in which the referral code is created. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `friendId` string, required: An optional integration ID of the friend's profile.
          - `storeInSession` boolean, required: When `true`, the referral code is stored in the session.
          - `usageLimit` union: The number of times the referral code code can be redeemed. `0` means unlimited redemptions, but any campaign usage limits still apply. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `startDate` string: Timestamp at which point the referral code becomes valid.
          - `expiryDate` string: Expiration date of the referral code. Referral code never expires if this is omitted.
          - `attributes` unknown
          - `validCharacters` string: Characters used to generate the random parts of a code.
          - `pattern` string: The pattern used to generate codes, such as coupon codes, referral codes, and loyalty cards. The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set.
        - ReserveCouponBlock: A block that reserve a coupon during a customer session.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
        - UpdateLoyaltyPointsExpiryBlock: A block that changes the expiry date of a customer's existing loyalty points, either to an absolute date or by extending it relative to the current expiry date.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'setTo' | 'laterBy', required: `setTo` sets the expiry to an exact date; `laterBy` extends the current expiry by a relative duration.
          - `program` object, required: The loyalty program whose points' expiry is changed.
            - `id` integer, required: The ID of the loyalty program.
            - `name` string: The internal name of the loyalty program.
            - `title` string: The display name of the loyalty program.
          - `recipient` 'Current' | 'Advocate', required: The customer profile whose points are affected. `Current` targets the customer in the current session; `Advocate` targets the person who invited their friend via referral program.
          - `subledger` string, required: The name of the subledger whose points' expiry is changed. Can be empty if this block targets the loyalty program's main ledger instead of a subledger.
          - `value` string, required: An absolute expiry date (ISO 8601) when `operator` is `setTo`, or a relative duration (e.g. `30D`) when `operator` is `laterBy`.
          - `onFailure` Block[]: Blocks evaluated when this block fails or returns false.
        - CheckLoyaltyCardBlock: A block that verifies whether a loyalty card is linked to the user's profile.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'linked' | 'not(linked)', required: An indicator of how the block compares its elements.
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CheckTierBlock: A block that checks whether a customer profile is a member of a specific tier in a loyalty program.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'member' | 'not(member)', required: An indicator of how the block compares its elements.
          - `subledger` string, required: The name of the subledger to check a customer's tier in. Can be empty if this block checks the loyalty program's main ledger instead of a subledger. A subledger can only be used when the loyalty program that the tier is in has subledgers enabled. To specify the main ledger, provide an empty string ("").
          - `tier` TierBlockReference, required
            - `id` integer, required: The ID of the tier.
            - `name` string, required: The display name of the tier.
            - `minPoints` number, required: The minimum amount of points required to enter the tier.
            - `upperLimit` number
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - AwardLoyaltyPointsBlock: A block that adds loyalty points to a loyalty program and subledger for a recipient. The `target` field determines what the award is based on (the whole cart, a subset of items, or a bundle); the `value` field is the number of awarded points.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `name` string, required: The human-readable label attached to the awarded points.
          - `program` object, required: The loyalty program points are added to.
            - `id` integer, required: The ID of the loyalty program.
            - `name` string: The internal name of the loyalty program.
            - `title` string: The display name of the loyalty program.
          - `recipient` 'Current' | 'Advocate', required: The customer profile that receives the points. `Current` targets the customer in the current session; `Advocate` targets the person who invited their friend via referral program.
          - `subledger` string, required: The name of the subledger to add points to. Can be empty if this block adds points to the loyalty program's main ledger instead of a subledger.
          - `target` union, required: Identifies the scope over which loyalty points are awarded. The `type` field selects the target variant.
            - AwardLoyaltyPointsCartTarget: Awards points to the entire cart as a single unit.
              - …
            - AwardLoyaltyPointsAllItemsTarget: Awards points per item in the cart.
              - …
            - AwardLoyaltyPointsGlobalFilterTarget: Awards points per item in a globally filtered subset of items.
              - …
            - AwardLoyaltyPointsSelectorTarget: Awards points per item in a specific selector.
              - …
            - AwardLoyaltyPointsBundleTarget: Awards points based on bundle contents.
              - …
          - `value` union, required: Number of points to award. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `partial` boolean: When `true`, applies a partial points reward when the requested value exceeds the configured budget.
          - `awaitsActivation` boolean: When `true`, the awarded points require manual or delayed activation before becoming active. Mutually exclusive with `startDate`.
          - `startDate` string: Timestamp at which the awarded points become active. Mutually exclusive with `awaitsActivation`.
          - `validityDuration` string: Relative duration (e.g. `30D`) after which the awarded points expire. Mutually exclusive with `expiryDate`.
          - `expiryDate` string: Timestamp at which the awarded points expire. Mutually exclusive with `validityDuration`.
          - `pendingDuration` string: Relative duration (e.g. `3D`) the awarded points remain pending before activation.
        - RedeemLoyaltyPointsBlock: A block that deducts a specified amount of points from a customer's loyalty program balance, optionally from a named subledger.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `program` object, required: The loyalty program whose balance points are deducted from.
            - `id` integer, required: The ID of the loyalty program.
            - `name` string: The internal name of the loyalty program.
            - `title` string: The display name of the loyalty program.
          - `subledger` string, required: The name of the subledger to deduct points from. Can be empty if this block deducts from the loyalty program's main ledger instead of a subledger.
          - `value` union, required: Number of points to deduct. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `name` string: A custom description recorded as the reason for the point deduction.
  - `strikethroughRules` RuleV2[]: Set of strikethrough rules.
    - `id` string: Unique identifier of the rule.
    - `parentId` string: ID of the parent rule, if any.
    - `title` string, required: A short description of the rule.
    - `description` string: A longer description of the rule.
    - `blocks` Block[], required: The condition and effect blocks that make up this rule.
      - union: Describes a part of the logic of the rule.
        - GroupBlock: A structural combinator block that groups child blocks using a logical operator. Evaluates to true when its operator condition is satisfied across all child blocks.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'all' | 'atLeastOne' | 'none', required: Logical operator applied across child blocks. `all` requires every child to pass, `atLeastOne` requires at least one, `none` requires all to fail.
          - `blocks` Block[], required: Child blocks evaluated according to the operator.
          - `onFailure` Block[]: Blocks evaluated when this block fails or returns false.
          - `onError` object: Named error handlers evaluated when a specific error occurs.
        - AwardDiscountBlock: A block that grants a discount when its rule conditions evaluate to `true`. The `target` field determines what the discount applies to (the whole cart, a subset of items, a bundle, an additional cost, etc.); the `value` field is the discount amount.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `name` string, required: The human-readable label attached to the discount.
          - `value` union, required: Discount amount. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `partial` boolean, required: Whether to apply a partial discount when the requested value exceeds the configured budget.
          - `target` union, required: Identifies the scope a discount applies to. The `type` field selects the concrete target variant.
            - AwardDiscountCartTarget: Applies the discount to the entire cart as a single unit.
              - …
            - AwardDiscountAllItemsTarget: Applies the discount across all cart items.
              - …
            - AwardDiscountGlobalFilterTarget: Applies the discount to items matched by a named Application-level cart-item filter.
              - …
            - AwardDiscountSelectorTarget: Applies the discount to items matched by a named selector binding.
              - …
            - AwardDiscountBundleTarget: Applies the discount to items belonging to a named bundle.
              - …
            - AwardDiscountAdditionalCostTarget: Applies the discount to an additional cost. The `target` field determines which subset of cart items the additional cost contribution is applied to.
              - …
        - PassthroughBlock: A block representing a Talang expression that could not be mapped to a typed block. The expression is preserved in its raw Talang array form for diagnostic and round-trip purposes.
          - `id` string: Unique identifier for this block.
          - `type` 'passthrough', required: The type discriminator for this block.
          - `expression` unknown[], required: The raw Talang expression as an array. For a function call, the first element is the function name and subsequent elements are its arguments. For any other expression (for example a bare attribute path or a literal value), this is a single-element array containing that value.
            - unknown
        - ShowNotificationBlock: A block that displays a notification to the customer with a configurable type, title, and body message.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `notificationType` string, required: The type of notification to display.
          - `title` string, required: The notification heading shown to the customer.
          - `body` string, required: The notification body text. Supports template placeholders (e.g. "{{$Session.Total}}") evaluated at rule execution time.
          - `onError` object: Named error handlers evaluated when a specific error occurs.
        - AwardItemBlock: A block that awards a free cart item to the customer. The item is identified by SKU and name and has a configurable quantity.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `sku` string, required: The stock keeping unit of the item to award.
          - `name` string, required: The display name of the item to award.
          - `quantity` string, required: The number of items to award. Supports template placeholders (e.g. "{{$Session.Total / 2}}") for dynamic quantities.
          - `partial` boolean: When set to `true`, applies a partial item reward if the remaining budget is insufficient to award the full reward. When omitted, the Application's partial discounts setting applies.
          - `onFailure` Block[]: Blocks evaluated when this block fails or returns false.
          - `onError` object: Named error handlers evaluated when a specific error occurs.
        - AwardGiveawayBlock: A block that awards a giveaway item from a configured giveaway pool to the specified customer profile.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `giveawayPool` GiveawayPoolBlockReference, required: The giveaway pool from which a giveaway is awarded.
            - `id` integer, required: The unique identifier of the giveaway pool.
            - `name` string: The display name of the giveaway pool.
          - `profile` 'Current' | 'Advocate', required: The customer profile to award the giveaway to. `Current` targets the customer in the current session; `Advocate` targets the person who invited their friend via referral program.
          - `onError` object: Named error handlers evaluated when a specific error occurs.
        - union
          - object: Variant of `CheckAttributeBlock` for operators that compare an attribute against a single value.
            - `id` string: Unique identifier for this block.
            - `type` 'checkAttribute', required: A block discriminator of type `checkAttribute`.
            - `tags` string[]: Semantic labels attached to this block.
            - `operator` 'equals' | 'not(equals)' | 'lessThan' | 'lessThanOrEqual' | 'greaterThan' | 'greaterThanOrEqual' | 'contains' | 'not(contains)' | 'matchesRegexp' | 'startsWith' | 'endsWith' | 'oneOf' | 'not(oneOf)' | 'inCollection' | 'not(inCollection)' | 'after' | 'before', required: The comparison operator applied to the attribute.
            - `attribute` string, required: The attribute path identifier (e.g. "$Session.Total").
            - `value` unknown, required
            - `min` unknown
            - `max` unknown
            - `start` string: The start value for the `within` operator.
            - `end` string: The end value for the `within` operator.
            - `startInclusive` boolean: When `true`, the `start` value is included in the range for the `within` operator.
            - `endInclusive` boolean: When `true`, the `end` value is included in the range for the `within` operator.
            - `timezoneInsensitive` boolean: Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account.
            - `values` unknown
            - `count` unknown
            - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
          - object: Variant of `CheckAttributeBlock` for the `between` operator, which requires both a minimum and maximum value.
            - `id` string: Unique identifier for this block.
            - `type` 'checkAttribute', required: A block discriminator of type `checkAttribute`.
            - `tags` string[]: Semantic labels attached to this block.
            - `operator` 'between', required: The range comparison operator. Must be `between`.
            - `attribute` string, required: The attribute path identifier (e.g. "$Session.Total").
            - `value` unknown
            - `min` unknown, required
            - `max` unknown, required
            - `start` string: The start value for the `within` operator.
            - `end` string: The end value for the `within` operator.
            - `startInclusive` boolean: When `true`, the `start` value is included in the range for the `within` operator.
            - `endInclusive` boolean: When `true`, the `end` value is included in the range for the `within` operator.
            - `timezoneInsensitive` boolean: Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account.
            - `values` unknown
            - `count` unknown
            - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
          - object: Variant of `CheckAttributeBlock` for operators that test list membership against a set of values.
            - `id` string: Unique identifier for this block.
            - `type` 'checkAttribute', required: A block discriminator of type `checkAttribute`.
            - `tags` string[]: Semantic labels attached to this block.
            - `operator` 'containsOneOf' | 'containsNoneOf' | 'containsAllOf', required: The list membership operator applied to the attribute.
            - `attribute` string, required: The attribute path identifier (e.g. "$Session.Total").
            - `value` unknown
            - `min` unknown
            - `max` unknown
            - `start` string: The start value for the `within` operator.
            - `end` string: The end value for the `within` operator.
            - `startInclusive` boolean: When `true`, the `start` value is included in the range for the `within` operator.
            - `endInclusive` boolean: When `true`, the `end` value is included in the range for the `within` operator.
            - `timezoneInsensitive` boolean: Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account.
            - `values` unknown, required
            - `count` unknown
            - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
          - object: Variant of `CheckAttributeBlock` for operators that test list membership with a minimum or exact count threshold.
            - `id` string: Unique identifier for this block.
            - `type` 'checkAttribute', required: A block discriminator of type `checkAttribute`.
            - `tags` string[]: Semantic labels attached to this block.
            - `operator` 'containsAtLeast' | 'containsExactly', required: The list membership operator with a count threshold applied to the attribute.
            - `attribute` string, required: The attribute path identifier (e.g. "$Session.Total").
            - `value` unknown
            - `min` unknown
            - `max` unknown
            - `start` string: The start value for the `within` operator.
            - `end` string: The end value for the `within` operator.
            - `startInclusive` boolean: When `true`, the `start` value is included in the range for the `within` operator.
            - `endInclusive` boolean: When `true`, the `end` value is included in the range for the `within` operator.
            - `timezoneInsensitive` boolean: Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account.
            - `values` unknown, required
            - `count` unknown, required
            - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
          - object: Variant of `CheckAttributeBlock` for operators that test a property of the attribute itself with no comparison value.
            - `id` string: Unique identifier for this block.
            - `type` 'checkAttribute', required: A block discriminator of type `checkAttribute`.
            - `tags` string[]: Semantic labels attached to this block.
            - `operator` 'empty' | 'not(empty)' | 'exists' | 'not(exists)' | 'isTrue' | 'isFalse', required: The unary operator applied to the attribute. These operators require no comparison value.
            - `attribute` string, required: The attribute path identifier (e.g. "$Session.Total").
            - `value` unknown
            - `min` unknown
            - `max` unknown
            - `start` string: The start value for the `within` operator.
            - `end` string: The end value for the `within` operator.
            - `startInclusive` boolean: When `true`, the `start` value is included in the range for the `within` operator.
            - `endInclusive` boolean: When `true`, the `end` value is included in the range for the `within` operator.
            - `timezoneInsensitive` boolean: Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account.
            - `values` unknown
            - `count` unknown
            - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
          - object: Variant of `CheckAttributeBlock` for the `within` and `not(within)` operators, which require both a start and end value.
            - `id` string: Unique identifier for this block.
            - `type` 'checkAttribute', required: A block discriminator of type `checkAttribute`.
            - `tags` string[]: Semantic labels attached to this block.
            - `operator` 'within' | 'not(within)', required: The range comparison operator. Must be `within` or `not(within)`.
            - `attribute` string, required: The attribute path identifier (e.g. "$Session.Total").
            - `value` unknown
            - `min` unknown
            - `max` unknown
            - `start` string, required: The start value for the `within` operator.
            - `end` string, required: The end value for the `within` operator.
            - `startInclusive` boolean: When `true`, the `start` value is included in the range for the `within` operator.
            - `endInclusive` boolean: When `true`, the `end` value is included in the range for the `within` operator.
            - `timezoneInsensitive` boolean: Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account.
            - `values` unknown
            - `count` unknown
            - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
          - object: A block variant of `CheckAttributeBlock` for operators that check whether a geographical location is inside a set of geometric areas.
            - `id` string: Unique identifier for this block.
            - `type` 'checkAttribute', required: A block discriminator of type `checkAttribute`.
            - `tags` string[]: Semantic labels attached to this block.
            - `operator` 'in' | 'not(in)', required: The location membership operator applied to the attribute.
            - `attribute` string, required: The attribute path identifier (e.g. "$Session.Total").
            - `value` unknown
            - `min` unknown
            - `max` unknown
            - `start` string: The start value for the `within` operator.
            - `end` string: The end value for the `within` operator.
            - `startInclusive` boolean: When `true`, the `start` value is included in the range for the `within` operator.
            - `endInclusive` boolean: When `true`, the `end` value is included in the range for the `within` operator.
            - `timezoneInsensitive` boolean: Indicates whether the `within` operator ignores time zones and compares the wall-clock time only. When `false`, time zones are taken into account.
            - `values` union, required
              - …
            - `count` unknown
            - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CheckAudienceBlock: A block that checks whether a given customer profile is a member of an audience.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'member' | 'not(member)' | 'justJoined' | 'justLeft', required: An indicator of how the block compares its elements.
          - `profile` 'Current' | 'Advocate': The customer profile to check against the audience. `Current` targets the customer in the current session; `Advocate` targets the person who invited their friend via referral program. Only applies to the `member` and `not(member)` operators; ignored for `justJoined` and `justLeft`.
          - `audience` AudienceBlockReference, required: The audience to check the profile against.
            - `id` integer, required: The ID of the audience.
            - `name` string: The display name of the audience.
            - `integration` string: The Talon.One-supported [3rd-party platform](https://docs.talon.one/docs/dev/technology-partners/overview) that this audience was created in. For example, `mParticle`, `Segment`, `Shopify`, `Braze`, or `Iterable`. **Note:** If you do not integrate with any of these platforms, do not use this property.
            - `integrationId` string: The ID of this audience in the third-party integration. **Note:** To create an audience that doesn't come from a 3rd party platform, do not use this property.
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CheckLoyaltyBalanceBlock: A block that checks a specific loyalty program's ledger or subledger balance against a numeric value.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'equals' | 'not(equals)' | 'lessThan' | 'lessThanOrEqual' | 'greaterThan' | 'greaterThanOrEqual', required: An indicator of how the block compares the balance to the value.
          - `program` object, required: The loyalty program whose ledger balance is checked.
            - `id` integer, required: The ID of the loyalty program.
            - `name` string: The internal name of the loyalty program.
            - `title` string: The display name of the loyalty program.
          - `subledger` string, required: The name of the subledger to check the balance of. Can be empty if this block checks the loyalty program's main ledger balance instead of a subledger. A subledger can only be used when the loyalty program has subledgers enabled.
          - `balance` 'current' | 'pending' | 'negative' | 'tentativeCurrent', required: The type of balance to check: - `current` is the sum of currently active points - `pending` is the sum of pending points. - `negative` is the sum of negative points. It cannot be used with a subledger. - `tentativeCurrent` is the tentative points balance within the current open customer session.
          - `value` number, required: The numeric value to compare the balance against.
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CheckCouponBlock: A block that validates the coupon code value and date.
          - `id` string: Unique identifier for this block.
          - `type` 'checkCoupon', required: A block discriminator of type `checkCoupon`.
          - `tags` string[]: Semantic labels attached to this block.
          - `redeem` boolean, required: When `true`, the coupon code is redeemed.
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CheckReferralBlock: A block that validates the referral code value and date.
          - `id` string: Unique identifier for this block.
          - `type` 'checkReferral', required: A block discriminator of type `checkReferral`.
          - `tags` string[]: Semantic labels attached to this block.
          - `redeem` boolean, required: When `true`, the referral code is redeemed.
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - UpdateAudienceMembershipBlock: A block that adds a customer to or removes them from an audience.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'add' | 'remove', required: The action to perform.
          - `profile` 'Current' | 'Advocate', required: The customer profile to add or remove from the audience. `Current` targets the customer in the current session; `Advocate` targets the person who invited their friend via referral program.
          - `audience` AudienceBlockReference, required: The audience to check the profile against.
            - `id` integer, required: The ID of the audience.
            - `name` string: The display name of the audience.
            - `integration` string: The Talon.One-supported [3rd-party platform](https://docs.talon.one/docs/dev/technology-partners/overview) that this audience was created in. For example, `mParticle`, `Segment`, `Shopify`, `Braze`, or `Iterable`. **Note:** If you do not integrate with any of these platforms, do not use this property.
            - `integrationId` string: The ID of this audience in the third-party integration. **Note:** To create an audience that doesn't come from a 3rd party platform, do not use this property.
        - UpdateAchievementProgressBlock: A block that updates the progress of a customer in an achievement.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'increaseBy', required
          - `value` union, required: The value to update the progress by. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `achievement` AchievementBlockReference, required: The achievement to check for.
            - `id` integer, required: The ID of the achievement.
            - `title` string: The display name for the achievement in the Campaign Manager.
            - `name` string: The internal name of the achievement used in API requests.
            - `target` number: The required number of actions or the transactional milestone to complete the achievement.
        - UpdateAttributeValueBlock: A block that sets or updates an attribute. The `type` may be empty for [built-in attributes](https://docs.talon.one/docs/dev/concepts/attributes).
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'setTo' | 'increaseBy' | 'decreaseBy' | 'multiplyBy' | 'divideBy' | 'toggle' | 'laterBy' | 'earlierBy', required: The update operation applied to the attribute.
          - `attribute` AttributeBlockReference, required: The attribute being updated.
            - `id` integer, required: The internal ID of the attribute. Reverts to `0` when the attribute is deleted or does not exist.
            - `entity` string, required: The entity type that owns the attribute. Reverts to an empty string when the attribute is deleted or does not exist.
            - `name` string, required: The attribute name as used in API requests.
            - `title` string: The human-readable name of the attribute.
            - `type` string: The data type of the attribute.
          - `value` unknown
          - `target` object, required: The entity or item scope that this effect operates on.
            - `type` 'session' | 'profile' | 'advocateProfile' | 'coupon' | 'referral' | 'event' | 'loyaltyCard' | 'allItems' | 'selector' | 'globalFilter', required: Identifies the target scope of the attribute update.
            - `name` string: Identifies the name of the target when its type is set to `selector` or `globalFilter`.
        - TriggerWebhookBlock: A block that triggers a configured webhook and passes its required parameters.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `webhook` WebhookBlockReference, required: The webhook to trigger.
            - `id` integer, required: The unique identifier of the webhook.
            - `title` string: The display name of the webhook.
          - `params` object: The webhook's parameters, in configured order. Each property name is the parameter's title, lowercased with spaces replaced by underscores (for example, `Order ID` becomes `order_id`); falls back to `param_0`, `param_1`, and so on if a title is blank or collides with another.
          - `onError` object: Named error handlers evaluated when a specific error occurs.
        - TriggerCustomEffectBlock: A block that triggers a configured custom effect and passes its required parameters.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `customEffect` CustomEffectBlockReference, required: The custom effect to trigger.
            - `id` integer, required: The unique identifier of the custom effect.
            - `name` string: The name of the custom effect, as used in API requests.
            - `title` string: The display name of the custom effect.
          - `params` object: The custom effect's parameters, in configured order. Each property name is the parameter's title, lowercased with spaces replaced by underscores (for example, `Order ID` becomes `order_id`); falls back to `param_0`, `param_1`, and so on if a title is blank or collides with another.
          - `target` object, required: The target scope of this effect.
            - `type` 'cart' | 'allItems' | 'selector' | 'globalFilter' | 'bundle', required: The scope the custom effect applies to: - `cart` applies once to the whole cart. - `allItems` applies once per cart item. - `selector` applies once per item matched by the named selector. - `globalFilter` applies once per item matched by the named global item filter. - `bundle` applies once per item in the named bundle.
            - `name` string: The name of the targeted selector or bundle. Only set when `type` is `selector`, `globalFilter`, or `bundle`.
          - `onError` object: Named error handlers evaluated when a specific error occurs.
        - CheckEventBlock: A block that validates the event type.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `eventType` string, required: The event type to check against.
          - `matchers` Block[]
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CheckAchievementBlock: A block that checks the current customer's completion or progress status in an achievement.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'justCompleted' | 'started' | 'not(started)' | 'inProgress' | 'not(inProgress)' | 'completed' | 'not(completed)', required: The comparison operator applied to the achievement.
          - `achievement` AchievementBlockReference, required: The achievement to check for.
            - `id` integer, required: The ID of the achievement.
            - `title` string: The display name for the achievement in the Campaign Manager.
            - `name` string: The internal name of the achievement used in API requests.
            - `target` number: The required number of actions or the transactional milestone to complete the achievement.
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CheckBudgetBlock: A block that verifies if a specific budget has sufficient limit available, and whether this limit meets or exceeds a specific value.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'available' | 'enoughFor', required: The comparison operator applied to the limit. `available` checks if there is budget available for a given limitable action; `enoughFor` checks if the available budget meets or exceeds a specific value limit.
          - `action` 'redeemCoupon' | 'redeemReferral' | 'setDiscount' | 'createCoupon' | 'createReferral' | 'setDiscountEffect' | 'createLoyaltyPoints' | 'createLoyaltyPointsEffect' | 'redeemLoyaltyPoints' | 'redeemLoyaltyPointsEffect' | 'awardGiveaway' | 'addFreeItemEffect' | 'customEffect' | 'callApi', required: The limitable action to check.
          - `value` number: The value to check against when using the `enoughFor` operator.
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CreateCouponBlock: A block that creates a coupon code.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `campaignId` union, required: The ID of the campaign in which the coupon code is created.
            - number
            - string
          - `recipientId` string, required: The integration ID of the customer that is allowed to redeem this coupon.
          - `storeInSession` boolean, required: When `true`, the coupon is stored in the session.
          - `usageLimit` union: The number of times the coupon code can be redeemed. `0` means unlimited redemptions, but any campaign usage limits still apply. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `discountLimit` union: The total discount value that the code can give. Typically used to represent a gift card value. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `startDate` string: Timestamp at which point the coupon becomes valid.
          - `expiryDate` string: Expiration date of the coupon. Coupon never expires if this is omitted.
          - `attributes` unknown
          - `validCharacters` string: Characters used to generate the random parts of a code.
          - `pattern` string: The pattern used to generate codes, such as coupon codes, referral codes, and loyalty cards. The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set.
        - CreateReferralBlock: A block that creates a referral code.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `campaignId` union, required: The ID of the campaign in which the referral code is created. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `friendId` string, required: An optional integration ID of the friend's profile.
          - `storeInSession` boolean, required: When `true`, the referral code is stored in the session.
          - `usageLimit` union: The number of times the referral code code can be redeemed. `0` means unlimited redemptions, but any campaign usage limits still apply. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `startDate` string: Timestamp at which point the referral code becomes valid.
          - `expiryDate` string: Expiration date of the referral code. Referral code never expires if this is omitted.
          - `attributes` unknown
          - `validCharacters` string: Characters used to generate the random parts of a code.
          - `pattern` string: The pattern used to generate codes, such as coupon codes, referral codes, and loyalty cards. The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set.
        - ReserveCouponBlock: A block that reserve a coupon during a customer session.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
        - UpdateLoyaltyPointsExpiryBlock: A block that changes the expiry date of a customer's existing loyalty points, either to an absolute date or by extending it relative to the current expiry date.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'setTo' | 'laterBy', required: `setTo` sets the expiry to an exact date; `laterBy` extends the current expiry by a relative duration.
          - `program` object, required: The loyalty program whose points' expiry is changed.
            - `id` integer, required: The ID of the loyalty program.
            - `name` string: The internal name of the loyalty program.
            - `title` string: The display name of the loyalty program.
          - `recipient` 'Current' | 'Advocate', required: The customer profile whose points are affected. `Current` targets the customer in the current session; `Advocate` targets the person who invited their friend via referral program.
          - `subledger` string, required: The name of the subledger whose points' expiry is changed. Can be empty if this block targets the loyalty program's main ledger instead of a subledger.
          - `value` string, required: An absolute expiry date (ISO 8601) when `operator` is `setTo`, or a relative duration (e.g. `30D`) when `operator` is `laterBy`.
          - `onFailure` Block[]: Blocks evaluated when this block fails or returns false.
        - CheckLoyaltyCardBlock: A block that verifies whether a loyalty card is linked to the user's profile.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'linked' | 'not(linked)', required: An indicator of how the block compares its elements.
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - CheckTierBlock: A block that checks whether a customer profile is a member of a specific tier in a loyalty program.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `operator` 'member' | 'not(member)', required: An indicator of how the block compares its elements.
          - `subledger` string, required: The name of the subledger to check a customer's tier in. Can be empty if this block checks the loyalty program's main ledger instead of a subledger. A subledger can only be used when the loyalty program that the tier is in has subledgers enabled. To specify the main ledger, provide an empty string ("").
          - `tier` TierBlockReference, required
            - `id` integer, required: The ID of the tier.
            - `name` string, required: The display name of the tier.
            - `minPoints` number, required: The minimum amount of points required to enter the tier.
            - `upperLimit` number
          - `onFailure` Block[]: Promotion blocks evaluated when this block fails or returns false.
        - AwardLoyaltyPointsBlock: A block that adds loyalty points to a loyalty program and subledger for a recipient. The `target` field determines what the award is based on (the whole cart, a subset of items, or a bundle); the `value` field is the number of awarded points.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `name` string, required: The human-readable label attached to the awarded points.
          - `program` object, required: The loyalty program points are added to.
            - `id` integer, required: The ID of the loyalty program.
            - `name` string: The internal name of the loyalty program.
            - `title` string: The display name of the loyalty program.
          - `recipient` 'Current' | 'Advocate', required: The customer profile that receives the points. `Current` targets the customer in the current session; `Advocate` targets the person who invited their friend via referral program.
          - `subledger` string, required: The name of the subledger to add points to. Can be empty if this block adds points to the loyalty program's main ledger instead of a subledger.
          - `target` union, required: Identifies the scope over which loyalty points are awarded. The `type` field selects the target variant.
            - AwardLoyaltyPointsCartTarget: Awards points to the entire cart as a single unit.
              - …
            - AwardLoyaltyPointsAllItemsTarget: Awards points per item in the cart.
              - …
            - AwardLoyaltyPointsGlobalFilterTarget: Awards points per item in a globally filtered subset of items.
              - …
            - AwardLoyaltyPointsSelectorTarget: Awards points per item in a specific selector.
              - …
            - AwardLoyaltyPointsBundleTarget: Awards points based on bundle contents.
              - …
          - `value` union, required: Number of points to award. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `partial` boolean: When `true`, applies a partial points reward when the requested value exceeds the configured budget.
          - `awaitsActivation` boolean: When `true`, the awarded points require manual or delayed activation before becoming active. Mutually exclusive with `startDate`.
          - `startDate` string: Timestamp at which the awarded points become active. Mutually exclusive with `awaitsActivation`.
          - `validityDuration` string: Relative duration (e.g. `30D`) after which the awarded points expire. Mutually exclusive with `expiryDate`.
          - `expiryDate` string: Timestamp at which the awarded points expire. Mutually exclusive with `validityDuration`.
          - `pendingDuration` string: Relative duration (e.g. `3D`) the awarded points remain pending before activation.
        - RedeemLoyaltyPointsBlock: A block that deducts a specified amount of points from a customer's loyalty program balance, optionally from a named subledger.
          - `id` string: Unique identifier for this block.
          - `type` string, required: Identifies the block variant and determines which additional properties are present in it.
          - `tags` string[]: Semantic labels attached to this block.
          - `program` object, required: The loyalty program whose balance points are deducted from.
            - `id` integer, required: The ID of the loyalty program.
            - `name` string: The internal name of the loyalty program.
            - `title` string: The display name of the loyalty program.
          - `subledger` string, required: The name of the subledger to deduct points from. Can be empty if this block deducts from the loyalty program's main ledger instead of a subledger.
          - `value` union, required: Number of points to deduct. Either a numeric scalar or a `{{expression}}` string that resolves to a number at evaluation time.
            - number
            - string
          - `name` string: A custom description recorded as the reason for the point deduction.
  - `selectors` Selector[]: Variable bindings of type selector.
    - `name` string, required: The name of the selector binding.
    - `type` 'selector', required: A binding of type `selector`.
    - `source` string, required: The attribute path the pipeline draws items from.
    - `steps` SelectorStep[], required: Ordered pipeline steps applied to the source items.
      - union: A single step in a selector item pipeline. The `type` field determines the step variant.
        - FilterSelectorStep: Filters only items that match a predicate block.
          - `type` 'filter', required: A step discriminator of type `filter`.
          - `predicate` union, required: Describes a part of the logic of the rule.
            - GroupBlock: A structural combinator block that groups child blocks using a logical operator. Evaluates to true when its operator condition is satisfied across all child blocks.
              - …
            - AwardDiscountBlock: A block that grants a discount when its rule conditions evaluate to `true`. The `target` field determines what the discount applies to (the whole cart, a subset of items, a bundle, an additional cost, etc.); the `value` field is the discount amount.
              - …
            - PassthroughBlock: A block representing a Talang expression that could not be mapped to a typed block. The expression is preserved in its raw Talang array form for diagnostic and round-trip purposes.
              - …
            - ShowNotificationBlock: A block that displays a notification to the customer with a configurable type, title, and body message.
              - …
            - AwardItemBlock: A block that awards a free cart item to the customer. The item is identified by SKU and name and has a configurable quantity.
              - …
            - AwardGiveawayBlock: A block that awards a giveaway item from a configured giveaway pool to the specified customer profile.
              - …
            - union
              - …
            - CheckAudienceBlock: A block that checks whether a given customer profile is a member of an audience.
              - …
            - CheckLoyaltyBalanceBlock: A block that checks a specific loyalty program's ledger or subledger balance against a numeric value.
              - …
            - CheckCouponBlock: A block that validates the coupon code value and date.
              - …
            - CheckReferralBlock: A block that validates the referral code value and date.
              - …
            - UpdateAudienceMembershipBlock: A block that adds a customer to or removes them from an audience.
              - …
            - UpdateAchievementProgressBlock: A block that updates the progress of a customer in an achievement.
              - …
            - UpdateAttributeValueBlock: A block that sets or updates an attribute. The `type` may be empty for [built-in attributes](https://docs.talon.one/docs/dev/concepts/attributes).
              - …
            - TriggerWebhookBlock: A block that triggers a configured webhook and passes its required parameters.
              - …
            - TriggerCustomEffectBlock: A block that triggers a configured custom effect and passes its required parameters.
              - …
            - CheckEventBlock: A block that validates the event type.
              - …
            - CheckAchievementBlock: A block that checks the current customer's completion or progress status in an achievement.
              - …
            - CheckBudgetBlock: A block that verifies if a specific budget has sufficient limit available, and whether this limit meets or exceeds a specific value.
              - …
            - CreateCouponBlock: A block that creates a coupon code.
              - …
            - CreateReferralBlock: A block that creates a referral code.
              - …
            - ReserveCouponBlock: A block that reserve a coupon during a customer session.
              - …
            - UpdateLoyaltyPointsExpiryBlock: A block that changes the expiry date of a customer's existing loyalty points, either to an absolute date or by extending it relative to the current expiry date.
              - …
            - CheckLoyaltyCardBlock: A block that verifies whether a loyalty card is linked to the user's profile.
              - …
            - CheckTierBlock: A block that checks whether a customer profile is a member of a specific tier in a loyalty program.
              - …
            - AwardLoyaltyPointsBlock: A block that adds loyalty points to a loyalty program and subledger for a recipient. The `target` field determines what the award is based on (the whole cart, a subset of items, or a bundle); the `value` field is the number of awarded points.
              - …
            - RedeemLoyaltyPointsBlock: A block that deducts a specified amount of points from a customer's loyalty program balance, optionally from a named subledger.
              - …
        - SortSelectorStep: Sorts items by one or more field expressions.
          - `type` 'sort', required: A step discriminator of type `sort`.
          - `fields` SortSelectorStepField[], required: One or more fields to sort by, applied in order. Each field has its own direction.
            - `expression` string, required: The attribute path the items are sorted by.
            - `direction` 'asc' | 'desc', required: The sort direction for this field.
        - SelectSelectorStep: Picks a subset of the items by count, range, or exact position. The `operator` determines which additional fields are required: - `many` selects items from `from` (`start` or `end`) and is limited by `count`. - `between` selects items between integer indices `from` and `to`. - `one` selects the single item at `index`.
          - `type` 'select', required: A step discriminator of type `select`.
          - `operator` 'many' | 'between' | 'one', required: The selection operator applied to the items.
          - `from` union: The starting value of the selection. For the `many` operator this is the string `start` or `end`; for the `between` operator this is an integer start index. No discriminator is needed since the string and integer branches are distinguishable by JSON type alone.
            - 'start' | 'end'
            - integer
          - `to` integer: The end index for the `between` operator. The item at this index is not included.
          - `count` integer: The maximum number of items to select for the `many` operator.
          - `index` integer: The exact position of the item to select for the `one` operator.
          - `partial` boolean: Indicates if the step returns fewer items than requested when the source list is shorter than the range needs. Always `true` for the `many` and `between` operators; not present for `one`, which fails instead of returning a partial result.
        - MapSelectorStep: Transforms each item using an expression.
          - `type` 'map', required: A step discriminator of type `map`.
          - `expression` string, required: The attribute path each item is mapped to.
        - ReduceSelectorStep: Aggregates items into a single value.
          - `type` 'reduce', required: A step discriminator of type `reduce`.
          - `operator` 'max' | 'min' | 'sum' | 'count' | 'empty', required: The aggregation operator applied to the items produced by the preceding step: - `max`, `min`, and `sum` operate on numeric values. - `count` returns the number of items. - `empty` reports whether the list is empty.
        - ReverseSelectorStep: Reverses the order of the items.
          - `type` 'reverse', required: A step discriminator of type `reverse`.
        - FilterAndMapValuesSelectorStep: Keeps items that exist in the value map, and attaches each kept item's mapped value.
          - `type` 'filterAndMapValues', required: A step discriminator of type `filterAndMapValues`.
          - `valueMap` SelectorValueMapRef, required: A reference to a value map by its internal ID.
            - `id` integer, required: The internal ID of the referenced value map.
  - `bundles` Bundle[]: Variable bindings of type bundle.
    - `id` string: An identifier derived from the bundle content.
    - `name` string, required: The name of the bundle.
    - `type` 'bundle', required: A binding of type `bundle`.
    - `sources` string[], required: The selector sources of bundle items. Each source is expressed as a `{{$selectorName}}` reference.
    - `counts` integer[], required: The number of items to retrieve from each corresponding source in `sources`.
    - `matchers` string[]: Attribute names that the bundled items must share.
  - `parameters` TemplateParameter[]: Variable bindings of type template parameter.
    - `name` string, required: The name of the template parameter.
    - `value` unknown, required
    - `valueType` string, required: The data type of the value, derived from the bound expression (for example `number`, `string`, `boolean`, `percent`, `time`, `(list string)`, or `(list number)`).
    - `minValue` number: The minimum value allowed for this parameter.
    - `maxValue` number: The maximum value allowed for this parameter.
    - `description` string, required: A human-readable description of the parameter shown when creating campaigns from the template.
    - `attribute` integer: The ID of the attribute linked to this parameter. Omitted when the parameter is not linked to an attribute.

## Changes

- **2026-11-07** `7ef1b9504c3a`: 6 breaking, 36 info
  - the response property `created` became optional for the status `200`
  - the response property `id` became optional for the status `200`
  - the response property `strikethroughRules` became optional for the status `200`
  - the response property `userId` became optional for the status `200`
  - …38 more

[Operation history](https://skmtc.dev/talon/apis/management-api/changes/v2/applications/:applicationId/campaigns/:campaignId/rulesets/:rulesetId/get.md)

---

[API](https://skmtc.dev/talon/apis/management-api.md) - [All operations](https://skmtc.dev/talon/apis/management-api/llms.txt) - [OpenAPI document](https://skmtc.dev/talon/apis/management-api/revisions/7ef1b9504c3a?raw)
