brevo-python 4.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (843) hide show
  1. brevo/__init__.py +2253 -0
  2. brevo/account/__init__.py +79 -0
  3. brevo/account/client.py +317 -0
  4. brevo/account/raw_client.py +341 -0
  5. brevo/account/types/__init__.py +77 -0
  6. brevo/account/types/get_account_activity_response.py +24 -0
  7. brevo/account/types/get_account_activity_response_logs_item.py +45 -0
  8. brevo/account/types/get_account_response.py +85 -0
  9. brevo/account/types/get_account_response_address.py +43 -0
  10. brevo/account/types/get_account_response_date_time_preferences.py +38 -0
  11. brevo/account/types/get_account_response_marketing_automation.py +29 -0
  12. brevo/account/types/get_account_response_plan_item.py +53 -0
  13. brevo/account/types/get_account_response_plan_item_type.py +5 -0
  14. brevo/account/types/get_account_response_plan_verticals_item.py +63 -0
  15. brevo/account/types/get_account_response_plan_verticals_item_plan_category.py +5 -0
  16. brevo/account/types/get_account_response_plan_verticals_item_status.py +5 -0
  17. brevo/account/types/get_account_response_plan_verticals_item_users.py +35 -0
  18. brevo/account/types/get_account_response_relay.py +34 -0
  19. brevo/account/types/get_account_response_relay_data.py +40 -0
  20. brevo/balance/__init__.py +139 -0
  21. brevo/balance/client.py +2589 -0
  22. brevo/balance/raw_client.py +4538 -0
  23. brevo/balance/types/__init__.py +169 -0
  24. brevo/balance/types/create_balance_limit_request_constraint_type.py +5 -0
  25. brevo/balance/types/create_balance_limit_request_duration_unit.py +5 -0
  26. brevo/balance/types/create_balance_limit_request_transaction_type.py +5 -0
  27. brevo/balance/types/create_balance_order_response.py +96 -0
  28. brevo/balance/types/get_balance_definition_list_request_sort.py +5 -0
  29. brevo/balance/types/get_balance_definition_list_request_sort_field.py +5 -0
  30. brevo/balance/types/get_balance_definition_list_request_version.py +5 -0
  31. brevo/balance/types/get_balance_definition_list_response.py +24 -0
  32. brevo/balance/types/get_balance_definition_request_version.py +5 -0
  33. brevo/balance/types/get_balance_limit_request_version.py +5 -0
  34. brevo/balance/types/get_contact_balances_response.py +30 -0
  35. brevo/balance/types/get_contact_balances_response_balances_item.py +33 -0
  36. brevo/balance/types/get_loyalty_balance_programs_pid_transaction_history_request_sort.py +5 -0
  37. brevo/balance/types/get_loyalty_balance_programs_pid_transaction_history_request_sort_field.py +7 -0
  38. brevo/balance/types/get_loyalty_balance_programs_pid_transaction_history_response.py +57 -0
  39. brevo/balance/types/get_loyalty_balance_programs_pid_transaction_history_response_transaction_history_item.py +77 -0
  40. brevo/balance/types/get_subscription_balances_response.py +21 -0
  41. brevo/balance/types/get_subscription_balances_response_balance_item.py +30 -0
  42. brevo/balance/types/post_loyalty_balance_programs_pid_balance_definitions_request_balance_availability_duration_modifier.py +7 -0
  43. brevo/balance/types/post_loyalty_balance_programs_pid_balance_definitions_request_balance_availability_duration_unit.py +7 -0
  44. brevo/balance/types/post_loyalty_balance_programs_pid_balance_definitions_request_balance_option_amount_overtaking_strategy.py +7 -0
  45. brevo/balance/types/post_loyalty_balance_programs_pid_balance_definitions_request_balance_option_credit_rounding.py +7 -0
  46. brevo/balance/types/post_loyalty_balance_programs_pid_balance_definitions_request_balance_option_debit_rounding.py +7 -0
  47. brevo/balance/types/post_loyalty_balance_programs_pid_balance_definitions_request_unit.py +26 -0
  48. brevo/balance/types/post_loyalty_balance_programs_pid_subscriptions_cid_balances_response.py +66 -0
  49. brevo/balance/types/update_balance_definition_request_balance_availability_duration_modifier.py +7 -0
  50. brevo/balance/types/update_balance_definition_request_balance_availability_duration_unit.py +7 -0
  51. brevo/balance/types/update_balance_definition_request_balance_option_amount_overtaking_strategy.py +7 -0
  52. brevo/balance/types/update_balance_definition_request_balance_option_credit_rounding.py +7 -0
  53. brevo/balance/types/update_balance_definition_request_balance_option_debit_rounding.py +7 -0
  54. brevo/balance/types/update_balance_definition_request_unit.py +26 -0
  55. brevo/balance/types/update_balance_limit_request_constraint_type.py +5 -0
  56. brevo/balance/types/update_balance_limit_request_duration_unit.py +5 -0
  57. brevo/balance/types/update_balance_limit_request_transaction_type.py +5 -0
  58. brevo/client.py +773 -0
  59. brevo/companies/__init__.py +61 -0
  60. brevo/companies/client.py +994 -0
  61. brevo/companies/raw_client.py +1285 -0
  62. brevo/companies/types/__init__.py +59 -0
  63. brevo/companies/types/get_companies_request_sort.py +5 -0
  64. brevo/companies/types/get_companies_response.py +28 -0
  65. brevo/companies/types/get_crm_attributes_companies_response_item.py +40 -0
  66. brevo/companies/types/post_companies_import_response.py +26 -0
  67. brevo/companies/types/post_companies_response.py +27 -0
  68. brevo/companies/types/post_crm_attributes_request_attribute_type.py +7 -0
  69. brevo/companies/types/post_crm_attributes_request_object_type.py +5 -0
  70. brevo/companies/types/post_crm_attributes_response.py +23 -0
  71. brevo/contacts/__init__.py +289 -0
  72. brevo/contacts/client.py +3298 -0
  73. brevo/contacts/raw_client.py +4614 -0
  74. brevo/contacts/types/__init__.py +309 -0
  75. brevo/contacts/types/add_contact_to_list_request_body.py +11 -0
  76. brevo/contacts/types/add_contact_to_list_request_body_emails.py +23 -0
  77. brevo/contacts/types/add_contact_to_list_request_body_ext_ids.py +29 -0
  78. brevo/contacts/types/add_contact_to_list_request_body_ids.py +23 -0
  79. brevo/contacts/types/create_attribute_request_attribute_category.py +7 -0
  80. brevo/contacts/types/create_attribute_request_enumeration_item.py +28 -0
  81. brevo/contacts/types/create_attribute_request_type.py +7 -0
  82. brevo/contacts/types/create_contact_request_attributes_value.py +5 -0
  83. brevo/contacts/types/create_contact_response.py +23 -0
  84. brevo/contacts/types/create_doi_contact_request_attributes_value.py +5 -0
  85. brevo/contacts/types/create_folder_response.py +23 -0
  86. brevo/contacts/types/create_list_response.py +23 -0
  87. brevo/contacts/types/delete_attribute_request_attribute_category.py +7 -0
  88. brevo/contacts/types/delete_contact_request_identifier.py +5 -0
  89. brevo/contacts/types/delete_contact_request_identifier_type.py +7 -0
  90. brevo/contacts/types/get_attributes_response.py +24 -0
  91. brevo/contacts/types/get_attributes_response_attributes_item.py +57 -0
  92. brevo/contacts/types/get_attributes_response_attributes_item_category.py +7 -0
  93. brevo/contacts/types/get_attributes_response_attributes_item_enumeration_item.py +28 -0
  94. brevo/contacts/types/get_attributes_response_attributes_item_type.py +7 -0
  95. brevo/contacts/types/get_contact_info_request_identifier.py +5 -0
  96. brevo/contacts/types/get_contact_info_request_identifier_type.py +7 -0
  97. brevo/contacts/types/get_contact_info_response.py +80 -0
  98. brevo/contacts/types/get_contact_info_response_attributes.py +22 -0
  99. brevo/contacts/types/get_contact_info_response_statistics.py +86 -0
  100. brevo/contacts/types/get_contact_info_response_statistics_clicked_item.py +33 -0
  101. brevo/contacts/types/get_contact_info_response_statistics_clicked_item_links_item.py +40 -0
  102. brevo/contacts/types/get_contact_info_response_statistics_complaints_item.py +31 -0
  103. brevo/contacts/types/get_contact_info_response_statistics_delivered_item.py +31 -0
  104. brevo/contacts/types/get_contact_info_response_statistics_hard_bounces_item.py +31 -0
  105. brevo/contacts/types/get_contact_info_response_statistics_messages_sent_item.py +31 -0
  106. brevo/contacts/types/get_contact_info_response_statistics_opened_item.py +40 -0
  107. brevo/contacts/types/get_contact_info_response_statistics_soft_bounces_item.py +31 -0
  108. brevo/contacts/types/get_contact_info_response_statistics_transac_attributes_item.py +18 -0
  109. brevo/contacts/types/get_contact_info_response_statistics_unsubscriptions.py +43 -0
  110. brevo/contacts/types/get_contact_info_response_statistics_unsubscriptions_admin_unsubscription_item.py +30 -0
  111. brevo/contacts/types/get_contact_info_response_statistics_unsubscriptions_user_unsubscription_item.py +35 -0
  112. brevo/contacts/types/get_contact_stats_request_identifier.py +5 -0
  113. brevo/contacts/types/get_contact_stats_response.py +59 -0
  114. brevo/contacts/types/get_contact_stats_response_clicked_item.py +28 -0
  115. brevo/contacts/types/get_contact_stats_response_clicked_item_links_item.py +40 -0
  116. brevo/contacts/types/get_contact_stats_response_complaints_item.py +31 -0
  117. brevo/contacts/types/get_contact_stats_response_delivered_item.py +31 -0
  118. brevo/contacts/types/get_contact_stats_response_hard_bounces_item.py +31 -0
  119. brevo/contacts/types/get_contact_stats_response_messages_sent_item.py +31 -0
  120. brevo/contacts/types/get_contact_stats_response_opened_item.py +40 -0
  121. brevo/contacts/types/get_contact_stats_response_soft_bounces_item.py +31 -0
  122. brevo/contacts/types/get_contact_stats_response_transac_attributes_item.py +31 -0
  123. brevo/contacts/types/get_contact_stats_response_unsubscriptions.py +39 -0
  124. brevo/contacts/types/get_contact_stats_response_unsubscriptions_admin_unsubscription_item.py +30 -0
  125. brevo/contacts/types/get_contact_stats_response_unsubscriptions_user_unsubscription_item.py +35 -0
  126. brevo/contacts/types/get_contacts_from_list_request_sort.py +5 -0
  127. brevo/contacts/types/get_contacts_request_sort.py +5 -0
  128. brevo/contacts/types/get_folder_lists_request_sort.py +5 -0
  129. brevo/contacts/types/get_folder_lists_response.py +26 -0
  130. brevo/contacts/types/get_folders_request_sort.py +5 -0
  131. brevo/contacts/types/get_folders_response.py +26 -0
  132. brevo/contacts/types/get_list_response.py +68 -0
  133. brevo/contacts/types/get_list_response_campaign_stats_item.py +26 -0
  134. brevo/contacts/types/get_lists_request_sort.py +5 -0
  135. brevo/contacts/types/get_lists_response.py +29 -0
  136. brevo/contacts/types/get_lists_response_lists_item.py +49 -0
  137. brevo/contacts/types/get_segments_request_sort.py +5 -0
  138. brevo/contacts/types/get_segments_response.py +29 -0
  139. brevo/contacts/types/get_segments_response_segments_item.py +41 -0
  140. brevo/contacts/types/import_contacts_request_json_body_item.py +25 -0
  141. brevo/contacts/types/import_contacts_request_new_list.py +41 -0
  142. brevo/contacts/types/import_contacts_response.py +26 -0
  143. brevo/contacts/types/remove_contact_from_list_request_body.py +15 -0
  144. brevo/contacts/types/remove_contact_from_list_request_body_all.py +29 -0
  145. brevo/contacts/types/remove_contact_from_list_request_body_emails.py +23 -0
  146. brevo/contacts/types/remove_contact_from_list_request_body_ext_ids.py +29 -0
  147. brevo/contacts/types/remove_contact_from_list_request_body_ids.py +23 -0
  148. brevo/contacts/types/request_contact_export_request_custom_contact_filter.py +90 -0
  149. brevo/contacts/types/request_contact_export_request_custom_contact_filter_action_for_contacts.py +7 -0
  150. brevo/contacts/types/request_contact_export_request_custom_contact_filter_action_for_email_campaigns.py +8 -0
  151. brevo/contacts/types/request_contact_export_request_custom_contact_filter_action_for_sms_campaigns.py +7 -0
  152. brevo/contacts/types/request_contact_export_response.py +26 -0
  153. brevo/contacts/types/update_attribute_request_attribute_category.py +7 -0
  154. brevo/contacts/types/update_attribute_request_enumeration_item.py +28 -0
  155. brevo/contacts/types/update_batch_contacts_request_contacts_item.py +80 -0
  156. brevo/contacts/types/update_contact_request_attributes_value.py +5 -0
  157. brevo/contacts/types/update_contact_request_identifier.py +5 -0
  158. brevo/contacts/types/update_contact_request_identifier_type.py +7 -0
  159. brevo/conversations/__init__.py +34 -0
  160. brevo/conversations/client.py +912 -0
  161. brevo/conversations/raw_client.py +1328 -0
  162. brevo/conversations/types/__init__.py +36 -0
  163. brevo/conversations/types/put_conversations_visitor_group_response.py +31 -0
  164. brevo/core/__init__.py +125 -0
  165. brevo/core/api_error.py +23 -0
  166. brevo/core/client_wrapper.py +100 -0
  167. brevo/core/datetime_utils.py +28 -0
  168. brevo/core/file.py +67 -0
  169. brevo/core/force_multipart.py +18 -0
  170. brevo/core/http_client.py +776 -0
  171. brevo/core/http_response.py +59 -0
  172. brevo/core/http_sse/__init__.py +42 -0
  173. brevo/core/http_sse/_api.py +112 -0
  174. brevo/core/http_sse/_decoders.py +61 -0
  175. brevo/core/http_sse/_exceptions.py +7 -0
  176. brevo/core/http_sse/_models.py +17 -0
  177. brevo/core/jsonable_encoder.py +108 -0
  178. brevo/core/logging.py +107 -0
  179. brevo/core/pydantic_utilities.py +577 -0
  180. brevo/core/query_encoder.py +58 -0
  181. brevo/core/remove_none_from_dict.py +11 -0
  182. brevo/core/request_options.py +35 -0
  183. brevo/core/serialization.py +276 -0
  184. brevo/core/unchecked_base_model.py +376 -0
  185. brevo/coupons/__init__.py +49 -0
  186. brevo/coupons/client.py +550 -0
  187. brevo/coupons/raw_client.py +839 -0
  188. brevo/coupons/types/__init__.py +47 -0
  189. brevo/coupons/types/create_coupon_collection_response.py +23 -0
  190. brevo/coupons/types/get_coupon_collections_request_sort.py +5 -0
  191. brevo/coupons/types/get_coupon_collections_request_sort_by.py +7 -0
  192. brevo/coupons/types/update_coupon_collection_response.py +35 -0
  193. brevo/custom_objects/__init__.py +139 -0
  194. brevo/custom_objects/client.py +437 -0
  195. brevo/custom_objects/raw_client.py +711 -0
  196. brevo/custom_objects/types/__init__.py +177 -0
  197. brevo/custom_objects/types/batch_delete_object_records_request_identifiers.py +10 -0
  198. brevo/custom_objects/types/batch_delete_object_records_request_identifiers_ext_ids.py +23 -0
  199. brevo/custom_objects/types/batch_delete_object_records_request_identifiers_ids.py +23 -0
  200. brevo/custom_objects/types/batch_delete_object_records_response.py +27 -0
  201. brevo/custom_objects/types/getrecords_request_association.py +5 -0
  202. brevo/custom_objects/types/getrecords_request_sort.py +5 -0
  203. brevo/custom_objects/types/getrecords_response.py +26 -0
  204. brevo/custom_objects/types/getrecords_response_records_item.py +51 -0
  205. brevo/custom_objects/types/getrecords_response_records_item_associations_item.py +10 -0
  206. brevo/custom_objects/types/getrecords_response_records_item_associations_item_one.py +28 -0
  207. brevo/custom_objects/types/getrecords_response_records_item_associations_item_one_records_item.py +15 -0
  208. brevo/custom_objects/types/getrecords_response_records_item_associations_item_one_records_item_one.py +28 -0
  209. brevo/custom_objects/types/getrecords_response_records_item_associations_item_one_records_item_one_identifiers.py +27 -0
  210. brevo/custom_objects/types/getrecords_response_records_item_associations_item_one_records_item_zero.py +28 -0
  211. brevo/custom_objects/types/getrecords_response_records_item_associations_item_one_records_item_zero_identifiers.py +27 -0
  212. brevo/custom_objects/types/getrecords_response_records_item_associations_item_zero.py +28 -0
  213. brevo/custom_objects/types/getrecords_response_records_item_associations_item_zero_records_item.py +15 -0
  214. brevo/custom_objects/types/getrecords_response_records_item_associations_item_zero_records_item_one.py +28 -0
  215. brevo/custom_objects/types/getrecords_response_records_item_associations_item_zero_records_item_one_identifiers.py +27 -0
  216. brevo/custom_objects/types/getrecords_response_records_item_associations_item_zero_records_item_zero.py +28 -0
  217. brevo/custom_objects/types/getrecords_response_records_item_associations_item_zero_records_item_zero_identifiers.py +27 -0
  218. brevo/custom_objects/types/getrecords_response_records_item_identifiers.py +32 -0
  219. brevo/custom_objects/types/upsertrecords_request_records_item.py +31 -0
  220. brevo/custom_objects/types/upsertrecords_request_records_item_associations_item.py +12 -0
  221. brevo/custom_objects/types/upsertrecords_request_records_item_associations_item_one.py +28 -0
  222. brevo/custom_objects/types/upsertrecords_request_records_item_associations_item_one_records_item.py +15 -0
  223. brevo/custom_objects/types/upsertrecords_request_records_item_associations_item_one_records_item_one.py +20 -0
  224. brevo/custom_objects/types/upsertrecords_request_records_item_associations_item_one_records_item_zero.py +28 -0
  225. brevo/custom_objects/types/upsertrecords_request_records_item_associations_item_one_records_item_zero_identifiers.py +32 -0
  226. brevo/custom_objects/types/upsertrecords_request_records_item_associations_item_zero.py +28 -0
  227. brevo/custom_objects/types/upsertrecords_request_records_item_associations_item_zero_records_item.py +23 -0
  228. brevo/custom_objects/types/upsertrecords_request_records_item_associations_item_zero_records_item_identifiers.py +28 -0
  229. brevo/custom_objects/types/upsertrecords_request_records_item_identifiers.py +32 -0
  230. brevo/custom_objects/types/upsertrecords_response.py +29 -0
  231. brevo/deals/__init__.py +52 -0
  232. brevo/deals/client.py +1013 -0
  233. brevo/deals/raw_client.py +1326 -0
  234. brevo/deals/types/__init__.py +50 -0
  235. brevo/deals/types/get_crm_attributes_deals_response_item.py +40 -0
  236. brevo/deals/types/get_crm_deals_request_sort.py +5 -0
  237. brevo/deals/types/get_crm_deals_response.py +28 -0
  238. brevo/deals/types/post_crm_deals_import_response.py +26 -0
  239. brevo/deals/types/post_crm_deals_response.py +27 -0
  240. brevo/domains/__init__.py +79 -0
  241. brevo/domains/client.py +506 -0
  242. brevo/domains/raw_client.py +698 -0
  243. brevo/domains/types/__init__.py +83 -0
  244. brevo/domains/types/authenticate_domain_response.py +28 -0
  245. brevo/domains/types/create_domain_response.py +44 -0
  246. brevo/domains/types/create_domain_response_dns_records.py +40 -0
  247. brevo/domains/types/create_domain_response_dns_records_brevo_code.py +42 -0
  248. brevo/domains/types/create_domain_response_dns_records_dkim_record.py +42 -0
  249. brevo/domains/types/create_domain_response_dns_records_dmarc_record.py +42 -0
  250. brevo/domains/types/get_domain_configuration_response.py +41 -0
  251. brevo/domains/types/get_domain_configuration_response_dns_records.py +44 -0
  252. brevo/domains/types/get_domain_configuration_response_dns_records_brevo_code.py +42 -0
  253. brevo/domains/types/get_domain_configuration_response_dns_records_dkim_record.py +42 -0
  254. brevo/domains/types/get_domain_configuration_response_dns_records_dmarc_record.py +42 -0
  255. brevo/domains/types/get_domains_response.py +39 -0
  256. brevo/domains/types/get_domains_response_domains_item.py +56 -0
  257. brevo/domains/types/get_domains_response_domains_item_creator.py +41 -0
  258. brevo/ecommerce/__init__.py +112 -0
  259. brevo/ecommerce/client.py +2176 -0
  260. brevo/ecommerce/raw_client.py +2895 -0
  261. brevo/ecommerce/types/__init__.py +124 -0
  262. brevo/ecommerce/types/create_batch_order_response.py +28 -0
  263. brevo/ecommerce/types/create_product_alert_request_contact_identifiers.py +33 -0
  264. brevo/ecommerce/types/create_update_batch_category_request_categories_item.py +48 -0
  265. brevo/ecommerce/types/create_update_batch_category_response.py +31 -0
  266. brevo/ecommerce/types/create_update_batch_products_request_products_item.py +89 -0
  267. brevo/ecommerce/types/create_update_batch_products_request_products_item_meta_info_value.py +5 -0
  268. brevo/ecommerce/types/create_update_batch_products_response.py +31 -0
  269. brevo/ecommerce/types/create_update_category_response.py +23 -0
  270. brevo/ecommerce/types/create_update_product_request_meta_info_value.py +5 -0
  271. brevo/ecommerce/types/create_update_product_response.py +23 -0
  272. brevo/ecommerce/types/get_categories_request_sort.py +5 -0
  273. brevo/ecommerce/types/get_categories_response.py +25 -0
  274. brevo/ecommerce/types/get_ecommerce_attribution_metrics_conversion_source_conversion_source_id_request_conversion_source.py +7 -0
  275. brevo/ecommerce/types/get_ecommerce_attribution_metrics_conversion_source_conversion_source_id_response.py +40 -0
  276. brevo/ecommerce/types/get_ecommerce_attribution_metrics_conversion_source_conversion_source_id_response_conversion_source.py +7 -0
  277. brevo/ecommerce/types/get_ecommerce_attribution_metrics_response.py +30 -0
  278. brevo/ecommerce/types/get_ecommerce_attribution_metrics_response_totals.py +32 -0
  279. brevo/ecommerce/types/get_ecommerce_attribution_products_conversion_source_conversion_source_id_request_conversion_source.py +7 -0
  280. brevo/ecommerce/types/get_ecommerce_attribution_products_conversion_source_conversion_source_id_response.py +28 -0
  281. brevo/ecommerce/types/get_ecommerce_attribution_products_conversion_source_conversion_source_id_response_products_item.py +33 -0
  282. brevo/ecommerce/types/get_ecommerce_config_display_currency_response.py +23 -0
  283. brevo/ecommerce/types/get_orders_request_sort.py +5 -0
  284. brevo/ecommerce/types/get_products_request_sort.py +5 -0
  285. brevo/ecommerce/types/get_products_response.py +26 -0
  286. brevo/ecommerce/types/set_config_display_currency_response.py +23 -0
  287. brevo/email_campaigns/__init__.py +139 -0
  288. brevo/email_campaigns/client.py +1864 -0
  289. brevo/email_campaigns/raw_client.py +2472 -0
  290. brevo/email_campaigns/types/__init__.py +141 -0
  291. brevo/email_campaigns/types/create_email_campaign_request_email_expiration_date.py +33 -0
  292. brevo/email_campaigns/types/create_email_campaign_request_email_expiration_date_unit.py +5 -0
  293. brevo/email_campaigns/types/create_email_campaign_request_recipients.py +52 -0
  294. brevo/email_campaigns/types/create_email_campaign_request_sender.py +37 -0
  295. brevo/email_campaigns/types/create_email_campaign_request_winner_criteria.py +5 -0
  296. brevo/email_campaigns/types/create_email_campaign_response.py +23 -0
  297. brevo/email_campaigns/types/email_export_recipients_request_recipients_type.py +10 -0
  298. brevo/email_campaigns/types/email_export_recipients_response.py +26 -0
  299. brevo/email_campaigns/types/get_ab_test_campaign_result_response.py +64 -0
  300. brevo/email_campaigns/types/get_ab_test_campaign_result_response_clicked_links.py +28 -0
  301. brevo/email_campaigns/types/get_ab_test_campaign_result_response_statistics.py +32 -0
  302. brevo/email_campaigns/types/get_ab_test_campaign_result_response_winning_criteria.py +5 -0
  303. brevo/email_campaigns/types/get_ab_test_campaign_result_response_winning_version.py +7 -0
  304. brevo/email_campaigns/types/get_email_campaign_request_statistics.py +7 -0
  305. brevo/email_campaigns/types/get_email_campaign_response.py +234 -0
  306. brevo/email_campaigns/types/get_email_campaign_response_sender.py +33 -0
  307. brevo/email_campaigns/types/get_email_campaign_response_status.py +7 -0
  308. brevo/email_campaigns/types/get_email_campaign_response_type.py +5 -0
  309. brevo/email_campaigns/types/get_email_campaigns_request_sort.py +5 -0
  310. brevo/email_campaigns/types/get_email_campaigns_request_statistics.py +7 -0
  311. brevo/email_campaigns/types/get_email_campaigns_request_status.py +7 -0
  312. brevo/email_campaigns/types/get_email_campaigns_request_type.py +5 -0
  313. brevo/email_campaigns/types/get_email_campaigns_response.py +25 -0
  314. brevo/email_campaigns/types/get_email_campaigns_response_campaigns_item.py +234 -0
  315. brevo/email_campaigns/types/get_email_campaigns_response_campaigns_item_sender.py +33 -0
  316. brevo/email_campaigns/types/get_email_campaigns_response_campaigns_item_status.py +7 -0
  317. brevo/email_campaigns/types/get_email_campaigns_response_campaigns_item_type.py +5 -0
  318. brevo/email_campaigns/types/get_shared_template_url_response.py +29 -0
  319. brevo/email_campaigns/types/update_email_campaign_request_email_expiration_date.py +33 -0
  320. brevo/email_campaigns/types/update_email_campaign_request_email_expiration_date_unit.py +5 -0
  321. brevo/email_campaigns/types/update_email_campaign_request_recipients.py +53 -0
  322. brevo/email_campaigns/types/update_email_campaign_request_sender.py +37 -0
  323. brevo/email_campaigns/types/update_email_campaign_request_winner_criteria.py +5 -0
  324. brevo/email_campaigns/types/upload_image_to_gallery_response.py +23 -0
  325. brevo/environment.py +7 -0
  326. brevo/errors/__init__.py +80 -0
  327. brevo/errors/bad_request_error.py +10 -0
  328. brevo/errors/conflict_error.py +11 -0
  329. brevo/errors/expectation_failed_error.py +11 -0
  330. brevo/errors/failed_dependency_error.py +10 -0
  331. brevo/errors/forbidden_error.py +10 -0
  332. brevo/errors/internal_server_error.py +10 -0
  333. brevo/errors/method_not_allowed_error.py +11 -0
  334. brevo/errors/not_found_error.py +10 -0
  335. brevo/errors/payment_required_error.py +11 -0
  336. brevo/errors/precondition_failed_error.py +11 -0
  337. brevo/errors/too_early_error.py +11 -0
  338. brevo/errors/too_many_requests_error.py +11 -0
  339. brevo/errors/unauthorized_error.py +10 -0
  340. brevo/errors/unprocessable_entity_error.py +11 -0
  341. brevo/errors/unsupported_media_type_error.py +11 -0
  342. brevo/event/__init__.py +52 -0
  343. brevo/event/client.py +184 -0
  344. brevo/event/raw_client.py +230 -0
  345. brevo/event/types/__init__.py +50 -0
  346. brevo/event/types/create_event_request_contact_properties_value.py +5 -0
  347. brevo/event/types/create_event_request_event_properties_value.py +5 -0
  348. brevo/event/types/create_event_request_identifiers.py +52 -0
  349. brevo/event/types/create_event_request_object.py +33 -0
  350. brevo/event/types/create_event_request_object_identifiers.py +32 -0
  351. brevo/external_feeds/__init__.py +79 -0
  352. brevo/external_feeds/client.py +915 -0
  353. brevo/external_feeds/raw_client.py +1087 -0
  354. brevo/external_feeds/types/__init__.py +77 -0
  355. brevo/external_feeds/types/create_external_feed_request_auth_type.py +5 -0
  356. brevo/external_feeds/types/create_external_feed_request_headers_item.py +28 -0
  357. brevo/external_feeds/types/create_external_feed_response.py +23 -0
  358. brevo/external_feeds/types/get_all_external_feeds_request_auth_type.py +5 -0
  359. brevo/external_feeds/types/get_all_external_feeds_request_sort.py +5 -0
  360. brevo/external_feeds/types/get_all_external_feeds_response.py +29 -0
  361. brevo/external_feeds/types/get_all_external_feeds_response_feeds_item.py +96 -0
  362. brevo/external_feeds/types/get_all_external_feeds_response_feeds_item_auth_type.py +5 -0
  363. brevo/external_feeds/types/get_all_external_feeds_response_feeds_item_headers_item.py +28 -0
  364. brevo/external_feeds/types/get_external_feed_by_uuid_response.py +105 -0
  365. brevo/external_feeds/types/get_external_feed_by_uuid_response_auth_type.py +5 -0
  366. brevo/external_feeds/types/get_external_feed_by_uuid_response_headers_item.py +28 -0
  367. brevo/external_feeds/types/update_external_feed_request_auth_type.py +5 -0
  368. brevo/external_feeds/types/update_external_feed_request_headers_item.py +28 -0
  369. brevo/files/__init__.py +38 -0
  370. brevo/files/client.py +479 -0
  371. brevo/files/raw_client.py +675 -0
  372. brevo/files/types/__init__.py +40 -0
  373. brevo/files/types/get_crm_files_id_response.py +30 -0
  374. brevo/files/types/get_crm_files_request_entity.py +5 -0
  375. brevo/files/types/get_crm_files_request_sort.py +5 -0
  376. brevo/inbound_parsing/__init__.py +58 -0
  377. brevo/inbound_parsing/client.py +323 -0
  378. brevo/inbound_parsing/raw_client.py +420 -0
  379. brevo/inbound_parsing/types/__init__.py +60 -0
  380. brevo/inbound_parsing/types/get_inbound_email_events_by_uuid_response.py +72 -0
  381. brevo/inbound_parsing/types/get_inbound_email_events_by_uuid_response_attachments_item.py +40 -0
  382. brevo/inbound_parsing/types/get_inbound_email_events_by_uuid_response_logs_item.py +30 -0
  383. brevo/inbound_parsing/types/get_inbound_email_events_by_uuid_response_logs_item_type.py +7 -0
  384. brevo/inbound_parsing/types/get_inbound_email_events_request_sort.py +5 -0
  385. brevo/inbound_parsing/types/get_inbound_email_events_response.py +21 -0
  386. brevo/inbound_parsing/types/get_inbound_email_events_response_events_item.py +42 -0
  387. brevo/master_account/__init__.py +202 -0
  388. brevo/master_account/client.py +2757 -0
  389. brevo/master_account/raw_client.py +3351 -0
  390. brevo/master_account/types/__init__.py +244 -0
  391. brevo/master_account/types/get_corporate_group_id_response.py +31 -0
  392. brevo/master_account/types/get_corporate_group_id_response_group.py +35 -0
  393. brevo/master_account/types/get_corporate_group_id_response_sub_accounts_item.py +35 -0
  394. brevo/master_account/types/get_corporate_group_id_response_users_item.py +36 -0
  395. brevo/master_account/types/get_corporate_invited_users_list_response.py +24 -0
  396. brevo/master_account/types/get_corporate_invited_users_list_response_users_item.py +50 -0
  397. brevo/master_account/types/get_corporate_invited_users_list_response_users_item_feature_access.py +69 -0
  398. brevo/master_account/types/get_corporate_invited_users_list_response_users_item_groups.py +32 -0
  399. brevo/master_account/types/get_corporate_ip_response_item.py +22 -0
  400. brevo/master_account/types/get_corporate_master_account_response.py +57 -0
  401. brevo/master_account/types/get_corporate_master_account_response_billing_info.py +48 -0
  402. brevo/master_account/types/get_corporate_master_account_response_billing_info_address.py +50 -0
  403. brevo/master_account/types/get_corporate_master_account_response_billing_info_name.py +35 -0
  404. brevo/master_account/types/get_corporate_master_account_response_plan_info.py +63 -0
  405. brevo/master_account/types/get_corporate_master_account_response_plan_info_features_item.py +62 -0
  406. brevo/master_account/types/get_corporate_master_account_response_plan_info_plan_period.py +5 -0
  407. brevo/master_account/types/get_corporate_sub_account_id_response.py +48 -0
  408. brevo/master_account/types/get_corporate_sub_account_id_response_groups_item.py +28 -0
  409. brevo/master_account/types/get_corporate_sub_account_id_response_plan_info.py +42 -0
  410. brevo/master_account/types/get_corporate_sub_account_id_response_plan_info_credits.py +65 -0
  411. brevo/master_account/types/get_corporate_sub_account_id_response_plan_info_credits_emails.py +32 -0
  412. brevo/master_account/types/get_corporate_sub_account_id_response_plan_info_credits_external_feeds.py +33 -0
  413. brevo/master_account/types/get_corporate_sub_account_id_response_plan_info_credits_sms.py +32 -0
  414. brevo/master_account/types/get_corporate_sub_account_id_response_plan_info_credits_whatsapp.py +32 -0
  415. brevo/master_account/types/get_corporate_sub_account_id_response_plan_info_credits_wp_subscribers.py +32 -0
  416. brevo/master_account/types/get_corporate_sub_account_id_response_plan_info_features.py +58 -0
  417. brevo/master_account/types/get_corporate_sub_account_id_response_plan_info_features_inbox.py +32 -0
  418. brevo/master_account/types/get_corporate_sub_account_id_response_plan_info_features_landing_page.py +32 -0
  419. brevo/master_account/types/get_corporate_sub_account_id_response_plan_info_features_sales_users.py +33 -0
  420. brevo/master_account/types/get_corporate_sub_account_id_response_plan_info_features_users.py +32 -0
  421. brevo/master_account/types/get_corporate_sub_account_response.py +32 -0
  422. brevo/master_account/types/get_corporate_sub_account_response_sub_accounts_item.py +48 -0
  423. brevo/master_account/types/get_corporate_sub_account_response_sub_accounts_item_groups_item.py +28 -0
  424. brevo/master_account/types/get_corporate_user_permission_response.py +40 -0
  425. brevo/master_account/types/get_corporate_user_permission_response_feature_access.py +62 -0
  426. brevo/master_account/types/get_corporate_user_permission_response_groups_item.py +32 -0
  427. brevo/master_account/types/get_sub_account_groups_response_item.py +30 -0
  428. brevo/master_account/types/invite_admin_user_request_privileges_item.py +38 -0
  429. brevo/master_account/types/invite_admin_user_request_privileges_item_feature.py +18 -0
  430. brevo/master_account/types/invite_admin_user_request_privileges_item_permissions_item.py +7 -0
  431. brevo/master_account/types/invite_admin_user_response.py +20 -0
  432. brevo/master_account/types/post_corporate_group_response.py +20 -0
  433. brevo/master_account/types/post_corporate_sub_account_key_response.py +28 -0
  434. brevo/master_account/types/post_corporate_sub_account_request_language.py +5 -0
  435. brevo/master_account/types/post_corporate_sub_account_response.py +23 -0
  436. brevo/master_account/types/post_corporate_sub_account_sso_token_request_target.py +17 -0
  437. brevo/master_account/types/put_corporate_sub_account_id_plan_request_credits.py +59 -0
  438. brevo/master_account/types/put_corporate_sub_account_id_plan_request_features.py +44 -0
  439. brevo/master_account/types/put_corporate_sub_accounts_plan_request_credits.py +59 -0
  440. brevo/master_account/types/put_corporate_sub_accounts_plan_request_features.py +39 -0
  441. brevo/master_account/types/put_corporate_user_email_permissions_request_privileges_item.py +42 -0
  442. brevo/master_account/types/put_corporate_user_email_permissions_request_privileges_item_feature.py +18 -0
  443. brevo/master_account/types/put_corporate_user_email_permissions_request_privileges_item_permissions_item.py +10 -0
  444. brevo/master_account/types/put_corporate_user_invitation_action_email_request_action.py +5 -0
  445. brevo/master_account/types/put_corporate_user_invitation_action_email_response.py +23 -0
  446. brevo/notes/__init__.py +38 -0
  447. brevo/notes/client.py +548 -0
  448. brevo/notes/raw_client.py +766 -0
  449. brevo/notes/types/__init__.py +40 -0
  450. brevo/notes/types/get_crm_notes_request_entity.py +5 -0
  451. brevo/notes/types/get_crm_notes_request_sort.py +5 -0
  452. brevo/notes/types/post_crm_notes_response.py +27 -0
  453. brevo/payments/__init__.py +38 -0
  454. brevo/payments/client.py +315 -0
  455. brevo/payments/raw_client.py +532 -0
  456. brevo/payments/types/__init__.py +40 -0
  457. brevo/payments/types/create_payment_request_response.py +28 -0
  458. brevo/payments/types/get_payment_request_response.py +47 -0
  459. brevo/payments/types/get_payment_request_response_status.py +5 -0
  460. brevo/process/__init__.py +79 -0
  461. brevo/process/client.py +304 -0
  462. brevo/process/raw_client.py +372 -0
  463. brevo/process/types/__init__.py +77 -0
  464. brevo/process/types/get_process_response.py +62 -0
  465. brevo/process/types/get_process_response_info.py +36 -0
  466. brevo/process/types/get_process_response_info_export.py +32 -0
  467. brevo/process/types/get_process_response_info_import.py +57 -0
  468. brevo/process/types/get_process_response_name.py +16 -0
  469. brevo/process/types/get_process_response_status.py +7 -0
  470. brevo/process/types/get_processes_request_sort.py +5 -0
  471. brevo/process/types/get_processes_response.py +29 -0
  472. brevo/process/types/get_processes_response_processes_item.py +62 -0
  473. brevo/process/types/get_processes_response_processes_item_info.py +36 -0
  474. brevo/process/types/get_processes_response_processes_item_info_export.py +32 -0
  475. brevo/process/types/get_processes_response_processes_item_info_import.py +57 -0
  476. brevo/process/types/get_processes_response_processes_item_name.py +16 -0
  477. brevo/process/types/get_processes_response_processes_item_status.py +7 -0
  478. brevo/program/__init__.py +67 -0
  479. brevo/program/client.py +1128 -0
  480. brevo/program/raw_client.py +2526 -0
  481. brevo/program/types/__init__.py +67 -0
  482. brevo/program/types/get_lp_list_request_sort_field.py +5 -0
  483. brevo/program/types/get_lp_list_response.py +24 -0
  484. brevo/program/types/get_parameter_subscription_info_response.py +44 -0
  485. brevo/program/types/get_parameter_subscription_info_response_balance.py +41 -0
  486. brevo/program/types/get_parameter_subscription_info_response_balance_balances_item.py +30 -0
  487. brevo/program/types/get_parameter_subscription_info_response_members_item.py +36 -0
  488. brevo/program/types/get_parameter_subscription_info_response_reward_item.py +66 -0
  489. brevo/program/types/get_parameter_subscription_info_response_tier_item.py +56 -0
  490. brevo/program/types/subscribe_member_to_a_subscription_response.py +46 -0
  491. brevo/program/types/subscribe_to_loyalty_program_response.py +56 -0
  492. brevo/py.typed +0 -0
  493. brevo/reward/__init__.py +115 -0
  494. brevo/reward/client.py +1285 -0
  495. brevo/reward/raw_client.py +2564 -0
  496. brevo/reward/types/__init__.py +139 -0
  497. brevo/reward/types/create_reward_response.py +64 -0
  498. brevo/reward/types/create_voucher_response.py +76 -0
  499. brevo/reward/types/get_code_count_response.py +23 -0
  500. brevo/reward/types/get_loyalty_offer_programs_pid_offers_request_version.py +5 -0
  501. brevo/reward/types/get_loyalty_offer_programs_pid_offers_response.py +34 -0
  502. brevo/reward/types/get_loyalty_offer_programs_pid_offers_response_items_item.py +67 -0
  503. brevo/reward/types/get_loyalty_offer_programs_pid_rewards_rid_request_version.py +5 -0
  504. brevo/reward/types/get_loyalty_offer_programs_pid_rewards_rid_response.py +269 -0
  505. brevo/reward/types/get_loyalty_offer_programs_pid_rewards_rid_response_expiration_modifier.py +7 -0
  506. brevo/reward/types/get_loyalty_offer_programs_pid_rewards_rid_response_generator.py +52 -0
  507. brevo/reward/types/get_loyalty_offer_programs_pid_rewards_rid_response_limits_item.py +68 -0
  508. brevo/reward/types/get_loyalty_offer_programs_pid_rewards_rid_response_products_item.py +40 -0
  509. brevo/reward/types/get_loyalty_offer_programs_pid_rewards_rid_response_reward_configs.py +33 -0
  510. brevo/reward/types/get_loyalty_offer_programs_pid_rewards_rid_response_rule.py +101 -0
  511. brevo/reward/types/get_loyalty_offer_programs_pid_rewards_rid_response_rule_event.py +28 -0
  512. brevo/reward/types/get_loyalty_offer_programs_pid_rewards_rid_response_rule_results_item.py +43 -0
  513. brevo/reward/types/get_loyalty_offer_programs_pid_rewards_rid_response_rule_results_item_parameters_item.py +37 -0
  514. brevo/reward/types/get_loyalty_offer_programs_pid_vouchers_request_sort.py +5 -0
  515. brevo/reward/types/get_loyalty_offer_programs_pid_vouchers_request_sort_field.py +5 -0
  516. brevo/reward/types/get_loyalty_offer_programs_pid_vouchers_response.py +49 -0
  517. brevo/reward/types/get_loyalty_offer_programs_pid_vouchers_response_contact_rewards_item.py +70 -0
  518. brevo/reward/types/redeem_voucher_request_order.py +85 -0
  519. brevo/reward/types/redeem_voucher_request_order_billing.py +55 -0
  520. brevo/reward/types/redeem_voucher_request_order_identifiers.py +28 -0
  521. brevo/reward/types/redeem_voucher_request_order_products_item.py +46 -0
  522. brevo/reward/types/validate_reward_response.py +23 -0
  523. brevo/senders/__init__.py +67 -0
  524. brevo/senders/client.py +808 -0
  525. brevo/senders/raw_client.py +1089 -0
  526. brevo/senders/types/__init__.py +65 -0
  527. brevo/senders/types/create_sender_request_ips_item.py +36 -0
  528. brevo/senders/types/create_sender_response.py +42 -0
  529. brevo/senders/types/get_ips_from_sender_response.py +25 -0
  530. brevo/senders/types/get_ips_from_sender_response_ips_item.py +38 -0
  531. brevo/senders/types/get_ips_response.py +25 -0
  532. brevo/senders/types/get_ips_response_ips_item.py +38 -0
  533. brevo/senders/types/get_senders_response.py +24 -0
  534. brevo/senders/types/get_senders_response_senders_item.py +46 -0
  535. brevo/senders/types/get_senders_response_senders_item_ips_item.py +33 -0
  536. brevo/senders/types/update_sender_request_ips_item.py +36 -0
  537. brevo/sms_campaigns/__init__.py +73 -0
  538. brevo/sms_campaigns/client.py +1078 -0
  539. brevo/sms_campaigns/raw_client.py +1501 -0
  540. brevo/sms_campaigns/types/__init__.py +71 -0
  541. brevo/sms_campaigns/types/create_sms_campaign_request_recipients.py +33 -0
  542. brevo/sms_campaigns/types/create_sms_campaign_response.py +23 -0
  543. brevo/sms_campaigns/types/get_sms_campaign_response.py +74 -0
  544. brevo/sms_campaigns/types/get_sms_campaign_response_status.py +7 -0
  545. brevo/sms_campaigns/types/get_sms_campaigns_request_sort.py +5 -0
  546. brevo/sms_campaigns/types/get_sms_campaigns_request_status.py +7 -0
  547. brevo/sms_campaigns/types/get_sms_campaigns_response.py +25 -0
  548. brevo/sms_campaigns/types/get_sms_campaigns_response_campaigns_item.py +74 -0
  549. brevo/sms_campaigns/types/get_sms_campaigns_response_campaigns_item_status.py +7 -0
  550. brevo/sms_campaigns/types/request_sms_recipient_export_request_recipients_type.py +7 -0
  551. brevo/sms_campaigns/types/request_sms_recipient_export_response.py +26 -0
  552. brevo/sms_campaigns/types/update_sms_campaign_request_recipients.py +33 -0
  553. brevo/sms_templates/__init__.py +49 -0
  554. brevo/sms_templates/client.py +133 -0
  555. brevo/sms_templates/raw_client.py +151 -0
  556. brevo/sms_templates/types/__init__.py +47 -0
  557. brevo/sms_templates/types/get_sms_templates_request_sort.py +5 -0
  558. brevo/sms_templates/types/get_sms_templates_response.py +26 -0
  559. brevo/sms_templates/types/get_sms_templates_response_templates_item.py +86 -0
  560. brevo/sms_templates/types/get_sms_templates_response_templates_item_compliance.py +37 -0
  561. brevo/tasks/__init__.py +55 -0
  562. brevo/tasks/client.py +814 -0
  563. brevo/tasks/raw_client.py +992 -0
  564. brevo/tasks/types/__init__.py +53 -0
  565. brevo/tasks/types/get_crm_tasks_request_filter_date.py +5 -0
  566. brevo/tasks/types/get_crm_tasks_request_filter_status.py +5 -0
  567. brevo/tasks/types/get_crm_tasks_request_sort.py +5 -0
  568. brevo/tasks/types/get_crm_tasks_response.py +28 -0
  569. brevo/tasks/types/get_crm_tasktypes_response.py +32 -0
  570. brevo/tasks/types/post_crm_tasks_response.py +27 -0
  571. brevo/tier/__init__.py +79 -0
  572. brevo/tier/client.py +1144 -0
  573. brevo/tier/raw_client.py +2360 -0
  574. brevo/tier/types/__init__.py +79 -0
  575. brevo/tier/types/add_subscription_to_tier_response.py +53 -0
  576. brevo/tier/types/create_tier_for_tier_group_request_access_conditions_item.py +31 -0
  577. brevo/tier/types/create_tier_for_tier_group_request_tier_rewards_item.py +26 -0
  578. brevo/tier/types/create_tier_group_request_downgrade_strategy.py +7 -0
  579. brevo/tier/types/create_tier_group_request_upgrade_strategy.py +7 -0
  580. brevo/tier/types/get_list_of_tier_groups_request_version.py +5 -0
  581. brevo/tier/types/get_list_of_tier_groups_response.py +21 -0
  582. brevo/tier/types/get_loyalty_program_tier_request_version.py +5 -0
  583. brevo/tier/types/get_loyalty_program_tier_response.py +21 -0
  584. brevo/tier/types/get_tier_group_request_version.py +5 -0
  585. brevo/tier/types/update_tier_group_request_downgrade_strategy.py +7 -0
  586. brevo/tier/types/update_tier_group_request_upgrade_strategy.py +7 -0
  587. brevo/tier/types/update_tier_request_access_conditions_item.py +31 -0
  588. brevo/tier/types/update_tier_request_tier_rewards_item.py +26 -0
  589. brevo/transactional_emails/__init__.py +175 -0
  590. brevo/transactional_emails/client.py +2544 -0
  591. brevo/transactional_emails/raw_client.py +3240 -0
  592. brevo/transactional_emails/types/__init__.py +189 -0
  593. brevo/transactional_emails/types/create_smtp_template_request_sender.py +37 -0
  594. brevo/transactional_emails/types/create_smtp_template_response.py +23 -0
  595. brevo/transactional_emails/types/get_aggregated_smtp_report_response.py +85 -0
  596. brevo/transactional_emails/types/get_blocked_domains_response.py +23 -0
  597. brevo/transactional_emails/types/get_email_event_report_request_event.py +23 -0
  598. brevo/transactional_emails/types/get_email_event_report_request_sort.py +5 -0
  599. brevo/transactional_emails/types/get_email_event_report_response.py +21 -0
  600. brevo/transactional_emails/types/get_email_event_report_response_events_item.py +79 -0
  601. brevo/transactional_emails/types/get_email_event_report_response_events_item_event.py +23 -0
  602. brevo/transactional_emails/types/get_scheduled_email_by_id_request_sort.py +5 -0
  603. brevo/transactional_emails/types/get_scheduled_email_by_id_request_status.py +5 -0
  604. brevo/transactional_emails/types/get_scheduled_email_by_id_response.py +10 -0
  605. brevo/transactional_emails/types/get_scheduled_email_by_id_response_batches.py +25 -0
  606. brevo/transactional_emails/types/get_scheduled_email_by_id_response_batches_batches_item.py +39 -0
  607. brevo/transactional_emails/types/get_scheduled_email_by_id_response_batches_batches_item_status.py +7 -0
  608. brevo/transactional_emails/types/get_scheduled_email_by_id_response_created_at.py +37 -0
  609. brevo/transactional_emails/types/get_scheduled_email_by_id_response_created_at_status.py +7 -0
  610. brevo/transactional_emails/types/get_smtp_report_request_sort.py +5 -0
  611. brevo/transactional_emails/types/get_smtp_report_response.py +21 -0
  612. brevo/transactional_emails/types/get_smtp_report_response_reports_item.py +86 -0
  613. brevo/transactional_emails/types/get_smtp_templates_request_sort.py +5 -0
  614. brevo/transactional_emails/types/get_smtp_templates_response.py +26 -0
  615. brevo/transactional_emails/types/get_transac_blocked_contacts_request_sort.py +5 -0
  616. brevo/transactional_emails/types/get_transac_blocked_contacts_response.py +25 -0
  617. brevo/transactional_emails/types/get_transac_blocked_contacts_response_contacts_item.py +44 -0
  618. brevo/transactional_emails/types/get_transac_blocked_contacts_response_contacts_item_reason.py +35 -0
  619. brevo/transactional_emails/types/get_transac_blocked_contacts_response_contacts_item_reason_code.py +15 -0
  620. brevo/transactional_emails/types/get_transac_email_content_response.py +57 -0
  621. brevo/transactional_emails/types/get_transac_email_content_response_events_item.py +28 -0
  622. brevo/transactional_emails/types/get_transac_emails_list_request_sort.py +5 -0
  623. brevo/transactional_emails/types/get_transac_emails_list_response.py +34 -0
  624. brevo/transactional_emails/types/get_transac_emails_list_response_transactional_emails_item.py +61 -0
  625. brevo/transactional_emails/types/post_preview_smtp_email_templates_response.py +49 -0
  626. brevo/transactional_emails/types/send_transac_email_request_attachment_item.py +33 -0
  627. brevo/transactional_emails/types/send_transac_email_request_bcc_item.py +28 -0
  628. brevo/transactional_emails/types/send_transac_email_request_cc_item.py +28 -0
  629. brevo/transactional_emails/types/send_transac_email_request_message_versions_item.py +73 -0
  630. brevo/transactional_emails/types/send_transac_email_request_message_versions_item_bcc_item.py +28 -0
  631. brevo/transactional_emails/types/send_transac_email_request_message_versions_item_cc_item.py +28 -0
  632. brevo/transactional_emails/types/send_transac_email_request_message_versions_item_reply_to.py +32 -0
  633. brevo/transactional_emails/types/send_transac_email_request_message_versions_item_to_item.py +28 -0
  634. brevo/transactional_emails/types/send_transac_email_request_reply_to.py +32 -0
  635. brevo/transactional_emails/types/send_transac_email_request_sender.py +37 -0
  636. brevo/transactional_emails/types/send_transac_email_request_to_item.py +28 -0
  637. brevo/transactional_emails/types/send_transac_email_response.py +29 -0
  638. brevo/transactional_emails/types/update_smtp_template_request_sender.py +37 -0
  639. brevo/transactional_sms/__init__.py +70 -0
  640. brevo/transactional_sms/client.py +726 -0
  641. brevo/transactional_sms/raw_client.py +913 -0
  642. brevo/transactional_sms/types/__init__.py +68 -0
  643. brevo/transactional_sms/types/get_sms_events_request_event.py +20 -0
  644. brevo/transactional_sms/types/get_sms_events_request_sort.py +5 -0
  645. brevo/transactional_sms/types/get_sms_events_response.py +21 -0
  646. brevo/transactional_sms/types/get_sms_events_response_events_item.py +52 -0
  647. brevo/transactional_sms/types/get_sms_events_response_events_item_event.py +20 -0
  648. brevo/transactional_sms/types/get_transac_aggregated_sms_report_response.py +75 -0
  649. brevo/transactional_sms/types/get_transac_sms_report_request_sort.py +5 -0
  650. brevo/transactional_sms/types/get_transac_sms_report_response.py +21 -0
  651. brevo/transactional_sms/types/get_transac_sms_report_response_reports_item.py +76 -0
  652. brevo/transactional_sms/types/send_async_transactional_sms_response.py +22 -0
  653. brevo/transactional_sms/types/send_transac_sms_response.py +38 -0
  654. brevo/transactional_whats_app/__init__.py +64 -0
  655. brevo/transactional_whats_app/client.py +283 -0
  656. brevo/transactional_whats_app/raw_client.py +326 -0
  657. brevo/transactional_whats_app/types/__init__.py +62 -0
  658. brevo/transactional_whats_app/types/get_whatsapp_event_report_request_event.py +7 -0
  659. brevo/transactional_whats_app/types/get_whatsapp_event_report_request_sort.py +5 -0
  660. brevo/transactional_whats_app/types/get_whatsapp_event_report_response.py +21 -0
  661. brevo/transactional_whats_app/types/get_whatsapp_event_report_response_events_item.py +65 -0
  662. brevo/transactional_whats_app/types/get_whatsapp_event_report_response_events_item_event.py +7 -0
  663. brevo/transactional_whats_app/types/send_whatsapp_message_request.py +8 -0
  664. brevo/transactional_whats_app/types/send_whatsapp_message_request_params.py +41 -0
  665. brevo/transactional_whats_app/types/send_whatsapp_message_request_text.py +35 -0
  666. brevo/transactional_whats_app/types/send_whatsapp_message_response.py +26 -0
  667. brevo/types/__init__.py +373 -0
  668. brevo/types/ab_test_version_clicks.py +7 -0
  669. brevo/types/ab_test_version_clicks_item.py +35 -0
  670. brevo/types/ab_test_version_stats.py +35 -0
  671. brevo/types/bad_request_error_body.py +29 -0
  672. brevo/types/bad_request_error_body_code.py +45 -0
  673. brevo/types/balance_definition.py +139 -0
  674. brevo/types/balance_definition_balance_availability_duration_modifier.py +7 -0
  675. brevo/types/balance_limit.py +78 -0
  676. brevo/types/cart.py +38 -0
  677. brevo/types/company.py +45 -0
  678. brevo/types/configuration.py +30 -0
  679. brevo/types/contact_error_model.py +34 -0
  680. brevo/types/contact_error_model_code.py +16 -0
  681. brevo/types/conversations_message.py +187 -0
  682. brevo/types/conversations_message_attachments_item.py +50 -0
  683. brevo/types/conversations_message_bcc_item.py +21 -0
  684. brevo/types/conversations_message_cc_item.py +21 -0
  685. brevo/types/conversations_message_file.py +46 -0
  686. brevo/types/conversations_message_file_image_info.py +39 -0
  687. brevo/types/conversations_message_forwarded_to_source_status.py +29 -0
  688. brevo/types/conversations_message_from.py +25 -0
  689. brevo/types/conversations_message_reply_to.py +25 -0
  690. brevo/types/conversations_message_to_item.py +21 -0
  691. brevo/types/conversations_message_type.py +5 -0
  692. brevo/types/conversion_source_metrics.py +35 -0
  693. brevo/types/conversion_source_metrics_conversion_source.py +7 -0
  694. brevo/types/create_update_folder.py +23 -0
  695. brevo/types/deal.py +45 -0
  696. brevo/types/error_model.py +28 -0
  697. brevo/types/file_data.py +60 -0
  698. brevo/types/forbidden_error_body.py +29 -0
  699. brevo/types/forbidden_error_body_code.py +45 -0
  700. brevo/types/get_campaign_recipients.py +25 -0
  701. brevo/types/get_campaign_stats.py +130 -0
  702. brevo/types/get_category_details.py +54 -0
  703. brevo/types/get_contact_details.py +75 -0
  704. brevo/types/get_contact_details_attributes.py +22 -0
  705. brevo/types/get_contacts.py +25 -0
  706. brevo/types/get_coupon_collection.py +75 -0
  707. brevo/types/get_device_browser_stats.py +44 -0
  708. brevo/types/get_extended_campaign_overview.py +230 -0
  709. brevo/types/get_extended_campaign_overview_sender.py +33 -0
  710. brevo/types/get_extended_campaign_overview_status.py +7 -0
  711. brevo/types/get_extended_campaign_overview_type.py +5 -0
  712. brevo/types/get_extended_campaign_stats.py +63 -0
  713. brevo/types/get_extended_campaign_stats_links_stats.py +22 -0
  714. brevo/types/get_extended_campaign_stats_stats_by_device.py +39 -0
  715. brevo/types/get_folder.py +46 -0
  716. brevo/types/get_list.py +46 -0
  717. brevo/types/get_product_details.py +115 -0
  718. brevo/types/get_sms_campaign_overview.py +69 -0
  719. brevo/types/get_sms_campaign_overview_status.py +7 -0
  720. brevo/types/get_sms_campaign_stats.py +55 -0
  721. brevo/types/get_smtp_template_overview.py +93 -0
  722. brevo/types/get_smtp_template_overview_sender.py +33 -0
  723. brevo/types/get_sso_token.py +23 -0
  724. brevo/types/get_webhook.py +74 -0
  725. brevo/types/get_webhook_channel.py +5 -0
  726. brevo/types/get_webhook_type.py +5 -0
  727. brevo/types/inviteuser.py +31 -0
  728. brevo/types/inviteuser_privileges_item.py +34 -0
  729. brevo/types/inviteuser_privileges_item_feature.py +24 -0
  730. brevo/types/inviteuser_privileges_item_permissions_item.py +39 -0
  731. brevo/types/loyalty_program.py +82 -0
  732. brevo/types/loyalty_program_state.py +5 -0
  733. brevo/types/node_response.py +63 -0
  734. brevo/types/not_found_error_body.py +29 -0
  735. brevo/types/not_found_error_body_code.py +45 -0
  736. brevo/types/note.py +61 -0
  737. brevo/types/note_data.py +44 -0
  738. brevo/types/notification.py +32 -0
  739. brevo/types/order.py +85 -0
  740. brevo/types/order_billing.py +66 -0
  741. brevo/types/order_identifiers.py +42 -0
  742. brevo/types/order_meta_info_value.py +5 -0
  743. brevo/types/order_products_item.py +43 -0
  744. brevo/types/pipeline.py +38 -0
  745. brevo/types/pipeline_stages_item.py +32 -0
  746. brevo/types/pipelines.py +7 -0
  747. brevo/types/post_contact_info.py +21 -0
  748. brevo/types/post_contact_info_contacts.py +37 -0
  749. brevo/types/post_contact_info_contacts_failure.py +5 -0
  750. brevo/types/post_contact_info_contacts_success.py +5 -0
  751. brevo/types/post_send_failed.py +46 -0
  752. brevo/types/redeem.py +92 -0
  753. brevo/types/rule_condition_response.py +52 -0
  754. brevo/types/send_report.py +30 -0
  755. brevo/types/send_report_email.py +32 -0
  756. brevo/types/send_report_language.py +5 -0
  757. brevo/types/send_test_email.py +29 -0
  758. brevo/types/send_transac_sms.py +66 -0
  759. brevo/types/send_transac_sms_tag.py +28 -0
  760. brevo/types/send_transac_sms_tag_field.py +5 -0
  761. brevo/types/send_transac_sms_type.py +5 -0
  762. brevo/types/task.py +55 -0
  763. brevo/types/task_reminder.py +39 -0
  764. brevo/types/task_reminder_types_item.py +5 -0
  765. brevo/types/task_reminder_unit.py +5 -0
  766. brevo/types/tier.py +63 -0
  767. brevo/types/tier_access_conditions_item.py +38 -0
  768. brevo/types/tier_group.py +70 -0
  769. brevo/types/tier_group_downgrade_strategy.py +7 -0
  770. brevo/types/tier_group_upgrade_strategy.py +7 -0
  771. brevo/types/tier_tier_rewards_item.py +33 -0
  772. brevo/types/transaction.py +110 -0
  773. brevo/types/unauthorized_error_body.py +29 -0
  774. brevo/types/unauthorized_error_body_code.py +45 -0
  775. brevo/types/update_campaign_status.py +28 -0
  776. brevo/types/update_campaign_status_status.py +8 -0
  777. brevo/types/value_response.py +67 -0
  778. brevo/types/variables_items.py +22 -0
  779. brevo/types/whatsapp_camp_stats.py +26 -0
  780. brevo/user/__init__.py +67 -0
  781. brevo/user/client.py +806 -0
  782. brevo/user/raw_client.py +977 -0
  783. brevo/user/types/__init__.py +67 -0
  784. brevo/user/types/edit_user_permission_response.py +33 -0
  785. brevo/user/types/get_invited_users_list_response.py +24 -0
  786. brevo/user/types/get_invited_users_list_response_users_item.py +39 -0
  787. brevo/user/types/get_invited_users_list_response_users_item_feature_access.py +37 -0
  788. brevo/user/types/get_user_permission_response.py +38 -0
  789. brevo/user/types/get_user_permission_response_privileges_item.py +21 -0
  790. brevo/user/types/inviteuser_response.py +28 -0
  791. brevo/user/types/put_revoke_user_permission_response.py +28 -0
  792. brevo/user/types/putresendcancelinvitation_request_action.py +5 -0
  793. brevo/user/types/putresendcancelinvitation_response.py +28 -0
  794. brevo/version.py +3 -0
  795. brevo/webhooks/__init__.py +82 -0
  796. brevo/webhooks/client.py +982 -0
  797. brevo/webhooks/raw_client.py +1211 -0
  798. brevo/webhooks/types/__init__.py +80 -0
  799. brevo/webhooks/types/create_webhook_request_auth.py +32 -0
  800. brevo/webhooks/types/create_webhook_request_channel.py +5 -0
  801. brevo/webhooks/types/create_webhook_request_events_item.py +26 -0
  802. brevo/webhooks/types/create_webhook_request_headers_item.py +28 -0
  803. brevo/webhooks/types/create_webhook_request_type.py +5 -0
  804. brevo/webhooks/types/create_webhook_response.py +23 -0
  805. brevo/webhooks/types/export_webhooks_history_request_event.py +26 -0
  806. brevo/webhooks/types/export_webhooks_history_request_type.py +5 -0
  807. brevo/webhooks/types/export_webhooks_history_response.py +26 -0
  808. brevo/webhooks/types/get_webhooks_request_sort.py +5 -0
  809. brevo/webhooks/types/get_webhooks_request_type.py +5 -0
  810. brevo/webhooks/types/get_webhooks_response.py +21 -0
  811. brevo/webhooks/types/update_webhook_request_auth.py +32 -0
  812. brevo/webhooks/types/update_webhook_request_events_item.py +26 -0
  813. brevo/webhooks/types/update_webhook_request_headers_item.py +28 -0
  814. brevo/whats_app_campaigns/__init__.py +106 -0
  815. brevo/whats_app_campaigns/client.py +1064 -0
  816. brevo/whats_app_campaigns/raw_client.py +1311 -0
  817. brevo/whats_app_campaigns/types/__init__.py +110 -0
  818. brevo/whats_app_campaigns/types/create_whats_app_campaign_request_recipients.py +41 -0
  819. brevo/whats_app_campaigns/types/create_whats_app_campaign_response.py +23 -0
  820. brevo/whats_app_campaigns/types/create_whats_app_template_request_category.py +5 -0
  821. brevo/whats_app_campaigns/types/create_whats_app_template_request_source.py +5 -0
  822. brevo/whats_app_campaigns/types/create_whats_app_template_response.py +23 -0
  823. brevo/whats_app_campaigns/types/get_whats_app_campaign_response.py +69 -0
  824. brevo/whats_app_campaigns/types/get_whats_app_campaign_response_campaign_status.py +7 -0
  825. brevo/whats_app_campaigns/types/get_whats_app_campaign_response_template.py +61 -0
  826. brevo/whats_app_campaigns/types/get_whats_app_campaign_response_template_components_item.py +21 -0
  827. brevo/whats_app_campaigns/types/get_whats_app_campaigns_request_sort.py +5 -0
  828. brevo/whats_app_campaigns/types/get_whats_app_campaigns_response.py +25 -0
  829. brevo/whats_app_campaigns/types/get_whats_app_campaigns_response_campaigns_item.py +84 -0
  830. brevo/whats_app_campaigns/types/get_whats_app_campaigns_response_campaigns_item_campaign_status.py +7 -0
  831. brevo/whats_app_campaigns/types/get_whats_app_config_response.py +63 -0
  832. brevo/whats_app_campaigns/types/get_whats_app_config_response_phone_number_name_status.py +7 -0
  833. brevo/whats_app_campaigns/types/get_whats_app_config_response_phone_number_quality.py +5 -0
  834. brevo/whats_app_campaigns/types/get_whats_app_config_response_whatsapp_business_account_status.py +7 -0
  835. brevo/whats_app_campaigns/types/get_whats_app_templates_request_sort.py +5 -0
  836. brevo/whats_app_campaigns/types/get_whats_app_templates_request_source.py +5 -0
  837. brevo/whats_app_campaigns/types/get_whats_app_templates_response.py +26 -0
  838. brevo/whats_app_campaigns/types/get_whats_app_templates_response_templates_item.py +65 -0
  839. brevo/whats_app_campaigns/types/update_whats_app_campaign_request_campaign_status.py +5 -0
  840. brevo/whats_app_campaigns/types/update_whats_app_campaign_request_recipients.py +41 -0
  841. brevo_python-4.0.1.dist-info/METADATA +1072 -0
  842. brevo_python-4.0.1.dist-info/RECORD +843 -0
  843. brevo_python-4.0.1.dist-info/WHEEL +4 -0
