---
title: Create Redemption Rule
slug: create-redemption-rule
docTags: 
createdAt: 2026-02-03T14:35:33.415Z
---

{
  "id": "a7fdsrvaQ049xPyu43hGw",
  "type": "api-oas-v2",
  "data": {
    "method": "POST",
    "url": "https://api.b.preview.loyaltyservices.io/api/v3/redemption-rules",
    "servers": [
      {
        "url": "https://api.b.preview.loyaltyservices.io/api/v3/redemption-rules"
      }
    ],
    "name": "Create Redemption Rule",
    "description": "Create a new redemption rule",
    "contentType": "application/json",
    "request": {
      "pathParameters": [],
      "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",
              "example": "GOLD_REWARD_2026",
              "minLength": 1,
              "maxLength": 30
            },
            {
              "name": "groupCode",
              "kind": "optional",
              "type": "string",
              "description": "<p>Redemption group code used to group redemption rules together. Used for configuring personalized discounts where the highest ranked rule in the group is presented to the member as a strike-through discount in the rewards/redemption-rules service.</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 (DataCode: RedemptionRuleStatus). A = Active, I = Inactive</p>",
              "default": "A"
            },
            {
              "name": "startDate",
              "kind": "required",
              "type": "string<date>",
              "description": "Start date for rule validity",
              "example": "2025-01-01",
              "format": "date"
            },
            {
              "name": "endDate",
              "kind": "optional",
              "type": "string<date>",
              "description": "<p>End date for rule validity (null = forever)</p>",
              "example": "2050-12-31",
              "format": "date"
            },
            {
              "name": "redemptionTypeCode",
              "kind": "required",
              "type": "string",
              "description": "<p>Type of redemption (DataCode: RedemptionType)</p>",
              "example": "I = Item, T = Travel"
            },
            {
              "name": "rank",
              "kind": "optional",
              "type": "integer<int32>",
              "description": "Highest ranked RedemptionRule is returned at the top of the list. Used to show the highest discounted redemptions first. Rank values must be unique within the same groupCode.",
              "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>Workflow state (DataCode: RuleWorkflowStatus). WORKING or READY</p>",
              "default": "WORKING"
            },
            {
              "name": "rawExpression",
              "kind": "optional",
              "type": "string",
              "description": "Expression defining eligibility. If not set will qualify for all members"
            },
            {
              "name": "faceValue",
              "kind": "optional",
              "type": "number",
              "description": "<p>Face value for gift cards, certificates</p>",
              "example": 500
            },
            {
              "name": "dataRelease",
              "kind": "optional",
              "type": "integer<int64>",
              "description": "DataRelease for release management",
              "format": "int64"
            },
            {
              "name": "dataReleaseName",
              "kind": "optional",
              "type": "string",
              "description": "Name of the data release",
              "example": "Rules Release 2025",
              "maxLength": 250
            },
            {
              "name": "dataReleaseItemStatus",
              "kind": "optional",
              "type": "string",
              "description": "Status of the data release item. Values for this field need to match datacodes setup with a CodeType of DataReleaseItemStatus",
              "example": "LIVE",
              "maxLength": 50
            },
            {
              "name": "partnerCode",
              "kind": "optional",
              "type": "string",
              "description": "<p>Partner Code for partner-based redemptions</p>"
            },
            {
              "name": "minimumRoleRequired",
              "kind": "optional",
              "type": "integer<int64>",
              "description": "Minimum UserRole required to redeem",
              "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 to deduct (DataCode: PointCategory). Supports custom currencies and DMX (data migration currency)</p>",
                  "example": "POINTS",
                  "default": "POINTS"
                },
                {
                  "name": "amountProvided",
                  "kind": "required",
                  "type": "boolean",
                  "description": "<p>Whether user provides the amount (true) or uses fixed points (false)</p>",
                  "example": false,
                  "default": false
                },
                {
                  "name": "pointsRequired",
                  "kind": "optional",
                  "type": "number",
                  "description": "<p>Fixed point cost (required if amountProvided = false)</p>",
                  "example": 5000
                },
                {
                  "name": "providedAmountRate",
                  "kind": "optional",
                  "type": "number",
                  "description": "<p>Conversion rate for variable amount (required if amountProvided = true)</p>",
                  "example": 100
                },
                {
                  "name": "minimumQuantity",
                  "kind": "required",
                  "type": "integer<int32>",
                  "description": "Minimum redemption quantity",
                  "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>Fulfillment path defining how redemption is delivered - COUPON for coupon awards, EXTERNAL for third-party fulfillment (DataCode: FulfillmentPath)</p>",
                  "example": "COUPON"
                },
                {
                  "name": "communicationTypeCode",
                  "kind": "optional",
                  "type": "string",
                  "description": "<p>Type of communication to trigger (DataCode: CommunicationType)</p>",
                  "example": "RedemptionConfirmationEmail"
                },
                {
                  "name": "couponAward",
                  "kind": "optional",
                  "type": "string",
                  "description": "<p>Coupon award to issue (if fulfillmentPath = COUPON)</p>"
                },
                {
                  "name": "redemptionRuleBonusCode",
                  "kind": "optional",
                  "type": "string",
                  "description": "Bonus rule to apply on redemption"
                },
                {
                  "name": "merchant",
                  "kind": "optional",
                  "type": "string",
                  "description": "<p>Merchant identifier for partner-based fulfillment</p>",
                  "maxLength": 50
                }
              ]
            },
            {
              "name": "content",
              "kind": "optional",
              "type": "string",
              "description": "ContentKey of the GenericItem associated with this rule",
              "maxLength": 50
            },
            {
              "name": "displayOnline",
              "kind": "optional",
              "type": "boolean",
              "description": "Flag to indicate if the redemption rule should be displayed online",
              "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"
              }
            }
          },
          "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",
                "example": "GOLD_REWARD_2026",
                "minLength": 1,
                "maxLength": 30
              },
              {
                "name": "groupCode",
                "kind": "optional",
                "type": "string",
                "description": "<p>Redemption group code used to group redemption rules together. Used for configuring personalized discounts where the highest ranked rule in the group is presented to the member as a strike-through discount in the rewards/redemption-rules service.</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 (DataCode: RedemptionRuleStatus). A = Active, I = Inactive</p>",
                "default": "A"
              },
              {
                "name": "startDate",
                "kind": "required",
                "type": "string<date>",
                "description": "Start date for rule validity",
                "example": "2025-01-01",
                "format": "date"
              },
              {
                "name": "endDate",
                "kind": "optional",
                "type": "string<date>",
                "description": "<p>End date for rule validity (null = forever)</p>",
                "example": "2050-12-31",
                "format": "date"
              },
              {
                "name": "redemptionTypeCode",
                "kind": "required",
                "type": "string",
                "description": "<p>Type of redemption (DataCode: RedemptionType)</p>",
                "example": "I = Item, T = Travel"
              },
              {
                "name": "rank",
                "kind": "optional",
                "type": "integer<int32>",
                "description": "Highest ranked RedemptionRule is returned at the top of the list. Used to show the highest discounted redemptions first. Rank values must be unique within the same groupCode.",
                "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>Workflow state (DataCode: RuleWorkflowStatus). WORKING or READY</p>",
                "default": "WORKING"
              },
              {
                "name": "rawExpression",
                "kind": "optional",
                "type": "string",
                "description": "Expression defining eligibility. If not set will qualify for all members"
              },
              {
                "name": "faceValue",
                "kind": "optional",
                "type": "number",
                "description": "<p>Face value for gift cards, certificates</p>",
                "example": 500
              },
              {
                "name": "dataRelease",
                "kind": "optional",
                "type": "integer<int64>",
                "description": "DataRelease for release management",
                "format": "int64"
              },
              {
                "name": "dataReleaseName",
                "kind": "optional",
                "type": "string",
                "description": "Name of the data release",
                "example": "Rules Release 2025",
                "maxLength": 250
              },
              {
                "name": "dataReleaseItemStatus",
                "kind": "optional",
                "type": "string",
                "description": "Status of the data release item. Values for this field need to match datacodes setup with a CodeType of DataReleaseItemStatus",
                "example": "LIVE",
                "maxLength": 50
              },
              {
                "name": "partnerCode",
                "kind": "optional",
                "type": "string",
                "description": "<p>Partner Code for partner-based redemptions</p>"
              },
              {
                "name": "minimumRoleRequired",
                "kind": "optional",
                "type": "integer<int64>",
                "description": "Minimum UserRole required to redeem",
                "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 to deduct (DataCode: PointCategory). Supports custom currencies and DMX (data migration currency)</p>",
                    "example": "POINTS",
                    "default": "POINTS"
                  },
                  {
                    "name": "amountProvided",
                    "kind": "required",
                    "type": "boolean",
                    "description": "<p>Whether user provides the amount (true) or uses fixed points (false)</p>",
                    "example": false,
                    "default": false
                  },
                  {
                    "name": "pointsRequired",
                    "kind": "optional",
                    "type": "number",
                    "description": "<p>Fixed point cost (required if amountProvided = false)</p>",
                    "example": 5000
                  },
                  {
                    "name": "providedAmountRate",
                    "kind": "optional",
                    "type": "number",
                    "description": "<p>Conversion rate for variable amount (required if amountProvided = true)</p>",
                    "example": 100
                  },
                  {
                    "name": "minimumQuantity",
                    "kind": "required",
                    "type": "integer<int32>",
                    "description": "Minimum redemption quantity",
                    "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>Fulfillment path defining how redemption is delivered - COUPON for coupon awards, EXTERNAL for third-party fulfillment (DataCode: FulfillmentPath)</p>",
                    "example": "COUPON"
                  },
                  {
                    "name": "communicationTypeCode",
                    "kind": "optional",
                    "type": "string",
                    "description": "<p>Type of communication to trigger (DataCode: CommunicationType)</p>",
                    "example": "RedemptionConfirmationEmail"
                  },
                  {
                    "name": "couponAward",
                    "kind": "optional",
                    "type": "string",
                    "description": "<p>Coupon award to issue (if fulfillmentPath = COUPON)</p>"
                  },
                  {
                    "name": "redemptionRuleBonusCode",
                    "kind": "optional",
                    "type": "string",
                    "description": "Bonus rule to apply on redemption"
                  },
                  {
                    "name": "merchant",
                    "kind": "optional",
                    "type": "string",
                    "description": "<p>Merchant identifier for partner-based fulfillment</p>",
                    "maxLength": 50
                  }
                ]
              },
              {
                "name": "content",
                "kind": "optional",
                "type": "string",
                "description": "ContentKey of the GenericItem associated with this rule",
                "maxLength": 50
              },
              {
                "name": "displayOnline",
                "kind": "optional",
                "type": "boolean",
                "description": "Flag to indicate if the redemption rule should be displayed online",
                "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
          }
        ]
      },
      {
        "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": "500",
        "description": "Internal error",
        "jsonExample": "",
        "isExpanded": true
      }
    ],
    "hasXCodeSamples": false,
    "examples": {
      "languages": [
        {
          "id": "oy4hx8sb4rMshemgEg93V",
          "language": "curl",
          "label": "cURL",
          "code": "curl --request POST \\\n     --url https://api.b.preview.loyaltyservices.io/api/v3/redemption-rules \\\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 = Item, T = Travel\",\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": "MP40zWdfksoxp_ehKh7Wb",
          "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\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.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 = Item, T = Travel\",\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": "Yn2IJngx-7Ky4FYvivPFw",
          "language": "python",
          "label": "Python",
          "code": "import requests\nimport json\n\nurl = \"https://api.b.preview.loyaltyservices.io/api/v3/redemption-rules\"\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 = Item, T = Travel\",\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(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
        },
        {
          "id": "8OrjOp0tn2YPTM8PiHLld",
          "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 = Item, T = Travel\\\",\\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\")\n   .method(\"POST\", body)\n   .addHeader(\"accept\", \"application/json\")\n   .addHeader(\"content-type\", \"application/json\")\n   .build();\nResponse response = client.newCall(request).execute();"
        }
      ],
      "selectedLanguageId": "oy4hx8sb4rMshemgEg93V"
    },
    "results": {
      "languages": [
        {
          "id": "9U4jq4eh8vTBW90xkfLve",
          "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 = Item, T = Travel\",\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}"
        },
        {
          "id": "oPfYeUQ0nS25IfGnCGw-V",
          "language": "400",
          "code": "// Bad request\n{\n  \"errors\": [\n    {\n      \"code\": \"\",\n      \"fieldName\": \"\",\n      \"message\": \"\",\n      \"messageParameters\": [\n        {}\n      ]\n    }\n  ]\n}"
        },
        {
          "id": "ynxAMLmxFx6eYMVJ5Tqc9",
          "language": "401",
          "code": "// Unauthorized\n"
        },
        {
          "id": "4-U4bbL244-kG3BOyDHok",
          "language": "403",
          "code": "// Forbidden\n"
        },
        {
          "id": "BU2JkCdq_g3rlgxsUtmal",
          "language": "500",
          "code": "// Internal error\n"
        }
      ],
      "selectedLanguageId": "9U4jq4eh8vTBW90xkfLve"
    }
  },
  "children": [
    {
      "text": ""
    }
  ]
}