# EditLoyaltyProgramInput

input type

Edit-input for a LoyaltyProgram. Every field optional, at least ONE required; supplied fields REPLACE, omitted fields are preserved (no clearing semantic). currency and startAt are IMMUTABLE at birth (the rate anchor + the history anchor); the RESULTING window must keep endAt strictly after the immutable startAt (the RC-h merged-edit law).

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `caption` | [String](/types/#scalars) | no | No further notes. |
| `earnRate` | [LoyaltyRateInput](/types/LoyaltyRateInput/) | no | No further notes. |
| `redeemRate` | [LoyaltyRateInput](/types/LoyaltyRateInput/) | no | No further notes. |
| `earnMultipliers` | [LoyaltyEarnMultiplierInput](/types/LoyaltyEarnMultiplierInput/) `[LoyaltyEarnMultiplierInput!]` | no | Wholesale replace (the array-edit law). |
| `bonusWindows` | [LoyaltyBonusWindowInput](/types/LoyaltyBonusWindowInput/) `[LoyaltyBonusWindowInput!]` | no | Wholesale replace. |
| `tiers` | [LoyaltyTierInput](/types/LoyaltyTierInput/) `[LoyaltyTierInput!]` | no | Wholesale replace — a renamed tier degrades assigned members to the base multiplier at evaluation (never a cart-killing throw). |
| `organizationIds` | [ID](/types/#scalars) `[ID!]` | no | Wholesale replace of the canned pool. |
| `endAt` | [String](/types/#scalars) | no | No further notes. |

## Used by

- [updateLoyaltyProgram](/reference/loyalty-program/updateLoyaltyProgram/)
