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

# Changes to Get earning rule

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

> Every recorded change to this operation, newest first.

## Timeline

Changed in 23 of 211 revisions.

- **2026-10-14** (v2) `d29b33490051`: 8 breaking, 8 info
- **2026-10-14** (v2) `be14b3318eb3`: 4 breaking, 12 info
- **2026-10-14** (v2) `6a418ac8b7b1`: 8 breaking, 8 info
- **2026-10-12** (v2) `d050da3a1603`: 15 warning, 3 info
- **2026-10-12** (v2) `c56e6909b766`: 1 breaking, 17 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`: 14 warning, 3 info
- **2026-10-09** (v2) `2e03ae2170c5`: 17 info
- **2026-10-09** (v2) `36f198b8c5d5`: 14 breaking, 1 warning, 1 info
- **2026-10-09** (v2) `e4586926a399`: 6 warning, 12 info
- **2026-10-09** (v2) `80283884ce89`: 3 breaking, 30 info
- **2026-10-09** (v2) `8fcaa611eeaf`: 29 breaking, 2 warning, 4 info
- **2026-10-09** (v2) `1293925d79e2`: 3 breaking, 30 info
- **2026-10-09** (v2) `c7ebd351d2e3`: 29 breaking, 2 warning, 4 info
- **2026-10-09** (v2) `cd26c1c8148a`: 3 breaking, 30 info
- **2026-10-07** (v2) `338a5e34004e`: 2 info
- **2026-10-06** (v2) `b50db1d1d5fe`: 10 breaking, 16 info
- **2026-10-01** (v2) `749b6d105462`: 1 breaking, 1 warning
- **2026-07-31** (v2) `703a0a42ea43`: 8 info
- **2026-07-17** (v2) `4cbaee5a82d5`: 8 info
- **2026-07-17** (v2) `26ef7b3dd1ef`: 8 info

## Changes

- **2026-10-14** (v2) `d29b33490051`: 8 breaking, 8 info
  - 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
  - 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`: 4 breaking, 12 info
  - 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`
  - 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`: 8 breaking, 8 info
  - 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
  - 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-12** (v2) `d050da3a1603`: 15 warning, 3 info
  - deleted the `path` request parameter `earningRuleId`
  - removed the optional property `created_at` from the response with the `200` status
  - removed the optional property `earnings` from the response with the `200` status
  - removed the optional property `end_date` from the response with the `200` status
  - removed the optional property `error` from the response with the `200` status
  - removed the optional property `id` from the response with the `200` status
  - removed the optional property `metadata` from the response with the `200` status
  - removed the optional property `name` from the response with the `200` status
  - removed the optional property `object` from the response with the `200` status
  - removed the optional property `start_date` from the response with the `200` status
  - removed the optional property `status` from the response with the `200` status
  - removed the optional property `trigger` from the response with the `200` status
  - removed the optional property `trigger_limits` from the response with the `200` status
  - removed the optional property `updated_at` from the response with the `200` status
  - removed the optional property `validity_hours` from the response with the `200` status
  - added `#/components/schemas/EarningRuleResponse` to the response body `allOf` list for the response status `200`
  - removed the non-success response with the status `400`
  - removed the non-success response with the status `409`
- **2026-10-12** (v2) `c56e6909b766`: 1 breaking, 17 info
  - added the new path request parameter `earningRuleId`
  - removed `#/components/schemas/EarningRuleResponse` from the response body `allOf` list for the response status `200`
  - added the non-success response with the status `400`
  - added the non-success response with the status `409`
  - added the optional property `created_at` to the response with the `200` status
  - added the optional property `earnings` to the response with the `200` status
  - added the optional property `end_date` to the response with the `200` status
  - added the optional property `error` to the response with the `200` status
  - added the optional property `id` to the response with the `200` status
  - added the optional property `metadata` to the response with the `200` status
  - added the optional property `name` to the response with the `200` status
  - added the optional property `object` to the response with the `200` status
  - added the optional property `start_date` to the response with the `200` status
  - added the optional property `status` to the response with the `200` status
  - added the optional property `trigger` to the response with the `200` status
  - added the optional property `trigger_limits` to the response with the `200` status
  - added the optional property `updated_at` to the response with the `200` status
  - added the optional property `validity_hours` to the response with the `200` status