@@ -0,0 +1,2360 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from json.decoder import JSONDecodeError
5
+
6
+ from ..core.api_error import ApiError
7
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
+ from ..core.http_response import AsyncHttpResponse, HttpResponse
9
+ from ..core.jsonable_encoder import jsonable_encoder
10
+ from ..core.request_options import RequestOptions
11
+ from ..core.serialization import convert_and_respect_annotation_metadata
12
+ from ..core.unchecked_base_model import construct_type
13
+ from ..errors.bad_request_error import BadRequestError
14
+ from ..errors.conflict_error import ConflictError
15
+ from ..errors.failed_dependency_error import FailedDependencyError
16
+ from ..errors.forbidden_error import ForbiddenError
17
+ from ..errors.internal_server_error import InternalServerError
18
+ from ..errors.not_found_error import NotFoundError
19
+ from ..errors.unauthorized_error import UnauthorizedError
20
+ from ..errors.unprocessable_entity_error import UnprocessableEntityError
21
+ from ..types.error_model import ErrorModel
22
+ from ..types.tier import Tier
23
+ from ..types.tier_group import TierGroup
24
+ from .types.add_subscription_to_tier_response import AddSubscriptionToTierResponse
25
+ from .types.create_tier_for_tier_group_request_access_conditions_item import (
26
+ CreateTierForTierGroupRequestAccessConditionsItem,
27
+ )
28
+ from .types.create_tier_for_tier_group_request_tier_rewards_item import CreateTierForTierGroupRequestTierRewardsItem
29
+ from .types.create_tier_group_request_downgrade_strategy import CreateTierGroupRequestDowngradeStrategy
30
+ from .types.create_tier_group_request_upgrade_strategy import CreateTierGroupRequestUpgradeStrategy
31
+ from .types.get_list_of_tier_groups_request_version import GetListOfTierGroupsRequestVersion
32
+ from .types.get_list_of_tier_groups_response import GetListOfTierGroupsResponse
33
+ from .types.get_loyalty_program_tier_request_version import GetLoyaltyProgramTierRequestVersion
34
+ from .types.get_loyalty_program_tier_response import GetLoyaltyProgramTierResponse
35
+ from .types.get_tier_group_request_version import GetTierGroupRequestVersion
36
+ from .types.update_tier_group_request_downgrade_strategy import UpdateTierGroupRequestDowngradeStrategy
37
+ from .types.update_tier_group_request_upgrade_strategy import UpdateTierGroupRequestUpgradeStrategy
38
+ from .types.update_tier_request_access_conditions_item import UpdateTierRequestAccessConditionsItem
39
+ from .types.update_tier_request_tier_rewards_item import UpdateTierRequestTierRewardsItem
40
+
41
+ # this is used as the default value for optional parameters
42
+ OMIT = typing.cast(typing.Any, ...)
43
+
44
+
45
+ class RawTierClient:
46
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
47
+ self._client_wrapper = client_wrapper
48
+
49
+ def add_subscription_to_tier(
50
+ self, pid: str, cid: str, tid: str, *, request_options: typing.Optional[RequestOptions] = None
51
+ ) -> HttpResponse[AddSubscriptionToTierResponse]:
52
+ """
53
+ Manually assigns a tier to a specific membership.
54
+
55
+ Parameters
56
+ ----------
57
+ pid : str
58
+ Loyalty Program ID
59
+
60
+ cid : str
61
+ Contact ID
62
+
63
+ tid : str
64
+ Tier ID
65
+
66
+ request_options : typing.Optional[RequestOptions]
67
+ Request-specific configuration.
68
+
69
+ Returns
70
+ -------
71
+ HttpResponse[AddSubscriptionToTierResponse]
72
+ Tier successfully assigned to membership
73
+ """
74
+ _response = self._client_wrapper.httpx_client.request(
75
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/contacts/{jsonable_encoder(cid)}/tiers/{jsonable_encoder(tid)}",
76
+ method="POST",
77
+ request_options=request_options,
78
+ )
79
+ try:
80
+ if 200 <= _response.status_code < 300:
81
+ _data = typing.cast(
82
+ AddSubscriptionToTierResponse,
83
+ construct_type(
84
+ type_=AddSubscriptionToTierResponse, # type: ignore
85
+ object_=_response.json(),
86
+ ),
87
+ )
88
+ return HttpResponse(response=_response, data=_data)
89
+ if _response.status_code == 401:
90
+ raise UnauthorizedError(
91
+ headers=dict(_response.headers),
92
+ body=typing.cast(
93
+ typing.Any,
94
+ construct_type(
95
+ type_=typing.Any, # type: ignore
96
+ object_=_response.json(),
97
+ ),
98
+ ),
99
+ )
100
+ if _response.status_code == 403:
101
+ raise ForbiddenError(
102
+ headers=dict(_response.headers),
103
+ body=typing.cast(
104
+ typing.Any,
105
+ construct_type(
106
+ type_=typing.Any, # type: ignore
107
+ object_=_response.json(),
108
+ ),
109
+ ),
110
+ )
111
+ if _response.status_code == 404:
112
+ raise NotFoundError(
113
+ headers=dict(_response.headers),
114
+ body=typing.cast(
115
+ typing.Any,
116
+ construct_type(
117
+ type_=typing.Any, # type: ignore
118
+ object_=_response.json(),
119
+ ),
120
+ ),
121
+ )
122
+ if _response.status_code == 409:
123
+ raise ConflictError(
124
+ headers=dict(_response.headers),
125
+ body=typing.cast(
126
+ ErrorModel,
127
+ construct_type(
128
+ type_=ErrorModel, # type: ignore
129
+ object_=_response.json(),
130
+ ),
131
+ ),
132
+ )
133
+ if _response.status_code == 422:
134
+ raise UnprocessableEntityError(
135
+ headers=dict(_response.headers),
136
+ body=typing.cast(
137
+ ErrorModel,
138
+ construct_type(
139
+ type_=ErrorModel, # type: ignore
140
+ object_=_response.json(),
141
+ ),
142
+ ),
143
+ )
144
+ if _response.status_code == 424:
145
+ raise FailedDependencyError(
146
+ headers=dict(_response.headers),
147
+ body=typing.cast(
148
+ typing.Any,
149
+ construct_type(
150
+ type_=typing.Any, # type: ignore
151
+ object_=_response.json(),
152
+ ),
153
+ ),
154
+ )
155
+ if _response.status_code == 500:
156
+ raise InternalServerError(
157
+ headers=dict(_response.headers),
158
+ body=typing.cast(
159
+ typing.Any,
160
+ construct_type(
161
+ type_=typing.Any, # type: ignore
162
+ object_=_response.json(),
163
+ ),
164
+ ),
165
+ )
166
+ _response_json = _response.json()
167
+ except JSONDecodeError:
168
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
169
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
170
+
171
+ def get_list_of_tier_groups(
172
+ self,
173
+ pid: str,
174
+ *,
175
+ version: typing.Optional[GetListOfTierGroupsRequestVersion] = None,
176
+ request_options: typing.Optional[RequestOptions] = None,
177
+ ) -> HttpResponse[GetListOfTierGroupsResponse]:
178
+ """
179
+ Returns the list of tier groups defined within the loyalty program.
180
+
181
+ Parameters
182
+ ----------
183
+ pid : str
184
+ Loyalty Program ID
185
+
186
+ version : typing.Optional[GetListOfTierGroupsRequestVersion]
187
+ Select 'active' to retrieve list of all tier groups which are live for clients. Select draft to retrieve list of all non deleted tier groups.
188
+
189
+ request_options : typing.Optional[RequestOptions]
190
+ Request-specific configuration.
191
+
192
+ Returns
193
+ -------
194
+ HttpResponse[GetListOfTierGroupsResponse]
195
+ Tier group list successfully retrieved
196
+ """
197
+ _response = self._client_wrapper.httpx_client.request(
198
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tier-groups",
199
+ method="GET",
200
+ params={
201
+ "version": version,
202
+ },
203
+ request_options=request_options,
204
+ )
205
+ try:
206
+ if 200 <= _response.status_code < 300:
207
+ _data = typing.cast(
208
+ GetListOfTierGroupsResponse,
209
+ construct_type(
210
+ type_=GetListOfTierGroupsResponse, # type: ignore
211
+ object_=_response.json(),
212
+ ),
213
+ )
214
+ return HttpResponse(response=_response, data=_data)
215
+ if _response.status_code == 401:
216
+ raise UnauthorizedError(
217
+ headers=dict(_response.headers),
218
+ body=typing.cast(
219
+ typing.Any,
220
+ construct_type(
221
+ type_=typing.Any, # type: ignore
222
+ object_=_response.json(),
223
+ ),
224
+ ),
225
+ )
226
+ if _response.status_code == 403:
227
+ raise ForbiddenError(
228
+ headers=dict(_response.headers),
229
+ body=typing.cast(
230
+ typing.Any,
231
+ construct_type(
232
+ type_=typing.Any, # type: ignore
233
+ object_=_response.json(),
234
+ ),
235
+ ),
236
+ )
237
+ if _response.status_code == 404:
238
+ raise NotFoundError(
239
+ headers=dict(_response.headers),
240
+ body=typing.cast(
241
+ typing.Any,
242
+ construct_type(
243
+ type_=typing.Any, # type: ignore
244
+ object_=_response.json(),
245
+ ),
246
+ ),
247
+ )
248
+ if _response.status_code == 422:
249
+ raise UnprocessableEntityError(
250
+ headers=dict(_response.headers),
251
+ body=typing.cast(
252
+ ErrorModel,
253
+ construct_type(
254
+ type_=ErrorModel, # type: ignore
255
+ object_=_response.json(),
256
+ ),
257
+ ),
258
+ )
259
+ if _response.status_code == 500:
260
+ raise InternalServerError(
261
+ headers=dict(_response.headers),
262
+ body=typing.cast(
263
+ typing.Any,
264
+ construct_type(
265
+ type_=typing.Any, # type: ignore
266
+ object_=_response.json(),
267
+ ),
268
+ ),
269
+ )
270
+ _response_json = _response.json()
271
+ except JSONDecodeError:
272
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
273
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
274
+
275
+ def create_tier_group(
276
+ self,
277
+ pid: str,
278
+ *,
279
+ name: str,
280
+ downgrade_strategy: typing.Optional[CreateTierGroupRequestDowngradeStrategy] = OMIT,
281
+ tier_order: typing.Optional[typing.Sequence[str]] = OMIT,
282
+ upgrade_strategy: typing.Optional[CreateTierGroupRequestUpgradeStrategy] = OMIT,
283
+ request_options: typing.Optional[RequestOptions] = None,
284
+ ) -> HttpResponse[TierGroup]:
285
+ """
286
+ Creates a new tier group in a loyalty program. *(The changes will take effect with the next publication of the loyalty program)*
287
+
288
+ Parameters
289
+ ----------
290
+ pid : str
291
+ Loyalty Program ID
292
+
293
+ name : str
294
+ Name of the tier group
295
+
296
+ downgrade_strategy : typing.Optional[CreateTierGroupRequestDowngradeStrategy]
297
+ Select real_time to downgrade tier on real time balance updates. Select membership_anniversary to downgrade tier on subscription anniversary. Select tier_anniversary to downgrade tier on tier anniversary.
298
+
299
+ tier_order : typing.Optional[typing.Sequence[str]]
300
+ Order of the tiers in the group in ascending order
301
+
302
+ upgrade_strategy : typing.Optional[CreateTierGroupRequestUpgradeStrategy]
303
+ Select real_time to upgrade tier on real time balance updates. Select membership_anniversary to upgrade tier on subscription anniversary. Select tier_anniversary to upgrade tier on tier anniversary.
304
+
305
+ request_options : typing.Optional[RequestOptions]
306
+ Request-specific configuration.
307
+
308
+ Returns
309
+ -------
310
+ HttpResponse[TierGroup]
311
+ Tier group Successfully created
312
+ """
313
+ _response = self._client_wrapper.httpx_client.request(
314
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tier-groups",
315
+ method="POST",
316
+ json={
317
+ "downgradeStrategy": downgrade_strategy,
318
+ "name": name,
319
+ "tierOrder": tier_order,
320
+ "upgradeStrategy": upgrade_strategy,
321
+ },
322
+ headers={
323
+ "content-type": "application/json",
324
+ },
325
+ request_options=request_options,
326
+ omit=OMIT,
327
+ )
328
+ try:
329
+ if 200 <= _response.status_code < 300:
330
+ _data = typing.cast(
331
+ TierGroup,
332
+ construct_type(
333
+ type_=TierGroup, # type: ignore
334
+ object_=_response.json(),
335
+ ),
336
+ )
337
+ return HttpResponse(response=_response, data=_data)
338
+ if _response.status_code == 400:
339
+ raise BadRequestError(
340
+ headers=dict(_response.headers),
341
+ body=typing.cast(
342
+ typing.Any,
343
+ construct_type(
344
+ type_=typing.Any, # type: ignore
345
+ object_=_response.json(),
346
+ ),
347
+ ),
348
+ )
349
+ if _response.status_code == 401:
350
+ raise UnauthorizedError(
351
+ headers=dict(_response.headers),
352
+ body=typing.cast(
353
+ typing.Any,
354
+ construct_type(
355
+ type_=typing.Any, # type: ignore
356
+ object_=_response.json(),
357
+ ),
358
+ ),
359
+ )
360
+ if _response.status_code == 403:
361
+ raise ForbiddenError(
362
+ headers=dict(_response.headers),
363
+ body=typing.cast(
364
+ typing.Any,
365
+ construct_type(
366
+ type_=typing.Any, # type: ignore
367
+ object_=_response.json(),
368
+ ),
369
+ ),
370
+ )
371
+ if _response.status_code == 404:
372
+ raise NotFoundError(
373
+ headers=dict(_response.headers),
374
+ body=typing.cast(
375
+ typing.Any,
376
+ construct_type(
377
+ type_=typing.Any, # type: ignore
378
+ object_=_response.json(),
379
+ ),
380
+ ),
381
+ )
382
+ if _response.status_code == 409:
383
+ raise ConflictError(
384
+ headers=dict(_response.headers),
385
+ body=typing.cast(
386
+ ErrorModel,
387
+ construct_type(
388
+ type_=ErrorModel, # type: ignore
389
+ object_=_response.json(),
390
+ ),
391
+ ),
392
+ )
393
+ if _response.status_code == 422:
394
+ raise UnprocessableEntityError(
395
+ headers=dict(_response.headers),
396
+ body=typing.cast(
397
+ ErrorModel,
398
+ construct_type(
399
+ type_=ErrorModel, # type: ignore
400
+ object_=_response.json(),
401
+ ),
402
+ ),
403
+ )
404
+ _response_json = _response.json()
405
+ except JSONDecodeError:
406
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
407
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
408
+
409
+ def get_tier_group(
410
+ self,
411
+ pid: str,
412
+ gid: str,
413
+ *,
414
+ version: typing.Optional[GetTierGroupRequestVersion] = None,
415
+ request_options: typing.Optional[RequestOptions] = None,
416
+ ) -> HttpResponse[TierGroup]:
417
+ """
418
+ Returns tier group information.
419
+
420
+ Parameters
421
+ ----------
422
+ pid : str
423
+ Loyalty Program ID
424
+
425
+ gid : str
426
+ Tier group ID
427
+
428
+ version : typing.Optional[GetTierGroupRequestVersion]
429
+ Select active to retrieve active version of tier group. Select draft to retrieve latest changes in tier group.
430
+
431
+ request_options : typing.Optional[RequestOptions]
432
+ Request-specific configuration.
433
+
434
+ Returns
435
+ -------
436
+ HttpResponse[TierGroup]
437
+ Tier group information successfully retrieved
438
+ """
439
+ _response = self._client_wrapper.httpx_client.request(
440
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tier-groups/{jsonable_encoder(gid)}",
441
+ method="GET",
442
+ params={
443
+ "version": version,
444
+ },
445
+ request_options=request_options,
446
+ )
447
+ try:
448
+ if 200 <= _response.status_code < 300:
449
+ _data = typing.cast(
450
+ TierGroup,
451
+ construct_type(
452
+ type_=TierGroup, # type: ignore
453
+ object_=_response.json(),
454
+ ),
455
+ )
456
+ return HttpResponse(response=_response, data=_data)
457
+ if _response.status_code == 401:
458
+ raise UnauthorizedError(
459
+ headers=dict(_response.headers),
460
+ body=typing.cast(
461
+ typing.Any,
462
+ construct_type(
463
+ type_=typing.Any, # type: ignore
464
+ object_=_response.json(),
465
+ ),
466
+ ),
467
+ )
468
+ if _response.status_code == 403:
469
+ raise ForbiddenError(
470
+ headers=dict(_response.headers),
471
+ body=typing.cast(
472
+ typing.Any,
473
+ construct_type(
474
+ type_=typing.Any, # type: ignore
475
+ object_=_response.json(),
476
+ ),
477
+ ),
478
+ )
479
+ if _response.status_code == 404:
480
+ raise NotFoundError(
481
+ headers=dict(_response.headers),
482
+ body=typing.cast(
483
+ typing.Any,
484
+ construct_type(
485
+ type_=typing.Any, # type: ignore
486
+ object_=_response.json(),
487
+ ),
488
+ ),
489
+ )
490
+ if _response.status_code == 422:
491
+ raise UnprocessableEntityError(
492
+ headers=dict(_response.headers),
493
+ body=typing.cast(
494
+ ErrorModel,
495
+ construct_type(
496
+ type_=ErrorModel, # type: ignore
497
+ object_=_response.json(),
498
+ ),
499
+ ),
500
+ )
501
+ if _response.status_code == 500:
502
+ raise InternalServerError(
503
+ headers=dict(_response.headers),
504
+ body=typing.cast(
505
+ typing.Any,
506
+ construct_type(
507
+ type_=typing.Any, # type: ignore
508
+ object_=_response.json(),
509
+ ),
510
+ ),
511
+ )
512
+ _response_json = _response.json()
513
+ except JSONDecodeError:
514
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
515
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
516
+
517
+ def update_tier_group(
518
+ self,
519
+ pid: str,
520
+ gid: str,
521
+ *,
522
+ downgrade_strategy: UpdateTierGroupRequestDowngradeStrategy,
523
+ name: str,
524
+ tier_order: typing.Sequence[str],
525
+ upgrade_strategy: UpdateTierGroupRequestUpgradeStrategy,
526
+ request_options: typing.Optional[RequestOptions] = None,
527
+ ) -> HttpResponse[TierGroup]:
528
+ """
529
+ Updates a tier group from a loyalty program. *(The changes will take effect with the next publication of the loyalty program)*
530
+
531
+ Parameters
532
+ ----------
533
+ pid : str
534
+ Loyalty Program ID
535
+
536
+ gid : str
537
+ Tier group ID
538
+
539
+ downgrade_strategy : UpdateTierGroupRequestDowngradeStrategy
540
+ Select real_time to downgrade tier on real time balance updates. Select membership_anniversary to downgrade tier on subscription anniversary. Select tier_anniversary to downgrade tier on tier anniversary.
541
+
542
+ name : str
543
+ Name of the tier group
544
+
545
+ tier_order : typing.Sequence[str]
546
+ Order of the tiers in the group in ascending order
547
+
548
+ upgrade_strategy : UpdateTierGroupRequestUpgradeStrategy
549
+ Select real_time to upgrade tier on real time balance updates. Select membership_anniversary to upgrade tier on subscription anniversary. Select tier_anniversary to upgrade tier on tier anniversary.
550
+
551
+ request_options : typing.Optional[RequestOptions]
552
+ Request-specific configuration.
553
+
554
+ Returns
555
+ -------
556
+ HttpResponse[TierGroup]
557
+ Tier group successfully updated
558
+ """
559
+ _response = self._client_wrapper.httpx_client.request(
560
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tier-groups/{jsonable_encoder(gid)}",
561
+ method="PUT",
562
+ json={
563
+ "downgradeStrategy": downgrade_strategy,
564
+ "name": name,
565
+ "tierOrder": tier_order,
566
+ "upgradeStrategy": upgrade_strategy,
567
+ },
568
+ headers={
569
+ "content-type": "application/json",
570
+ },
571
+ request_options=request_options,
572
+ omit=OMIT,
573
+ )
574
+ try:
575
+ if 200 <= _response.status_code < 300:
576
+ _data = typing.cast(
577
+ TierGroup,
578
+ construct_type(
579
+ type_=TierGroup, # type: ignore
580
+ object_=_response.json(),
581
+ ),
582
+ )
583
+ return HttpResponse(response=_response, data=_data)
584
+ if _response.status_code == 401:
585
+ raise UnauthorizedError(
586
+ headers=dict(_response.headers),
587
+ body=typing.cast(
588
+ typing.Any,
589
+ construct_type(
590
+ type_=typing.Any, # type: ignore
591
+ object_=_response.json(),
592
+ ),
593
+ ),
594
+ )
595
+ if _response.status_code == 403:
596
+ raise ForbiddenError(
597
+ headers=dict(_response.headers),
598
+ body=typing.cast(
599
+ typing.Any,
600
+ construct_type(
601
+ type_=typing.Any, # type: ignore
602
+ object_=_response.json(),
603
+ ),
604
+ ),
605
+ )
606
+ if _response.status_code == 404:
607
+ raise NotFoundError(
608
+ headers=dict(_response.headers),
609
+ body=typing.cast(
610
+ typing.Any,
611
+ construct_type(
612
+ type_=typing.Any, # type: ignore
613
+ object_=_response.json(),
614
+ ),
615
+ ),
616
+ )
617
+ if _response.status_code == 422:
618
+ raise UnprocessableEntityError(
619
+ headers=dict(_response.headers),
620
+ body=typing.cast(
621
+ ErrorModel,
622
+ construct_type(
623
+ type_=ErrorModel, # type: ignore
624
+ object_=_response.json(),
625
+ ),
626
+ ),
627
+ )
628
+ if _response.status_code == 500:
629
+ raise InternalServerError(
630
+ headers=dict(_response.headers),
631
+ body=typing.cast(
632
+ typing.Any,
633
+ construct_type(
634
+ type_=typing.Any, # type: ignore
635
+ object_=_response.json(),
636
+ ),
637
+ ),
638
+ )
639
+ _response_json = _response.json()
640
+ except JSONDecodeError:
641
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
642
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
643
+
644
+ def delete_tier_group(
645
+ self, pid: str, gid: str, *, request_options: typing.Optional[RequestOptions] = None
646
+ ) -> HttpResponse[None]:
647
+ """
648
+ Deletes a tier group from a loyalty program. *(The changes will take effect with the next publication of the loyalty program)*
649
+
650
+ Parameters
651
+ ----------
652
+ pid : str
653
+ Loyalty Program ID
654
+
655
+ gid : str
656
+ Tier group ID
657
+
658
+ request_options : typing.Optional[RequestOptions]
659
+ Request-specific configuration.
660
+
661
+ Returns
662
+ -------
663
+ HttpResponse[None]
664
+ """
665
+ _response = self._client_wrapper.httpx_client.request(
666
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tier-groups/{jsonable_encoder(gid)}",
667
+ method="DELETE",
668
+ request_options=request_options,
669
+ )
670
+ try:
671
+ if 200 <= _response.status_code < 300:
672
+ return HttpResponse(response=_response, data=None)
673
+ if _response.status_code == 401:
674
+ raise UnauthorizedError(
675
+ headers=dict(_response.headers),
676
+ body=typing.cast(
677
+ typing.Any,
678
+ construct_type(
679
+ type_=typing.Any, # type: ignore
680
+ object_=_response.json(),
681
+ ),
682
+ ),
683
+ )
684
+ if _response.status_code == 403:
685
+ raise ForbiddenError(
686
+ headers=dict(_response.headers),
687
+ body=typing.cast(
688
+ typing.Any,
689
+ construct_type(
690
+ type_=typing.Any, # type: ignore
691
+ object_=_response.json(),
692
+ ),
693
+ ),
694
+ )
695
+ if _response.status_code == 404:
696
+ raise NotFoundError(
697
+ headers=dict(_response.headers),
698
+ body=typing.cast(
699
+ typing.Any,
700
+ construct_type(
701
+ type_=typing.Any, # type: ignore
702
+ object_=_response.json(),
703
+ ),
704
+ ),
705
+ )
706
+ if _response.status_code == 409:
707
+ raise ConflictError(
708
+ headers=dict(_response.headers),
709
+ body=typing.cast(
710
+ ErrorModel,
711
+ construct_type(
712
+ type_=ErrorModel, # type: ignore
713
+ object_=_response.json(),
714
+ ),
715
+ ),
716
+ )
717
+ if _response.status_code == 422:
718
+ raise UnprocessableEntityError(
719
+ headers=dict(_response.headers),
720
+ body=typing.cast(
721
+ ErrorModel,
722
+ construct_type(
723
+ type_=ErrorModel, # type: ignore
724
+ object_=_response.json(),
725
+ ),
726
+ ),
727
+ )
728
+ if _response.status_code == 500:
729
+ raise InternalServerError(
730
+ headers=dict(_response.headers),
731
+ body=typing.cast(
732
+ typing.Any,
733
+ construct_type(
734
+ type_=typing.Any, # type: ignore
735
+ object_=_response.json(),
736
+ ),
737
+ ),
738
+ )
739
+ _response_json = _response.json()
740
+ except JSONDecodeError:
741
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
742
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
743
+
744
+ def create_tier_for_tier_group(
745
+ self,
746
+ pid: str,
747
+ gid: str,
748
+ *,
749
+ access_conditions: typing.Sequence[CreateTierForTierGroupRequestAccessConditionsItem],
750
+ name: str,
751
+ image_ref: typing.Optional[str] = OMIT,
752
+ tier_rewards: typing.Optional[typing.Sequence[CreateTierForTierGroupRequestTierRewardsItem]] = OMIT,
753
+ request_options: typing.Optional[RequestOptions] = None,
754
+ ) -> HttpResponse[Tier]:
755
+ """
756
+ Creates a new tier in a loyalty program tier group. *(The changes will take effect with the next publication of the loyalty program)*
757
+
758
+ Parameters
759
+ ----------
760
+ pid : str
761
+ Loyalty Program ID
762
+
763
+ gid : str
764
+ Tier group ID
765
+
766
+ access_conditions : typing.Sequence[CreateTierForTierGroupRequestAccessConditionsItem]
767
+
768
+ name : str
769
+ Name of the tier to be created
770
+
771
+ image_ref : typing.Optional[str]
772
+ Image of the tier
773
+
774
+ tier_rewards : typing.Optional[typing.Sequence[CreateTierForTierGroupRequestTierRewardsItem]]
775
+
776
+ request_options : typing.Optional[RequestOptions]
777
+ Request-specific configuration.
778
+
779
+ Returns
780
+ -------
781
+ HttpResponse[Tier]
782
+ Tier successfully created
783
+ """
784
+ _response = self._client_wrapper.httpx_client.request(
785
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tier-groups/{jsonable_encoder(gid)}/tiers",
786
+ method="POST",
787
+ json={
788
+ "accessConditions": convert_and_respect_annotation_metadata(
789
+ object_=access_conditions,
790
+ annotation=typing.Sequence[CreateTierForTierGroupRequestAccessConditionsItem],
791
+ direction="write",
792
+ ),
793
+ "imageRef": image_ref,
794
+ "name": name,
795
+ "tierRewards": convert_and_respect_annotation_metadata(
796
+ object_=tier_rewards,
797
+ annotation=typing.Sequence[CreateTierForTierGroupRequestTierRewardsItem],
798
+ direction="write",
799
+ ),
800
+ },
801
+ headers={
802
+ "content-type": "application/json",
803
+ },
804
+ request_options=request_options,
805
+ omit=OMIT,
806
+ )
807
+ try:
808
+ if 200 <= _response.status_code < 300:
809
+ _data = typing.cast(
810
+ Tier,
811
+ construct_type(
812
+ type_=Tier, # type: ignore
813
+ object_=_response.json(),
814
+ ),
815
+ )
816
+ return HttpResponse(response=_response, data=_data)
817
+ if _response.status_code == 401:
818
+ raise UnauthorizedError(
819
+ headers=dict(_response.headers),
820
+ body=typing.cast(
821
+ typing.Any,
822
+ construct_type(
823
+ type_=typing.Any, # type: ignore
824
+ object_=_response.json(),
825
+ ),
826
+ ),
827
+ )
828
+ if _response.status_code == 403:
829
+ raise ForbiddenError(
830
+ headers=dict(_response.headers),
831
+ body=typing.cast(
832
+ typing.Any,
833
+ construct_type(
834
+ type_=typing.Any, # type: ignore
835
+ object_=_response.json(),
836
+ ),
837
+ ),
838
+ )
839
+ if _response.status_code == 404:
840
+ raise NotFoundError(
841
+ headers=dict(_response.headers),
842
+ body=typing.cast(
843
+ typing.Any,
844
+ construct_type(
845
+ type_=typing.Any, # type: ignore
846
+ object_=_response.json(),
847
+ ),
848
+ ),
849
+ )
850
+ if _response.status_code == 422:
851
+ raise UnprocessableEntityError(
852
+ headers=dict(_response.headers),
853
+ body=typing.cast(
854
+ ErrorModel,
855
+ construct_type(
856
+ type_=ErrorModel, # type: ignore
857
+ object_=_response.json(),
858
+ ),
859
+ ),
860
+ )
861
+ if _response.status_code == 500:
862
+ raise InternalServerError(
863
+ headers=dict(_response.headers),
864
+ body=typing.cast(
865
+ typing.Any,
866
+ construct_type(
867
+ type_=typing.Any, # type: ignore
868
+ object_=_response.json(),
869
+ ),
870
+ ),
871
+ )
872
+ _response_json = _response.json()
873
+ except JSONDecodeError:
874
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
875
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
876
+
877
+ def get_loyalty_program_tier(
878
+ self,
879
+ pid: str,
880
+ *,
881
+ version: typing.Optional[GetLoyaltyProgramTierRequestVersion] = None,
882
+ request_options: typing.Optional[RequestOptions] = None,
883
+ ) -> HttpResponse[GetLoyaltyProgramTierResponse]:
884
+ """
885
+ Returns the list of tiers defined within the loyalty program.
886
+
887
+ Parameters
888
+ ----------
889
+ pid : str
890
+ Loyalty Program ID
891
+
892
+ version : typing.Optional[GetLoyaltyProgramTierRequestVersion]
893
+ Select 'active' to retrieve list of all tiers which are live for clients. Select draft to retrieve list of all non deleted tiers.
894
+
895
+ request_options : typing.Optional[RequestOptions]
896
+ Request-specific configuration.
897
+
898
+ Returns
899
+ -------
900
+ HttpResponse[GetLoyaltyProgramTierResponse]
901
+ Tier list successfully retrieved
902
+ """
903
+ _response = self._client_wrapper.httpx_client.request(
904
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tiers",
905
+ method="GET",
906
+ params={
907
+ "version": version,
908
+ },
909
+ request_options=request_options,
910
+ )
911
+ try:
912
+ if 200 <= _response.status_code < 300:
913
+ _data = typing.cast(
914
+ GetLoyaltyProgramTierResponse,
915
+ construct_type(
916
+ type_=GetLoyaltyProgramTierResponse, # type: ignore
917
+ object_=_response.json(),
918
+ ),
919
+ )
920
+ return HttpResponse(response=_response, data=_data)
921
+ if _response.status_code == 401:
922
+ raise UnauthorizedError(
923
+ headers=dict(_response.headers),
924
+ body=typing.cast(
925
+ typing.Any,
926
+ construct_type(
927
+ type_=typing.Any, # type: ignore
928
+ object_=_response.json(),
929
+ ),
930
+ ),
931
+ )
932
+ if _response.status_code == 403:
933
+ raise ForbiddenError(
934
+ headers=dict(_response.headers),
935
+ body=typing.cast(
936
+ typing.Any,
937
+ construct_type(
938
+ type_=typing.Any, # type: ignore
939
+ object_=_response.json(),
940
+ ),
941
+ ),
942
+ )
943
+ if _response.status_code == 404:
944
+ raise NotFoundError(
945
+ headers=dict(_response.headers),
946
+ body=typing.cast(
947
+ typing.Any,
948
+ construct_type(
949
+ type_=typing.Any, # type: ignore
950
+ object_=_response.json(),
951
+ ),
952
+ ),
953
+ )
954
+ if _response.status_code == 422:
955
+ raise UnprocessableEntityError(
956
+ headers=dict(_response.headers),
957
+ body=typing.cast(
958
+ ErrorModel,
959
+ construct_type(
960
+ type_=ErrorModel, # type: ignore
961
+ object_=_response.json(),
962
+ ),
963
+ ),
964
+ )
965
+ if _response.status_code == 500:
966
+ raise InternalServerError(
967
+ headers=dict(_response.headers),
968
+ body=typing.cast(
969
+ typing.Any,
970
+ construct_type(
971
+ type_=typing.Any, # type: ignore
972
+ object_=_response.json(),
973
+ ),
974
+ ),
975
+ )
976
+ _response_json = _response.json()
977
+ except JSONDecodeError:
978
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
979
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
980
+
981
+ def update_tier(
982
+ self,
983
+ pid: str,
984
+ tid: str,
985
+ *,
986
+ access_conditions: typing.Sequence[UpdateTierRequestAccessConditionsItem],
987
+ name: str,
988
+ tier_rewards: typing.Sequence[UpdateTierRequestTierRewardsItem],
989
+ image_ref: typing.Optional[str] = OMIT,
990
+ request_options: typing.Optional[RequestOptions] = None,
991
+ ) -> HttpResponse[Tier]:
992
+ """
993
+ Modifies an existing tier for the specified tier group *(The changes will take effect with the next publication of the loyalty program)*
994
+
995
+ Parameters
996
+ ----------
997
+ pid : str
998
+ Loyalty Program ID
999
+
1000
+ tid : str
1001
+ Tier ID
1002
+
1003
+ access_conditions : typing.Sequence[UpdateTierRequestAccessConditionsItem]
1004
+
1005
+ name : str
1006
+ Name of the tier to be created
1007
+
1008
+ tier_rewards : typing.Sequence[UpdateTierRequestTierRewardsItem]
1009
+
1010
+ image_ref : typing.Optional[str]
1011
+ Image of the tier
1012
+
1013
+ request_options : typing.Optional[RequestOptions]
1014
+ Request-specific configuration.
1015
+
1016
+ Returns
1017
+ -------
1018
+ HttpResponse[Tier]
1019
+ Tier successfully updated
1020
+ """
1021
+ _response = self._client_wrapper.httpx_client.request(
1022
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tiers/{jsonable_encoder(tid)}",
1023
+ method="PUT",
1024
+ json={
1025
+ "accessConditions": convert_and_respect_annotation_metadata(
1026
+ object_=access_conditions,
1027
+ annotation=typing.Sequence[UpdateTierRequestAccessConditionsItem],
1028
+ direction="write",
1029
+ ),
1030
+ "imageRef": image_ref,
1031
+ "name": name,
1032
+ "tierRewards": convert_and_respect_annotation_metadata(
1033
+ object_=tier_rewards,
1034
+ annotation=typing.Sequence[UpdateTierRequestTierRewardsItem],
1035
+ direction="write",
1036
+ ),
1037
+ },
1038
+ headers={
1039
+ "content-type": "application/json",
1040
+ },
1041
+ request_options=request_options,
1042
+ omit=OMIT,
1043
+ )
1044
+ try:
1045
+ if 200 <= _response.status_code < 300:
1046
+ _data = typing.cast(
1047
+ Tier,
1048
+ construct_type(
1049
+ type_=Tier, # type: ignore
1050
+ object_=_response.json(),
1051
+ ),
1052
+ )
1053
+ return HttpResponse(response=_response, data=_data)
1054
+ if _response.status_code == 401:
1055
+ raise UnauthorizedError(
1056
+ headers=dict(_response.headers),
1057
+ body=typing.cast(
1058
+ typing.Any,
1059
+ construct_type(
1060
+ type_=typing.Any, # type: ignore
1061
+ object_=_response.json(),
1062
+ ),
1063
+ ),
1064
+ )
1065
+ if _response.status_code == 403:
1066
+ raise ForbiddenError(
1067
+ headers=dict(_response.headers),
1068
+ body=typing.cast(
1069
+ typing.Any,
1070
+ construct_type(
1071
+ type_=typing.Any, # type: ignore
1072
+ object_=_response.json(),
1073
+ ),
1074
+ ),
1075
+ )
1076
+ if _response.status_code == 404:
1077
+ raise NotFoundError(
1078
+ headers=dict(_response.headers),
1079
+ body=typing.cast(
1080
+ typing.Any,
1081
+ construct_type(
1082
+ type_=typing.Any, # type: ignore
1083
+ object_=_response.json(),
1084
+ ),
1085
+ ),
1086
+ )
1087
+ if _response.status_code == 422:
1088
+ raise UnprocessableEntityError(
1089
+ headers=dict(_response.headers),
1090
+ body=typing.cast(
1091
+ ErrorModel,
1092
+ construct_type(
1093
+ type_=ErrorModel, # type: ignore
1094
+ object_=_response.json(),
1095
+ ),
1096
+ ),
1097
+ )
1098
+ if _response.status_code == 500:
1099
+ raise InternalServerError(
1100
+ headers=dict(_response.headers),
1101
+ body=typing.cast(
1102
+ typing.Any,
1103
+ construct_type(
1104
+ type_=typing.Any, # type: ignore
1105
+ object_=_response.json(),
1106
+ ),
1107
+ ),
1108
+ )
1109
+ _response_json = _response.json()
1110
+ except JSONDecodeError:
1111
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1112
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1113
+
1114
+ def delete_tier(
1115
+ self, pid: str, tid: str, *, request_options: typing.Optional[RequestOptions] = None
1116
+ ) -> HttpResponse[None]:
1117
+ """
1118
+ Deletes a tier from a loyalty program tier group. *(The changes will take effect with the next publication of the loyalty program)*
1119
+
1120
+ Parameters
1121
+ ----------
1122
+ pid : str
1123
+ Loyalty Program ID
1124
+
1125
+ tid : str
1126
+ Tier ID
1127
+
1128
+ request_options : typing.Optional[RequestOptions]
1129
+ Request-specific configuration.
1130
+
1131
+ Returns
1132
+ -------
1133
+ HttpResponse[None]
1134
+ """
1135
+ _response = self._client_wrapper.httpx_client.request(
1136
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tiers/{jsonable_encoder(tid)}",
1137
+ method="DELETE",
1138
+ request_options=request_options,
1139
+ )
1140
+ try:
1141
+ if 200 <= _response.status_code < 300:
1142
+ return HttpResponse(response=_response, data=None)
1143
+ if _response.status_code == 401:
1144
+ raise UnauthorizedError(
1145
+ headers=dict(_response.headers),
1146
+ body=typing.cast(
1147
+ typing.Any,
1148
+ construct_type(
1149
+ type_=typing.Any, # type: ignore
1150
+ object_=_response.json(),
1151
+ ),
1152
+ ),
1153
+ )
1154
+ if _response.status_code == 403:
1155
+ raise ForbiddenError(
1156
+ headers=dict(_response.headers),
1157
+ body=typing.cast(
1158
+ typing.Any,
1159
+ construct_type(
1160
+ type_=typing.Any, # type: ignore
1161
+ object_=_response.json(),
1162
+ ),
1163
+ ),
1164
+ )
1165
+ if _response.status_code == 404:
1166
+ raise NotFoundError(
1167
+ headers=dict(_response.headers),
1168
+ body=typing.cast(
1169
+ typing.Any,
1170
+ construct_type(
1171
+ type_=typing.Any, # type: ignore
1172
+ object_=_response.json(),
1173
+ ),
1174
+ ),
1175
+ )
1176
+ if _response.status_code == 422:
1177
+ raise UnprocessableEntityError(
1178
+ headers=dict(_response.headers),
1179
+ body=typing.cast(
1180
+ ErrorModel,
1181
+ construct_type(
1182
+ type_=ErrorModel, # type: ignore
1183
+ object_=_response.json(),
1184
+ ),
1185
+ ),
1186
+ )
1187
+ if _response.status_code == 500:
1188
+ raise InternalServerError(
1189
+ headers=dict(_response.headers),
1190
+ body=typing.cast(
1191
+ typing.Any,
1192
+ construct_type(
1193
+ type_=typing.Any, # type: ignore
1194
+ object_=_response.json(),
1195
+ ),
1196
+ ),
1197
+ )
1198
+ _response_json = _response.json()
1199
+ except JSONDecodeError:
1200
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1201
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1202
+
1203
+
1204
+ class AsyncRawTierClient:
1205
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
1206
+ self._client_wrapper = client_wrapper
1207
+
1208
+ async def add_subscription_to_tier(
1209
+ self, pid: str, cid: str, tid: str, *, request_options: typing.Optional[RequestOptions] = None
1210
+ ) -> AsyncHttpResponse[AddSubscriptionToTierResponse]:
1211
+ """
1212
+ Manually assigns a tier to a specific membership.
1213
+
1214
+ Parameters
1215
+ ----------
1216
+ pid : str
1217
+ Loyalty Program ID
1218
+
1219
+ cid : str
1220
+ Contact ID
1221
+
1222
+ tid : str
1223
+ Tier ID
1224
+
1225
+ request_options : typing.Optional[RequestOptions]
1226
+ Request-specific configuration.
1227
+
1228
+ Returns
1229
+ -------
1230
+ AsyncHttpResponse[AddSubscriptionToTierResponse]
1231
+ Tier successfully assigned to membership
1232
+ """
1233
+ _response = await self._client_wrapper.httpx_client.request(
1234
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/contacts/{jsonable_encoder(cid)}/tiers/{jsonable_encoder(tid)}",
1235
+ method="POST",
1236
+ request_options=request_options,
1237
+ )
1238
+ try:
1239
+ if 200 <= _response.status_code < 300:
1240
+ _data = typing.cast(
1241
+ AddSubscriptionToTierResponse,
1242
+ construct_type(
1243
+ type_=AddSubscriptionToTierResponse, # type: ignore
1244
+ object_=_response.json(),
1245
+ ),
1246
+ )
1247
+ return AsyncHttpResponse(response=_response, data=_data)
1248
+ if _response.status_code == 401:
1249
+ raise UnauthorizedError(
1250
+ headers=dict(_response.headers),
1251
+ body=typing.cast(
1252
+ typing.Any,
1253
+ construct_type(
1254
+ type_=typing.Any, # type: ignore
1255
+ object_=_response.json(),
1256
+ ),
1257
+ ),
1258
+ )
1259
+ if _response.status_code == 403:
1260
+ raise ForbiddenError(
1261
+ headers=dict(_response.headers),
1262
+ body=typing.cast(
1263
+ typing.Any,
1264
+ construct_type(
1265
+ type_=typing.Any, # type: ignore
1266
+ object_=_response.json(),
1267
+ ),
1268
+ ),
1269
+ )
1270
+ if _response.status_code == 404:
1271
+ raise NotFoundError(
1272
+ headers=dict(_response.headers),
1273
+ body=typing.cast(
1274
+ typing.Any,
1275
+ construct_type(
1276
+ type_=typing.Any, # type: ignore
1277
+ object_=_response.json(),
1278
+ ),
1279
+ ),
1280
+ )
1281
+ if _response.status_code == 409:
1282
+ raise ConflictError(
1283
+ headers=dict(_response.headers),
1284
+ body=typing.cast(
1285
+ ErrorModel,
1286
+ construct_type(
1287
+ type_=ErrorModel, # type: ignore
1288
+ object_=_response.json(),
1289
+ ),
1290
+ ),
1291
+ )
1292
+ if _response.status_code == 422:
1293
+ raise UnprocessableEntityError(
1294
+ headers=dict(_response.headers),
1295
+ body=typing.cast(
1296
+ ErrorModel,
1297
+ construct_type(
1298
+ type_=ErrorModel, # type: ignore
1299
+ object_=_response.json(),
1300
+ ),
1301
+ ),
1302
+ )
1303
+ if _response.status_code == 424:
1304
+ raise FailedDependencyError(
1305
+ headers=dict(_response.headers),
1306
+ body=typing.cast(
1307
+ typing.Any,
1308
+ construct_type(
1309
+ type_=typing.Any, # type: ignore
1310
+ object_=_response.json(),
1311
+ ),
1312
+ ),
1313
+ )
1314
+ if _response.status_code == 500:
1315
+ raise InternalServerError(
1316
+ headers=dict(_response.headers),
1317
+ body=typing.cast(
1318
+ typing.Any,
1319
+ construct_type(
1320
+ type_=typing.Any, # type: ignore
1321
+ object_=_response.json(),
1322
+ ),
1323
+ ),
1324
+ )
1325
+ _response_json = _response.json()
1326
+ except JSONDecodeError:
1327
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1328
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1329
+
1330
+ async def get_list_of_tier_groups(
1331
+ self,
1332
+ pid: str,
1333
+ *,
1334
+ version: typing.Optional[GetListOfTierGroupsRequestVersion] = None,
1335
+ request_options: typing.Optional[RequestOptions] = None,
1336
+ ) -> AsyncHttpResponse[GetListOfTierGroupsResponse]:
1337
+ """
1338
+ Returns the list of tier groups defined within the loyalty program.
1339
+
1340
+ Parameters
1341
+ ----------
1342
+ pid : str
1343
+ Loyalty Program ID
1344
+
1345
+ version : typing.Optional[GetListOfTierGroupsRequestVersion]
1346
+ Select 'active' to retrieve list of all tier groups which are live for clients. Select draft to retrieve list of all non deleted tier groups.
1347
+
1348
+ request_options : typing.Optional[RequestOptions]
1349
+ Request-specific configuration.
1350
+
1351
+ Returns
1352
+ -------
1353
+ AsyncHttpResponse[GetListOfTierGroupsResponse]
1354
+ Tier group list successfully retrieved
1355
+ """
1356
+ _response = await self._client_wrapper.httpx_client.request(
1357
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tier-groups",
1358
+ method="GET",
1359
+ params={
1360
+ "version": version,
1361
+ },
1362
+ request_options=request_options,
1363
+ )
1364
+ try:
1365
+ if 200 <= _response.status_code < 300:
1366
+ _data = typing.cast(
1367
+ GetListOfTierGroupsResponse,
1368
+ construct_type(
1369
+ type_=GetListOfTierGroupsResponse, # type: ignore
1370
+ object_=_response.json(),
1371
+ ),
1372
+ )
1373
+ return AsyncHttpResponse(response=_response, data=_data)
1374
+ if _response.status_code == 401:
1375
+ raise UnauthorizedError(
1376
+ headers=dict(_response.headers),
1377
+ body=typing.cast(
1378
+ typing.Any,
1379
+ construct_type(
1380
+ type_=typing.Any, # type: ignore
1381
+ object_=_response.json(),
1382
+ ),
1383
+ ),
1384
+ )
1385
+ if _response.status_code == 403:
1386
+ raise ForbiddenError(
1387
+ headers=dict(_response.headers),
1388
+ body=typing.cast(
1389
+ typing.Any,
1390
+ construct_type(
1391
+ type_=typing.Any, # type: ignore
1392
+ object_=_response.json(),
1393
+ ),
1394
+ ),
1395
+ )
1396
+ if _response.status_code == 404:
1397
+ raise NotFoundError(
1398
+ headers=dict(_response.headers),
1399
+ body=typing.cast(
1400
+ typing.Any,
1401
+ construct_type(
1402
+ type_=typing.Any, # type: ignore
1403
+ object_=_response.json(),
1404
+ ),
1405
+ ),
1406
+ )
1407
+ if _response.status_code == 422:
1408
+ raise UnprocessableEntityError(
1409
+ headers=dict(_response.headers),
1410
+ body=typing.cast(
1411
+ ErrorModel,
1412
+ construct_type(
1413
+ type_=ErrorModel, # type: ignore
1414
+ object_=_response.json(),
1415
+ ),
1416
+ ),
1417
+ )
1418
+ if _response.status_code == 500:
1419
+ raise InternalServerError(
1420
+ headers=dict(_response.headers),
1421
+ body=typing.cast(
1422
+ typing.Any,
1423
+ construct_type(
1424
+ type_=typing.Any, # type: ignore
1425
+ object_=_response.json(),
1426
+ ),
1427
+ ),
1428
+ )
1429
+ _response_json = _response.json()
1430
+ except JSONDecodeError:
1431
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1432
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1433
+
1434
+ async def create_tier_group(
1435
+ self,
1436
+ pid: str,
1437
+ *,
1438
+ name: str,
1439
+ downgrade_strategy: typing.Optional[CreateTierGroupRequestDowngradeStrategy] = OMIT,
1440
+ tier_order: typing.Optional[typing.Sequence[str]] = OMIT,
1441
+ upgrade_strategy: typing.Optional[CreateTierGroupRequestUpgradeStrategy] = OMIT,
1442
+ request_options: typing.Optional[RequestOptions] = None,
1443
+ ) -> AsyncHttpResponse[TierGroup]:
1444
+ """
1445
+ Creates a new tier group in a loyalty program. *(The changes will take effect with the next publication of the loyalty program)*
1446
+
1447
+ Parameters
1448
+ ----------
1449
+ pid : str
1450
+ Loyalty Program ID
1451
+
1452
+ name : str
1453
+ Name of the tier group
1454
+
1455
+ downgrade_strategy : typing.Optional[CreateTierGroupRequestDowngradeStrategy]
1456
+ Select real_time to downgrade tier on real time balance updates. Select membership_anniversary to downgrade tier on subscription anniversary. Select tier_anniversary to downgrade tier on tier anniversary.
1457
+
1458
+ tier_order : typing.Optional[typing.Sequence[str]]
1459
+ Order of the tiers in the group in ascending order
1460
+
1461
+ upgrade_strategy : typing.Optional[CreateTierGroupRequestUpgradeStrategy]
1462
+ Select real_time to upgrade tier on real time balance updates. Select membership_anniversary to upgrade tier on subscription anniversary. Select tier_anniversary to upgrade tier on tier anniversary.
1463
+
1464
+ request_options : typing.Optional[RequestOptions]
1465
+ Request-specific configuration.
1466
+
1467
+ Returns
1468
+ -------
1469
+ AsyncHttpResponse[TierGroup]
1470
+ Tier group Successfully created
1471
+ """
1472
+ _response = await self._client_wrapper.httpx_client.request(
1473
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tier-groups",
1474
+ method="POST",
1475
+ json={
1476
+ "downgradeStrategy": downgrade_strategy,
1477
+ "name": name,
1478
+ "tierOrder": tier_order,
1479
+ "upgradeStrategy": upgrade_strategy,
1480
+ },
1481
+ headers={
1482
+ "content-type": "application/json",
1483
+ },
1484
+ request_options=request_options,
1485
+ omit=OMIT,
1486
+ )
1487
+ try:
1488
+ if 200 <= _response.status_code < 300:
1489
+ _data = typing.cast(
1490
+ TierGroup,
1491
+ construct_type(
1492
+ type_=TierGroup, # type: ignore
1493
+ object_=_response.json(),
1494
+ ),
1495
+ )
1496
+ return AsyncHttpResponse(response=_response, data=_data)
1497
+ if _response.status_code == 400:
1498
+ raise BadRequestError(
1499
+ headers=dict(_response.headers),
1500
+ body=typing.cast(
1501
+ typing.Any,
1502
+ construct_type(
1503
+ type_=typing.Any, # type: ignore
1504
+ object_=_response.json(),
1505
+ ),
1506
+ ),
1507
+ )
1508
+ if _response.status_code == 401:
1509
+ raise UnauthorizedError(
1510
+ headers=dict(_response.headers),
1511
+ body=typing.cast(
1512
+ typing.Any,
1513
+ construct_type(
1514
+ type_=typing.Any, # type: ignore
1515
+ object_=_response.json(),
1516
+ ),
1517
+ ),
1518
+ )
1519
+ if _response.status_code == 403:
1520
+ raise ForbiddenError(
1521
+ headers=dict(_response.headers),
1522
+ body=typing.cast(
1523
+ typing.Any,
1524
+ construct_type(
1525
+ type_=typing.Any, # type: ignore
1526
+ object_=_response.json(),
1527
+ ),
1528
+ ),
1529
+ )
1530
+ if _response.status_code == 404:
1531
+ raise NotFoundError(
1532
+ headers=dict(_response.headers),
1533
+ body=typing.cast(
1534
+ typing.Any,
1535
+ construct_type(
1536
+ type_=typing.Any, # type: ignore
1537
+ object_=_response.json(),
1538
+ ),
1539
+ ),
1540
+ )
1541
+ if _response.status_code == 409:
1542
+ raise ConflictError(
1543
+ headers=dict(_response.headers),
1544
+ body=typing.cast(
1545
+ ErrorModel,
1546
+ construct_type(
1547
+ type_=ErrorModel, # type: ignore
1548
+ object_=_response.json(),
1549
+ ),
1550
+ ),
1551
+ )
1552
+ if _response.status_code == 422:
1553
+ raise UnprocessableEntityError(
1554
+ headers=dict(_response.headers),
1555
+ body=typing.cast(
1556
+ ErrorModel,
1557
+ construct_type(
1558
+ type_=ErrorModel, # type: ignore
1559
+ object_=_response.json(),
1560
+ ),
1561
+ ),
1562
+ )
1563
+ _response_json = _response.json()
1564
+ except JSONDecodeError:
1565
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1566
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1567
+
1568
+ async def get_tier_group(
1569
+ self,
1570
+ pid: str,
1571
+ gid: str,
1572
+ *,
1573
+ version: typing.Optional[GetTierGroupRequestVersion] = None,
1574
+ request_options: typing.Optional[RequestOptions] = None,
1575
+ ) -> AsyncHttpResponse[TierGroup]:
1576
+ """
1577
+ Returns tier group information.
1578
+
1579
+ Parameters
1580
+ ----------
1581
+ pid : str
1582
+ Loyalty Program ID
1583
+
1584
+ gid : str
1585
+ Tier group ID
1586
+
1587
+ version : typing.Optional[GetTierGroupRequestVersion]
1588
+ Select active to retrieve active version of tier group. Select draft to retrieve latest changes in tier group.
1589
+
1590
+ request_options : typing.Optional[RequestOptions]
1591
+ Request-specific configuration.
1592
+
1593
+ Returns
1594
+ -------
1595
+ AsyncHttpResponse[TierGroup]
1596
+ Tier group information successfully retrieved
1597
+ """
1598
+ _response = await self._client_wrapper.httpx_client.request(
1599
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tier-groups/{jsonable_encoder(gid)}",
1600
+ method="GET",
1601
+ params={
1602
+ "version": version,
1603
+ },
1604
+ request_options=request_options,
1605
+ )
1606
+ try:
1607
+ if 200 <= _response.status_code < 300:
1608
+ _data = typing.cast(
1609
+ TierGroup,
1610
+ construct_type(
1611
+ type_=TierGroup, # type: ignore
1612
+ object_=_response.json(),
1613
+ ),
1614
+ )
1615
+ return AsyncHttpResponse(response=_response, data=_data)
1616
+ if _response.status_code == 401:
1617
+ raise UnauthorizedError(
1618
+ headers=dict(_response.headers),
1619
+ body=typing.cast(
1620
+ typing.Any,
1621
+ construct_type(
1622
+ type_=typing.Any, # type: ignore
1623
+ object_=_response.json(),
1624
+ ),
1625
+ ),
1626
+ )
1627
+ if _response.status_code == 403:
1628
+ raise ForbiddenError(
1629
+ headers=dict(_response.headers),
1630
+ body=typing.cast(
1631
+ typing.Any,
1632
+ construct_type(
1633
+ type_=typing.Any, # type: ignore
1634
+ object_=_response.json(),
1635
+ ),
1636
+ ),
1637
+ )
1638
+ if _response.status_code == 404:
1639
+ raise NotFoundError(
1640
+ headers=dict(_response.headers),
1641
+ body=typing.cast(
1642
+ typing.Any,
1643
+ construct_type(
1644
+ type_=typing.Any, # type: ignore
1645
+ object_=_response.json(),
1646
+ ),
1647
+ ),
1648
+ )
1649
+ if _response.status_code == 422:
1650
+ raise UnprocessableEntityError(
1651
+ headers=dict(_response.headers),
1652
+ body=typing.cast(
1653
+ ErrorModel,
1654
+ construct_type(
1655
+ type_=ErrorModel, # type: ignore
1656
+ object_=_response.json(),
1657
+ ),
1658
+ ),
1659
+ )
1660
+ if _response.status_code == 500:
1661
+ raise InternalServerError(
1662
+ headers=dict(_response.headers),
1663
+ body=typing.cast(
1664
+ typing.Any,
1665
+ construct_type(
1666
+ type_=typing.Any, # type: ignore
1667
+ object_=_response.json(),
1668
+ ),
1669
+ ),
1670
+ )
1671
+ _response_json = _response.json()
1672
+ except JSONDecodeError:
1673
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1674
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1675
+
1676
+ async def update_tier_group(
1677
+ self,
1678
+ pid: str,
1679
+ gid: str,
1680
+ *,
1681
+ downgrade_strategy: UpdateTierGroupRequestDowngradeStrategy,
1682
+ name: str,
1683
+ tier_order: typing.Sequence[str],
1684
+ upgrade_strategy: UpdateTierGroupRequestUpgradeStrategy,
1685
+ request_options: typing.Optional[RequestOptions] = None,
1686
+ ) -> AsyncHttpResponse[TierGroup]:
1687
+ """
1688
+ Updates a tier group from a loyalty program. *(The changes will take effect with the next publication of the loyalty program)*
1689
+
1690
+ Parameters
1691
+ ----------
1692
+ pid : str
1693
+ Loyalty Program ID
1694
+
1695
+ gid : str
1696
+ Tier group ID
1697
+
1698
+ downgrade_strategy : UpdateTierGroupRequestDowngradeStrategy
1699
+ Select real_time to downgrade tier on real time balance updates. Select membership_anniversary to downgrade tier on subscription anniversary. Select tier_anniversary to downgrade tier on tier anniversary.
1700
+
1701
+ name : str
1702
+ Name of the tier group
1703
+
1704
+ tier_order : typing.Sequence[str]
1705
+ Order of the tiers in the group in ascending order
1706
+
1707
+ upgrade_strategy : UpdateTierGroupRequestUpgradeStrategy
1708
+ Select real_time to upgrade tier on real time balance updates. Select membership_anniversary to upgrade tier on subscription anniversary. Select tier_anniversary to upgrade tier on tier anniversary.
1709
+
1710
+ request_options : typing.Optional[RequestOptions]
1711
+ Request-specific configuration.
1712
+
1713
+ Returns
1714
+ -------
1715
+ AsyncHttpResponse[TierGroup]
1716
+ Tier group successfully updated
1717
+ """
1718
+ _response = await self._client_wrapper.httpx_client.request(
1719
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tier-groups/{jsonable_encoder(gid)}",
1720
+ method="PUT",
1721
+ json={
1722
+ "downgradeStrategy": downgrade_strategy,
1723
+ "name": name,
1724
+ "tierOrder": tier_order,
1725
+ "upgradeStrategy": upgrade_strategy,
1726
+ },
1727
+ headers={
1728
+ "content-type": "application/json",
1729
+ },
1730
+ request_options=request_options,
1731
+ omit=OMIT,
1732
+ )
1733
+ try:
1734
+ if 200 <= _response.status_code < 300:
1735
+ _data = typing.cast(
1736
+ TierGroup,
1737
+ construct_type(
1738
+ type_=TierGroup, # type: ignore
1739
+ object_=_response.json(),
1740
+ ),
1741
+ )
1742
+ return AsyncHttpResponse(response=_response, data=_data)
1743
+ if _response.status_code == 401:
1744
+ raise UnauthorizedError(
1745
+ headers=dict(_response.headers),
1746
+ body=typing.cast(
1747
+ typing.Any,
1748
+ construct_type(
1749
+ type_=typing.Any, # type: ignore
1750
+ object_=_response.json(),
1751
+ ),
1752
+ ),
1753
+ )
1754
+ if _response.status_code == 403:
1755
+ raise ForbiddenError(
1756
+ headers=dict(_response.headers),
1757
+ body=typing.cast(
1758
+ typing.Any,
1759
+ construct_type(
1760
+ type_=typing.Any, # type: ignore
1761
+ object_=_response.json(),
1762
+ ),
1763
+ ),
1764
+ )
1765
+ if _response.status_code == 404:
1766
+ raise NotFoundError(
1767
+ headers=dict(_response.headers),
1768
+ body=typing.cast(
1769
+ typing.Any,
1770
+ construct_type(
1771
+ type_=typing.Any, # type: ignore
1772
+ object_=_response.json(),
1773
+ ),
1774
+ ),
1775
+ )
1776
+ if _response.status_code == 422:
1777
+ raise UnprocessableEntityError(
1778
+ headers=dict(_response.headers),
1779
+ body=typing.cast(
1780
+ ErrorModel,
1781
+ construct_type(
1782
+ type_=ErrorModel, # type: ignore
1783
+ object_=_response.json(),
1784
+ ),
1785
+ ),
1786
+ )
1787
+ if _response.status_code == 500:
1788
+ raise InternalServerError(
1789
+ headers=dict(_response.headers),
1790
+ body=typing.cast(
1791
+ typing.Any,
1792
+ construct_type(
1793
+ type_=typing.Any, # type: ignore
1794
+ object_=_response.json(),
1795
+ ),
1796
+ ),
1797
+ )
1798
+ _response_json = _response.json()
1799
+ except JSONDecodeError:
1800
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1801
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1802
+
1803
+ async def delete_tier_group(
1804
+ self, pid: str, gid: str, *, request_options: typing.Optional[RequestOptions] = None
1805
+ ) -> AsyncHttpResponse[None]:
1806
+ """
1807
+ Deletes a tier group from a loyalty program. *(The changes will take effect with the next publication of the loyalty program)*
1808
+
1809
+ Parameters
1810
+ ----------
1811
+ pid : str
1812
+ Loyalty Program ID
1813
+
1814
+ gid : str
1815
+ Tier group ID
1816
+
1817
+ request_options : typing.Optional[RequestOptions]
1818
+ Request-specific configuration.
1819
+
1820
+ Returns
1821
+ -------
1822
+ AsyncHttpResponse[None]
1823
+ """
1824
+ _response = await self._client_wrapper.httpx_client.request(
1825
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tier-groups/{jsonable_encoder(gid)}",
1826
+ method="DELETE",
1827
+ request_options=request_options,
1828
+ )
1829
+ try:
1830
+ if 200 <= _response.status_code < 300:
1831
+ return AsyncHttpResponse(response=_response, data=None)
1832
+ if _response.status_code == 401:
1833
+ raise UnauthorizedError(
1834
+ headers=dict(_response.headers),
1835
+ body=typing.cast(
1836
+ typing.Any,
1837
+ construct_type(
1838
+ type_=typing.Any, # type: ignore
1839
+ object_=_response.json(),
1840
+ ),
1841
+ ),
1842
+ )
1843
+ if _response.status_code == 403:
1844
+ raise ForbiddenError(
1845
+ headers=dict(_response.headers),
1846
+ body=typing.cast(
1847
+ typing.Any,
1848
+ construct_type(
1849
+ type_=typing.Any, # type: ignore
1850
+ object_=_response.json(),
1851
+ ),
1852
+ ),
1853
+ )
1854
+ if _response.status_code == 404:
1855
+ raise NotFoundError(
1856
+ headers=dict(_response.headers),
1857
+ body=typing.cast(
1858
+ typing.Any,
1859
+ construct_type(
1860
+ type_=typing.Any, # type: ignore
1861
+ object_=_response.json(),
1862
+ ),
1863
+ ),
1864
+ )
1865
+ if _response.status_code == 409:
1866
+ raise ConflictError(
1867
+ headers=dict(_response.headers),
1868
+ body=typing.cast(
1869
+ ErrorModel,
1870
+ construct_type(
1871
+ type_=ErrorModel, # type: ignore
1872
+ object_=_response.json(),
1873
+ ),
1874
+ ),
1875
+ )
1876
+ if _response.status_code == 422:
1877
+ raise UnprocessableEntityError(
1878
+ headers=dict(_response.headers),
1879
+ body=typing.cast(
1880
+ ErrorModel,
1881
+ construct_type(
1882
+ type_=ErrorModel, # type: ignore
1883
+ object_=_response.json(),
1884
+ ),
1885
+ ),
1886
+ )
1887
+ if _response.status_code == 500:
1888
+ raise InternalServerError(
1889
+ headers=dict(_response.headers),
1890
+ body=typing.cast(
1891
+ typing.Any,
1892
+ construct_type(
1893
+ type_=typing.Any, # type: ignore
1894
+ object_=_response.json(),
1895
+ ),
1896
+ ),
1897
+ )
1898
+ _response_json = _response.json()
1899
+ except JSONDecodeError:
1900
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1901
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1902
+
1903
+ async def create_tier_for_tier_group(
1904
+ self,
1905
+ pid: str,
1906
+ gid: str,
1907
+ *,
1908
+ access_conditions: typing.Sequence[CreateTierForTierGroupRequestAccessConditionsItem],
1909
+ name: str,
1910
+ image_ref: typing.Optional[str] = OMIT,
1911
+ tier_rewards: typing.Optional[typing.Sequence[CreateTierForTierGroupRequestTierRewardsItem]] = OMIT,
1912
+ request_options: typing.Optional[RequestOptions] = None,
1913
+ ) -> AsyncHttpResponse[Tier]:
1914
+ """
1915
+ Creates a new tier in a loyalty program tier group. *(The changes will take effect with the next publication of the loyalty program)*
1916
+
1917
+ Parameters
1918
+ ----------
1919
+ pid : str
1920
+ Loyalty Program ID
1921
+
1922
+ gid : str
1923
+ Tier group ID
1924
+
1925
+ access_conditions : typing.Sequence[CreateTierForTierGroupRequestAccessConditionsItem]
1926
+
1927
+ name : str
1928
+ Name of the tier to be created
1929
+
1930
+ image_ref : typing.Optional[str]
1931
+ Image of the tier
1932
+
1933
+ tier_rewards : typing.Optional[typing.Sequence[CreateTierForTierGroupRequestTierRewardsItem]]
1934
+
1935
+ request_options : typing.Optional[RequestOptions]
1936
+ Request-specific configuration.
1937
+
1938
+ Returns
1939
+ -------
1940
+ AsyncHttpResponse[Tier]
1941
+ Tier successfully created
1942
+ """
1943
+ _response = await self._client_wrapper.httpx_client.request(
1944
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tier-groups/{jsonable_encoder(gid)}/tiers",
1945
+ method="POST",
1946
+ json={
1947
+ "accessConditions": convert_and_respect_annotation_metadata(
1948
+ object_=access_conditions,
1949
+ annotation=typing.Sequence[CreateTierForTierGroupRequestAccessConditionsItem],
1950
+ direction="write",
1951
+ ),
1952
+ "imageRef": image_ref,
1953
+ "name": name,
1954
+ "tierRewards": convert_and_respect_annotation_metadata(
1955
+ object_=tier_rewards,
1956
+ annotation=typing.Sequence[CreateTierForTierGroupRequestTierRewardsItem],
1957
+ direction="write",
1958
+ ),
1959
+ },
1960
+ headers={
1961
+ "content-type": "application/json",
1962
+ },
1963
+ request_options=request_options,
1964
+ omit=OMIT,
1965
+ )
1966
+ try:
1967
+ if 200 <= _response.status_code < 300:
1968
+ _data = typing.cast(
1969
+ Tier,
1970
+ construct_type(
1971
+ type_=Tier, # type: ignore
1972
+ object_=_response.json(),
1973
+ ),
1974
+ )
1975
+ return AsyncHttpResponse(response=_response, data=_data)
1976
+ if _response.status_code == 401:
1977
+ raise UnauthorizedError(
1978
+ headers=dict(_response.headers),
1979
+ body=typing.cast(
1980
+ typing.Any,
1981
+ construct_type(
1982
+ type_=typing.Any, # type: ignore
1983
+ object_=_response.json(),
1984
+ ),
1985
+ ),
1986
+ )
1987
+ if _response.status_code == 403:
1988
+ raise ForbiddenError(
1989
+ headers=dict(_response.headers),
1990
+ body=typing.cast(
1991
+ typing.Any,
1992
+ construct_type(
1993
+ type_=typing.Any, # type: ignore
1994
+ object_=_response.json(),
1995
+ ),
1996
+ ),
1997
+ )
1998
+ if _response.status_code == 404:
1999
+ raise NotFoundError(
2000
+ headers=dict(_response.headers),
2001
+ body=typing.cast(
2002
+ typing.Any,
2003
+ construct_type(
2004
+ type_=typing.Any, # type: ignore
2005
+ object_=_response.json(),
2006
+ ),
2007
+ ),
2008
+ )
2009
+ if _response.status_code == 422:
2010
+ raise UnprocessableEntityError(
2011
+ headers=dict(_response.headers),
2012
+ body=typing.cast(
2013
+ ErrorModel,
2014
+ construct_type(
2015
+ type_=ErrorModel, # type: ignore
2016
+ object_=_response.json(),
2017
+ ),
2018
+ ),
2019
+ )
2020
+ if _response.status_code == 500:
2021
+ raise InternalServerError(
2022
+ headers=dict(_response.headers),
2023
+ body=typing.cast(
2024
+ typing.Any,
2025
+ construct_type(
2026
+ type_=typing.Any, # type: ignore
2027
+ object_=_response.json(),
2028
+ ),
2029
+ ),
2030
+ )
2031
+ _response_json = _response.json()
2032
+ except JSONDecodeError:
2033
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2034
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2035
+
2036
+ async def get_loyalty_program_tier(
2037
+ self,
2038
+ pid: str,
2039
+ *,
2040
+ version: typing.Optional[GetLoyaltyProgramTierRequestVersion] = None,
2041
+ request_options: typing.Optional[RequestOptions] = None,
2042
+ ) -> AsyncHttpResponse[GetLoyaltyProgramTierResponse]:
2043
+ """
2044
+ Returns the list of tiers defined within the loyalty program.
2045
+
2046
+ Parameters
2047
+ ----------
2048
+ pid : str
2049
+ Loyalty Program ID
2050
+
2051
+ version : typing.Optional[GetLoyaltyProgramTierRequestVersion]
2052
+ Select 'active' to retrieve list of all tiers which are live for clients. Select draft to retrieve list of all non deleted tiers.
2053
+
2054
+ request_options : typing.Optional[RequestOptions]
2055
+ Request-specific configuration.
2056
+
2057
+ Returns
2058
+ -------
2059
+ AsyncHttpResponse[GetLoyaltyProgramTierResponse]
2060
+ Tier list successfully retrieved
2061
+ """
2062
+ _response = await self._client_wrapper.httpx_client.request(
2063
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tiers",
2064
+ method="GET",
2065
+ params={
2066
+ "version": version,
2067
+ },
2068
+ request_options=request_options,
2069
+ )
2070
+ try:
2071
+ if 200 <= _response.status_code < 300:
2072
+ _data = typing.cast(
2073
+ GetLoyaltyProgramTierResponse,
2074
+ construct_type(
2075
+ type_=GetLoyaltyProgramTierResponse, # type: ignore
2076
+ object_=_response.json(),
2077
+ ),
2078
+ )
2079
+ return AsyncHttpResponse(response=_response, data=_data)
2080
+ if _response.status_code == 401:
2081
+ raise UnauthorizedError(
2082
+ headers=dict(_response.headers),
2083
+ body=typing.cast(
2084
+ typing.Any,
2085
+ construct_type(
2086
+ type_=typing.Any, # type: ignore
2087
+ object_=_response.json(),
2088
+ ),
2089
+ ),
2090
+ )
2091
+ if _response.status_code == 403:
2092
+ raise ForbiddenError(
2093
+ headers=dict(_response.headers),
2094
+ body=typing.cast(
2095
+ typing.Any,
2096
+ construct_type(
2097
+ type_=typing.Any, # type: ignore
2098
+ object_=_response.json(),
2099
+ ),
2100
+ ),
2101
+ )
2102
+ if _response.status_code == 404:
2103
+ raise NotFoundError(
2104
+ headers=dict(_response.headers),
2105
+ body=typing.cast(
2106
+ typing.Any,
2107
+ construct_type(
2108
+ type_=typing.Any, # type: ignore
2109
+ object_=_response.json(),
2110
+ ),
2111
+ ),
2112
+ )
2113
+ if _response.status_code == 422:
2114
+ raise UnprocessableEntityError(
2115
+ headers=dict(_response.headers),
2116
+ body=typing.cast(
2117
+ ErrorModel,
2118
+ construct_type(
2119
+ type_=ErrorModel, # type: ignore
2120
+ object_=_response.json(),
2121
+ ),
2122
+ ),
2123
+ )
2124
+ if _response.status_code == 500:
2125
+ raise InternalServerError(
2126
+ headers=dict(_response.headers),
2127
+ body=typing.cast(
2128
+ typing.Any,
2129
+ construct_type(
2130
+ type_=typing.Any, # type: ignore
2131
+ object_=_response.json(),
2132
+ ),
2133
+ ),
2134
+ )
2135
+ _response_json = _response.json()
2136
+ except JSONDecodeError:
2137
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2138
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2139
+
2140
+ async def update_tier(
2141
+ self,
2142
+ pid: str,
2143
+ tid: str,
2144
+ *,
2145
+ access_conditions: typing.Sequence[UpdateTierRequestAccessConditionsItem],
2146
+ name: str,
2147
+ tier_rewards: typing.Sequence[UpdateTierRequestTierRewardsItem],
2148
+ image_ref: typing.Optional[str] = OMIT,
2149
+ request_options: typing.Optional[RequestOptions] = None,
2150
+ ) -> AsyncHttpResponse[Tier]:
2151
+ """
2152
+ Modifies an existing tier for the specified tier group *(The changes will take effect with the next publication of the loyalty program)*
2153
+
2154
+ Parameters
2155
+ ----------
2156
+ pid : str
2157
+ Loyalty Program ID
2158
+
2159
+ tid : str
2160
+ Tier ID
2161
+
2162
+ access_conditions : typing.Sequence[UpdateTierRequestAccessConditionsItem]
2163
+
2164
+ name : str
2165
+ Name of the tier to be created
2166
+
2167
+ tier_rewards : typing.Sequence[UpdateTierRequestTierRewardsItem]
2168
+
2169
+ image_ref : typing.Optional[str]
2170
+ Image of the tier
2171
+
2172
+ request_options : typing.Optional[RequestOptions]
2173
+ Request-specific configuration.
2174
+
2175
+ Returns
2176
+ -------
2177
+ AsyncHttpResponse[Tier]
2178
+ Tier successfully updated
2179
+ """
2180
+ _response = await self._client_wrapper.httpx_client.request(
2181
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tiers/{jsonable_encoder(tid)}",
2182
+ method="PUT",
2183
+ json={
2184
+ "accessConditions": convert_and_respect_annotation_metadata(
2185
+ object_=access_conditions,
2186
+ annotation=typing.Sequence[UpdateTierRequestAccessConditionsItem],
2187
+ direction="write",
2188
+ ),
2189
+ "imageRef": image_ref,
2190
+ "name": name,
2191
+ "tierRewards": convert_and_respect_annotation_metadata(
2192
+ object_=tier_rewards,
2193
+ annotation=typing.Sequence[UpdateTierRequestTierRewardsItem],
2194
+ direction="write",
2195
+ ),
2196
+ },
2197
+ headers={
2198
+ "content-type": "application/json",
2199
+ },
2200
+ request_options=request_options,
2201
+ omit=OMIT,
2202
+ )
2203
+ try:
2204
+ if 200 <= _response.status_code < 300:
2205
+ _data = typing.cast(
2206
+ Tier,
2207
+ construct_type(
2208
+ type_=Tier, # type: ignore
2209
+ object_=_response.json(),
2210
+ ),
2211
+ )
2212
+ return AsyncHttpResponse(response=_response, data=_data)
2213
+ if _response.status_code == 401:
2214
+ raise UnauthorizedError(
2215
+ headers=dict(_response.headers),
2216
+ body=typing.cast(
2217
+ typing.Any,
2218
+ construct_type(
2219
+ type_=typing.Any, # type: ignore
2220
+ object_=_response.json(),
2221
+ ),
2222
+ ),
2223
+ )
2224
+ if _response.status_code == 403:
2225
+ raise ForbiddenError(
2226
+ headers=dict(_response.headers),
2227
+ body=typing.cast(
2228
+ typing.Any,
2229
+ construct_type(
2230
+ type_=typing.Any, # type: ignore
2231
+ object_=_response.json(),
2232
+ ),
2233
+ ),
2234
+ )
2235
+ if _response.status_code == 404:
2236
+ raise NotFoundError(
2237
+ headers=dict(_response.headers),
2238
+ body=typing.cast(
2239
+ typing.Any,
2240
+ construct_type(
2241
+ type_=typing.Any, # type: ignore
2242
+ object_=_response.json(),
2243
+ ),
2244
+ ),
2245
+ )
2246
+ if _response.status_code == 422:
2247
+ raise UnprocessableEntityError(
2248
+ headers=dict(_response.headers),
2249
+ body=typing.cast(
2250
+ ErrorModel,
2251
+ construct_type(
2252
+ type_=ErrorModel, # type: ignore
2253
+ object_=_response.json(),
2254
+ ),
2255
+ ),
2256
+ )
2257
+ if _response.status_code == 500:
2258
+ raise InternalServerError(
2259
+ headers=dict(_response.headers),
2260
+ body=typing.cast(
2261
+ typing.Any,
2262
+ construct_type(
2263
+ type_=typing.Any, # type: ignore
2264
+ object_=_response.json(),
2265
+ ),
2266
+ ),
2267
+ )
2268
+ _response_json = _response.json()
2269
+ except JSONDecodeError:
2270
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2271
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2272
+
2273
+ async def delete_tier(
2274
+ self, pid: str, tid: str, *, request_options: typing.Optional[RequestOptions] = None
2275
+ ) -> AsyncHttpResponse[None]:
2276
+ """
2277
+ Deletes a tier from a loyalty program tier group. *(The changes will take effect with the next publication of the loyalty program)*
2278
+
2279
+ Parameters
2280
+ ----------
2281
+ pid : str
2282
+ Loyalty Program ID
2283
+
2284
+ tid : str
2285
+ Tier ID
2286
+
2287
+ request_options : typing.Optional[RequestOptions]
2288
+ Request-specific configuration.
2289
+
2290
+ Returns
2291
+ -------
2292
+ AsyncHttpResponse[None]
2293
+ """
2294
+ _response = await self._client_wrapper.httpx_client.request(
2295
+ f"loyalty/tier/programs/{jsonable_encoder(pid)}/tiers/{jsonable_encoder(tid)}",
2296
+ method="DELETE",
2297
+ request_options=request_options,
2298
+ )
2299
+ try:
2300
+ if 200 <= _response.status_code < 300:
2301
+ return AsyncHttpResponse(response=_response, data=None)
2302
+ if _response.status_code == 401:
2303
+ raise UnauthorizedError(
2304
+ headers=dict(_response.headers),
2305
+ body=typing.cast(
2306
+ typing.Any,
2307
+ construct_type(
2308
+ type_=typing.Any, # type: ignore
2309
+ object_=_response.json(),
2310
+ ),
2311
+ ),
2312
+ )
2313
+ if _response.status_code == 403:
2314
+ raise ForbiddenError(
2315
+ headers=dict(_response.headers),
2316
+ body=typing.cast(
2317
+ typing.Any,
2318
+ construct_type(
2319
+ type_=typing.Any, # type: ignore
2320
+ object_=_response.json(),
2321
+ ),
2322
+ ),
2323
+ )
2324
+ if _response.status_code == 404:
2325
+ raise NotFoundError(
2326
+ headers=dict(_response.headers),
2327
+ body=typing.cast(
2328
+ typing.Any,
2329
+ construct_type(
2330
+ type_=typing.Any, # type: ignore
2331
+ object_=_response.json(),
2332
+ ),
2333
+ ),
2334
+ )
2335
+ if _response.status_code == 422:
2336
+ raise UnprocessableEntityError(
2337
+ headers=dict(_response.headers),
2338
+ body=typing.cast(
2339
+ ErrorModel,
2340
+ construct_type(
2341
+ type_=ErrorModel, # type: ignore
2342
+ object_=_response.json(),
2343
+ ),
2344
+ ),
2345
+ )
2346
+ if _response.status_code == 500:
2347
+ raise InternalServerError(
2348
+ headers=dict(_response.headers),
2349
+ body=typing.cast(
2350
+ typing.Any,
2351
+ construct_type(
2352
+ type_=typing.Any, # type: ignore
2353
+ object_=_response.json(),
2354
+ ),
2355
+ ),
2356
+ )
2357
+ _response_json = _response.json()
2358
+ except JSONDecodeError:
2359
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2360
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)