---
title: Replace Redemption Rule
slug: replace-redemption-rule
createdAt: 2026-05-13T15:22:14.144Z
---

{
  "id": "w_zgVEWuxn5XyhEpI2pw8",
  "type": "api-oas-v2",
  "data": {
    "method": "PUT",
    "url": "https://api.b.preview.loyaltyservices.io/api/v3/redemption-rules/{code}",
    "servers": [
      {
        "url": "https://api.b.preview.loyaltyservices.io/api/v3/redemption-rules/{code}"
      }
    ],
    "name": "Replace Redemption Rule",
    "description": "Fully replaces an unreleased redemption rule. All fields are overwritten with the values provided. Only rules in WORKING or READY workflow status may be replaced.",
    "contentType": "application/json",
    "request": {
      "pathParameters": [
        {
          "kind": "required",
          "name": "code",
          "type": "string",
          "description": ""
        }
      ],
      "headerParameters": [
        {
          "name": "accept",
          "type": "string",
          "kind": "optional",
          "description": "Generated from available response content types",
          "enum": [
            "application/json"
          ],
          "default": "application/json"
        }
      ],
      "queryParameters": [],
      "bodyDataParameters": [
        {
          "kind": "required",
          "name": "body",
          "type": "object",
          "description": "",
          "customType": "RedemptionRule",
          "schema": [
            {
              "name": "code",
              "kind": "required",
              "type": "string",
              "description": "Unique code for the redemption rule. Cannot be changed after creation. The code of a deleted rule can be reused. Use findRedemptionRules to check whether a code already exists.",
              "example": "GOLD_REWARD_2026",
              "minLength": 1,
              "maxLength": 30
            },
            {
              "name": "groupCode",
              "kind": "optional",
              "type": "string",
              "description": "<p>Groups rules that offer the same reward at different prices (personalized pricing). Choose any code up to 30 characters; use findRedemptionRules with this groupCode to see the rules already in a group. When a member redeems, the highest ranked rule in the group that the member qualifies for is the one presented, and the lowest ranked rule is shown as the reference (strike-through) price. Each rule in a group needs a unique rank.</p>",
              "example": "GOLD_REWARD",
              "minLength": 1,
              "maxLength": 30
            },
            {
              "name": "description",
              "kind": "required",
              "type": "string",
              "description": "Display name for the redemption rule",
              "example": "Gold Member Exclusive Reward",
              "minLength": 1,
              "maxLength": 100
            },
            {
              "name": "statusCode",
              "kind": "optional",
              "type": "string",
              "description": "<p>Rule status code. Valid values: use getCodesByType with codeType=RedemptionRuleStatus (A = Active, I = Inactive).</p>",
              "default": "A"
            },
            {
              "name": "startDate",
              "kind": "required",
              "type": "string<date>",
              "description": "<p>First day the rule can be redeemed (YYYY-MM-DD). Required.</p>",
              "example": "2025-01-01",
              "format": "date"
            },
            {
              "name": "endDate",
              "kind": "optional",
              "type": "string<date>",
              "description": "<p>Last day the rule can be redeemed (YYYY-MM-DD). Leave empty for a rule with no end date.</p>",
              "example": "2050-12-31",
              "format": "date"
            },
            {
              "name": "redemptionTypeCode",
              "kind": "required",
              "type": "string",
              "description": "<p>Type of redemption. Valid values: use getCodesByType with codeType=RedemptionType and read the notes on each code to see what each type is for. Cannot be changed after creation.</p>",
              "example": "I"
            },
            {
              "name": "rank",
              "kind": "optional",
              "type": "integer<int32>",
              "description": "<p>Order of rules within a groupCode. Of the rules a member qualifies for, the highest rank is the one that applies, so give the best discount the highest rank and the base (full price) rule the lowest. Must be unique within the same groupCode; use findRedemptionRules with the groupCode to see ranks already used.</p>",
              "example": 10,
              "default": 1,
              "format": "int32"
            },
            {
              "name": "redeemable",
              "kind": "optional",
              "type": "boolean",
              "description": "Whether members can redeem this rule",
              "example": true,
              "default": true
            },
            {
              "name": "workflowStatus",
              "kind": "optional",
              "type": "string",
              "description": "<p>Authoring state. Valid values: use getCodesByType with codeType=RuleWorkflowStatus. WORKING is a draft that is still being edited; READY marks it ready to be released. A rule takes effect only after it is added to a data release and approved in Release Management in the Tally UI; this field does not release it.</p>",
              "default": "WORKING"
            },
            {
              "name": "rawExpression",
              "kind": "optional",
              "type": "string",
              "description": "<p>Expression defining which members qualify for the rule. If not set, every member qualifies. Use findExpressionBuilderConfig to see the fields and operators available for building expressions.</p>"
            },
            {
              "name": "faceValue",
              "kind": "optional",
              "type": "number",
              "description": "<p>Value of the item in USD, for gift cards and certificates. Leave empty for other types.</p>",
              "example": 500
            },
            {
              "name": "dataRelease",
              "kind": "optional",
              "type": "integer<int64>",
              "description": "Managed by Release Management in the Tally UI. Leave unset when creating or editing a rule through the API.",
              "format": "int64"
            },
            {
              "name": "dataReleaseName",
              "kind": "optional",
              "type": "string",
              "description": "Managed by Release Management in the Tally UI. Leave unset when creating or editing a rule through the API.",
              "example": "Rules Release 2025",
              "maxLength": 250
            },
            {
              "name": "dataReleaseItemStatus",
              "kind": "optional",
              "type": "string",
              "description": "<p>Managed by Release Management in the Tally UI. Leave unset when creating or editing a rule through the API. Valid values, if ever needed, use getCodesByType with codeType=DataReleaseItemStatus.</p>",
              "example": "LIVE",
              "maxLength": 50
            },
            {
              "name": "partnerCode",
              "kind": "optional",
              "type": "string",
              "description": "<p>Partner that fulfills the redemption, for partner-based redemptions. Valid values: use getManagedEntityOptions with entityType=Partner.</p>"
            },
            {
              "name": "minimumRoleRequired",
              "kind": "optional",
              "type": "integer<int64>",
              "description": "<p>Id of the minimum user role allowed to redeem this rule. Valid values: use getUserRoles and pass the id of the chosen role. Leave empty for no role restriction.</p>",
              "format": "int64"
            },
            {
              "name": "quantities",
              "kind": "required",
              "type": "object",
              "description": "",
              "modelRef": "#/components/schemas/RedemptionRuleQuantities",
              "customType": "RedemptionRuleQuantities",
              "schema": [
                {
                  "name": "pointCategoryCode",
                  "kind": "required",
                  "type": "string",
                  "description": "<p>Point category (currency) deducted for the redemption. Valid values: use getCodesByType with codeType=PointCategory and pass the exact code returned, which may differ from the example. Supports custom currencies and DMX (data migration currency).</p>",
                  "example": "Points",
                  "default": "POINTS"
                },
                {
                  "name": "amountProvided",
                  "kind": "required",
                  "type": "boolean",
                  "description": "<p>Whether the amount of points is chosen at redemption (true, conversion rate rule) or fixed per item (false, uses pointsRequired)</p>",
                  "example": false,
                  "default": false
                },
                {
                  "name": "pointsRequired",
                  "kind": "optional",
                  "type": "number",
                  "description": "<p>Points required per item (required if amountProvided = false)</p>",
                  "example": 5000
                },
                {
                  "name": "providedAmountRate",
                  "kind": "optional",
                  "type": "number",
                  "description": "<p>Conversion rate used to work out the points deducted from the amount entered at redemption (required if amountProvided = true)</p>",
                  "example": 100
                },
                {
                  "name": "minimumQuantity",
                  "kind": "required",
                  "type": "integer<int32>",
                  "description": "Minimum number of items per redemption",
                  "example": 1,
                  "default": 1,
                  "format": "int32"
                },
                {
                  "name": "maximumQuantity",
                  "kind": "optional",
                  "type": "integer<int32>",
                  "description": "Maximum redemption quantity per transaction",
                  "format": "int32"
                },
                {
                  "name": "redeemIncrement",
                  "kind": "optional",
                  "type": "integer<int32>",
                  "description": "Step size for quantity selection",
                  "example": 1,
                  "format": "int32"
                }
              ]
            },
            {
              "name": "fulfillment",
              "kind": "optional",
              "type": "object",
              "description": "",
              "modelRef": "#/components/schemas/RedemptionRuleFulfillment",
              "customType": "RedemptionRuleFulfillment",
              "schema": [
                {
                  "name": "fulfillmentPathCode",
                  "kind": "required",
                  "type": "string",
                  "description": "<p>How the redemption is delivered. Required. Valid values: use getCodesByType with codeType=FulfillmentPath and read the notes on each code. NOFULFILLMENT means nothing is delivered automatically; COUPON issues the coupon award in couponAward.</p>",
                  "example": "COUPON"
                },
                {
                  "name": "communicationTypeCode",
                  "kind": "optional",
                  "type": "string",
                  "description": "<p>Communication sent to the member when the redemption completes. Valid values: use findCommunicationTypes and pass the communication code.</p>",
                  "example": "RedemptionConfirmationEmail"
                },
                {
                  "name": "couponAward",
                  "kind": "optional",
                  "type": "string",
                  "description": "<p>Coupon award to issue when fulfillmentPathCode is COUPON. There is no service yet to list valid coupon awards (TPB-41682); the value must be known.</p>"
                },
                {
                  "name": "redemptionRuleBonusCode",
                  "kind": "optional",
                  "type": "string",
                  "description": "<p>Bonus rule awarded when the redemption completes. Valid values: use findBonusRules and pass the bonus rule code.</p>"
                },
                {
                  "name": "merchant",
                  "kind": "optional",
                  "type": "string",
                  "description": "<p>Merchant identifier for partner-based fulfillment</p>",
                  "maxLength": 50
                }
              ]
            },
            {
              "name": "content",
              "kind": "optional",
              "type": "string",
              "description": "<p>ContentKey of the content item (GenericItem) shown with this rule. Content is created with createContent; there is no search or list service yet, so the key must be known (TPB-41715).</p>",
              "maxLength": 50
            },
            {
              "name": "displayOnline",
              "kind": "optional",
              "type": "boolean",
              "description": "<p>Whether the rule is displayed in online channels (website, app)</p>",
              "default": true
            },
            {
              "name": "providerDetails",
              "kind": "optional",
              "type": "map",
              "description": "<p>Provider-specific attributes for this rule. Present only when the rule's fulfillmentPathCode has a registered encoder and provider details have been set. Absent from the response when no provider details exist. Null values are not returned; the absence of this field indicates no provider details are stored.</p>",
              "example": "{\"catalogId\":\"CAT123\",\"sku\":\"SKU123-D-001\"}",
              "customType": "map<string, string>",
              "schema": []
            },
            {
              "name": "tags",
              "kind": "optional",
              "type": "array",
              "description": "Tag codes associated with this redemption rule",
              "example": "[\"SUMMER_SALE\",\"VIP\"]",
              "itemType": "string",
              "customType": "string[]",
              "itemExample": "",
              "itemDefault": ""
            }
          ],
          "modelRef": "#/components/schemas/RedemptionRule",
          "isExpanded": true
        }
      ],
      "formDataParameters": [],
      "oAuthParameters": [
        {
          "id": "OAuth2",
          "name": "OAuth2",
          "kind": "optional",
          "type": "oauth2",
          "description": "<p>See <a href=\"https://docs.wearephaedon.com/docs/platform-api-authentication\" target=\"_blank\">https://docs.wearephaedon.com/docs/platform-api-authentication</a></p>",
          "oauth2Flows": {
            "clientCredentials": {
              "tokenUrl": "https://phaedon.oktapreview.com/oauth2/auscfbbmieFBGGOzR1d7/v1/token",
              "scopes": {
                "api:custom-data:read": "Grants read access to custom data information",
                "api:custom-data:modify": "Grants modify access to custom data information",
                "api:data-codes:read": "Grants read access to data codes",
                "api:data-codes:modify": "Grants modify access to data codes",
                "api:coupon-compensation:read": "Grants read access to compensations for coupon code",
                "api:coupon-compensation:create": "Grants access to create compensations for coupon code",
                "api:coupon-compensation:modify": "Grants access to edit compensation nights for coupon code",
                "api:coupon-request:modify": "Grants modify access to create coupons",
                "api:member:search": "Grants search access to member information",
                "api:member:verify": "Grants verify access to member information",
                "api:member:merge": "Grants access to merge members",
                "api:member:enroll": "Grants access to enroll members",
                "api:member:modify": "Grants modify access to member information",
                "api:member:read": "Grants read access to member information",
                "api:member:close": "Grants access to close member account",
                "api:member:migrate": "Grants access to migrate member accounts",
                "api:member-address:read": "Grants read access to member address information",
                "api:member-address:modify": "Grants modify access to member address information",
                "api:member-alias:read": "Grants read access to member alias information",
                "api:member-alias:modify": "Grants modify access to member alias information",
                "api:member-badge:read": "Grants read access to member badge information",
                "api:member-badge:modify": "Grants modify access to member badge information",
                "api:member-bonus:add": "Grants access to add a bonus to a member",
                "api:member-bonus:read": "Grants read access to member bonus information",
                "api:member-comments:read": "Grants read access to member comments information",
                "api:member-comments:modify": "Grants modify access to member comments information",
                "api:member-communication:read": "Grants read access to member communication information",
                "api:member-communication:modify": "Grants modify access to member communication information",
                "api:member-coupon:read": "Grants read access to member coupon information",
                "api:member-coupon-use:cancel": "Grants access to cancel member coupon uses",
                "api:member-coupon:transfer": "Grants access to transfer a member coupon",
                "api:member-coupon-use:update": "Grants access to update member coupon uses",
                "api:member-currency:read": "Grants read access to member currency information",
                "api:member-currency:adjust": "Grants access to adjust member currency",
                "api:member-currency:migrate": "Grants access to migrate member currency",
                "api:member-currency-conversion:convert": "Grants access to convert member currency",
                "api:member-email:read": "Grants read access to member email information",
                "api:member-email:modify": "Grants modify access to member email information",
                "api:member-event:read": "Grants read access to member events",
                "api:member-event:modify": "Grants modify access to member events",
                "api:event-rule:read": "Grants read access to event rules",
                "api:event-rule:modify": "Grants access to modify event rule",
                "api:event-rule:admin": "Grants full admin access to event rules",
                "api:member-list:read": "Grants read access to member list information",
                "api:member-list:modify": "Grants modify access to member list information",
                "api:member-partner-link:read": "Grants read access to member partner link information",
                "api:member-partner-link:modify": "Grants modify access to member partner link information",
                "api:member-payment-card:read": "Grants read access to member payment card information",
                "api:member-payment-card:modify": "Grants modify access to member payment card information",
                "api:member-phone:read": "Grants read access to member phone information",
                "api:member-phone:modify": "Grants modify access to member phone information",
                "api:member-preference:read": "Grants read access to member preference information",
                "api:member-preference:modify": "Grants modify access to member preference information",
                "api:member-promotion:read": "Grants read access to member promotion information",
                "api:member-promotion:register": "Grants access to register a member into a promotion",
                "api:member-redemption:create": "Grants redeem access to member redemption information",
                "api:member-redemption:over-redeem": "Grants access to over redeem",
                "api:member-redemption:read": "Grants read access to member redemption information",
                "api:member-redemption:cancel": "Grants access to cancel member redemptions",
                "api:member-redemption:migrate": "Allows migration of member redemption information",
                "api:member-redemption:patch": "Grants patching access to member redemption",
                "api:member-tier:read": "Grants read access to member tier information",
                "api:member-tier:adjust": "Grants access to adjust member tiers",
                "api:member-tier:migrate": "Grants access to migrate member tiers",
                "api:member-transaction:read": "Grants read access to transaction information",
                "api:member-transaction:cancel": "Grants access to cancel transactions",
                "api:member-transaction:clone": "Grants access to clone transactions",
                "api:member-transfer:transfer": "Grants access to do member to member transfers",
                "api:preference:read": "Grants read access to preference information",
                "api:promotion:read": "Grants read access to promotion information",
                "api:tier:read": "Grant read access to tier information",
                "api:promotion:register": "Grants access to register a member into a promotion using token",
                "api:promotion-token:manage": "Grants access to generate promotion token",
                "api:redemption:read": "Grants read access to redemption information",
                "api:redemption:modify": "Grants access to modify redemption information",
                "api:bonus-rule:read": "Grants read access to bonus rule configuration",
                "api:bonus-rule:modify": "Grants access to modify bonus rule configuration",
                "api:bonus-rule:manage": "Grants limited admin access to bonus rule configuration",
                "api:bonus-rule:admin": "Grants full admin access to bonus rules",
                "api:promotion-rule:read": "Grants read access to promotion rule configuration",
                "api:promotion-rule:modify": "Grants access to modify promotion rule configuration",
                "api:promotion-rule:manage": "Grants limited admin access to promotion rule configuration",
                "api:promotion-rule:admin": "Grants full admin access to promotion rules",
                "api:reports:under-investigation": "Grants access to under investigation report",
                "api:transaction:submit": "Grants access to submit transactions",
                "api:transaction:migrate": "Grants access to migrate transactions",
                "api:user:read": "Grants access to read user information",
                "api:user:modify": "Grants access to create user",
                "api:user-task:read": "Grants read access to user tasks",
                "api:user-task:modify": "Grants modify access to user tasks",
                "api:user-role:read": "Grants read access to user roles",
                "api:user-role:modify": "Grants modify access to user roles",
                "api:compensation:read": "Grants read access to hotel summary information",
                "api:compensation:modify": "Grants modify access to hotel summary information",
                "api:member-referral:read": "Grants read access to member referral information",
                "api:member-referral:modify": "Grants modify access to member referral information",
                "api:member-referral-codes:read": "Grants read access to member referral codes",
                "api:member-referral-codes:create": "Grants access to create member referral codes",
                "api:outbound-notification:modify": "Grants access to send outbound notification",
                "api:outbound-notification:read": "Grants access to read outbound notification types",
                "api:background-task:read": "Grants read access to background task information",
                "api:async-task:create": "Grants access to submit operations for background processing",
                "api:async-task:read": "Grants read access to background processing results",
                "api:audit-configuration:read": "Grants read access to audit configuration information",
                "api:audit-configuration:modify": "Grants modify access to audit configuration information",
                "api:badge:read": "Grant read access to badge information",
                "api:broadcast-messages:read": "Grant Read access to broadcast messages",
                "api:expression-config:read": "Grant read access to expression builder configuration",
                "api:managed-entity:read": "Grant read access to managed entity data",
                "api:customer-satisfaction:modify": "Grants modify access to customer satisfaction metrics",
                "api:member-linked-account:modify": "Grant modify access to member linked account",
                "api:member-linked-account:read": "Grants access to read linked member accounts",
                "api:enroll-codes:read": "Grants access to read enroll codes",
                "api:contact-us:modify": "Grants access to submit Contact Us inquiry",
                "api:data-release:read": "Grants read access to data releases",
                "api:points-pool:read": "Grants read access to points pools",
                "api:points-pool:modify": "Grants modify access to points pools",
                "api:segment:read": "Grants read access to segments",
                "api:segment:modify": "Grants modify access to segments",
                "api:communication-type:read": "Grants read access to communication types",
                "api:communication-type:modify": "Grants modify access to communication types",
                "api:member-status-match:read": "Grants read access to status match eligibility and submitted images/applications",
                "api:member-status-match:create": "Grants access to upload status match images and submit applications",
                "api:earning-rule:read": "Grants read access to earning rules",
                "api:earning-rule:modify": "Grant modify access to earning rules",
                "api:earning-rule:manage": "Grants limited editing of earning rules whose status is APPROVED, PUBLISHED, or LIVE",
                "api:earning-rule:admin": "Grants full admin access to earning rules"
              }
            }
          },
          "requiredScopes": [
            "api:redemption:modify"
          ]
        }
      ],
      "cookieParameters": []
    },
    "responses": [
      {
        "statusCode": "200",
        "description": "Success",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "customType": "RedemptionRule",
            "schema": [
              {
                "name": "id",
                "kind": "optional",
                "type": "integer<int64>",
                "readOnly": true,
                "description": "<p>System-generated ID for the redemption rule</p>",
                "format": "int64"
              },
              {
                "name": "code",
                "kind": "required",
                "type": "string",
                "description": "Unique code for the redemption rule. Cannot be changed after creation. The code of a deleted rule can be reused. Use findRedemptionRules to check whether a code already exists.",
                "example": "GOLD_REWARD_2026",
                "minLength": 1,
                "maxLength": 30
              },
              {
                "name": "groupCode",
                "kind": "optional",
                "type": "string",
                "description": "<p>Groups rules that offer the same reward at different prices (personalized pricing). Choose any code up to 30 characters; use findRedemptionRules with this groupCode to see the rules already in a group. When a member redeems, the highest ranked rule in the group that the member qualifies for is the one presented, and the lowest ranked rule is shown as the reference (strike-through) price. Each rule in a group needs a unique rank.</p>",
                "example": "GOLD_REWARD",
                "minLength": 1,
                "maxLength": 30
              },
              {
                "name": "description",
                "kind": "required",
                "type": "string",
                "description": "Display name for the redemption rule",
                "example": "Gold Member Exclusive Reward",
                "minLength": 1,
                "maxLength": 100
              },
              {
                "name": "statusCode",
                "kind": "optional",
                "type": "string",
                "description": "<p>Rule status code. Valid values: use getCodesByType with codeType=RedemptionRuleStatus (A = Active, I = Inactive).</p>",
                "default": "A"
              },
              {
                "name": "startDate",
                "kind": "required",
                "type": "string<date>",
                "description": "<p>First day the rule can be redeemed (YYYY-MM-DD). Required.</p>",
                "example": "2025-01-01",
                "format": "date"
              },
              {
                "name": "endDate",
                "kind": "optional",
                "type": "string<date>",
                "description": "<p>Last day the rule can be redeemed (YYYY-MM-DD). Leave empty for a rule with no end date.</p>",
                "example": "2050-12-31",
                "format": "date"
              },
              {
                "name": "redemptionTypeCode",
                "kind": "required",
                "type": "string",
                "description": "<p>Type of redemption. Valid values: use getCodesByType with codeType=RedemptionType and read the notes on each code to see what each type is for. Cannot be changed after creation.</p>",
                "example": "I"
              },
              {
                "name": "rank",
                "kind": "optional",
                "type": "integer<int32>",
                "description": "<p>Order of rules within a groupCode. Of the rules a member qualifies for, the highest rank is the one that applies, so give the best discount the highest rank and the base (full price) rule the lowest. Must be unique within the same groupCode; use findRedemptionRules with the groupCode to see ranks already used.</p>",
                "example": 10,
                "default": 1,
                "format": "int32"
              },
              {
                "name": "redeemable",
                "kind": "optional",
                "type": "boolean",
                "description": "Whether members can redeem this rule",
                "example": true,
                "default": true
              },
              {
                "name": "workflowStatus",
                "kind": "optional",
                "type": "string",
                "description": "<p>Authoring state. Valid values: use getCodesByType with codeType=RuleWorkflowStatus. WORKING is a draft that is still being edited; READY marks it ready to be released. A rule takes effect only after it is added to a data release and approved in Release Management in the Tally UI; this field does not release it.</p>",
                "default": "WORKING"
              },
              {
                "name": "rawExpression",
                "kind": "optional",
                "type": "string",
                "description": "<p>Expression defining which members qualify for the rule. If not set, every member qualifies. Use findExpressionBuilderConfig to see the fields and operators available for building expressions.</p>"
              },
              {
                "name": "faceValue",
                "kind": "optional",
                "type": "number",
                "description": "<p>Value of the item in USD, for gift cards and certificates. Leave empty for other types.</p>",
                "example": 500
              },
              {
                "name": "dataRelease",
                "kind": "optional",
                "type": "integer<int64>",
                "description": "Managed by Release Management in the Tally UI. Leave unset when creating or editing a rule through the API.",
                "format": "int64"
              },
              {
                "name": "dataReleaseName",
                "kind": "optional",
                "type": "string",
                "description": "Managed by Release Management in the Tally UI. Leave unset when creating or editing a rule through the API.",
                "example": "Rules Release 2025",
                "maxLength": 250
              },
              {
                "name": "dataReleaseItemStatus",
                "kind": "optional",
                "type": "string",
                "description": "<p>Managed by Release Management in the Tally UI. Leave unset when creating or editing a rule through the API. Valid values, if ever needed, use getCodesByType with codeType=DataReleaseItemStatus.</p>",
                "example": "LIVE",
                "maxLength": 50
              },
              {
                "name": "partnerCode",
                "kind": "optional",
                "type": "string",
                "description": "<p>Partner that fulfills the redemption, for partner-based redemptions. Valid values: use getManagedEntityOptions with entityType=Partner.</p>"
              },
              {
                "name": "minimumRoleRequired",
                "kind": "optional",
                "type": "integer<int64>",
                "description": "<p>Id of the minimum user role allowed to redeem this rule. Valid values: use getUserRoles and pass the id of the chosen role. Leave empty for no role restriction.</p>",
                "format": "int64"
              },
              {
                "name": "quantities",
                "kind": "required",
                "type": "object",
                "description": "",
                "modelRef": "#/components/schemas/RedemptionRuleQuantities",
                "customType": "RedemptionRuleQuantities",
                "schema": [
                  {
                    "name": "pointCategoryCode",
                    "kind": "required",
                    "type": "string",
                    "description": "<p>Point category (currency) deducted for the redemption. Valid values: use getCodesByType with codeType=PointCategory and pass the exact code returned, which may differ from the example. Supports custom currencies and DMX (data migration currency).</p>",
                    "example": "Points",
                    "default": "POINTS"
                  },
                  {
                    "name": "amountProvided",
                    "kind": "required",
                    "type": "boolean",
                    "description": "<p>Whether the amount of points is chosen at redemption (true, conversion rate rule) or fixed per item (false, uses pointsRequired)</p>",
                    "example": false,
                    "default": false
                  },
                  {
                    "name": "pointsRequired",
                    "kind": "optional",
                    "type": "number",
                    "description": "<p>Points required per item (required if amountProvided = false)</p>",
                    "example": 5000
                  },
                  {
                    "name": "providedAmountRate",
                    "kind": "optional",
                    "type": "number",
                    "description": "<p>Conversion rate used to work out the points deducted from the amount entered at redemption (required if amountProvided = true)</p>",
                    "example": 100
                  },
                  {
                    "name": "minimumQuantity",
                    "kind": "required",
                    "type": "integer<int32>",
                    "description": "Minimum number of items per redemption",
                    "example": 1,
                    "default": 1,
                    "format": "int32"
                  },
                  {
                    "name": "maximumQuantity",
                    "kind": "optional",
                    "type": "integer<int32>",
                    "description": "Maximum redemption quantity per transaction",
                    "format": "int32"
                  },
                  {
                    "name": "redeemIncrement",
                    "kind": "optional",
                    "type": "integer<int32>",
                    "description": "Step size for quantity selection",
                    "example": 1,
                    "format": "int32"
                  }
                ]
              },
              {
                "name": "fulfillment",
                "kind": "optional",
                "type": "object",
                "description": "",
                "modelRef": "#/components/schemas/RedemptionRuleFulfillment",
                "customType": "RedemptionRuleFulfillment",
                "schema": [
                  {
                    "name": "fulfillmentPathCode",
                    "kind": "required",
                    "type": "string",
                    "description": "<p>How the redemption is delivered. Required. Valid values: use getCodesByType with codeType=FulfillmentPath and read the notes on each code. NOFULFILLMENT means nothing is delivered automatically; COUPON issues the coupon award in couponAward.</p>",
                    "example": "COUPON"
                  },
                  {
                    "name": "communicationTypeCode",
                    "kind": "optional",
                    "type": "string",
                    "description": "<p>Communication sent to the member when the redemption completes. Valid values: use findCommunicationTypes and pass the communication code.</p>",
                    "example": "RedemptionConfirmationEmail"
                  },
                  {
                    "name": "couponAward",
                    "kind": "optional",
                    "type": "string",
                    "description": "<p>Coupon award to issue when fulfillmentPathCode is COUPON. There is no service yet to list valid coupon awards (TPB-41682); the value must be known.</p>"
                  },
                  {
                    "name": "redemptionRuleBonusCode",
                    "kind": "optional",
                    "type": "string",
                    "description": "<p>Bonus rule awarded when the redemption completes. Valid values: use findBonusRules and pass the bonus rule code.</p>"
                  },
                  {
                    "name": "merchant",
                    "kind": "optional",
                    "type": "string",
                    "description": "<p>Merchant identifier for partner-based fulfillment</p>",
                    "maxLength": 50
                  }
                ]
              },
              {
                "name": "content",
                "kind": "optional",
                "type": "string",
                "description": "<p>ContentKey of the content item (GenericItem) shown with this rule. Content is created with createContent; there is no search or list service yet, so the key must be known (TPB-41715).</p>",
                "maxLength": 50
              },
              {
                "name": "displayOnline",
                "kind": "optional",
                "type": "boolean",
                "description": "<p>Whether the rule is displayed in online channels (website, app)</p>",
                "default": true
              },
              {
                "name": "providerDetails",
                "kind": "optional",
                "type": "map",
                "description": "<p>Provider-specific attributes for this rule. Present only when the rule's fulfillmentPathCode has a registered encoder and provider details have been set. Absent from the response when no provider details exist. Null values are not returned; the absence of this field indicates no provider details are stored.</p>",
                "example": "{\"catalogId\":\"CAT123\",\"sku\":\"SKU123-D-001\"}",
                "customType": "map<string, string>",
                "schema": []
              },
              {
                "name": "tags",
                "kind": "optional",
                "type": "array",
                "description": "Tag codes associated with this redemption rule",
                "example": "[\"SUMMER_SALE\",\"VIP\"]",
                "itemType": "string",
                "customType": "string[]",
                "itemExample": "",
                "itemDefault": ""
              },
              {
                "name": "allowedActions",
                "kind": "optional",
                "type": "object",
                "readOnly": true,
                "description": "<p>Write actions permitted on this rule in its current status, computed by the backend from the rule's workflow status.\nCaller entitlements are not considered; the corresponding operations still enforce their OAuth scopes.\nClients should render an action only when its flag is true.</p>",
                "modelRef": "#/components/schemas/RuleAllowedActions",
                "customType": "RuleAllowedActions",
                "schema": [
                  {
                    "name": "modify",
                    "kind": "optional",
                    "type": "boolean",
                    "readOnly": true,
                    "description": "<p>The rule may be fully edited (Working, Ready, or Approved status).</p>"
                  },
                  {
                    "name": "manage",
                    "kind": "optional",
                    "type": "boolean",
                    "readOnly": true,
                    "description": "<p>The rule may receive limited edits such as dates and status (Approved, Published, or Live status).</p>"
                  },
                  {
                    "name": "admin",
                    "kind": "optional",
                    "type": "boolean",
                    "readOnly": true,
                    "description": "<p>An administrator may edit the rule (Working, Ready, Approved, Published, Live, or Ended status).</p>"
                  },
                  {
                    "name": "delete",
                    "kind": "optional",
                    "type": "boolean",
                    "readOnly": true,
                    "description": "<p>The rule may be deleted (Working or Ready status).</p>"
                  }
                ]
              }
            ],
            "modelRef": "#/components/schemas/RedemptionRule",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "400",
        "description": "Bad request",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "customType": "ErrorResponse",
            "schema": [
              {
                "name": "errors",
                "kind": "optional",
                "type": "array",
                "description": "List of errors",
                "modelRef": "#/components/schemas/ValidationError",
                "customType": "ValidationError[]",
                "schema": [
                  {
                    "name": "code",
                    "kind": "optional",
                    "type": "string",
                    "description": "Error code assigned to this violation"
                  },
                  {
                    "name": "fieldName",
                    "kind": "optional",
                    "type": "string",
                    "description": "<p>Name of field that violated validation constraint (optional)</p>"
                  },
                  {
                    "name": "message",
                    "kind": "optional",
                    "type": "string",
                    "description": "Internal message describing the error"
                  },
                  {
                    "name": "messageParameters",
                    "kind": "optional",
                    "type": "array",
                    "description": "Error message parameters",
                    "example": "",
                    "itemType": "object",
                    "customType": "object[]",
                    "schema": []
                  }
                ]
              }
            ],
            "modelRef": "#/components/schemas/ErrorResponse",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "401",
        "description": "Unauthorized",
        "jsonExample": "",
        "isExpanded": true
      },
      {
        "statusCode": "403",
        "description": "Forbidden",
        "jsonExample": "",
        "isExpanded": true
      },
      {
        "statusCode": "404",
        "description": "Redemption Rule not found",
        "jsonExample": "",
        "isExpanded": true
      },
      {
        "statusCode": "500",
        "description": "Internal error",
        "jsonExample": "",
        "isExpanded": true
      }
    ],
    "hasXCodeSamples": false,
    "examples": {
      "languages": [
        {
          "id": "example-0-curl",
          "language": "curl",
          "label": "cURL",
          "code": "curl --request PUT \\\n     --url https://api.b.preview.loyaltyservices.io/api/v3/redemption-rules/{code} \\\n     --header 'accept: application/json' \\\n     --header 'content-type: application/json' \\\n     --data '{\n     \"code\": \"GOLD_REWARD_2026\",\n     \"description\": \"Gold Member Exclusive Reward\",\n     \"statusCode\": \"A\",\n     \"startDate\": \"2025-01-01\",\n     \"redemptionTypeCode\": \"I\",\n     \"rank\": 1,\n     \"redeemable\": true,\n     \"workflowStatus\": \"WORKING\",\n     \"quantities\": {\n     \"pointCategoryCode\": \"POINTS\",\n     \"amountProvided\": false,\n     \"minimumQuantity\": 1\n     },\n     \"fulfillment\": {\n     \"fulfillmentPathCode\": \"COUPON\"\n     },\n     \"displayOnline\": true\n     }'"
        },
        {
          "id": "example-1-ruby",
          "language": "ruby",
          "label": "Ruby",
          "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.b.preview.loyaltyservices.io/api/v3/redemption-rules/{code}\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"accept\"] = \"application/json\"\nrequest[\"content-type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"code\": \"GOLD_REWARD_2026\",\n   \"description\": \"Gold Member Exclusive Reward\",\n   \"statusCode\": \"A\",\n   \"startDate\": \"2025-01-01\",\n   \"redemptionTypeCode\": \"I\",\n   \"rank\": 1,\n   \"redeemable\": true,\n   \"workflowStatus\": \"WORKING\",\n   \"quantities\": {\n      \"pointCategoryCode\": \"POINTS\",\n      \"amountProvided\": false,\n      \"minimumQuantity\": 1\n   },\n   \"fulfillment\": {\n      \"fulfillmentPathCode\": \"COUPON\"\n   },\n   \"displayOnline\": true\n})\n\nresponse = https.request(request)\nputs response.read_body\n"
        },
        {
          "id": "example-2-python",
          "language": "python",
          "label": "Python",
          "code": "import requests\nimport json\n\nurl = \"https://api.b.preview.loyaltyservices.io/api/v3/redemption-rules/{code}\"\n\npayload = json.dumps({\n   \"code\": \"GOLD_REWARD_2026\",\n   \"description\": \"Gold Member Exclusive Reward\",\n   \"statusCode\": \"A\",\n   \"startDate\": \"2025-01-01\",\n   \"redemptionTypeCode\": \"I\",\n   \"rank\": 1,\n   \"redeemable\": True,\n   \"workflowStatus\": \"WORKING\",\n   \"quantities\": {\n      \"pointCategoryCode\": \"POINTS\",\n      \"amountProvided\": False,\n      \"minimumQuantity\": 1\n   },\n   \"fulfillment\": {\n      \"fulfillmentPathCode\": \"COUPON\"\n   },\n   \"displayOnline\": True\n})\nheaders = {\n   'accept': 'application/json',\n   'content-type': 'application/json'\n}\n\nresponse = requests.request(\"PUT\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
        },
        {
          "id": "example-3-java",
          "language": "java",
          "label": "Java",
          "code": "OkHttpClient client = new OkHttpClient().newBuilder()\n   .build();\nMediaType mediaType = MediaType.parse(\"application/json\");\nRequestBody body = RequestBody.create(mediaType, \"{\\n  \\\"code\\\": \\\"GOLD_REWARD_2026\\\",\\n  \\\"description\\\": \\\"Gold Member Exclusive Reward\\\",\\n  \\\"statusCode\\\": \\\"A\\\",\\n  \\\"startDate\\\": \\\"2025-01-01\\\",\\n  \\\"redemptionTypeCode\\\": \\\"I\\\",\\n  \\\"rank\\\": 1,\\n  \\\"redeemable\\\": true,\\n  \\\"workflowStatus\\\": \\\"WORKING\\\",\\n  \\\"quantities\\\": {\\n    \\\"pointCategoryCode\\\": \\\"POINTS\\\",\\n    \\\"amountProvided\\\": false,\\n    \\\"minimumQuantity\\\": 1\\n  },\\n  \\\"fulfillment\\\": {\\n    \\\"fulfillmentPathCode\\\": \\\"COUPON\\\"\\n  },\\n  \\\"displayOnline\\\": true\\n}\");\nRequest request = new Request.Builder()\n   .url(\"https://api.b.preview.loyaltyservices.io/api/v3/redemption-rules/{code}\")\n   .method(\"PUT\", body)\n   .addHeader(\"accept\", \"application/json\")\n   .addHeader(\"content-type\", \"application/json\")\n   .build();\nResponse response = client.newCall(request).execute();"
        }
      ],
      "selectedLanguageId": "example-0-curl"
    },
    "results": {
      "languages": [
        {
          "id": "response-0-200",
          "language": "200",
          "code": "// Success\n{\n  \"id\": \"\",\n  \"code\": \"GOLD_REWARD_2026\",\n  \"groupCode\": \"GOLD_REWARD\",\n  \"description\": \"Gold Member Exclusive Reward\",\n  \"statusCode\": \"\",\n  \"startDate\": \"2025-01-01\",\n  \"endDate\": \"2050-12-31\",\n  \"redemptionTypeCode\": \"I\",\n  \"rank\": 10,\n  \"redeemable\": true,\n  \"workflowStatus\": \"\",\n  \"rawExpression\": \"\",\n  \"faceValue\": 500,\n  \"dataRelease\": \"\",\n  \"dataReleaseName\": \"Rules Release 2025\",\n  \"dataReleaseItemStatus\": \"LIVE\",\n  \"partnerCode\": \"\",\n  \"minimumRoleRequired\": \"\",\n  \"quantities\": {\n    \"pointCategoryCode\": \"Points\",\n    \"amountProvided\": false,\n    \"pointsRequired\": 5000,\n    \"providedAmountRate\": 100,\n    \"minimumQuantity\": 1,\n    \"maximumQuantity\": \"\",\n    \"redeemIncrement\": 1\n  },\n  \"fulfillment\": {\n    \"fulfillmentPathCode\": \"COUPON\",\n    \"communicationTypeCode\": \"RedemptionConfirmationEmail\",\n    \"couponAward\": \"\",\n    \"redemptionRuleBonusCode\": \"\",\n    \"merchant\": \"\"\n  },\n  \"content\": \"\",\n  \"displayOnline\": false,\n  \"providerDetails\": \"{\\\"catalogId\\\":\\\"CAT123\\\",\\\"sku\\\":\\\"SKU123-D-001\\\"}\",\n  \"tags\": [\n    \"\"\n  ],\n  \"allowedActions\": {\n    \"modify\": false,\n    \"manage\": false,\n    \"admin\": false,\n    \"delete\": false\n  }\n}"
        },
        {
          "id": "response-1-400",
          "language": "400",
          "code": "// Bad request\n{\n  \"errors\": [\n    {\n      \"code\": \"\",\n      \"fieldName\": \"\",\n      \"message\": \"\",\n      \"messageParameters\": [\n        {}\n      ]\n    }\n  ]\n}"
        },
        {
          "id": "response-2-401",
          "language": "401",
          "code": "// Unauthorized\n"
        },
        {
          "id": "response-3-403",
          "language": "403",
          "code": "// Forbidden\n"
        },
        {
          "id": "response-4-404",
          "language": "404",
          "code": "// Redemption Rule not found\n"
        },
        {
          "id": "response-5-500",
          "language": "500",
          "code": "// Internal error\n"
        }
      ],
      "selectedLanguageId": "response-0-200"
    }
  },
  "children": [
    {
      "text": ""
    }
  ]
}