# Updates a expiration rule set with the specified ID.

This method will update an existing expiration rule set with the specified ID.

Endpoint: PUT /expirationRuleSets/{tenantId}/{id}
Version: v1-2025-04-18
Security: knox-authorizer

## Security:

  - `knox-authorizer` (unknown)
    http bearer JWT

## Path parameters:

  - `tenantId` (string, required)
    The id of the tenant being accessed.

  - `id` (string, required)
    The ID of the expiration rule set to update.

## Request body:

  - `application/json` (unknown)
    The updated expiration rule set that will be saved.

## Request fields (application/json):

  - `default_expiration_options` (object, required)
    The default expiration logic when no rules have been met

  - `default_expiration_options.allow_reinstatement` (boolean)
    Whether or not reinstatement is allowed

  - `default_expiration_options.anniversary_expiration_options` (object)

  - `default_expiration_options.anniversary_expiration_options.allow_mid_month_expirations` (boolean)
    If true, a members' subscription will expire on the same day it was purchased, and can expire mid month. Usually sell_for_next_month_after is set to null when this option is used.

  - `default_expiration_options.anniversary_expiration_options.enable_fixed_expiration_dates` (boolean)
    If set, anniversary dates will be limited to specific dates based on the original join date

  - `default_expiration_options.anniversary_expiration_options.fixed_expiration_dates` (array)

  - `default_expiration_options.anniversary_expiration_options.sell_for_next_month_after` (number)
    Day of the month after which, subscription starts on the next month. If null, subscription always starts in the current month

  - `default_expiration_options.anniversary_expiration_options.term_length` (number)
    Length of subscription

  - `default_expiration_options.anniversary_expiration_options.term_type` (string)
    Enum: "days", "months", "quarters", "weeks", "years"

  - `default_expiration_options.calendar_expiration_options` (object)

  - `default_expiration_options.calendar_expiration_options.number_of_years` (number)
    The number of years

  - `default_expiration_options.calendar_expiration_options.sell_for_next_year_after` (string)
    The month/day after which, the subscription should extend until the end of the next calendar year. Leave blank to never extend until the next year

  - `default_expiration_options.calendar_expiration_options.start_of_calendar_year` (number, required)
    The month, from 1-12, that indicates the start of the calendar year

  - `default_expiration_options.expiration_type` (string, required)
    How the expiration is calculated
    Enum: "anniversary", "calendar", "none"

  - `default_expiration_options.grace_period` (number)
    Number of days after expiration in which this a person with this subscription. If not set, the global grace setting is used

  - `default_expiration_options.reinstatement_options` (object)

  - `default_expiration_options.reinstatement_options.give_renewal_pricing_during_reinstatement_period` (boolean)
    If true, a reinstated member only pays renewal pricing

  - `default_expiration_options.reinstatement_options.reinstatement_period` (number)
    Number of days after termination after which a person can be reinstated - leave blank for an indefinite time period

  - `id` (string, required)
    The unique, string identifier of this expiration rule set

  - `is_active` (boolean)
    Whether or not this expiration rule set is active

  - `name` (string, required)
    The name of the expiration rule set

  - `rules` (array)

  - `rules.expiration_options` (object)

  - `rules.expiration_options.allow_reinstatement` (boolean)
    Whether or not reinstatement is allowed

  - `rules.expiration_options.anniversary_expiration_options` (object)

  - `rules.expiration_options.anniversary_expiration_options.allow_mid_month_expirations` (boolean)
    If true, a members' subscription will expire on the same day it was purchased, and can expire mid month. Usually sell_for_next_month_after is set to null when this option is used.

  - `rules.expiration_options.anniversary_expiration_options.enable_fixed_expiration_dates` (boolean)
    If set, anniversary dates will be limited to specific dates based on the original join date

  - `rules.expiration_options.anniversary_expiration_options.fixed_expiration_dates` (array)

  - `rules.expiration_options.anniversary_expiration_options.sell_for_next_month_after` (number)
    Day of the month after which, subscription starts on the next month. If null, subscription always starts in the current month

  - `rules.expiration_options.anniversary_expiration_options.term_length` (number)
    Length of subscription

  - `rules.expiration_options.anniversary_expiration_options.term_type` (string)
    Enum: "days", "months", "quarters", "weeks", "years"

  - `rules.expiration_options.calendar_expiration_options` (object)

  - `rules.expiration_options.calendar_expiration_options.number_of_years` (number)
    The number of years

  - `rules.expiration_options.calendar_expiration_options.sell_for_next_year_after` (string)
    The month/day after which, the subscription should extend until the end of the next calendar year. Leave blank to never extend until the next year

  - `rules.expiration_options.calendar_expiration_options.start_of_calendar_year` (number, required)
    The month, from 1-12, that indicates the start of the calendar year

  - `rules.expiration_options.expiration_type` (string, required)
    How the expiration is calculated
    Enum: "anniversary", "calendar", "none"

  - `rules.expiration_options.grace_period` (number)
    Number of days after expiration in which this a person with this subscription. If not set, the global grace setting is used

  - `rules.expiration_options.reinstatement_options` (object)

  - `rules.expiration_options.reinstatement_options.give_renewal_pricing_during_reinstatement_period` (boolean)
    If true, a reinstated member only pays renewal pricing

  - `rules.expiration_options.reinstatement_options.reinstatement_period` (number)
    Number of days after termination after which a person can be reinstated - leave blank for an indefinite time period

  - `rules.is_enabled` (boolean)
    Whether or not this rule is enabled

  - `rules.matching_conditions` (object)
    The conditions upon which this expiration rule applies. If not set, then this expiration rule always applies

  - `rules.matching_conditions.all` (array)

  - `rules.matching_conditions.all.all` (object)

  - `rules.matching_conditions.all.any` (object)

  - `rules.matching_conditions.all.fact` (string)
    The piece of data being examined

  - `rules.matching_conditions.all.operator` (string)
    The operator
    Enum: "contains", "containsString", "doesNotContain", "equal", "greaterThan", "greaterThanInclusive", "in", "isBlank", "isNotBlank", "lessThan", "lessThanInclusive", "matchesPatter", "notContainsString", "notEqual", "notIn", "regex"

  - `rules.matching_conditions.all.path` (string)
    The path of the value being tested

  - `rules.matching_conditions.all.value` (string)

  - `rules.matching_conditions.any` (array)

  - `rules.matching_conditions.any.all` (object)

  - `rules.matching_conditions.any.any` (object)

  - `rules.matching_conditions.any.fact` (string)
    The piece of data being examined

  - `rules.matching_conditions.any.operator` (string)
    The operator
    Enum: "contains", "containsString", "doesNotContain", "equal", "greaterThan", "greaterThanInclusive", "in", "isBlank", "isNotBlank", "lessThan", "lessThanInclusive", "matchesPatter", "notContainsString", "notEqual", "notIn", "regex"

  - `rules.matching_conditions.any.path` (string)
    The path of the value being tested

  - `rules.matching_conditions.any.value` (string)

  - `rules.name` (string, required)
    The name of the rule

  - `sys_bulk_load_at` (string)
    If this record was loaded via bulk, the timestamp when the record was processed

  - `sys_bulk_load_id` (string)
    If this record was loaded via bulk, the ID of the bulk load process

  - `sys_bulk_load_pk` (string)
    If this record was loaded via bulk, the tenant and key of the bulk load process used as a partition key

  - `sys_bulk_load_record_no` (number)
    If this record was loaded via bulk, the record number in the source file

  - `sys_bulk_load_source_file` (string)
    If this record was loaded via bulk, the source file

  - `sys_calculated_field_error` (string)
    The error associated with the calculated field

  - `sys_calculated_field_errors` (array)

  - `sys_calculated_field_errors.error` (string)

  - `sys_calculated_field_errors.field` (string)

  - `sys_configuration_snapshot_id` (string)
    If a snapshot was restored/applies to this record, the ID of the snapshot

  - `sys_created_at` (string, required)
    The date/time that this record was created, expressed in ISO-8601 date format

  - `sys_created_by_id` (string, required)
    The ID of the user that created this record

  - `sys_deleted_by_id` (string)
    The ID of the user that deleted (or last tried to delete) this object

  - `sys_directive` (string)
    Means for passing directive information into an object processing logic

  - `sys_external_id` (string)
    The ID that a record has from an external system or data import

  - `sys_has_files_in_s3` (boolean)
    If true, this record has files in S3. If false, it doesnt, so no need to hit S3 upon deletion

  - `sys_last_bulk_data_operation_id` (string)
    If this record was last touched by a bulk data operation, the ID of that operation

  - `sys_last_bulk_data_operation_sys_version` (string)
    If this record was last touched by a bulk data operation, the sys_version at the time of that operation

  - `sys_last_modified_at` (string, required)
    The date/time that this record record was last modified, expressed in ISO-8601 date format

  - `sys_last_modified_by_id` (string, required)
    The ID of the user that last modified this record

  - `sys_last_security_context` (object)
    The security context of the last insert, modify, or delete performed on this item

  - `sys_locked` (boolean)
    If set, this record is locked and cannot be changed via the API

  - `sys_snapshot_base_version` (number)
    The version to use as a base when creating a configuration snapshot; if not set, 1 is used. Helpful when creating a sandbox

  - `sys_version` (number)
    A number representing the version of this record in the database

