---
title: "Changes to Update tier structure"
method: PUT
path: "/v2/loyalties/tier-structures/{tierStructureId}"
---

# Changes to Update tier structure

`PUT /v2/loyalties/tier-structures/{tierStructureId}`

> Every recorded change to this operation, newest first.

## Timeline

Changed in 17 of 211 revisions.

- **2026-10-14** (v2) `d29b33490051`: 15 breaking, 12 warning, 1 info
- **2026-10-14** (v2) `be14b3318eb3`: 5 breaking, 2 warning, 21 info
- **2026-10-14** (v2) `6a418ac8b7b1`: 15 breaking, 12 warning, 1 info
- **2026-10-14** (v2) `ec801ade260d`: 11 breaking, 11 warning, 1 info
- **2026-10-13** (v2) `f95b50556c93`: 2 breaking, 1 warning, 20 info
- **2026-10-13** (v2) `9905dfce1d1e`: 11 breaking, 11 warning, 1 info
- **2026-10-13** (v2) `c59a345c733b`: 2 breaking, 1 warning, 20 info
- **2026-10-13** (v2) `4d4d694f1847`: 11 breaking, 11 warning, 1 info
- **2026-10-13** (v2) `84ad572f8dcb`: 2 breaking, 1 warning, 20 info
- **2026-10-13** (v2) `58624588b18c`: 11 breaking, 11 warning, 1 info
- **2026-10-13** (v2) `100ea5942966`: 2 breaking, 1 warning, 20 info
- **2026-10-13** (v2) `ed683aacf90a`: 11 breaking, 11 warning, 1 info
- **2026-10-07** (v2) `338a5e34004e`: 2 info
- **2026-10-01** (v2) `749b6d105462`: 1 breaking, 1 warning
- **2026-07-31** (v2) `703a0a42ea43`: 3 breaking, 2 warning, 2 info
- **2026-07-17** (v2) `4cbaee5a82d5`: 8 info
- **2026-07-17** (v2) `26ef7b3dd1ef`: 2 breaking, 2 warning

## Changes

