---
title: "Changes to Update earning rule"
method: PUT
path: "/v2/loyalties/earning-rules/{earningRuleId}"
---

# Changes to Update earning rule

`PUT /v2/loyalties/earning-rules/{earningRuleId}`

> Every recorded change to this operation, newest first.

## Timeline

Changed in 31 of 211 revisions.

- **2026-10-14** (v2) `d29b33490051`: 10 breaking, 9 warning, 8 info
- **2026-10-14** (v2) `be14b3318eb3`: 5 breaking, 1 warning, 21 info
- **2026-10-14** (v2) `6a418ac8b7b1`: 10 breaking, 9 warning, 8 info
- **2026-10-14** (v2) `ec801ade260d`: 15 breaking, 10 warning, 1 info
- **2026-10-13** (v2) `f95b50556c93`: 1 warning, 25 info
- **2026-10-13** (v2) `9905dfce1d1e`: 15 breaking, 10 warning, 1 info
- **2026-10-13** (v2) `c59a345c733b`: 1 warning, 25 info
- **2026-10-13** (v2) `4d4d694f1847`: 15 breaking, 10 warning, 1 info
- **2026-10-13** (v2) `84ad572f8dcb`: 1 warning, 25 info
- **2026-10-13** (v2) `58624588b18c`: 15 breaking, 10 warning, 1 info
- **2026-10-13** (v2) `100ea5942966`: 1 warning, 25 info
- **2026-10-13** (v2) `ed683aacf90a`: 15 breaking, 10 warning, 1 info
- **2026-10-12** (v2) `d050da3a1603`: 10 breaking, 18 warning, 40 info
- **2026-10-12** (v2) `c56e6909b766`: 39 breaking, 5 warning, 26 info
- **2026-10-12** (v2) `0f9c09c099aa`: 1 warning
- **2026-10-12** (v2) `1843745ad636`: 1 breaking
- **2026-10-12** (v2) `c764b0bcbdd4`: 1 warning
- **2026-10-12** (v2) `1ff051999cd4`: 10 breaking, 17 warning, 40 info
- **2026-10-09** (v2) `2e03ae2170c5`: 38 breaking, 5 warning, 26 info
- **2026-10-09** (v2) `e4586926a399`: 7 breaking, 17 warning, 12 info
- **2026-10-09** (v2) `80283884ce89`: 3 breaking, 28 info
- **2026-10-09** (v2) `8fcaa611eeaf`: 29 breaking, 2 warning, 2 info
- **2026-10-09** (v2) `1293925d79e2`: 3 breaking, 28 info
- **2026-10-09** (v2) `c7ebd351d2e3`: 29 breaking, 2 warning, 2 info
- **2026-10-09** (v2) `cd26c1c8148a`: 3 breaking, 28 info
- **2026-10-07** (v2) `338a5e34004e`: 2 info
- **2026-10-06** (v2) `b50db1d1d5fe`: 24 breaking, 3 warning, 27 info
- **2026-10-01** (v2) `749b6d105462`: 1 breaking, 1 warning
- **2026-07-31** (v2) `703a0a42ea43`: 5 breaking, 4 warning, 9 info
- **2026-07-17** (v2) `4cbaee5a82d5`: 8 info
- **2026-07-17** (v2) `26ef7b3dd1ef`: 4 breaking, 4 warning, 8 info

## Changes