## Response 200:

  - `200` (unknown)
    The expiration rule set was updated successfully.

## Response 200 fields (application/json):

  - `default_expiration_options` (object, required)
    The default expiration logic when no rules have been met

  - `default_expiration_options.allow_reinstatement` (boolean)
    Whether or not reinstatement is allowed

  - `default_expiration_options.anniversary_expiration_options` (object)

  - `default_expiration_options.anniversary_expiration_options.allow_mid_month_expirations` (boolean)
    If true, a members' subscription will expire on the same day it was purchased, and can expire mid month. Usually sell_for_next_month_after is set to null when this option is used.

  - `default_expiration_options.anniversary_expiration_options.enable_fixed_expiration_dates` (boolean)
    If set, anniversary dates will be limited to specific dates based on the original join date

  - `default_expiration_options.anniversary_expiration_options.fixed_expiration_dates` (array)

  - `default_expiration_options.anniversary_expiration_options.sell_for_next_month_after` (number)
    Day of the month after which, subscription starts on the next month. If null, subscription always starts in the current month

  - `default_expiration_options.anniversary_expiration_options.term_length` (number)
    Length of subscription

  - `default_expiration_options.anniversary_expiration_options.term_type` (string)
    Enum: "days", "months", "quarters", "weeks", "years"

  - `default_expiration_options.calendar_expiration_options` (object)

  - `default_expiration_options.calendar_expiration_options.number_of_years` (number)
    The number of years

  - `default_expiration_options.calendar_expiration_options.sell_for_next_year_after` (string)
    The month/day after which, the subscription should extend until the end of the next calendar year. Leave blank to never extend until the next year

  - `default_expiration_options.calendar_expiration_options.start_of_calendar_year` (number, required)
    The month, from 1-12, that indicates the start of the calendar year

  - `default_expiration_options.expiration_type` (string, required)
    How the expiration is calculated
    Enum: "anniversary", "calendar", "none"

  - `default_expiration_options.grace_period` (number)
    Number of days after expiration in which this a person with this subscription. If not set, the global grace setting is used

  - `default_expiration_options.reinstatement_options` (object)

  - `default_expiration_options.reinstatement_options.give_renewal_pricing_during_reinstatement_period` (boolean)
    If true, a reinstated member only pays renewal pricing

  - `default_expiration_options.reinstatement_options.reinstatement_period` (number)
    Number of days after termination after which a person can be reinstated - leave blank for an indefinite time period

  - `id` (string, required)
    The unique, string identifier of this expiration rule set

  - `is_active` (boolean)
    Whether or not this expiration rule set is active

  - `name` (string, required)
    The name of the expiration rule set

  - `rules` (array)

  - `rules.expiration_options` (object)

  - `rules.expiration_options.allow_reinstatement` (boolean)
    Whether or not reinstatement is allowed

  - `rules.expiration_options.anniversary_expiration_options` (object)

  - `rules.expiration_options.anniversary_expiration_options.allow_mid_month_expirations` (boolean)
    If true, a members' subscription will expire on the same day it was purchased, and can expire mid month. Usually sell_for_next_month_after is set to null when this option is used.

  - `rules.expiration_options.anniversary_expiration_options.enable_fixed_expiration_dates` (boolean)
    If set, anniversary dates will be limited to specific dates based on the original join date

  - `rules.expiration_options.anniversary_expiration_options.fixed_expiration_dates` (array)

  - `rules.expiration_options.anniversary_expiration_options.sell_for_next_month_after` (number)
    Day of the month after which, subscription starts on the next month. If null, subscription always starts in the current month

  - `rules.expiration_options.anniversary_expiration_options.term_length` (number)
    Length of subscription

  - `rules.expiration_options.anniversary_expiration_options.term_type` (string)
    Enum: "days", "months", "quarters", "weeks", "years"

  - `rules.expiration_options.calendar_expiration_options` (object)

  - `rules.expiration_options.calendar_expiration_options.number_of_years` (number)
    The number of years

  - `rules.expiration_options.calendar_expiration_options.sell_for_next_year_after` (string)
    The month/day after which, the subscription should extend until the end of the next calendar year. Leave blank to never extend until the next year

  - `rules.expiration_options.calendar_expiration_options.start_of_calendar_year` (number, required)
    The month, from 1-12, that indicates the start of the calendar year

  - `rules.expiration_options.expiration_type` (string, required)
    How the expiration is calculated
    Enum: "anniversary", "calendar", "none"

  - `rules.expiration_options.grace_period` (number)
    Number of days after expiration in which this a person with this subscription. If not set, the global grace setting is used

  - `rules.expiration_options.reinstatement_options` (object)

  - `rules.expiration_options.reinstatement_options.give_renewal_pricing_during_reinstatement_period` (boolean)
    If true, a reinstated member only pays renewal pricing

  - `rules.expiration_options.reinstatement_options.reinstatement_period` (number)
    Number of days after termination after which a person can be reinstated - leave blank for an indefinite time period

  - `rules.is_enabled` (boolean)
    Whether or not this rule is enabled

  - `rules.matching_conditions` (object)
    The conditions upon which this expiration rule applies. If not set, then this expiration rule always applies

  - `rules.matching_conditions.all` (array)

  - `rules.matching_conditions.all.all` (object)

  - `rules.matching_conditions.all.any` (object)

  - `rules.matching_conditions.all.fact` (string)
    The piece of data being examined

  - `rules.matching_conditions.all.operator` (string)
    The operator
    Enum: "contains", "containsString", "doesNotContain", "equal", "greaterThan", "greaterThanInclusive", "in", "isBlank", "isNotBlank", "lessThan", "lessThanInclusive", "matchesPatter", "notContainsString", "notEqual", "notIn", "regex"

  - `rules.matching_conditions.all.path` (string)
    The path of the value being tested

  - `rules.matching_conditions.all.value` (string)

  - `rules.matching_conditions.any` (array)

  - `rules.matching_conditions.any.all` (object)

  - `rules.matching_conditions.any.any` (object)

  - `rules.matching_conditions.any.fact` (string)
    The piece of data being examined

  - `rules.matching_conditions.any.operator` (string)
    The operator
    Enum: "contains", "containsString", "doesNotContain", "equal", "greaterThan", "greaterThanInclusive", "in", "isBlank", "isNotBlank", "lessThan", "lessThanInclusive", "matchesPatter", "notContainsString", "notEqual", "notIn", "regex"

  - `rules.matching_conditions.any.path` (string)
    The path of the value being tested

  - `rules.matching_conditions.any.value` (string)

  - `rules.name` (string, required)
    The name of the rule

  - `sys_bulk_load_at` (string)
    If this record was loaded via bulk, the timestamp when the record was processed

  - `sys_bulk_load_id` (string)
    If this record was loaded via bulk, the ID of the bulk load process

  - `sys_bulk_load_pk` (string)
    If this record was loaded via bulk, the tenant and key of the bulk load process used as a partition key

  - `sys_bulk_load_record_no` (number)
    If this record was loaded via bulk, the record number in the source file

  - `sys_bulk_load_source_file` (string)
    If this record was loaded via bulk, the source file

  - `sys_calculated_field_error` (string)
    The error associated with the calculated field

  - `sys_calculated_field_errors` (array)

  - `sys_calculated_field_errors.error` (string)

  - `sys_calculated_field_errors.field` (string)

  - `sys_configuration_snapshot_id` (string)
    If a snapshot was restored/applies to this record, the ID of the snapshot

  - `sys_created_at` (string, required)
    The date/time that this record was created, expressed in ISO-8601 date format

  - `sys_created_by_id` (string, required)
    The ID of the user that created this record

  - `sys_deleted_by_id` (string)
    The ID of the user that deleted (or last tried to delete) this object

  - `sys_directive` (string)
    Means for passing directive information into an object processing logic

  - `sys_external_id` (string)
    The ID that a record has from an external system or data import

  - `sys_has_files_in_s3` (boolean)
    If true, this record has files in S3. If false, it doesnt, so no need to hit S3 upon deletion

  - `sys_last_bulk_data_operation_id` (string)
    If this record was last touched by a bulk data operation, the ID of that operation

  - `sys_last_bulk_data_operation_sys_version` (string)
    If this record was last touched by a bulk data operation, the sys_version at the time of that operation

  - `sys_last_modified_at` (string, required)
    The date/time that this record record was last modified, expressed in ISO-8601 date format

  - `sys_last_modified_by_id` (string, required)
    The ID of the user that last modified this record

  - `sys_last_security_context` (object)
    The security context of the last insert, modify, or delete performed on this item

  - `sys_locked` (boolean)
    If set, this record is locked and cannot be changed via the API

  - `sys_snapshot_base_version` (number)
    The version to use as a base when creating a configuration snapshot; if not set, 1 is used. Helpful when creating a sandbox

  - `sys_version` (number)
    A number representing the version of this record in the database

## Response 200 headers (application/json):

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

## Response 400:

  - `400` (unknown)
    The expiration rule set supplied was not valid.

## Response 400 headers:

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

## Response 401:

  - `401` (unknown)
    Unauthorized.

## Response 401 headers:

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

## Response 403:

  - `403` (unknown)
    Forbidden.

## Response 403 headers:

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

## Response 404:

  - `404` (unknown)
    The expiration rule set could not be found.

## Response 404 headers:

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

## Response 409:

  - `409` (unknown)
    The expiration rule set could not be saved because it refers to/depends on a non-existent object.

## Response 409 headers:

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

## Response 429:

  - `429` (unknown)
    Limit exceeded... unable to retrieve expiration rule set based on tenant limits.

## Response 429 headers:

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

## Response 500:

  - `500` (unknown)
    General server error.

## Response 500 headers:

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

