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