- **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`
- **2026-10-12** (v2) `1ff051999cd4`: 14 warning, 3 info
  - removed the optional property `created_at` from the response with the `200` status
  - removed the optional property `earnings` from the response with the `200` status
  - removed the optional property `end_date` from the response with the `200` status
  - removed the optional property `error` from the response with the `200` status
  - removed the optional property `id` from the response with the `200` status
  - removed the optional property `metadata` from the response with the `200` status
  - removed the optional property `name` from the response with the `200` status
  - removed the optional property `object` from the response with the `200` status
  - removed the optional property `start_date` from the response with the `200` status
  - removed the optional property `status` from the response with the `200` status
  - removed the optional property `trigger` from the response with the `200` status
  - removed the optional property `trigger_limits` from the response with the `200` status
  - removed the optional property `updated_at` from the response with the `200` status
  - removed the optional property `validity_hours` from the response with the `200` status
  - added `#/components/schemas/EarningRuleResponse` to the response body `allOf` list for the response status `200`
  - removed the non-success response with the status `400`
  - removed the non-success response with the status `409`
- **2026-10-09** (v2) `2e03ae2170c5`: 17 info
  - removed `#/components/schemas/EarningRuleResponse` from the response body `allOf` list for the response status `200`
  - added the non-success response with the status `400`
  - added the non-success response with the status `409`
  - added the optional property `created_at` to the response with the `200` status
  - added the optional property `earnings` to the response with the `200` status
  - added the optional property `end_date` to the response with the `200` status
  - added the optional property `error` to the response with the `200` status
  - added the optional property `id` to the response with the `200` status
  - added the optional property `metadata` to the response with the `200` status
  - added the optional property `name` to the response with the `200` status
  - added the optional property `object` to the response with the `200` status
  - added the optional property `start_date` to the response with the `200` status
  - added the optional property `status` to the response with the `200` status
  - added the optional property `trigger` to the response with the `200` status
  - added the optional property `trigger_limits` to the response with the `200` status
  - added the optional property `updated_at` to the response with the `200` status
  - added the optional property `validity_hours` to the response with the `200` status
- **2026-10-09** (v2) `36f198b8c5d5`: 14 breaking, 1 warning, 1 info
  - 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 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-09** (v2) `e4586926a399`: 6 warning, 12 info
  - 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 `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`
  - the response property `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/sliding_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationSlidingExpiration]/earning_activity` became required 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 required 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 required 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 required for the status `200`
- **2026-10-09** (v2) `80283884ce89`: 3 breaking, 30 info
  - 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`
  - removed the non-success response with the status `400`
  - removed the non-success response with the status `409`
  - 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`
  - the response property `created_at` became required for the status `200`
  - the response property `earnings` became required for the status `200`
  - the response property `earnings/items/effects` became required for the status `200`
  - the response property `earnings/items/id` became required for the status `200`
  - the response property `earnings/items/tier_rules` became required for the status `200`
  - the response property `end_date` became required for the status `200`
  - the response property `id` became required for the status `200`
  - the response property `metadata` became required for the status `200`
  - the response property `name` became required for the status `200`
  - the response property `object` became required for the status `200`
  - the response property `start_date` became required for the status `200`
  - the response property `status` became required for the status `200`
  - the response property `trigger` became required for the status `200`
  - the response property `trigger_limits` became required for the status `200`
  - the response property `updated_at` became required for the status `200`
  - the response property `validity_hours` became required for the status `200`
  - removed `#/components/schemas/EarningRuleRulesGroup, subschema #2` from the `earnings/items/rules` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleTierRules, subschema #2` from the `earnings/items/tier_rules` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleTriggerLimits, subschema #2` from the `trigger_limits` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/LoyaltyV2ActivityEarningRuleError, subschema #2` from the `error` response property `oneOf` list for the response status `200`
  - added the pattern property `^[1-9]\d*$` to the `earnings/items/rules` response property for the status `200`
  - added the required property `earning_limits` to the response with the `200` status
  - added the required property `earnings/items/rules/logic` to the response with the `200` status
  - added the required property `error/message` to the response with the `200` status
- **2026-10-09** (v2) `8fcaa611eeaf`: 29 breaking, 2 warning, 4 info
  - 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/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 the optional property `earnings/items/tier_rules/any_of` from the response with the `200` status
  - removed the optional property `earnings/items/tier_rules/type` from the response with the `200` status
  - added the non-success response with the status `400`
  - added the non-success response with the status `409`
  - removed `#/components/schemas/EarningRuleTriggerLimits, subschema #2` from the `trigger_limits` response property `allOf` list for the response status `200`
  - removed `subschema #1, subschema #2, subschema #3` from the `earnings/items/tier_rules` response property `allOf` list for the response status `200`