- **2026-10-14** (v2) `d29b33490051`: 10 breaking, 9 warning, 8 info
  - added `#/components/schemas/EarningRuleRequestBase, subschema #2` to the `allOf[#/components/schemas/EarningRuleUpdateRequest]/` request property `allOf` list
  - the `allOf[#/components/schemas/EarningRuleUpdateRequest]/` request property type changed from `object` to no type
  - the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/custom_event` response's property type changed from `object` to no type for status `200`
  - the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/customer` response's property type changed from `object` to no type for status `200`
  - the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/custom_event` response's property type changed from `object` to no type for status `200`
  - the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/customer` response's property type changed from `object` to no type for status `200`
  - removed the required property `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/custom_event/metadata` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/customer/metadata` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/custom_event/metadata` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/customer/metadata` from the response with the `200` status
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/earnings`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/end_date`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/error`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/metadata`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/name`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/start_date`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/trigger`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/trigger_limits`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/validity_hours`
  - added `#/components/schemas/EarningRulePointsProportionalBase` to the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/custom_event` response property `allOf` list for the response status `200`
  - added `#/components/schemas/EarningRulePointsProportionalBase` to the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/customer` response property `allOf` list for the response status `200`
  - added `#/components/schemas/EarningRulePointsProportionalBase` to the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/custom_event` response property `allOf` list for the response status `200`
  - added `#/components/schemas/EarningRulePointsProportionalBase` to the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/customer` response property `allOf` list for the response status `200`
  - added `subschema #4, subschema #5` to the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional` response property `allOf` list for the response status `200`
  - added `subschema #4, subschema #5` to the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional` response property `allOf` list for the response status `200`
  - removed `subschema #4, subschema #5` from the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional` response property `allOf` list for the response status `200`
  - removed `subschema #4, subschema #5` from the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional` response property `allOf` list for the response status `200`