- **2026-10-14** (v2) `d29b33490051`: 15 breaking, 12 warning, 1 info
  - added `#/components/schemas/TierStructureSlidingExpirationActivityBase, subschema #2` to the `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration` request property `allOf` list
  - added `#/components/schemas/TierStructureSlidingExpirationActivityBase, subschema #2` to the `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/` request property `allOf` list
  - the `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration` request property type changed from `object` to no type
  - the `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/` request property type changed from `object` to no type
  - the `allOf[#/components/schemas/TierStructure]/` response's property type changed from `object` to no type for status `200`
  - removed the required property `allOf[#/components/schemas/TierStructure]/created_at` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/downgrade` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/expiration` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/id` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/metadata` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/name` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/object` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/status` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/type` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/updated_at` from the response with the `200` status
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration/custom_activity`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration/custom_activity_types`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration/earning_activity`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration/period`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration/spending_activity`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/custom_activity`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/custom_activity_types`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/earning_activity`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/period`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/spending_activity`
  - removed the optional property `allOf[#/components/schemas/TierStructure]/point_balance` from the response with the `200` status
  - removed the optional property `allOf[#/components/schemas/TierStructure]/point_earned` from the response with the `200` status
  - added `#/components/schemas/TierMetadataBase, subschema #2` to the `allOf[#/components/schemas/TierStructure]/` response property `allOf` list for the response status `200`
- **2026-10-14** (v2) `be14b3318eb3`: 5 breaking, 2 warning, 21 info
  - added the new required request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration/period`
  - added the new required request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/period`
  - the `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration` request property type changed from no type to `object`
  - the `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/` request property type changed from no type to `object`
  - the `allOf[#/components/schemas/TierStructure]/` response's property type changed from no type to `object` for status `200`
  - removed `#/components/schemas/TierStructureSlidingExpirationActivityBase, subschema #2` from the `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration` request property `allOf` list
  - removed `#/components/schemas/TierStructureSlidingExpirationActivityBase, subschema #2` from the `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/` request property `allOf` list
  - added the new optional request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration/custom_activity`
  - added the new optional request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration/custom_activity_types`
  - added the new optional request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration/earning_activity`
  - added the new optional request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration/spending_activity`
  - added the new optional request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/custom_activity`
  - added the new optional request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/custom_activity_types`
  - added the new optional request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/earning_activity`
  - added the new optional request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/spending_activity`
  - added the optional property `allOf[#/components/schemas/TierStructure]/point_balance` to the response with the `200` status
  - added the optional property `allOf[#/components/schemas/TierStructure]/point_earned` to the response with the `200` status
  - removed `#/components/schemas/TierMetadataBase, subschema #2` from the `allOf[#/components/schemas/TierStructure]/` response property `allOf` list for the response status `200`
  - added the required property `allOf[#/components/schemas/TierStructure]/created_at` to the response with the `200` status
  - added the required property `allOf[#/components/schemas/TierStructure]/downgrade` to the response with the `200` status
  - added the required property `allOf[#/components/schemas/TierStructure]/expiration` to the response with the `200` status
  - added the required property `allOf[#/components/schemas/TierStructure]/id` to the response with the `200` status
  - added the required property `allOf[#/components/schemas/TierStructure]/metadata` to the response with the `200` status
  - added the required property `allOf[#/components/schemas/TierStructure]/name` to the response with the `200` status
  - added the required property `allOf[#/components/schemas/TierStructure]/object` to the response with the `200` status
  - added the required property `allOf[#/components/schemas/TierStructure]/status` to the response with the `200` status
  - added the required property `allOf[#/components/schemas/TierStructure]/type` to the response with the `200` status
  - added the required property `allOf[#/components/schemas/TierStructure]/updated_at` to the response with the `200` status
- **2026-10-14** (v2) `6a418ac8b7b1`: 15 breaking, 12 warning, 1 info
  - added `#/components/schemas/TierStructureSlidingExpirationActivityBase, subschema #2` to the `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration` request property `allOf` list
  - added `#/components/schemas/TierStructureSlidingExpirationActivityBase, subschema #2` to the `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/` request property `allOf` list
  - the `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration` request property type changed from `object` to no type
  - the `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/` request property type changed from `object` to no type
  - the `allOf[#/components/schemas/TierStructure]/` response's property type changed from `object` to no type for status `200`
  - removed the required property `allOf[#/components/schemas/TierStructure]/created_at` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/downgrade` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/expiration` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/id` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/metadata` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/name` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/object` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/status` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/type` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/TierStructure]/updated_at` from the response with the `200` status
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration/custom_activity`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration/custom_activity_types`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration/earning_activity`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration/period`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/allOf[subschema #5]/then/sliding_expiration/spending_activity`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/custom_activity`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/custom_activity_types`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/earning_activity`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/period`
  - removed the request property `allOf[#/components/schemas/TierStructureUpdateRequest]/expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/sliding_expiration/oneOf[#/components/schemas/TierStructureExpirationSlidingExpirationUpsert]/spending_activity`
  - removed the optional property `allOf[#/components/schemas/TierStructure]/point_balance` from the response with the `200` status
  - removed the optional property `allOf[#/components/schemas/TierStructure]/point_earned` from the response with the `200` status
  - added `#/components/schemas/TierMetadataBase, subschema #2` to the `allOf[#/components/schemas/TierStructure]/` response property `allOf` list for the response status `200`
- **2026-10-14** (v2) `ec801ade260d`: 11 breaking, 11 warning, 1 info
  - added `#/components/schemas/TierStructureUpdateRequest` to the request body `allOf` list
  - removed the required property `created_at` from the response with the `200` status
  - removed the required property `downgrade` from the response with the `200` status
  - removed the required property `expiration` 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 `status` from the response with the `200` status
  - removed the required property `type` from the response with the `200` status
  - removed the required property `updated_at` from the response with the `200` status
  - removed `subschema #1, subschema #2` from the request body `allOf` list
  - deleted the `path` request parameter `tierStructureId`
  - removed the request property `downgrade`
  - removed the request property `expiration`
  - removed the request property `metadata`
  - removed the request property `name`
  - removed the request property `point_balance`
  - removed the request property `point_earned`
  - removed the request property `type`
  - removed the optional property `point_balance` from the response with the `200` status
  - removed the optional property `point_earned` from the response with the `200` status
  - added `#/components/schemas/TierStructure` to the response body `allOf` list for the response status `200`
- **2026-10-13** (v2) `f95b50556c93`: 2 breaking, 1 warning, 20 info
  - added the new path request parameter `tierStructureId`
  - added `subschema #1, subschema #2` to the request body `allOf` list
  - removed `#/components/schemas/TierStructureUpdateRequest` from the request body `allOf` list
  - added the new optional request property `downgrade`
  - added the new optional request property `expiration`
  - added the new optional request property `metadata`
  - added the new optional request property `name`
  - added the new optional request property `point_balance`
  - added the new optional request property `point_earned`
  - added the new optional request property `type`
  - removed `#/components/schemas/TierStructure` from the response body `allOf` list for the response status `200`
  - added the optional property `point_balance` to the response with the `200` status
  - added the optional property `point_earned` to the response with the `200` status
  - added the required property `created_at` to the response with the `200` status
  - added the required property `downgrade` to the response with the `200` status
  - added the required property `expiration` 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 `status` to the response with the `200` status
  - added the required property `type` to the response with the `200` status
  - added the required property `updated_at` to the response with the `200` status
