{
  "openapi": "3.1.0",
  "info": {
    "title": "Events - Events loyalty activity",
    "version": "2024-01-01",
    "description": ""
  },
  "paths": {},
  "components": {
    "schemas": {
      "EventLoyaltyMemberCreatedData": {
        "title": "Loyalty Member Created Data",
        "type": "object",
        "description": "Event data object schema for `vl.member.created`.",
        "properties": {
          "member": {
            "$ref": "#/components/schemas/LoyaltyV2Member"
          },
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "member",
          "program"
        ]
      },
      "EventLoyaltyMemberUpdatedData": {
        "title": "Loyalty Member Updated Data",
        "type": "object",
        "description": "Event data object schema for `vl.member.updated`.",
        "properties": {
          "member": {
            "$ref": "#/components/schemas/LoyaltyV2Member"
          },
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "member",
          "program"
        ]
      },
      "EventLoyaltyMemberDeletedData": {
        "title": "Loyalty Member Deleted Data",
        "type": "object",
        "description": "Event data object schema for `vl.member.deleted`.",
        "properties": {
          "member": {
            "$ref": "#/components/schemas/LoyaltyV2Member"
          },
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "member",
          "program"
        ]
      },
      "EventLoyaltyMemberActivatedData": {
        "title": "Loyalty Member Activated Data",
        "type": "object",
        "description": "Event data object schema for `vl.member.activated`.",
        "properties": {
          "member": {
            "$ref": "#/components/schemas/LoyaltyV2Member"
          },
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "member",
          "program"
        ]
      },
      "EventLoyaltyMemberDeactivatedData": {
        "title": "Loyalty Member Deactivated Data",
        "type": "object",
        "description": "Event data object schema for `vl.member.deactivated`.",
        "properties": {
          "member": {
            "$ref": "#/components/schemas/LoyaltyV2Member"
          },
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "member",
          "program"
        ]
      },
      "EventLoyaltyMemberCardAssignedData": {
        "title": "Loyalty Member Card Assigned Data",
        "type": "object",
        "description": "Event data object schema for `vl.member.card.assigned`.",
        "properties": {
          "member": {
            "$ref": "#/components/schemas/LoyaltyV2Member"
          },
          "card": {
            "$ref": "#/components/schemas/LoyaltyV2Card"
          },
          "member_card": {
            "$ref": "#/components/schemas/LoyaltyV2MemberCard"
          },
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "member",
          "card",
          "member_card",
          "program"
        ]
      },
      "EventLoyaltyMemberCardUnassignedData": {
        "title": "Loyalty Member Card Unassigned Data",
        "type": "object",
        "description": "Event data object schema for `vl.member.card.unassigned`.",
        "properties": {
          "member": {
            "$ref": "#/components/schemas/LoyaltyV2Member"
          },
          "card": {
            "$ref": "#/components/schemas/LoyaltyV2Card"
          },
          "member_card": {
            "$ref": "#/components/schemas/LoyaltyV2MemberCard"
          },
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "member",
          "card",
          "member_card",
          "program"
        ]
      },
      "EventLoyaltyActivityProgramCreatedData": {
        "title": "Program created data",
        "type": "object",
        "description": "Event data object schema for `vl.program.created`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "program"
        ]
      },
      "EventLoyaltyActivityProgramUpdatedData": {
        "title": "Program updated data",
        "type": "object",
        "description": "Event data object schema for `vl.program.updated`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "program"
        ]
      },
      "EventLoyaltyActivityProgramDeletedData": {
        "title": "Program deleted data",
        "type": "object",
        "description": "Event data object schema for `vl.program.deleted`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "program"
        ]
      },
      "EventLoyaltyActivityProgramActivatedData": {
        "title": "Program activated data",
        "type": "object",
        "description": "Event data object schema for `vl.program.activated`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "program"
        ]
      },
      "EventLoyaltyActivityProgramDeactivatedData": {
        "title": "Program deactivated data",
        "type": "object",
        "description": "Event data object schema for `vl.program.deactivated`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "program"
        ]
      },
      "EventLoyaltyActivityProgramCardDefinitionAssignedData": {
        "title": "Program card definition assigned data",
        "type": "object",
        "description": "Event data object schema for `vl.program.card_definition.assigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "card_definition": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinition"
          },
          "program_card_definition": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramCardDefinition"
          }
        },
        "required": [
          "program",
          "card_definition",
          "program_card_definition"
        ]
      },
      "EventLoyaltyActivityProgramCardDefinitionUnassignedData": {
        "title": "Program card definition unassigned data",
        "type": "object",
        "description": "Event data object schema for `vl.program.card_definition.unassigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "card_definition": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinition"
          },
          "program_card_definition": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramCardDefinition"
          }
        },
        "required": [
          "program",
          "card_definition",
          "program_card_definition"
        ]
      },
      "EventLoyaltyActivityProgramEarningRuleAssignedData": {
        "title": "Program earning rule assigned data",
        "type": "object",
        "description": "Event data object schema for `vl.program.earning_rule.assigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "earning_rule": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRule"
          },
          "program_earning_rule": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramEarningRule"
          }
        },
        "required": [
          "program",
          "earning_rule",
          "program_earning_rule"
        ]
      },
      "EventLoyaltyActivityProgramEarningRuleUnassignedData": {
        "title": "Program earning rule unassigned data",
        "type": "object",
        "description": "Event data object schema for `vl.program.earning_rule.unassigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "earning_rule": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRule"
          },
          "program_earning_rule": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramEarningRule"
          }
        },
        "required": [
          "program",
          "earning_rule",
          "program_earning_rule"
        ]
      },
      "EventLoyaltyActivityProgramRewardAssignedData": {
        "title": "Program reward assigned data",
        "type": "object",
        "description": "Event data object schema for `vl.program.reward.assigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityReward"
          },
          "program_reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramReward"
          }
        },
        "required": [
          "program",
          "reward",
          "program_reward"
        ]
      },
      "EventLoyaltyActivityProgramRewardUnassignedData": {
        "title": "Program reward unassigned data",
        "type": "object",
        "description": "Event data object schema for `vl.program.reward.unassigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityReward"
          },
          "program_reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramReward"
          }
        },
        "required": [
          "program",
          "reward",
          "program_reward"
        ]
      },
      "EventLoyaltyActivityProgramRewardUpdatedData": {
        "title": "Program reward updated data",
        "type": "object",
        "description": "Event data object schema for `vl.program.reward.updated`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityReward"
          },
          "program_reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramReward"
          }
        },
        "required": [
          "program",
          "reward",
          "program_reward"
        ]
      },
      "EventLoyaltyActivityProgramTierStructureAssignedData": {
        "title": "Program tier structure assigned data",
        "type": "object",
        "description": "Event data object schema for `vl.program.tier_structure.assigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructure"
          },
          "program_tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramTierStructure"
          }
        },
        "required": [
          "program",
          "tier_structure",
          "program_tier_structure"
        ]
      },
      "EventLoyaltyActivityProgramTierStructureUnassignedData": {
        "title": "Program tier structure unassigned data",
        "type": "object",
        "description": "Event data object schema for `vl.program.tier_structure.unassigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructure"
          },
          "program_tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramTierStructure"
          }
        },
        "required": [
          "program",
          "tier_structure",
          "program_tier_structure"
        ]
      },
      "EventLoyaltyActivityCardDefinitionCreatedData": {
        "title": "Card definition created data",
        "type": "object",
        "description": "Event data object schema for `vl.card_definition.created`.",
        "properties": {
          "card_definition": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinition"
          }
        },
        "required": [
          "card_definition"
        ]
      },
      "EventLoyaltyActivityCardDefinitionUpdatedData": {
        "title": "Card definition updated data",
        "type": "object",
        "description": "Event data object schema for `vl.card_definition.updated`.",
        "properties": {
          "card_definition": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinition"
          }
        },
        "required": [
          "card_definition"
        ]
      },
      "EventLoyaltyActivityCardDefinitionDeletedData": {
        "title": "Card definition deleted data",
        "type": "object",
        "description": "Event data object schema for `vl.card_definition.deleted`.",
        "properties": {
          "card_definition": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinition"
          }
        },
        "required": [
          "card_definition"
        ]
      },
      "EventLoyaltyActivityCardDefinitionActivatedData": {
        "title": "Card definition activated data",
        "type": "object",
        "description": "Event data object schema for `vl.card_definition.activated`.",
        "properties": {
          "card_definition": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinition"
          }
        },
        "required": [
          "card_definition"
        ]
      },
      "EventLoyaltyActivityCardDefinitionDraftedData": {
        "title": "Card definition drafted data",
        "type": "object",
        "description": "Event data object schema for `vl.card_definition.drafted`.",
        "properties": {
          "card_definition": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinition"
          }
        },
        "required": [
          "card_definition"
        ]
      },
      "EventLoyaltyActivityCardDefinitionAssignedData": {
        "title": "Card definition assigned data",
        "type": "object",
        "description": "Event data object schema for `vl.card_definition.assigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "card_definition": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinition"
          },
          "program_card_definition": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramCardDefinition"
          }
        },
        "required": [
          "program",
          "card_definition",
          "program_card_definition"
        ]
      },
      "EventLoyaltyActivityCardDefinitionUnassignedData": {
        "title": "Card definition unassigned data",
        "type": "object",
        "description": "Event data object schema for `vl.card_definition.unassigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "card_definition": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinition"
          },
          "program_card_definition": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramCardDefinition"
          }
        },
        "required": [
          "program",
          "card_definition",
          "program_card_definition"
        ]
      },
      "EventLoyaltyActivityEarningRuleCreatedData": {
        "title": "Earning rule created data",
        "type": "object",
        "description": "Event data object schema for `vl.earning_rule.created`.",
        "properties": {
          "earning_rule": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRule"
          }
        },
        "required": [
          "earning_rule"
        ]
      },
      "EventLoyaltyActivityEarningRuleUpdatedData": {
        "title": "Earning rule updated data",
        "type": "object",
        "description": "Event data object schema for `vl.earning_rule.updated`.",
        "properties": {
          "earning_rule": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRule"
          }
        },
        "required": [
          "earning_rule"
        ]
      },
      "EventLoyaltyActivityEarningRuleDeletedData": {
        "title": "Earning rule deleted data",
        "type": "object",
        "description": "Event data object schema for `vl.earning_rule.deleted`.",
        "properties": {
          "earning_rule": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRule"
          }
        },
        "required": [
          "earning_rule"
        ]
      },
      "EventLoyaltyActivityEarningRuleActivatedData": {
        "title": "Earning rule activated data",
        "type": "object",
        "description": "Event data object schema for `vl.earning_rule.activated`.",
        "properties": {
          "earning_rule": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRule"
          }
        },
        "required": [
          "earning_rule"
        ]
      },
      "EventLoyaltyActivityEarningRuleDeactivatedData": {
        "title": "Earning rule deactivated data",
        "type": "object",
        "description": "Event data object schema for `vl.earning_rule.deactivated`.",
        "properties": {
          "earning_rule": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRule"
          }
        },
        "required": [
          "earning_rule"
        ]
      },
      "EventLoyaltyActivityEarningRuleDraftedData": {
        "title": "Earning rule drafted data",
        "type": "object",
        "description": "Event data object schema for `vl.earning_rule.drafted`.",
        "properties": {
          "earning_rule": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRule"
          }
        },
        "required": [
          "earning_rule"
        ]
      },
      "EventLoyaltyActivityEarningRuleAssignedData": {
        "title": "Earning rule assigned data",
        "type": "object",
        "description": "Event data object schema for `vl.earning_rule.assigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "earning_rule": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRule"
          },
          "program_earning_rule": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramEarningRule"
          }
        },
        "required": [
          "program",
          "earning_rule",
          "program_earning_rule"
        ]
      },
      "EventLoyaltyActivityEarningRuleUnassignedData": {
        "title": "Earning rule unassigned data",
        "type": "object",
        "description": "Event data object schema for `vl.earning_rule.unassigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "earning_rule": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRule"
          },
          "program_earning_rule": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramEarningRule"
          }
        },
        "required": [
          "program",
          "earning_rule",
          "program_earning_rule"
        ]
      },
      "EventLoyaltyActivityRewardCreatedData": {
        "title": "Reward created data",
        "type": "object",
        "description": "Event data object schema for `vl.reward.created`.",
        "properties": {
          "reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityReward"
          }
        },
        "required": [
          "reward"
        ]
      },
      "EventLoyaltyActivityRewardUpdatedData": {
        "title": "Reward updated data",
        "type": "object",
        "description": "Event data object schema for `vl.reward.updated`.",
        "properties": {
          "reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityReward"
          }
        },
        "required": [
          "reward"
        ]
      },
      "EventLoyaltyActivityRewardDeletedData": {
        "title": "Reward deleted data",
        "type": "object",
        "description": "Event data object schema for `vl.reward.deleted`.",
        "properties": {
          "reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityReward"
          }
        },
        "required": [
          "reward"
        ]
      },
      "EventLoyaltyActivityRewardAssignedData": {
        "title": "Reward assigned data",
        "type": "object",
        "description": "Event data object schema for `vl.reward.assigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityReward"
          },
          "program_reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramReward"
          }
        },
        "required": [
          "program",
          "reward",
          "program_reward"
        ]
      },
      "EventLoyaltyActivityRewardUnassignedData": {
        "title": "Reward unassigned data",
        "type": "object",
        "description": "Event data object schema for `vl.reward.unassigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityReward"
          },
          "program_reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramReward"
          }
        },
        "required": [
          "program",
          "reward",
          "program_reward"
        ]
      },
      "EventLoyaltyActivityRewardActivatedData": {
        "title": "Reward activated data",
        "type": "object",
        "description": "Event data object schema for `vl.reward.activated`.",
        "properties": {
          "reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityReward"
          }
        },
        "required": [
          "reward"
        ]
      },
      "EventLoyaltyActivityRewardDeactivatedData": {
        "title": "Reward deactivated data",
        "type": "object",
        "description": "Event data object schema for `vl.reward.deactivated`.",
        "properties": {
          "reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityReward"
          }
        },
        "required": [
          "reward"
        ]
      },
      "EventLoyaltyActivityRewardDraftedData": {
        "title": "Reward drafted data",
        "type": "object",
        "description": "Event data object schema for `vl.reward.drafted`.",
        "properties": {
          "reward": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityReward"
          }
        },
        "required": [
          "reward"
        ]
      },
      "EventLoyaltyActivityBenefitCreatedData": {
        "title": "Benefit created data",
        "type": "object",
        "description": "Event data object schema for `vl.benefit.created`.",
        "properties": {
          "benefit": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityBenefit"
          }
        },
        "required": [
          "benefit"
        ]
      },
      "EventLoyaltyActivityBenefitUpdatedData": {
        "title": "Benefit updated data",
        "type": "object",
        "description": "Event data object schema for `vl.benefit.updated`.",
        "properties": {
          "benefit": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityBenefit"
          }
        },
        "required": [
          "benefit"
        ]
      },
      "EventLoyaltyActivityBenefitDeletedData": {
        "title": "Benefit deleted data",
        "type": "object",
        "description": "Event data object schema for `vl.benefit.deleted`.",
        "properties": {
          "benefit": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityBenefit"
          }
        },
        "required": [
          "benefit"
        ]
      },
      "EventLoyaltyActivityBenefitActivatedData": {
        "title": "Benefit activated data",
        "type": "object",
        "description": "Event data object schema for `vl.benefit.activated`.",
        "properties": {
          "benefit": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityBenefit"
          }
        },
        "required": [
          "benefit"
        ]
      },
      "EventLoyaltyActivityBenefitDraftedData": {
        "title": "Benefit drafted data",
        "type": "object",
        "description": "Event data object schema for `vl.benefit.drafted`.",
        "properties": {
          "benefit": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityBenefit"
          }
        },
        "required": [
          "benefit"
        ]
      },
      "EventLoyaltyActivityTierStructureCreatedData": {
        "title": "Tier structure created data",
        "type": "object",
        "description": "Event data object schema for `vl.tier_structure.created`.",
        "properties": {
          "tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructure"
          }
        },
        "required": [
          "tier_structure"
        ]
      },
      "EventLoyaltyActivityTierStructureUpdatedData": {
        "title": "Tier structure updated data",
        "type": "object",
        "description": "Event data object schema for `vl.tier_structure.updated`.",
        "properties": {
          "tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructure"
          }
        },
        "required": [
          "tier_structure"
        ]
      },
      "EventLoyaltyActivityTierStructureDeletedData": {
        "title": "Tier structure deleted data",
        "type": "object",
        "description": "Event data object schema for `vl.tier_structure.deleted`.",
        "properties": {
          "tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructure"
          }
        },
        "required": [
          "tier_structure"
        ]
      },
      "EventLoyaltyActivityTierStructureActivatedData": {
        "title": "Tier structure activated data",
        "type": "object",
        "description": "Event data object schema for `vl.tier_structure.activated`.",
        "properties": {
          "tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructure"
          }
        },
        "required": [
          "tier_structure"
        ]
      },
      "EventLoyaltyActivityTierStructureDeactivatedData": {
        "title": "Tier structure deactivated data",
        "type": "object",
        "description": "Event data object schema for `vl.tier_structure.deactivated`.",
        "properties": {
          "tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructure"
          }
        },
        "required": [
          "tier_structure"
        ]
      },
      "EventLoyaltyActivityTierStructureDraftedData": {
        "title": "Tier structure drafted data",
        "type": "object",
        "description": "Event data object schema for `vl.tier_structure.drafted`.",
        "properties": {
          "tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructure"
          }
        },
        "required": [
          "tier_structure"
        ]
      },
      "EventLoyaltyActivityTierStructureAssignedData": {
        "title": "Tier structure assigned data",
        "type": "object",
        "description": "Event data object schema for `vl.tier_structure.assigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructure"
          },
          "program_tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramTierStructure"
          }
        },
        "required": [
          "program",
          "tier_structure",
          "program_tier_structure"
        ]
      },
      "EventLoyaltyActivityTierStructureUnassignedData": {
        "title": "Tier structure unassigned data",
        "type": "object",
        "description": "Event data object schema for `vl.tier_structure.unassigned`.",
        "properties": {
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          },
          "tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructure"
          },
          "program_tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramTierStructure"
          }
        },
        "required": [
          "program",
          "tier_structure",
          "program_tier_structure"
        ]
      },
      "EventLoyaltyActivityTierStructureTierCreatedData": {
        "title": "Tier created data",
        "type": "object",
        "description": "Event data object schema for `vl.tier_structure.tier.created`.",
        "properties": {
          "tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructure"
          },
          "tier": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTier"
          }
        },
        "required": [
          "tier_structure",
          "tier"
        ]
      },
      "EventLoyaltyActivityTierStructureTierUpdatedData": {
        "title": "Tier updated data",
        "type": "object",
        "description": "Event data object schema for `vl.tier_structure.tier.updated`.",
        "properties": {
          "tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructure"
          },
          "tier": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTier"
          }
        },
        "required": [
          "tier_structure",
          "tier"
        ]
      },
      "EventLoyaltyActivityTierStructureTierDeletedData": {
        "title": "Tier deleted data",
        "type": "object",
        "description": "Event data object schema for `vl.tier_structure.tier.deleted`.",
        "properties": {
          "tier_structure": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructure"
          },
          "tier": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTier"
          }
        },
        "required": [
          "tier_structure",
          "tier"
        ]
      },
      "EventLoyaltyActivityCardCreatedData": {
        "title": "Card created data",
        "type": "object",
        "description": "Event data object schema for `vl.card.created`.",
        "properties": {
          "card": {
            "$ref": "#/components/schemas/LoyaltyV2Card"
          },
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "card",
          "program"
        ]
      },
      "EventLoyaltyActivityCardAssignedData": {
        "title": "Card assigned data",
        "type": "object",
        "description": "Event data object schema for `vl.card.assigned`.",
        "properties": {
          "card": {
            "$ref": "#/components/schemas/LoyaltyV2Card"
          },
          "member": {
            "$ref": "#/components/schemas/LoyaltyV2Member"
          },
          "member_card": {
            "$ref": "#/components/schemas/LoyaltyV2MemberCard"
          },
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "card",
          "member",
          "member_card",
          "program"
        ]
      },
      "EventLoyaltyActivityCardUnassignedData": {
        "title": "Card unassigned data",
        "type": "object",
        "description": "Event data object schema for `vl.card.unassigned`.",
        "properties": {
          "card": {
            "$ref": "#/components/schemas/LoyaltyV2Card"
          },
          "member": {
            "$ref": "#/components/schemas/LoyaltyV2Member"
          },
          "member_card": {
            "$ref": "#/components/schemas/LoyaltyV2MemberCard"
          },
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "card",
          "member",
          "member_card",
          "program"
        ]
      },
      "EventLoyaltyActivityCardCodeGenerationSucceededData": {
        "title": "Card code generation succeeded data",
        "type": "object",
        "description": "Event data object schema for `vl.card.code_generation.succeeded`.",
        "properties": {
          "card": {
            "$ref": "#/components/schemas/LoyaltyV2Card"
          },
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2Program"
          }
        },
        "required": [
          "card",
          "program"
        ]
      },
      "EventLoyaltyActivityCardCodeGenerationFailedData": {
        "title": "Card code generation failed data",
        "type": "object",
        "description": "Event data object schema for `vl.card.code_generation.failed`.",
        "properties": {
          "card": {
            "$ref": "#/components/schemas/LoyaltyV2Card"
          },
          "program": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityProgramReference"
          },
          "result": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardCodeGenerationFailure"
          }
        },
        "required": [
          "card",
          "program",
          "result"
        ]
      },
      "LoyaltyV2Member": {
        "title": "Loyalty Program Member",
        "type": "object",
        "description": "Loyalty v2 program member snapshot recorded with the activity.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^lmbr_[a-f0-9]+$",
            "description": "Unique member ID."
          },
          "customer_id": {
            "type": "string",
            "pattern": "^cust_[a-zA-Z0-9]+$",
            "description": "ID of the enrolled customer."
          },
          "program_id": {
            "type": "string",
            "pattern": "^lprg_[a-f0-9]+$",
            "description": "ID of the Loyalty v2 program."
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "INACTIVE",
              "DELETED"
            ],
            "description": "Member status."
          },
          "metadata": {
            "type": "object",
            "description": "Custom member metadata."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the member was created."
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp when the member was last updated, or `null`."
          },
          "object": {
            "type": "string",
            "const": "member",
            "description": "Object type. Always `member`."
          }
        },
        "required": [
          "id",
          "customer_id",
          "program_id",
          "status",
          "metadata",
          "created_at",
          "updated_at",
          "object"
        ]
      },
      "LoyaltyV2Program": {
        "title": "Loyalty Program",
        "type": "object",
        "description": "Loyalty v2 program snapshot recorded with the activity.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^lprg_[a-f0-9]+$",
            "description": "Unique program ID."
          },
          "name": {
            "type": "string",
            "description": "Program name."
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "ACTIVE",
              "INACTIVE",
              "DELETED"
            ],
            "description": "Program status."
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Program validity start date in ISO 8601 format, or `null` when not set."
          },
          "end_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Program validity end date in ISO 8601 format, or `null` when not set."
          },
          "validity_hours": {
            "$ref": "#/components/schemas/LoyaltyV2ProgramValidityHours"
          },
          "metadata": {
            "type": "object",
            "description": "Custom program metadata."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the program was created."
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp when the program was last updated, or `null`."
          },
          "object": {
            "type": "string",
            "const": "program",
            "description": "Object type. Always `program`."
          }
        },
        "required": [
          "id",
          "name",
          "status",
          "start_date",
          "end_date",
          "validity_hours",
          "metadata",
          "created_at",
          "updated_at",
          "object"
        ]
      },
      "LoyaltyV2Card": {
        "title": "Loyalty Card",
        "type": "object",
        "description": "Loyalty v2 card snapshot recorded with the activity.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^lcrd_[a-f0-9]+$",
            "description": "Unique card ID."
          },
          "program_id": {
            "type": "string",
            "pattern": "^lprg_[a-f0-9]+$",
            "description": "ID of the Loyalty v2 program."
          },
          "card_definition_id": {
            "type": "string",
            "pattern": "^lcdef_[a-f0-9]+$",
            "description": "ID of the card definition."
          },
          "card_type": {
            "type": "string",
            "enum": [
              "INDIVIDUAL"
            ],
            "description": "Type of loyalty card."
          },
          "code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Human-readable card code recorded with the activity. `null` until asynchronous code generation succeeds."
          },
          "customer_id": {
            "type": "string",
            "pattern": "^cust_[a-zA-Z0-9]+$",
            "description": "ID of the customer assigned to the card."
          },
          "member_id": {
            "type": "string",
            "pattern": "^lmbr_[a-f0-9]+$",
            "description": "ID of the program member assigned to the card."
          },
          "lifetime_bucket": {
            "$ref": "#/components/schemas/LoyaltyV2CardLifetimeBucket"
          },
          "balance": {
            "$ref": "#/components/schemas/LoyaltyV2CardBalance"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the card was created."
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp when the card was last updated, or `null`."
          },
          "object": {
            "type": "string",
            "const": "card",
            "description": "Object type. Always `card`."
          }
        },
        "required": [
          "id",
          "program_id",
          "card_definition_id",
          "card_type",
          "lifetime_bucket",
          "balance",
          "created_at",
          "object"
        ]
      },
      "LoyaltyV2MemberCard": {
        "title": "Loyalty Member Card",
        "type": "object",
        "description": "Member assignment to a Loyalty v2 card.",
        "properties": {
          "member_role": {
            "type": "string",
            "enum": [
              "OWNER",
              "MEMBER"
            ],
            "description": "Role of the member on the card."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the card was assigned to the member."
          },
          "tier_progress": {
            "type": "object",
            "description": "Member tier progress on the card. Omitted when it was not included in the activity snapshot."
          },
          "card": {
            "$ref": "#/components/schemas/LoyaltyV2CardSimple",
            "description": "Card details recorded with the assignment activity."
          },
          "object": {
            "type": "string",
            "const": "member_card",
            "description": "Object type. Always `member_card`."
          }
        },
        "required": [
          "member_role",
          "created_at",
          "card",
          "object"
        ]
      },
      "LoyaltyV2ActivityCardDefinition": {
        "type": "object",
        "description": "A card definition.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^lcdef_[a-f0-9]+$",
            "description": "Unique card definition ID."
          },
          "name": {
            "type": "string",
            "description": "Card definition name."
          },
          "type": {
            "type": "string",
            "enum": [
              "INDIVIDUAL"
            ],
            "description": "Card definition type. Currently, only `INDIVIDUAL`."
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "ACTIVE",
              "DELETED"
            ],
            "description": "Current card definition status."
          },
          "code_config": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionCodeConfig"
          },
          "points_expiration": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionPointsExpiration"
          },
          "pending_points": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionPendingPoints"
          },
          "earning_limits": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionEarningLimits"
          },
          "spending_limits": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionSpendingLimits"
          },
          "refunds": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionRefunds"
          },
          "balance_settings": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionBalanceSettings"
          },
          "pay_with_points": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionPayWithPoints"
          },
          "metadata": {
            "type": "object",
            "description": "Arbitrary key-value metadata. Empty object when not set."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Creation timestamp (ISO 8601)."
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Last update timestamp (ISO 8601). `null` when the card definition has never been updated."
          },
          "object": {
            "type": "string",
            "const": "card_definition",
            "description": "Object type marker. Always `card_definition`."
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "status",
          "code_config",
          "points_expiration",
          "pending_points",
          "earning_limits",
          "spending_limits",
          "refunds",
          "balance_settings",
          "pay_with_points",
          "metadata",
          "created_at",
          "updated_at",
          "object"
        ]
      },
      "LoyaltyV2ActivityProgramCardDefinition": {
        "title": "Loyalty Program Card Definition Assignment",
        "type": "object",
        "description": "Assignment of a card definition to a Loyalty v2 program.",
        "properties": {
          "card_type": {
            "type": "string",
            "description": "Card type. Currently, only `INDIVIDUAL`.",
            "enum": [
              "INDIVIDUAL"
            ]
          },
          "card_definition_id": {
            "type": "string",
            "description": "Assigned card definition ID.",
            "pattern": "^lcdef_[a-f0-9]+$"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the assignment was created."
          },
          "object": {
            "type": "string",
            "description": "Object type. Always `program_card_definition`.",
            "const": "program_card_definition"
          }
        },
        "required": [
          "card_type",
          "card_definition_id",
          "created_at",
          "object"
        ]
      },
      "LoyaltyV2ActivityEarningRule": {
        "type": "object",
        "description": "Earning rule as returned by the API.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^lern_[a-f0-9]+$",
            "description": "Earning rule ID (`lern_...`)."
          },
          "name": {
            "type": "string",
            "maxLength": 200,
            "description": "Earning rule name."
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "ACTIVE",
              "INACTIVE",
              "DELETED"
            ],
            "description": "Current status. `DELETED` also exists internally but deleted rules are excluded from API reads."
          },
          "earnings": {
            "type": "array",
            "description": "Earning definitions of the rule.",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEarningResponse"
            }
          },
          "trigger": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTrigger"
          },
          "error": {
            "description": "Default error configuration. Absent when not configured.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleError"
              },
              {
                "type": "null"
              }
            ]
          },
          "validity_hours": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleValidityHours",
            "description": "Validity hours. Always present; defaults to `{ \"type\": \"ANY_TIME\" }`."
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Date-time from which the rule is active. Can be `null`."
          },
          "end_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Date-time until which the rule is active. Can be `null`."
          },
          "trigger_limits": {
            "description": "Cooldown and frequency limits. In responses, `frequency.limits` is always an array (empty for `NO_LIMIT`).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerLimits"
              },
              {
                "type": "null"
              }
            ]
          },
          "metadata": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityMetadata",
            "description": "Arbitrary key-value metadata. Always present (empty object when unset)."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Creation timestamp (ISO 8601)."
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Last update timestamp (ISO 8601). `null` when never updated."
          },
          "object": {
            "type": "string",
            "const": "earning_rule",
            "description": "Object type marker. Always `earning_rule`."
          },
          "earning_limits": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEarningLimits"
          }
        },
        "required": [
          "id",
          "name",
          "status",
          "earnings",
          "trigger",
          "validity_hours",
          "start_date",
          "end_date",
          "earning_limits",
          "metadata",
          "created_at",
          "updated_at",
          "object"
        ]
      },
      "LoyaltyV2ActivityProgramEarningRule": {
        "title": "Loyalty Program Earning Rule Assignment",
        "type": "object",
        "description": "Assignment of an earning rule to a Loyalty v2 program.",
        "properties": {
          "earning_rule_id": {
            "type": "string",
            "description": "Assigned earning rule ID.",
            "pattern": "^lern_[a-f0-9]+$"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the assignment was created."
          },
          "object": {
            "type": "string",
            "description": "Object type. Always `program_earning_rule`.",
            "const": "program_earning_rule"
          }
        },
        "required": [
          "earning_rule_id",
          "created_at",
          "object"
        ]
      },
      "LoyaltyV2ActivityReward": {
        "type": "object",
        "description": "A reward, as returned by the API.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^lrew_[a-f0-9]+$",
            "description": "Unique reward identifier, prefixed with `lrew_`."
          },
          "name": {
            "type": "string",
            "description": "Display name of the reward."
          },
          "type": {
            "type": "string",
            "enum": [
              "MATERIAL",
              "DIGITAL"
            ],
            "description": "Reward type."
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "DRAFT",
              "INACTIVE",
              "DELETED"
            ],
            "description": "Current lifecycle status of the reward."
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "Date from which the reward is available, or `null` when not set."
          },
          "end_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "Date until which the reward is available, or `null` when not set."
          },
          "validity_hours": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardValidityHoursResponse",
            "description": "Hours during which the reward can be purchased. Always present; defaults to `{ \"type\": \"ANY_TIME\" }`."
          },
          "material": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardMaterialResponse",
            "description": "Material reward definition. Present only when `type` is MATERIAL; omitted otherwise."
          },
          "digital": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardDigitalResponse",
            "description": "Digital reward definition. Present only when `type` is DIGITAL; omitted otherwise."
          },
          "refunds": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardRefundsResponse",
            "description": "Refund policy. Always present; defaults to `{ \"type\": \"NONE\" }`."
          },
          "costs": {
            "type": "array",
            "description": "Point costs of the reward. Empty array when no costs are defined.",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityRewardCostResponse"
            }
          },
          "purchase_limits": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardPurchaseLimits",
            "description": "Purchase limits. Omitted when no limits are configured."
          },
          "metadata": {
            "type": "object",
            "description": "Arbitrary key-value metadata attached to the reward. Empty object when not set."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the reward was created (ISO-8601)."
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp when the reward was last updated (ISO-8601), or `null` when never updated."
          },
          "object": {
            "type": "string",
            "const": "reward",
            "description": "Object type marker; always `reward`."
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "status",
          "validity_hours",
          "refunds",
          "costs",
          "metadata",
          "created_at",
          "object"
        ]
      },
      "LoyaltyV2ActivityProgramReward": {
        "title": "Loyalty Program Reward Assignment",
        "type": "object",
        "description": "Assignment of a reward to a Loyalty v2 program.",
        "properties": {
          "reward_id": {
            "type": "string",
            "description": "Assigned reward ID.",
            "pattern": "^lrew_[a-f0-9]+$"
          },
          "stock": {
            "$ref": "#/components/schemas/LoyaltyV2ProgramRewardStock"
          },
          "redeemed": {
            "type": "number",
            "description": "Number of rewards redeemed from this assignment."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the assignment was created."
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp when the assignment was last updated, or `null`."
          },
          "object": {
            "type": "string",
            "description": "Object type. Always `program_reward`.",
            "const": "program_reward"
          }
        },
        "required": [
          "reward_id",
          "stock",
          "redeemed",
          "created_at",
          "updated_at",
          "object"
        ]
      },
      "LoyaltyV2ActivityTierStructure": {
        "type": "object",
        "description": "Tier structure resource.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^lts_[a-f0-9]+$",
            "description": "Unique tier structure identifier."
          },
          "name": {
            "type": "string",
            "description": "Display name of the tier structure."
          },
          "type": {
            "type": "string",
            "enum": [
              "POINT_BALANCE",
              "POINT_EARNED"
            ],
            "description": "Tier qualification tracking model."
          },
          "point_balance": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructurePointBalance",
            "description": "Point balance tracking settings. Present only when `type` is `POINT_BALANCE`; omitted otherwise."
          },
          "point_earned": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructurePointEarned",
            "description": "Points earned tracking settings. Present only when `type` is `POINT_EARNED`; omitted otherwise."
          },
          "expiration": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructureExpiration",
            "description": "Tier membership expiration settings."
          },
          "downgrade": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructureDowngrade",
            "description": "Downgrade behavior applied when tier membership expires."
          },
          "metadata": {
            "type": "object",
            "description": "Free-form key/value object holding custom attributes. Defaults to `{}`."
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "ACTIVE",
              "INACTIVE",
              "DELETED"
            ],
            "description": "Current lifecycle status of the tier structure."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Creation timestamp (ISO 8601)."
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Last update timestamp (ISO 8601), or `null` if never updated."
          },
          "object": {
            "type": "string",
            "const": "tier_structure",
            "description": "Object type discriminator. Always `tier_structure`."
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "expiration",
          "downgrade",
          "metadata",
          "status",
          "created_at",
          "updated_at",
          "object"
        ]
      },
      "LoyaltyV2ActivityProgramTierStructure": {
        "title": "Loyalty Program Tier Structure Assignment",
        "type": "object",
        "description": "Assignment of a tier structure to a Loyalty v2 program.",
        "properties": {
          "tier_structure_id": {
            "type": "string",
            "description": "Assigned tier structure ID.",
            "pattern": "^lts_[a-f0-9]+$"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the assignment was created."
          },
          "object": {
            "type": "string",
            "description": "Object type. Always `program_tier_structure`.",
            "const": "program_tier_structure"
          }
        },
        "required": [
          "tier_structure_id",
          "created_at",
          "object"
        ]
      },
      "LoyaltyV2ActivityBenefit": {
        "type": "object",
        "description": "A benefit object. Exactly one type-specific configuration object\n(`points`, `points_proportional`, `material`, or `digital`) is present, matching the `type`; the others are omitted.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^lben_[a-f0-9]+$",
            "description": "Unique benefit ID, prefixed with `lben_`."
          },
          "name": {
            "type": "string",
            "description": "Benefit name, unique within the project."
          },
          "type": {
            "type": "string",
            "enum": [
              "POINTS",
              "POINTS_PROPORTIONAL",
              "MATERIAL",
              "DIGITAL"
            ],
            "description": "Benefit type."
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "ACTIVE",
              "DELETED"
            ],
            "description": "Current benefit status. `DELETED` appears only in the response of the delete endpoint and in activity snapshots."
          },
          "stock": {
            "description": "Stock configuration. Omitted when not set.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitStock"
              }
            ]
          },
          "points": {
            "description": "Fixed points configuration. Present only when `type` is `POINTS`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPoints"
              }
            ]
          },
          "points_proportional": {
            "description": "Proportional points configuration. Present only when `type` is `POINTS_PROPORTIONAL`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportional"
              }
            ]
          },
          "material": {
            "description": "Material configuration. Present only when `type` is `MATERIAL`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitMaterial"
              }
            ]
          },
          "digital": {
            "description": "Digital configuration. Present only when `type` is `DIGITAL`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitDigital"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the benefit was created, in ISO 8601 format."
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp of the last update, in ISO 8601 format. `null` when the benefit was never updated."
          },
          "object": {
            "type": "string",
            "const": "benefit",
            "description": "Type of the object. Always `benefit`."
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "status",
          "created_at",
          "updated_at",
          "object"
        ]
      },
      "LoyaltyV2ActivityTier": {
        "type": "object",
        "description": "Tier resource.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^lt_[a-f0-9]+$",
            "description": "Unique tier identifier."
          },
          "tier_structure_id": {
            "type": "string",
            "pattern": "^lts_[a-f0-9]+$",
            "description": "Unique identifier of the parent tier structure."
          },
          "name": {
            "type": "string",
            "description": "Display name of the tier."
          },
          "qualification_rules": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierQualificationRules",
            "description": "Rules determining which members qualify for this tier."
          },
          "downgrade": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierDowngrade",
            "description": "Tier-level downgrade behavior. Always present; when the tier has no downgrade\nconfigured, an empty object (no `type`) is returned."
          },
          "metadata": {
            "type": "object",
            "description": "Free-form key/value object holding custom attributes. Defaults to `{}`."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Creation timestamp (ISO 8601)."
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Last update timestamp (ISO 8601), or `null` if never updated."
          },
          "object": {
            "type": "string",
            "const": "tier",
            "description": "Object type discriminator. Always `tier`."
          }
        },
        "required": [
          "id",
          "tier_structure_id",
          "name",
          "downgrade",
          "points_expiration",
          "metadata",
          "created_at",
          "updated_at",
          "object"
        ]
      },
      "LoyaltyV2ActivityProgramReference": {
        "title": "Loyalty Program Reference",
        "type": "object",
        "description": "Program data recorded with a card code-generation activity. Some program fields may be omitted if the program could not be loaded.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^lprg_[a-f0-9]+$",
            "description": "Unique Loyalty v2 program ID."
          },
          "name": {
            "type": "string",
            "description": "Program name, when available."
          },
          "status": {
            "type": "string",
            "description": "Program status, when available."
          },
          "validity_hours": {
            "type": "object",
            "description": "Program validity hours, when available."
          },
          "metadata": {
            "type": "object",
            "description": "Program metadata, when available."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Program creation timestamp, when available."
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Program update timestamp, when available."
          },
          "object": {
            "type": "string",
            "const": "program",
            "description": "Object type when the reference was normalized to a program DTO."
          }
        },
        "required": [
          "id"
        ]
      },
      "LoyaltyV2ActivityCardCodeGenerationFailure": {
        "title": "Loyalty Card Code Generation Failure",
        "type": "object",
        "description": "Details about a failed Loyalty v2 card code generation.",
        "properties": {
          "details": {
            "type": "string",
            "description": "Reason why code generation failed."
          }
        },
        "required": [
          "details"
        ]
      },
      "LoyaltyV2ProgramValidityHours": {
        "title": "Loyalty Program Validity Hours",
        "type": "object",
        "description": "Defines when the program is valid during a day.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "ANY_TIME",
              "DAILY"
            ],
            "description": "Validity-hours mode."
          },
          "daily": {
            "type": "array",
            "description": "Daily validity windows. Omitted for `ANY_TIME`.",
            "items": {
              "type": "object",
              "properties": {
                "days_of_week": {
                  "type": "array",
                  "items": {
                    "type": "integer"
                  },
                  "description": "Days of the week included in the window."
                },
                "start_time": {
                  "type": "string",
                  "description": "Start time of the window."
                },
                "end_time": {
                  "type": "string",
                  "description": "End time of the window."
                }
              },
              "required": [
                "days_of_week",
                "start_time",
                "end_time"
              ]
            }
          }
        },
        "required": [
          "type"
        ]
      },
      "LoyaltyV2CardLifetimeBucket": {
        "title": "Loyalty Card Lifetime Bucket",
        "type": "object",
        "description": "Lifetime point counters for a Loyalty v2 card.",
        "properties": {
          "points": {
            "$ref": "#/components/schemas/LoyaltyV2CardLifetimePoints"
          },
          "pending_points": {
            "$ref": "#/components/schemas/LoyaltyV2CardLifetimePendingPoints"
          }
        },
        "required": [
          "points",
          "pending_points"
        ]
      },
      "LoyaltyV2CardBalance": {
        "title": "Loyalty Card Balance",
        "type": "object",
        "description": "Current available balance of a Loyalty v2 card.",
        "properties": {
          "points": {
            "type": "number",
            "description": "Currently available active points."
          },
          "pending_points": {
            "type": "number",
            "description": "Currently pending points."
          }
        },
        "required": [
          "points",
          "pending_points"
        ]
      },
      "LoyaltyV2CardSimple": {
        "title": "Loyalty Card Simple",
        "type": "object",
        "description": "Loyalty v2 card snapshot embedded in a member card assignment.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^lcrd_[a-f0-9]+$",
            "description": "Unique card ID."
          },
          "card_definition_id": {
            "type": "string",
            "pattern": "^lcdef_[a-f0-9]+$",
            "description": "ID of the card definition."
          },
          "card_type": {
            "type": "string",
            "enum": [
              "INDIVIDUAL"
            ],
            "description": "Type of loyalty card."
          },
          "code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Human-readable card code recorded with the activity. `null` until asynchronous code generation succeeds."
          },
          "lifetime_bucket": {
            "$ref": "#/components/schemas/LoyaltyV2CardLifetimeBucket"
          },
          "balance": {
            "$ref": "#/components/schemas/LoyaltyV2CardBalance"
          },
          "next_expiration": {
            "description": "Nearest upcoming points expiration, or `null`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2CardNextExpiration"
              },
              {
                "type": "null"
              }
            ]
          },
          "next_activation": {
            "description": "Nearest upcoming pending-points activation, or `null`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2CardNextActivation"
              },
              {
                "type": "null"
              }
            ]
          },
          "object": {
            "type": "string",
            "const": "card",
            "description": "Object type. Always `card`."
          }
        },
        "required": [
          "id",
          "card_definition_id",
          "card_type",
          "code",
          "lifetime_bucket",
          "balance",
          "next_expiration",
          "next_activation",
          "object"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionCodeConfig": {
        "type": "object",
        "description": "Card code generation configuration. Always present with server-side defaults applied.",
        "properties": {
          "pattern": {
            "type": "string",
            "description": "Code pattern where each `#` is replaced with a random character from the charset."
          },
          "length": {
            "type": "integer",
            "description": "Number of `#` placeholders in the pattern."
          },
          "charset": {
            "type": "string",
            "description": "Characters used for code generation."
          },
          "prefix": {
            "type": "string",
            "description": "Fixed prefix prepended to every generated code. Empty string when not set."
          },
          "postfix": {
            "type": "string",
            "description": "Fixed postfix appended to every generated code. Empty string when not set."
          }
        },
        "required": [
          "pattern",
          "length",
          "charset",
          "prefix",
          "postfix"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionPointsExpiration": {
        "type": "object",
        "description": "Points expiration policy. Always present; defaults to `NO_EXPIRATION`.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NO_EXPIRATION",
              "ROLLING_EXPIRATION",
              "CALENDAR_EXPIRATION",
              "SLIDING_EXPIRATION"
            ],
            "description": "Points expiration type."
          },
          "rolling_expiration": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionPointsExpirationRollingExpiration",
            "description": "Rolling expiration configuration. Only present when `type` is `ROLLING_EXPIRATION`."
          },
          "calendar_expiration": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionPointsExpirationCalendarExpiration",
            "description": "Calendar expiration configuration. Only present when `type` is `CALENDAR_EXPIRATION`."
          },
          "sliding_expiration": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionPointsExpirationSlidingExpiration",
            "description": "Sliding expiration configuration. Only present when `type` is `SLIDING_EXPIRATION`."
          }
        },
        "required": [
          "type"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionPendingPoints": {
        "type": "object",
        "description": "Pending points activation policy. Always present; defaults to `IMMEDIATE`.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "IMMEDIATE",
              "PERIOD_BASED",
              "FIXED_DATES",
              "EVENT_BASED"
            ],
            "description": "Pending points activation type."
          },
          "period_based": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionPendingPointsPeriodBased",
            "description": "Period-based activation. Only present when `type` is `PERIOD_BASED`."
          },
          "fixed_dates": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionPendingPointsFixedDates",
            "description": "Fixed-dates activation. Only present when `type` is `FIXED_DATES`."
          },
          "event_based": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionPendingPointsEventBased",
            "description": "Event-based activation. Only present when `type` is `EVENT_BASED`."
          }
        },
        "required": [
          "type"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionEarningLimits": {
        "type": "object",
        "description": "Points earning limits. Always present; defaults to `NO_LIMIT` for both scopes.",
        "properties": {
          "global": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionEarningLimitsGlobal"
          },
          "transactions": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionEarningLimitsTransactions"
          }
        }
      },
      "LoyaltyV2ActivityCardDefinitionSpendingLimits": {
        "type": "object",
        "description": "Points spending limits. Always present; defaults to `NO_LIMIT` for both scopes.",
        "properties": {
          "global": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionSpendingLimitsGlobal"
          },
          "transactions": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionSpendingLimitsTransactions"
          }
        }
      },
      "LoyaltyV2ActivityCardDefinitionRefunds": {
        "type": "object",
        "description": "Refund handling configuration. Always present; defaults to `NONE` for both scopes.",
        "properties": {
          "spent_points": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionRefundsSpentPoints"
          },
          "earned_points": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionRefundsEarnedPoints"
          }
        },
        "required": [
          "spent_points",
          "earned_points"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionBalanceSettings": {
        "type": "object",
        "description": "Card balance settings. Always present; defaults to `allow_negative: false`.",
        "properties": {
          "allow_negative": {
            "type": "boolean",
            "description": "Whether the card balance is allowed to go below zero."
          }
        },
        "required": [
          "allow_negative"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionPayWithPoints": {
        "type": "object",
        "description": "Pay-with-points configuration. Always present; defaults to `NO_PAYMENTS`.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NO_PAYMENTS",
              "EXCHANGE_RATIO"
            ],
            "description": "Pay-with-points type."
          },
          "exchange_ratio": {
            "type": "object",
            "description": "Exchange ratio. Only present when `type` is `EXCHANGE_RATIO`.",
            "properties": {
              "formula": {
                "type": "string",
                "description": "Exchange ratio formula (always returned as a string)."
              }
            },
            "required": [
              "formula"
            ]
          }
        },
        "required": [
          "type"
        ]
      },
      "LoyaltyV2ActivityEarningRuleEarningResponse": {
        "type": "object",
        "description": "An earning definition as returned by the API.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^lernei_[a-f0-9]+$",
            "description": "Earning item ID (`lernei_...`)."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 200,
            "description": "Earning item name. Can be `null`."
          },
          "rules": {
            "description": "Validation rules group. Absent when the earning has no rules.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleRulesGroup"
              },
              {
                "type": "null"
              }
            ]
          },
          "tier_rules": {
            "description": "Tier requirements. Defaults to `{ \"type\": \"NO_REQUIREMENTS\" }` when not explicitly configured.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTierRules"
              },
              {
                "type": "null"
              }
            ]
          },
          "effects": {
            "type": "array",
            "description": "Effects applied when the rules match.",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffect"
            }
          }
        }
      },
      "LoyaltyV2ActivityEarningRuleTrigger": {
        "type": "object",
        "description": "Event that triggers the earning rule. Depending on `event`, either `custom_event` or `segment` is required and the other trigger contexts must be null/absent.",
        "properties": {
          "event": {
            "type": "string",
            "enum": [
              "customer.order.paid",
              "customer.custom_event",
              "customer.segment.entered"
            ],
            "description": "Triggering event type."
          },
          "custom_event": {
            "description": "Custom event trigger context. Required when `event` is `customer.custom_event`; must be `null` for other events.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerCustomEvent"
              },
              {
                "type": "null"
              }
            ]
          },
          "segment": {
            "description": "Segment trigger context. Required when `event` is `customer.segment.entered`; must be `null` for other events.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerSegment"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "event"
            ]
          },
          {
            "if": {
              "properties": {
                "event": {
                  "const": "customer.order.paid"
                }
              }
            },
            "then": {
              "properties": {
                "custom_event": {
                  "type": "null"
                },
                "segment": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "event": {
                  "const": "customer.custom_event"
                }
              }
            },
            "then": {
              "required": [
                "custom_event"
              ],
              "properties": {
                "custom_event": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerCustomEvent"
                },
                "segment": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "event": {
                  "const": "customer.segment.entered"
                }
              }
            },
            "then": {
              "required": [
                "segment"
              ],
              "properties": {
                "custom_event": {
                  "type": "null"
                },
                "segment": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerSegment"
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRuleError": {
        "type": "object",
        "title": "Custom error message configuration",
        "description": "Custom error message configuration.",
        "properties": {
          "message": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "Error message shown when validation fails."
          }
        },
        "required": [
          "message"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleValidityHours": {
        "type": "object",
        "description": "Hours during which the earning rule is active. With `ANY_TIME`, `daily` must be null/absent. With `DAILY`, `daily` is required (at least one entry).",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "DAILY",
              "ANY_TIME"
            ],
            "description": "Validity hours type."
          },
          "daily": {
            "description": "Daily validity windows. Can be `null`.",
            "oneOf": [
              {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleValidityDailyHours"
                }
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "type"
            ]
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "ANY_TIME"
                }
              }
            },
            "then": {
              "properties": {
                "daily": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "DAILY"
                }
              }
            },
            "then": {
              "required": [
                "daily"
              ],
              "properties": {
                "daily": {
                  "type": "array",
                  "minItems": 1,
                  "items": {
                    "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleValidityDailyHours"
                  }
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRuleTriggerLimits": {
        "type": "object",
        "title": "Earning Rule Trigger Limits",
        "description": "Cooldown and frequency limits applied to the earning rule trigger.",
        "properties": {
          "cooldown": {
            "description": "Cooldown configuration. `null`able (defaults to `NO_COOLDOWN`).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerLimitsCooldown"
              },
              {
                "type": "null"
              }
            ]
          },
          "frequency": {
            "description": "Frequency limit configuration. `null`able (defaults to `NO_LIMIT`).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerLimitsFrequency"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "LoyaltyV2ActivityMetadata": {
        "type": "object",
        "description": "Arbitrary key-value metadata; any JSON object is accepted.",
        "additionalProperties": true
      },
      "LoyaltyV2ActivityEarningRuleEarningLimits": {
        "type": "object",
        "description": "Limits on points earned through this rule. Always present. Defaults to `{ \"global\": { \"type\": \"NO_LIMIT\", \"limits\": [] } }`. Unlike card definition earning limits, this object has no `transactions` key.",
        "properties": {
          "global": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEarningLimitsGlobal"
          }
        },
        "required": [
          "global"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityRewardValidityHoursResponse": {
        "type": "object",
        "description": "Validity hours. `daily` is present only when `type` is DAILY; omitted otherwise.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "DAILY",
              "ANY_TIME"
            ],
            "description": "Whether the reward is purchasable at any time or only during specific daily windows."
          },
          "daily": {
            "type": "array",
            "description": "Daily time windows. Present only when `type` is DAILY.",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityRewardValidityDailyHoursResponse"
            }
          }
        },
        "required": [
          "type"
        ]
      },
      "LoyaltyV2ActivityRewardMaterialResponse": {
        "type": "object",
        "description": "Material reward definition.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "PRODUCT",
              "SKU"
            ],
            "description": "Kind of material reward."
          },
          "product": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardMaterialProductResponse",
            "description": "Product delivered by the reward. Present only when `type` is PRODUCT; omitted otherwise."
          },
          "sku": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardMaterialSKUResponse",
            "description": "SKU delivered by the reward. Present only when `type` is SKU; omitted otherwise."
          }
        },
        "required": [
          "type"
        ]
      },
      "LoyaltyV2ActivityRewardDigitalResponse": {
        "type": "object",
        "description": "Digital reward definition. Only the object matching `type` is present; the others are omitted.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "DISCOUNT_COUPONS",
              "GIFT_VOUCHERS",
              "LOYALTY_CARD_POINTS"
            ],
            "description": "Kind of digital reward."
          },
          "discount_coupons": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardDigitalDiscountCouponsResponse",
            "description": "Discount coupons configuration. Present only when `type` is DISCOUNT_COUPONS."
          },
          "gift_vouchers": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardDigitalGiftVouchersResponse",
            "description": "Gift vouchers configuration. Present only when `type` is GIFT_VOUCHERS."
          },
          "loyalty_card_points": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardDigitalLoyaltyCardPointsResponse",
            "description": "Loyalty card points configuration. Present only when `type` is LOYALTY_CARD_POINTS."
          }
        },
        "required": [
          "type"
        ]
      },
      "LoyaltyV2ActivityRewardRefundsResponse": {
        "type": "object",
        "description": "Refund policy.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NONE",
              "REFUNDABLE"
            ],
            "description": "Whether reward purchases can be refunded. Defaults to NONE."
          }
        },
        "required": [
          "type"
        ]
      },
      "LoyaltyV2ActivityRewardCostResponse": {
        "type": "object",
        "description": "A reward cost. `rules` is omitted when the cost has no rule definitions; `spending` is `null` when no spending is defined.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^lrcst_[a-f0-9]+$",
            "description": "Unique cost identifier, prefixed with `lrcst_`."
          },
          "rules": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardCostRuleGroupResponse",
            "description": "Rules guarding this cost. Omitted when the cost has no rule definitions."
          },
          "spending": {
            "type": [
              "array",
              "null"
            ],
            "description": "Points spending definitions, or `null` when none are defined.",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityRewardCostSpendingResponse"
            }
          }
        },
        "required": [
          "id"
        ]
      },
      "LoyaltyV2ActivityRewardPurchaseLimits": {
        "type": "object",
        "description": "Limits on how often a member can purchase the reward. Always present on reward responses; defaults to no cooldown and no frequency limit.",
        "properties": {
          "cooldown": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardPurchaseLimitsCooldown",
            "description": "Cooldown after a purchase."
          },
          "frequency": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardPurchaseLimitsFrequency",
            "description": "How many times the reward can be purchased in a period."
          }
        }
      },
      "LoyaltyV2ProgramRewardStock": {
        "title": "Loyalty Program Reward Stock",
        "description": "Assignment stock configuration. `UNLIMITED` omits `limited`. `LIMITED` requires `limited.quantity`.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/LoyaltyV2ProgramRewardStockUnlimited"
          },
          {
            "$ref": "#/components/schemas/LoyaltyV2ProgramRewardStockLimited"
          }
        ]
      },
      "LoyaltyV2ActivityTierStructurePointBalance": {
        "type": "object",
        "description": "Point balance tracking settings.",
        "properties": {
          "card_definition_id": {
            "type": "string",
            "pattern": "^lcdef_[a-f0-9]+$",
            "description": "Unique identifier of the card definition whose point balance is tracked."
          }
        }
      },
      "LoyaltyV2ActivityTierStructurePointEarned": {
        "type": "object",
        "description": "Points earned tracking settings.",
        "properties": {
          "card_definition_id": {
            "type": "string",
            "pattern": "^lcdef_[a-f0-9]+$",
            "description": "Unique identifier of the card definition whose earned points are tracked."
          },
          "period": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructurePointEarnedPeriod",
            "description": "Tracking period during which earned points are accumulated."
          },
          "type": {
            "type": "string",
            "enum": [
              "IMMEDIATELY",
              "NEXT_TRACKING_PERIOD"
            ],
            "description": "When a tier change resulting from earned points takes effect."
          }
        }
      },
      "LoyaltyV2ActivityTierStructureExpiration": {
        "type": "object",
        "description": "Tier membership expiration settings. Only the sub-object matching `type` is present; the others are omitted.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NO_RETENTION",
              "SLIDING_EXPIRATION",
              "FIXED_DURATION",
              "CALENDAR_EXPIRATION"
            ],
            "description": "Expiration model for tier membership."
          },
          "fixed_duration": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructureExpirationFixedDuration",
            "description": "Fixed duration settings. Present only when `type` is `FIXED_DURATION`."
          },
          "calendar_expiration": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructureExpirationCalendarExpiration",
            "description": "Calendar expiration settings. Present only when `type` is `CALENDAR_EXPIRATION`."
          },
          "sliding_expiration": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructureExpirationSlidingExpiration",
            "description": "Sliding expiration settings. Present only when `type` is `SLIDING_EXPIRATION`."
          }
        }
      },
      "LoyaltyV2ActivityTierStructureDowngrade": {
        "type": "object",
        "description": "Downgrade settings.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "MULTI_LEVEL",
              "SINGLE_LEVEL",
              "NO_DOWNGRADE"
            ],
            "description": "Downgrade model."
          },
          "grace_period": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructureDowngradeGracePeriod",
            "description": "Grace period before the downgrade takes effect. Omitted when not configured."
          }
        }
      },
      "LoyaltyV2ActivityBenefitStock": {
        "type": "object",
        "description": "Stock configuration of the benefit. When `type` is `LIMITED` the `limited` object is\nrequired; when `type` is `UNLIMITED` the `limited` object must be omitted or `null`.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "UNLIMITED",
              "LIMITED"
            ],
            "description": "Whether the benefit has unlimited or limited stock."
          },
          "limited": {
            "description": "Limited stock configuration. Required when `type` is `LIMITED`, must be `null` otherwise.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitStockLimited"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "type"
        ],
        "additionalProperties": false,
        "allOf": [
          {
            "if": {
              "properties": {
                "type": {
                  "const": "UNLIMITED"
                }
              }
            },
            "then": {
              "properties": {
                "limited": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "LIMITED"
                }
              }
            },
            "then": {
              "required": [
                "limited"
              ],
              "properties": {
                "limited": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitStockLimited"
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityBenefitPoints": {
        "type": "object",
        "description": "Fixed points effect - adds a fixed amount of points to a card of the given card definition.",
        "properties": {
          "value": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "Number of points to add."
          },
          "card_definition_id": {
            "type": "string",
            "pattern": "^lcdef_[a-f0-9]+$",
            "description": "ID of the card definition whose cards receive the points. The card definition must exist and be `ACTIVE`."
          }
        },
        "required": [
          "value",
          "card_definition_id"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityBenefitPointsProportional": {
        "type": "object",
        "description": "Proportional points effect – points are calculated from an order amount, order items,\nor a metadata property. Exactly one calculation source object (`order`, `customer`,\n`custom_event`, or `order_items`) is required, determined by `calculation_type`;\nthe remaining source properties must be omitted or `null`.",
        "properties": {
          "calculation_type": {
            "type": "string",
            "enum": [
              "PRE_DISCOUNT_ORDER_AMOUNT",
              "POST_DISCOUNT_ORDER_AMOUNT",
              "PRE_DISCOUNT_ORDER_ITEMS_AMOUNT",
              "POST_DISCOUNT_ORDER_ITEMS_AMOUNT",
              "ORDER_ITEMS_QUANTITY",
              "ORDER_METADATA_VALUE",
              "CUSTOMER_METADATA_VALUE",
              "CUSTOM_EVENT_METADATA_VALUE"
            ],
            "description": "How the points are calculated:\n- `PRE_DISCOUNT_ORDER_AMOUNT` – points per every specified order amount before discounts (requires `order.amount`)\n- `POST_DISCOUNT_ORDER_AMOUNT` – points per every specified order amount after discounts (requires `order.total_amount`)\n- `PRE_DISCOUNT_ORDER_ITEMS_AMOUNT` – points per every specified amount spent on selected products before discounts (requires `order_items.amount`)\n- `POST_DISCOUNT_ORDER_ITEMS_AMOUNT` – points per every specified amount spent on selected products after discounts (requires `order_items.subtotal_amount`)\n- `ORDER_ITEMS_QUANTITY` – points per every specified quantity of selected products, excluding free items (requires `order_items.quantity`)\n- `ORDER_METADATA_VALUE` – points per every specified value in the order metadata (requires `order.metadata`)\n- `CUSTOMER_METADATA_VALUE` – points per every specified value in the customer metadata (requires `customer.metadata`)\n- `CUSTOM_EVENT_METADATA_VALUE` – points per every specified value in the custom event metadata (requires `custom_event.metadata`)"
          },
          "card_definition_id": {
            "type": "string",
            "pattern": "^lcdef_[a-f0-9]+$",
            "description": "ID of the card definition whose cards receive the points. The card definition must exist and be `ACTIVE`."
          },
          "order": {
            "description": "Order-based calculation configuration (for `PRE_DISCOUNT_ORDER_AMOUNT`, `POST_DISCOUNT_ORDER_AMOUNT`, `ORDER_METADATA_VALUE`).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalOrder"
              },
              {
                "type": "null"
              }
            ]
          },
          "customer": {
            "description": "Customer-metadata-based calculation configuration (for `CUSTOMER_METADATA_VALUE`).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalCustomer"
              },
              {
                "type": "null"
              }
            ]
          },
          "custom_event": {
            "description": "Custom-event-metadata-based calculation configuration (for `CUSTOM_EVENT_METADATA_VALUE`).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalCustomEvent"
              },
              {
                "type": "null"
              }
            ]
          },
          "order_items": {
            "description": "Order-items-based calculation configuration (for `PRE_DISCOUNT_ORDER_ITEMS_AMOUNT`, `POST_DISCOUNT_ORDER_ITEMS_AMOUNT`, `ORDER_ITEMS_QUANTITY`).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalOrderItems"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "calculation_type",
          "card_definition_id"
        ],
        "additionalProperties": false,
        "allOf": [
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "PRE_DISCOUNT_ORDER_AMOUNT"
                }
              }
            },
            "then": {
              "required": [
                "order"
              ],
              "properties": {
                "order": {
                  "type": "object",
                  "required": [
                    "amount"
                  ]
                },
                "customer": {
                  "type": "null"
                },
                "custom_event": {
                  "type": "null"
                },
                "order_items": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "POST_DISCOUNT_ORDER_AMOUNT"
                }
              }
            },
            "then": {
              "required": [
                "order"
              ],
              "properties": {
                "order": {
                  "type": "object",
                  "required": [
                    "total_amount"
                  ]
                },
                "customer": {
                  "type": "null"
                },
                "custom_event": {
                  "type": "null"
                },
                "order_items": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "ORDER_METADATA_VALUE"
                }
              }
            },
            "then": {
              "required": [
                "order"
              ],
              "properties": {
                "order": {
                  "type": "object",
                  "required": [
                    "metadata"
                  ]
                },
                "customer": {
                  "type": "null"
                },
                "custom_event": {
                  "type": "null"
                },
                "order_items": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "CUSTOMER_METADATA_VALUE"
                }
              }
            },
            "then": {
              "required": [
                "customer"
              ],
              "properties": {
                "customer": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalCustomer"
                },
                "order": {
                  "type": "null"
                },
                "custom_event": {
                  "type": "null"
                },
                "order_items": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "CUSTOM_EVENT_METADATA_VALUE"
                }
              }
            },
            "then": {
              "required": [
                "custom_event"
              ],
              "properties": {
                "custom_event": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalCustomEvent"
                },
                "order": {
                  "type": "null"
                },
                "customer": {
                  "type": "null"
                },
                "order_items": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "PRE_DISCOUNT_ORDER_ITEMS_AMOUNT"
                }
              }
            },
            "then": {
              "required": [
                "order_items"
              ],
              "properties": {
                "order_items": {
                  "type": "object",
                  "required": [
                    "amount"
                  ]
                },
                "order": {
                  "type": "null"
                },
                "customer": {
                  "type": "null"
                },
                "custom_event": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "POST_DISCOUNT_ORDER_ITEMS_AMOUNT"
                }
              }
            },
            "then": {
              "required": [
                "order_items"
              ],
              "properties": {
                "order_items": {
                  "type": "object",
                  "required": [
                    "subtotal_amount"
                  ]
                },
                "order": {
                  "type": "null"
                },
                "customer": {
                  "type": "null"
                },
                "custom_event": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "ORDER_ITEMS_QUANTITY"
                }
              }
            },
            "then": {
              "required": [
                "order_items"
              ],
              "properties": {
                "order_items": {
                  "type": "object",
                  "required": [
                    "quantity"
                  ]
                },
                "order": {
                  "type": "null"
                },
                "customer": {
                  "type": "null"
                },
                "custom_event": {
                  "type": "null"
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityBenefitMaterial": {
        "type": "object",
        "description": "Material benefit – a physical product or SKU. Exactly one of `product` or `sku` is\nrequired, matching the `type`; the other must be omitted or `null`.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "PRODUCT",
              "SKU"
            ],
            "description": "Whether the benefit is a whole product or a specific SKU."
          },
          "product": {
            "description": "Product reference. Required when `type` is `PRODUCT`, must be `null` otherwise. The product must exist.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitMaterialProduct"
              },
              {
                "type": "null"
              }
            ]
          },
          "sku": {
            "description": "SKU reference. Required when `type` is `SKU`, must be `null` otherwise. The SKU must exist under the given product.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitMaterialSKU"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "type"
            ]
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "PRODUCT"
                }
              }
            },
            "then": {
              "required": [
                "product"
              ],
              "properties": {
                "product": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitMaterialProduct"
                },
                "sku": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "SKU"
                }
              }
            },
            "then": {
              "required": [
                "sku"
              ],
              "properties": {
                "sku": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitMaterialSKU"
                },
                "product": {
                  "type": "null"
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityBenefitDigital": {
        "type": "object",
        "description": "Digital benefit – a reward sourced from a Voucherify campaign. Exactly one of `gift_vouchers` or `discount_coupons` is required, matching the `type`; the other must be omitted or `null`. The referenced campaign must exist and its campaign type must match the benefit's digital type.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "GIFT_VOUCHERS",
              "DISCOUNT_COUPONS"
            ],
            "description": "Type of the digital reward."
          },
          "gift_vouchers": {
            "description": "Gift vouchers configuration. Required when `type` is `GIFT_VOUCHERS`, must be `null` otherwise.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitDigitalGiftVouchers"
              },
              {
                "type": "null"
              }
            ]
          },
          "discount_coupons": {
            "description": "Discount coupons configuration. Required when `type` is `DISCOUNT_COUPONS`, must be `null` otherwise.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitDigitalDiscountCoupons"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "type"
            ]
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "DISCOUNT_COUPONS"
                }
              }
            },
            "then": {
              "required": [
                "discount_coupons"
              ],
              "properties": {
                "discount_coupons": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitDigitalDiscountCoupons"
                },
                "gift_vouchers": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "GIFT_VOUCHERS"
                }
              }
            },
            "then": {
              "required": [
                "gift_vouchers"
              ],
              "properties": {
                "gift_vouchers": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitDigitalGiftVouchers"
                },
                "discount_coupons": {
                  "type": "null"
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityTierQualificationRules": {
        "type": "object",
        "description": "Tier qualification rules.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "POINTS",
              "POINTS_AND_SEGMENT"
            ],
            "description": "Qualification model."
          },
          "points": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierQualificationRulesPoints",
            "description": "Point thresholds for the tier. Omitted when not configured."
          },
          "segment": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierQualificationRulesSegment",
            "description": "Customer segment reference. Present only when `type` is `POINTS_AND_SEGMENT`."
          }
        }
      },
      "LoyaltyV2ActivityTierDowngrade": {
        "type": "object",
        "description": "Tier-level downgrade behavior.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "INHERIT",
              "NO_DOWNGRADE"
            ],
            "description": "Downgrade model. Omitted when the tier has no downgrade configured."
          }
        }
      },
      "LoyaltyV2CardLifetimePoints": {
        "title": "Loyalty Card Lifetime Points",
        "type": "object",
        "description": "Lifetime counters for active points on a Loyalty v2 card.",
        "properties": {
          "total": {
            "type": "number",
            "description": "Total points credited to the card."
          },
          "earned": {
            "type": "number",
            "description": "Total points earned through earning rules."
          },
          "added": {
            "type": "number",
            "description": "Total points added manually."
          },
          "purchased": {
            "type": "number",
            "description": "Total points purchased through rewards."
          },
          "purchased_reversed": {
            "type": "number",
            "description": "Total purchased points reversed by reward refunds."
          },
          "subtracted": {
            "type": "number",
            "description": "Total points subtracted manually."
          },
          "expired": {
            "type": "number",
            "description": "Total points expired."
          },
          "spent": {
            "type": "number",
            "description": "Total points spent."
          },
          "refunded": {
            "type": "number",
            "description": "Total earned points refunded."
          },
          "returned": {
            "type": "number",
            "description": "Total points returned after reward refunds."
          },
          "locked": {
            "type": "number",
            "description": "Total locked points."
          },
          "unlocked": {
            "type": "number",
            "description": "Total unlocked points."
          }
        },
        "required": [
          "total",
          "earned",
          "added",
          "purchased",
          "purchased_reversed",
          "subtracted",
          "expired",
          "spent",
          "refunded",
          "returned",
          "locked",
          "unlocked"
        ]
      },
      "LoyaltyV2CardLifetimePendingPoints": {
        "title": "Loyalty Card Lifetime Pending Points",
        "type": "object",
        "description": "Lifetime counters for pending points on a Loyalty v2 card.",
        "properties": {
          "total": {
            "type": "number",
            "description": "Total pending points added."
          },
          "activated": {
            "type": "number",
            "description": "Total pending points activated."
          },
          "canceled": {
            "type": "number",
            "description": "Total pending points canceled."
          }
        },
        "required": [
          "total",
          "activated",
          "canceled"
        ]
      },
      "LoyaltyV2CardNextExpiration": {
        "title": "Loyalty Card Next Expiration",
        "type": "object",
        "description": "Nearest upcoming points expiration.",
        "properties": {
          "points": {
            "type": "number",
            "description": "Number of points that will expire."
          },
          "date": {
            "type": "string",
            "format": "date",
            "description": "Date when the points expire."
          }
        },
        "required": [
          "points",
          "date"
        ]
      },
      "LoyaltyV2CardNextActivation": {
        "title": "Loyalty Card Next Activation",
        "type": "object",
        "description": "Nearest upcoming pending-points activation.",
        "properties": {
          "points": {
            "type": "number",
            "description": "Number of pending points."
          },
          "type": {
            "type": "string",
            "description": "Pending-points activation type."
          },
          "date": {
            "type": "string",
            "format": "date",
            "description": "Scheduled activation date. Omitted for event-based activation."
          },
          "cancel_date": {
            "type": "string",
            "format": "date",
            "description": "Cancellation date for event-based activation."
          }
        },
        "required": [
          "points",
          "type"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionPointsExpirationRollingExpiration": {
        "type": "object",
        "description": "Rolling expiration configuration.",
        "properties": {
          "period": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionPeriod",
            "description": "Rolling expiration period. Unit is one of `DAY`, `MONTH`, `YEAR`."
          },
          "rounding": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionPointsExpirationRollingExpirationRounding"
              },
              {
                "type": "null"
              }
            ],
            "description": "Rounding applied to the calculated expiration date. `null` when not configured."
          }
        },
        "required": [
          "period"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionPointsExpirationCalendarExpiration": {
        "type": "object",
        "description": "Calendar expiration configuration.",
        "properties": {
          "expiration_dates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionCalendarDate"
            },
            "description": "Calendar dates on which points expire."
          }
        },
        "required": [
          "expiration_dates"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionPointsExpirationSlidingExpiration": {
        "type": "object",
        "description": "Sliding expiration configuration.",
        "properties": {
          "earning_activity": {
            "type": "boolean",
            "description": "Whether earning points resets the expiration window."
          },
          "spending_activity": {
            "type": "boolean",
            "description": "Whether spending points resets the expiration window."
          },
          "custom_activity": {
            "type": "boolean",
            "description": "Whether the configured custom events reset the expiration window."
          },
          "custom_activity_types": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Custom event schema IDs that reset the expiration window. Empty array when `custom_activity` is false."
          },
          "period": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionPeriod",
            "description": "Sliding expiration period. Unit is one of `DAY`, `MONTH`, `YEAR`."
          }
        },
        "required": [
          "custom_activity_types",
          "period"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionPendingPointsPeriodBased": {
        "type": "object",
        "description": "Period-based pending points activation.",
        "properties": {
          "period": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionPeriod",
            "description": "Pending period. Unit is one of `DAY`, `MONTH`, `YEAR`."
          }
        },
        "required": [
          "period"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionPendingPointsFixedDates": {
        "type": "object",
        "description": "Fixed-dates pending points activation.",
        "properties": {
          "dates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionCalendarDate"
            },
            "description": "Calendar dates on which pending points activate."
          }
        },
        "required": [
          "dates"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionPendingPointsEventBased": {
        "type": "object",
        "description": "Event-based pending points activation.",
        "properties": {
          "event_types": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Custom event schema IDs that activate pending points."
          },
          "cancel_period": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionPeriod",
            "description": "Period after which non-activated pending points are cancelled. Unit is one of `DAY`, `MONTH`, `YEAR`."
          }
        },
        "required": [
          "event_types",
          "cancel_period"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionEarningLimitsGlobal": {
        "type": "object",
        "description": "Global (per card) earning limits.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NO_LIMIT",
              "LIMITED"
            ],
            "description": "Whether global earning limits apply."
          },
          "limits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionEarningLimitsGlobalLimit"
            },
            "description": "Limit definitions. Empty array when `type` is `NO_LIMIT`."
          }
        },
        "required": [
          "type",
          "limits"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionEarningLimitsTransactions": {
        "type": "object",
        "description": "Per-transaction earning limits.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NO_LIMIT",
              "LIMITED"
            ],
            "description": "Whether per-transaction earning limits apply."
          },
          "limits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionEarningLimitsTransactionsLimit"
            },
            "description": "Limit definitions. Empty array when `type` is `NO_LIMIT`."
          }
        },
        "required": [
          "type",
          "limits"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionSpendingLimitsGlobal": {
        "type": "object",
        "description": "Global (per card) spending limits.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NO_LIMIT",
              "LIMITED"
            ],
            "description": "Whether global spending limits apply."
          },
          "limits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionSpendingLimitsGlobalLimit"
            },
            "description": "Limit definitions. Empty array when `type` is `NO_LIMIT`."
          }
        },
        "required": [
          "type",
          "limits"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionSpendingLimitsTransactions": {
        "type": "object",
        "description": "Per-transaction spending limits.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NO_LIMIT",
              "LIMITED"
            ],
            "description": "Whether per-transaction spending limits apply."
          },
          "limits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionSpendingLimitsTransactionsLimit"
            },
            "description": "Limit definitions. Empty array when `type` is `NO_LIMIT`."
          }
        },
        "required": [
          "type",
          "limits"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionRefundsSpentPoints": {
        "type": "object",
        "description": "How points spent on a refunded order are handled.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NONE",
              "REFUNDABLE"
            ],
            "description": "Whether spent points are refundable."
          },
          "methods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionRefundsSpentPointsMethod"
            },
            "description": "Refund methods. Empty array when `type` is `NONE`."
          }
        },
        "required": [
          "type",
          "methods"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionRefundsEarnedPoints": {
        "type": "object",
        "description": "How points earned on a refunded order are handled.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NONE",
              "REFUNDABLE"
            ],
            "description": "Whether earned points are revocable on refund."
          },
          "methods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionRefundsEarnedPointsMethod"
            },
            "description": "Revoke methods. Empty array when `type` is `NONE`."
          }
        },
        "required": [
          "type",
          "methods"
        ]
      },
      "LoyaltyV2ActivityEarningRuleRulesGroup": {
        "type": "object",
        "description": "Group of rule definitions combined by a logical formula. Besides `logic`, only positive-integer keys are allowed (property names must match `^[1-9]\\d*$`), each referencing a rule definition. The `logic` value is a logical expression referencing the numbered rules, e.g. `\"1 and 2\"` or `\"1 and (2 or 3)\"`. At least one numbered rule is required (`minProperties: 2` including `logic`).",
        "properties": {
          "logic": {
            "type": "string",
            "description": "Logical expression combining the numbered rule definitions, e.g. `\"1 and 2\"`."
          }
        },
        "patternProperties": {
          "^[1-9]\\d*$": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleDefinition"
          }
        },
        "required": [
          "logic"
        ],
        "minProperties": 2,
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleTierRules": {
        "type": "object",
        "description": "Tier requirements for an earning. With `NO_REQUIREMENTS`, `any_of` must be `null`/absent. With `ANY_OF`, `any_of` is required (at least one entry) and the member must be in any of the listed tiers to earn.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NO_REQUIREMENTS",
              "ANY_OF"
            ],
            "description": "Tier requirement type."
          },
          "any_of": {
            "description": "Tier structure/tier combinations, any of which satisfies the requirement. Can be `null`.",
            "oneOf": [
              {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTierRulesAnyOfEntry"
                }
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "type"
            ]
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "NO_REQUIREMENTS"
                }
              }
            },
            "then": {
              "properties": {
                "any_of": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "ANY_OF"
                }
              }
            },
            "then": {
              "required": [
                "any_of"
              ],
              "properties": {
                "any_of": {
                  "type": "array",
                  "minItems": 1,
                  "items": {
                    "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTierRulesAnyOfEntry"
                  }
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRuleEffect": {
        "type": "object",
        "description": "Effect applied when an earning is triggered. Depending on `type`, exactly one of `points`, `points_proportional` or `benefit` is required and the others must be null/absent.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "POINTS",
              "POINTS_PROPORTIONAL",
              "BENEFIT"
            ],
            "description": "Effect type."
          },
          "points": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPoints"
          },
          "points_proportional": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsProportional"
          },
          "benefit": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectBenefit"
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "type"
            ]
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "POINTS"
                }
              }
            },
            "then": {
              "required": [
                "points"
              ],
              "properties": {
                "points": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPoints"
                },
                "points_proportional": {
                  "type": "null"
                },
                "benefit": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "POINTS_PROPORTIONAL"
                }
              }
            },
            "then": {
              "required": [
                "points_proportional"
              ],
              "properties": {
                "points": {
                  "type": "null"
                },
                "points_proportional": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsProportional"
                },
                "benefit": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "BENEFIT"
                }
              }
            },
            "then": {
              "required": [
                "benefit"
              ],
              "properties": {
                "points": {
                  "type": "null"
                },
                "points_proportional": {
                  "type": "null"
                },
                "benefit": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectBenefit"
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRuleTriggerCustomEvent": {
        "type": "object",
        "description": "Custom event trigger configuration.",
        "properties": {
          "schema_id": {
            "type": "string",
            "pattern": "^ms_[a-zA-Z0-9]+",
            "description": "Custom event schema ID (`ms_...`)."
          }
        },
        "required": [
          "schema_id"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleTriggerSegment": {
        "type": "object",
        "description": "Segment trigger configuration.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^seg_[a-zA-Z0-9]+",
            "description": "Segment ID (`seg_...`)."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleValidityDailyHours": {
        "type": "object",
        "description": "Daily validity window on selected days of the week.",
        "properties": {
          "days_of_week": {
            "type": "array",
            "minItems": 1,
            "maxItems": 7,
            "uniqueItems": true,
            "description": "Days of week (0 = Sunday ... 6 = Saturday). Items must be unique.",
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 6
            }
          },
          "start_time": {
            "type": "string",
            "description": "Window start time in `HH:mm` format."
          },
          "end_time": {
            "type": "string",
            "description": "Window end time in `HH:mm` format."
          }
        },
        "required": [
          "days_of_week",
          "start_time",
          "end_time"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleTriggerLimitsCooldown": {
        "type": "object",
        "description": "Cooldown between consecutive triggers per member. With `NO_COOLDOWN`, `fixed_cooldown` must be `null`/absent. With `FIXED_COOLDOWN`, `fixed_cooldown` is required.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NO_COOLDOWN",
              "FIXED_COOLDOWN"
            ],
            "description": "Cooldown type."
          },
          "fixed_cooldown": {
            "description": "Fixed cooldown configuration. Can be `null`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerLimitsCooldownFixedCooldown"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "type"
            ]
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "NO_COOLDOWN"
                }
              }
            },
            "then": {
              "properties": {
                "fixed_cooldown": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "FIXED_COOLDOWN"
                }
              }
            },
            "then": {
              "required": [
                "fixed_cooldown"
              ],
              "properties": {
                "fixed_cooldown": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerLimitsCooldownFixedCooldown"
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRuleTriggerLimitsFrequency": {
        "type": "object",
        "description": "Frequency limit for triggers per member. With `NO_LIMIT`, `limits` must be `null` or an empty array. With `LIMITED`, `limits` is required and must contain exactly one limit.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NO_LIMIT",
              "LIMITED"
            ],
            "description": "Frequency limit type."
          },
          "limits": {
            "description": "Frequency limits (at most one). Can be `null`.",
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "minItems": 0,
                "maxItems": 1,
                "items": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerLimitsFrequencyLimit"
                }
              }
            ]
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "type"
            ]
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "NO_LIMIT"
                }
              }
            },
            "then": {
              "properties": {
                "limits": {
                  "oneOf": [
                    {
                      "type": "array",
                      "minItems": 0,
                      "maxItems": 0,
                      "items": {
                        "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerLimitsFrequencyLimit"
                      }
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "LIMITED"
                }
              }
            },
            "then": {
              "required": [
                "limits"
              ],
              "properties": {
                "limits": {
                  "type": "array",
                  "minItems": 1,
                  "maxItems": 1,
                  "items": {
                    "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerLimitsFrequencyLimit"
                  }
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRuleEarningLimitsGlobal": {
        "type": "object",
        "description": "Global (per member, across this rule) earning limits. With `NO_LIMIT`, `limits` is an empty array. With `LIMITED`, `limits` contains exactly one `TIME_BASED` limit.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NO_LIMIT",
              "LIMITED"
            ],
            "description": "Whether global earning limits apply."
          },
          "limits": {
            "type": "array",
            "description": "Earning limits (at most one). Empty array when `type` is `NO_LIMIT`.",
            "minItems": 0,
            "maxItems": 1,
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEarningLimitsGlobalLimit"
            }
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "type"
            ]
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "NO_LIMIT"
                }
              }
            },
            "then": {
              "properties": {
                "limits": {
                  "type": "array",
                  "minItems": 0,
                  "maxItems": 0,
                  "items": {
                    "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEarningLimitsGlobalLimit"
                  }
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "LIMITED"
                }
              }
            },
            "then": {
              "required": [
                "limits"
              ],
              "properties": {
                "limits": {
                  "type": "array",
                  "minItems": 1,
                  "maxItems": 1,
                  "items": {
                    "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEarningLimitsGlobalLimit"
                  }
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityRewardValidityDailyHoursResponse": {
        "type": "object",
        "description": "A single daily validity window.",
        "properties": {
          "days_of_week": {
            "type": "array",
            "description": "Days of the week the window applies to, as integers 0-6 (0 = Sunday).",
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 6
            }
          },
          "start_time": {
            "type": "string",
            "description": "Window start time in `HH:mm` format.",
            "example": "09:00"
          },
          "end_time": {
            "type": "string",
            "description": "Window end time in `HH:mm` format.",
            "example": "17:00"
          }
        },
        "required": [
          "days_of_week",
          "start_time",
          "end_time"
        ]
      },
      "LoyaltyV2ActivityRewardMaterialProductResponse": {
        "type": "object",
        "description": "Product reference.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^prod_[a-f0-9]+",
            "description": "Product identifier, prefixed with `prod_`."
          }
        },
        "required": [
          "id"
        ]
      },
      "LoyaltyV2ActivityRewardMaterialSKUResponse": {
        "type": "object",
        "description": "SKU reference.",
        "properties": {
          "product_id": {
            "type": "string",
            "pattern": "^prod_[a-f0-9]+",
            "description": "Unique identifier of the product the SKU belongs to, prefixed with `prod_`."
          },
          "id": {
            "type": "string",
            "pattern": "^sku_[a-f0-9]+",
            "description": "SKU identifier, prefixed with `sku_`."
          }
        },
        "required": [
          "product_id",
          "id"
        ]
      },
      "LoyaltyV2ActivityRewardDigitalDiscountCouponsResponse": {
        "type": "object",
        "description": "Discount coupons configuration.",
        "properties": {
          "campaign_id": {
            "type": "string",
            "pattern": "^camp_[a-zA-Z0-9]+",
            "description": "Unique identifier of the discount coupons campaign, prefixed with `camp_`."
          }
        },
        "required": [
          "campaign_id"
        ]
      },
      "LoyaltyV2ActivityRewardDigitalGiftVouchersResponse": {
        "type": "object",
        "description": "Gift vouchers configuration.",
        "properties": {
          "campaign_id": {
            "type": "string",
            "pattern": "^camp_[a-zA-Z0-9]+",
            "description": "Unique identifier of the gift vouchers campaign, prefixed with `camp_`."
          },
          "balance": {
            "type": "number",
            "description": "Gift card balance credited when the reward is delivered."
          }
        },
        "required": [
          "campaign_id",
          "balance"
        ]
      },
      "LoyaltyV2ActivityRewardDigitalLoyaltyCardPointsResponse": {
        "type": "object",
        "description": "Loyalty card points configuration.",
        "properties": {
          "points": {
            "type": "integer",
            "description": "Number of points credited when the reward is delivered."
          },
          "card_definition_id": {
            "type": "string",
            "pattern": "^lcdef_[a-f0-9]+$",
            "description": "Unique identifier of the card definition points are credited to, prefixed with `lcdef_`."
          }
        },
        "required": [
          "points",
          "card_definition_id"
        ]
      },
      "LoyaltyV2ActivityRewardCostRuleGroupResponse": {
        "type": "object",
        "description": "Rules group. Contains a `logic` formula string plus numbered rule definition properties (positive-integer keys).",
        "properties": {
          "logic": {
            "type": "string",
            "description": "Logical formula combining the numbered rule definitions, e.g. `\"1 AND 2\"`."
          }
        },
        "patternProperties": {
          "^[1-9]\\d*$": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardCostRuleDefinitionResponse"
          }
        }
      },
      "LoyaltyV2ActivityRewardCostSpendingResponse": {
        "type": "object",
        "description": "Points spending definition.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^lrspn_[a-f0-9]+$",
            "description": "Unique spending identifier, prefixed with `lrspn_`. Assigned by the API when omitted on create/update."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 200,
            "description": "Optional display name of the spending definition, or `null`."
          },
          "points": {
            "type": "integer",
            "description": "Number of points the member must spend."
          },
          "card_definition_id": {
            "type": "string",
            "pattern": "^lcdef_[a-f0-9]+$",
            "description": "Unique identifier of the card definition the points are spent from, prefixed with `lcdef_`."
          }
        },
        "required": [
          "id",
          "points",
          "card_definition_id"
        ]
      },
      "LoyaltyV2ActivityRewardPurchaseLimitsCooldown": {
        "type": "object",
        "description": "Purchase cooldown limits for a reward.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NO_COOLDOWN",
              "FIXED_COOLDOWN"
            ],
            "description": "Cooldown type. `NO_COOLDOWN` – no cooldown. `FIXED_COOLDOWN` – wait a fixed period after each purchase."
          },
          "fixed_cooldown": {
            "description": "Fixed cooldown details. Present when `type` is `FIXED_COOLDOWN`; omitted or `null` for `NO_COOLDOWN`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityRewardPurchaseLimitsCooldownFixedCooldown"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "type"
        ]
      },
      "LoyaltyV2ActivityRewardPurchaseLimitsFrequency": {
        "type": "object",
        "description": "Purchase frequency limits for a reward.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NO_LIMIT",
              "LIMITED"
            ],
            "description": "Frequency limit type. `NO_LIMIT` – unlimited purchases. `LIMITED` – limited by the `limits` array."
          },
          "limits": {
            "type": "array",
            "description": "Frequency limit definitions. Empty array when `type` is `NO_LIMIT`; one entry when `type` is `LIMITED`.",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityRewardPurchaseLimitsFrequencyLimit"
            }
          }
        },
        "required": [
          "type",
          "limits"
        ]
      },
      "LoyaltyV2ProgramRewardStockUnlimited": {
        "title": "Loyalty Program Reward Stock Unlimited",
        "type": "object",
        "description": "Unlimited assignment stock. `limited` is omitted.",
        "properties": {
          "type": {
            "type": "string",
            "const": "UNLIMITED",
            "description": "Stock type. Always `UNLIMITED`."
          }
        },
        "required": [
          "type"
        ]
      },
      "LoyaltyV2ProgramRewardStockLimited": {
        "title": "Loyalty Program Reward Stock Limited",
        "type": "object",
        "description": "Limited assignment stock.",
        "properties": {
          "type": {
            "type": "string",
            "const": "LIMITED",
            "description": "Stock type. Always `LIMITED`."
          },
          "limited": {
            "$ref": "#/components/schemas/LoyaltyV2ProgramRewardStockLimitedQuantity"
          }
        },
        "required": [
          "type",
          "limited"
        ]
      },
      "LoyaltyV2ActivityTierStructurePointEarnedPeriod": {
        "type": "object",
        "description": "Points earned tracking period.",
        "properties": {
          "value": {
            "type": "integer",
            "description": "Length of the tracking period, expressed in `unit` units."
          },
          "unit": {
            "type": "string",
            "enum": [
              "DAY",
              "WEEK",
              "MONTH",
              "YEAR"
            ],
            "description": "Unit of the tracking period."
          }
        }
      },
      "LoyaltyV2ActivityTierStructureExpirationFixedDuration": {
        "type": "object",
        "description": "Fixed duration expiration settings.",
        "properties": {
          "period": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructureExpirationPeriod",
            "description": "Duration after which the tier membership expires."
          }
        }
      },
      "LoyaltyV2ActivityTierStructureExpirationCalendarExpiration": {
        "type": "object",
        "description": "Calendar expiration settings.",
        "properties": {
          "calendar_dates": {
            "type": "array",
            "description": "Calendar dates on which tier membership expires.",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructureExpirationCalendarDate"
            }
          }
        }
      },
      "LoyaltyV2ActivityTierStructureExpirationSlidingExpiration": {
        "type": "object",
        "description": "Sliding expiration settings.",
        "properties": {
          "earning_activity": {
            "type": "boolean",
            "description": "Whether point earning activity extends the tier membership."
          },
          "spending_activity": {
            "type": "boolean",
            "description": "Whether point spending activity extends the tier membership."
          },
          "custom_activity": {
            "type": "boolean",
            "description": "Whether custom activities extend the tier membership."
          },
          "custom_activity_types": {
            "type": "array",
            "description": "Custom activity type names that extend the tier membership.",
            "items": {
              "type": "string",
              "description": "Custom activity type name."
            }
          },
          "period": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityTierStructureExpirationPeriod",
            "description": "Sliding period after the last qualifying activity."
          }
        }
      },
      "LoyaltyV2ActivityTierStructureDowngradeGracePeriod": {
        "type": "object",
        "description": "Downgrade grace period.",
        "properties": {
          "value": {
            "type": "integer",
            "description": "Length of the grace period, expressed in `unit` units."
          },
          "unit": {
            "type": "string",
            "enum": [
              "DAY",
              "MONTH",
              "YEAR"
            ],
            "description": "Unit of the grace period."
          },
          "round_up": {
            "type": "boolean",
            "description": "Whether the grace period end is rounded up to the end of the unit."
          }
        }
      },
      "LoyaltyV2ActivityBenefitStockLimited": {
        "type": "object",
        "title": "Benefit Stock Limited",
        "description": "Limited stock configuration.",
        "properties": {
          "quantity": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "Remaining stock quantity."
          }
        },
        "required": [
          "quantity"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityBenefitPointsProportionalOrder": {
        "type": "object",
        "title": "Benefit Point Proportional",
        "description": "Order-based proportional calculation. Provide the property matching the `calculation_type`.",
        "properties": {
          "amount": {
            "description": "Points per every specified pre-discount order amount (for `PRE_DISCOUNT_ORDER_AMOUNT`).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalEvery"
              }
            ]
          },
          "total_amount": {
            "description": "Points per every specified post-discount order amount (for `POST_DISCOUNT_ORDER_AMOUNT`).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalEvery"
              }
            ]
          },
          "metadata": {
            "description": "Points per every specified value of an order metadata property (for `ORDER_METADATA_VALUE`).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalMetadata"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "LoyaltyV2ActivityBenefitPointsProportionalCustomer": {
        "type": "object",
        "title": "Benefit Point Proportional Customer",
        "description": "Customer-metadata-based proportional calculation.",
        "properties": {
          "metadata": {
            "description": "Points per every specified value of a customer metadata property.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalMetadata"
              }
            ]
          }
        },
        "required": [
          "metadata"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityBenefitPointsProportionalCustomEvent": {
        "type": "object",
        "title": "Benefit Point Proportional Custom Event",
        "description": "Custom-event-metadata-based proportional calculation.",
        "properties": {
          "metadata": {
            "description": "Points per every specified value of a custom event metadata property.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalMetadata"
              }
            ]
          }
        },
        "required": [
          "metadata"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityBenefitPointsProportionalOrderItems": {
        "type": "object",
        "title": "Benefit Point Proportional Order Items",
        "description": "Order-items-based proportional calculation. Provide the property matching the `calculation_type`.",
        "properties": {
          "amount": {
            "description": "Points per every specified pre-discount amount spent on the selected items (for `PRE_DISCOUNT_ORDER_ITEMS_AMOUNT`).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalOrderItemsCalculation"
              }
            ]
          },
          "subtotal_amount": {
            "description": "Points per every specified post-discount amount spent on the selected items (for `POST_DISCOUNT_ORDER_ITEMS_AMOUNT`).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalOrderItemsCalculation"
              }
            ]
          },
          "quantity": {
            "description": "Points per every specified quantity of the selected items, excluding free items (for `ORDER_ITEMS_QUANTITY`).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalOrderItemsCalculation"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "LoyaltyV2ActivityBenefitMaterialProduct": {
        "type": "object",
        "title": "Benefit Material Product",
        "description": "Product reference for a material benefit.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^prod_[a-f0-9]+",
            "description": "Product ID, prefixed with `prod_`."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityBenefitMaterialSKU": {
        "type": "object",
        "title": "Benefit Material SKU",
        "description": "SKU reference for a material benefit.",
        "properties": {
          "product_id": {
            "type": "string",
            "pattern": "^prod_[a-f0-9]+",
            "description": "ID of the product the SKU belongs to, prefixed with `prod_`."
          },
          "id": {
            "type": "string",
            "pattern": "^sku_[a-f0-9]+",
            "description": "SKU ID, prefixed with `sku_`."
          }
        },
        "required": [
          "product_id",
          "id"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityBenefitDigitalGiftVouchers": {
        "type": "object",
        "title": "Benefit Digital Gift Vouchers",
        "description": "Gift vouchers digital benefit configuration.",
        "properties": {
          "campaign_id": {
            "type": "string",
            "pattern": "^camp_[a-zA-Z0-9]+",
            "description": "ID of the `GIFT_VOUCHERS` campaign the vouchers are sourced from, prefixed with `camp_`."
          },
          "balance": {
            "type": "number",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "Balance loaded onto the gift voucher."
          }
        },
        "required": [
          "campaign_id",
          "balance"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityBenefitDigitalDiscountCoupons": {
        "type": "object",
        "title": "Benefit Digital Discount Coupons",
        "description": "Discount coupons digital benefit configuration.",
        "properties": {
          "campaign_id": {
            "type": "string",
            "pattern": "^camp_[a-zA-Z0-9]+",
            "description": "ID of the `DISCOUNT_COUPONS` campaign the coupons are sourced from, prefixed with `camp_`."
          }
        },
        "required": [
          "campaign_id"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityTierQualificationRulesPoints": {
        "type": "object",
        "description": "Point thresholds for tier qualification.",
        "properties": {
          "min_value": {
            "type": "number",
            "description": "Minimum number of points required to qualify for the tier."
          },
          "max_value": {
            "type": "number",
            "description": "Optional upper bound of points for the tier. Omitted when not set."
          }
        }
      },
      "LoyaltyV2ActivityTierQualificationRulesSegment": {
        "type": "object",
        "description": "Customer segment reference.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the customer segment."
          }
        }
      },
      "LoyaltyV2ActivityCardDefinitionPeriod": {
        "type": "object",
        "description": "A period expressed as a value and unit.",
        "properties": {
          "value": {
            "type": "integer",
            "description": "Period length."
          },
          "unit": {
            "type": "string",
            "enum": [
              "DAY",
              "MONTH",
              "YEAR"
            ],
            "description": "Period unit."
          }
        },
        "required": [
          "value",
          "unit"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionPointsExpirationRollingExpirationRounding": {
        "type": "object",
        "description": "Rounding of the rolling expiration date.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "END_OF_MONTH",
              "END_OF_QUARTER",
              "END_OF_HALF_YEAR",
              "END_OF_YEAR",
              "END_OF_PARTICULAR_MONTH"
            ],
            "description": "Rounding type."
          },
          "value": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12,
            "description": "Month number (1-12). Only present when `type` is `END_OF_PARTICULAR_MONTH`."
          }
        },
        "required": [
          "type"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionCalendarDate": {
        "type": "object",
        "description": "A calendar date (day + month).",
        "properties": {
          "day": {
            "type": "integer",
            "minimum": 1,
            "maximum": 31,
            "description": "Day of the month."
          },
          "month": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12,
            "description": "Month number (1-12)."
          }
        },
        "required": [
          "day",
          "month"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionEarningLimitsGlobalLimit": {
        "description": "A global earning limit: `BALANCE_BASED` or `TIME_BASED`.",
        "oneOf": [
          {
            "type": "object",
            "description": "Balance-based limit.",
            "properties": {
              "type": {
                "type": "string",
                "const": "BALANCE_BASED",
                "description": "Limit type."
              },
              "max": {
                "type": "integer",
                "description": "Maximum card balance in points."
              }
            },
            "required": [
              "type",
              "max"
            ]
          },
          {
            "type": "object",
            "description": "Time-based limit.",
            "properties": {
              "type": {
                "type": "string",
                "const": "TIME_BASED",
                "description": "Limit type."
              },
              "period": {
                "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionLimitTimeBasedPeriod"
              },
              "points": {
                "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionLimitTimeBasedPoints"
              }
            },
            "required": [
              "type"
            ]
          }
        ],
        "discriminator": {
          "propertyName": "type"
        }
      },
      "LoyaltyV2ActivityCardDefinitionEarningLimitsTransactionsLimit": {
        "description": "A per-transaction earning limit: `POINTS` or `SPENDING`.",
        "oneOf": [
          {
            "type": "object",
            "description": "Points limit.",
            "properties": {
              "type": {
                "type": "string",
                "const": "POINTS",
                "description": "Limit type."
              },
              "max": {
                "type": "integer",
                "description": "Maximum points earned per transaction."
              }
            },
            "required": [
              "type",
              "max"
            ]
          },
          {
            "type": "object",
            "description": "Spending threshold.",
            "properties": {
              "type": {
                "type": "string",
                "const": "SPENDING",
                "description": "Limit type."
              },
              "min_amount": {
                "type": "integer",
                "description": "Minimum transaction amount required to earn points."
              }
            },
            "required": [
              "type",
              "min_amount"
            ]
          }
        ],
        "discriminator": {
          "propertyName": "type"
        }
      },
      "LoyaltyV2ActivityCardDefinitionSpendingLimitsGlobalLimit": {
        "description": "A global spending limit: `SPENDING_BASED` or `TIME_BASED`.",
        "oneOf": [
          {
            "type": "object",
            "description": "Spending-based limit.",
            "properties": {
              "type": {
                "type": "string",
                "const": "SPENDING_BASED",
                "description": "Limit type."
              },
              "max": {
                "type": "integer",
                "description": "Maximum total points spent."
              }
            },
            "required": [
              "type",
              "max"
            ]
          },
          {
            "type": "object",
            "description": "Time-based limit.",
            "properties": {
              "type": {
                "type": "string",
                "const": "TIME_BASED",
                "description": "Limit type."
              },
              "period": {
                "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionLimitTimeBasedPeriod"
              },
              "points": {
                "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionLimitTimeBasedPoints"
              }
            },
            "required": [
              "type"
            ]
          }
        ],
        "discriminator": {
          "propertyName": "type"
        }
      },
      "LoyaltyV2ActivityCardDefinitionSpendingLimitsTransactionsLimit": {
        "type": "object",
        "description": "A per-transaction spending limit. Currently only the `POINTS` type exists.",
        "properties": {
          "type": {
            "type": "string",
            "const": "POINTS",
            "description": "Limit type."
          },
          "max": {
            "type": "integer",
            "description": "Maximum points spent per transaction."
          }
        },
        "required": [
          "type",
          "max"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionRefundsSpentPointsMethod": {
        "type": "object",
        "description": "A spent points refund method.",
        "properties": {
          "type": {
            "type": "string",
            "const": "RETURN_POINTS",
            "description": "Refund method type."
          },
          "mode": {
            "type": "string",
            "enum": [
              "REFUND_ALL",
              "REFUND_ITEM",
              "REFUND_AMOUNT"
            ],
            "description": "Refund mode."
          }
        },
        "required": [
          "type",
          "mode"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionRefundsEarnedPointsMethod": {
        "description": "An earned points revoke method: `REVOKE_FROM_PENDING` or `REVOKE_FROM_BALANCE`.",
        "oneOf": [
          {
            "type": "object",
            "description": "Revoke earned points from pending points.",
            "properties": {
              "type": {
                "type": "string",
                "const": "REVOKE_FROM_PENDING",
                "description": "Revoke method type."
              }
            },
            "required": [
              "type"
            ]
          },
          {
            "type": "object",
            "description": "Revoke earned points from the card balance.",
            "properties": {
              "type": {
                "type": "string",
                "const": "REVOKE_FROM_BALANCE",
                "description": "Revoke method type."
              },
              "mode": {
                "type": "string",
                "enum": [
                  "REVOKE_TO_ZERO",
                  "REVOKE_BELOW_ZERO"
                ],
                "description": "Revoke mode."
              }
            },
            "required": [
              "type",
              "mode"
            ]
          }
        ],
        "discriminator": {
          "propertyName": "type"
        }
      },
      "LoyaltyV2ActivityEarningRuleDefinition": {
        "type": "object",
        "description": "A single validation rule definition.",
        "properties": {
          "name": {
            "type": "string",
            "enum": [
              "customer.segment",
              "customer.metadata",
              "order.amount",
              "order.initial_amount",
              "order.total_amount",
              "order.metadata",
              "order.items.count",
              "order.items.price_any",
              "order.items.price_each",
              "order.items.every",
              "order.items.any",
              "order.items.none",
              "order.items.quantity",
              "order.items.aggregated_quantity",
              "order.items.price",
              "order.items.aggregated_amount",
              "order.items.cheapest",
              "order.items.most_expensive",
              "order.items.metadata",
              "custom_event.metadata"
            ],
            "description": "Rule definition name. Which names are allowed depends on the trigger event: `customer.order.paid` allows customer.* plus all order.* names; `customer.custom_event` allows customer.* plus custom_event.metadata; `customer.segment.entered` allows only customer.* names."
          },
          "property": {
            "type": [
              "string",
              "null"
            ],
            "description": "Metadata property name the rule applies to (for metadata-based rules). Can be `null`."
          },
          "schema_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Custom event schema ID for custom_event.metadata rules. Can be `null`."
          },
          "error": {
            "description": "Error returned when this specific rule fails. Can be `null`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleError"
              },
              {
                "type": "null"
              }
            ]
          },
          "rules": {
            "description": "Nested rule group (recursive). Can be `null`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleRulesGroup"
              },
              {
                "type": "null"
              }
            ]
          },
          "conditions": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleConditions"
          }
        },
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleTierRulesAnyOfEntry": {
        "type": "object",
        "description": "Tier structure with a list of qualifying tiers.",
        "properties": {
          "tier_structure_id": {
            "type": "string",
            "pattern": "^lts_[a-f0-9]+$",
            "description": "Tier structure ID (`lts_...`)."
          },
          "tier_ids": {
            "type": "array",
            "minItems": 1,
            "description": "Qualifying tier IDs (`lt_...`).",
            "items": {
              "type": "string",
              "pattern": "^lt_[a-f0-9]+$"
            }
          }
        },
        "required": [
          "tier_structure_id",
          "tier_ids"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleEffectPoints": {
        "type": "object",
        "description": "Fixed points effect – awards a fixed number of points to a card definition.",
        "properties": {
          "value": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "Fixed number of points to award."
          },
          "card_definition_id": {
            "type": "string",
            "pattern": "^lcdef_[a-f0-9]+$",
            "description": "Card definition ID (`lcdef_...`) the points are awarded to."
          },
          "points_expiration": {
            "description": "Optional expiration override for the awarded points. Can be `null`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpiration"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "value",
          "card_definition_id"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleEffectPointsProportional": {
        "type": "object",
        "description": "Proportional points effect – awards points using an \"every X gives Y points\" formula. Depending on `calculation_type`, one specific configuration object is required and the others must be `null`/absent:\n- `PRE_DISCOUNT_ORDER_AMOUNT`: requires `order.amount`\n- `POST_DISCOUNT_ORDER_AMOUNT`: requires `order.total_amount`\n- `ORDER_METADATA_VALUE`: requires `order.metadata`\n- `CUSTOMER_METADATA_VALUE`: requires `customer.metadata`\n- `CUSTOM_EVENT_METADATA_VALUE`: requires `custom_event.metadata`\n- `PRE_DISCOUNT_ORDER_ITEMS_AMOUNT`: requires `order_items.amount`\n- `POST_DISCOUNT_ORDER_ITEMS_AMOUNT`: requires `order_items.subtotal_amount`\n- `ORDER_ITEMS_QUANTITY`: requires `order_items.quantity`\nThe trigger further restricts allowed calculation types:\n- `customer.order.paid` allows all order/order-items types plus `CUSTOMER_METADATA_VALUE`;\n- `customer.custom_event` allows `CUSTOMER_METADATA_VALUE` and `CUSTOM_EVENT_METADATA_VALUE`;\n- `customer.segment.entered` allows only `CUSTOMER_METADATA_VALUE`.",
        "properties": {
          "calculation_type": {
            "type": "string",
            "enum": [
              "PRE_DISCOUNT_ORDER_AMOUNT",
              "POST_DISCOUNT_ORDER_AMOUNT",
              "PRE_DISCOUNT_ORDER_ITEMS_AMOUNT",
              "POST_DISCOUNT_ORDER_ITEMS_AMOUNT",
              "ORDER_ITEMS_QUANTITY",
              "ORDER_METADATA_VALUE",
              "CUSTOMER_METADATA_VALUE",
              "CUSTOM_EVENT_METADATA_VALUE"
            ],
            "description": "How the proportional points are calculated."
          },
          "card_definition_id": {
            "type": "string",
            "pattern": "^lcdef_[a-f0-9]+$",
            "description": "Card definition ID (`lcdef_...`) the points are awarded to."
          },
          "points_expiration": {
            "description": "Optional expiration override for the awarded points. Can be `null`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpiration"
              },
              {
                "type": "null"
              }
            ]
          },
          "order": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalOrder"
          },
          "customer": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalCustomer"
          },
          "custom_event": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalCustomEvent"
          },
          "order_items": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalOrderItems"
          }
        },
        "required": [
          "calculation_type",
          "card_definition_id"
        ],
        "additionalProperties": false,
        "allOf": [
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "PRE_DISCOUNT_ORDER_AMOUNT"
                }
              }
            },
            "then": {
              "required": [
                "order"
              ],
              "properties": {
                "order": {
                  "type": "object",
                  "required": [
                    "amount"
                  ]
                },
                "customer": {
                  "type": "null"
                },
                "custom_event": {
                  "type": "null"
                },
                "order_items": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "POST_DISCOUNT_ORDER_AMOUNT"
                }
              }
            },
            "then": {
              "required": [
                "order"
              ],
              "properties": {
                "order": {
                  "type": "object",
                  "required": [
                    "total_amount"
                  ]
                },
                "customer": {
                  "type": "null"
                },
                "custom_event": {
                  "type": "null"
                },
                "order_items": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "ORDER_METADATA_VALUE"
                }
              }
            },
            "then": {
              "required": [
                "order"
              ],
              "properties": {
                "order": {
                  "type": "object",
                  "required": [
                    "metadata"
                  ]
                },
                "customer": {
                  "type": "null"
                },
                "custom_event": {
                  "type": "null"
                },
                "order_items": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "CUSTOMER_METADATA_VALUE"
                }
              }
            },
            "then": {
              "required": [
                "customer"
              ],
              "properties": {
                "customer": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalCustomer"
                },
                "order": {
                  "type": "null"
                },
                "custom_event": {
                  "type": "null"
                },
                "order_items": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "CUSTOM_EVENT_METADATA_VALUE"
                }
              }
            },
            "then": {
              "required": [
                "custom_event"
              ],
              "properties": {
                "custom_event": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalCustomEvent"
                },
                "order": {
                  "type": "null"
                },
                "customer": {
                  "type": "null"
                },
                "order_items": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "PRE_DISCOUNT_ORDER_ITEMS_AMOUNT"
                }
              }
            },
            "then": {
              "required": [
                "order_items"
              ],
              "properties": {
                "order_items": {
                  "type": "object",
                  "required": [
                    "amount"
                  ]
                },
                "order": {
                  "type": "null"
                },
                "customer": {
                  "type": "null"
                },
                "custom_event": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "POST_DISCOUNT_ORDER_ITEMS_AMOUNT"
                }
              }
            },
            "then": {
              "required": [
                "order_items"
              ],
              "properties": {
                "order_items": {
                  "type": "object",
                  "required": [
                    "subtotal_amount"
                  ]
                },
                "order": {
                  "type": "null"
                },
                "customer": {
                  "type": "null"
                },
                "custom_event": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "calculation_type": {
                  "const": "ORDER_ITEMS_QUANTITY"
                }
              }
            },
            "then": {
              "required": [
                "order_items"
              ],
              "properties": {
                "order_items": {
                  "type": "object",
                  "required": [
                    "quantity"
                  ]
                },
                "order": {
                  "type": "null"
                },
                "customer": {
                  "type": "null"
                },
                "custom_event": {
                  "type": "null"
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRuleEffectBenefit": {
        "type": "object",
        "description": "Benefit effect - grants a predefined benefit.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^lben_[a-f0-9]+$",
            "description": "Benefit ID (`lben_...`)."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleTriggerLimitsCooldownFixedCooldown": {
        "type": "object",
        "description": "Fixed cooldown period configuration.",
        "properties": {
          "period": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerLimitsCooldownFixedCooldownPeriod"
          }
        },
        "required": [
          "period"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleTriggerLimitsFrequencyLimit": {
        "type": "object",
        "description": "A single frequency limit. Currently only the `TIME_BASED` variant exists (discriminated by `type`), which requires `period` and `triggers`.",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "TIME_BASED"
            ],
            "description": "Frequency limit variant."
          }
        },
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "type": {
                "const": "TIME_BASED"
              },
              "period": {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerLimitsFrequencyLimitTimeBasedPeriod"
              },
              "triggers": {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerLimitsFrequencyLimitTimeBasedTriggers"
              }
            },
            "required": [
              "period",
              "triggers"
            ],
            "additionalProperties": false
          }
        ]
      },
      "LoyaltyV2ActivityEarningRuleEarningLimitsGlobalLimit": {
        "type": "object",
        "description": "A single global earning limit. Currently only the `TIME_BASED` variant exists (discriminated by `type`), which requires `period` and `points`.",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "TIME_BASED"
            ],
            "description": "Earning limit variant."
          }
        },
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "type": {
                "const": "TIME_BASED"
              },
              "period": {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEarningLimitsGlobalTimeBasedPeriod"
              },
              "points": {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEarningLimitsGlobalTimeBasedPoints"
              }
            },
            "required": [
              "period",
              "points"
            ],
            "additionalProperties": false
          }
        ]
      },
      "LoyaltyV2ActivityRewardCostRuleDefinitionResponse": {
        "type": "object",
        "description": "A single rule definition. `conditions`, `rules` and `error` are omitted when not set.",
        "properties": {
          "name": {
            "type": "string",
            "enum": [
              "customer.segment",
              "customer.metadata",
              "member.metadata"
            ],
            "description": "Rule kind."
          },
          "property": {
            "type": [
              "string",
              "null"
            ],
            "description": "Metadata property name the rule applies to (for metadata rules)."
          },
          "conditions": {
            "type": "object",
            "description": "Operator conditions for the rule (keys are operators such as `$is`, `$in`; values are arrays of condition values). Omitted when not set."
          },
          "rules": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardCostRuleGroupResponse",
            "description": "Nested rules group. Omitted when not set."
          },
          "error": {
            "type": "object",
            "description": "Custom rule error definition with a `message` property. Omitted when not set.",
            "properties": {
              "message": {
                "type": "string",
                "description": "Error message returned when the rule is not satisfied."
              }
            }
          }
        }
      },
      "LoyaltyV2ActivityRewardPurchaseLimitsCooldownFixedCooldown": {
        "type": "object",
        "description": "Fixed cooldown configuration.",
        "properties": {
          "period": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardPurchaseLimitsCooldownFixedCooldownPeriod",
            "description": "Cooldown period."
          }
        },
        "required": [
          "period"
        ]
      },
      "LoyaltyV2ActivityRewardPurchaseLimitsFrequencyLimit": {
        "type": "object",
        "description": "A frequency limit. Currently only `TIME_BASED` is supported.",
        "properties": {
          "type": {
            "type": "string",
            "const": "TIME_BASED",
            "description": "Limit type. Always `TIME_BASED`."
          },
          "period": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityCardDefinitionLimitTimeBasedPeriod",
            "description": "Time period that resets the purchase counter. Reuses the card-definition time-based period shape."
          },
          "triggers": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityRewardPurchaseLimitsFrequencyLimitTriggers",
            "description": "Purchase count limit within the period."
          }
        },
        "required": [
          "type",
          "period",
          "triggers"
        ]
      },
      "LoyaltyV2ProgramRewardStockLimitedQuantity": {
        "title": "Loyalty Program Reward Stock Limited Quantity",
        "type": "object",
        "description": "Remaining quantity for a `LIMITED` assignment stock.",
        "properties": {
          "quantity": {
            "type": "integer",
            "minimum": 0,
            "description": "Remaining stock quantity."
          }
        },
        "required": [
          "quantity"
        ]
      },
      "LoyaltyV2ActivityTierStructureExpirationPeriod": {
        "type": "object",
        "description": "Expiration period. The same shape is used for fixed duration and sliding\nexpiration periods.",
        "properties": {
          "value": {
            "type": "integer",
            "description": "Length of the period, expressed in `unit` units."
          },
          "unit": {
            "type": "string",
            "enum": [
              "DAY",
              "MONTH",
              "YEAR"
            ],
            "description": "Unit of the period."
          }
        }
      },
      "LoyaltyV2ActivityTierStructureExpirationCalendarDate": {
        "type": "object",
        "description": "A recurring calendar date.",
        "properties": {
          "day": {
            "type": "integer",
            "minimum": 1,
            "maximum": 31,
            "description": "Day of the month (1-31)."
          },
          "month": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12,
            "description": "Month of the year (1-12)."
          }
        }
      },
      "LoyaltyV2ActivityBenefitPointsProportionalEvery": {
        "type": "object",
        "description": "Ratio definition - `value` points for every `every` units.",
        "properties": {
          "every": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991,
            "description": "Unit step (e.g. order amount in cents) for which `value` points are granted."
          },
          "value": {
            "type": "number",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "Number of points granted per `every` units."
          }
        },
        "required": [
          "every",
          "value"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityBenefitPointsProportionalMetadata": {
        "type": "object",
        "description": "Metadata-based ratio definition - `value` points for every `every` units of the metadata property.",
        "properties": {
          "every": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991,
            "description": "Unit step of the metadata property value for which `value` points are granted."
          },
          "value": {
            "type": "number",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "Number of points granted per `every` units."
          },
          "property": {
            "type": "string",
            "minLength": 1,
            "description": "Name of the metadata property used for the calculation."
          }
        },
        "required": [
          "every",
          "value",
          "property"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityBenefitPointsProportionalOrderItemsCalculation": {
        "type": "object",
        "description": "Order-items ratio definition with the list of applicable products/SKUs/collections.",
        "properties": {
          "every": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991,
            "description": "Unit step (amount or quantity) for which `value` points are granted."
          },
          "value": {
            "type": "number",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "Number of points granted per `every` units."
          },
          "applicable_to": {
            "type": "array",
            "minItems": 1,
            "description": "Products, SKUs, or product collections the calculation applies to.",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalApplicableTo"
            }
          }
        },
        "required": [
          "every",
          "value",
          "applicable_to"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityCardDefinitionLimitTimeBasedPeriod": {
        "type": "object",
        "description": "Time-based limit period.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "CURRENT_PERIOD"
            ],
            "description": "Period type."
          },
          "current_period": {
            "type": "object",
            "description": "Current-period configuration. Present when `type` is `CURRENT_PERIOD`.",
            "properties": {
              "unit": {
                "type": "string",
                "enum": [
                  "DAY",
                  "WEEK",
                  "MONTH",
                  "QUARTER",
                  "YEAR"
                ],
                "description": "Calendar period unit."
              }
            },
            "required": [
              "unit"
            ]
          }
        },
        "required": [
          "type"
        ]
      },
      "LoyaltyV2ActivityCardDefinitionLimitTimeBasedPoints": {
        "type": "object",
        "description": "Points cap for a time-based limit.",
        "properties": {
          "max": {
            "type": "integer",
            "description": "Maximum points within the period."
          }
        },
        "required": [
          "max"
        ]
      },
      "LoyaltyV2ActivityEarningRuleConditions": {
        "type": "object",
        "description": "Conditions keyed by operator. Allowed operators: `$is`, `$is_not`, `$in`, `$not_in`, `$less_than`, `$less_than_or_equal`, `$more_than`, `$more_than_or_equal`, `$from` (each an array of values), and `$dow` (an array of day-of-week integers 0-6). At most 10 operator properties are allowed (`maxProperties: 10`).",
        "properties": {
          "$dow": {
            "type": "array",
            "minItems": 1,
            "maxItems": 7,
            "description": "Day-of-week condition (0 = Sunday ... 6 = Saturday).",
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 6
            }
          }
        },
        "patternProperties": {
          "^(\\$is|\\$is_not|\\$in|\\$not_in|\\$less_than|\\$less_than_or_equal|\\$more_than|\\$more_than_or_equal|\\$from)$": {
            "type": "array",
            "minItems": 1,
            "description": "Condition values – strings, integers, booleans or object references.",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleConditionObject"
                },
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                },
                {
                  "type": "boolean"
                }
              ]
            }
          }
        },
        "maxProperties": 10,
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleEffectPointsExpiration": {
        "type": "object",
        "description": "Points expiration override. Depending on `type`, exactly one of `rolling_expiration`, `calendar_expiration` or `sliding_expiration` is required; for `NO_EXPIRATION` all three must be `null`/absent.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "NO_EXPIRATION",
              "ROLLING_EXPIRATION",
              "CALENDAR_EXPIRATION",
              "SLIDING_EXPIRATION"
            ],
            "description": "Points expiration type."
          },
          "rolling_expiration": {
            "description": "Rolling expiration configuration. Can be `null`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpirationRollingExpiration"
              },
              {
                "type": "null"
              }
            ]
          },
          "calendar_expiration": {
            "description": "Calendar expiration configuration. Can be `null`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpirationCalendarExpiration"
              },
              {
                "type": "null"
              }
            ]
          },
          "sliding_expiration": {
            "description": "Sliding expiration configuration. Can be `null`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpirationSlidingExpiration"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "type"
            ]
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "NO_EXPIRATION"
                }
              }
            },
            "then": {
              "properties": {
                "rolling_expiration": {
                  "type": "null"
                },
                "calendar_expiration": {
                  "type": "null"
                },
                "sliding_expiration": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "ROLLING_EXPIRATION"
                }
              }
            },
            "then": {
              "required": [
                "rolling_expiration"
              ],
              "properties": {
                "rolling_expiration": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpirationRollingExpiration"
                },
                "calendar_expiration": {
                  "type": "null"
                },
                "sliding_expiration": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "CALENDAR_EXPIRATION"
                }
              }
            },
            "then": {
              "required": [
                "calendar_expiration"
              ],
              "properties": {
                "rolling_expiration": {
                  "type": "null"
                },
                "calendar_expiration": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpirationCalendarExpiration"
                },
                "sliding_expiration": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "SLIDING_EXPIRATION"
                }
              }
            },
            "then": {
              "required": [
                "sliding_expiration"
              ],
              "properties": {
                "rolling_expiration": {
                  "type": "null"
                },
                "calendar_expiration": {
                  "type": "null"
                },
                "sliding_expiration": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpirationSlidingExpiration"
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRulePointsProportionalOrder": {
        "type": "object",
        "description": "Order-based proportional calculation configuration. `amount` is used by `PRE_DISCOUNT_ORDER_AMOUNT`, `total_amount` by `POST_DISCOUNT_ORDER_AMOUNT` and `metadata` by `ORDER_METADATA_VALUE`.",
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalEvery"
          },
          "total_amount": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalEvery"
          },
          "metadata": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalMetadata"
          }
        },
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRulePointsProportionalCustomer": {
        "type": "object",
        "description": "Customer-based proportional calculation configuration (`CUSTOMER_METADATA_VALUE`).",
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalMetadata"
          }
        },
        "required": [
          "metadata"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRulePointsProportionalCustomEvent": {
        "type": "object",
        "description": "Custom event based proportional calculation configuration (`CUSTOM_EVENT_METADATA_VALUE`).",
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalMetadata"
          }
        },
        "required": [
          "metadata"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRulePointsProportionalOrderItems": {
        "type": "object",
        "description": "Order items based proportional calculation configuration. `amount` is used by `PRE_DISCOUNT_ORDER_ITEMS_AMOUNT`, `subtotal_amount` by `POST_DISCOUNT_ORDER_ITEMS_AMOUNT` and `quantity` by `ORDER_ITEMS_QUANTITY`.",
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalOrderItemsCalculation"
          },
          "subtotal_amount": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalOrderItemsCalculation"
          },
          "quantity": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalOrderItemsCalculation"
          }
        },
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleTriggerLimitsCooldownFixedCooldownPeriod": {
        "type": "object",
        "description": "Cooldown period. The maximum `value` depends on `unit`: `HOUR` - 24, `DAY` - 90, `WEEK` - 52, `MONTH` - 12, `YEAR` - 1.",
        "properties": {
          "value": {
            "type": "integer",
            "minimum": 1,
            "description": "Period length. Maximum depends on `unit`: 24 for HOUR, 90 for DAY, 52 for WEEK, 12 for MONTH, 1 for YEAR."
          },
          "unit": {
            "type": "string",
            "enum": [
              "HOUR",
              "DAY",
              "WEEK",
              "MONTH",
              "YEAR"
            ],
            "description": "Period unit."
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "value",
              "unit"
            ]
          },
          {
            "if": {
              "properties": {
                "unit": {
                  "const": "HOUR"
                }
              }
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 24
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "unit": {
                  "const": "DAY"
                }
              }
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 90
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "unit": {
                  "const": "WEEK"
                }
              }
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 52
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "unit": {
                  "const": "MONTH"
                }
              }
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 12
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "unit": {
                  "const": "YEAR"
                }
              }
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRuleTriggerLimitsFrequencyLimitTimeBasedPeriod": {
        "type": "object",
        "description": "Time-based frequency limit period. Currently only `CURRENT_PERIOD` is supported; when selected, `current_period` is required.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "CURRENT_PERIOD"
            ],
            "description": "Period type."
          },
          "current_period": {
            "description": "Current calendar period configuration. Can be `null`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerLimitsFrequencyLimitTimeBasedCurrentPeriod"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "type"
            ]
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "CURRENT_PERIOD"
                }
              }
            },
            "then": {
              "required": [
                "current_period"
              ],
              "properties": {
                "current_period": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerLimitsFrequencyLimitTimeBasedCurrentPeriod"
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRuleTriggerLimitsFrequencyLimitTimeBasedTriggers": {
        "type": "object",
        "description": "Maximum number of triggers allowed within the period.",
        "properties": {
          "max": {
            "type": "integer",
            "minimum": 1,
            "description": "Maximum number of triggers per period."
          }
        },
        "required": [
          "max"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleEarningLimitsGlobalTimeBasedPeriod": {
        "type": "object",
        "description": "Time-based earning limit period. Currently only `CURRENT_PERIOD` is supported; when selected, `current_period` is required.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "CURRENT_PERIOD"
            ],
            "description": "Period type."
          },
          "current_period": {
            "description": "Current calendar period configuration. Can be `null`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEarningLimitsGlobalTimeBasedCurrentPeriod"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "type"
            ]
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "CURRENT_PERIOD"
                }
              }
            },
            "then": {
              "required": [
                "current_period"
              ],
              "properties": {
                "current_period": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEarningLimitsGlobalTimeBasedCurrentPeriod"
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRuleEarningLimitsGlobalTimeBasedPoints": {
        "type": "object",
        "description": "Maximum points that can be earned in the period.",
        "properties": {
          "max": {
            "type": "integer",
            "minimum": 1,
            "description": "Maximum points in the period."
          }
        },
        "required": [
          "max"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityRewardPurchaseLimitsCooldownFixedCooldownPeriod": {
        "type": "object",
        "description": "Fixed cooldown period after a reward purchase.",
        "properties": {
          "value": {
            "type": "integer",
            "description": "Length of the cooldown period.",
            "minimum": 1
          },
          "unit": {
            "type": "string",
            "enum": [
              "HOUR",
              "DAY",
              "WEEK",
              "MONTH",
              "YEAR"
            ],
            "description": "Unit of the cooldown period."
          }
        },
        "required": [
          "value",
          "unit"
        ]
      },
      "LoyaltyV2ActivityRewardPurchaseLimitsFrequencyLimitTriggers": {
        "type": "object",
        "description": "Maximum number of purchases allowed in the period.",
        "properties": {
          "max": {
            "type": "integer",
            "minimum": 1,
            "description": "Maximum number of purchases in the configured period."
          }
        },
        "required": [
          "max"
        ]
      },
      "LoyaltyV2ActivityBenefitPointsProportionalApplicableTo": {
        "type": "object",
        "description": "A single applicability rule. Exactly one of `product`, `sku`, or `products_collection`\nis required, matching the `type`; the other two must be omitted or `null`.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "product",
              "sku",
              "products_collection"
            ],
            "description": "Type of the referenced object."
          },
          "product": {
            "description": "Product reference. Required when `type` is `product`, must be `null` otherwise.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalApplicableToProduct"
              },
              {
                "type": "null"
              }
            ]
          },
          "sku": {
            "description": "SKU reference. Required when `type` is `sku`, must be `null` otherwise.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalApplicableToSku"
              },
              {
                "type": "null"
              }
            ]
          },
          "products_collection": {
            "description": "Products collection reference. Required when `type` is `products_collection`, must be `null` otherwise.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalApplicableToProductsCollection"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "type"
        ],
        "additionalProperties": false,
        "allOf": [
          {
            "if": {
              "properties": {
                "type": {
                  "const": "product"
                }
              }
            },
            "then": {
              "required": [
                "product"
              ],
              "properties": {
                "product": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalApplicableToProduct"
                },
                "sku": {
                  "type": "null"
                },
                "products_collection": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "sku"
                }
              }
            },
            "then": {
              "required": [
                "sku"
              ],
              "properties": {
                "sku": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalApplicableToSku"
                },
                "product": {
                  "type": "null"
                },
                "products_collection": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "products_collection"
                }
              }
            },
            "then": {
              "required": [
                "products_collection"
              ],
              "properties": {
                "products_collection": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityBenefitPointsProportionalApplicableToProductsCollection"
                },
                "product": {
                  "type": "null"
                },
                "sku": {
                  "type": "null"
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRuleConditionObject": {
        "type": "object",
        "description": "Object reference used as a condition value (e.g. product, SKU or segment reference).",
        "properties": {
          "id": {
            "type": "string",
            "description": "Referenced object ID."
          },
          "object": {
            "type": "string",
            "description": "Referenced object type name."
          },
          "source_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Source ID of the referenced object. Can be `null`."
          },
          "type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Additional object subtype. Can be `null`."
          }
        },
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleEffectPointsExpirationRollingExpiration": {
        "type": "object",
        "description": "Rolling expiration – points expire a fixed period after earning.",
        "properties": {
          "period": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpirationRollingExpirationPeriod"
          },
          "rounding": {
            "description": "Optional rounding of the calculated expiration date. Can be `null`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpirationRollingExpirationRounding"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "period"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleEffectPointsExpirationCalendarExpiration": {
        "type": "object",
        "description": "Calendar expiration – points expire on fixed calendar dates (1 to 20 dates).",
        "properties": {
          "expiration_dates": {
            "type": "array",
            "minItems": 1,
            "maxItems": 20,
            "description": "Fixed expiration dates (day + month).",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpirationCalendarExpirationDate"
            }
          }
        },
        "required": [
          "expiration_dates"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleEffectPointsExpirationSlidingExpiration": {
        "type": "object",
        "description": "Sliding expiration – points expire after a period of member inactivity. At least one of `earning_activity`, `spending_activity` or `custom_activity` must be `true`. When `custom_activity` is `true`, `custom_activity_types` is required (1-10 unique items).",
        "properties": {
          "earning_activity": {
            "type": "boolean",
            "description": "Whether earning activity resets the expiration window."
          },
          "spending_activity": {
            "type": "boolean",
            "description": "Whether spending activity resets the expiration window."
          },
          "custom_activity": {
            "type": "boolean",
            "description": "Whether the listed custom activity types reset the expiration window."
          },
          "custom_activity_types": {
            "description": "Custom activity type names. Required (1-10 unique items) when `custom_activity` is true. Can be `null`.",
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "period": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpirationSlidingExpirationPeriod"
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "period"
            ]
          },
          {
            "if": {
              "properties": {
                "custom_activity": {
                  "const": true
                }
              }
            },
            "then": {
              "required": [
                "custom_activity_types"
              ],
              "properties": {
                "custom_activity_types": {
                  "type": "array",
                  "minItems": 1,
                  "maxItems": 10,
                  "uniqueItems": true,
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRulePointsProportionalEvery": {
        "type": "object",
        "description": "\"Every X gives Y points\" formula based on an amount.",
        "properties": {
          "every": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991,
            "description": "The divisor – every this amount (e.g. in cents) awards `value` points."
          },
          "value": {
            "type": "number",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "Points awarded per `every` unit."
          }
        },
        "required": [
          "every",
          "value"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRulePointsProportionalMetadata": {
        "type": "object",
        "description": "\"Every X gives Y points\" formula based on a numeric metadata property.",
        "properties": {
          "every": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991,
            "description": "The divisor – every this metadata value awards `value` points."
          },
          "value": {
            "type": "number",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "Points awarded per `every` unit."
          },
          "property": {
            "type": "string",
            "minLength": 1,
            "description": "Metadata property name holding the numeric value."
          }
        },
        "required": [
          "every",
          "value",
          "property"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRulePointsProportionalOrderItemsCalculation": {
        "type": "object",
        "description": "Order items based calculation – \"every X gives Y points\" applied to items matching the `applicable_to` criteria.",
        "properties": {
          "every": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991,
            "description": "The divisor – every this amount/quantity awards `value` points."
          },
          "value": {
            "type": "number",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "Points awarded per `every` unit."
          },
          "applicable_to": {
            "type": "array",
            "minItems": 1,
            "description": "Product/SKU/collection criteria selecting matching order items.",
            "items": {
              "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalApplicableTo"
            }
          }
        },
        "required": [
          "every",
          "value",
          "applicable_to"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleTriggerLimitsFrequencyLimitTimeBasedCurrentPeriod": {
        "type": "object",
        "description": "Current calendar period unit for the frequency limit.",
        "properties": {
          "unit": {
            "type": "string",
            "enum": [
              "DAY",
              "WEEK",
              "MONTH",
              "QUARTER",
              "YEAR"
            ],
            "description": "Calendar period unit."
          }
        },
        "required": [
          "unit"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleEarningLimitsGlobalTimeBasedCurrentPeriod": {
        "type": "object",
        "description": "Current calendar period unit for the earning limit.",
        "properties": {
          "unit": {
            "type": "string",
            "enum": [
              "DAY",
              "WEEK",
              "MONTH",
              "QUARTER",
              "YEAR"
            ],
            "description": "Calendar period unit."
          }
        },
        "required": [
          "unit"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityBenefitPointsProportionalApplicableToProduct": {
        "type": "object",
        "title": "Benefit Point Proportional Applicable To Product",
        "description": "Product reference.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^prod_[a-f0-9]+",
            "description": "Product ID, prefixed with `prod_`."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityBenefitPointsProportionalApplicableToSku": {
        "type": "object",
        "title": "Benefit Point Proportional Applicable To SKU",
        "description": "SKU reference.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^sku_[a-f0-9]+",
            "description": "SKU ID, prefixed with `sku_`."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityBenefitPointsProportionalApplicableToProductsCollection": {
        "type": "object",
        "title": "Benefit Point Proportional Products Collection",
        "description": "Products collection reference.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^pc_[a-zA-Z0-9]+",
            "description": "Products collection ID, prefixed with `pc_`."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRuleEffectPointsExpirationRollingExpirationPeriod": {
        "type": "object",
        "description": "Rolling expiration period. The maximum `value` depends on `unit`: `DAY` - 90, `MONTH` - 12, `YEAR` - 5.",
        "properties": {
          "unit": {
            "type": "string",
            "enum": [
              "DAY",
              "MONTH",
              "YEAR"
            ],
            "description": "Period unit."
          },
          "value": {
            "type": "integer",
            "minimum": 1,
            "description": "Period length. Maximum depends on `unit`: 90 for DAY, 12 for MONTH, 5 for YEAR."
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "unit",
              "value"
            ]
          },
          {
            "if": {
              "properties": {
                "unit": {
                  "const": "DAY"
                }
              }
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 90
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "unit": {
                  "const": "MONTH"
                }
              }
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 12
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "unit": {
                  "const": "YEAR"
                }
              }
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 5
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRuleEffectPointsExpirationRollingExpirationRounding": {
        "type": "object",
        "description": "Rounding of the rolling expiration date. `value` (the month number, 1-12) is required for `END_OF_PARTICULAR_MONTH` and must be null for all other rounding types.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "END_OF_MONTH",
              "END_OF_QUARTER",
              "END_OF_HALF_YEAR",
              "END_OF_YEAR",
              "END_OF_PARTICULAR_MONTH"
            ],
            "description": "Rounding type."
          },
          "value": {
            "description": "Month number (1-12), only for `END_OF_PARTICULAR_MONTH`. `null`able otherwise.",
            "oneOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 12
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "type"
            ]
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "END_OF_PARTICULAR_MONTH"
                }
              }
            },
            "then": {
              "required": [
                "value",
                "type"
              ],
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 12
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "not": {
                    "const": "END_OF_PARTICULAR_MONTH"
                  }
                }
              }
            },
            "then": {
              "required": [
                "type"
              ],
              "properties": {
                "value": {
                  "type": "null"
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRuleEffectPointsExpirationCalendarExpirationDate": {
        "type": "object",
        "description": "A calendar expiration date. The maximum `day` depends on `month`: 29 for February (month 2), 30 for April/June/September/November (4, 6, 9, 11), 31 for the remaining months.",
        "properties": {
          "day": {
            "type": "integer",
            "minimum": 1,
            "maximum": 31,
            "description": "Day of month (1-31; validated against the month length)."
          },
          "month": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12,
            "description": "Month number (1-12)."
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "day",
              "month"
            ]
          },
          {
            "if": {
              "properties": {
                "month": {
                  "const": 2
                }
              }
            },
            "then": {
              "properties": {
                "day": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 29
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "month": {
                  "enum": [
                    4,
                    6,
                    9,
                    11
                  ]
                }
              }
            },
            "then": {
              "properties": {
                "day": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 30
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "month": {
                  "enum": [
                    1,
                    3,
                    5,
                    7,
                    8,
                    10,
                    12
                  ]
                }
              }
            },
            "then": {
              "properties": {
                "day": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 31
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRuleEffectPointsExpirationSlidingExpirationPeriod": {
        "type": "object",
        "description": "Sliding expiration inactivity period. The maximum `value` depends on `unit`: `DAY` - 90, `MONTH` - 12, `YEAR` - 1.",
        "properties": {
          "value": {
            "type": "integer",
            "minimum": 1,
            "description": "Period length. Maximum depends on `unit`: 90 for DAY, 12 for MONTH, 1 for YEAR."
          },
          "unit": {
            "type": "string",
            "enum": [
              "DAY",
              "MONTH",
              "YEAR"
            ],
            "description": "Period unit."
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "value",
              "unit"
            ]
          },
          {
            "if": {
              "properties": {
                "unit": {
                  "const": "DAY"
                }
              }
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 90
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "unit": {
                  "const": "MONTH"
                }
              }
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 12
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "unit": {
                  "const": "YEAR"
                }
              }
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRulePointsProportionalApplicableTo": {
        "type": "object",
        "description": "Criterion selecting order items the calculation applies to. Depending on `type`, exactly one of `product`, `sku` or `products_collection` is required and the others must be null/absent.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "product",
              "sku",
              "products_collection"
            ],
            "description": "Type of the referenced object."
          },
          "product": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalApplicableToProduct"
          },
          "sku": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalApplicableToSku"
          },
          "products_collection": {
            "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalApplicableToProductsCollection"
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "required": [
              "type"
            ]
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "product"
                }
              }
            },
            "then": {
              "required": [
                "product"
              ],
              "properties": {
                "product": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalApplicableToProduct"
                },
                "sku": {
                  "type": "null"
                },
                "products_collection": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "sku"
                }
              }
            },
            "then": {
              "required": [
                "sku"
              ],
              "properties": {
                "sku": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalApplicableToSku"
                },
                "product": {
                  "type": "null"
                },
                "products_collection": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "products_collection"
                }
              }
            },
            "then": {
              "required": [
                "products_collection"
              ],
              "properties": {
                "products_collection": {
                  "$ref": "#/components/schemas/LoyaltyV2ActivityEarningRulePointsProportionalApplicableToProductsCollection"
                },
                "product": {
                  "type": "null"
                },
                "sku": {
                  "type": "null"
                }
              }
            }
          }
        ]
      },
      "LoyaltyV2ActivityEarningRulePointsProportionalApplicableToProduct": {
        "type": "object",
        "description": "Product reference.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^prod_[a-f0-9]+",
            "description": "Product ID (`prod_...`)."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRulePointsProportionalApplicableToSku": {
        "type": "object",
        "description": "SKU reference.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^sku_[a-f0-9]+",
            "description": "SKU ID (`sku_...`)."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "LoyaltyV2ActivityEarningRulePointsProportionalApplicableToProductsCollection": {
        "type": "object",
        "description": "Products collection reference.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^pc_[a-zA-Z0-9]+",
            "description": "Products collection ID (`pc_...`)."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    }
  },
  "webhooks": {
    "vl.member.created": {
      "post": {
        "operationId": "loyalty-activity-member-created",
        "summary": "Member created",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyMemberCreatedData"
              },
              "examples": {
                "vl.member.created": {
                  "value": {
                    "member": {
                      "id": "lmbr_91f6b2e84a37",
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "program_id": "lprg_3e8a1c74d952",
                      "status": "ACTIVE",
                      "metadata": {
                        "signup_channel": "mobile_app"
                      },
                      "created_at": "2026-08-21T09:15:43.091Z",
                      "updated_at": null,
                      "object": "member"
                    },
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {},
                      "created_at": "2025-12-10T11:24:07.635Z",
                      "updated_at": "2025-12-15T08:41:29.182Z",
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.member.updated": {
      "post": {
        "operationId": "loyalty-activity-member-updated",
        "summary": "Member updated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyMemberUpdatedData"
              },
              "examples": {
                "vl.member.updated": {
                  "value": {
                    "member": {
                      "id": "lmbr_91f6b2e84a37",
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "program_id": "lprg_3e8a1c74d952",
                      "status": "ACTIVE",
                      "metadata": {
                        "preferred_store": "Warsaw"
                      },
                      "created_at": "2026-08-21T09:15:43.091Z",
                      "updated_at": "2026-09-07T08:20:14.317Z",
                      "object": "member"
                    },
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {},
                      "created_at": "2025-12-10T11:24:07.635Z",
                      "updated_at": "2025-12-15T08:41:29.182Z",
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.member.deleted": {
      "post": {
        "operationId": "loyalty-activity-member-deleted",
        "summary": "Member deleted",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyMemberDeletedData"
              },
              "examples": {
                "vl.member.deleted": {
                  "value": {
                    "member": {
                      "id": "lmbr_91f6b2e84a37",
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "program_id": "lprg_3e8a1c74d952",
                      "status": "DELETED",
                      "metadata": {
                        "preferred_store": "Warsaw"
                      },
                      "created_at": "2026-08-21T09:15:43.091Z",
                      "updated_at": "2026-09-07T08:25:37.602Z",
                      "object": "member"
                    },
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {},
                      "created_at": "2025-12-10T11:24:07.635Z",
                      "updated_at": "2025-12-15T08:41:29.182Z",
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.member.activated": {
      "post": {
        "operationId": "loyalty-activity-member-activated",
        "summary": "Member activated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyMemberActivatedData"
              },
              "examples": {
                "vl.member.activated": {
                  "value": {
                    "member": {
                      "id": "lmbr_91f6b2e84a37",
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "program_id": "lprg_3e8a1c74d952",
                      "status": "ACTIVE",
                      "metadata": {
                        "preferred_store": "Warsaw"
                      },
                      "created_at": "2026-08-21T09:15:43.091Z",
                      "updated_at": "2026-09-07T08:30:19.845Z",
                      "object": "member"
                    },
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {},
                      "created_at": "2025-12-10T11:24:07.635Z",
                      "updated_at": "2025-12-15T08:41:29.182Z",
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.member.deactivated": {
      "post": {
        "operationId": "loyalty-activity-member-deactivated",
        "summary": "Member deactivated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyMemberDeactivatedData"
              },
              "examples": {
                "vl.member.deactivated": {
                  "value": {
                    "member": {
                      "id": "lmbr_91f6b2e84a37",
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "program_id": "lprg_3e8a1c74d952",
                      "status": "INACTIVE",
                      "metadata": {
                        "preferred_store": "Warsaw"
                      },
                      "created_at": "2026-08-21T09:15:43.091Z",
                      "updated_at": "2026-09-07T08:35:42.168Z",
                      "object": "member"
                    },
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {},
                      "created_at": "2025-12-10T11:24:07.635Z",
                      "updated_at": "2025-12-15T08:41:29.182Z",
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.member.card.assigned": {
      "post": {
        "operationId": "loyalty-activity-member-card-assigned",
        "summary": "Member card assigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyMemberCardAssignedData"
              },
              "examples": {
                "vl.member.card.assigned": {
                  "value": {
                    "member": {
                      "id": "lmbr_91f6b2e84a37",
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "program_id": "lprg_3e8a1c74d952",
                      "status": "ACTIVE",
                      "metadata": {
                        "signup_channel": "mobile_app"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "member"
                    },
                    "card": {
                      "id": "lcrd_28c4e7b195fa",
                      "program_id": "lprg_3e8a1c74d952",
                      "card_definition_id": "lcdef_6a2d9f41c783",
                      "card_type": "INDIVIDUAL",
                      "code": null,
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "member_id": "lmbr_91f6b2e84a37",
                      "lifetime_bucket": {
                        "points": {
                          "total": 0,
                          "earned": 0,
                          "added": 0,
                          "purchased": 0,
                          "purchased_reversed": 0,
                          "subtracted": 0,
                          "expired": 0,
                          "spent": 0,
                          "refunded": 0,
                          "returned": 0,
                          "locked": 0,
                          "unlocked": 0
                        },
                        "pending_points": {
                          "total": 0,
                          "activated": 0,
                          "canceled": 0
                        }
                      },
                      "balance": {
                        "points": 0,
                        "pending_points": 0
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "card"
                    },
                    "member_card": {
                      "member_role": "OWNER",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "card": {
                        "id": "lcrd_28c4e7b195fa",
                        "card_definition_id": "lcdef_6a2d9f41c783",
                        "card_type": "INDIVIDUAL",
                        "code": null,
                        "lifetime_bucket": {
                          "points": {
                            "total": 0,
                            "earned": 0,
                            "added": 0,
                            "purchased": 0,
                            "purchased_reversed": 0,
                            "subtracted": 0,
                            "expired": 0,
                            "spent": 0,
                            "refunded": 0,
                            "returned": 0,
                            "locked": 0,
                            "unlocked": 0
                          },
                          "pending_points": {
                            "total": 0,
                            "activated": 0,
                            "canceled": 0
                          }
                        },
                        "balance": {
                          "points": 0,
                          "pending_points": 0
                        },
                        "next_expiration": null,
                        "next_activation": null,
                        "object": "card"
                      },
                      "object": "member_card"
                    },
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-01-01T09:00:00.000Z",
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.member.card.unassigned": {
      "post": {
        "operationId": "loyalty-activity-member-card-unassigned",
        "summary": "Member card unassigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyMemberCardUnassignedData"
              },
              "examples": {
                "vl.member.card.unassigned": {
                  "value": {
                    "member": {
                      "id": "lmbr_91f6b2e84a37",
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "program_id": "lprg_3e8a1c74d952",
                      "status": "DELETED",
                      "metadata": {
                        "signup_channel": "mobile_app"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "member"
                    },
                    "card": {
                      "id": "lcrd_28c4e7b195fa",
                      "program_id": "lprg_3e8a1c74d952",
                      "card_definition_id": "lcdef_6a2d9f41c783",
                      "card_type": "INDIVIDUAL",
                      "code": "COFFEE-001",
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "member_id": "lmbr_91f6b2e84a37",
                      "lifetime_bucket": {
                        "points": {
                          "total": 250,
                          "earned": 250,
                          "added": 0,
                          "purchased": 0,
                          "purchased_reversed": 0,
                          "subtracted": 0,
                          "expired": 0,
                          "spent": 0,
                          "refunded": 0,
                          "returned": 0,
                          "locked": 0,
                          "unlocked": 0
                        },
                        "pending_points": {
                          "total": 0,
                          "activated": 0,
                          "canceled": 0
                        }
                      },
                      "balance": {
                        "points": 250,
                        "pending_points": 0
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "card"
                    },
                    "member_card": {
                      "member_role": "OWNER",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "card": {
                        "id": "lcrd_28c4e7b195fa",
                        "card_definition_id": "lcdef_6a2d9f41c783",
                        "card_type": "INDIVIDUAL",
                        "code": "COFFEE-001",
                        "lifetime_bucket": {
                          "points": {
                            "total": 250,
                            "earned": 250,
                            "added": 0,
                            "purchased": 0,
                            "purchased_reversed": 0,
                            "subtracted": 0,
                            "expired": 0,
                            "spent": 0,
                            "refunded": 0,
                            "returned": 0,
                            "locked": 0,
                            "unlocked": 0
                          },
                          "pending_points": {
                            "total": 0,
                            "activated": 0,
                            "canceled": 0
                          }
                        },
                        "balance": {
                          "points": 250,
                          "pending_points": 0
                        },
                        "next_expiration": null,
                        "next_activation": null,
                        "object": "card"
                      },
                      "object": "member_card"
                    },
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.program.created": {
      "post": {
        "operationId": "loyalty-activity-program-created",
        "summary": "Program created",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityProgramCreatedData"
              },
              "examples": {
                "vl.program.created": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "DRAFT",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": null,
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.program.updated": {
      "post": {
        "operationId": "loyalty-activity-program-updated",
        "summary": "Program updated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityProgramUpdatedData"
              },
              "examples": {
                "vl.program.updated": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.program.deleted": {
      "post": {
        "operationId": "loyalty-activity-program-deleted",
        "summary": "Program deleted",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityProgramDeletedData"
              },
              "examples": {
                "vl.program.deleted": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "DELETED",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.program.activated": {
      "post": {
        "operationId": "loyalty-activity-program-activated",
        "summary": "Program activated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityProgramActivatedData"
              },
              "examples": {
                "vl.program.activated": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.program.deactivated": {
      "post": {
        "operationId": "loyalty-activity-program-deactivated",
        "summary": "Program deactivated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityProgramDeactivatedData"
              },
              "examples": {
                "vl.program.deactivated": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "INACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.program.card_definition.assigned": {
      "post": {
        "operationId": "loyalty-activity-program-card-definition-assigned",
        "summary": "Program card definition assigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityProgramCardDefinitionAssignedData"
              },
              "examples": {
                "vl.program.card_definition.assigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "card_definition": {
                      "id": "lcdef_6a2d9f41c783",
                      "name": "Coffee Club Card",
                      "type": "INDIVIDUAL",
                      "status": "ACTIVE",
                      "code_config": {
                        "pattern": "########",
                        "length": 8,
                        "charset": "ALPHANUMERIC",
                        "prefix": "",
                        "postfix": ""
                      },
                      "points_expiration": {
                        "type": "NO_EXPIRATION"
                      },
                      "pending_points": {
                        "type": "IMMEDIATE"
                      },
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "spending_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "refunds": {
                        "spent_points": {
                          "type": "NONE",
                          "methods": []
                        },
                        "earned_points": {
                          "type": "NONE",
                          "methods": []
                        }
                      },
                      "balance_settings": {
                        "allow_negative": false
                      },
                      "pay_with_points": {
                        "type": "NO_PAYMENTS"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "card_definition"
                    },
                    "program_card_definition": {
                      "card_type": "INDIVIDUAL",
                      "card_definition_id": "lcdef_6a2d9f41c783",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "object": "program_card_definition"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.program.card_definition.unassigned": {
      "post": {
        "operationId": "loyalty-activity-program-card-definition-unassigned",
        "summary": "Program card definition unassigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityProgramCardDefinitionUnassignedData"
              },
              "examples": {
                "vl.program.card_definition.unassigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "card_definition": {
                      "id": "lcdef_6a2d9f41c783",
                      "name": "Coffee Club Card",
                      "type": "INDIVIDUAL",
                      "status": "ACTIVE",
                      "code_config": {
                        "pattern": "########",
                        "length": 8,
                        "charset": "ALPHANUMERIC",
                        "prefix": "",
                        "postfix": ""
                      },
                      "points_expiration": {
                        "type": "NO_EXPIRATION"
                      },
                      "pending_points": {
                        "type": "IMMEDIATE"
                      },
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "spending_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "refunds": {
                        "spent_points": {
                          "type": "NONE",
                          "methods": []
                        },
                        "earned_points": {
                          "type": "NONE",
                          "methods": []
                        }
                      },
                      "balance_settings": {
                        "allow_negative": false
                      },
                      "pay_with_points": {
                        "type": "NO_PAYMENTS"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "card_definition"
                    },
                    "program_card_definition": {
                      "card_type": "INDIVIDUAL",
                      "card_definition_id": "lcdef_6a2d9f41c783",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "object": "program_card_definition"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.program.earning_rule.assigned": {
      "post": {
        "operationId": "loyalty-activity-program-earning-rule-assigned",
        "summary": "Program earning rule assigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityProgramEarningRuleAssignedData"
              },
              "examples": {
                "vl.program.earning_rule.assigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "earning_rule": {
                      "id": "lern_6a2d9f41c783",
                      "name": "Order paid",
                      "status": "ACTIVE",
                      "earnings": [
                        {
                          "id": "lernei_8d2f5a39b461",
                          "name": "Earn 100 points",
                          "effects": [
                            {
                              "type": "POINTS",
                              "points": {
                                "value": 100,
                                "card_definition_id": "lcdef_6a2d9f41c783"
                              }
                            }
                          ]
                        }
                      ],
                      "trigger": {
                        "event": "customer.order.paid"
                      },
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "start_date": null,
                      "end_date": null,
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "metadata": {
                        "channel": "online"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "earning_rule"
                    },
                    "program_earning_rule": {
                      "earning_rule_id": "lern_6a2d9f41c783",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "object": "program_earning_rule"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.program.earning_rule.unassigned": {
      "post": {
        "operationId": "loyalty-activity-program-earning-rule-unassigned",
        "summary": "Program earning rule unassigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityProgramEarningRuleUnassignedData"
              },
              "examples": {
                "vl.program.earning_rule.unassigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "earning_rule": {
                      "id": "lern_6a2d9f41c783",
                      "name": "Order paid",
                      "status": "ACTIVE",
                      "earnings": [
                        {
                          "id": "lernei_8d2f5a39b461",
                          "name": "Earn 100 points",
                          "effects": [
                            {
                              "type": "POINTS",
                              "points": {
                                "value": 100,
                                "card_definition_id": "lcdef_6a2d9f41c783"
                              }
                            }
                          ]
                        }
                      ],
                      "trigger": {
                        "event": "customer.order.paid"
                      },
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "start_date": null,
                      "end_date": null,
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "metadata": {
                        "channel": "online"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "earning_rule"
                    },
                    "program_earning_rule": {
                      "earning_rule_id": "lern_6a2d9f41c783",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "object": "program_earning_rule"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.program.reward.assigned": {
      "post": {
        "operationId": "loyalty-activity-program-reward-assigned",
        "summary": "Program reward assigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityProgramRewardAssignedData"
              },
              "examples": {
                "vl.program.reward.assigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "reward": {
                      "id": "lrew_3e8a1c74d952",
                      "name": "Free coffee",
                      "type": "MATERIAL",
                      "status": "ACTIVE",
                      "start_date": null,
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "material": {
                        "type": "PRODUCT",
                        "product": {
                          "id": "prod_7d2f5a39b461"
                        }
                      },
                      "refunds": {
                        "type": "REFUNDABLE"
                      },
                      "costs": [
                        {
                          "id": "lrcst_6a2d9f41c783",
                          "spending": [
                            {
                              "id": "lrspn_8d2f5a39b461",
                              "name": "Standard cost",
                              "points": 200,
                              "card_definition_id": "lcdef_6a2d9f41c783"
                            }
                          ],
                          "name": "Standard"
                        }
                      ],
                      "metadata": {
                        "category": "coffee"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "reward",
                      "purchase_limits": {
                        "cooldown": {
                          "type": "NO_COOLDOWN"
                        },
                        "frequency": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      }
                    },
                    "program_reward": {
                      "reward_id": "lrew_3e8a1c74d952",
                      "stock": {
                        "type": "UNLIMITED"
                      },
                      "redeemed": 0,
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "program_reward"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.program.reward.unassigned": {
      "post": {
        "operationId": "loyalty-activity-program-reward-unassigned",
        "summary": "Program reward unassigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityProgramRewardUnassignedData"
              },
              "examples": {
                "vl.program.reward.unassigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "reward": {
                      "id": "lrew_3e8a1c74d952",
                      "name": "Free coffee",
                      "type": "MATERIAL",
                      "status": "ACTIVE",
                      "start_date": null,
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "material": {
                        "type": "PRODUCT",
                        "product": {
                          "id": "prod_7d2f5a39b461"
                        }
                      },
                      "refunds": {
                        "type": "REFUNDABLE"
                      },
                      "costs": [
                        {
                          "id": "lrcst_6a2d9f41c783",
                          "spending": [
                            {
                              "id": "lrspn_8d2f5a39b461",
                              "name": "Standard cost",
                              "points": 200,
                              "card_definition_id": "lcdef_6a2d9f41c783"
                            }
                          ],
                          "name": "Standard"
                        }
                      ],
                      "metadata": {
                        "category": "coffee"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "reward",
                      "purchase_limits": {
                        "cooldown": {
                          "type": "NO_COOLDOWN"
                        },
                        "frequency": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      }
                    },
                    "program_reward": {
                      "reward_id": "lrew_3e8a1c74d952",
                      "stock": {
                        "type": "UNLIMITED"
                      },
                      "redeemed": 0,
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "program_reward"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.program.reward.updated": {
      "post": {
        "operationId": "loyalty-activity-program-reward-updated",
        "summary": "Program reward updated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityProgramRewardUpdatedData"
              },
              "examples": {
                "vl.program.reward.updated": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "reward": {
                      "id": "lrew_3e8a1c74d952",
                      "name": "Free coffee",
                      "type": "MATERIAL",
                      "status": "ACTIVE",
                      "start_date": null,
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "material": {
                        "type": "PRODUCT",
                        "product": {
                          "id": "prod_7d2f5a39b461"
                        }
                      },
                      "refunds": {
                        "type": "REFUNDABLE"
                      },
                      "costs": [
                        {
                          "id": "lrcst_6a2d9f41c783",
                          "spending": [
                            {
                              "id": "lrspn_8d2f5a39b461",
                              "name": "Standard cost",
                              "points": 200,
                              "card_definition_id": "lcdef_6a2d9f41c783"
                            }
                          ],
                          "name": "Standard"
                        }
                      ],
                      "metadata": {
                        "category": "coffee"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "reward",
                      "purchase_limits": {
                        "cooldown": {
                          "type": "NO_COOLDOWN"
                        },
                        "frequency": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      }
                    },
                    "program_reward": {
                      "reward_id": "lrew_3e8a1c74d952",
                      "stock": {
                        "type": "UNLIMITED"
                      },
                      "redeemed": 0,
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "program_reward"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.program.tier_structure.assigned": {
      "post": {
        "operationId": "loyalty-activity-program-tier-structure-assigned",
        "summary": "Program tier structure assigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityProgramTierStructureAssignedData"
              },
              "examples": {
                "vl.program.tier_structure.assigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "tier_structure": {
                      "id": "lts_3e8a1c74d952",
                      "name": "Coffee Club tiers",
                      "type": "POINT_BALANCE",
                      "point_balance": {
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "expiration": {
                        "type": "NO_RETENTION"
                      },
                      "downgrade": {
                        "type": "SINGLE_LEVEL"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "status": "ACTIVE",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "tier_structure"
                    },
                    "program_tier_structure": {
                      "tier_structure_id": "lts_3e8a1c74d952",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "object": "program_tier_structure"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.program.tier_structure.unassigned": {
      "post": {
        "operationId": "loyalty-activity-program-tier-structure-unassigned",
        "summary": "Program tier structure unassigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityProgramTierStructureUnassignedData"
              },
              "examples": {
                "vl.program.tier_structure.unassigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "tier_structure": {
                      "id": "lts_3e8a1c74d952",
                      "name": "Coffee Club tiers",
                      "type": "POINT_BALANCE",
                      "point_balance": {
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "expiration": {
                        "type": "NO_RETENTION"
                      },
                      "downgrade": {
                        "type": "SINGLE_LEVEL"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "status": "ACTIVE",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "tier_structure"
                    },
                    "program_tier_structure": {
                      "tier_structure_id": "lts_3e8a1c74d952",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "object": "program_tier_structure"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.card_definition.created": {
      "post": {
        "operationId": "loyalty-activity-card-definition-created",
        "summary": "Card definition created",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityCardDefinitionCreatedData"
              },
              "examples": {
                "vl.card_definition.created": {
                  "value": {
                    "card_definition": {
                      "id": "lcdef_6a2d9f41c783",
                      "name": "Coffee Club Card",
                      "type": "INDIVIDUAL",
                      "status": "DRAFT",
                      "code_config": {
                        "pattern": "########",
                        "length": 8,
                        "charset": "ALPHANUMERIC",
                        "prefix": "",
                        "postfix": ""
                      },
                      "points_expiration": {
                        "type": "NO_EXPIRATION"
                      },
                      "pending_points": {
                        "type": "IMMEDIATE"
                      },
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "spending_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "refunds": {
                        "spent_points": {
                          "type": "NONE",
                          "methods": []
                        },
                        "earned_points": {
                          "type": "NONE",
                          "methods": []
                        }
                      },
                      "balance_settings": {
                        "allow_negative": false
                      },
                      "pay_with_points": {
                        "type": "NO_PAYMENTS"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "card_definition"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.card_definition.updated": {
      "post": {
        "operationId": "loyalty-activity-card-definition-updated",
        "summary": "Card definition updated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityCardDefinitionUpdatedData"
              },
              "examples": {
                "vl.card_definition.updated": {
                  "value": {
                    "card_definition": {
                      "id": "lcdef_6a2d9f41c783",
                      "name": "Coffee Club Card",
                      "type": "INDIVIDUAL",
                      "status": "ACTIVE",
                      "code_config": {
                        "pattern": "########",
                        "length": 8,
                        "charset": "ALPHANUMERIC",
                        "prefix": "",
                        "postfix": ""
                      },
                      "points_expiration": {
                        "type": "NO_EXPIRATION"
                      },
                      "pending_points": {
                        "type": "IMMEDIATE"
                      },
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "spending_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "refunds": {
                        "spent_points": {
                          "type": "NONE",
                          "methods": []
                        },
                        "earned_points": {
                          "type": "NONE",
                          "methods": []
                        }
                      },
                      "balance_settings": {
                        "allow_negative": false
                      },
                      "pay_with_points": {
                        "type": "NO_PAYMENTS"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "card_definition"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.card_definition.deleted": {
      "post": {
        "operationId": "loyalty-activity-card-definition-deleted",
        "summary": "Card definition deleted",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityCardDefinitionDeletedData"
              },
              "examples": {
                "vl.card_definition.deleted": {
                  "value": {
                    "card_definition": {
                      "id": "lcdef_6a2d9f41c783",
                      "name": "Coffee Club Card",
                      "type": "INDIVIDUAL",
                      "status": "DELETED",
                      "code_config": {
                        "pattern": "########",
                        "length": 8,
                        "charset": "ALPHANUMERIC",
                        "prefix": "",
                        "postfix": ""
                      },
                      "points_expiration": {
                        "type": "NO_EXPIRATION"
                      },
                      "pending_points": {
                        "type": "IMMEDIATE"
                      },
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "spending_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "refunds": {
                        "spent_points": {
                          "type": "NONE",
                          "methods": []
                        },
                        "earned_points": {
                          "type": "NONE",
                          "methods": []
                        }
                      },
                      "balance_settings": {
                        "allow_negative": false
                      },
                      "pay_with_points": {
                        "type": "NO_PAYMENTS"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "card_definition"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.card_definition.activated": {
      "post": {
        "operationId": "loyalty-activity-card-definition-activated",
        "summary": "Card definition activated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityCardDefinitionActivatedData"
              },
              "examples": {
                "vl.card_definition.activated": {
                  "value": {
                    "card_definition": {
                      "id": "lcdef_6a2d9f41c783",
                      "name": "Coffee Club Card",
                      "type": "INDIVIDUAL",
                      "status": "ACTIVE",
                      "code_config": {
                        "pattern": "########",
                        "length": 8,
                        "charset": "ALPHANUMERIC",
                        "prefix": "",
                        "postfix": ""
                      },
                      "points_expiration": {
                        "type": "NO_EXPIRATION"
                      },
                      "pending_points": {
                        "type": "IMMEDIATE"
                      },
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "spending_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "refunds": {
                        "spent_points": {
                          "type": "NONE",
                          "methods": []
                        },
                        "earned_points": {
                          "type": "NONE",
                          "methods": []
                        }
                      },
                      "balance_settings": {
                        "allow_negative": false
                      },
                      "pay_with_points": {
                        "type": "NO_PAYMENTS"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "card_definition"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.card_definition.drafted": {
      "post": {
        "operationId": "loyalty-activity-card-definition-drafted",
        "summary": "Card definition drafted",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityCardDefinitionDraftedData"
              },
              "examples": {
                "vl.card_definition.drafted": {
                  "value": {
                    "card_definition": {
                      "id": "lcdef_6a2d9f41c783",
                      "name": "Coffee Club Card",
                      "type": "INDIVIDUAL",
                      "status": "DRAFT",
                      "code_config": {
                        "pattern": "########",
                        "length": 8,
                        "charset": "ALPHANUMERIC",
                        "prefix": "",
                        "postfix": ""
                      },
                      "points_expiration": {
                        "type": "NO_EXPIRATION"
                      },
                      "pending_points": {
                        "type": "IMMEDIATE"
                      },
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "spending_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "refunds": {
                        "spent_points": {
                          "type": "NONE",
                          "methods": []
                        },
                        "earned_points": {
                          "type": "NONE",
                          "methods": []
                        }
                      },
                      "balance_settings": {
                        "allow_negative": false
                      },
                      "pay_with_points": {
                        "type": "NO_PAYMENTS"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "card_definition"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.card_definition.assigned": {
      "post": {
        "operationId": "loyalty-activity-card-definition-assigned",
        "summary": "Card definition assigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityCardDefinitionAssignedData"
              },
              "examples": {
                "vl.card_definition.assigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "card_definition": {
                      "id": "lcdef_6a2d9f41c783",
                      "name": "Coffee Club Card",
                      "type": "INDIVIDUAL",
                      "status": "ACTIVE",
                      "code_config": {
                        "pattern": "########",
                        "length": 8,
                        "charset": "ALPHANUMERIC",
                        "prefix": "",
                        "postfix": ""
                      },
                      "points_expiration": {
                        "type": "NO_EXPIRATION"
                      },
                      "pending_points": {
                        "type": "IMMEDIATE"
                      },
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "spending_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "refunds": {
                        "spent_points": {
                          "type": "NONE",
                          "methods": []
                        },
                        "earned_points": {
                          "type": "NONE",
                          "methods": []
                        }
                      },
                      "balance_settings": {
                        "allow_negative": false
                      },
                      "pay_with_points": {
                        "type": "NO_PAYMENTS"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "card_definition"
                    },
                    "program_card_definition": {
                      "card_type": "INDIVIDUAL",
                      "card_definition_id": "lcdef_6a2d9f41c783",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "object": "program_card_definition"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.card_definition.unassigned": {
      "post": {
        "operationId": "loyalty-activity-card-definition-unassigned",
        "summary": "Card definition unassigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityCardDefinitionUnassignedData"
              },
              "examples": {
                "vl.card_definition.unassigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "card_definition": {
                      "id": "lcdef_6a2d9f41c783",
                      "name": "Coffee Club Card",
                      "type": "INDIVIDUAL",
                      "status": "ACTIVE",
                      "code_config": {
                        "pattern": "########",
                        "length": 8,
                        "charset": "ALPHANUMERIC",
                        "prefix": "",
                        "postfix": ""
                      },
                      "points_expiration": {
                        "type": "NO_EXPIRATION"
                      },
                      "pending_points": {
                        "type": "IMMEDIATE"
                      },
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "spending_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        },
                        "transactions": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "refunds": {
                        "spent_points": {
                          "type": "NONE",
                          "methods": []
                        },
                        "earned_points": {
                          "type": "NONE",
                          "methods": []
                        }
                      },
                      "balance_settings": {
                        "allow_negative": false
                      },
                      "pay_with_points": {
                        "type": "NO_PAYMENTS"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "card_definition"
                    },
                    "program_card_definition": {
                      "card_type": "INDIVIDUAL",
                      "card_definition_id": "lcdef_6a2d9f41c783",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "object": "program_card_definition"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.earning_rule.created": {
      "post": {
        "operationId": "loyalty-activity-earning-rule-created",
        "summary": "Earning rule created",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityEarningRuleCreatedData"
              },
              "examples": {
                "vl.earning_rule.created": {
                  "value": {
                    "earning_rule": {
                      "id": "lern_6a2d9f41c783",
                      "name": "Order paid",
                      "status": "DRAFT",
                      "earnings": [
                        {
                          "id": "lernei_8d2f5a39b461",
                          "name": "Earn 100 points",
                          "effects": [
                            {
                              "type": "POINTS",
                              "points": {
                                "value": 100,
                                "card_definition_id": "lcdef_6a2d9f41c783"
                              }
                            }
                          ]
                        }
                      ],
                      "trigger": {
                        "event": "customer.order.paid"
                      },
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "start_date": null,
                      "end_date": null,
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "metadata": {
                        "channel": "online"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "earning_rule"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.earning_rule.updated": {
      "post": {
        "operationId": "loyalty-activity-earning-rule-updated",
        "summary": "Earning rule updated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityEarningRuleUpdatedData"
              },
              "examples": {
                "vl.earning_rule.updated": {
                  "value": {
                    "earning_rule": {
                      "id": "lern_6a2d9f41c783",
                      "name": "Order paid",
                      "status": "ACTIVE",
                      "earnings": [
                        {
                          "id": "lernei_8d2f5a39b461",
                          "name": "Earn 100 points",
                          "effects": [
                            {
                              "type": "POINTS",
                              "points": {
                                "value": 100,
                                "card_definition_id": "lcdef_6a2d9f41c783"
                              }
                            }
                          ]
                        }
                      ],
                      "trigger": {
                        "event": "customer.order.paid"
                      },
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "start_date": null,
                      "end_date": null,
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "metadata": {
                        "channel": "online"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "earning_rule"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.earning_rule.deleted": {
      "post": {
        "operationId": "loyalty-activity-earning-rule-deleted",
        "summary": "Earning rule deleted",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityEarningRuleDeletedData"
              },
              "examples": {
                "vl.earning_rule.deleted": {
                  "value": {
                    "earning_rule": {
                      "id": "lern_6a2d9f41c783",
                      "name": "Order paid",
                      "status": "DELETED",
                      "earnings": [
                        {
                          "id": "lernei_8d2f5a39b461",
                          "name": "Earn 100 points",
                          "effects": [
                            {
                              "type": "POINTS",
                              "points": {
                                "value": 100,
                                "card_definition_id": "lcdef_6a2d9f41c783"
                              }
                            }
                          ]
                        }
                      ],
                      "trigger": {
                        "event": "customer.order.paid"
                      },
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "start_date": null,
                      "end_date": null,
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "metadata": {
                        "channel": "online"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "earning_rule"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.earning_rule.activated": {
      "post": {
        "operationId": "loyalty-activity-earning-rule-activated",
        "summary": "Earning rule activated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityEarningRuleActivatedData"
              },
              "examples": {
                "vl.earning_rule.activated": {
                  "value": {
                    "earning_rule": {
                      "id": "lern_6a2d9f41c783",
                      "name": "Order paid",
                      "status": "ACTIVE",
                      "earnings": [
                        {
                          "id": "lernei_8d2f5a39b461",
                          "name": "Earn 100 points",
                          "effects": [
                            {
                              "type": "POINTS",
                              "points": {
                                "value": 100,
                                "card_definition_id": "lcdef_6a2d9f41c783"
                              }
                            }
                          ]
                        }
                      ],
                      "trigger": {
                        "event": "customer.order.paid"
                      },
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "start_date": null,
                      "end_date": null,
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "metadata": {
                        "channel": "online"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "earning_rule"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.earning_rule.deactivated": {
      "post": {
        "operationId": "loyalty-activity-earning-rule-deactivated",
        "summary": "Earning rule deactivated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityEarningRuleDeactivatedData"
              },
              "examples": {
                "vl.earning_rule.deactivated": {
                  "value": {
                    "earning_rule": {
                      "id": "lern_6a2d9f41c783",
                      "name": "Order paid",
                      "status": "INACTIVE",
                      "earnings": [
                        {
                          "id": "lernei_8d2f5a39b461",
                          "name": "Earn 100 points",
                          "effects": [
                            {
                              "type": "POINTS",
                              "points": {
                                "value": 100,
                                "card_definition_id": "lcdef_6a2d9f41c783"
                              }
                            }
                          ]
                        }
                      ],
                      "trigger": {
                        "event": "customer.order.paid"
                      },
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "start_date": null,
                      "end_date": null,
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "metadata": {
                        "channel": "online"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "earning_rule"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.earning_rule.drafted": {
      "post": {
        "operationId": "loyalty-activity-earning-rule-drafted",
        "summary": "Earning rule drafted",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityEarningRuleDraftedData"
              },
              "examples": {
                "vl.earning_rule.drafted": {
                  "value": {
                    "earning_rule": {
                      "id": "lern_6a2d9f41c783",
                      "name": "Order paid",
                      "status": "DRAFT",
                      "earnings": [
                        {
                          "id": "lernei_8d2f5a39b461",
                          "name": "Earn 100 points",
                          "effects": [
                            {
                              "type": "POINTS",
                              "points": {
                                "value": 100,
                                "card_definition_id": "lcdef_6a2d9f41c783"
                              }
                            }
                          ]
                        }
                      ],
                      "trigger": {
                        "event": "customer.order.paid"
                      },
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "start_date": null,
                      "end_date": null,
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "metadata": {
                        "channel": "online"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "earning_rule"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.earning_rule.assigned": {
      "post": {
        "operationId": "loyalty-activity-earning-rule-assigned",
        "summary": "Earning rule assigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityEarningRuleAssignedData"
              },
              "examples": {
                "vl.earning_rule.assigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "earning_rule": {
                      "id": "lern_6a2d9f41c783",
                      "name": "Order paid",
                      "status": "ACTIVE",
                      "earnings": [
                        {
                          "id": "lernei_8d2f5a39b461",
                          "name": "Earn 100 points",
                          "effects": [
                            {
                              "type": "POINTS",
                              "points": {
                                "value": 100,
                                "card_definition_id": "lcdef_6a2d9f41c783"
                              }
                            }
                          ]
                        }
                      ],
                      "trigger": {
                        "event": "customer.order.paid"
                      },
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "start_date": null,
                      "end_date": null,
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "metadata": {
                        "channel": "online"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "earning_rule"
                    },
                    "program_earning_rule": {
                      "earning_rule_id": "lern_6a2d9f41c783",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "object": "program_earning_rule"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.earning_rule.unassigned": {
      "post": {
        "operationId": "loyalty-activity-earning-rule-unassigned",
        "summary": "Earning rule unassigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityEarningRuleUnassignedData"
              },
              "examples": {
                "vl.earning_rule.unassigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "earning_rule": {
                      "id": "lern_6a2d9f41c783",
                      "name": "Order paid",
                      "status": "ACTIVE",
                      "earnings": [
                        {
                          "id": "lernei_8d2f5a39b461",
                          "name": "Earn 100 points",
                          "effects": [
                            {
                              "type": "POINTS",
                              "points": {
                                "value": 100,
                                "card_definition_id": "lcdef_6a2d9f41c783"
                              }
                            }
                          ]
                        }
                      ],
                      "trigger": {
                        "event": "customer.order.paid"
                      },
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "start_date": null,
                      "end_date": null,
                      "earning_limits": {
                        "global": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      },
                      "metadata": {
                        "channel": "online"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "earning_rule"
                    },
                    "program_earning_rule": {
                      "earning_rule_id": "lern_6a2d9f41c783",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "object": "program_earning_rule"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.reward.created": {
      "post": {
        "operationId": "loyalty-activity-reward-created",
        "summary": "Reward created",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityRewardCreatedData"
              },
              "examples": {
                "vl.reward.created": {
                  "value": {
                    "reward": {
                      "id": "lrew_3e8a1c74d952",
                      "name": "Free coffee",
                      "type": "MATERIAL",
                      "status": "DRAFT",
                      "start_date": null,
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "material": {
                        "type": "PRODUCT",
                        "product": {
                          "id": "prod_7d2f5a39b461"
                        }
                      },
                      "refunds": {
                        "type": "REFUNDABLE"
                      },
                      "costs": [
                        {
                          "id": "lrcst_6a2d9f41c783",
                          "spending": [
                            {
                              "id": "lrspn_8d2f5a39b461",
                              "name": "Standard cost",
                              "points": 200,
                              "card_definition_id": "lcdef_6a2d9f41c783"
                            }
                          ],
                          "name": "Standard"
                        }
                      ],
                      "metadata": {
                        "category": "coffee"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "reward",
                      "purchase_limits": {
                        "cooldown": {
                          "type": "NO_COOLDOWN"
                        },
                        "frequency": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.reward.updated": {
      "post": {
        "operationId": "loyalty-activity-reward-updated",
        "summary": "Reward updated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityRewardUpdatedData"
              },
              "examples": {
                "vl.reward.updated": {
                  "value": {
                    "reward": {
                      "id": "lrew_3e8a1c74d952",
                      "name": "Free coffee",
                      "type": "MATERIAL",
                      "status": "ACTIVE",
                      "start_date": null,
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "material": {
                        "type": "PRODUCT",
                        "product": {
                          "id": "prod_7d2f5a39b461"
                        }
                      },
                      "refunds": {
                        "type": "REFUNDABLE"
                      },
                      "costs": [
                        {
                          "id": "lrcst_6a2d9f41c783",
                          "spending": [
                            {
                              "id": "lrspn_8d2f5a39b461",
                              "name": "Standard cost",
                              "points": 200,
                              "card_definition_id": "lcdef_6a2d9f41c783"
                            }
                          ],
                          "name": "Standard"
                        }
                      ],
                      "metadata": {
                        "category": "coffee"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "reward",
                      "purchase_limits": {
                        "cooldown": {
                          "type": "NO_COOLDOWN"
                        },
                        "frequency": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.reward.deleted": {
      "post": {
        "operationId": "loyalty-activity-reward-deleted",
        "summary": "Reward deleted",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityRewardDeletedData"
              },
              "examples": {
                "vl.reward.deleted": {
                  "value": {
                    "reward": {
                      "id": "lrew_3e8a1c74d952",
                      "name": "Free coffee",
                      "type": "MATERIAL",
                      "status": "DELETED",
                      "start_date": null,
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "material": {
                        "type": "PRODUCT",
                        "product": {
                          "id": "prod_7d2f5a39b461"
                        }
                      },
                      "refunds": {
                        "type": "REFUNDABLE"
                      },
                      "costs": [
                        {
                          "id": "lrcst_6a2d9f41c783",
                          "spending": [
                            {
                              "id": "lrspn_8d2f5a39b461",
                              "name": "Standard cost",
                              "points": 200,
                              "card_definition_id": "lcdef_6a2d9f41c783"
                            }
                          ],
                          "name": "Standard"
                        }
                      ],
                      "metadata": {
                        "category": "coffee"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "reward",
                      "purchase_limits": {
                        "cooldown": {
                          "type": "NO_COOLDOWN"
                        },
                        "frequency": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.reward.assigned": {
      "post": {
        "operationId": "loyalty-activity-reward-assigned",
        "summary": "Reward assigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityRewardAssignedData"
              },
              "examples": {
                "vl.reward.assigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "reward": {
                      "id": "lrew_3e8a1c74d952",
                      "name": "Free coffee",
                      "type": "MATERIAL",
                      "status": "ACTIVE",
                      "start_date": null,
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "material": {
                        "type": "PRODUCT",
                        "product": {
                          "id": "prod_7d2f5a39b461"
                        }
                      },
                      "refunds": {
                        "type": "REFUNDABLE"
                      },
                      "costs": [
                        {
                          "id": "lrcst_6a2d9f41c783",
                          "spending": [
                            {
                              "id": "lrspn_8d2f5a39b461",
                              "name": "Standard cost",
                              "points": 200,
                              "card_definition_id": "lcdef_6a2d9f41c783"
                            }
                          ],
                          "name": "Standard"
                        }
                      ],
                      "metadata": {
                        "category": "coffee"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "reward",
                      "purchase_limits": {
                        "cooldown": {
                          "type": "NO_COOLDOWN"
                        },
                        "frequency": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      }
                    },
                    "program_reward": {
                      "reward_id": "lrew_3e8a1c74d952",
                      "stock": {
                        "type": "UNLIMITED"
                      },
                      "redeemed": 0,
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "program_reward"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.reward.unassigned": {
      "post": {
        "operationId": "loyalty-activity-reward-unassigned",
        "summary": "Reward unassigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityRewardUnassignedData"
              },
              "examples": {
                "vl.reward.unassigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "reward": {
                      "id": "lrew_3e8a1c74d952",
                      "name": "Free coffee",
                      "type": "MATERIAL",
                      "status": "ACTIVE",
                      "start_date": null,
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "material": {
                        "type": "PRODUCT",
                        "product": {
                          "id": "prod_7d2f5a39b461"
                        }
                      },
                      "refunds": {
                        "type": "REFUNDABLE"
                      },
                      "costs": [
                        {
                          "id": "lrcst_6a2d9f41c783",
                          "spending": [
                            {
                              "id": "lrspn_8d2f5a39b461",
                              "name": "Standard cost",
                              "points": 200,
                              "card_definition_id": "lcdef_6a2d9f41c783"
                            }
                          ],
                          "name": "Standard"
                        }
                      ],
                      "metadata": {
                        "category": "coffee"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "reward",
                      "purchase_limits": {
                        "cooldown": {
                          "type": "NO_COOLDOWN"
                        },
                        "frequency": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      }
                    },
                    "program_reward": {
                      "reward_id": "lrew_3e8a1c74d952",
                      "stock": {
                        "type": "UNLIMITED"
                      },
                      "redeemed": 0,
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "program_reward"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.reward.activated": {
      "post": {
        "operationId": "loyalty-activity-reward-activated",
        "summary": "Reward activated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityRewardActivatedData"
              },
              "examples": {
                "vl.reward.activated": {
                  "value": {
                    "reward": {
                      "id": "lrew_3e8a1c74d952",
                      "name": "Free coffee",
                      "type": "MATERIAL",
                      "status": "ACTIVE",
                      "start_date": null,
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "material": {
                        "type": "PRODUCT",
                        "product": {
                          "id": "prod_7d2f5a39b461"
                        }
                      },
                      "refunds": {
                        "type": "REFUNDABLE"
                      },
                      "costs": [
                        {
                          "id": "lrcst_6a2d9f41c783",
                          "spending": [
                            {
                              "id": "lrspn_8d2f5a39b461",
                              "name": "Standard cost",
                              "points": 200,
                              "card_definition_id": "lcdef_6a2d9f41c783"
                            }
                          ],
                          "name": "Standard"
                        }
                      ],
                      "metadata": {
                        "category": "coffee"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "reward",
                      "purchase_limits": {
                        "cooldown": {
                          "type": "NO_COOLDOWN"
                        },
                        "frequency": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.reward.deactivated": {
      "post": {
        "operationId": "loyalty-activity-reward-deactivated",
        "summary": "Reward deactivated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityRewardDeactivatedData"
              },
              "examples": {
                "vl.reward.deactivated": {
                  "value": {
                    "reward": {
                      "id": "lrew_3e8a1c74d952",
                      "name": "Free coffee",
                      "type": "MATERIAL",
                      "status": "INACTIVE",
                      "start_date": null,
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "material": {
                        "type": "PRODUCT",
                        "product": {
                          "id": "prod_7d2f5a39b461"
                        }
                      },
                      "refunds": {
                        "type": "REFUNDABLE"
                      },
                      "costs": [
                        {
                          "id": "lrcst_6a2d9f41c783",
                          "spending": [
                            {
                              "id": "lrspn_8d2f5a39b461",
                              "name": "Standard cost",
                              "points": 200,
                              "card_definition_id": "lcdef_6a2d9f41c783"
                            }
                          ],
                          "name": "Standard"
                        }
                      ],
                      "metadata": {
                        "category": "coffee"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "reward",
                      "purchase_limits": {
                        "cooldown": {
                          "type": "NO_COOLDOWN"
                        },
                        "frequency": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.reward.drafted": {
      "post": {
        "operationId": "loyalty-activity-reward-drafted",
        "summary": "Reward drafted",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityRewardDraftedData"
              },
              "examples": {
                "vl.reward.drafted": {
                  "value": {
                    "reward": {
                      "id": "lrew_3e8a1c74d952",
                      "name": "Free coffee",
                      "type": "MATERIAL",
                      "status": "DRAFT",
                      "start_date": null,
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "material": {
                        "type": "PRODUCT",
                        "product": {
                          "id": "prod_7d2f5a39b461"
                        }
                      },
                      "refunds": {
                        "type": "REFUNDABLE"
                      },
                      "costs": [
                        {
                          "id": "lrcst_6a2d9f41c783",
                          "spending": [
                            {
                              "id": "lrspn_8d2f5a39b461",
                              "name": "Standard cost",
                              "points": 200,
                              "card_definition_id": "lcdef_6a2d9f41c783"
                            }
                          ],
                          "name": "Standard"
                        }
                      ],
                      "metadata": {
                        "category": "coffee"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "reward",
                      "purchase_limits": {
                        "cooldown": {
                          "type": "NO_COOLDOWN"
                        },
                        "frequency": {
                          "type": "NO_LIMIT",
                          "limits": []
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.benefit.created": {
      "post": {
        "operationId": "loyalty-activity-benefit-created",
        "summary": "Benefit created",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityBenefitCreatedData"
              },
              "examples": {
                "vl.benefit.created": {
                  "value": {
                    "benefit": {
                      "id": "lben_3e8a1c74d952",
                      "name": "Birthday points",
                      "type": "POINTS",
                      "status": "DRAFT",
                      "stock": {
                        "type": "UNLIMITED"
                      },
                      "points": {
                        "value": 100,
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "benefit"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.benefit.updated": {
      "post": {
        "operationId": "loyalty-activity-benefit-updated",
        "summary": "Benefit updated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityBenefitUpdatedData"
              },
              "examples": {
                "vl.benefit.updated": {
                  "value": {
                    "benefit": {
                      "id": "lben_3e8a1c74d952",
                      "name": "Birthday points",
                      "type": "POINTS",
                      "status": "ACTIVE",
                      "stock": {
                        "type": "UNLIMITED"
                      },
                      "points": {
                        "value": 100,
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "benefit"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.benefit.deleted": {
      "post": {
        "operationId": "loyalty-activity-benefit-deleted",
        "summary": "Benefit deleted",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityBenefitDeletedData"
              },
              "examples": {
                "vl.benefit.deleted": {
                  "value": {
                    "benefit": {
                      "id": "lben_3e8a1c74d952",
                      "name": "Birthday points",
                      "type": "POINTS",
                      "status": "DELETED",
                      "stock": {
                        "type": "UNLIMITED"
                      },
                      "points": {
                        "value": 100,
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "benefit"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.benefit.activated": {
      "post": {
        "operationId": "loyalty-activity-benefit-activated",
        "summary": "Benefit activated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityBenefitActivatedData"
              },
              "examples": {
                "vl.benefit.activated": {
                  "value": {
                    "benefit": {
                      "id": "lben_3e8a1c74d952",
                      "name": "Birthday points",
                      "type": "POINTS",
                      "status": "ACTIVE",
                      "stock": {
                        "type": "UNLIMITED"
                      },
                      "points": {
                        "value": 100,
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "benefit"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.benefit.drafted": {
      "post": {
        "operationId": "loyalty-activity-benefit-drafted",
        "summary": "Benefit drafted",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityBenefitDraftedData"
              },
              "examples": {
                "vl.benefit.drafted": {
                  "value": {
                    "benefit": {
                      "id": "lben_3e8a1c74d952",
                      "name": "Birthday points",
                      "type": "POINTS",
                      "status": "DRAFT",
                      "stock": {
                        "type": "UNLIMITED"
                      },
                      "points": {
                        "value": 100,
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "benefit"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.tier_structure.created": {
      "post": {
        "operationId": "loyalty-activity-tier-structure-created",
        "summary": "Tier structure created",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityTierStructureCreatedData"
              },
              "examples": {
                "vl.tier_structure.created": {
                  "value": {
                    "tier_structure": {
                      "id": "lts_3e8a1c74d952",
                      "name": "Coffee Club tiers",
                      "type": "POINT_BALANCE",
                      "point_balance": {
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "expiration": {
                        "type": "NO_RETENTION"
                      },
                      "downgrade": {
                        "type": "SINGLE_LEVEL"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "status": "DRAFT",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "tier_structure"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.tier_structure.updated": {
      "post": {
        "operationId": "loyalty-activity-tier-structure-updated",
        "summary": "Tier structure updated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityTierStructureUpdatedData"
              },
              "examples": {
                "vl.tier_structure.updated": {
                  "value": {
                    "tier_structure": {
                      "id": "lts_3e8a1c74d952",
                      "name": "Coffee Club tiers",
                      "type": "POINT_BALANCE",
                      "point_balance": {
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "expiration": {
                        "type": "NO_RETENTION"
                      },
                      "downgrade": {
                        "type": "SINGLE_LEVEL"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "status": "ACTIVE",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "tier_structure"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.tier_structure.deleted": {
      "post": {
        "operationId": "loyalty-activity-tier-structure-deleted",
        "summary": "Tier structure deleted",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityTierStructureDeletedData"
              },
              "examples": {
                "vl.tier_structure.deleted": {
                  "value": {
                    "tier_structure": {
                      "id": "lts_3e8a1c74d952",
                      "name": "Coffee Club tiers",
                      "type": "POINT_BALANCE",
                      "point_balance": {
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "expiration": {
                        "type": "NO_RETENTION"
                      },
                      "downgrade": {
                        "type": "SINGLE_LEVEL"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "status": "DELETED",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "tier_structure"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.tier_structure.activated": {
      "post": {
        "operationId": "loyalty-activity-tier-structure-activated",
        "summary": "Tier structure activated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityTierStructureActivatedData"
              },
              "examples": {
                "vl.tier_structure.activated": {
                  "value": {
                    "tier_structure": {
                      "id": "lts_3e8a1c74d952",
                      "name": "Coffee Club tiers",
                      "type": "POINT_BALANCE",
                      "point_balance": {
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "expiration": {
                        "type": "NO_RETENTION"
                      },
                      "downgrade": {
                        "type": "SINGLE_LEVEL"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "status": "ACTIVE",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "tier_structure"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.tier_structure.deactivated": {
      "post": {
        "operationId": "loyalty-activity-tier-structure-deactivated",
        "summary": "Tier structure deactivated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityTierStructureDeactivatedData"
              },
              "examples": {
                "vl.tier_structure.deactivated": {
                  "value": {
                    "tier_structure": {
                      "id": "lts_3e8a1c74d952",
                      "name": "Coffee Club tiers",
                      "type": "POINT_BALANCE",
                      "point_balance": {
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "expiration": {
                        "type": "NO_RETENTION"
                      },
                      "downgrade": {
                        "type": "SINGLE_LEVEL"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "status": "INACTIVE",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "tier_structure"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.tier_structure.drafted": {
      "post": {
        "operationId": "loyalty-activity-tier-structure-drafted",
        "summary": "Tier structure drafted",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityTierStructureDraftedData"
              },
              "examples": {
                "vl.tier_structure.drafted": {
                  "value": {
                    "tier_structure": {
                      "id": "lts_3e8a1c74d952",
                      "name": "Coffee Club tiers",
                      "type": "POINT_BALANCE",
                      "point_balance": {
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "expiration": {
                        "type": "NO_RETENTION"
                      },
                      "downgrade": {
                        "type": "SINGLE_LEVEL"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "status": "DRAFT",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "tier_structure"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.tier_structure.assigned": {
      "post": {
        "operationId": "loyalty-activity-tier-structure-assigned",
        "summary": "Tier structure assigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityTierStructureAssignedData"
              },
              "examples": {
                "vl.tier_structure.assigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "tier_structure": {
                      "id": "lts_3e8a1c74d952",
                      "name": "Coffee Club tiers",
                      "type": "POINT_BALANCE",
                      "point_balance": {
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "expiration": {
                        "type": "NO_RETENTION"
                      },
                      "downgrade": {
                        "type": "SINGLE_LEVEL"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "status": "ACTIVE",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "tier_structure"
                    },
                    "program_tier_structure": {
                      "tier_structure_id": "lts_3e8a1c74d952",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "object": "program_tier_structure"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.tier_structure.unassigned": {
      "post": {
        "operationId": "loyalty-activity-tier-structure-unassigned",
        "summary": "Tier structure unassigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityTierStructureUnassignedData"
              },
              "examples": {
                "vl.tier_structure.unassigned": {
                  "value": {
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    },
                    "tier_structure": {
                      "id": "lts_3e8a1c74d952",
                      "name": "Coffee Club tiers",
                      "type": "POINT_BALANCE",
                      "point_balance": {
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "expiration": {
                        "type": "NO_RETENTION"
                      },
                      "downgrade": {
                        "type": "SINGLE_LEVEL"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "status": "ACTIVE",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "tier_structure"
                    },
                    "program_tier_structure": {
                      "tier_structure_id": "lts_3e8a1c74d952",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "object": "program_tier_structure"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.tier_structure.tier.created": {
      "post": {
        "operationId": "loyalty-activity-tier-structure-tier-created",
        "summary": "Tier created",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityTierStructureTierCreatedData"
              },
              "examples": {
                "vl.tier_structure.tier.created": {
                  "value": {
                    "tier_structure": {
                      "id": "lts_3e8a1c74d952",
                      "name": "Coffee Club tiers",
                      "type": "POINT_BALANCE",
                      "point_balance": {
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "expiration": {
                        "type": "NO_RETENTION"
                      },
                      "downgrade": {
                        "type": "SINGLE_LEVEL"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "status": "ACTIVE",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "tier_structure"
                    },
                    "tier": {
                      "id": "lt_91f6b2e84a37",
                      "tier_structure_id": "lts_3e8a1c74d952",
                      "name": "Gold",
                      "qualification_rules": {
                        "type": "POINTS",
                        "points": {
                          "min_value": 1000,
                          "max_value": 4999
                        }
                      },
                      "downgrade": {},
                      "points_expiration": {
                        "type": "INHERIT"
                      },
                      "metadata": {
                        "color": "gold"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "tier"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.tier_structure.tier.updated": {
      "post": {
        "operationId": "loyalty-activity-tier-structure-tier-updated",
        "summary": "Tier updated",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityTierStructureTierUpdatedData"
              },
              "examples": {
                "vl.tier_structure.tier.updated": {
                  "value": {
                    "tier_structure": {
                      "id": "lts_3e8a1c74d952",
                      "name": "Coffee Club tiers",
                      "type": "POINT_BALANCE",
                      "point_balance": {
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "expiration": {
                        "type": "NO_RETENTION"
                      },
                      "downgrade": {
                        "type": "SINGLE_LEVEL"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "status": "ACTIVE",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "tier_structure"
                    },
                    "tier": {
                      "id": "lt_91f6b2e84a37",
                      "tier_structure_id": "lts_3e8a1c74d952",
                      "name": "Gold",
                      "qualification_rules": {
                        "type": "POINTS",
                        "points": {
                          "min_value": 1000,
                          "max_value": 4999
                        }
                      },
                      "downgrade": {},
                      "points_expiration": {
                        "type": "INHERIT"
                      },
                      "metadata": {
                        "color": "gold"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "tier"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.tier_structure.tier.deleted": {
      "post": {
        "operationId": "loyalty-activity-tier-structure-tier-deleted",
        "summary": "Tier deleted",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityTierStructureTierDeletedData"
              },
              "examples": {
                "vl.tier_structure.tier.deleted": {
                  "value": {
                    "tier_structure": {
                      "id": "lts_3e8a1c74d952",
                      "name": "Coffee Club tiers",
                      "type": "POINT_BALANCE",
                      "point_balance": {
                        "card_definition_id": "lcdef_6a2d9f41c783"
                      },
                      "expiration": {
                        "type": "NO_RETENTION"
                      },
                      "downgrade": {
                        "type": "SINGLE_LEVEL"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "status": "ACTIVE",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "tier_structure"
                    },
                    "tier": {
                      "id": "lt_91f6b2e84a37",
                      "tier_structure_id": "lts_3e8a1c74d952",
                      "name": "Gold",
                      "qualification_rules": {
                        "type": "POINTS",
                        "points": {
                          "min_value": 1000,
                          "max_value": 4999
                        }
                      },
                      "downgrade": {},
                      "points_expiration": {
                        "type": "INHERIT"
                      },
                      "metadata": {
                        "color": "gold"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "tier"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.card.created": {
      "post": {
        "operationId": "loyalty-activity-card-created",
        "summary": "Card created",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityCardCreatedData"
              },
              "examples": {
                "vl.card.created": {
                  "value": {
                    "card": {
                      "id": "lcrd_28c4e7b195fa",
                      "program_id": "lprg_3e8a1c74d952",
                      "card_definition_id": "lcdef_6a2d9f41c783",
                      "card_type": "INDIVIDUAL",
                      "code": null,
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "member_id": "lmbr_91f6b2e84a37",
                      "lifetime_bucket": {
                        "points": {
                          "total": 0,
                          "earned": 0,
                          "added": 0,
                          "purchased": 0,
                          "purchased_reversed": 0,
                          "subtracted": 0,
                          "expired": 0,
                          "spent": 0,
                          "refunded": 0,
                          "returned": 0,
                          "locked": 0,
                          "unlocked": 0
                        },
                        "pending_points": {
                          "total": 0,
                          "activated": 0,
                          "canceled": 0
                        }
                      },
                      "balance": {
                        "points": 0,
                        "pending_points": 0
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "card"
                    },
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-01-01T09:00:00.000Z",
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.card.assigned": {
      "post": {
        "operationId": "loyalty-activity-card-assigned",
        "summary": "Card assigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityCardAssignedData"
              },
              "examples": {
                "vl.card.assigned": {
                  "value": {
                    "card": {
                      "id": "lcrd_28c4e7b195fa",
                      "program_id": "lprg_3e8a1c74d952",
                      "card_definition_id": "lcdef_6a2d9f41c783",
                      "card_type": "INDIVIDUAL",
                      "code": null,
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "member_id": "lmbr_91f6b2e84a37",
                      "lifetime_bucket": {
                        "points": {
                          "total": 0,
                          "earned": 0,
                          "added": 0,
                          "purchased": 0,
                          "purchased_reversed": 0,
                          "subtracted": 0,
                          "expired": 0,
                          "spent": 0,
                          "refunded": 0,
                          "returned": 0,
                          "locked": 0,
                          "unlocked": 0
                        },
                        "pending_points": {
                          "total": 0,
                          "activated": 0,
                          "canceled": 0
                        }
                      },
                      "balance": {
                        "points": 0,
                        "pending_points": 0
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "card"
                    },
                    "member": {
                      "id": "lmbr_91f6b2e84a37",
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "program_id": "lprg_3e8a1c74d952",
                      "status": "ACTIVE",
                      "metadata": {
                        "signup_channel": "mobile_app"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "member"
                    },
                    "member_card": {
                      "member_role": "OWNER",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "card": {
                        "id": "lcrd_28c4e7b195fa",
                        "card_definition_id": "lcdef_6a2d9f41c783",
                        "card_type": "INDIVIDUAL",
                        "code": null,
                        "lifetime_bucket": {
                          "points": {
                            "total": 0,
                            "earned": 0,
                            "added": 0,
                            "purchased": 0,
                            "purchased_reversed": 0,
                            "subtracted": 0,
                            "expired": 0,
                            "spent": 0,
                            "refunded": 0,
                            "returned": 0,
                            "locked": 0,
                            "unlocked": 0
                          },
                          "pending_points": {
                            "total": 0,
                            "activated": 0,
                            "canceled": 0
                          }
                        },
                        "balance": {
                          "points": 0,
                          "pending_points": 0
                        },
                        "next_expiration": null,
                        "next_activation": null,
                        "object": "card"
                      },
                      "object": "member_card"
                    },
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-01-01T09:00:00.000Z",
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.card.unassigned": {
      "post": {
        "operationId": "loyalty-activity-card-unassigned",
        "summary": "Card unassigned",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityCardUnassignedData"
              },
              "examples": {
                "vl.card.unassigned": {
                  "value": {
                    "card": {
                      "id": "lcrd_28c4e7b195fa",
                      "program_id": "lprg_3e8a1c74d952",
                      "card_definition_id": "lcdef_6a2d9f41c783",
                      "card_type": "INDIVIDUAL",
                      "code": "COFFEE-001",
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "member_id": "lmbr_91f6b2e84a37",
                      "lifetime_bucket": {
                        "points": {
                          "total": 250,
                          "earned": 250,
                          "added": 0,
                          "purchased": 0,
                          "purchased_reversed": 0,
                          "subtracted": 0,
                          "expired": 0,
                          "spent": 0,
                          "refunded": 0,
                          "returned": 0,
                          "locked": 0,
                          "unlocked": 0
                        },
                        "pending_points": {
                          "total": 0,
                          "activated": 0,
                          "canceled": 0
                        }
                      },
                      "balance": {
                        "points": 250,
                        "pending_points": 0
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "card"
                    },
                    "member": {
                      "id": "lmbr_91f6b2e84a37",
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "program_id": "lprg_3e8a1c74d952",
                      "status": "DELETED",
                      "metadata": {
                        "signup_channel": "mobile_app"
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "member"
                    },
                    "member_card": {
                      "member_role": "OWNER",
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "card": {
                        "id": "lcrd_28c4e7b195fa",
                        "card_definition_id": "lcdef_6a2d9f41c783",
                        "card_type": "INDIVIDUAL",
                        "code": "COFFEE-001",
                        "lifetime_bucket": {
                          "points": {
                            "total": 250,
                            "earned": 250,
                            "added": 0,
                            "purchased": 0,
                            "purchased_reversed": 0,
                            "subtracted": 0,
                            "expired": 0,
                            "spent": 0,
                            "refunded": 0,
                            "returned": 0,
                            "locked": 0,
                            "unlocked": 0
                          },
                          "pending_points": {
                            "total": 0,
                            "activated": 0,
                            "canceled": 0
                          }
                        },
                        "balance": {
                          "points": 250,
                          "pending_points": 0
                        },
                        "next_expiration": null,
                        "next_activation": null,
                        "object": "card"
                      },
                      "object": "member_card"
                    },
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.card.code_generation.succeeded": {
      "post": {
        "operationId": "loyalty-activity-card-code-generation-succeeded",
        "summary": "Card code generation succeeded",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityCardCodeGenerationSucceededData"
              },
              "examples": {
                "vl.card.code_generation.succeeded": {
                  "value": {
                    "card": {
                      "id": "lcrd_28c4e7b195fa",
                      "program_id": "lprg_3e8a1c74d952",
                      "card_definition_id": "lcdef_6a2d9f41c783",
                      "card_type": "INDIVIDUAL",
                      "code": "COFFEE-001",
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "member_id": "lmbr_91f6b2e84a37",
                      "lifetime_bucket": {
                        "points": {
                          "total": 0,
                          "earned": 0,
                          "added": 0,
                          "purchased": 0,
                          "purchased_reversed": 0,
                          "subtracted": 0,
                          "expired": 0,
                          "spent": 0,
                          "refunded": 0,
                          "returned": 0,
                          "locked": 0,
                          "unlocked": 0
                        },
                        "pending_points": {
                          "total": 0,
                          "activated": 0,
                          "canceled": 0
                        }
                      },
                      "balance": {
                        "points": 0,
                        "pending_points": 0
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "card"
                    },
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-09-09T10:16:12.284Z",
                      "object": "program"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "vl.card.code_generation.failed": {
      "post": {
        "operationId": "loyalty-activity-card-code-generation-failed",
        "summary": "Card code generation failed",
        "description": "",
        "tags": [
          "Events loyalty activity"
        ],
        "responses": {
          "200": {
            "description": "Webhook accepted"
          },
          "202": {
            "description": "Webhook accepted"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLoyaltyActivityCardCodeGenerationFailedData"
              },
              "examples": {
                "vl.card.code_generation.failed": {
                  "value": {
                    "card": {
                      "id": "lcrd_28c4e7b195fa",
                      "program_id": "lprg_3e8a1c74d952",
                      "card_definition_id": "lcdef_6a2d9f41c783",
                      "card_type": "INDIVIDUAL",
                      "code": null,
                      "customer_id": "cust_7LvqCsUB9c8WyFP8JaLXchtF",
                      "member_id": "lmbr_91f6b2e84a37",
                      "lifetime_bucket": {
                        "points": {
                          "total": 0,
                          "earned": 0,
                          "added": 0,
                          "purchased": 0,
                          "purchased_reversed": 0,
                          "subtracted": 0,
                          "expired": 0,
                          "spent": 0,
                          "refunded": 0,
                          "returned": 0,
                          "locked": 0,
                          "unlocked": 0
                        },
                        "pending_points": {
                          "total": 0,
                          "activated": 0,
                          "canceled": 0
                        }
                      },
                      "balance": {
                        "points": 0,
                        "pending_points": 0
                      },
                      "created_at": "2026-09-09T10:15:43.091Z",
                      "updated_at": null,
                      "object": "card"
                    },
                    "program": {
                      "id": "lprg_3e8a1c74d952",
                      "name": "Coffee Club",
                      "status": "ACTIVE",
                      "start_date": "2026-01-01T00:00:00.000Z",
                      "end_date": null,
                      "validity_hours": {
                        "type": "ANY_TIME"
                      },
                      "metadata": {
                        "region": "EMEA"
                      },
                      "created_at": "2026-01-01T09:00:00.000Z",
                      "updated_at": "2026-01-01T09:00:00.000Z",
                      "object": "program"
                    },
                    "result": {
                      "details": "Code space exhausted for card definition"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}