# Updates a exam offering with the specified ID.

This method will update an existing exam offering with the specified ID.

Endpoint: PUT /examOfferings/{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 exam offering to update.

## Request body:

  - `application/json` (unknown)
    The updated exam offering that will be saved.

## Request fields (application/json):

  - `additional_location_info` (string)
    Additional location information

  - `address` (object)
    A complete address

  - `address.city` (string)
    The city of the address

  - `address.country` (string)
    The country ISO code
    Enum: "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW"

  - `address.country_name` (string)
    The full name of hte country

  - `address.county` (string)
    The county

  - `address.latitude` (number)

  - `address.line1` (string)
    The first line of the address

  - `address.line2` (string)
    The second line of the address

  - `address.line3` (string)
    The third line of the address

  - `address.longitude` (number)

  - `address.postal_code` (string)
    The zip/postal code

  - `address.state` (string)
    The state/province of the address

  - `address.time_zone_id` (string)

  - `course_offering_id` (string)
    The course offering tied to this exam

  - `date` (string, required)
    The date/time of the exam

  - `description` (string)
    A description for the portal

  - `eligibility_requirements` (object, required)
    The criteria to use

  - `eligibility_requirements.advanced_rule_error_message` (string)
    The error message to show when the advanced rule fails

  - `eligibility_requirements.advanced_rules` (object)

  - `eligibility_requirements.age_restrictions` (object)

  - `eligibility_requirements.age_restrictions.maximum_age` (number)
    The maximum age of the contact

  - `eligibility_requirements.age_restrictions.minimum_age` (number)
    The minimum age of the contact

  - `eligibility_requirements.award_options` (object)

  - `eligibility_requirements.award_options.award_ids` (array)

  - `eligibility_requirements.award_options.award_type_ids` (array)

  - `eligibility_requirements.award_options.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.award_recipients` (boolean)
    If set, only people who have received awards

  - `eligibility_requirements.by_location` (boolean)
    If true, then filter by location

  - `eligibility_requirements.certificants` (boolean)
    If set, only people with specific certifications

  - `eligibility_requirements.certification_options` (object)

  - `eligibility_requirements.certification_options.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.certification_options.program_ids` (array)

  - `eligibility_requirements.committee_member_options` (object)

  - `eligibility_requirements.committee_member_options.committee_ids` (array)

  - `eligibility_requirements.committee_member_options.committee_position_ids` (array)

  - `eligibility_requirements.committee_member_options.committee_type_ids` (array)

  - `eligibility_requirements.committee_member_options.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.committee_members` (boolean)
    If set, active members who belong to a committee can purchase

  - `eligibility_requirements.custom_logic_options` (object)

  - `eligibility_requirements.custom_logic_options.lambda_function_id` (string, required)
    The custom lambda function to use

  - `eligibility_requirements.customer_type` (string)
    Enum: "contact", "organization"

  - `eligibility_requirements.donor_options` (object)

  - `eligibility_requirements.donor_options.donor_club_ids` (array)

  - `eligibility_requirements.donor_options.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.donors` (boolean)
    If true, only donors

  - `eligibility_requirements.enable_advanced_rules` (boolean)
    Enable advanced JSON rules

  - `eligibility_requirements.enable_age_restrictions` (boolean)
    Age registrations

  - `eligibility_requirements.enable_custom_logic` (boolean)
    If set, the order engine will call out to a custom lambda function to process/change the order immediately after bundle expansion

  - `eligibility_requirements.enable_entitlement_restrictions` (boolean)
    If set, then you must have certain entitlements

  - `eligibility_requirements.enable_expression` (boolean)
    Whether or not to enable an expression for evaluation

  - `eligibility_requirements.enable_organization_restrictions` (boolean)
    If set, you can restrict organizations

  - `eligibility_requirements.enable_status_restriction` (boolean)
    If set, you can restrict by status

  - `eligibility_requirements.entitlement_restrictions` (array)

  - `eligibility_requirements.entitlement_restrictions.quantity` (number)
    The quantity you must have

  - `eligibility_requirements.entitlement_restrictions.type_id` (string, required)
    The type of entitlement

  - `eligibility_requirements.event_registration_options` (object)

  - `eligibility_requirements.event_registration_options.event_ids` (array)

  - `eligibility_requirements.event_registration_options.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.event_registration_options.registration_category_ids` (array)

  - `eligibility_requirements.event_registrations` (boolean)
    If set, only people who have registered for events

  - `eligibility_requirements.expression` (string)
    The expression

  - `eligibility_requirements.expression_error_message` (string)
    The error message to show when the expression fails

  - `eligibility_requirements.location` (object)

  - `eligibility_requirements.location.countries` (array)
    Countries

  - `eligibility_requirements.location.negate_logic` (boolean)
    If true, the logic in this section is negated; so NOT from these places

  - `eligibility_requirements.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.member_options` (object)

  - `eligibility_requirements.member_options.chapter_member_options` (object)

  - `eligibility_requirements.member_options.chapter_member_options.chapter_ids` (array)

  - `eligibility_requirements.member_options.chapter_member_options.chapter_type_ids` (array)

  - `eligibility_requirements.member_options.chapter_member_options.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.member_options.chapter_members` (boolean)
    If set, active members who belong to a chapter can purchase

  - `eligibility_requirements.member_options.member_package_ids` (array)
    The member package

  - `eligibility_requirements.member_options.member_status_reason_ids` (array)

  - `eligibility_requirements.member_options.member_statuses` (array)

  - `eligibility_requirements.member_options.member_type_ids` (array)
    The member types

  - `eligibility_requirements.member_options.section_member_options` (object)

  - `eligibility_requirements.member_options.section_member_options.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.member_options.section_member_options.section_ids` (array)

  - `eligibility_requirements.member_options.section_member_options.section_type_ids` (array)

  - `eligibility_requirements.member_options.section_members` (boolean)
    If set, active members who belong to a section can purchase

  - `eligibility_requirements.members` (boolean)
    If set, active members can purchase this

  - `eligibility_requirements.non_members` (boolean)
    If set, only nonmembers can purchase

  - `eligibility_requirements.organization_restrictions` (object)

  - `eligibility_requirements.organization_restrictions.contact_role_ids` (array)

  - `eligibility_requirements.organization_restrictions.organization_type_ids` (array)

  - `eligibility_requirements.status_restrictions` (array)
    The statuses

  - `eligibility_requirements.use_organization_for_eligibility` (boolean)
    If checked, a person's organization is used to check for eligibility, rather than the person themselves

  - `enable_eligibility_requirements` (boolean)
    If true, this offering is only available to certain individuals

  - `end_time` (string)
    The registration date/time

  - `exam_id` (string, required)
    The exam

  - `fail_letter_id` (string)
    The exam notice to send when someone has passed this exam; this overrides the letter specified on the exam

  - `fee_id` (string)
    The fee for initial testing

  - `id` (string, required)
    The unique, string identifier of this exam offering

  - `is_active` (boolean)
    Whether this exam is active and available

  - `location` (string, required)
    Enum: "none", "testing facility", "training location"

  - `name` (string, required)
    The name of the offering

  - `notes` (string)

  - `pass_letter_id` (string)
    The exam notice to send when someone has passed this exam; this overrides the letter specified on the exam

  - `registration_time` (string)
    The registration date/time

  - `retest_fee_id` (string)
    The fee for retake/retest

  - `start_time` (string)
    The registration date/time

  - `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

  - `testing_facility_id` (string, required)
    The exam testing site

  - `training_location_id` (string, required)
    The training facility

  - `type` (string, required)
    The type of exam
    Enum: "live", "remote proctor"

## Response 200:

  - `200` (unknown)
    The exam offering was updated successfully.

## Response 200 fields (application/json):

  - `additional_location_info` (string)
    Additional location information

  - `address` (object)
    A complete address

  - `address.city` (string)
    The city of the address

  - `address.country` (string)
    The country ISO code
    Enum: "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW"

  - `address.country_name` (string)
    The full name of hte country

  - `address.county` (string)
    The county

  - `address.latitude` (number)

  - `address.line1` (string)
    The first line of the address

  - `address.line2` (string)
    The second line of the address

  - `address.line3` (string)
    The third line of the address

  - `address.longitude` (number)

  - `address.postal_code` (string)
    The zip/postal code

  - `address.state` (string)
    The state/province of the address

  - `address.time_zone_id` (string)

  - `course_offering_id` (string)
    The course offering tied to this exam

  - `date` (string, required)
    The date/time of the exam

  - `description` (string)
    A description for the portal

  - `eligibility_requirements` (object, required)
    The criteria to use

  - `eligibility_requirements.advanced_rule_error_message` (string)
    The error message to show when the advanced rule fails

  - `eligibility_requirements.advanced_rules` (object)

  - `eligibility_requirements.age_restrictions` (object)

  - `eligibility_requirements.age_restrictions.maximum_age` (number)
    The maximum age of the contact

  - `eligibility_requirements.age_restrictions.minimum_age` (number)
    The minimum age of the contact

  - `eligibility_requirements.award_options` (object)

  - `eligibility_requirements.award_options.award_ids` (array)

  - `eligibility_requirements.award_options.award_type_ids` (array)

  - `eligibility_requirements.award_options.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.award_recipients` (boolean)
    If set, only people who have received awards

  - `eligibility_requirements.by_location` (boolean)
    If true, then filter by location

  - `eligibility_requirements.certificants` (boolean)
    If set, only people with specific certifications

  - `eligibility_requirements.certification_options` (object)

  - `eligibility_requirements.certification_options.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.certification_options.program_ids` (array)

  - `eligibility_requirements.committee_member_options` (object)

  - `eligibility_requirements.committee_member_options.committee_ids` (array)

  - `eligibility_requirements.committee_member_options.committee_position_ids` (array)

  - `eligibility_requirements.committee_member_options.committee_type_ids` (array)

  - `eligibility_requirements.committee_member_options.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.committee_members` (boolean)
    If set, active members who belong to a committee can purchase

  - `eligibility_requirements.custom_logic_options` (object)

  - `eligibility_requirements.custom_logic_options.lambda_function_id` (string, required)
    The custom lambda function to use

  - `eligibility_requirements.customer_type` (string)
    Enum: "contact", "organization"

  - `eligibility_requirements.donor_options` (object)

  - `eligibility_requirements.donor_options.donor_club_ids` (array)

  - `eligibility_requirements.donor_options.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.donors` (boolean)
    If true, only donors

  - `eligibility_requirements.enable_advanced_rules` (boolean)
    Enable advanced JSON rules

  - `eligibility_requirements.enable_age_restrictions` (boolean)
    Age registrations

  - `eligibility_requirements.enable_custom_logic` (boolean)
    If set, the order engine will call out to a custom lambda function to process/change the order immediately after bundle expansion

  - `eligibility_requirements.enable_entitlement_restrictions` (boolean)
    If set, then you must have certain entitlements

  - `eligibility_requirements.enable_expression` (boolean)
    Whether or not to enable an expression for evaluation

  - `eligibility_requirements.enable_organization_restrictions` (boolean)
    If set, you can restrict organizations

  - `eligibility_requirements.enable_status_restriction` (boolean)
    If set, you can restrict by status

  - `eligibility_requirements.entitlement_restrictions` (array)

  - `eligibility_requirements.entitlement_restrictions.quantity` (number)
    The quantity you must have

  - `eligibility_requirements.entitlement_restrictions.type_id` (string, required)
    The type of entitlement

  - `eligibility_requirements.event_registration_options` (object)

  - `eligibility_requirements.event_registration_options.event_ids` (array)

  - `eligibility_requirements.event_registration_options.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.event_registration_options.registration_category_ids` (array)

  - `eligibility_requirements.event_registrations` (boolean)
    If set, only people who have registered for events

  - `eligibility_requirements.expression` (string)
    The expression

  - `eligibility_requirements.expression_error_message` (string)
    The error message to show when the expression fails

  - `eligibility_requirements.location` (object)

  - `eligibility_requirements.location.countries` (array)
    Countries

  - `eligibility_requirements.location.negate_logic` (boolean)
    If true, the logic in this section is negated; so NOT from these places

  - `eligibility_requirements.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.member_options` (object)

  - `eligibility_requirements.member_options.chapter_member_options` (object)

  - `eligibility_requirements.member_options.chapter_member_options.chapter_ids` (array)

  - `eligibility_requirements.member_options.chapter_member_options.chapter_type_ids` (array)

  - `eligibility_requirements.member_options.chapter_member_options.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.member_options.chapter_members` (boolean)
    If set, active members who belong to a chapter can purchase

  - `eligibility_requirements.member_options.member_package_ids` (array)
    The member package

  - `eligibility_requirements.member_options.member_status_reason_ids` (array)

  - `eligibility_requirements.member_options.member_statuses` (array)

  - `eligibility_requirements.member_options.member_type_ids` (array)
    The member types

  - `eligibility_requirements.member_options.section_member_options` (object)

  - `eligibility_requirements.member_options.section_member_options.logic_operator` (string)
    Enum: "and", "not"

  - `eligibility_requirements.member_options.section_member_options.section_ids` (array)

  - `eligibility_requirements.member_options.section_member_options.section_type_ids` (array)

  - `eligibility_requirements.member_options.section_members` (boolean)
    If set, active members who belong to a section can purchase

  - `eligibility_requirements.members` (boolean)
    If set, active members can purchase this

  - `eligibility_requirements.non_members` (boolean)
    If set, only nonmembers can purchase

  - `eligibility_requirements.organization_restrictions` (object)

  - `eligibility_requirements.organization_restrictions.contact_role_ids` (array)

  - `eligibility_requirements.organization_restrictions.organization_type_ids` (array)

  - `eligibility_requirements.status_restrictions` (array)
    The statuses

  - `eligibility_requirements.use_organization_for_eligibility` (boolean)
    If checked, a person's organization is used to check for eligibility, rather than the person themselves

  - `enable_eligibility_requirements` (boolean)
    If true, this offering is only available to certain individuals

  - `end_time` (string)
    The registration date/time

  - `exam_id` (string, required)
    The exam

  - `fail_letter_id` (string)
    The exam notice to send when someone has passed this exam; this overrides the letter specified on the exam

  - `fee_id` (string)
    The fee for initial testing

  - `id` (string, required)
    The unique, string identifier of this exam offering

  - `is_active` (boolean)
    Whether this exam is active and available

  - `location` (string, required)
    Enum: "none", "testing facility", "training location"

  - `name` (string, required)
    The name of the offering

  - `notes` (string)

  - `pass_letter_id` (string)
    The exam notice to send when someone has passed this exam; this overrides the letter specified on the exam

  - `registration_time` (string)
    The registration date/time

  - `retest_fee_id` (string)
    The fee for retake/retest

  - `start_time` (string)
    The registration date/time

  - `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

  - `testing_facility_id` (string, required)
    The exam testing site

  - `training_location_id` (string, required)
    The training facility

  - `type` (string, required)
    The type of exam
    Enum: "live", "remote proctor"

## 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 exam offering 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 exam offering 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 exam offering 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 exam offering 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)

