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,2526 @@
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.unchecked_base_model import construct_type
12
+ from ..errors.bad_request_error import BadRequestError
13
+ from ..errors.conflict_error import ConflictError
14
+ from ..errors.forbidden_error import ForbiddenError
15
+ from ..errors.internal_server_error import InternalServerError
16
+ from ..errors.not_found_error import NotFoundError
17
+ from ..errors.unauthorized_error import UnauthorizedError
18
+ from ..errors.unprocessable_entity_error import UnprocessableEntityError
19
+ from ..types.error_model import ErrorModel
20
+ from ..types.loyalty_program import LoyaltyProgram
21
+ from .types.get_lp_list_request_sort_field import GetLpListRequestSortField
22
+ from .types.get_lp_list_response import GetLpListResponse
23
+ from .types.get_parameter_subscription_info_response import GetParameterSubscriptionInfoResponse
24
+ from .types.subscribe_member_to_a_subscription_response import SubscribeMemberToASubscriptionResponse
25
+ from .types.subscribe_to_loyalty_program_response import SubscribeToLoyaltyProgramResponse
26
+
27
+ # this is used as the default value for optional parameters
28
+ OMIT = typing.cast(typing.Any, ...)
29
+
30
+
31
+ class RawProgramClient:
32
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
33
+ self._client_wrapper = client_wrapper
34
+
35
+ def get_lp_list(
36
+ self,
37
+ *,
38
+ limit: typing.Optional[int] = None,
39
+ offset: typing.Optional[int] = None,
40
+ sort_field: typing.Optional[GetLpListRequestSortField] = None,
41
+ sort: typing.Optional[str] = None,
42
+ request_options: typing.Optional[RequestOptions] = None,
43
+ ) -> HttpResponse[GetLpListResponse]:
44
+ """
45
+ Returns list of loyalty programs
46
+
47
+ Parameters
48
+ ----------
49
+ limit : typing.Optional[int]
50
+ Number of documents per page
51
+
52
+ offset : typing.Optional[int]
53
+ Index of the first document in the page
54
+
55
+ sort_field : typing.Optional[GetLpListRequestSortField]
56
+ Sort documents by field
57
+
58
+ sort : typing.Optional[str]
59
+ Sort documents by field
60
+
61
+ request_options : typing.Optional[RequestOptions]
62
+ Request-specific configuration.
63
+
64
+ Returns
65
+ -------
66
+ HttpResponse[GetLpListResponse]
67
+ Loyalty Program page
68
+ """
69
+ _response = self._client_wrapper.httpx_client.request(
70
+ "loyalty/config/programs",
71
+ method="GET",
72
+ params={
73
+ "limit": limit,
74
+ "offset": offset,
75
+ "sort_field": sort_field,
76
+ "sort": sort,
77
+ },
78
+ request_options=request_options,
79
+ )
80
+ try:
81
+ if 200 <= _response.status_code < 300:
82
+ _data = typing.cast(
83
+ GetLpListResponse,
84
+ construct_type(
85
+ type_=GetLpListResponse, # type: ignore
86
+ object_=_response.json(),
87
+ ),
88
+ )
89
+ return HttpResponse(response=_response, data=_data)
90
+ if _response.status_code == 400:
91
+ raise BadRequestError(
92
+ headers=dict(_response.headers),
93
+ body=typing.cast(
94
+ typing.Any,
95
+ construct_type(
96
+ type_=typing.Any, # type: ignore
97
+ object_=_response.json(),
98
+ ),
99
+ ),
100
+ )
101
+ if _response.status_code == 401:
102
+ raise UnauthorizedError(
103
+ headers=dict(_response.headers),
104
+ body=typing.cast(
105
+ typing.Any,
106
+ construct_type(
107
+ type_=typing.Any, # type: ignore
108
+ object_=_response.json(),
109
+ ),
110
+ ),
111
+ )
112
+ if _response.status_code == 403:
113
+ raise ForbiddenError(
114
+ headers=dict(_response.headers),
115
+ body=typing.cast(
116
+ typing.Any,
117
+ construct_type(
118
+ type_=typing.Any, # type: ignore
119
+ object_=_response.json(),
120
+ ),
121
+ ),
122
+ )
123
+ if _response.status_code == 404:
124
+ raise NotFoundError(
125
+ headers=dict(_response.headers),
126
+ body=typing.cast(
127
+ typing.Any,
128
+ construct_type(
129
+ type_=typing.Any, # type: ignore
130
+ object_=_response.json(),
131
+ ),
132
+ ),
133
+ )
134
+ if _response.status_code == 422:
135
+ raise UnprocessableEntityError(
136
+ headers=dict(_response.headers),
137
+ body=typing.cast(
138
+ ErrorModel,
139
+ construct_type(
140
+ type_=ErrorModel, # type: ignore
141
+ object_=_response.json(),
142
+ ),
143
+ ),
144
+ )
145
+ if _response.status_code == 500:
146
+ raise InternalServerError(
147
+ headers=dict(_response.headers),
148
+ body=typing.cast(
149
+ typing.Any,
150
+ construct_type(
151
+ type_=typing.Any, # type: ignore
152
+ object_=_response.json(),
153
+ ),
154
+ ),
155
+ )
156
+ _response_json = _response.json()
157
+ except JSONDecodeError:
158
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
159
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
160
+
161
+ def create_new_lp(
162
+ self,
163
+ *,
164
+ name: str,
165
+ description: typing.Optional[str] = OMIT,
166
+ document_id: typing.Optional[str] = OMIT,
167
+ meta: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
168
+ request_options: typing.Optional[RequestOptions] = None,
169
+ ) -> HttpResponse[LoyaltyProgram]:
170
+ """
171
+ Creates loyalty program
172
+
173
+ Parameters
174
+ ----------
175
+ name : str
176
+ Required name of the loyalty program (max 128 chars).
177
+
178
+ description : typing.Optional[str]
179
+ Optional description of the loyalty program (max 256 chars).
180
+
181
+ document_id : typing.Optional[str]
182
+ Optional unique document ID.
183
+
184
+ meta : typing.Optional[typing.Dict[str, typing.Any]]
185
+ Optional metadata related to the loyalty program.
186
+
187
+ request_options : typing.Optional[RequestOptions]
188
+ Request-specific configuration.
189
+
190
+ Returns
191
+ -------
192
+ HttpResponse[LoyaltyProgram]
193
+ Successfully created loyalty program.
194
+ """
195
+ _response = self._client_wrapper.httpx_client.request(
196
+ "loyalty/config/programs",
197
+ method="POST",
198
+ json={
199
+ "description": description,
200
+ "documentId": document_id,
201
+ "meta": meta,
202
+ "name": name,
203
+ },
204
+ headers={
205
+ "content-type": "application/json",
206
+ },
207
+ request_options=request_options,
208
+ omit=OMIT,
209
+ )
210
+ try:
211
+ if 200 <= _response.status_code < 300:
212
+ _data = typing.cast(
213
+ LoyaltyProgram,
214
+ construct_type(
215
+ type_=LoyaltyProgram, # type: ignore
216
+ object_=_response.json(),
217
+ ),
218
+ )
219
+ return HttpResponse(response=_response, data=_data)
220
+ if _response.status_code == 401:
221
+ raise UnauthorizedError(
222
+ headers=dict(_response.headers),
223
+ body=typing.cast(
224
+ typing.Any,
225
+ construct_type(
226
+ type_=typing.Any, # type: ignore
227
+ object_=_response.json(),
228
+ ),
229
+ ),
230
+ )
231
+ if _response.status_code == 403:
232
+ raise ForbiddenError(
233
+ headers=dict(_response.headers),
234
+ body=typing.cast(
235
+ typing.Any,
236
+ construct_type(
237
+ type_=typing.Any, # type: ignore
238
+ object_=_response.json(),
239
+ ),
240
+ ),
241
+ )
242
+ if _response.status_code == 409:
243
+ raise ConflictError(
244
+ headers=dict(_response.headers),
245
+ body=typing.cast(
246
+ ErrorModel,
247
+ construct_type(
248
+ type_=ErrorModel, # type: ignore
249
+ object_=_response.json(),
250
+ ),
251
+ ),
252
+ )
253
+ if _response.status_code == 422:
254
+ raise UnprocessableEntityError(
255
+ headers=dict(_response.headers),
256
+ body=typing.cast(
257
+ ErrorModel,
258
+ construct_type(
259
+ type_=ErrorModel, # type: ignore
260
+ object_=_response.json(),
261
+ ),
262
+ ),
263
+ )
264
+ if _response.status_code == 500:
265
+ raise InternalServerError(
266
+ headers=dict(_response.headers),
267
+ body=typing.cast(
268
+ typing.Any,
269
+ construct_type(
270
+ type_=typing.Any, # type: ignore
271
+ object_=_response.json(),
272
+ ),
273
+ ),
274
+ )
275
+ _response_json = _response.json()
276
+ except JSONDecodeError:
277
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
278
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
279
+
280
+ def get_loyalty_program_info(
281
+ self, pid: str, *, request_options: typing.Optional[RequestOptions] = None
282
+ ) -> HttpResponse[LoyaltyProgram]:
283
+ """
284
+ Returns loyalty program
285
+
286
+ Parameters
287
+ ----------
288
+ pid : str
289
+ Loyalty Program ID. A unique identifier for the loyalty program.
290
+
291
+ request_options : typing.Optional[RequestOptions]
292
+ Request-specific configuration.
293
+
294
+ Returns
295
+ -------
296
+ HttpResponse[LoyaltyProgram]
297
+ Successfully retrieved loyalty program.
298
+ """
299
+ _response = self._client_wrapper.httpx_client.request(
300
+ f"loyalty/config/programs/{jsonable_encoder(pid)}",
301
+ method="GET",
302
+ request_options=request_options,
303
+ )
304
+ try:
305
+ if 200 <= _response.status_code < 300:
306
+ _data = typing.cast(
307
+ LoyaltyProgram,
308
+ construct_type(
309
+ type_=LoyaltyProgram, # type: ignore
310
+ object_=_response.json(),
311
+ ),
312
+ )
313
+ return HttpResponse(response=_response, data=_data)
314
+ if _response.status_code == 401:
315
+ raise UnauthorizedError(
316
+ headers=dict(_response.headers),
317
+ body=typing.cast(
318
+ typing.Any,
319
+ construct_type(
320
+ type_=typing.Any, # type: ignore
321
+ object_=_response.json(),
322
+ ),
323
+ ),
324
+ )
325
+ if _response.status_code == 403:
326
+ raise ForbiddenError(
327
+ headers=dict(_response.headers),
328
+ body=typing.cast(
329
+ typing.Any,
330
+ construct_type(
331
+ type_=typing.Any, # type: ignore
332
+ object_=_response.json(),
333
+ ),
334
+ ),
335
+ )
336
+ if _response.status_code == 404:
337
+ raise NotFoundError(
338
+ headers=dict(_response.headers),
339
+ body=typing.cast(
340
+ typing.Any,
341
+ construct_type(
342
+ type_=typing.Any, # type: ignore
343
+ object_=_response.json(),
344
+ ),
345
+ ),
346
+ )
347
+ if _response.status_code == 422:
348
+ raise UnprocessableEntityError(
349
+ headers=dict(_response.headers),
350
+ body=typing.cast(
351
+ ErrorModel,
352
+ construct_type(
353
+ type_=ErrorModel, # type: ignore
354
+ object_=_response.json(),
355
+ ),
356
+ ),
357
+ )
358
+ if _response.status_code == 500:
359
+ raise InternalServerError(
360
+ headers=dict(_response.headers),
361
+ body=typing.cast(
362
+ typing.Any,
363
+ construct_type(
364
+ type_=typing.Any, # type: ignore
365
+ object_=_response.json(),
366
+ ),
367
+ ),
368
+ )
369
+ _response_json = _response.json()
370
+ except JSONDecodeError:
371
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
372
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
373
+
374
+ def update_loyalty_program(
375
+ self,
376
+ pid: str,
377
+ *,
378
+ name: str,
379
+ description: typing.Optional[str] = OMIT,
380
+ meta: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
381
+ request_options: typing.Optional[RequestOptions] = None,
382
+ ) -> HttpResponse[LoyaltyProgram]:
383
+ """
384
+ Updates loyalty program
385
+
386
+ Parameters
387
+ ----------
388
+ pid : str
389
+ Loyalty Program ID. A unique identifier for the loyalty program.
390
+
391
+ name : str
392
+ Loyalty Program name
393
+
394
+ description : typing.Optional[str]
395
+ Loyalty Program description
396
+
397
+ meta : typing.Optional[typing.Dict[str, typing.Any]]
398
+ Loyalty Program meta data
399
+
400
+ request_options : typing.Optional[RequestOptions]
401
+ Request-specific configuration.
402
+
403
+ Returns
404
+ -------
405
+ HttpResponse[LoyaltyProgram]
406
+ Successfully updated loyalty program.
407
+ """
408
+ _response = self._client_wrapper.httpx_client.request(
409
+ f"loyalty/config/programs/{jsonable_encoder(pid)}",
410
+ method="PUT",
411
+ json={
412
+ "description": description,
413
+ "meta": meta,
414
+ "name": name,
415
+ },
416
+ headers={
417
+ "content-type": "application/json",
418
+ },
419
+ request_options=request_options,
420
+ omit=OMIT,
421
+ )
422
+ try:
423
+ if 200 <= _response.status_code < 300:
424
+ _data = typing.cast(
425
+ LoyaltyProgram,
426
+ construct_type(
427
+ type_=LoyaltyProgram, # type: ignore
428
+ object_=_response.json(),
429
+ ),
430
+ )
431
+ return HttpResponse(response=_response, data=_data)
432
+ if _response.status_code == 401:
433
+ raise UnauthorizedError(
434
+ headers=dict(_response.headers),
435
+ body=typing.cast(
436
+ typing.Any,
437
+ construct_type(
438
+ type_=typing.Any, # type: ignore
439
+ object_=_response.json(),
440
+ ),
441
+ ),
442
+ )
443
+ if _response.status_code == 403:
444
+ raise ForbiddenError(
445
+ headers=dict(_response.headers),
446
+ body=typing.cast(
447
+ typing.Any,
448
+ construct_type(
449
+ type_=typing.Any, # type: ignore
450
+ object_=_response.json(),
451
+ ),
452
+ ),
453
+ )
454
+ if _response.status_code == 404:
455
+ raise NotFoundError(
456
+ headers=dict(_response.headers),
457
+ body=typing.cast(
458
+ typing.Any,
459
+ construct_type(
460
+ type_=typing.Any, # type: ignore
461
+ object_=_response.json(),
462
+ ),
463
+ ),
464
+ )
465
+ if _response.status_code == 409:
466
+ raise ConflictError(
467
+ headers=dict(_response.headers),
468
+ body=typing.cast(
469
+ ErrorModel,
470
+ construct_type(
471
+ type_=ErrorModel, # type: ignore
472
+ object_=_response.json(),
473
+ ),
474
+ ),
475
+ )
476
+ if _response.status_code == 422:
477
+ raise UnprocessableEntityError(
478
+ headers=dict(_response.headers),
479
+ body=typing.cast(
480
+ ErrorModel,
481
+ construct_type(
482
+ type_=ErrorModel, # type: ignore
483
+ object_=_response.json(),
484
+ ),
485
+ ),
486
+ )
487
+ if _response.status_code == 500:
488
+ raise InternalServerError(
489
+ headers=dict(_response.headers),
490
+ body=typing.cast(
491
+ typing.Any,
492
+ construct_type(
493
+ type_=typing.Any, # type: ignore
494
+ object_=_response.json(),
495
+ ),
496
+ ),
497
+ )
498
+ _response_json = _response.json()
499
+ except JSONDecodeError:
500
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
501
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
502
+
503
+ def delete_loyalty_program(
504
+ self, pid: str, *, request_options: typing.Optional[RequestOptions] = None
505
+ ) -> HttpResponse[None]:
506
+ """
507
+ Deletes Loyalty Program
508
+
509
+ Parameters
510
+ ----------
511
+ pid : str
512
+ Loyalty Program ID. A unique identifier for the loyalty program.
513
+
514
+ request_options : typing.Optional[RequestOptions]
515
+ Request-specific configuration.
516
+
517
+ Returns
518
+ -------
519
+ HttpResponse[None]
520
+ """
521
+ _response = self._client_wrapper.httpx_client.request(
522
+ f"loyalty/config/programs/{jsonable_encoder(pid)}",
523
+ method="DELETE",
524
+ request_options=request_options,
525
+ )
526
+ try:
527
+ if 200 <= _response.status_code < 300:
528
+ return HttpResponse(response=_response, data=None)
529
+ if _response.status_code == 401:
530
+ raise UnauthorizedError(
531
+ headers=dict(_response.headers),
532
+ body=typing.cast(
533
+ typing.Any,
534
+ construct_type(
535
+ type_=typing.Any, # type: ignore
536
+ object_=_response.json(),
537
+ ),
538
+ ),
539
+ )
540
+ if _response.status_code == 403:
541
+ raise ForbiddenError(
542
+ headers=dict(_response.headers),
543
+ body=typing.cast(
544
+ typing.Any,
545
+ construct_type(
546
+ type_=typing.Any, # type: ignore
547
+ object_=_response.json(),
548
+ ),
549
+ ),
550
+ )
551
+ if _response.status_code == 404:
552
+ raise NotFoundError(
553
+ headers=dict(_response.headers),
554
+ body=typing.cast(
555
+ typing.Any,
556
+ construct_type(
557
+ type_=typing.Any, # type: ignore
558
+ object_=_response.json(),
559
+ ),
560
+ ),
561
+ )
562
+ if _response.status_code == 422:
563
+ raise UnprocessableEntityError(
564
+ headers=dict(_response.headers),
565
+ body=typing.cast(
566
+ ErrorModel,
567
+ construct_type(
568
+ type_=ErrorModel, # type: ignore
569
+ object_=_response.json(),
570
+ ),
571
+ ),
572
+ )
573
+ if _response.status_code == 500:
574
+ raise InternalServerError(
575
+ headers=dict(_response.headers),
576
+ body=typing.cast(
577
+ typing.Any,
578
+ construct_type(
579
+ type_=typing.Any, # type: ignore
580
+ object_=_response.json(),
581
+ ),
582
+ ),
583
+ )
584
+ _response_json = _response.json()
585
+ except JSONDecodeError:
586
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
587
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
588
+
589
+ def partially_update_loyalty_program(
590
+ self,
591
+ pid: str,
592
+ *,
593
+ description: typing.Optional[str] = OMIT,
594
+ meta: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
595
+ name: typing.Optional[str] = OMIT,
596
+ request_options: typing.Optional[RequestOptions] = None,
597
+ ) -> HttpResponse[LoyaltyProgram]:
598
+ """
599
+ Partially updates loyalty program
600
+
601
+ Parameters
602
+ ----------
603
+ pid : str
604
+ Loyalty Program ID. A unique identifier for the loyalty program.
605
+
606
+ description : typing.Optional[str]
607
+ Loyalty Program description
608
+
609
+ meta : typing.Optional[typing.Dict[str, typing.Any]]
610
+ Loyalty Program meta data
611
+
612
+ name : typing.Optional[str]
613
+ Loyalty Program name
614
+
615
+ request_options : typing.Optional[RequestOptions]
616
+ Request-specific configuration.
617
+
618
+ Returns
619
+ -------
620
+ HttpResponse[LoyaltyProgram]
621
+ Successfully updated loyalty program.
622
+ """
623
+ _response = self._client_wrapper.httpx_client.request(
624
+ f"loyalty/config/programs/{jsonable_encoder(pid)}",
625
+ method="PATCH",
626
+ json={
627
+ "description": description,
628
+ "meta": meta,
629
+ "name": name,
630
+ },
631
+ headers={
632
+ "content-type": "application/json",
633
+ },
634
+ request_options=request_options,
635
+ omit=OMIT,
636
+ )
637
+ try:
638
+ if 200 <= _response.status_code < 300:
639
+ _data = typing.cast(
640
+ LoyaltyProgram,
641
+ construct_type(
642
+ type_=LoyaltyProgram, # type: ignore
643
+ object_=_response.json(),
644
+ ),
645
+ )
646
+ return HttpResponse(response=_response, data=_data)
647
+ if _response.status_code == 401:
648
+ raise UnauthorizedError(
649
+ headers=dict(_response.headers),
650
+ body=typing.cast(
651
+ typing.Any,
652
+ construct_type(
653
+ type_=typing.Any, # type: ignore
654
+ object_=_response.json(),
655
+ ),
656
+ ),
657
+ )
658
+ if _response.status_code == 403:
659
+ raise ForbiddenError(
660
+ headers=dict(_response.headers),
661
+ body=typing.cast(
662
+ typing.Any,
663
+ construct_type(
664
+ type_=typing.Any, # type: ignore
665
+ object_=_response.json(),
666
+ ),
667
+ ),
668
+ )
669
+ if _response.status_code == 404:
670
+ raise NotFoundError(
671
+ headers=dict(_response.headers),
672
+ body=typing.cast(
673
+ typing.Any,
674
+ construct_type(
675
+ type_=typing.Any, # type: ignore
676
+ object_=_response.json(),
677
+ ),
678
+ ),
679
+ )
680
+ if _response.status_code == 409:
681
+ raise ConflictError(
682
+ headers=dict(_response.headers),
683
+ body=typing.cast(
684
+ ErrorModel,
685
+ construct_type(
686
+ type_=ErrorModel, # type: ignore
687
+ object_=_response.json(),
688
+ ),
689
+ ),
690
+ )
691
+ if _response.status_code == 422:
692
+ raise UnprocessableEntityError(
693
+ headers=dict(_response.headers),
694
+ body=typing.cast(
695
+ ErrorModel,
696
+ construct_type(
697
+ type_=ErrorModel, # type: ignore
698
+ object_=_response.json(),
699
+ ),
700
+ ),
701
+ )
702
+ if _response.status_code == 500:
703
+ raise InternalServerError(
704
+ headers=dict(_response.headers),
705
+ body=typing.cast(
706
+ typing.Any,
707
+ construct_type(
708
+ type_=typing.Any, # type: ignore
709
+ object_=_response.json(),
710
+ ),
711
+ ),
712
+ )
713
+ _response_json = _response.json()
714
+ except JSONDecodeError:
715
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
716
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
717
+
718
+ def get_parameter_subscription_info(
719
+ self,
720
+ pid: str,
721
+ *,
722
+ contact_id: typing.Optional[str] = None,
723
+ params: typing.Optional[str] = None,
724
+ loyalty_subscription_id: typing.Optional[str] = None,
725
+ request_options: typing.Optional[RequestOptions] = None,
726
+ ) -> HttpResponse[GetParameterSubscriptionInfoResponse]:
727
+ """
728
+ Get Information of balances, tiers, rewards and subscription members for a subscription
729
+
730
+ Parameters
731
+ ----------
732
+ pid : str
733
+ Loyalty Program ID. A unique identifier for the loyalty program.
734
+
735
+ contact_id : typing.Optional[str]
736
+ The contact ID to filter by.
737
+
738
+ params : typing.Optional[str]
739
+ A list of filter parameters for querying the subscription info.
740
+
741
+ loyalty_subscription_id : typing.Optional[str]
742
+ The loyalty subscription ID to filter by.
743
+
744
+ request_options : typing.Optional[RequestOptions]
745
+ Request-specific configuration.
746
+
747
+ Returns
748
+ -------
749
+ HttpResponse[GetParameterSubscriptionInfoResponse]
750
+ Successfully retrieved subscription info.
751
+ """
752
+ _response = self._client_wrapper.httpx_client.request(
753
+ f"loyalty/config/programs/{jsonable_encoder(pid)}/account-info",
754
+ method="GET",
755
+ params={
756
+ "contactId": contact_id,
757
+ "params": params,
758
+ "loyaltySubscriptionId": loyalty_subscription_id,
759
+ },
760
+ request_options=request_options,
761
+ )
762
+ try:
763
+ if 200 <= _response.status_code < 300:
764
+ _data = typing.cast(
765
+ GetParameterSubscriptionInfoResponse,
766
+ construct_type(
767
+ type_=GetParameterSubscriptionInfoResponse, # type: ignore
768
+ object_=_response.json(),
769
+ ),
770
+ )
771
+ return HttpResponse(response=_response, data=_data)
772
+ if _response.status_code == 400:
773
+ raise BadRequestError(
774
+ headers=dict(_response.headers),
775
+ body=typing.cast(
776
+ typing.Any,
777
+ construct_type(
778
+ type_=typing.Any, # type: ignore
779
+ object_=_response.json(),
780
+ ),
781
+ ),
782
+ )
783
+ if _response.status_code == 401:
784
+ raise UnauthorizedError(
785
+ headers=dict(_response.headers),
786
+ body=typing.cast(
787
+ typing.Any,
788
+ construct_type(
789
+ type_=typing.Any, # type: ignore
790
+ object_=_response.json(),
791
+ ),
792
+ ),
793
+ )
794
+ if _response.status_code == 403:
795
+ raise ForbiddenError(
796
+ headers=dict(_response.headers),
797
+ body=typing.cast(
798
+ typing.Any,
799
+ construct_type(
800
+ type_=typing.Any, # type: ignore
801
+ object_=_response.json(),
802
+ ),
803
+ ),
804
+ )
805
+ if _response.status_code == 422:
806
+ raise UnprocessableEntityError(
807
+ headers=dict(_response.headers),
808
+ body=typing.cast(
809
+ ErrorModel,
810
+ construct_type(
811
+ type_=ErrorModel, # type: ignore
812
+ object_=_response.json(),
813
+ ),
814
+ ),
815
+ )
816
+ if _response.status_code == 500:
817
+ raise InternalServerError(
818
+ headers=dict(_response.headers),
819
+ body=typing.cast(
820
+ typing.Any,
821
+ construct_type(
822
+ type_=typing.Any, # type: ignore
823
+ object_=_response.json(),
824
+ ),
825
+ ),
826
+ )
827
+ _response_json = _response.json()
828
+ except JSONDecodeError:
829
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
830
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
831
+
832
+ def publish_loyalty_program(
833
+ self, pid: str, *, request_options: typing.Optional[RequestOptions] = None
834
+ ) -> HttpResponse[None]:
835
+ """
836
+ Publishes loyalty program
837
+
838
+ Parameters
839
+ ----------
840
+ pid : str
841
+ Loyalty Program ID. A unique identifier for the loyalty program.
842
+
843
+ request_options : typing.Optional[RequestOptions]
844
+ Request-specific configuration.
845
+
846
+ Returns
847
+ -------
848
+ HttpResponse[None]
849
+ """
850
+ _response = self._client_wrapper.httpx_client.request(
851
+ f"loyalty/config/programs/{jsonable_encoder(pid)}/publish",
852
+ method="POST",
853
+ request_options=request_options,
854
+ )
855
+ try:
856
+ if 200 <= _response.status_code < 300:
857
+ return HttpResponse(response=_response, data=None)
858
+ if _response.status_code == 401:
859
+ raise UnauthorizedError(
860
+ headers=dict(_response.headers),
861
+ body=typing.cast(
862
+ typing.Any,
863
+ construct_type(
864
+ type_=typing.Any, # type: ignore
865
+ object_=_response.json(),
866
+ ),
867
+ ),
868
+ )
869
+ if _response.status_code == 403:
870
+ raise ForbiddenError(
871
+ headers=dict(_response.headers),
872
+ body=typing.cast(
873
+ typing.Any,
874
+ construct_type(
875
+ type_=typing.Any, # type: ignore
876
+ object_=_response.json(),
877
+ ),
878
+ ),
879
+ )
880
+ if _response.status_code == 404:
881
+ raise NotFoundError(
882
+ headers=dict(_response.headers),
883
+ body=typing.cast(
884
+ typing.Any,
885
+ construct_type(
886
+ type_=typing.Any, # type: ignore
887
+ object_=_response.json(),
888
+ ),
889
+ ),
890
+ )
891
+ if _response.status_code == 422:
892
+ raise UnprocessableEntityError(
893
+ headers=dict(_response.headers),
894
+ body=typing.cast(
895
+ ErrorModel,
896
+ construct_type(
897
+ type_=ErrorModel, # type: ignore
898
+ object_=_response.json(),
899
+ ),
900
+ ),
901
+ )
902
+ if _response.status_code == 500:
903
+ raise InternalServerError(
904
+ headers=dict(_response.headers),
905
+ body=typing.cast(
906
+ typing.Any,
907
+ construct_type(
908
+ type_=typing.Any, # type: ignore
909
+ object_=_response.json(),
910
+ ),
911
+ ),
912
+ )
913
+ _response_json = _response.json()
914
+ except JSONDecodeError:
915
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
916
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
917
+
918
+ def subscribe_member_to_a_subscription(
919
+ self,
920
+ pid: str,
921
+ *,
922
+ member_contact_ids: typing.Sequence[int],
923
+ contact_id: typing.Optional[int] = OMIT,
924
+ loyalty_subscription_id: typing.Optional[str] = OMIT,
925
+ request_options: typing.Optional[RequestOptions] = None,
926
+ ) -> HttpResponse[SubscribeMemberToASubscriptionResponse]:
927
+ """
928
+ Add member to a subscription
929
+
930
+ Parameters
931
+ ----------
932
+ pid : str
933
+ Loyalty Program ID. A unique identifier for the loyalty program.
934
+
935
+ member_contact_ids : typing.Sequence[int]
936
+ Required, each item must be greater than or equal to 1
937
+
938
+ contact_id : typing.Optional[int]
939
+ Required if LoyaltySubscriptionId is not provided, must be greater than 0
940
+
941
+ loyalty_subscription_id : typing.Optional[str]
942
+ Required if ContactId is not provided, max length 64
943
+
944
+ request_options : typing.Optional[RequestOptions]
945
+ Request-specific configuration.
946
+
947
+ Returns
948
+ -------
949
+ HttpResponse[SubscribeMemberToASubscriptionResponse]
950
+ Successfully added subscription member.
951
+ """
952
+ _response = self._client_wrapper.httpx_client.request(
953
+ f"loyalty/config/programs/{jsonable_encoder(pid)}/subscription-members",
954
+ method="POST",
955
+ json={
956
+ "contactId": contact_id,
957
+ "loyaltySubscriptionId": loyalty_subscription_id,
958
+ "memberContactIds": member_contact_ids,
959
+ },
960
+ headers={
961
+ "content-type": "application/json",
962
+ },
963
+ request_options=request_options,
964
+ omit=OMIT,
965
+ )
966
+ try:
967
+ if 200 <= _response.status_code < 300:
968
+ _data = typing.cast(
969
+ SubscribeMemberToASubscriptionResponse,
970
+ construct_type(
971
+ type_=SubscribeMemberToASubscriptionResponse, # type: ignore
972
+ object_=_response.json(),
973
+ ),
974
+ )
975
+ return HttpResponse(response=_response, data=_data)
976
+ if _response.status_code == 401:
977
+ raise UnauthorizedError(
978
+ headers=dict(_response.headers),
979
+ body=typing.cast(
980
+ typing.Any,
981
+ construct_type(
982
+ type_=typing.Any, # type: ignore
983
+ object_=_response.json(),
984
+ ),
985
+ ),
986
+ )
987
+ if _response.status_code == 403:
988
+ raise ForbiddenError(
989
+ headers=dict(_response.headers),
990
+ body=typing.cast(
991
+ typing.Any,
992
+ construct_type(
993
+ type_=typing.Any, # type: ignore
994
+ object_=_response.json(),
995
+ ),
996
+ ),
997
+ )
998
+ if _response.status_code == 404:
999
+ raise NotFoundError(
1000
+ headers=dict(_response.headers),
1001
+ body=typing.cast(
1002
+ typing.Any,
1003
+ construct_type(
1004
+ type_=typing.Any, # type: ignore
1005
+ object_=_response.json(),
1006
+ ),
1007
+ ),
1008
+ )
1009
+ if _response.status_code == 409:
1010
+ raise ConflictError(
1011
+ headers=dict(_response.headers),
1012
+ body=typing.cast(
1013
+ ErrorModel,
1014
+ construct_type(
1015
+ type_=ErrorModel, # type: ignore
1016
+ object_=_response.json(),
1017
+ ),
1018
+ ),
1019
+ )
1020
+ if _response.status_code == 422:
1021
+ raise UnprocessableEntityError(
1022
+ headers=dict(_response.headers),
1023
+ body=typing.cast(
1024
+ ErrorModel,
1025
+ construct_type(
1026
+ type_=ErrorModel, # type: ignore
1027
+ object_=_response.json(),
1028
+ ),
1029
+ ),
1030
+ )
1031
+ if _response.status_code == 500:
1032
+ raise InternalServerError(
1033
+ headers=dict(_response.headers),
1034
+ body=typing.cast(
1035
+ typing.Any,
1036
+ construct_type(
1037
+ type_=typing.Any, # type: ignore
1038
+ object_=_response.json(),
1039
+ ),
1040
+ ),
1041
+ )
1042
+ _response_json = _response.json()
1043
+ except JSONDecodeError:
1044
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1045
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1046
+
1047
+ def delete_contact_members(
1048
+ self, pid: str, *, member_contact_ids: str, request_options: typing.Optional[RequestOptions] = None
1049
+ ) -> HttpResponse[None]:
1050
+ """
1051
+ Deletes member from a subscription
1052
+
1053
+ Parameters
1054
+ ----------
1055
+ pid : str
1056
+ Loyalty Program ID. A unique identifier for the loyalty program.
1057
+
1058
+ member_contact_ids : str
1059
+ Comma-separated list of member contact IDs to delete from the subscription.
1060
+
1061
+ request_options : typing.Optional[RequestOptions]
1062
+ Request-specific configuration.
1063
+
1064
+ Returns
1065
+ -------
1066
+ HttpResponse[None]
1067
+ """
1068
+ _response = self._client_wrapper.httpx_client.request(
1069
+ f"loyalty/config/programs/{jsonable_encoder(pid)}/subscription-members",
1070
+ method="DELETE",
1071
+ params={
1072
+ "memberContactIds": member_contact_ids,
1073
+ },
1074
+ request_options=request_options,
1075
+ )
1076
+ try:
1077
+ if 200 <= _response.status_code < 300:
1078
+ return HttpResponse(response=_response, data=None)
1079
+ if _response.status_code == 400:
1080
+ raise BadRequestError(
1081
+ headers=dict(_response.headers),
1082
+ body=typing.cast(
1083
+ typing.Any,
1084
+ construct_type(
1085
+ type_=typing.Any, # type: ignore
1086
+ object_=_response.json(),
1087
+ ),
1088
+ ),
1089
+ )
1090
+ if _response.status_code == 401:
1091
+ raise UnauthorizedError(
1092
+ headers=dict(_response.headers),
1093
+ body=typing.cast(
1094
+ typing.Any,
1095
+ construct_type(
1096
+ type_=typing.Any, # type: ignore
1097
+ object_=_response.json(),
1098
+ ),
1099
+ ),
1100
+ )
1101
+ if _response.status_code == 403:
1102
+ raise ForbiddenError(
1103
+ headers=dict(_response.headers),
1104
+ body=typing.cast(
1105
+ typing.Any,
1106
+ construct_type(
1107
+ type_=typing.Any, # type: ignore
1108
+ object_=_response.json(),
1109
+ ),
1110
+ ),
1111
+ )
1112
+ if _response.status_code == 404:
1113
+ raise NotFoundError(
1114
+ headers=dict(_response.headers),
1115
+ body=typing.cast(
1116
+ typing.Any,
1117
+ construct_type(
1118
+ type_=typing.Any, # type: ignore
1119
+ object_=_response.json(),
1120
+ ),
1121
+ ),
1122
+ )
1123
+ if _response.status_code == 422:
1124
+ raise UnprocessableEntityError(
1125
+ headers=dict(_response.headers),
1126
+ body=typing.cast(
1127
+ ErrorModel,
1128
+ construct_type(
1129
+ type_=ErrorModel, # type: ignore
1130
+ object_=_response.json(),
1131
+ ),
1132
+ ),
1133
+ )
1134
+ if _response.status_code == 500:
1135
+ raise InternalServerError(
1136
+ headers=dict(_response.headers),
1137
+ body=typing.cast(
1138
+ typing.Any,
1139
+ construct_type(
1140
+ type_=typing.Any, # type: ignore
1141
+ object_=_response.json(),
1142
+ ),
1143
+ ),
1144
+ )
1145
+ _response_json = _response.json()
1146
+ except JSONDecodeError:
1147
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1148
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1149
+
1150
+ def subscribe_to_loyalty_program(
1151
+ self,
1152
+ pid: str,
1153
+ *,
1154
+ contact_id: int,
1155
+ creation_date: typing.Optional[str] = OMIT,
1156
+ loyalty_subscription_id: typing.Optional[str] = OMIT,
1157
+ request_options: typing.Optional[RequestOptions] = None,
1158
+ ) -> HttpResponse[SubscribeToLoyaltyProgramResponse]:
1159
+ """
1160
+ Subscribes to a loyalty program
1161
+
1162
+ Parameters
1163
+ ----------
1164
+ pid : str
1165
+ Loyalty Program ID. A unique identifier for the loyalty program.
1166
+
1167
+ contact_id : int
1168
+ Required contact ID; must be greater than 0.
1169
+
1170
+ creation_date : typing.Optional[str]
1171
+ Optional custom date-time format.
1172
+
1173
+ loyalty_subscription_id : typing.Optional[str]
1174
+ Optional subscription ID (max length 64).
1175
+
1176
+ request_options : typing.Optional[RequestOptions]
1177
+ Request-specific configuration.
1178
+
1179
+ Returns
1180
+ -------
1181
+ HttpResponse[SubscribeToLoyaltyProgramResponse]
1182
+ Successfully created subscription.
1183
+ """
1184
+ _response = self._client_wrapper.httpx_client.request(
1185
+ f"loyalty/config/programs/{jsonable_encoder(pid)}/subscriptions",
1186
+ method="POST",
1187
+ json={
1188
+ "contactId": contact_id,
1189
+ "creationDate": creation_date,
1190
+ "loyaltySubscriptionId": loyalty_subscription_id,
1191
+ },
1192
+ headers={
1193
+ "content-type": "application/json",
1194
+ },
1195
+ request_options=request_options,
1196
+ omit=OMIT,
1197
+ )
1198
+ try:
1199
+ if 200 <= _response.status_code < 300:
1200
+ _data = typing.cast(
1201
+ SubscribeToLoyaltyProgramResponse,
1202
+ construct_type(
1203
+ type_=SubscribeToLoyaltyProgramResponse, # type: ignore
1204
+ object_=_response.json(),
1205
+ ),
1206
+ )
1207
+ return HttpResponse(response=_response, data=_data)
1208
+ if _response.status_code == 400:
1209
+ raise BadRequestError(
1210
+ headers=dict(_response.headers),
1211
+ body=typing.cast(
1212
+ typing.Any,
1213
+ construct_type(
1214
+ type_=typing.Any, # type: ignore
1215
+ object_=_response.json(),
1216
+ ),
1217
+ ),
1218
+ )
1219
+ if _response.status_code == 401:
1220
+ raise UnauthorizedError(
1221
+ headers=dict(_response.headers),
1222
+ body=typing.cast(
1223
+ typing.Any,
1224
+ construct_type(
1225
+ type_=typing.Any, # type: ignore
1226
+ object_=_response.json(),
1227
+ ),
1228
+ ),
1229
+ )
1230
+ if _response.status_code == 403:
1231
+ raise ForbiddenError(
1232
+ headers=dict(_response.headers),
1233
+ body=typing.cast(
1234
+ typing.Any,
1235
+ construct_type(
1236
+ type_=typing.Any, # type: ignore
1237
+ object_=_response.json(),
1238
+ ),
1239
+ ),
1240
+ )
1241
+ if _response.status_code == 404:
1242
+ raise NotFoundError(
1243
+ headers=dict(_response.headers),
1244
+ body=typing.cast(
1245
+ typing.Any,
1246
+ construct_type(
1247
+ type_=typing.Any, # type: ignore
1248
+ object_=_response.json(),
1249
+ ),
1250
+ ),
1251
+ )
1252
+ if _response.status_code == 422:
1253
+ raise UnprocessableEntityError(
1254
+ headers=dict(_response.headers),
1255
+ body=typing.cast(
1256
+ ErrorModel,
1257
+ construct_type(
1258
+ type_=ErrorModel, # type: ignore
1259
+ object_=_response.json(),
1260
+ ),
1261
+ ),
1262
+ )
1263
+ if _response.status_code == 500:
1264
+ raise InternalServerError(
1265
+ headers=dict(_response.headers),
1266
+ body=typing.cast(
1267
+ typing.Any,
1268
+ construct_type(
1269
+ type_=typing.Any, # type: ignore
1270
+ object_=_response.json(),
1271
+ ),
1272
+ ),
1273
+ )
1274
+ _response_json = _response.json()
1275
+ except JSONDecodeError:
1276
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1277
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1278
+
1279
+
1280
+ class AsyncRawProgramClient:
1281
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
1282
+ self._client_wrapper = client_wrapper
1283
+
1284
+ async def get_lp_list(
1285
+ self,
1286
+ *,
1287
+ limit: typing.Optional[int] = None,
1288
+ offset: typing.Optional[int] = None,
1289
+ sort_field: typing.Optional[GetLpListRequestSortField] = None,
1290
+ sort: typing.Optional[str] = None,
1291
+ request_options: typing.Optional[RequestOptions] = None,
1292
+ ) -> AsyncHttpResponse[GetLpListResponse]:
1293
+ """
1294
+ Returns list of loyalty programs
1295
+
1296
+ Parameters
1297
+ ----------
1298
+ limit : typing.Optional[int]
1299
+ Number of documents per page
1300
+
1301
+ offset : typing.Optional[int]
1302
+ Index of the first document in the page
1303
+
1304
+ sort_field : typing.Optional[GetLpListRequestSortField]
1305
+ Sort documents by field
1306
+
1307
+ sort : typing.Optional[str]
1308
+ Sort documents by field
1309
+
1310
+ request_options : typing.Optional[RequestOptions]
1311
+ Request-specific configuration.
1312
+
1313
+ Returns
1314
+ -------
1315
+ AsyncHttpResponse[GetLpListResponse]
1316
+ Loyalty Program page
1317
+ """
1318
+ _response = await self._client_wrapper.httpx_client.request(
1319
+ "loyalty/config/programs",
1320
+ method="GET",
1321
+ params={
1322
+ "limit": limit,
1323
+ "offset": offset,
1324
+ "sort_field": sort_field,
1325
+ "sort": sort,
1326
+ },
1327
+ request_options=request_options,
1328
+ )
1329
+ try:
1330
+ if 200 <= _response.status_code < 300:
1331
+ _data = typing.cast(
1332
+ GetLpListResponse,
1333
+ construct_type(
1334
+ type_=GetLpListResponse, # type: ignore
1335
+ object_=_response.json(),
1336
+ ),
1337
+ )
1338
+ return AsyncHttpResponse(response=_response, data=_data)
1339
+ if _response.status_code == 400:
1340
+ raise BadRequestError(
1341
+ headers=dict(_response.headers),
1342
+ body=typing.cast(
1343
+ typing.Any,
1344
+ construct_type(
1345
+ type_=typing.Any, # type: ignore
1346
+ object_=_response.json(),
1347
+ ),
1348
+ ),
1349
+ )
1350
+ if _response.status_code == 401:
1351
+ raise UnauthorizedError(
1352
+ headers=dict(_response.headers),
1353
+ body=typing.cast(
1354
+ typing.Any,
1355
+ construct_type(
1356
+ type_=typing.Any, # type: ignore
1357
+ object_=_response.json(),
1358
+ ),
1359
+ ),
1360
+ )
1361
+ if _response.status_code == 403:
1362
+ raise ForbiddenError(
1363
+ headers=dict(_response.headers),
1364
+ body=typing.cast(
1365
+ typing.Any,
1366
+ construct_type(
1367
+ type_=typing.Any, # type: ignore
1368
+ object_=_response.json(),
1369
+ ),
1370
+ ),
1371
+ )
1372
+ if _response.status_code == 404:
1373
+ raise NotFoundError(
1374
+ headers=dict(_response.headers),
1375
+ body=typing.cast(
1376
+ typing.Any,
1377
+ construct_type(
1378
+ type_=typing.Any, # type: ignore
1379
+ object_=_response.json(),
1380
+ ),
1381
+ ),
1382
+ )
1383
+ if _response.status_code == 422:
1384
+ raise UnprocessableEntityError(
1385
+ headers=dict(_response.headers),
1386
+ body=typing.cast(
1387
+ ErrorModel,
1388
+ construct_type(
1389
+ type_=ErrorModel, # type: ignore
1390
+ object_=_response.json(),
1391
+ ),
1392
+ ),
1393
+ )
1394
+ if _response.status_code == 500:
1395
+ raise InternalServerError(
1396
+ headers=dict(_response.headers),
1397
+ body=typing.cast(
1398
+ typing.Any,
1399
+ construct_type(
1400
+ type_=typing.Any, # type: ignore
1401
+ object_=_response.json(),
1402
+ ),
1403
+ ),
1404
+ )
1405
+ _response_json = _response.json()
1406
+ except JSONDecodeError:
1407
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1408
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1409
+
1410
+ async def create_new_lp(
1411
+ self,
1412
+ *,
1413
+ name: str,
1414
+ description: typing.Optional[str] = OMIT,
1415
+ document_id: typing.Optional[str] = OMIT,
1416
+ meta: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
1417
+ request_options: typing.Optional[RequestOptions] = None,
1418
+ ) -> AsyncHttpResponse[LoyaltyProgram]:
1419
+ """
1420
+ Creates loyalty program
1421
+
1422
+ Parameters
1423
+ ----------
1424
+ name : str
1425
+ Required name of the loyalty program (max 128 chars).
1426
+
1427
+ description : typing.Optional[str]
1428
+ Optional description of the loyalty program (max 256 chars).
1429
+
1430
+ document_id : typing.Optional[str]
1431
+ Optional unique document ID.
1432
+
1433
+ meta : typing.Optional[typing.Dict[str, typing.Any]]
1434
+ Optional metadata related to the loyalty program.
1435
+
1436
+ request_options : typing.Optional[RequestOptions]
1437
+ Request-specific configuration.
1438
+
1439
+ Returns
1440
+ -------
1441
+ AsyncHttpResponse[LoyaltyProgram]
1442
+ Successfully created loyalty program.
1443
+ """
1444
+ _response = await self._client_wrapper.httpx_client.request(
1445
+ "loyalty/config/programs",
1446
+ method="POST",
1447
+ json={
1448
+ "description": description,
1449
+ "documentId": document_id,
1450
+ "meta": meta,
1451
+ "name": name,
1452
+ },
1453
+ headers={
1454
+ "content-type": "application/json",
1455
+ },
1456
+ request_options=request_options,
1457
+ omit=OMIT,
1458
+ )
1459
+ try:
1460
+ if 200 <= _response.status_code < 300:
1461
+ _data = typing.cast(
1462
+ LoyaltyProgram,
1463
+ construct_type(
1464
+ type_=LoyaltyProgram, # type: ignore
1465
+ object_=_response.json(),
1466
+ ),
1467
+ )
1468
+ return AsyncHttpResponse(response=_response, data=_data)
1469
+ if _response.status_code == 401:
1470
+ raise UnauthorizedError(
1471
+ headers=dict(_response.headers),
1472
+ body=typing.cast(
1473
+ typing.Any,
1474
+ construct_type(
1475
+ type_=typing.Any, # type: ignore
1476
+ object_=_response.json(),
1477
+ ),
1478
+ ),
1479
+ )
1480
+ if _response.status_code == 403:
1481
+ raise ForbiddenError(
1482
+ headers=dict(_response.headers),
1483
+ body=typing.cast(
1484
+ typing.Any,
1485
+ construct_type(
1486
+ type_=typing.Any, # type: ignore
1487
+ object_=_response.json(),
1488
+ ),
1489
+ ),
1490
+ )
1491
+ if _response.status_code == 409:
1492
+ raise ConflictError(
1493
+ headers=dict(_response.headers),
1494
+ body=typing.cast(
1495
+ ErrorModel,
1496
+ construct_type(
1497
+ type_=ErrorModel, # type: ignore
1498
+ object_=_response.json(),
1499
+ ),
1500
+ ),
1501
+ )
1502
+ if _response.status_code == 422:
1503
+ raise UnprocessableEntityError(
1504
+ headers=dict(_response.headers),
1505
+ body=typing.cast(
1506
+ ErrorModel,
1507
+ construct_type(
1508
+ type_=ErrorModel, # type: ignore
1509
+ object_=_response.json(),
1510
+ ),
1511
+ ),
1512
+ )
1513
+ if _response.status_code == 500:
1514
+ raise InternalServerError(
1515
+ headers=dict(_response.headers),
1516
+ body=typing.cast(
1517
+ typing.Any,
1518
+ construct_type(
1519
+ type_=typing.Any, # type: ignore
1520
+ object_=_response.json(),
1521
+ ),
1522
+ ),
1523
+ )
1524
+ _response_json = _response.json()
1525
+ except JSONDecodeError:
1526
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1527
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1528
+
1529
+ async def get_loyalty_program_info(
1530
+ self, pid: str, *, request_options: typing.Optional[RequestOptions] = None
1531
+ ) -> AsyncHttpResponse[LoyaltyProgram]:
1532
+ """
1533
+ Returns loyalty program
1534
+
1535
+ Parameters
1536
+ ----------
1537
+ pid : str
1538
+ Loyalty Program ID. A unique identifier for the loyalty program.
1539
+
1540
+ request_options : typing.Optional[RequestOptions]
1541
+ Request-specific configuration.
1542
+
1543
+ Returns
1544
+ -------
1545
+ AsyncHttpResponse[LoyaltyProgram]
1546
+ Successfully retrieved loyalty program.
1547
+ """
1548
+ _response = await self._client_wrapper.httpx_client.request(
1549
+ f"loyalty/config/programs/{jsonable_encoder(pid)}",
1550
+ method="GET",
1551
+ request_options=request_options,
1552
+ )
1553
+ try:
1554
+ if 200 <= _response.status_code < 300:
1555
+ _data = typing.cast(
1556
+ LoyaltyProgram,
1557
+ construct_type(
1558
+ type_=LoyaltyProgram, # type: ignore
1559
+ object_=_response.json(),
1560
+ ),
1561
+ )
1562
+ return AsyncHttpResponse(response=_response, data=_data)
1563
+ if _response.status_code == 401:
1564
+ raise UnauthorizedError(
1565
+ headers=dict(_response.headers),
1566
+ body=typing.cast(
1567
+ typing.Any,
1568
+ construct_type(
1569
+ type_=typing.Any, # type: ignore
1570
+ object_=_response.json(),
1571
+ ),
1572
+ ),
1573
+ )
1574
+ if _response.status_code == 403:
1575
+ raise ForbiddenError(
1576
+ headers=dict(_response.headers),
1577
+ body=typing.cast(
1578
+ typing.Any,
1579
+ construct_type(
1580
+ type_=typing.Any, # type: ignore
1581
+ object_=_response.json(),
1582
+ ),
1583
+ ),
1584
+ )
1585
+ if _response.status_code == 404:
1586
+ raise NotFoundError(
1587
+ headers=dict(_response.headers),
1588
+ body=typing.cast(
1589
+ typing.Any,
1590
+ construct_type(
1591
+ type_=typing.Any, # type: ignore
1592
+ object_=_response.json(),
1593
+ ),
1594
+ ),
1595
+ )
1596
+ if _response.status_code == 422:
1597
+ raise UnprocessableEntityError(
1598
+ headers=dict(_response.headers),
1599
+ body=typing.cast(
1600
+ ErrorModel,
1601
+ construct_type(
1602
+ type_=ErrorModel, # type: ignore
1603
+ object_=_response.json(),
1604
+ ),
1605
+ ),
1606
+ )
1607
+ if _response.status_code == 500:
1608
+ raise InternalServerError(
1609
+ headers=dict(_response.headers),
1610
+ body=typing.cast(
1611
+ typing.Any,
1612
+ construct_type(
1613
+ type_=typing.Any, # type: ignore
1614
+ object_=_response.json(),
1615
+ ),
1616
+ ),
1617
+ )
1618
+ _response_json = _response.json()
1619
+ except JSONDecodeError:
1620
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1621
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1622
+
1623
+ async def update_loyalty_program(
1624
+ self,
1625
+ pid: str,
1626
+ *,
1627
+ name: str,
1628
+ description: typing.Optional[str] = OMIT,
1629
+ meta: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
1630
+ request_options: typing.Optional[RequestOptions] = None,
1631
+ ) -> AsyncHttpResponse[LoyaltyProgram]:
1632
+ """
1633
+ Updates loyalty program
1634
+
1635
+ Parameters
1636
+ ----------
1637
+ pid : str
1638
+ Loyalty Program ID. A unique identifier for the loyalty program.
1639
+
1640
+ name : str
1641
+ Loyalty Program name
1642
+
1643
+ description : typing.Optional[str]
1644
+ Loyalty Program description
1645
+
1646
+ meta : typing.Optional[typing.Dict[str, typing.Any]]
1647
+ Loyalty Program meta data
1648
+
1649
+ request_options : typing.Optional[RequestOptions]
1650
+ Request-specific configuration.
1651
+
1652
+ Returns
1653
+ -------
1654
+ AsyncHttpResponse[LoyaltyProgram]
1655
+ Successfully updated loyalty program.
1656
+ """
1657
+ _response = await self._client_wrapper.httpx_client.request(
1658
+ f"loyalty/config/programs/{jsonable_encoder(pid)}",
1659
+ method="PUT",
1660
+ json={
1661
+ "description": description,
1662
+ "meta": meta,
1663
+ "name": name,
1664
+ },
1665
+ headers={
1666
+ "content-type": "application/json",
1667
+ },
1668
+ request_options=request_options,
1669
+ omit=OMIT,
1670
+ )
1671
+ try:
1672
+ if 200 <= _response.status_code < 300:
1673
+ _data = typing.cast(
1674
+ LoyaltyProgram,
1675
+ construct_type(
1676
+ type_=LoyaltyProgram, # type: ignore
1677
+ object_=_response.json(),
1678
+ ),
1679
+ )
1680
+ return AsyncHttpResponse(response=_response, data=_data)
1681
+ if _response.status_code == 401:
1682
+ raise UnauthorizedError(
1683
+ headers=dict(_response.headers),
1684
+ body=typing.cast(
1685
+ typing.Any,
1686
+ construct_type(
1687
+ type_=typing.Any, # type: ignore
1688
+ object_=_response.json(),
1689
+ ),
1690
+ ),
1691
+ )
1692
+ if _response.status_code == 403:
1693
+ raise ForbiddenError(
1694
+ headers=dict(_response.headers),
1695
+ body=typing.cast(
1696
+ typing.Any,
1697
+ construct_type(
1698
+ type_=typing.Any, # type: ignore
1699
+ object_=_response.json(),
1700
+ ),
1701
+ ),
1702
+ )
1703
+ if _response.status_code == 404:
1704
+ raise NotFoundError(
1705
+ headers=dict(_response.headers),
1706
+ body=typing.cast(
1707
+ typing.Any,
1708
+ construct_type(
1709
+ type_=typing.Any, # type: ignore
1710
+ object_=_response.json(),
1711
+ ),
1712
+ ),
1713
+ )
1714
+ if _response.status_code == 409:
1715
+ raise ConflictError(
1716
+ headers=dict(_response.headers),
1717
+ body=typing.cast(
1718
+ ErrorModel,
1719
+ construct_type(
1720
+ type_=ErrorModel, # type: ignore
1721
+ object_=_response.json(),
1722
+ ),
1723
+ ),
1724
+ )
1725
+ if _response.status_code == 422:
1726
+ raise UnprocessableEntityError(
1727
+ headers=dict(_response.headers),
1728
+ body=typing.cast(
1729
+ ErrorModel,
1730
+ construct_type(
1731
+ type_=ErrorModel, # type: ignore
1732
+ object_=_response.json(),
1733
+ ),
1734
+ ),
1735
+ )
1736
+ if _response.status_code == 500:
1737
+ raise InternalServerError(
1738
+ headers=dict(_response.headers),
1739
+ body=typing.cast(
1740
+ typing.Any,
1741
+ construct_type(
1742
+ type_=typing.Any, # type: ignore
1743
+ object_=_response.json(),
1744
+ ),
1745
+ ),
1746
+ )
1747
+ _response_json = _response.json()
1748
+ except JSONDecodeError:
1749
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1750
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1751
+
1752
+ async def delete_loyalty_program(
1753
+ self, pid: str, *, request_options: typing.Optional[RequestOptions] = None
1754
+ ) -> AsyncHttpResponse[None]:
1755
+ """
1756
+ Deletes Loyalty Program
1757
+
1758
+ Parameters
1759
+ ----------
1760
+ pid : str
1761
+ Loyalty Program ID. A unique identifier for the loyalty program.
1762
+
1763
+ request_options : typing.Optional[RequestOptions]
1764
+ Request-specific configuration.
1765
+
1766
+ Returns
1767
+ -------
1768
+ AsyncHttpResponse[None]
1769
+ """
1770
+ _response = await self._client_wrapper.httpx_client.request(
1771
+ f"loyalty/config/programs/{jsonable_encoder(pid)}",
1772
+ method="DELETE",
1773
+ request_options=request_options,
1774
+ )
1775
+ try:
1776
+ if 200 <= _response.status_code < 300:
1777
+ return AsyncHttpResponse(response=_response, data=None)
1778
+ if _response.status_code == 401:
1779
+ raise UnauthorizedError(
1780
+ headers=dict(_response.headers),
1781
+ body=typing.cast(
1782
+ typing.Any,
1783
+ construct_type(
1784
+ type_=typing.Any, # type: ignore
1785
+ object_=_response.json(),
1786
+ ),
1787
+ ),
1788
+ )
1789
+ if _response.status_code == 403:
1790
+ raise ForbiddenError(
1791
+ headers=dict(_response.headers),
1792
+ body=typing.cast(
1793
+ typing.Any,
1794
+ construct_type(
1795
+ type_=typing.Any, # type: ignore
1796
+ object_=_response.json(),
1797
+ ),
1798
+ ),
1799
+ )
1800
+ if _response.status_code == 404:
1801
+ raise NotFoundError(
1802
+ headers=dict(_response.headers),
1803
+ body=typing.cast(
1804
+ typing.Any,
1805
+ construct_type(
1806
+ type_=typing.Any, # type: ignore
1807
+ object_=_response.json(),
1808
+ ),
1809
+ ),
1810
+ )
1811
+ if _response.status_code == 422:
1812
+ raise UnprocessableEntityError(
1813
+ headers=dict(_response.headers),
1814
+ body=typing.cast(
1815
+ ErrorModel,
1816
+ construct_type(
1817
+ type_=ErrorModel, # type: ignore
1818
+ object_=_response.json(),
1819
+ ),
1820
+ ),
1821
+ )
1822
+ if _response.status_code == 500:
1823
+ raise InternalServerError(
1824
+ headers=dict(_response.headers),
1825
+ body=typing.cast(
1826
+ typing.Any,
1827
+ construct_type(
1828
+ type_=typing.Any, # type: ignore
1829
+ object_=_response.json(),
1830
+ ),
1831
+ ),
1832
+ )
1833
+ _response_json = _response.json()
1834
+ except JSONDecodeError:
1835
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1836
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1837
+
1838
+ async def partially_update_loyalty_program(
1839
+ self,
1840
+ pid: str,
1841
+ *,
1842
+ description: typing.Optional[str] = OMIT,
1843
+ meta: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
1844
+ name: typing.Optional[str] = OMIT,
1845
+ request_options: typing.Optional[RequestOptions] = None,
1846
+ ) -> AsyncHttpResponse[LoyaltyProgram]:
1847
+ """
1848
+ Partially updates loyalty program
1849
+
1850
+ Parameters
1851
+ ----------
1852
+ pid : str
1853
+ Loyalty Program ID. A unique identifier for the loyalty program.
1854
+
1855
+ description : typing.Optional[str]
1856
+ Loyalty Program description
1857
+
1858
+ meta : typing.Optional[typing.Dict[str, typing.Any]]
1859
+ Loyalty Program meta data
1860
+
1861
+ name : typing.Optional[str]
1862
+ Loyalty Program name
1863
+
1864
+ request_options : typing.Optional[RequestOptions]
1865
+ Request-specific configuration.
1866
+
1867
+ Returns
1868
+ -------
1869
+ AsyncHttpResponse[LoyaltyProgram]
1870
+ Successfully updated loyalty program.
1871
+ """
1872
+ _response = await self._client_wrapper.httpx_client.request(
1873
+ f"loyalty/config/programs/{jsonable_encoder(pid)}",
1874
+ method="PATCH",
1875
+ json={
1876
+ "description": description,
1877
+ "meta": meta,
1878
+ "name": name,
1879
+ },
1880
+ headers={
1881
+ "content-type": "application/json",
1882
+ },
1883
+ request_options=request_options,
1884
+ omit=OMIT,
1885
+ )
1886
+ try:
1887
+ if 200 <= _response.status_code < 300:
1888
+ _data = typing.cast(
1889
+ LoyaltyProgram,
1890
+ construct_type(
1891
+ type_=LoyaltyProgram, # type: ignore
1892
+ object_=_response.json(),
1893
+ ),
1894
+ )
1895
+ return AsyncHttpResponse(response=_response, data=_data)
1896
+ if _response.status_code == 401:
1897
+ raise UnauthorizedError(
1898
+ headers=dict(_response.headers),
1899
+ body=typing.cast(
1900
+ typing.Any,
1901
+ construct_type(
1902
+ type_=typing.Any, # type: ignore
1903
+ object_=_response.json(),
1904
+ ),
1905
+ ),
1906
+ )
1907
+ if _response.status_code == 403:
1908
+ raise ForbiddenError(
1909
+ headers=dict(_response.headers),
1910
+ body=typing.cast(
1911
+ typing.Any,
1912
+ construct_type(
1913
+ type_=typing.Any, # type: ignore
1914
+ object_=_response.json(),
1915
+ ),
1916
+ ),
1917
+ )
1918
+ if _response.status_code == 404:
1919
+ raise NotFoundError(
1920
+ headers=dict(_response.headers),
1921
+ body=typing.cast(
1922
+ typing.Any,
1923
+ construct_type(
1924
+ type_=typing.Any, # type: ignore
1925
+ object_=_response.json(),
1926
+ ),
1927
+ ),
1928
+ )
1929
+ if _response.status_code == 409:
1930
+ raise ConflictError(
1931
+ headers=dict(_response.headers),
1932
+ body=typing.cast(
1933
+ ErrorModel,
1934
+ construct_type(
1935
+ type_=ErrorModel, # type: ignore
1936
+ object_=_response.json(),
1937
+ ),
1938
+ ),
1939
+ )
1940
+ if _response.status_code == 422:
1941
+ raise UnprocessableEntityError(
1942
+ headers=dict(_response.headers),
1943
+ body=typing.cast(
1944
+ ErrorModel,
1945
+ construct_type(
1946
+ type_=ErrorModel, # type: ignore
1947
+ object_=_response.json(),
1948
+ ),
1949
+ ),
1950
+ )
1951
+ if _response.status_code == 500:
1952
+ raise InternalServerError(
1953
+ headers=dict(_response.headers),
1954
+ body=typing.cast(
1955
+ typing.Any,
1956
+ construct_type(
1957
+ type_=typing.Any, # type: ignore
1958
+ object_=_response.json(),
1959
+ ),
1960
+ ),
1961
+ )
1962
+ _response_json = _response.json()
1963
+ except JSONDecodeError:
1964
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1965
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1966
+
1967
+ async def get_parameter_subscription_info(
1968
+ self,
1969
+ pid: str,
1970
+ *,
1971
+ contact_id: typing.Optional[str] = None,
1972
+ params: typing.Optional[str] = None,
1973
+ loyalty_subscription_id: typing.Optional[str] = None,
1974
+ request_options: typing.Optional[RequestOptions] = None,
1975
+ ) -> AsyncHttpResponse[GetParameterSubscriptionInfoResponse]:
1976
+ """
1977
+ Get Information of balances, tiers, rewards and subscription members for a subscription
1978
+
1979
+ Parameters
1980
+ ----------
1981
+ pid : str
1982
+ Loyalty Program ID. A unique identifier for the loyalty program.
1983
+
1984
+ contact_id : typing.Optional[str]
1985
+ The contact ID to filter by.
1986
+
1987
+ params : typing.Optional[str]
1988
+ A list of filter parameters for querying the subscription info.
1989
+
1990
+ loyalty_subscription_id : typing.Optional[str]
1991
+ The loyalty subscription ID to filter by.
1992
+
1993
+ request_options : typing.Optional[RequestOptions]
1994
+ Request-specific configuration.
1995
+
1996
+ Returns
1997
+ -------
1998
+ AsyncHttpResponse[GetParameterSubscriptionInfoResponse]
1999
+ Successfully retrieved subscription info.
2000
+ """
2001
+ _response = await self._client_wrapper.httpx_client.request(
2002
+ f"loyalty/config/programs/{jsonable_encoder(pid)}/account-info",
2003
+ method="GET",
2004
+ params={
2005
+ "contactId": contact_id,
2006
+ "params": params,
2007
+ "loyaltySubscriptionId": loyalty_subscription_id,
2008
+ },
2009
+ request_options=request_options,
2010
+ )
2011
+ try:
2012
+ if 200 <= _response.status_code < 300:
2013
+ _data = typing.cast(
2014
+ GetParameterSubscriptionInfoResponse,
2015
+ construct_type(
2016
+ type_=GetParameterSubscriptionInfoResponse, # type: ignore
2017
+ object_=_response.json(),
2018
+ ),
2019
+ )
2020
+ return AsyncHttpResponse(response=_response, data=_data)
2021
+ if _response.status_code == 400:
2022
+ raise BadRequestError(
2023
+ headers=dict(_response.headers),
2024
+ body=typing.cast(
2025
+ typing.Any,
2026
+ construct_type(
2027
+ type_=typing.Any, # type: ignore
2028
+ object_=_response.json(),
2029
+ ),
2030
+ ),
2031
+ )
2032
+ if _response.status_code == 401:
2033
+ raise UnauthorizedError(
2034
+ headers=dict(_response.headers),
2035
+ body=typing.cast(
2036
+ typing.Any,
2037
+ construct_type(
2038
+ type_=typing.Any, # type: ignore
2039
+ object_=_response.json(),
2040
+ ),
2041
+ ),
2042
+ )
2043
+ if _response.status_code == 403:
2044
+ raise ForbiddenError(
2045
+ headers=dict(_response.headers),
2046
+ body=typing.cast(
2047
+ typing.Any,
2048
+ construct_type(
2049
+ type_=typing.Any, # type: ignore
2050
+ object_=_response.json(),
2051
+ ),
2052
+ ),
2053
+ )
2054
+ if _response.status_code == 422:
2055
+ raise UnprocessableEntityError(
2056
+ headers=dict(_response.headers),
2057
+ body=typing.cast(
2058
+ ErrorModel,
2059
+ construct_type(
2060
+ type_=ErrorModel, # type: ignore
2061
+ object_=_response.json(),
2062
+ ),
2063
+ ),
2064
+ )
2065
+ if _response.status_code == 500:
2066
+ raise InternalServerError(
2067
+ headers=dict(_response.headers),
2068
+ body=typing.cast(
2069
+ typing.Any,
2070
+ construct_type(
2071
+ type_=typing.Any, # type: ignore
2072
+ object_=_response.json(),
2073
+ ),
2074
+ ),
2075
+ )
2076
+ _response_json = _response.json()
2077
+ except JSONDecodeError:
2078
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2079
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2080
+
2081
+ async def publish_loyalty_program(
2082
+ self, pid: str, *, request_options: typing.Optional[RequestOptions] = None
2083
+ ) -> AsyncHttpResponse[None]:
2084
+ """
2085
+ Publishes loyalty program
2086
+
2087
+ Parameters
2088
+ ----------
2089
+ pid : str
2090
+ Loyalty Program ID. A unique identifier for the loyalty program.
2091
+
2092
+ request_options : typing.Optional[RequestOptions]
2093
+ Request-specific configuration.
2094
+
2095
+ Returns
2096
+ -------
2097
+ AsyncHttpResponse[None]
2098
+ """
2099
+ _response = await self._client_wrapper.httpx_client.request(
2100
+ f"loyalty/config/programs/{jsonable_encoder(pid)}/publish",
2101
+ method="POST",
2102
+ request_options=request_options,
2103
+ )
2104
+ try:
2105
+ if 200 <= _response.status_code < 300:
2106
+ return AsyncHttpResponse(response=_response, data=None)
2107
+ if _response.status_code == 401:
2108
+ raise UnauthorizedError(
2109
+ headers=dict(_response.headers),
2110
+ body=typing.cast(
2111
+ typing.Any,
2112
+ construct_type(
2113
+ type_=typing.Any, # type: ignore
2114
+ object_=_response.json(),
2115
+ ),
2116
+ ),
2117
+ )
2118
+ if _response.status_code == 403:
2119
+ raise ForbiddenError(
2120
+ headers=dict(_response.headers),
2121
+ body=typing.cast(
2122
+ typing.Any,
2123
+ construct_type(
2124
+ type_=typing.Any, # type: ignore
2125
+ object_=_response.json(),
2126
+ ),
2127
+ ),
2128
+ )
2129
+ if _response.status_code == 404:
2130
+ raise NotFoundError(
2131
+ headers=dict(_response.headers),
2132
+ body=typing.cast(
2133
+ typing.Any,
2134
+ construct_type(
2135
+ type_=typing.Any, # type: ignore
2136
+ object_=_response.json(),
2137
+ ),
2138
+ ),
2139
+ )
2140
+ if _response.status_code == 422:
2141
+ raise UnprocessableEntityError(
2142
+ headers=dict(_response.headers),
2143
+ body=typing.cast(
2144
+ ErrorModel,
2145
+ construct_type(
2146
+ type_=ErrorModel, # type: ignore
2147
+ object_=_response.json(),
2148
+ ),
2149
+ ),
2150
+ )
2151
+ if _response.status_code == 500:
2152
+ raise InternalServerError(
2153
+ headers=dict(_response.headers),
2154
+ body=typing.cast(
2155
+ typing.Any,
2156
+ construct_type(
2157
+ type_=typing.Any, # type: ignore
2158
+ object_=_response.json(),
2159
+ ),
2160
+ ),
2161
+ )
2162
+ _response_json = _response.json()
2163
+ except JSONDecodeError:
2164
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2165
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2166
+
2167
+ async def subscribe_member_to_a_subscription(
2168
+ self,
2169
+ pid: str,
2170
+ *,
2171
+ member_contact_ids: typing.Sequence[int],
2172
+ contact_id: typing.Optional[int] = OMIT,
2173
+ loyalty_subscription_id: typing.Optional[str] = OMIT,
2174
+ request_options: typing.Optional[RequestOptions] = None,
2175
+ ) -> AsyncHttpResponse[SubscribeMemberToASubscriptionResponse]:
2176
+ """
2177
+ Add member to a subscription
2178
+
2179
+ Parameters
2180
+ ----------
2181
+ pid : str
2182
+ Loyalty Program ID. A unique identifier for the loyalty program.
2183
+
2184
+ member_contact_ids : typing.Sequence[int]
2185
+ Required, each item must be greater than or equal to 1
2186
+
2187
+ contact_id : typing.Optional[int]
2188
+ Required if LoyaltySubscriptionId is not provided, must be greater than 0
2189
+
2190
+ loyalty_subscription_id : typing.Optional[str]
2191
+ Required if ContactId is not provided, max length 64
2192
+
2193
+ request_options : typing.Optional[RequestOptions]
2194
+ Request-specific configuration.
2195
+
2196
+ Returns
2197
+ -------
2198
+ AsyncHttpResponse[SubscribeMemberToASubscriptionResponse]
2199
+ Successfully added subscription member.
2200
+ """
2201
+ _response = await self._client_wrapper.httpx_client.request(
2202
+ f"loyalty/config/programs/{jsonable_encoder(pid)}/subscription-members",
2203
+ method="POST",
2204
+ json={
2205
+ "contactId": contact_id,
2206
+ "loyaltySubscriptionId": loyalty_subscription_id,
2207
+ "memberContactIds": member_contact_ids,
2208
+ },
2209
+ headers={
2210
+ "content-type": "application/json",
2211
+ },
2212
+ request_options=request_options,
2213
+ omit=OMIT,
2214
+ )
2215
+ try:
2216
+ if 200 <= _response.status_code < 300:
2217
+ _data = typing.cast(
2218
+ SubscribeMemberToASubscriptionResponse,
2219
+ construct_type(
2220
+ type_=SubscribeMemberToASubscriptionResponse, # type: ignore
2221
+ object_=_response.json(),
2222
+ ),
2223
+ )
2224
+ return AsyncHttpResponse(response=_response, data=_data)
2225
+ if _response.status_code == 401:
2226
+ raise UnauthorizedError(
2227
+ headers=dict(_response.headers),
2228
+ body=typing.cast(
2229
+ typing.Any,
2230
+ construct_type(
2231
+ type_=typing.Any, # type: ignore
2232
+ object_=_response.json(),
2233
+ ),
2234
+ ),
2235
+ )
2236
+ if _response.status_code == 403:
2237
+ raise ForbiddenError(
2238
+ headers=dict(_response.headers),
2239
+ body=typing.cast(
2240
+ typing.Any,
2241
+ construct_type(
2242
+ type_=typing.Any, # type: ignore
2243
+ object_=_response.json(),
2244
+ ),
2245
+ ),
2246
+ )
2247
+ if _response.status_code == 404:
2248
+ raise NotFoundError(
2249
+ headers=dict(_response.headers),
2250
+ body=typing.cast(
2251
+ typing.Any,
2252
+ construct_type(
2253
+ type_=typing.Any, # type: ignore
2254
+ object_=_response.json(),
2255
+ ),
2256
+ ),
2257
+ )
2258
+ if _response.status_code == 409:
2259
+ raise ConflictError(
2260
+ headers=dict(_response.headers),
2261
+ body=typing.cast(
2262
+ ErrorModel,
2263
+ construct_type(
2264
+ type_=ErrorModel, # type: ignore
2265
+ object_=_response.json(),
2266
+ ),
2267
+ ),
2268
+ )
2269
+ if _response.status_code == 422:
2270
+ raise UnprocessableEntityError(
2271
+ headers=dict(_response.headers),
2272
+ body=typing.cast(
2273
+ ErrorModel,
2274
+ construct_type(
2275
+ type_=ErrorModel, # type: ignore
2276
+ object_=_response.json(),
2277
+ ),
2278
+ ),
2279
+ )
2280
+ if _response.status_code == 500:
2281
+ raise InternalServerError(
2282
+ headers=dict(_response.headers),
2283
+ body=typing.cast(
2284
+ typing.Any,
2285
+ construct_type(
2286
+ type_=typing.Any, # type: ignore
2287
+ object_=_response.json(),
2288
+ ),
2289
+ ),
2290
+ )
2291
+ _response_json = _response.json()
2292
+ except JSONDecodeError:
2293
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2294
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2295
+
2296
+ async def delete_contact_members(
2297
+ self, pid: str, *, member_contact_ids: str, request_options: typing.Optional[RequestOptions] = None
2298
+ ) -> AsyncHttpResponse[None]:
2299
+ """
2300
+ Deletes member from a subscription
2301
+
2302
+ Parameters
2303
+ ----------
2304
+ pid : str
2305
+ Loyalty Program ID. A unique identifier for the loyalty program.
2306
+
2307
+ member_contact_ids : str
2308
+ Comma-separated list of member contact IDs to delete from the subscription.
2309
+
2310
+ request_options : typing.Optional[RequestOptions]
2311
+ Request-specific configuration.
2312
+
2313
+ Returns
2314
+ -------
2315
+ AsyncHttpResponse[None]
2316
+ """
2317
+ _response = await self._client_wrapper.httpx_client.request(
2318
+ f"loyalty/config/programs/{jsonable_encoder(pid)}/subscription-members",
2319
+ method="DELETE",
2320
+ params={
2321
+ "memberContactIds": member_contact_ids,
2322
+ },
2323
+ request_options=request_options,
2324
+ )
2325
+ try:
2326
+ if 200 <= _response.status_code < 300:
2327
+ return AsyncHttpResponse(response=_response, data=None)
2328
+ if _response.status_code == 400:
2329
+ raise BadRequestError(
2330
+ headers=dict(_response.headers),
2331
+ body=typing.cast(
2332
+ typing.Any,
2333
+ construct_type(
2334
+ type_=typing.Any, # type: ignore
2335
+ object_=_response.json(),
2336
+ ),
2337
+ ),
2338
+ )
2339
+ if _response.status_code == 401:
2340
+ raise UnauthorizedError(
2341
+ headers=dict(_response.headers),
2342
+ body=typing.cast(
2343
+ typing.Any,
2344
+ construct_type(
2345
+ type_=typing.Any, # type: ignore
2346
+ object_=_response.json(),
2347
+ ),
2348
+ ),
2349
+ )
2350
+ if _response.status_code == 403:
2351
+ raise ForbiddenError(
2352
+ headers=dict(_response.headers),
2353
+ body=typing.cast(
2354
+ typing.Any,
2355
+ construct_type(
2356
+ type_=typing.Any, # type: ignore
2357
+ object_=_response.json(),
2358
+ ),
2359
+ ),
2360
+ )
2361
+ if _response.status_code == 404:
2362
+ raise NotFoundError(
2363
+ headers=dict(_response.headers),
2364
+ body=typing.cast(
2365
+ typing.Any,
2366
+ construct_type(
2367
+ type_=typing.Any, # type: ignore
2368
+ object_=_response.json(),
2369
+ ),
2370
+ ),
2371
+ )
2372
+ if _response.status_code == 422:
2373
+ raise UnprocessableEntityError(
2374
+ headers=dict(_response.headers),
2375
+ body=typing.cast(
2376
+ ErrorModel,
2377
+ construct_type(
2378
+ type_=ErrorModel, # type: ignore
2379
+ object_=_response.json(),
2380
+ ),
2381
+ ),
2382
+ )
2383
+ if _response.status_code == 500:
2384
+ raise InternalServerError(
2385
+ headers=dict(_response.headers),
2386
+ body=typing.cast(
2387
+ typing.Any,
2388
+ construct_type(
2389
+ type_=typing.Any, # type: ignore
2390
+ object_=_response.json(),
2391
+ ),
2392
+ ),
2393
+ )
2394
+ _response_json = _response.json()
2395
+ except JSONDecodeError:
2396
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2397
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2398
+
2399
+ async def subscribe_to_loyalty_program(
2400
+ self,
2401
+ pid: str,
2402
+ *,
2403
+ contact_id: int,
2404
+ creation_date: typing.Optional[str] = OMIT,
2405
+ loyalty_subscription_id: typing.Optional[str] = OMIT,
2406
+ request_options: typing.Optional[RequestOptions] = None,
2407
+ ) -> AsyncHttpResponse[SubscribeToLoyaltyProgramResponse]:
2408
+ """
2409
+ Subscribes to a loyalty program
2410
+
2411
+ Parameters
2412
+ ----------
2413
+ pid : str
2414
+ Loyalty Program ID. A unique identifier for the loyalty program.
2415
+
2416
+ contact_id : int
2417
+ Required contact ID; must be greater than 0.
2418
+
2419
+ creation_date : typing.Optional[str]
2420
+ Optional custom date-time format.
2421
+
2422
+ loyalty_subscription_id : typing.Optional[str]
2423
+ Optional subscription ID (max length 64).
2424
+
2425
+ request_options : typing.Optional[RequestOptions]
2426
+ Request-specific configuration.
2427
+
2428
+ Returns
2429
+ -------
2430
+ AsyncHttpResponse[SubscribeToLoyaltyProgramResponse]
2431
+ Successfully created subscription.
2432
+ """
2433
+ _response = await self._client_wrapper.httpx_client.request(
2434
+ f"loyalty/config/programs/{jsonable_encoder(pid)}/subscriptions",
2435
+ method="POST",
2436
+ json={
2437
+ "contactId": contact_id,
2438
+ "creationDate": creation_date,
2439
+ "loyaltySubscriptionId": loyalty_subscription_id,
2440
+ },
2441
+ headers={
2442
+ "content-type": "application/json",
2443
+ },
2444
+ request_options=request_options,
2445
+ omit=OMIT,
2446
+ )
2447
+ try:
2448
+ if 200 <= _response.status_code < 300:
2449
+ _data = typing.cast(
2450
+ SubscribeToLoyaltyProgramResponse,
2451
+ construct_type(
2452
+ type_=SubscribeToLoyaltyProgramResponse, # type: ignore
2453
+ object_=_response.json(),
2454
+ ),
2455
+ )
2456
+ return AsyncHttpResponse(response=_response, data=_data)
2457
+ if _response.status_code == 400:
2458
+ raise BadRequestError(
2459
+ headers=dict(_response.headers),
2460
+ body=typing.cast(
2461
+ typing.Any,
2462
+ construct_type(
2463
+ type_=typing.Any, # type: ignore
2464
+ object_=_response.json(),
2465
+ ),
2466
+ ),
2467
+ )
2468
+ if _response.status_code == 401:
2469
+ raise UnauthorizedError(
2470
+ headers=dict(_response.headers),
2471
+ body=typing.cast(
2472
+ typing.Any,
2473
+ construct_type(
2474
+ type_=typing.Any, # type: ignore
2475
+ object_=_response.json(),
2476
+ ),
2477
+ ),
2478
+ )
2479
+ if _response.status_code == 403:
2480
+ raise ForbiddenError(
2481
+ headers=dict(_response.headers),
2482
+ body=typing.cast(
2483
+ typing.Any,
2484
+ construct_type(
2485
+ type_=typing.Any, # type: ignore
2486
+ object_=_response.json(),
2487
+ ),
2488
+ ),
2489
+ )
2490
+ if _response.status_code == 404:
2491
+ raise NotFoundError(
2492
+ headers=dict(_response.headers),
2493
+ body=typing.cast(
2494
+ typing.Any,
2495
+ construct_type(
2496
+ type_=typing.Any, # type: ignore
2497
+ object_=_response.json(),
2498
+ ),
2499
+ ),
2500
+ )
2501
+ if _response.status_code == 422:
2502
+ raise UnprocessableEntityError(
2503
+ headers=dict(_response.headers),
2504
+ body=typing.cast(
2505
+ ErrorModel,
2506
+ construct_type(
2507
+ type_=ErrorModel, # type: ignore
2508
+ object_=_response.json(),
2509
+ ),
2510
+ ),
2511
+ )
2512
+ if _response.status_code == 500:
2513
+ raise InternalServerError(
2514
+ headers=dict(_response.headers),
2515
+ body=typing.cast(
2516
+ typing.Any,
2517
+ construct_type(
2518
+ type_=typing.Any, # type: ignore
2519
+ object_=_response.json(),
2520
+ ),
2521
+ ),
2522
+ )
2523
+ _response_json = _response.json()
2524
+ except JSONDecodeError:
2525
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
2526
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)