# Updates a package with the specified ID. This method will update an existing package with the specified ID. Endpoint: PUT /packages/{tenantId}/{id} Version: v1-2025-04-18 Security: knox-authorizer ## Path parameters: - `tenantId` (string, required) The id of the tenant being accessed. - `id` (string, required) The ID of the package to update. ## Request fields (application/json): - `allow_customer_to_choose_installment_plan` (boolean) If true, the customer can choose their installment plan - `auto_renew_by_default` (boolean) If set, when this membership is created it will be set to auto renewal by default - `available_to` (string) DEPRECATED - No longer supported, do not use Enum: "both", "new members", "renewing members" - `bill_organization` (boolean) If set, the organization should be billed for this package - `bulk_pricing_rules` (array, required) - `bulk_pricing_rules.discount_amount` (number, required) The percentage/flat rate - `bulk_pricing_rules.discount_type` (string, required) The type of discount rule Enum: "flat rate", "percentage" - `bulk_pricing_rules.ending_range` (integer) The ending range of the rule - `bulk_pricing_rules.starting_range` (integer) The starting range of the rule - `bundled_products` (array, required) - `bundled_products.member_price` (number) The member price - `bundled_products.price` (number) The price to bundle - `bundled_products.product_id` (string, required) The product ID - `bundled_products.product_type` (string, required) The product type - `bundled_products.quantity` (integer, required) The quantity to bundle - `bundled_products.type` (string, required) Enum: "bundled product", "inline bundled product" - `bundled_products_inventory_handling` (string) Whether to track inventory for the entire bundle, or for each product separately Enum: "bundle", "each product" - `business_unit_id` (string, required) The business unit of the product - `cancellation_fee` (number) Cancellation fees associated with this product - `chapter_configuration` (object, required) Allows you to override chapter configuration - `chapter_configuration.auto_assignment` (string) The auto assignment mode. Suggest guesses the chapter, and assign assigns one without giving the user an option Enum: "assign", "off", "suggest" - `chapter_configuration.maximum_number_of_chapters_a_member_can_join` (number, required) The maximum number of chapters a member can join - `chapter_configuration.members_are_required_to_join_a_chapter` (boolean) Whether a member is required to join a a chapter - `chapter_configuration.mode` (string) Enum: "optional single chapter", "required single chapter" - `chapter_configuration.portal_restrictions` (string) Enum: "members cannot change chapters", "members may add chapters", "members may add or remove chapters" - `commerce_entitlements_to_create` (array) - `commerce_entitlements_to_create.expiration_date` (string) - `commerce_entitlements_to_create.expiration_type` (string, required) Enum: "none", "relative date", "specific date" - `commerce_entitlements_to_create.quantity` (number) The quantity - `commerce_entitlements_to_create.relative_expiration_date` (object) The date the task is due - `commerce_entitlements_to_create.relative_expiration_date.number` (number, required) The unit of time - `commerce_entitlements_to_create.relative_expiration_date.position` (string, required) How the unit relates to the reference date Enum: "after", "before", "on" - `commerce_entitlements_to_create.relative_expiration_date.relative_to` (string, required) Enum: "the beginning of the month", "the beginning of the quarter", "the beginning of the week", "the beginning of the year", "the end of the month", "the end of the quarter", "the end of the week", "the end of the year", "the reference date" - `commerce_entitlements_to_create.relative_expiration_date.unit_of_time` (string, required) Enum: "days", "months", "weeks", "years" - `commerce_entitlements_to_create.type_id` (string, required) The type of entitlement - `coupon_codes` (array, required) - `coupon_codes.coupon_code_generation_process_id` (string, required) The process by which the coupons are generated - `coupon_codes.coupon_code_type` (string, required) Enum: "multi use", "single use" - `coupon_codes.coupon_id` (string, required) - `coupon_codes.coupon_type` (string, required) - `coupon_codes.maximum_number_of_total_uses` (integer) The maximum number of total uses - `coupon_codes.maximum_number_of_uses_per_customer` (integer) The maximum number of total uses for a given customer - `coupon_codes.quantity` (integer, required) The number of coupons to generate - `coupon_codes.relative_expiration_date` (object) Expiration date relative to purchase - `coupon_codes.restrict_to_contact` (boolean) If true, the code generated is restricted to the contact who made the purchase - `coupon_codes.restrict_to_organization` (boolean) If true, the code generated is restricted to the organization made the purchase - `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) - `custom_pricing_options` (object, required) - `custom_pricing_options.lambda_function_id` (string, required) The custom lambda function to use - `description` (string) Description for the portal/online store - `display_in_portal_as` (string) Override the portal display - `display_order` (number) - `document_entitlements_to_create` (array) - `document_entitlements_to_create.file_cabinet_id` (string, required) The file cabinet - `document_entitlements_to_create.item_id` (string) The item - `document_entitlements_to_create.library_path` (string) The optional path that items will be mounted onto the digital library - `does_not_receive_member_benefits` (boolean) If true, buying this package gives you member benefits - `dues_proration` (object, required) - `dues_proration.applies_to` (string) Enum: "both", "new members", "renewing members" - `dues_proration.april` (number) - `dues_proration.august` (number) - `dues_proration.december` (number) - `dues_proration.february` (number) - `dues_proration.january` (number) - `dues_proration.july` (number) - `dues_proration.june` (number) - `dues_proration.march` (number) - `dues_proration.may` (number) - `dues_proration.november` (number) - `dues_proration.october` (number) - `dues_proration.september` (number) - `enable_bulk_pricing` (boolean) Whether or not bulk pricing is enabled - `enable_bundled_products` (boolean) Whether to enable bundled products - `enable_cancellation_fees` (boolean) Whether or not cancellation fees are applicable - `enable_commerce_entitlement_creation` (boolean) If set, document entitlements will be created to access folders or documents - `enable_coupon_code_generation` (boolean) If true, purchasing this product will generate coupons - `enable_custom_pricing` (boolean) If set, the order engine will call out to a custom lambda function for custom/complex pricing - `enable_document_entitlement_creation` (boolean) If set, document entitlements will be created to access folders or documents - `enable_dues_proration` (boolean) Enable dues proration - `enable_product_confirmation_email` (boolean) If enabled, a custom email goes out whenever this product is ordered - `enable_purchase_limits` (boolean) If true, purchase limits are in place for this product - `enable_purchasing_eligibility` (boolean) If set, purchases of this merchandise are restricted - `enable_special_prices` (boolean) Whether to enable special pricing logic - `enable_task_generation` (boolean) If set, tasks will be generated - `expiration_options` (object) - `expiration_options.allow_reinstatement` (boolean) Whether or not reinstatement is allowed - `expiration_options.anniversary_expiration_options` (object) - `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. - `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 - `expiration_options.anniversary_expiration_options.fixed_expiration_dates` (array) - `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 - `expiration_options.anniversary_expiration_options.term_length` (number) Length of subscription - `expiration_options.anniversary_expiration_options.term_type` (string) Enum: "days", "months", "quarters", "weeks", "years" - `expiration_options.calendar_expiration_options` (object) - `expiration_options.calendar_expiration_options.number_of_years` (number) The number of years - `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 - `expiration_options.calendar_expiration_options.start_of_calendar_year` (number, required) The month, from 1-12, that indicates the start of the calendar year - `expiration_options.expiration_type` (string, required) How the expiration is calculated Enum: "anniversary", "calendar", "none" - `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 - `expiration_options.reinstatement_options` (object) - `expiration_options.reinstatement_options.give_renewal_pricing_during_reinstatement_period` (boolean) If true, a reinstated member only pays renewal pricing - `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 - `foreign_currency_prices` (array) - `foreign_currency_prices.cancellation_fee` (number) The cancellation fee of the product for this currency - `foreign_currency_prices.currency_code` (string, required) Enum: "AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTN", "BWP", "BYR", "BZD", "CAD", "CDF", "CHF", "CLP", "CNY", "COP", "CRC", "CUC", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EEK", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GHS", "GIP", "GMD", "GNF", "GQE", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "INR", "IQD", "IRR", "ISK", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LTL", "LVL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MUR", "MVR", "MWK", "MXN", "MYR", "MZM", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SRD", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TRY", "TTD", "TWD", "TZS", "UAH", "UGX", "USD", "UYU", "UZS", "VEB", "VND", "VUV", "WST", "XAF", "XCD", "XDR", "XOF", "XPF", "YER", "ZAR", "ZMK", "ZWR" - `foreign_currency_prices.member_price` (number) The price of the product for a member - `foreign_currency_prices.mode` (string) How this foreign currency should be treated Enum: "calculate price", "prohibit purchase", "set price" - `foreign_currency_prices.price` (number) The price of the product - `foreign_currency_prices.restocking_fee` (number) The restocking fee of the product for this currency - `hide_from_online_store` (boolean) If true, this package is not available in the online store - `hide_from_portal` (boolean) If set, this product should not be shown in the portal - `id` (string, required) The unique, string identifier of this miscellaneous product - `installment_plan_options` (array, required) - `installment_plan_options.additional_cost` (number) The additional cost of the installment plan - `installment_plan_options.installment_plan_id` (string, required) The installment plan that this product supports - `installment_plan_options.is_default` (boolean) Whether this is the default installment plan option - `is_active` (boolean) Whether this product is active/used - `member_price` (number) The price of the product for an active member - `membership_type_id` (string, required) The membership type this package is tied to - `name` (string, required) The name of the miscellaneous product - `notes` (string) Notes - `organizational_membership_options` (object) - `organizational_membership_options.additional_contact_purchasing_info` (object) - `organizational_membership_options.additional_contact_purchasing_info.add_on_product_id` (string, required) The addon product that should be purchased for additional members - `organizational_membership_options.additional_contact_purchasing_info.maximum_number_of_additional_contacts` (number) If set, puts a limit on how many additional contacts can be purchased - `organizational_membership_options.allow_for_purchase_of_additional_contacts` (boolean) If true, organization members can buy additional contacts - `organizational_membership_options.maximum_number_of_contacts` (number) The maximum number of organizational contacts organizations with this package can have - `override_chapter_configuration` (boolean) Whether or not the chapter configuration is overridden - `override_section_configuration` (boolean) Whether or not the section configuration is overridden - `portal_options` (object) - `portal_options.available_from` (string) The date from which this product should be available - `portal_options.available_until` (string) The date until which this product should be available - `product_confirmation_email_options` (object, required) - `product_confirmation_email_options.product_confirmation_email_id` (string) - `product_confirmation_email_options.product_specific_email` (object) - `product_confirmation_email_options.product_specific_email.bcc` (string) Anyone that should be bcc'ed on the email - `product_confirmation_email_options.product_specific_email.body` (string, required) The email body - `product_confirmation_email_options.product_specific_email.cc` (string) Anyone that should be cc'ed on the email - `product_confirmation_email_options.product_specific_email.from` (string) From email address - `product_confirmation_email_options.product_specific_email.from_name` (string) From name - `product_confirmation_email_options.product_specific_email.reply_to` (string) The reply to - `product_confirmation_email_options.product_specific_email.subject` (string, required) The email subject - `product_tags_to_show_at_checkout` (array) NOT USED - DEPRECATED - `publish_to_portal` (boolean) Whether or not this product should be available in the portal - `purchase_limits` (object, required) - `purchase_limits.error_message` (string) The error message to show - `purchase_limits.maximum` (number, required) The maximum - `purchase_limits.relative_time_window` (object) the time window - `purchase_limits.time_period` (string, required) Enum: "all time", "sliding time window" - `purchasing_eligibility_criteria` (object) - `renews_with_id` (string) The package that thiscc package should renew with - if null, the package renews with itself - `section_configuration` (object, required) Allows you to override section configuration - `special_prices` (array, required) - `special_prices.criteria` (object, required) - `special_prices.enable_formula` (boolean) if set, a formula is used to calculate the price. If the formula fails, the price is used - `special_prices.formula` (string) The formula evaluated using the expr-eval npm package - `special_prices.name` (string) - `special_prices.price` (number, required) - `suggest_donations` (array) Allows you to suggestion donating to specific fundraising products upon checkout - `suggest_donations.product_id` (string, required) The fundraising product - `suggest_donations.suggested_amount` (number) The suggested amount to donate - `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 - `tasks_to_generate` (array) - `tasks_to_generate.assignee_type` (string, required) Enum: "assignment role", "queue", "user" - `tasks_to_generate.assignment_role_id` (string) The assignment role that should receive the ask - `tasks_to_generate.description` (string) A description - `tasks_to_generate.due_date_type` (string, required) Whether there is a due date Enum: "none", "relative date", "specific date" - `tasks_to_generate.name` (string, required) The name of the task - `tasks_to_generate.notify_assignees` (boolean) Notify assignee when the task is created - `tasks_to_generate.priority` (string) Enum: "high", "low", "normal", "urgent" - `tasks_to_generate.queue_id` (string) The queue that should be assigned the ask - `tasks_to_generate.relative_due_date` (object) The date the task is due - `tasks_to_generate.specific_due_date` (string) - `tasks_to_generate.type_id` (string, required) The type of task - `tasks_to_generate.user_id` (string) The user that should be assigned the ask - `type` (string) The product type Enum: "membership-packages" - `update_dates_when` (string) Enum: "immediately", "invoice paid in full", "never" ## Response 200 fields (application/json): - `allow_customer_to_choose_installment_plan` (boolean) If true, the customer can choose their installment plan - `auto_renew_by_default` (boolean) If set, when this membership is created it will be set to auto renewal by default - `available_to` (string) DEPRECATED - No longer supported, do not use Enum: "both", "new members", "renewing members" - `bill_organization` (boolean) If set, the organization should be billed for this package - `bulk_pricing_rules` (array, required) - `bulk_pricing_rules.discount_amount` (number, required) The percentage/flat rate - `bulk_pricing_rules.discount_type` (string, required) The type of discount rule Enum: "flat rate", "percentage" - `bulk_pricing_rules.ending_range` (integer) The ending range of the rule - `bulk_pricing_rules.starting_range` (integer) The starting range of the rule - `bundled_products` (array, required) - `bundled_products.member_price` (number) The member price - `bundled_products.price` (number) The price to bundle - `bundled_products.product_id` (string, required) The product ID - `bundled_products.product_type` (string, required) The product type - `bundled_products.quantity` (integer, required) The quantity to bundle - `bundled_products.type` (string, required) Enum: "bundled product", "inline bundled product" - `bundled_products_inventory_handling` (string) Whether to track inventory for the entire bundle, or for each product separately Enum: "bundle", "each product" - `business_unit_id` (string, required) The business unit of the product - `cancellation_fee` (number) Cancellation fees associated with this product - `chapter_configuration` (object, required) Allows you to override chapter configuration - `chapter_configuration.auto_assignment` (string) The auto assignment mode. Suggest guesses the chapter, and assign assigns one without giving the user an option Enum: "assign", "off", "suggest" - `chapter_configuration.maximum_number_of_chapters_a_member_can_join` (number, required) The maximum number of chapters a member can join - `chapter_configuration.members_are_required_to_join_a_chapter` (boolean) Whether a member is required to join a a chapter - `chapter_configuration.mode` (string) Enum: "optional single chapter", "required single chapter" - `chapter_configuration.portal_restrictions` (string) Enum: "members cannot change chapters", "members may add chapters", "members may add or remove chapters" - `commerce_entitlements_to_create` (array) - `commerce_entitlements_to_create.expiration_date` (string) - `commerce_entitlements_to_create.expiration_type` (string, required) Enum: "none", "relative date", "specific date" - `commerce_entitlements_to_create.quantity` (number) The quantity - `commerce_entitlements_to_create.relative_expiration_date` (object) The date the task is due - `commerce_entitlements_to_create.relative_expiration_date.number` (number, required) The unit of time - `commerce_entitlements_to_create.relative_expiration_date.position` (string, required) How the unit relates to the reference date Enum: "after", "before", "on" - `commerce_entitlements_to_create.relative_expiration_date.relative_to` (string, required) Enum: "the beginning of the month", "the beginning of the quarter", "the beginning of the week", "the beginning of the year", "the end of the month", "the end of the quarter", "the end of the week", "the end of the year", "the reference date" - `commerce_entitlements_to_create.relative_expiration_date.unit_of_time` (string, required) Enum: "days", "months", "weeks", "years" - `commerce_entitlements_to_create.type_id` (string, required) The type of entitlement - `coupon_codes` (array, required) - `coupon_codes.coupon_code_generation_process_id` (string, required) The process by which the coupons are generated - `coupon_codes.coupon_code_type` (string, required) Enum: "multi use", "single use" - `coupon_codes.coupon_id` (string, required) - `coupon_codes.coupon_type` (string, required) - `coupon_codes.maximum_number_of_total_uses` (integer) The maximum number of total uses - `coupon_codes.maximum_number_of_uses_per_customer` (integer) The maximum number of total uses for a given customer - `coupon_codes.quantity` (integer, required) The number of coupons to generate - `coupon_codes.relative_expiration_date` (object) Expiration date relative to purchase - `coupon_codes.restrict_to_contact` (boolean) If true, the code generated is restricted to the contact who made the purchase - `coupon_codes.restrict_to_organization` (boolean) If true, the code generated is restricted to the organization made the purchase - `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) - `custom_pricing_options` (object, required) - `custom_pricing_options.lambda_function_id` (string, required) The custom lambda function to use - `description` (string) Description for the portal/online store - `display_in_portal_as` (string) Override the portal display - `display_order` (number) - `document_entitlements_to_create` (array) - `document_entitlements_to_create.file_cabinet_id` (string, required) The file cabinet - `document_entitlements_to_create.item_id` (string) The item - `document_entitlements_to_create.library_path` (string) The optional path that items will be mounted onto the digital library - `does_not_receive_member_benefits` (boolean) If true, buying this package gives you member benefits - `dues_proration` (object, required) - `dues_proration.applies_to` (string) Enum: "both", "new members", "renewing members" - `dues_proration.april` (number) - `dues_proration.august` (number) - `dues_proration.december` (number) - `dues_proration.february` (number) - `dues_proration.january` (number) - `dues_proration.july` (number) - `dues_proration.june` (number) - `dues_proration.march` (number) - `dues_proration.may` (number) - `dues_proration.november` (number) - `dues_proration.october` (number) - `dues_proration.september` (number) - `enable_bulk_pricing` (boolean) Whether or not bulk pricing is enabled - `enable_bundled_products` (boolean) Whether to enable bundled products - `enable_cancellation_fees` (boolean) Whether or not cancellation fees are applicable - `enable_commerce_entitlement_creation` (boolean) If set, document entitlements will be created to access folders or documents - `enable_coupon_code_generation` (boolean) If true, purchasing this product will generate coupons - `enable_custom_pricing` (boolean) If set, the order engine will call out to a custom lambda function for custom/complex pricing - `enable_document_entitlement_creation` (boolean) If set, document entitlements will be created to access folders or documents - `enable_dues_proration` (boolean) Enable dues proration - `enable_product_confirmation_email` (boolean) If enabled, a custom email goes out whenever this product is ordered - `enable_purchase_limits` (boolean) If true, purchase limits are in place for this product - `enable_purchasing_eligibility` (boolean) If set, purchases of this merchandise are restricted - `enable_special_prices` (boolean) Whether to enable special pricing logic - `enable_task_generation` (boolean) If set, tasks will be generated - `expiration_options` (object) - `expiration_options.allow_reinstatement` (boolean) Whether or not reinstatement is allowed - `expiration_options.anniversary_expiration_options` (object) - `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. - `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 - `expiration_options.anniversary_expiration_options.fixed_expiration_dates` (array) - `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 - `expiration_options.anniversary_expiration_options.term_length` (number) Length of subscription - `expiration_options.anniversary_expiration_options.term_type` (string) Enum: "days", "months", "quarters", "weeks", "years" - `expiration_options.calendar_expiration_options` (object) - `expiration_options.calendar_expiration_options.number_of_years` (number) The number of years - `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 - `expiration_options.calendar_expiration_options.start_of_calendar_year` (number, required) The month, from 1-12, that indicates the start of the calendar year - `expiration_options.expiration_type` (string, required) How the expiration is calculated Enum: "anniversary", "calendar", "none" - `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 - `expiration_options.reinstatement_options` (object) - `expiration_options.reinstatement_options.give_renewal_pricing_during_reinstatement_period` (boolean) If true, a reinstated member only pays renewal pricing - `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 - `foreign_currency_prices` (array) - `foreign_currency_prices.cancellation_fee` (number) The cancellation fee of the product for this currency - `foreign_currency_prices.currency_code` (string, required) Enum: "AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTN", "BWP", "BYR", "BZD", "CAD", "CDF", "CHF", "CLP", "CNY", "COP", "CRC", "CUC", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EEK", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GHS", "GIP", "GMD", "GNF", "GQE", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "INR", "IQD", "IRR", "ISK", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LTL", "LVL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MUR", "MVR", "MWK", "MXN", "MYR", "MZM", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SRD", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TRY", "TTD", "TWD", "TZS", "UAH", "UGX", "USD", "UYU", "UZS", "VEB", "VND", "VUV", "WST", "XAF", "XCD", "XDR", "XOF", "XPF", "YER", "ZAR", "ZMK", "ZWR" - `foreign_currency_prices.member_price` (number) The price of the product for a member - `foreign_currency_prices.mode` (string) How this foreign currency should be treated Enum: "calculate price", "prohibit purchase", "set price" - `foreign_currency_prices.price` (number) The price of the product - `foreign_currency_prices.restocking_fee` (number) The restocking fee of the product for this currency - `hide_from_online_store` (boolean) If true, this package is not available in the online store - `hide_from_portal` (boolean) If set, this product should not be shown in the portal - `id` (string, required) The unique, string identifier of this miscellaneous product - `installment_plan_options` (array, required) - `installment_plan_options.additional_cost` (number) The additional cost of the installment plan - `installment_plan_options.installment_plan_id` (string, required) The installment plan that this product supports - `installment_plan_options.is_default` (boolean) Whether this is the default installment plan option - `is_active` (boolean) Whether this product is active/used - `member_price` (number) The price of the product for an active member - `membership_type_id` (string, required) The membership type this package is tied to - `name` (string, required) The name of the miscellaneous product - `notes` (string) Notes - `organizational_membership_options` (object) - `organizational_membership_options.additional_contact_purchasing_info` (object) - `organizational_membership_options.additional_contact_purchasing_info.add_on_product_id` (string, required) The addon product that should be purchased for additional members - `organizational_membership_options.additional_contact_purchasing_info.maximum_number_of_additional_contacts` (number) If set, puts a limit on how many additional contacts can be purchased - `organizational_membership_options.allow_for_purchase_of_additional_contacts` (boolean) If true, organization members can buy additional contacts - `organizational_membership_options.maximum_number_of_contacts` (number) The maximum number of organizational contacts organizations with this package can have - `override_chapter_configuration` (boolean) Whether or not the chapter configuration is overridden - `override_section_configuration` (boolean) Whether or not the section configuration is overridden - `portal_options` (object) - `portal_options.available_from` (string) The date from which this product should be available - `portal_options.available_until` (string) The date until which this product should be available - `product_confirmation_email_options` (object, required) - `product_confirmation_email_options.product_confirmation_email_id` (string) - `product_confirmation_email_options.product_specific_email` (object) - `product_confirmation_email_options.product_specific_email.bcc` (string) Anyone that should be bcc'ed on the email - `product_confirmation_email_options.product_specific_email.body` (string, required) The email body - `product_confirmation_email_options.product_specific_email.cc` (string) Anyone that should be cc'ed on the email - `product_confirmation_email_options.product_specific_email.from` (string) From email address - `product_confirmation_email_options.product_specific_email.from_name` (string) From name - `product_confirmation_email_options.product_specific_email.reply_to` (string) The reply to - `product_confirmation_email_options.product_specific_email.subject` (string, required) The email subject - `product_tags_to_show_at_checkout` (array) NOT USED - DEPRECATED - `publish_to_portal` (boolean) Whether or not this product should be available in the portal - `purchase_limits` (object, required) - `purchase_limits.error_message` (string) The error message to show - `purchase_limits.maximum` (number, required) The maximum - `purchase_limits.relative_time_window` (object) the time window - `purchase_limits.time_period` (string, required) Enum: "all time", "sliding time window" - `purchasing_eligibility_criteria` (object) - `renews_with_id` (string) The package that thiscc package should renew with - if null, the package renews with itself - `section_configuration` (object, required) Allows you to override section configuration - `special_prices` (array, required) - `special_prices.criteria` (object, required) - `special_prices.enable_formula` (boolean) if set, a formula is used to calculate the price. If the formula fails, the price is used - `special_prices.formula` (string) The formula evaluated using the expr-eval npm package - `special_prices.name` (string) - `special_prices.price` (number, required) - `suggest_donations` (array) Allows you to suggestion donating to specific fundraising products upon checkout - `suggest_donations.product_id` (string, required) The fundraising product - `suggest_donations.suggested_amount` (number) The suggested amount to donate - `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 - `tasks_to_generate` (array) - `tasks_to_generate.assignee_type` (string, required) Enum: "assignment role", "queue", "user" - `tasks_to_generate.assignment_role_id` (string) The assignment role that should receive the ask - `tasks_to_generate.description` (string) A description - `tasks_to_generate.due_date_type` (string, required) Whether there is a due date Enum: "none", "relative date", "specific date" - `tasks_to_generate.name` (string, required) The name of the task - `tasks_to_generate.notify_assignees` (boolean) Notify assignee when the task is created - `tasks_to_generate.priority` (string) Enum: "high", "low", "normal", "urgent" - `tasks_to_generate.queue_id` (string) The queue that should be assigned the ask - `tasks_to_generate.relative_due_date` (object) The date the task is due - `tasks_to_generate.specific_due_date` (string) - `tasks_to_generate.type_id` (string, required) The type of task - `tasks_to_generate.user_id` (string) The user that should be assigned the ask - `type` (string) The product type Enum: "membership-packages" - `update_dates_when` (string) Enum: "immediately", "invoice paid in full", "never" ## Response 400 fields ## Response 401 fields ## Response 403 fields ## Response 404 fields ## Response 409 fields ## Response 429 fields ## Response 500 fields