- **2026-10-09** (v2) `1293925d79e2`: 3 breaking, 30 info
  - 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`
  - removed the non-success response with the status `400`
  - removed the non-success response with the status `409`
  - 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`
  - the response property `created_at` became required for the status `200`
  - the response property `earnings` became required for the status `200`
  - the response property `earnings/items/effects` became required for the status `200`
  - the response property `earnings/items/id` became required for the status `200`
  - the response property `earnings/items/tier_rules` became required for the status `200`
  - the response property `end_date` became required for the status `200`
  - the response property `id` became required for the status `200`
  - the response property `metadata` became required for the status `200`
  - the response property `name` became required for the status `200`
  - the response property `object` became required for the status `200`
  - the response property `start_date` became required for the status `200`
  - the response property `status` became required for the status `200`
  - the response property `trigger` became required for the status `200`
  - the response property `trigger_limits` became required for the status `200`
  - the response property `updated_at` became required for the status `200`
  - the response property `validity_hours` became required for the status `200`
  - removed `#/components/schemas/EarningRuleRulesGroup, subschema #2` from the `earnings/items/rules` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleTierRules, subschema #2` from the `earnings/items/tier_rules` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleTriggerLimits, subschema #2` from the `trigger_limits` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/LoyaltyV2ActivityEarningRuleError, subschema #2` from the `error` response property `oneOf` list for the response status `200`
  - added the pattern property `^[1-9]\d*$` to the `earnings/items/rules` response property for the status `200`
  - added the required property `earning_limits` to the response with the `200` status
  - added the required property `earnings/items/rules/logic` to the response with the `200` status
  - added the required property `error/message` to the response with the `200` status
- **2026-10-09** (v2) `c7ebd351d2e3`: 29 breaking, 2 warning, 4 info
  - 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/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 the optional property `earnings/items/tier_rules/any_of` from the response with the `200` status
  - removed the optional property `earnings/items/tier_rules/type` from the response with the `200` status
  - added the non-success response with the status `400`
  - added the non-success response with the status `409`
  - removed `#/components/schemas/EarningRuleTriggerLimits, subschema #2` from the `trigger_limits` response property `allOf` list for the response status `200`
  - removed `subschema #1, subschema #2, subschema #3` from the `earnings/items/tier_rules` response property `allOf` list for the response status `200`
- **2026-10-09** (v2) `cd26c1c8148a`: 3 breaking, 30 info
  - 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`
  - removed the non-success response with the status `400`
  - removed the non-success response with the status `409`
  - 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`
  - the response property `created_at` became required for the status `200`
  - the response property `earnings` became required for the status `200`
  - the response property `earnings/items/effects` became required for the status `200`
  - the response property `earnings/items/id` became required for the status `200`
  - the response property `earnings/items/tier_rules` became required for the status `200`
  - the response property `end_date` became required for the status `200`
  - the response property `id` became required for the status `200`
  - the response property `metadata` became required for the status `200`
  - the response property `name` became required for the status `200`
  - the response property `object` became required for the status `200`
  - the response property `start_date` became required for the status `200`
  - the response property `status` became required for the status `200`
  - the response property `trigger` became required for the status `200`
  - the response property `trigger_limits` became required for the status `200`
  - the response property `updated_at` became required for the status `200`
  - the response property `validity_hours` became required for the status `200`
  - removed `#/components/schemas/EarningRuleRulesGroup, subschema #2` from the `earnings/items/rules` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleTierRules, subschema #2` from the `earnings/items/tier_rules` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleTriggerLimits, subschema #2` from the `trigger_limits` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/LoyaltyV2ActivityEarningRuleError, subschema #2` from the `error` response property `oneOf` list for the response status `200`
  - added the pattern property `^[1-9]\d*$` to the `earnings/items/rules` response property for the status `200`
  - added the required property `earning_limits` to the response with the `200` status
  - added the required property `earnings/items/rules/logic` to the response with the `200` status
  - added the required property `error/message` to the response with the `200` status
- **2026-10-07** (v2) `338a5e34004e`: 2 info
  - the endpoint scheme security `X-App-Id AND X-App-Token` was added to the API
  - the endpoint scheme security `bearerAuth` was added to the API