- **2026-10-13** (v2) `9905dfce1d1e`: 11 breaking, 11 warning, 1 info
  - added `#/components/schemas/TierStructureUpdateRequest` to the request body `allOf` list
  - removed the required property `created_at` from the response with the `200` status
  - removed the required property `downgrade` from the response with the `200` status
  - removed the required property `expiration` 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 `status` from the response with the `200` status
  - removed the required property `type` from the response with the `200` status
  - removed the required property `updated_at` from the response with the `200` status
  - removed `subschema #1, subschema #2` from the request body `allOf` list
  - deleted the `path` request parameter `tierStructureId`
  - removed the request property `downgrade`
  - removed the request property `expiration`
  - removed the request property `metadata`
  - removed the request property `name`
  - removed the request property `point_balance`
  - removed the request property `point_earned`
  - removed the request property `type`
  - removed the optional property `point_balance` from the response with the `200` status
  - removed the optional property `point_earned` from the response with the `200` status
  - added `#/components/schemas/TierStructure` to the response body `allOf` list for the response status `200`
- **2026-10-13** (v2) `c59a345c733b`: 2 breaking, 1 warning, 20 info
  - added the new path request parameter `tierStructureId`
  - added `subschema #1, subschema #2` to the request body `allOf` list
  - removed `#/components/schemas/TierStructureUpdateRequest` from the request body `allOf` list
  - added the new optional request property `downgrade`
  - added the new optional request property `expiration`
  - added the new optional request property `metadata`
  - added the new optional request property `name`
  - added the new optional request property `point_balance`
  - added the new optional request property `point_earned`
  - added the new optional request property `type`
  - removed `#/components/schemas/TierStructure` from the response body `allOf` list for the response status `200`
  - added the optional property `point_balance` to the response with the `200` status
  - added the optional property `point_earned` to the response with the `200` status
  - added the required property `created_at` to the response with the `200` status
  - added the required property `downgrade` to the response with the `200` status
  - added the required property `expiration` 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 `status` to the response with the `200` status
  - added the required property `type` to the response with the `200` status
  - added the required property `updated_at` to the response with the `200` status
- **2026-10-13** (v2) `4d4d694f1847`: 11 breaking, 11 warning, 1 info
  - added `#/components/schemas/TierStructureUpdateRequest` to the request body `allOf` list
  - removed the required property `created_at` from the response with the `200` status
  - removed the required property `downgrade` from the response with the `200` status
  - removed the required property `expiration` 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 `status` from the response with the `200` status
  - removed the required property `type` from the response with the `200` status
  - removed the required property `updated_at` from the response with the `200` status
  - removed `subschema #1, subschema #2` from the request body `allOf` list
  - deleted the `path` request parameter `tierStructureId`
  - removed the request property `downgrade`
  - removed the request property `expiration`
  - removed the request property `metadata`
  - removed the request property `name`
  - removed the request property `point_balance`
  - removed the request property `point_earned`
  - removed the request property `type`
  - removed the optional property `point_balance` from the response with the `200` status
  - removed the optional property `point_earned` from the response with the `200` status
  - added `#/components/schemas/TierStructure` to the response body `allOf` list for the response status `200`
- **2026-10-13** (v2) `84ad572f8dcb`: 2 breaking, 1 warning, 20 info
  - added the new path request parameter `tierStructureId`
  - added `subschema #1, subschema #2` to the request body `allOf` list
  - removed `#/components/schemas/TierStructureUpdateRequest` from the request body `allOf` list
  - added the new optional request property `downgrade`
  - added the new optional request property `expiration`
  - added the new optional request property `metadata`
  - added the new optional request property `name`
  - added the new optional request property `point_balance`
  - added the new optional request property `point_earned`
  - added the new optional request property `type`
  - removed `#/components/schemas/TierStructure` from the response body `allOf` list for the response status `200`
  - added the optional property `point_balance` to the response with the `200` status
  - added the optional property `point_earned` to the response with the `200` status
  - added the required property `created_at` to the response with the `200` status
  - added the required property `downgrade` to the response with the `200` status
  - added the required property `expiration` 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 `status` to the response with the `200` status
  - added the required property `type` to the response with the `200` status
  - added the required property `updated_at` to the response with the `200` status
