# Creates a new registration type record that does not already exist.

This method will auto-generate an ID and create a new registration type. If an ID is specified for the registration type, an error will be thrown.

Endpoint: POST /registrationTypes/{tenantId}
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.

## Request body:

  - `application/json` (unknown)
    The registration type that you would like to be saved.

## Request fields (application/json):

  - `category_id` (string)
    The global registration category to which this type belongs

  - `coupon_code_options` (object, required)

  - `coupon_code_options.automatically_add_coupon_to_order` (boolean)
    If true, when the customer puts in the coupon code, its also added to the order

  - `coupon_code_options.coupon_ids` (array)
    The IDs of the event coupons that must be presented

  - `coupon_code_options.prompt_text` (string)
    Text to show to the user

  - `custom_field_values` (array)

  - `custom_field_values.boolean_value` (boolean)
    The boolean value

  - `custom_field_values.custom_field_id` (string)
    The unique identifier of the custom field

  - `custom_field_values.file_url_value` (string)
    The pointer to a file value

  - `custom_field_values.list_value` (array)
    The list value

  - `custom_field_values.numeric_value` (number)
    The numeric value

  - `custom_field_values.string_value` (string)
    The string value of the custom field

  - `custom_field_values.table_value` (array)
    A list of objects (a table)

  - `description` (string)
    Portal-viewable description of this type

  - `display_order` (number)
    The display order

  - `enable_restrictions` (boolean)
    If set, only certain people can register with this type

  - `event_id` (string, required)
    The event

  - `exhibitor_options` (object)

  - `exhibitor_options.contact_type_ids` (array)
    If set, these are the contact ids that are allowed to receive this package

  - `id` (string, required)
    The unique, string identifier of this registration type

  - `is_active` (boolean)
    Whether or not this registration type is active

  - `name` (string, required)
    The name of the registration type

  - `process_id` (string)
    The registration process for this type

  - `requires_coupon_code` (boolean)
    If set, then a valid coupon code for one of the specified coupons must be provided before someone can register as this type

  - `restrict_to_exhibitors` (boolean)
    If true, only contacts tied to exhibiting organizations are allowed to get this package

  - `restrict_to_guests` (boolean)
    Whether this is a guest registration type

  - `restrict_to_speakers` (boolean)
    Whether this is a speaker registration type

  - `restrictions` (object, required)

  - `restrictions.criteria` (object, required)
    The criteria to use

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

  - `restrictions.criteria.advanced_rules` (object)

  - `restrictions.criteria.age_restrictions` (object)

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

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

  - `restrictions.criteria.award_options` (object)

  - `restrictions.criteria.award_options.award_ids` (array)

  - `restrictions.criteria.award_options.award_type_ids` (array)

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

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

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

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

  - `restrictions.criteria.certification_options` (object)

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

  - `restrictions.criteria.certification_options.program_ids` (array)

  - `restrictions.criteria.committee_member_options` (object)

  - `restrictions.criteria.committee_member_options.committee_ids` (array)

  - `restrictions.criteria.committee_member_options.committee_position_ids` (array)

  - `restrictions.criteria.committee_member_options.committee_type_ids` (array)

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

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

  - `restrictions.criteria.custom_logic_options` (object)

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

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

  - `restrictions.criteria.donor_options` (object)

  - `restrictions.criteria.donor_options.donor_club_ids` (array)

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

  - `restrictions.criteria.donors` (boolean)
    If true, only donors

  - `restrictions.criteria.enable_advanced_rules` (boolean)
    Enable advanced JSON rules

  - `restrictions.criteria.enable_age_restrictions` (boolean)
    Age registrations

  - `restrictions.criteria.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

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

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

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

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

  - `restrictions.criteria.entitlement_restrictions` (array)

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

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

  - `restrictions.criteria.event_registration_options` (object)

  - `restrictions.criteria.event_registration_options.event_ids` (array)

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

  - `restrictions.criteria.event_registration_options.registration_category_ids` (array)

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

  - `restrictions.criteria.expression` (string)
    The expression

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

  - `restrictions.criteria.location` (object)

  - `restrictions.criteria.location.countries` (array)
    Countries

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

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

  - `restrictions.criteria.member_options` (object)

  - `restrictions.criteria.member_options.chapter_member_options` (object)

  - `restrictions.criteria.member_options.chapter_member_options.chapter_ids` (array)

  - `restrictions.criteria.member_options.chapter_member_options.chapter_type_ids` (array)

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

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

  - `restrictions.criteria.member_options.member_package_ids` (array)
    The member package

  - `restrictions.criteria.member_options.member_status_reason_ids` (array)

  - `restrictions.criteria.member_options.member_statuses` (array)

  - `restrictions.criteria.member_options.member_type_ids` (array)
    The member types

  - `restrictions.criteria.member_options.section_member_options` (object)

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

  - `restrictions.criteria.member_options.section_member_options.section_ids` (array)

  - `restrictions.criteria.member_options.section_member_options.section_type_ids` (array)

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

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

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

  - `restrictions.criteria.organization_restrictions` (object)

  - `restrictions.criteria.organization_restrictions.contact_role_ids` (array)

  - `restrictions.criteria.organization_restrictions.organization_type_ids` (array)

  - `restrictions.criteria.status_restrictions` (array)
    The statuses

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

  - `selectable_in_portal` (boolean)
    Whether this type can be chosen in the portal

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

  - `type` (string)
    Enum: "exhibitor", "general attendee", "guest", "invite only", "speaker"

## Response 200:

  - `200` (unknown)
    The registration type was saved successfully.

## Response 200 fields (application/json):

  - `category_id` (string)
    The global registration category to which this type belongs

  - `coupon_code_options` (object, required)

  - `coupon_code_options.automatically_add_coupon_to_order` (boolean)
    If true, when the customer puts in the coupon code, its also added to the order

  - `coupon_code_options.coupon_ids` (array)
    The IDs of the event coupons that must be presented

  - `coupon_code_options.prompt_text` (string)
    Text to show to the user

  - `custom_field_values` (array)

  - `custom_field_values.boolean_value` (boolean)
    The boolean value

  - `custom_field_values.custom_field_id` (string)
    The unique identifier of the custom field

  - `custom_field_values.file_url_value` (string)
    The pointer to a file value

  - `custom_field_values.list_value` (array)
    The list value

  - `custom_field_values.numeric_value` (number)
    The numeric value

  - `custom_field_values.string_value` (string)
    The string value of the custom field

  - `custom_field_values.table_value` (array)
    A list of objects (a table)

  - `description` (string)
    Portal-viewable description of this type

  - `display_order` (number)
    The display order

  - `enable_restrictions` (boolean)
    If set, only certain people can register with this type

  - `event_id` (string, required)
    The event

  - `exhibitor_options` (object)

  - `exhibitor_options.contact_type_ids` (array)
    If set, these are the contact ids that are allowed to receive this package

  - `id` (string, required)
    The unique, string identifier of this registration type

  - `is_active` (boolean)
    Whether or not this registration type is active

  - `name` (string, required)
    The name of the registration type

  - `process_id` (string)
    The registration process for this type

  - `requires_coupon_code` (boolean)
    If set, then a valid coupon code for one of the specified coupons must be provided before someone can register as this type

  - `restrict_to_exhibitors` (boolean)
    If true, only contacts tied to exhibiting organizations are allowed to get this package

  - `restrict_to_guests` (boolean)
    Whether this is a guest registration type

  - `restrict_to_speakers` (boolean)
    Whether this is a speaker registration type

  - `restrictions` (object, required)

  - `restrictions.criteria` (object, required)
    The criteria to use

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

  - `restrictions.criteria.advanced_rules` (object)

  - `restrictions.criteria.age_restrictions` (object)

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

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

  - `restrictions.criteria.award_options` (object)

  - `restrictions.criteria.award_options.award_ids` (array)

  - `restrictions.criteria.award_options.award_type_ids` (array)

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

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

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

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

  - `restrictions.criteria.certification_options` (object)

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

  - `restrictions.criteria.certification_options.program_ids` (array)

  - `restrictions.criteria.committee_member_options` (object)

  - `restrictions.criteria.committee_member_options.committee_ids` (array)

  - `restrictions.criteria.committee_member_options.committee_position_ids` (array)

  - `restrictions.criteria.committee_member_options.committee_type_ids` (array)

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

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

  - `restrictions.criteria.custom_logic_options` (object)

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

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

  - `restrictions.criteria.donor_options` (object)

  - `restrictions.criteria.donor_options.donor_club_ids` (array)

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

  - `restrictions.criteria.donors` (boolean)
    If true, only donors

  - `restrictions.criteria.enable_advanced_rules` (boolean)
    Enable advanced JSON rules

  - `restrictions.criteria.enable_age_restrictions` (boolean)
    Age registrations

  - `restrictions.criteria.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

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

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

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

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

  - `restrictions.criteria.entitlement_restrictions` (array)

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

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

  - `restrictions.criteria.event_registration_options` (object)

  - `restrictions.criteria.event_registration_options.event_ids` (array)

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

  - `restrictions.criteria.event_registration_options.registration_category_ids` (array)

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

  - `restrictions.criteria.expression` (string)
    The expression

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

  - `restrictions.criteria.location` (object)

  - `restrictions.criteria.location.countries` (array)
    Countries

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

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

  - `restrictions.criteria.member_options` (object)

  - `restrictions.criteria.member_options.chapter_member_options` (object)

  - `restrictions.criteria.member_options.chapter_member_options.chapter_ids` (array)

  - `restrictions.criteria.member_options.chapter_member_options.chapter_type_ids` (array)

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

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

  - `restrictions.criteria.member_options.member_package_ids` (array)
    The member package

  - `restrictions.criteria.member_options.member_status_reason_ids` (array)

  - `restrictions.criteria.member_options.member_statuses` (array)

  - `restrictions.criteria.member_options.member_type_ids` (array)
    The member types

  - `restrictions.criteria.member_options.section_member_options` (object)

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

  - `restrictions.criteria.member_options.section_member_options.section_ids` (array)

  - `restrictions.criteria.member_options.section_member_options.section_type_ids` (array)

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

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

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

  - `restrictions.criteria.organization_restrictions` (object)

  - `restrictions.criteria.organization_restrictions.contact_role_ids` (array)

  - `restrictions.criteria.organization_restrictions.organization_type_ids` (array)

  - `restrictions.criteria.status_restrictions` (array)
    The statuses

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

  - `selectable_in_portal` (boolean)
    Whether this type can be chosen in the portal

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

  - `type` (string)
    Enum: "exhibitor", "general attendee", "guest", "invite only", "speaker"

## 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 registration type you supplied was invalid.

## 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 resource 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 registration type 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 add registration type 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)