- **2026-10-06** (v2) `b50db1d1d5fe`: 10 breaking, 16 info
  - added `#/components/schemas/LoyaltyV2ActivityEarningRuleConditionObject` to the `earnings/items/rules/oneOf[#/components/schemas/EarningRuleRulesGroup]/patternProperties[^[1-9]\d*$]/conditions/patternProperties[^(\$is|\$is_not|\$in|\$not_in|\$less_than|\$less_than_or_equal|\$more_than|\$more_than_or_equal|\$from)$]/items/` response property `oneOf` list for the response status `200`
  - added `#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpirationRollingExpirationRounding` to the `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/allOf[subschema #3]/then/rolling_expiration/rounding` response property `oneOf` list for the response status `200`
  - added `#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpirationRollingExpirationRounding` to the `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/rolling_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationRollingExpiration]/rounding` response property `oneOf` list for the response status `200`
  - added `#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpirationRollingExpirationRounding` to the `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/allOf[subschema #3]/then/rolling_expiration/rounding` response property `oneOf` list for the response status `200`
  - added `#/components/schemas/LoyaltyV2ActivityEarningRuleEffectPointsExpirationRollingExpirationRounding` to the `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/rolling_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationRollingExpiration]/rounding` response property `oneOf` list for the response status `200`
  - added `#/components/schemas/LoyaltyV2ActivityEarningRuleError` to the `earnings/items/rules/oneOf[#/components/schemas/EarningRuleRulesGroup]/patternProperties[^[1-9]\d*$]/error` response property `oneOf` list for the response status `200`
  - added `#/components/schemas/LoyaltyV2ActivityEarningRuleError` to the `error` response property `oneOf` list for the response status `200`
  - added `#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerCustomEvent` to the `trigger/custom_event` response property `oneOf` list for the response status `200`
  - added `#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerLimitsFrequencyLimitTimeBasedCurrentPeriod` to the `trigger_limits/oneOf[#/components/schemas/EarningRuleTriggerLimits]/frequency/oneOf[#/components/schemas/EarningRuleTriggerLimitsFrequency]/limits/oneOf[subschema #2]/items/oneOf[subschema #1]/period/current_period` response property `oneOf` list for the response status `200`
  - added `#/components/schemas/LoyaltyV2ActivityEarningRuleTriggerSegment` to the `trigger/segment` response property `oneOf` 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 #2, subschema #3` to the `trigger_limits/oneOf[#/components/schemas/EarningRuleTriggerLimits]/frequency/oneOf[#/components/schemas/EarningRuleTriggerLimitsFrequency]/` response property `allOf` list for the response status `200`
  - added `subschema #4, subschema #5` to the `earnings/items/effects/items/points_proportional` 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 #2, subschema #3` from the `trigger_limits/oneOf[#/components/schemas/EarningRuleTriggerLimits]/frequency/oneOf[#/components/schemas/EarningRuleTriggerLimitsFrequency]/` response property `allOf` list for the response status `200`
  - removed `subschema #4, subschema #5` from the `earnings/items/effects/items/points_proportional` response property `allOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleConditionObject` from the `earnings/items/rules/oneOf[#/components/schemas/EarningRuleRulesGroup]/patternProperties[^[1-9]\d*$]/conditions/patternProperties[^(\$is|\$is_not|\$in|\$not_in|\$less_than|\$less_than_or_equal|\$more_than|\$more_than_or_equal|\$from)$]/items/` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleEffectPointsExpirationRollingExpirationRounding` from the `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/allOf[subschema #3]/then/rolling_expiration/rounding` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleEffectPointsExpirationRollingExpirationRounding` from the `earnings/items/effects/items/points/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/rolling_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationRollingExpiration]/rounding` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleEffectPointsExpirationRollingExpirationRounding` from the `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/allOf[subschema #3]/then/rolling_expiration/rounding` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleEffectPointsExpirationRollingExpirationRounding` from the `earnings/items/effects/items/points_proportional/points_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpiration]/rolling_expiration/oneOf[#/components/schemas/EarningRuleEffectPointsExpirationRollingExpiration]/rounding` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleError` from the `earnings/items/rules/oneOf[#/components/schemas/EarningRuleRulesGroup]/patternProperties[^[1-9]\d*$]/error` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleError` from the `error` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleTriggerCustomEvent` from the `trigger/custom_event` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleTriggerLimitsFrequencyLimitTimeBasedCurrentPeriod` from the `trigger_limits/oneOf[#/components/schemas/EarningRuleTriggerLimits]/frequency/oneOf[#/components/schemas/EarningRuleTriggerLimitsFrequency]/limits/oneOf[subschema #2]/items/oneOf[subschema #1]/period/current_period` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/EarningRuleTriggerSegment` from the `trigger/segment` response property `oneOf` list for the response status `200`
- **2026-10-01** (v2) `749b6d105462`: 1 breaking, 1 warning
  - added the new path request parameter `earningRuleId`
  - deleted the `path` request parameter `id`
- …earlier changes are on the page: https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/changes/v2/loyalties/earning-rules/:earningRuleId/get

---

[Operation](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/docs/v2/loyalties/earning-rules/:earningRuleId/get.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/get)