- **2026-10-13** (v2) `58624588b18c`: 11 breaking, 11 warning, 1 info
  - added `#/components/schemas/TierStructureUpdateRequest` to the request body `allOf` list
  - removed the required property `created_at` from the response with the `200` status
  - removed the required property `downgrade` from the response with the `200` status
  - removed the required property `expiration` 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 `status` from the response with the `200` status
  - removed the required property `type` from the response with the `200` status
  - removed the required property `updated_at` from the response with the `200` status
  - removed `subschema #1, subschema #2` from the request body `allOf` list
  - deleted the `path` request parameter `tierStructureId`
  - removed the request property `downgrade`
  - removed the request property `expiration`
  - removed the request property `metadata`
  - removed the request property `name`
  - removed the request property `point_balance`
  - removed the request property `point_earned`
  - removed the request property `type`
  - removed the optional property `point_balance` from the response with the `200` status
  - removed the optional property `point_earned` from the response with the `200` status
  - added `#/components/schemas/TierStructure` to the response body `allOf` list for the response status `200`
- **2026-10-13** (v2) `100ea5942966`: 2 breaking, 1 warning, 20 info
  - added the new path request parameter `tierStructureId`
  - added `subschema #1, subschema #2` to the request body `allOf` list
  - removed `#/components/schemas/TierStructureUpdateRequest` from the request body `allOf` list
  - added the new optional request property `downgrade`
  - added the new optional request property `expiration`
  - added the new optional request property `metadata`
  - added the new optional request property `name`
  - added the new optional request property `point_balance`
  - added the new optional request property `point_earned`
  - added the new optional request property `type`
  - removed `#/components/schemas/TierStructure` from the response body `allOf` list for the response status `200`
  - added the optional property `point_balance` to the response with the `200` status
  - added the optional property `point_earned` to the response with the `200` status
  - added the required property `created_at` to the response with the `200` status
  - added the required property `downgrade` to the response with the `200` status
  - added the required property `expiration` 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 `status` to the response with the `200` status
  - added the required property `type` to the response with the `200` status
  - added the required property `updated_at` to the response with the `200` status
- **2026-10-13** (v2) `ed683aacf90a`: 11 breaking, 11 warning, 1 info
  - added `#/components/schemas/TierStructureUpdateRequest` to the request body `allOf` list
  - removed the required property `created_at` from the response with the `200` status
  - removed the required property `downgrade` from the response with the `200` status
  - removed the required property `expiration` 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 `status` from the response with the `200` status
  - removed the required property `type` from the response with the `200` status
  - removed the required property `updated_at` from the response with the `200` status
  - removed `subschema #1, subschema #2` from the request body `allOf` list
  - deleted the `path` request parameter `tierStructureId`
  - removed the request property `downgrade`
  - removed the request property `expiration`
  - removed the request property `metadata`
  - removed the request property `name`
  - removed the request property `point_balance`
  - removed the request property `point_earned`
  - removed the request property `type`
  - removed the optional property `point_balance` from the response with the `200` status
  - removed the optional property `point_earned` from the response with the `200` status
  - added `#/components/schemas/TierStructure` to the response body `allOf` list for the response status `200`
- **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-01** (v2) `749b6d105462`: 1 breaking, 1 warning
  - added the new path request parameter `tierStructureId`
  - deleted the `path` request parameter `id`
- **2026-07-31** (v2) `703a0a42ea43`: 3 breaking, 2 warning, 2 info
  - added `subschema #1, subschema #2` to the request body `allOf` list
  - the `type` request property const value changed from `NO_EXPIRATION` to `NO_RETENTION`
  - removed the enum value `NO_EXPIRATION` of the request property `expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/type`
  - removed `subschema #1, subschema #2` from the request body `allOf` list
  - added the new `NO_RETENTION` enum value to the `expiration/type` response property for the response status `200`
  - added the new `NO_RETENTION` enum value to the request property `expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/type`
  - removed the `NO_EXPIRATION` enum value from the `expiration/type` response property for the response status `200`
- **2026-07-17** (v2) `4cbaee5a82d5`: 8 info
  - added the optional property `resource_id` to the response with the `400` status
  - added the optional property `resource_id` to the response with the `404` status
  - added the optional property `resource_id` to the response with the `409` status
  - added the optional property `resource_id` to the response with the `500` status
  - added the optional property `resource_type` to the response with the `400` status
  - added the optional property `resource_type` to the response with the `404` status
  - added the optional property `resource_type` to the response with the `409` status
  - added the optional property `resource_type` to the response with the `500` status
- **2026-07-17** (v2) `26ef7b3dd1ef`: 2 breaking, 2 warning
  - added `subschema #1, subschema #2` to the request body `allOf` list
  - added `subschema #3, subschema #4, subschema #5` to the `expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/` request property `allOf` list
  - removed `subschema #1, subschema #2` from the request body `allOf` list
  - removed `subschema #3, subschema #4, subschema #5` from the `expiration/oneOf[#/components/schemas/TierStructureExpirationUpsert]/` request property `allOf` list

---

[Operation](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/docs/v2/loyalties/tier-structures/:tierStructureId/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/tier-structures/:tierStructureId/put)