- **2026-10-14** (v2) `be14b3318eb3`: 5 breaking, 1 warning, 21 info
  - the `allOf[#/components/schemas/EarningRuleUpdateRequest]/` request property type changed from no type to `object`
  - the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/custom_event` response's property type changed from no type to `object` for status `200`
  - the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/customer` response's property type changed from no type to `object` for status `200`
  - the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/custom_event` response's property type changed from no type to `object` for status `200`
  - the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/customer` response's property type changed from no type to `object` for status `200`
  - removed `#/components/schemas/EarningRuleRequestBase, subschema #2` from the `allOf[#/components/schemas/EarningRuleUpdateRequest]/` request property `allOf` list
  - added the new optional request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/earnings`
  - added the new optional request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/end_date`
  - added the new optional request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/error`
  - added the new optional request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/metadata`
  - added the new optional request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/name`
  - added the new optional request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/start_date`
  - added the new optional request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/trigger`
  - added the new optional request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/trigger_limits`
  - added the new optional request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/validity_hours`
  - added `subschema #4, subschema #5` to the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional` response property `allOf` list for the response status `200`
  - added `subschema #4, subschema #5` to the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional` response property `allOf` list for the response status `200`
  - removed `#/components/schemas/EarningRulePointsProportionalBase` from the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/custom_event` response property `allOf` list for the response status `200`
  - removed `#/components/schemas/EarningRulePointsProportionalBase` from the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/customer` response property `allOf` list for the response status `200`
  - removed `#/components/schemas/EarningRulePointsProportionalBase` from the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/custom_event` response property `allOf` list for the response status `200`
  - removed `#/components/schemas/EarningRulePointsProportionalBase` from the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/customer` response property `allOf` list for the response status `200`
  - removed `subschema #4, subschema #5` from the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional` response property `allOf` list for the response status `200`
  - removed `subschema #4, subschema #5` from the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional` response property `allOf` list for the response status `200`
  - added the required property `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/custom_event/metadata` to the response with the `200` status
  - added the required property `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/customer/metadata` to the response with the `200` status
  - added the required property `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/custom_event/metadata` to the response with the `200` status
  - added the required property `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/customer/metadata` to the response with the `200` status
- **2026-10-14** (v2) `6a418ac8b7b1`: 10 breaking, 9 warning, 8 info
  - added `#/components/schemas/EarningRuleRequestBase, subschema #2` to the `allOf[#/components/schemas/EarningRuleUpdateRequest]/` request property `allOf` list
  - the `allOf[#/components/schemas/EarningRuleUpdateRequest]/` request property type changed from `object` to no type
  - the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/custom_event` response's property type changed from `object` to no type for status `200`
  - the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/customer` response's property type changed from `object` to no type for status `200`
  - the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/custom_event` response's property type changed from `object` to no type for status `200`
  - the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/customer` response's property type changed from `object` to no type for status `200`
  - removed the required property `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/custom_event/metadata` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/customer/metadata` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/custom_event/metadata` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/customer/metadata` from the response with the `200` status
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/earnings`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/end_date`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/error`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/metadata`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/name`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/start_date`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/trigger`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/trigger_limits`
  - removed the request property `allOf[#/components/schemas/EarningRuleUpdateRequest]/validity_hours`
  - added `#/components/schemas/EarningRulePointsProportionalBase` to the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/custom_event` response property `allOf` list for the response status `200`
  - added `#/components/schemas/EarningRulePointsProportionalBase` to the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional/customer` response property `allOf` list for the response status `200`
  - added `#/components/schemas/EarningRulePointsProportionalBase` to the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/custom_event` response property `allOf` list for the response status `200`
  - added `#/components/schemas/EarningRulePointsProportionalBase` to the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional/customer` response property `allOf` list for the response status `200`
  - added `subschema #4, subschema #5` to the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional` response property `allOf` list for the response status `200`
  - added `subschema #4, subschema #5` to the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional` response property `allOf` list for the response status `200`
  - removed `subschema #4, subschema #5` from the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/allOf[subschema #3]/then/points_proportional` response property `allOf` list for the response status `200`
  - removed `subschema #4, subschema #5` from the `allOf[#/components/schemas/EarningRuleResponse]/earnings/items/effects/items/points_proportional` response property `allOf` list for the response status `200`
- **2026-10-14** (v2) `ec801ade260d`: 15 breaking, 10 warning, 1 info
  - added `#/components/schemas/EarningRuleUpdateRequest` to the request body `allOf` list
  - removed the required property `created_at` from the response with the `200` status
  - removed the required property `earning_limits` from the response with the `200` status
  - removed the required property `earnings` from the response with the `200` status
  - removed the required property `end_date` from the response with the `200` status
  - removed the required property `id` from the response with the `200` status
  - removed the required property `metadata` from the response with the `200` status
  - removed the required property `name` from the response with the `200` status
  - removed the required property `object` from the response with the `200` status
  - removed the required property `start_date` from the response with the `200` status
  - removed the required property `status` from the response with the `200` status
  - removed the required property `trigger` from the response with the `200` status
  - removed the required property `trigger_limits` from the response with the `200` status
  - removed the required property `updated_at` from the response with the `200` status
  - removed the required property `validity_hours` from the response with the `200` status
  - removed the request property `earnings`
  - removed the request property `end_date`
  - removed the request property `error`
  - removed the request property `metadata`
  - removed the request property `name`
  - removed the request property `start_date`
  - removed the request property `trigger`
  - removed the request property `trigger_limits`
  - removed the request property `validity_hours`
  - removed the optional property `error` from the response with the `200` status
  - added `#/components/schemas/EarningRuleResponse` to the response body `allOf` list for the response status `200`
- **2026-10-13** (v2) `f95b50556c93`: 1 warning, 25 info
  - removed `#/components/schemas/EarningRuleUpdateRequest` from the request body `allOf` list
  - added the new optional request property `earnings`
  - added the new optional request property `end_date`
  - added the new optional request property `error`
  - added the new optional request property `metadata`
  - added the new optional request property `name`
  - added the new optional request property `start_date`
  - added the new optional request property `trigger`
  - added the new optional request property `trigger_limits`
  - added the new optional request property `validity_hours`
  - removed `#/components/schemas/EarningRuleResponse` from the response body `allOf` list for the response status `200`
  - added the optional property `error` to the response with the `200` status
  - added the required property `created_at` to the response with the `200` status
  - added the required property `earning_limits` to the response with the `200` status
  - added the required property `earnings` to the response with the `200` status
  - added the required property `end_date` to the response with the `200` status
  - added the required property `id` to the response with the `200` status
  - added the required property `metadata` to the response with the `200` status
  - added the required property `name` to the response with the `200` status
  - added the required property `object` to the response with the `200` status
  - added the required property `start_date` to the response with the `200` status
  - added the required property `status` to the response with the `200` status
  - added the required property `trigger` to the response with the `200` status
  - added the required property `trigger_limits` to the response with the `200` status
  - added the required property `updated_at` to the response with the `200` status
  - added the required property `validity_hours` to the response with the `200` status
- **2026-10-13** (v2) `9905dfce1d1e`: 15 breaking, 10 warning, 1 info
  - added `#/components/schemas/EarningRuleUpdateRequest` to the request body `allOf` list
  - removed the required property `created_at` from the response with the `200` status
  - removed the required property `earning_limits` from the response with the `200` status
  - removed the required property `earnings` from the response with the `200` status
  - removed the required property `end_date` from the response with the `200` status
  - removed the required property `id` from the response with the `200` status
  - removed the required property `metadata` from the response with the `200` status
  - removed the required property `name` from the response with the `200` status
  - removed the required property `object` from the response with the `200` status
  - removed the required property `start_date` from the response with the `200` status
  - removed the required property `status` from the response with the `200` status
  - removed the required property `trigger` from the response with the `200` status
  - removed the required property `trigger_limits` from the response with the `200` status
  - removed the required property `updated_at` from the response with the `200` status
  - removed the required property `validity_hours` from the response with the `200` status
  - removed the request property `earnings`
  - removed the request property `end_date`
  - removed the request property `error`
  - removed the request property `metadata`
  - removed the request property `name`
  - removed the request property `start_date`
  - removed the request property `trigger`
  - removed the request property `trigger_limits`
  - removed the request property `validity_hours`
  - removed the optional property `error` from the response with the `200` status
  - added `#/components/schemas/EarningRuleResponse` to the response body `allOf` list for the response status `200`
- **2026-10-13** (v2) `c59a345c733b`: 1 warning, 25 info
  - removed `#/components/schemas/EarningRuleUpdateRequest` from the request body `allOf` list
  - added the new optional request property `earnings`
  - added the new optional request property `end_date`
  - added the new optional request property `error`
  - added the new optional request property `metadata`
  - added the new optional request property `name`
  - added the new optional request property `start_date`
  - added the new optional request property `trigger`
  - added the new optional request property `trigger_limits`
  - added the new optional request property `validity_hours`
  - removed `#/components/schemas/EarningRuleResponse` from the response body `allOf` list for the response status `200`
  - added the optional property `error` to the response with the `200` status
  - added the required property `created_at` to the response with the `200` status
  - added the required property `earning_limits` to the response with the `200` status
  - added the required property `earnings` to the response with the `200` status
  - added the required property `end_date` to the response with the `200` status
  - added the required property `id` to the response with the `200` status
  - added the required property `metadata` to the response with the `200` status
  - added the required property `name` to the response with the `200` status
  - added the required property `object` to the response with the `200` status
  - added the required property `start_date` to the response with the `200` status
  - added the required property `status` to the response with the `200` status
  - added the required property `trigger` to the response with the `200` status
  - added the required property `trigger_limits` to the response with the `200` status
  - added the required property `updated_at` to the response with the `200` status
  - added the required property `validity_hours` to the response with the `200` status
- **2026-10-13** (v2) `4d4d694f1847`: 15 breaking, 10 warning, 1 info
  - added `#/components/schemas/EarningRuleUpdateRequest` to the request body `allOf` list
  - removed the required property `created_at` from the response with the `200` status
  - removed the required property `earning_limits` from the response with the `200` status
  - removed the required property `earnings` from the response with the `200` status
  - removed the required property `end_date` from the response with the `200` status
  - removed the required property `id` from the response with the `200` status
  - removed the required property `metadata` from the response with the `200` status
  - removed the required property `name` from the response with the `200` status
  - removed the required property `object` from the response with the `200` status
  - removed the required property `start_date` from the response with the `200` status
  - removed the required property `status` from the response with the `200` status
  - removed the required property `trigger` from the response with the `200` status
  - removed the required property `trigger_limits` from the response with the `200` status
  - removed the required property `updated_at` from the response with the `200` status
  - removed the required property `validity_hours` from the response with the `200` status
  - removed the request property `earnings`
  - removed the request property `end_date`
  - removed the request property `error`
  - removed the request property `metadata`
  - removed the request property `name`
  - removed the request property `start_date`
  - removed the request property `trigger`
  - removed the request property `trigger_limits`
  - removed the request property `validity_hours`
  - removed the optional property `error` from the response with the `200` status
  - added `#/components/schemas/EarningRuleResponse` to the response body `allOf` list for the response status `200`
- **2026-10-13** (v2) `84ad572f8dcb`: 1 warning, 25 info
  - removed `#/components/schemas/EarningRuleUpdateRequest` from the request body `allOf` list
  - added the new optional request property `earnings`
  - added the new optional request property `end_date`
  - added the new optional request property `error`
  - added the new optional request property `metadata`
  - added the new optional request property `name`
  - added the new optional request property `start_date`
  - added the new optional request property `trigger`
  - added the new optional request property `trigger_limits`
  - added the new optional request property `validity_hours`
  - removed `#/components/schemas/EarningRuleResponse` from the response body `allOf` list for the response status `200`
  - added the optional property `error` to the response with the `200` status
  - added the required property `created_at` to the response with the `200` status
  - added the required property `earning_limits` to the response with the `200` status
  - added the required property `earnings` to the response with the `200` status
  - added the required property `end_date` to the response with the `200` status
  - added the required property `id` to the response with the `200` status
  - added the required property `metadata` to the response with the `200` status
  - added the required property `name` to the response with the `200` status
  - added the required property `object` to the response with the `200` status
  - added the required property `start_date` to the response with the `200` status
  - added the required property `status` to the response with the `200` status
  - added the required property `trigger` to the response with the `200` status
  - added the required property `trigger_limits` to the response with the `200` status
  - added the required property `updated_at` to the response with the `200` status
  - added the required property `validity_hours` to the response with the `200` status
- **2026-10-13** (v2) `58624588b18c`: 15 breaking, 10 warning, 1 info
  - added `#/components/schemas/EarningRuleUpdateRequest` to the request body `allOf` list
  - removed the required property `created_at` from the response with the `200` status
  - removed the required property `earning_limits` from the response with the `200` status
  - removed the required property `earnings` from the response with the `200` status
  - removed the required property `end_date` from the response with the `200` status
  - removed the required property `id` from the response with the `200` status
  - removed the required property `metadata` from the response with the `200` status
  - removed the required property `name` from the response with the `200` status
  - removed the required property `object` from the response with the `200` status
  - removed the required property `start_date` from the response with the `200` status
  - removed the required property `status` from the response with the `200` status
  - removed the required property `trigger` from the response with the `200` status
  - removed the required property `trigger_limits` from the response with the `200` status
  - removed the required property `updated_at` from the response with the `200` status
  - removed the required property `validity_hours` from the response with the `200` status
  - removed the request property `earnings`
  - removed the request property `end_date`
  - removed the request property `error`
  - removed the request property `metadata`
  - removed the request property `name`
  - removed the request property `start_date`
  - removed the request property `trigger`
  - removed the request property `trigger_limits`
  - removed the request property `validity_hours`
  - removed the optional property `error` from the response with the `200` status
  - added `#/components/schemas/EarningRuleResponse` to the response body `allOf` list for the response status `200`
- **2026-10-13** (v2) `100ea5942966`: 1 warning, 25 info
  - removed `#/components/schemas/EarningRuleUpdateRequest` from the request body `allOf` list
  - added the new optional request property `earnings`
  - added the new optional request property `end_date`
  - added the new optional request property `error`
  - added the new optional request property `metadata`
  - added the new optional request property `name`
  - added the new optional request property `start_date`
  - added the new optional request property `trigger`
  - added the new optional request property `trigger_limits`
  - added the new optional request property `validity_hours`
  - removed `#/components/schemas/EarningRuleResponse` from the response body `allOf` list for the response status `200`
  - added the optional property `error` to the response with the `200` status
  - added the required property `created_at` to the response with the `200` status
  - added the required property `earning_limits` to the response with the `200` status
  - added the required property `earnings` to the response with the `200` status
  - added the required property `end_date` to the response with the `200` status
  - added the required property `id` to the response with the `200` status
  - added the required property `metadata` to the response with the `200` status
  - added the required property `name` to the response with the `200` status
  - added the required property `object` to the response with the `200` status
  - added the required property `start_date` to the response with the `200` status
  - added the required property `status` to the response with the `200` status
  - added the required property `trigger` to the response with the `200` status
  - added the required property `trigger_limits` to the response with the `200` status
  - added the required property `updated_at` to the response with the `200` status
  - added the required property `validity_hours` to the response with the `200` status
- **2026-10-13** (v2) `ed683aacf90a`: 15 breaking, 10 warning, 1 info
  - added `#/components/schemas/EarningRuleUpdateRequest` to the request body `allOf` list
  - removed the required property `created_at` from the response with the `200` status
  - removed the required property `earning_limits` from the response with the `200` status
  - removed the required property `earnings` from the response with the `200` status
  - removed the required property `end_date` from the response with the `200` status
  - removed the required property `id` from the response with the `200` status
  - removed the required property `metadata` from the response with the `200` status
  - removed the required property `name` from the response with the `200` status
  - removed the required property `object` from the response with the `200` status
  - removed the required property `start_date` from the response with the `200` status
  - removed the required property `status` from the response with the `200` status
  - removed the required property `trigger` from the response with the `200` status
  - removed the required property `trigger_limits` from the response with the `200` status
  - removed the required property `updated_at` from the response with the `200` status
  - removed the required property `validity_hours` from the response with the `200` status
  - removed the request property `earnings`
  - removed the request property `end_date`
  - removed the request property `error`
  - removed the request property `metadata`
  - removed the request property `name`
  - removed the request property `start_date`
  - removed the request property `trigger`
  - removed the request property `trigger_limits`
  - removed the request property `validity_hours`
  - removed the optional property `error` from the response with the `200` status
  - added `#/components/schemas/EarningRuleResponse` to the response body `allOf` list for the response status `200`
- **2026-10-12** (v2) `d050da3a1603`: 10 breaking, 18 warning, 40 info
  - added `subschema #2, subschema #3` to the `earnings/items/effects/items/` request property `allOf` list
  - added `subschema #3, subschema #5` to the `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/` request property `allOf` list
  - added `subschema #3, subschema #5` to the `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/` request property `allOf` list
  - the request property `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/earning_activity` became required
  - the request property `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/period` became required
  - the request property `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/earning_activity` became required
  - the request property `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/period` became required
  - the `earnings/items/rules` response's property type changed from no type to `object` for status `200`
  - the `earnings/items/tier_rules` response's property type changed from no type to `object` for status `200`
  - the `error` response's property type changed from no type to `object` for status `200`
  - deleted the `path` request parameter `earningRuleId`
  - removed `subschema #1, subschema #2` from the `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/` request property `allOf` list
  - removed `subschema #1, subschema #2` from the `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/` request property `allOf` list
  - removed `subschema #2, subschema #3` from the `earnings/items/effects/items/` request property `allOf` list
  - removed `subschema #3, subschema #5` from the `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/` request property `allOf` list
  - removed `subschema #3, subschema #5` from the `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/` request property `allOf` list
  - removed the request property `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/custom_activity`
  - removed the request property `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/custom_activity_types`
  - removed the request property `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/spending_activity`
  - removed the request property `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/custom_activity`
  - removed the request property `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/custom_activity_types`
  - removed the request property `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/spending_activity`
  - removed the optional property `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/custom_activity` from the response with the `200` status
  - removed the optional property `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/custom_activity_types` from the response with the `200` status
  - removed the optional property `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/spending_activity` from the response with the `200` status
  - removed the optional property `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/custom_activity` from the response with the `200` status
  - removed the optional property `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/custom_activity_types` from the response with the `200` status
  - removed the optional property `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/spending_activity` from the response with the `200` status
  - added the optional property `earnings/items/tier_rules/any_of` to the response with the `200` status
  - added the optional property `earnings/items/tier_rules/type` to the response with the `200` status
  - added `#/components/schemas/EarningRuleTriggerLimits, subschema #2` to the `trigger_limits` response property `allOf` list for the response status `200`
  - added `subschema #1, subschema #2, subschema #3` to the `earnings/items/tier_rules` response property `allOf` list for the response status `200`
  - added `subschema #2, subschema #3` to the `earnings/items/effects/items/` response property `allOf` list for the response status `200`
  - added `subschema #3, subschema #5` to the `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/` response property `allOf` list for the response status `200`
  - added `subschema #3, subschema #5` to the `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/` response property `allOf` list for the response status `200`
  - removed `subschema #1, subschema #2` from the `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/` response property `allOf` list for the response status `200`
  - removed `subschema #1, subschema #2` from the `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/` response property `allOf` list for the response status `200`
  - removed `subschema #2, subschema #3` from the `earnings/items/effects/items/` response property `allOf` list for the response status `200`
  - removed `subschema #3, subschema #5` from the `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/` response property `allOf` list for the response status `200`
  - removed `subschema #3, subschema #5` from the `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/` response property `allOf` list for the response status `200`
  - …28 more
- **2026-10-12** (v2) `c56e6909b766`: 39 breaking, 5 warning, 26 info
  - added the new path request parameter `earningRuleId`
  - added `subschema #1, subschema #2` to the `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/` request property `allOf` list
  - added `subschema #1, subschema #2` to the `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/` request property `allOf` list
  - added `subschema #2, subschema #3` to the `earnings/items/effects/items/` request property `allOf` list
  - added `subschema #3, subschema #5` to the `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/` request property `allOf` list
  - added `subschema #3, subschema #5` to the `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/` request property `allOf` list
  - the response property `created_at` became optional for the status `200`
  - the response property `earnings` became optional for the status `200`
  - the response property `earnings/items/effects` became optional for the status `200`
  - the response property `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/earning_activity` became optional for the status `200`
  - the response property `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/period` became optional for the status `200`
  - the response property `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/earning_activity` became optional for the status `200`
  - the response property `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/period` became optional for the status `200`
  - the response property `earnings/items/id` became optional for the status `200`
  - the response property `earnings/items/tier_rules` became optional for the status `200`
  - the response property `end_date` became optional for the status `200`
  - the response property `id` became optional for the status `200`
  - the response property `metadata` became optional for the status `200`
  - the response property `name` became optional for the status `200`
  - the response property `object` became optional for the status `200`
  - the response property `start_date` became optional for the status `200`
  - the response property `status` became optional for the status `200`
  - the response property `trigger` became optional for the status `200`
  - the response property `trigger_limits` became optional for the status `200`
  - the response property `updated_at` became optional for the status `200`
  - the response property `validity_hours` became optional for the status `200`
  - the `earnings` response property's minItems was decreased from `1` to `0` for the response status `200`
  - the `earnings/items/effects` response property's minItems was decreased from `1` to `0` for the response status `200`
  - added `#/components/schemas/EarningRuleRulesGroup, subschema #2` to the `earnings/items/rules` response property `oneOf` list for the response status `200`
  - added `#/components/schemas/EarningRuleTierRules, subschema #2` to the `earnings/items/tier_rules` response property `oneOf` list for the response status `200`
  - added `#/components/schemas/EarningRuleTriggerLimits, subschema #2` to the `trigger_limits` response property `oneOf` list for the response status `200`
  - added `#/components/schemas/LoyaltyV2ActivityEarningRuleError, subschema #2` to the `error` response property `oneOf` list for the response status `200`
  - removed the pattern property `^[1-9]\d*$` from the `earnings/items/rules` response property for the status `200`
  - the `earnings/items/rules` response's property type changed from `object` to no type for status `200`
  - the `earnings/items/tier_rules` response's property type changed from `object` to no type for status `200`
  - the `error` response's property type changed from `object` to no type for status `200`
  - removed the required property `earning_limits` from the response with the `200` status
  - removed the required property `earnings/items/rules/logic` from the response with the `200` status
  - removed the required property `error/message` from the response with the `200` status
  - removed `subschema #2, subschema #3` from the `earnings/items/effects/items/` request property `allOf` list
  - …30 more
- **2026-10-12** (v2) `0f9c09c099aa`: 1 warning
  - deleted the `path` request parameter `earningRuleId`
- **2026-10-12** (v2) `1843745ad636`: 1 breaking
  - added the new path request parameter `earningRuleId`
- **2026-10-12** (v2) `c764b0bcbdd4`: 1 warning
  - deleted the `path` request parameter `earningRuleId`
- …earlier changes are on the page: https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/changes/v2/loyalties/earning-rules/:earningRuleId/put

---

[Operation](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/docs/v2/loyalties/earning-rules/:earningRuleId/put.md) - [API](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api.md) - [Page](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/changes/v2/loyalties/earning-rules/:earningRuleId/put)
