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,1501 @@
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.not_found_error import NotFoundError
15
+ from ..errors.payment_required_error import PaymentRequiredError
16
+ from ..types.error_model import ErrorModel
17
+ from ..types.send_report_email import SendReportEmail
18
+ from ..types.send_report_language import SendReportLanguage
19
+ from ..types.update_campaign_status_status import UpdateCampaignStatusStatus
20
+ from .types.create_sms_campaign_request_recipients import CreateSmsCampaignRequestRecipients
21
+ from .types.create_sms_campaign_response import CreateSmsCampaignResponse
22
+ from .types.get_sms_campaign_response import GetSmsCampaignResponse
23
+ from .types.get_sms_campaigns_request_sort import GetSmsCampaignsRequestSort
24
+ from .types.get_sms_campaigns_request_status import GetSmsCampaignsRequestStatus
25
+ from .types.get_sms_campaigns_response import GetSmsCampaignsResponse
26
+ from .types.request_sms_recipient_export_request_recipients_type import RequestSmsRecipientExportRequestRecipientsType
27
+ from .types.request_sms_recipient_export_response import RequestSmsRecipientExportResponse
28
+ from .types.update_sms_campaign_request_recipients import UpdateSmsCampaignRequestRecipients
29
+
30
+ # this is used as the default value for optional parameters
31
+ OMIT = typing.cast(typing.Any, ...)
32
+
33
+
34
+ class RawSmsCampaignsClient:
35
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
36
+ self._client_wrapper = client_wrapper
37
+
38
+ def get_sms_campaigns(
39
+ self,
40
+ *,
41
+ status: typing.Optional[GetSmsCampaignsRequestStatus] = None,
42
+ start_date: typing.Optional[str] = None,
43
+ end_date: typing.Optional[str] = None,
44
+ limit: typing.Optional[int] = None,
45
+ offset: typing.Optional[int] = None,
46
+ sort: typing.Optional[GetSmsCampaignsRequestSort] = None,
47
+ request_options: typing.Optional[RequestOptions] = None,
48
+ ) -> HttpResponse[GetSmsCampaignsResponse]:
49
+ """
50
+ Parameters
51
+ ----------
52
+ status : typing.Optional[GetSmsCampaignsRequestStatus]
53
+ Status of campaign.
54
+
55
+ start_date : typing.Optional[str]
56
+ **Mandatory if endDate is used.** Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent sms campaigns. **Prefer to pass your timezone in date-time format for accurate result** ( only available if either 'status' not passed and if passed is set to 'sent' )
57
+
58
+ end_date : typing.Optional[str]
59
+ **Mandatory if startDate is used.** Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent sms campaigns. **Prefer to pass your timezone in date-time format for accurate result** ( only available if either 'status' not passed and if passed is set to 'sent' )
60
+
61
+ limit : typing.Optional[int]
62
+ Number limitation for the result returned
63
+
64
+ offset : typing.Optional[int]
65
+ Beginning point in the list to retrieve from.
66
+
67
+ sort : typing.Optional[GetSmsCampaignsRequestSort]
68
+ Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed
69
+
70
+ request_options : typing.Optional[RequestOptions]
71
+ Request-specific configuration.
72
+
73
+ Returns
74
+ -------
75
+ HttpResponse[GetSmsCampaignsResponse]
76
+ SMS campaigns informations
77
+ """
78
+ _response = self._client_wrapper.httpx_client.request(
79
+ "smsCampaigns",
80
+ method="GET",
81
+ params={
82
+ "status": status,
83
+ "startDate": start_date,
84
+ "endDate": end_date,
85
+ "limit": limit,
86
+ "offset": offset,
87
+ "sort": sort,
88
+ },
89
+ request_options=request_options,
90
+ )
91
+ try:
92
+ if 200 <= _response.status_code < 300:
93
+ _data = typing.cast(
94
+ GetSmsCampaignsResponse,
95
+ construct_type(
96
+ type_=GetSmsCampaignsResponse, # type: ignore
97
+ object_=_response.json(),
98
+ ),
99
+ )
100
+ return HttpResponse(response=_response, data=_data)
101
+ if _response.status_code == 400:
102
+ raise BadRequestError(
103
+ headers=dict(_response.headers),
104
+ body=typing.cast(
105
+ typing.Any,
106
+ construct_type(
107
+ type_=typing.Any, # type: ignore
108
+ object_=_response.json(),
109
+ ),
110
+ ),
111
+ )
112
+ _response_json = _response.json()
113
+ except JSONDecodeError:
114
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
115
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
116
+
117
+ def create_sms_campaign(
118
+ self,
119
+ *,
120
+ content: str,
121
+ name: str,
122
+ sender: str,
123
+ organisation_prefix: typing.Optional[str] = OMIT,
124
+ recipients: typing.Optional[CreateSmsCampaignRequestRecipients] = OMIT,
125
+ scheduled_at: typing.Optional[str] = OMIT,
126
+ unicode_enabled: typing.Optional[bool] = OMIT,
127
+ unsubscribe_instruction: typing.Optional[str] = OMIT,
128
+ request_options: typing.Optional[RequestOptions] = None,
129
+ ) -> HttpResponse[CreateSmsCampaignResponse]:
130
+ """
131
+ Parameters
132
+ ----------
133
+ content : str
134
+ Content of the message. The **maximum characters used per SMS is 160**, if used more than that, it will be counted as more than one SMS.
135
+
136
+ name : str
137
+ Name of the campaign
138
+
139
+ sender : str
140
+ Name of the sender. **The number of characters is limited to 11 for alphanumeric characters and 15 for numeric characters**
141
+
142
+ organisation_prefix : typing.Optional[str]
143
+ A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.**
144
+
145
+ recipients : typing.Optional[CreateSmsCampaignRequestRecipients]
146
+
147
+ scheduled_at : typing.Optional[str]
148
+ UTC date-time on which the campaign has to run (YYYY-MM-DDTHH:mm:ss.SSSZ). **Prefer to pass your timezone in date-time format for accurate result.**
149
+
150
+ unicode_enabled : typing.Optional[bool]
151
+ Format of the message. It indicates whether the content should be treated as unicode or not.
152
+
153
+ unsubscribe_instruction : typing.Optional[str]
154
+ Instructions to unsubscribe from future communications. Recommended by U.S. carriers. Must include **STOP** keyword. This will be added as instructions after the end of message content. **Prefer verifying maximum length of 160 characters including this instructions in message content to avoid multiple sending of same sms.**
155
+
156
+ request_options : typing.Optional[RequestOptions]
157
+ Request-specific configuration.
158
+
159
+ Returns
160
+ -------
161
+ HttpResponse[CreateSmsCampaignResponse]
162
+ successfully created
163
+ """
164
+ _response = self._client_wrapper.httpx_client.request(
165
+ "smsCampaigns",
166
+ method="POST",
167
+ json={
168
+ "content": content,
169
+ "name": name,
170
+ "organisationPrefix": organisation_prefix,
171
+ "recipients": convert_and_respect_annotation_metadata(
172
+ object_=recipients, annotation=CreateSmsCampaignRequestRecipients, direction="write"
173
+ ),
174
+ "scheduledAt": scheduled_at,
175
+ "sender": sender,
176
+ "unicodeEnabled": unicode_enabled,
177
+ "unsubscribeInstruction": unsubscribe_instruction,
178
+ },
179
+ headers={
180
+ "content-type": "application/json",
181
+ },
182
+ request_options=request_options,
183
+ omit=OMIT,
184
+ )
185
+ try:
186
+ if 200 <= _response.status_code < 300:
187
+ _data = typing.cast(
188
+ CreateSmsCampaignResponse,
189
+ construct_type(
190
+ type_=CreateSmsCampaignResponse, # type: ignore
191
+ object_=_response.json(),
192
+ ),
193
+ )
194
+ return HttpResponse(response=_response, data=_data)
195
+ if _response.status_code == 400:
196
+ raise BadRequestError(
197
+ headers=dict(_response.headers),
198
+ body=typing.cast(
199
+ typing.Any,
200
+ construct_type(
201
+ type_=typing.Any, # type: ignore
202
+ object_=_response.json(),
203
+ ),
204
+ ),
205
+ )
206
+ _response_json = _response.json()
207
+ except JSONDecodeError:
208
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
209
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
210
+
211
+ def get_sms_campaign(
212
+ self, campaign_id: int, *, request_options: typing.Optional[RequestOptions] = None
213
+ ) -> HttpResponse[GetSmsCampaignResponse]:
214
+ """
215
+ Parameters
216
+ ----------
217
+ campaign_id : int
218
+ id of the SMS campaign
219
+
220
+ request_options : typing.Optional[RequestOptions]
221
+ Request-specific configuration.
222
+
223
+ Returns
224
+ -------
225
+ HttpResponse[GetSmsCampaignResponse]
226
+ SMS campaign informations
227
+ """
228
+ _response = self._client_wrapper.httpx_client.request(
229
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}",
230
+ method="GET",
231
+ request_options=request_options,
232
+ )
233
+ try:
234
+ if 200 <= _response.status_code < 300:
235
+ _data = typing.cast(
236
+ GetSmsCampaignResponse,
237
+ construct_type(
238
+ type_=GetSmsCampaignResponse, # type: ignore
239
+ object_=_response.json(),
240
+ ),
241
+ )
242
+ return HttpResponse(response=_response, data=_data)
243
+ if _response.status_code == 400:
244
+ raise BadRequestError(
245
+ headers=dict(_response.headers),
246
+ body=typing.cast(
247
+ typing.Any,
248
+ construct_type(
249
+ type_=typing.Any, # type: ignore
250
+ object_=_response.json(),
251
+ ),
252
+ ),
253
+ )
254
+ if _response.status_code == 404:
255
+ raise NotFoundError(
256
+ headers=dict(_response.headers),
257
+ body=typing.cast(
258
+ typing.Any,
259
+ construct_type(
260
+ type_=typing.Any, # type: ignore
261
+ object_=_response.json(),
262
+ ),
263
+ ),
264
+ )
265
+ _response_json = _response.json()
266
+ except JSONDecodeError:
267
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
268
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
269
+
270
+ def update_sms_campaign(
271
+ self,
272
+ campaign_id: int,
273
+ *,
274
+ content: typing.Optional[str] = OMIT,
275
+ name: typing.Optional[str] = OMIT,
276
+ organisation_prefix: typing.Optional[str] = OMIT,
277
+ recipients: typing.Optional[UpdateSmsCampaignRequestRecipients] = OMIT,
278
+ scheduled_at: typing.Optional[str] = OMIT,
279
+ sender: typing.Optional[str] = OMIT,
280
+ unicode_enabled: typing.Optional[bool] = OMIT,
281
+ unsubscribe_instruction: typing.Optional[str] = OMIT,
282
+ request_options: typing.Optional[RequestOptions] = None,
283
+ ) -> HttpResponse[None]:
284
+ """
285
+ Parameters
286
+ ----------
287
+ campaign_id : int
288
+ id of the SMS campaign
289
+
290
+ content : typing.Optional[str]
291
+ Content of the message. The **maximum characters used per SMS is 160**, if used more than that, it will be counted as more than one SMS
292
+
293
+ name : typing.Optional[str]
294
+ Name of the campaign
295
+
296
+ organisation_prefix : typing.Optional[str]
297
+ A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.**
298
+
299
+ recipients : typing.Optional[UpdateSmsCampaignRequestRecipients]
300
+
301
+ scheduled_at : typing.Optional[str]
302
+ UTC date-time on which the campaign has to run (YYYY-MM-DDTHH:mm:ss.SSSZ). **Prefer to pass your timezone in date-time format for accurate result.**
303
+
304
+ sender : typing.Optional[str]
305
+ Name of the sender. **The number of characters is limited to 11 for alphanumeric characters and 15 for numeric characters**
306
+
307
+ unicode_enabled : typing.Optional[bool]
308
+ Format of the message. It indicates whether the content should be treated as unicode or not.
309
+
310
+ unsubscribe_instruction : typing.Optional[str]
311
+ Instructions to unsubscribe from future communications. Recommended by U.S. carriers. Must include **STOP** keyword. This will be added as instructions after the end of message content. **Prefer verifying maximum length of 160 characters including this instructions in message content to avoid multiple sending of same sms.**
312
+
313
+ request_options : typing.Optional[RequestOptions]
314
+ Request-specific configuration.
315
+
316
+ Returns
317
+ -------
318
+ HttpResponse[None]
319
+ """
320
+ _response = self._client_wrapper.httpx_client.request(
321
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}",
322
+ method="PUT",
323
+ json={
324
+ "content": content,
325
+ "name": name,
326
+ "organisationPrefix": organisation_prefix,
327
+ "recipients": convert_and_respect_annotation_metadata(
328
+ object_=recipients, annotation=UpdateSmsCampaignRequestRecipients, direction="write"
329
+ ),
330
+ "scheduledAt": scheduled_at,
331
+ "sender": sender,
332
+ "unicodeEnabled": unicode_enabled,
333
+ "unsubscribeInstruction": unsubscribe_instruction,
334
+ },
335
+ headers={
336
+ "content-type": "application/json",
337
+ },
338
+ request_options=request_options,
339
+ omit=OMIT,
340
+ )
341
+ try:
342
+ if 200 <= _response.status_code < 300:
343
+ return HttpResponse(response=_response, data=None)
344
+ if _response.status_code == 400:
345
+ raise BadRequestError(
346
+ headers=dict(_response.headers),
347
+ body=typing.cast(
348
+ typing.Any,
349
+ construct_type(
350
+ type_=typing.Any, # type: ignore
351
+ object_=_response.json(),
352
+ ),
353
+ ),
354
+ )
355
+ if _response.status_code == 404:
356
+ raise NotFoundError(
357
+ headers=dict(_response.headers),
358
+ body=typing.cast(
359
+ typing.Any,
360
+ construct_type(
361
+ type_=typing.Any, # type: ignore
362
+ object_=_response.json(),
363
+ ),
364
+ ),
365
+ )
366
+ _response_json = _response.json()
367
+ except JSONDecodeError:
368
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
369
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
370
+
371
+ def delete_sms_campaign(
372
+ self, campaign_id: int, *, request_options: typing.Optional[RequestOptions] = None
373
+ ) -> HttpResponse[None]:
374
+ """
375
+ Parameters
376
+ ----------
377
+ campaign_id : int
378
+ id of the SMS campaign
379
+
380
+ request_options : typing.Optional[RequestOptions]
381
+ Request-specific configuration.
382
+
383
+ Returns
384
+ -------
385
+ HttpResponse[None]
386
+ """
387
+ _response = self._client_wrapper.httpx_client.request(
388
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}",
389
+ method="DELETE",
390
+ request_options=request_options,
391
+ )
392
+ try:
393
+ if 200 <= _response.status_code < 300:
394
+ return HttpResponse(response=_response, data=None)
395
+ if _response.status_code == 400:
396
+ raise BadRequestError(
397
+ headers=dict(_response.headers),
398
+ body=typing.cast(
399
+ typing.Any,
400
+ construct_type(
401
+ type_=typing.Any, # type: ignore
402
+ object_=_response.json(),
403
+ ),
404
+ ),
405
+ )
406
+ if _response.status_code == 404:
407
+ raise NotFoundError(
408
+ headers=dict(_response.headers),
409
+ body=typing.cast(
410
+ typing.Any,
411
+ construct_type(
412
+ type_=typing.Any, # type: ignore
413
+ object_=_response.json(),
414
+ ),
415
+ ),
416
+ )
417
+ _response_json = _response.json()
418
+ except JSONDecodeError:
419
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
420
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
421
+
422
+ def request_sms_recipient_export(
423
+ self,
424
+ campaign_id: int,
425
+ *,
426
+ recipients_type: RequestSmsRecipientExportRequestRecipientsType,
427
+ notify_url: typing.Optional[str] = OMIT,
428
+ request_options: typing.Optional[RequestOptions] = None,
429
+ ) -> HttpResponse[RequestSmsRecipientExportResponse]:
430
+ """
431
+ It returns the background process ID which on completion calls the notify URL that you have set in the input.
432
+
433
+ Parameters
434
+ ----------
435
+ campaign_id : int
436
+ id of the campaign
437
+
438
+ recipients_type : RequestSmsRecipientExportRequestRecipientsType
439
+ Filter the recipients based on how they interacted with the campaign
440
+
441
+ notify_url : typing.Optional[str]
442
+ URL that will be called once the export process is finished. For reference, https://help.brevo.com/hc/en-us/articles/360007666479
443
+
444
+ request_options : typing.Optional[RequestOptions]
445
+ Request-specific configuration.
446
+
447
+ Returns
448
+ -------
449
+ HttpResponse[RequestSmsRecipientExportResponse]
450
+ process id created
451
+ """
452
+ _response = self._client_wrapper.httpx_client.request(
453
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}/exportRecipients",
454
+ method="POST",
455
+ json={
456
+ "notifyURL": notify_url,
457
+ "recipientsType": recipients_type,
458
+ },
459
+ headers={
460
+ "content-type": "application/json",
461
+ },
462
+ request_options=request_options,
463
+ omit=OMIT,
464
+ )
465
+ try:
466
+ if 200 <= _response.status_code < 300:
467
+ _data = typing.cast(
468
+ RequestSmsRecipientExportResponse,
469
+ construct_type(
470
+ type_=RequestSmsRecipientExportResponse, # type: ignore
471
+ object_=_response.json(),
472
+ ),
473
+ )
474
+ return HttpResponse(response=_response, data=_data)
475
+ if _response.status_code == 400:
476
+ raise BadRequestError(
477
+ headers=dict(_response.headers),
478
+ body=typing.cast(
479
+ typing.Any,
480
+ construct_type(
481
+ type_=typing.Any, # type: ignore
482
+ object_=_response.json(),
483
+ ),
484
+ ),
485
+ )
486
+ if _response.status_code == 404:
487
+ raise NotFoundError(
488
+ headers=dict(_response.headers),
489
+ body=typing.cast(
490
+ typing.Any,
491
+ construct_type(
492
+ type_=typing.Any, # type: ignore
493
+ object_=_response.json(),
494
+ ),
495
+ ),
496
+ )
497
+ _response_json = _response.json()
498
+ except JSONDecodeError:
499
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
500
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
501
+
502
+ def send_sms_campaign_now(
503
+ self, campaign_id: int, *, request_options: typing.Optional[RequestOptions] = None
504
+ ) -> HttpResponse[None]:
505
+ """
506
+ Parameters
507
+ ----------
508
+ campaign_id : int
509
+ id of the campaign
510
+
511
+ request_options : typing.Optional[RequestOptions]
512
+ Request-specific configuration.
513
+
514
+ Returns
515
+ -------
516
+ HttpResponse[None]
517
+ """
518
+ _response = self._client_wrapper.httpx_client.request(
519
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}/sendNow",
520
+ method="POST",
521
+ request_options=request_options,
522
+ )
523
+ try:
524
+ if 200 <= _response.status_code < 300:
525
+ return HttpResponse(response=_response, data=None)
526
+ if _response.status_code == 400:
527
+ raise BadRequestError(
528
+ headers=dict(_response.headers),
529
+ body=typing.cast(
530
+ typing.Any,
531
+ construct_type(
532
+ type_=typing.Any, # type: ignore
533
+ object_=_response.json(),
534
+ ),
535
+ ),
536
+ )
537
+ if _response.status_code == 402:
538
+ raise PaymentRequiredError(
539
+ headers=dict(_response.headers),
540
+ body=typing.cast(
541
+ ErrorModel,
542
+ construct_type(
543
+ type_=ErrorModel, # type: ignore
544
+ object_=_response.json(),
545
+ ),
546
+ ),
547
+ )
548
+ if _response.status_code == 404:
549
+ raise NotFoundError(
550
+ headers=dict(_response.headers),
551
+ body=typing.cast(
552
+ typing.Any,
553
+ construct_type(
554
+ type_=typing.Any, # type: ignore
555
+ object_=_response.json(),
556
+ ),
557
+ ),
558
+ )
559
+ _response_json = _response.json()
560
+ except JSONDecodeError:
561
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
562
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
563
+
564
+ def send_sms_report(
565
+ self,
566
+ campaign_id: int,
567
+ *,
568
+ email: SendReportEmail,
569
+ language: typing.Optional[SendReportLanguage] = OMIT,
570
+ request_options: typing.Optional[RequestOptions] = None,
571
+ ) -> HttpResponse[None]:
572
+ """
573
+ Send report of Sent and Archived campaign, to the specified email addresses, with respective data and a pdf attachment in detail.
574
+
575
+ Parameters
576
+ ----------
577
+ campaign_id : int
578
+ id of the campaign
579
+
580
+ email : SendReportEmail
581
+ Custom attributes for the report email.
582
+
583
+ language : typing.Optional[SendReportLanguage]
584
+ Language of email content for campaign report sending.
585
+
586
+ request_options : typing.Optional[RequestOptions]
587
+ Request-specific configuration.
588
+
589
+ Returns
590
+ -------
591
+ HttpResponse[None]
592
+ """
593
+ _response = self._client_wrapper.httpx_client.request(
594
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}/sendReport",
595
+ method="POST",
596
+ json={
597
+ "email": convert_and_respect_annotation_metadata(
598
+ object_=email, annotation=SendReportEmail, direction="write"
599
+ ),
600
+ "language": language,
601
+ },
602
+ headers={
603
+ "content-type": "application/json",
604
+ },
605
+ request_options=request_options,
606
+ omit=OMIT,
607
+ )
608
+ try:
609
+ if 200 <= _response.status_code < 300:
610
+ return HttpResponse(response=_response, data=None)
611
+ if _response.status_code == 400:
612
+ raise BadRequestError(
613
+ headers=dict(_response.headers),
614
+ body=typing.cast(
615
+ typing.Any,
616
+ construct_type(
617
+ type_=typing.Any, # type: ignore
618
+ object_=_response.json(),
619
+ ),
620
+ ),
621
+ )
622
+ if _response.status_code == 404:
623
+ raise NotFoundError(
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
+ _response_json = _response.json()
634
+ except JSONDecodeError:
635
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
636
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
637
+
638
+ def send_test_sms(
639
+ self,
640
+ campaign_id: int,
641
+ *,
642
+ phone_number: typing.Optional[str] = OMIT,
643
+ request_options: typing.Optional[RequestOptions] = None,
644
+ ) -> HttpResponse[None]:
645
+ """
646
+ Parameters
647
+ ----------
648
+ campaign_id : int
649
+ Id of the SMS campaign
650
+
651
+ phone_number : typing.Optional[str]
652
+ Mobile number of the recipient with the country code. This number **must belong to one of your contacts in Brevo account and must not be blacklisted**
653
+
654
+ request_options : typing.Optional[RequestOptions]
655
+ Request-specific configuration.
656
+
657
+ Returns
658
+ -------
659
+ HttpResponse[None]
660
+ """
661
+ _response = self._client_wrapper.httpx_client.request(
662
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}/sendTest",
663
+ method="POST",
664
+ json={
665
+ "phoneNumber": phone_number,
666
+ },
667
+ headers={
668
+ "content-type": "application/json",
669
+ },
670
+ request_options=request_options,
671
+ omit=OMIT,
672
+ )
673
+ try:
674
+ if 200 <= _response.status_code < 300:
675
+ return HttpResponse(response=_response, data=None)
676
+ if _response.status_code == 400:
677
+ raise BadRequestError(
678
+ headers=dict(_response.headers),
679
+ body=typing.cast(
680
+ typing.Any,
681
+ construct_type(
682
+ type_=typing.Any, # type: ignore
683
+ object_=_response.json(),
684
+ ),
685
+ ),
686
+ )
687
+ if _response.status_code == 404:
688
+ raise NotFoundError(
689
+ headers=dict(_response.headers),
690
+ body=typing.cast(
691
+ typing.Any,
692
+ construct_type(
693
+ type_=typing.Any, # type: ignore
694
+ object_=_response.json(),
695
+ ),
696
+ ),
697
+ )
698
+ _response_json = _response.json()
699
+ except JSONDecodeError:
700
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
701
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
702
+
703
+ def update_sms_campaign_status(
704
+ self,
705
+ campaign_id: int,
706
+ *,
707
+ status: typing.Optional[UpdateCampaignStatusStatus] = OMIT,
708
+ request_options: typing.Optional[RequestOptions] = None,
709
+ ) -> HttpResponse[None]:
710
+ """
711
+ Parameters
712
+ ----------
713
+ campaign_id : int
714
+ id of the campaign
715
+
716
+ status : typing.Optional[UpdateCampaignStatusStatus]
717
+ Note:- **replicateTemplate** status will be available **only for template type campaigns.**
718
+
719
+ request_options : typing.Optional[RequestOptions]
720
+ Request-specific configuration.
721
+
722
+ Returns
723
+ -------
724
+ HttpResponse[None]
725
+ """
726
+ _response = self._client_wrapper.httpx_client.request(
727
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}/status",
728
+ method="PUT",
729
+ json={
730
+ "status": status,
731
+ },
732
+ headers={
733
+ "content-type": "application/json",
734
+ },
735
+ request_options=request_options,
736
+ omit=OMIT,
737
+ )
738
+ try:
739
+ if 200 <= _response.status_code < 300:
740
+ return HttpResponse(response=_response, data=None)
741
+ if _response.status_code == 400:
742
+ raise BadRequestError(
743
+ headers=dict(_response.headers),
744
+ body=typing.cast(
745
+ typing.Any,
746
+ construct_type(
747
+ type_=typing.Any, # type: ignore
748
+ object_=_response.json(),
749
+ ),
750
+ ),
751
+ )
752
+ if _response.status_code == 404:
753
+ raise NotFoundError(
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
+ _response_json = _response.json()
764
+ except JSONDecodeError:
765
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
766
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
767
+
768
+
769
+ class AsyncRawSmsCampaignsClient:
770
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
771
+ self._client_wrapper = client_wrapper
772
+
773
+ async def get_sms_campaigns(
774
+ self,
775
+ *,
776
+ status: typing.Optional[GetSmsCampaignsRequestStatus] = None,
777
+ start_date: typing.Optional[str] = None,
778
+ end_date: typing.Optional[str] = None,
779
+ limit: typing.Optional[int] = None,
780
+ offset: typing.Optional[int] = None,
781
+ sort: typing.Optional[GetSmsCampaignsRequestSort] = None,
782
+ request_options: typing.Optional[RequestOptions] = None,
783
+ ) -> AsyncHttpResponse[GetSmsCampaignsResponse]:
784
+ """
785
+ Parameters
786
+ ----------
787
+ status : typing.Optional[GetSmsCampaignsRequestStatus]
788
+ Status of campaign.
789
+
790
+ start_date : typing.Optional[str]
791
+ **Mandatory if endDate is used.** Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent sms campaigns. **Prefer to pass your timezone in date-time format for accurate result** ( only available if either 'status' not passed and if passed is set to 'sent' )
792
+
793
+ end_date : typing.Optional[str]
794
+ **Mandatory if startDate is used.** Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent sms campaigns. **Prefer to pass your timezone in date-time format for accurate result** ( only available if either 'status' not passed and if passed is set to 'sent' )
795
+
796
+ limit : typing.Optional[int]
797
+ Number limitation for the result returned
798
+
799
+ offset : typing.Optional[int]
800
+ Beginning point in the list to retrieve from.
801
+
802
+ sort : typing.Optional[GetSmsCampaignsRequestSort]
803
+ Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed
804
+
805
+ request_options : typing.Optional[RequestOptions]
806
+ Request-specific configuration.
807
+
808
+ Returns
809
+ -------
810
+ AsyncHttpResponse[GetSmsCampaignsResponse]
811
+ SMS campaigns informations
812
+ """
813
+ _response = await self._client_wrapper.httpx_client.request(
814
+ "smsCampaigns",
815
+ method="GET",
816
+ params={
817
+ "status": status,
818
+ "startDate": start_date,
819
+ "endDate": end_date,
820
+ "limit": limit,
821
+ "offset": offset,
822
+ "sort": sort,
823
+ },
824
+ request_options=request_options,
825
+ )
826
+ try:
827
+ if 200 <= _response.status_code < 300:
828
+ _data = typing.cast(
829
+ GetSmsCampaignsResponse,
830
+ construct_type(
831
+ type_=GetSmsCampaignsResponse, # type: ignore
832
+ object_=_response.json(),
833
+ ),
834
+ )
835
+ return AsyncHttpResponse(response=_response, data=_data)
836
+ if _response.status_code == 400:
837
+ raise BadRequestError(
838
+ headers=dict(_response.headers),
839
+ body=typing.cast(
840
+ typing.Any,
841
+ construct_type(
842
+ type_=typing.Any, # type: ignore
843
+ object_=_response.json(),
844
+ ),
845
+ ),
846
+ )
847
+ _response_json = _response.json()
848
+ except JSONDecodeError:
849
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
850
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
851
+
852
+ async def create_sms_campaign(
853
+ self,
854
+ *,
855
+ content: str,
856
+ name: str,
857
+ sender: str,
858
+ organisation_prefix: typing.Optional[str] = OMIT,
859
+ recipients: typing.Optional[CreateSmsCampaignRequestRecipients] = OMIT,
860
+ scheduled_at: typing.Optional[str] = OMIT,
861
+ unicode_enabled: typing.Optional[bool] = OMIT,
862
+ unsubscribe_instruction: typing.Optional[str] = OMIT,
863
+ request_options: typing.Optional[RequestOptions] = None,
864
+ ) -> AsyncHttpResponse[CreateSmsCampaignResponse]:
865
+ """
866
+ Parameters
867
+ ----------
868
+ content : str
869
+ Content of the message. The **maximum characters used per SMS is 160**, if used more than that, it will be counted as more than one SMS.
870
+
871
+ name : str
872
+ Name of the campaign
873
+
874
+ sender : str
875
+ Name of the sender. **The number of characters is limited to 11 for alphanumeric characters and 15 for numeric characters**
876
+
877
+ organisation_prefix : typing.Optional[str]
878
+ A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.**
879
+
880
+ recipients : typing.Optional[CreateSmsCampaignRequestRecipients]
881
+
882
+ scheduled_at : typing.Optional[str]
883
+ UTC date-time on which the campaign has to run (YYYY-MM-DDTHH:mm:ss.SSSZ). **Prefer to pass your timezone in date-time format for accurate result.**
884
+
885
+ unicode_enabled : typing.Optional[bool]
886
+ Format of the message. It indicates whether the content should be treated as unicode or not.
887
+
888
+ unsubscribe_instruction : typing.Optional[str]
889
+ Instructions to unsubscribe from future communications. Recommended by U.S. carriers. Must include **STOP** keyword. This will be added as instructions after the end of message content. **Prefer verifying maximum length of 160 characters including this instructions in message content to avoid multiple sending of same sms.**
890
+
891
+ request_options : typing.Optional[RequestOptions]
892
+ Request-specific configuration.
893
+
894
+ Returns
895
+ -------
896
+ AsyncHttpResponse[CreateSmsCampaignResponse]
897
+ successfully created
898
+ """
899
+ _response = await self._client_wrapper.httpx_client.request(
900
+ "smsCampaigns",
901
+ method="POST",
902
+ json={
903
+ "content": content,
904
+ "name": name,
905
+ "organisationPrefix": organisation_prefix,
906
+ "recipients": convert_and_respect_annotation_metadata(
907
+ object_=recipients, annotation=CreateSmsCampaignRequestRecipients, direction="write"
908
+ ),
909
+ "scheduledAt": scheduled_at,
910
+ "sender": sender,
911
+ "unicodeEnabled": unicode_enabled,
912
+ "unsubscribeInstruction": unsubscribe_instruction,
913
+ },
914
+ headers={
915
+ "content-type": "application/json",
916
+ },
917
+ request_options=request_options,
918
+ omit=OMIT,
919
+ )
920
+ try:
921
+ if 200 <= _response.status_code < 300:
922
+ _data = typing.cast(
923
+ CreateSmsCampaignResponse,
924
+ construct_type(
925
+ type_=CreateSmsCampaignResponse, # type: ignore
926
+ object_=_response.json(),
927
+ ),
928
+ )
929
+ return AsyncHttpResponse(response=_response, data=_data)
930
+ if _response.status_code == 400:
931
+ raise BadRequestError(
932
+ headers=dict(_response.headers),
933
+ body=typing.cast(
934
+ typing.Any,
935
+ construct_type(
936
+ type_=typing.Any, # type: ignore
937
+ object_=_response.json(),
938
+ ),
939
+ ),
940
+ )
941
+ _response_json = _response.json()
942
+ except JSONDecodeError:
943
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
944
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
945
+
946
+ async def get_sms_campaign(
947
+ self, campaign_id: int, *, request_options: typing.Optional[RequestOptions] = None
948
+ ) -> AsyncHttpResponse[GetSmsCampaignResponse]:
949
+ """
950
+ Parameters
951
+ ----------
952
+ campaign_id : int
953
+ id of the SMS campaign
954
+
955
+ request_options : typing.Optional[RequestOptions]
956
+ Request-specific configuration.
957
+
958
+ Returns
959
+ -------
960
+ AsyncHttpResponse[GetSmsCampaignResponse]
961
+ SMS campaign informations
962
+ """
963
+ _response = await self._client_wrapper.httpx_client.request(
964
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}",
965
+ method="GET",
966
+ request_options=request_options,
967
+ )
968
+ try:
969
+ if 200 <= _response.status_code < 300:
970
+ _data = typing.cast(
971
+ GetSmsCampaignResponse,
972
+ construct_type(
973
+ type_=GetSmsCampaignResponse, # type: ignore
974
+ object_=_response.json(),
975
+ ),
976
+ )
977
+ return AsyncHttpResponse(response=_response, data=_data)
978
+ if _response.status_code == 400:
979
+ raise BadRequestError(
980
+ headers=dict(_response.headers),
981
+ body=typing.cast(
982
+ typing.Any,
983
+ construct_type(
984
+ type_=typing.Any, # type: ignore
985
+ object_=_response.json(),
986
+ ),
987
+ ),
988
+ )
989
+ if _response.status_code == 404:
990
+ raise NotFoundError(
991
+ headers=dict(_response.headers),
992
+ body=typing.cast(
993
+ typing.Any,
994
+ construct_type(
995
+ type_=typing.Any, # type: ignore
996
+ object_=_response.json(),
997
+ ),
998
+ ),
999
+ )
1000
+ _response_json = _response.json()
1001
+ except JSONDecodeError:
1002
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1003
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1004
+
1005
+ async def update_sms_campaign(
1006
+ self,
1007
+ campaign_id: int,
1008
+ *,
1009
+ content: typing.Optional[str] = OMIT,
1010
+ name: typing.Optional[str] = OMIT,
1011
+ organisation_prefix: typing.Optional[str] = OMIT,
1012
+ recipients: typing.Optional[UpdateSmsCampaignRequestRecipients] = OMIT,
1013
+ scheduled_at: typing.Optional[str] = OMIT,
1014
+ sender: typing.Optional[str] = OMIT,
1015
+ unicode_enabled: typing.Optional[bool] = OMIT,
1016
+ unsubscribe_instruction: typing.Optional[str] = OMIT,
1017
+ request_options: typing.Optional[RequestOptions] = None,
1018
+ ) -> AsyncHttpResponse[None]:
1019
+ """
1020
+ Parameters
1021
+ ----------
1022
+ campaign_id : int
1023
+ id of the SMS campaign
1024
+
1025
+ content : typing.Optional[str]
1026
+ Content of the message. The **maximum characters used per SMS is 160**, if used more than that, it will be counted as more than one SMS
1027
+
1028
+ name : typing.Optional[str]
1029
+ Name of the campaign
1030
+
1031
+ organisation_prefix : typing.Optional[str]
1032
+ A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.**
1033
+
1034
+ recipients : typing.Optional[UpdateSmsCampaignRequestRecipients]
1035
+
1036
+ scheduled_at : typing.Optional[str]
1037
+ UTC date-time on which the campaign has to run (YYYY-MM-DDTHH:mm:ss.SSSZ). **Prefer to pass your timezone in date-time format for accurate result.**
1038
+
1039
+ sender : typing.Optional[str]
1040
+ Name of the sender. **The number of characters is limited to 11 for alphanumeric characters and 15 for numeric characters**
1041
+
1042
+ unicode_enabled : typing.Optional[bool]
1043
+ Format of the message. It indicates whether the content should be treated as unicode or not.
1044
+
1045
+ unsubscribe_instruction : typing.Optional[str]
1046
+ Instructions to unsubscribe from future communications. Recommended by U.S. carriers. Must include **STOP** keyword. This will be added as instructions after the end of message content. **Prefer verifying maximum length of 160 characters including this instructions in message content to avoid multiple sending of same sms.**
1047
+
1048
+ request_options : typing.Optional[RequestOptions]
1049
+ Request-specific configuration.
1050
+
1051
+ Returns
1052
+ -------
1053
+ AsyncHttpResponse[None]
1054
+ """
1055
+ _response = await self._client_wrapper.httpx_client.request(
1056
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}",
1057
+ method="PUT",
1058
+ json={
1059
+ "content": content,
1060
+ "name": name,
1061
+ "organisationPrefix": organisation_prefix,
1062
+ "recipients": convert_and_respect_annotation_metadata(
1063
+ object_=recipients, annotation=UpdateSmsCampaignRequestRecipients, direction="write"
1064
+ ),
1065
+ "scheduledAt": scheduled_at,
1066
+ "sender": sender,
1067
+ "unicodeEnabled": unicode_enabled,
1068
+ "unsubscribeInstruction": unsubscribe_instruction,
1069
+ },
1070
+ headers={
1071
+ "content-type": "application/json",
1072
+ },
1073
+ request_options=request_options,
1074
+ omit=OMIT,
1075
+ )
1076
+ try:
1077
+ if 200 <= _response.status_code < 300:
1078
+ return AsyncHttpResponse(response=_response, data=None)
1079
+ if _response.status_code == 400:
1080
+ raise BadRequestError(
1081
+ headers=dict(_response.headers),
1082
+ body=typing.cast(
1083
+ typing.Any,
1084
+ construct_type(
1085
+ type_=typing.Any, # type: ignore
1086
+ object_=_response.json(),
1087
+ ),
1088
+ ),
1089
+ )
1090
+ if _response.status_code == 404:
1091
+ raise NotFoundError(
1092
+ headers=dict(_response.headers),
1093
+ body=typing.cast(
1094
+ typing.Any,
1095
+ construct_type(
1096
+ type_=typing.Any, # type: ignore
1097
+ object_=_response.json(),
1098
+ ),
1099
+ ),
1100
+ )
1101
+ _response_json = _response.json()
1102
+ except JSONDecodeError:
1103
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1104
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1105
+
1106
+ async def delete_sms_campaign(
1107
+ self, campaign_id: int, *, request_options: typing.Optional[RequestOptions] = None
1108
+ ) -> AsyncHttpResponse[None]:
1109
+ """
1110
+ Parameters
1111
+ ----------
1112
+ campaign_id : int
1113
+ id of the SMS campaign
1114
+
1115
+ request_options : typing.Optional[RequestOptions]
1116
+ Request-specific configuration.
1117
+
1118
+ Returns
1119
+ -------
1120
+ AsyncHttpResponse[None]
1121
+ """
1122
+ _response = await self._client_wrapper.httpx_client.request(
1123
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}",
1124
+ method="DELETE",
1125
+ request_options=request_options,
1126
+ )
1127
+ try:
1128
+ if 200 <= _response.status_code < 300:
1129
+ return AsyncHttpResponse(response=_response, data=None)
1130
+ if _response.status_code == 400:
1131
+ raise BadRequestError(
1132
+ headers=dict(_response.headers),
1133
+ body=typing.cast(
1134
+ typing.Any,
1135
+ construct_type(
1136
+ type_=typing.Any, # type: ignore
1137
+ object_=_response.json(),
1138
+ ),
1139
+ ),
1140
+ )
1141
+ if _response.status_code == 404:
1142
+ raise NotFoundError(
1143
+ headers=dict(_response.headers),
1144
+ body=typing.cast(
1145
+ typing.Any,
1146
+ construct_type(
1147
+ type_=typing.Any, # type: ignore
1148
+ object_=_response.json(),
1149
+ ),
1150
+ ),
1151
+ )
1152
+ _response_json = _response.json()
1153
+ except JSONDecodeError:
1154
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1155
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1156
+
1157
+ async def request_sms_recipient_export(
1158
+ self,
1159
+ campaign_id: int,
1160
+ *,
1161
+ recipients_type: RequestSmsRecipientExportRequestRecipientsType,
1162
+ notify_url: typing.Optional[str] = OMIT,
1163
+ request_options: typing.Optional[RequestOptions] = None,
1164
+ ) -> AsyncHttpResponse[RequestSmsRecipientExportResponse]:
1165
+ """
1166
+ It returns the background process ID which on completion calls the notify URL that you have set in the input.
1167
+
1168
+ Parameters
1169
+ ----------
1170
+ campaign_id : int
1171
+ id of the campaign
1172
+
1173
+ recipients_type : RequestSmsRecipientExportRequestRecipientsType
1174
+ Filter the recipients based on how they interacted with the campaign
1175
+
1176
+ notify_url : typing.Optional[str]
1177
+ URL that will be called once the export process is finished. For reference, https://help.brevo.com/hc/en-us/articles/360007666479
1178
+
1179
+ request_options : typing.Optional[RequestOptions]
1180
+ Request-specific configuration.
1181
+
1182
+ Returns
1183
+ -------
1184
+ AsyncHttpResponse[RequestSmsRecipientExportResponse]
1185
+ process id created
1186
+ """
1187
+ _response = await self._client_wrapper.httpx_client.request(
1188
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}/exportRecipients",
1189
+ method="POST",
1190
+ json={
1191
+ "notifyURL": notify_url,
1192
+ "recipientsType": recipients_type,
1193
+ },
1194
+ headers={
1195
+ "content-type": "application/json",
1196
+ },
1197
+ request_options=request_options,
1198
+ omit=OMIT,
1199
+ )
1200
+ try:
1201
+ if 200 <= _response.status_code < 300:
1202
+ _data = typing.cast(
1203
+ RequestSmsRecipientExportResponse,
1204
+ construct_type(
1205
+ type_=RequestSmsRecipientExportResponse, # type: ignore
1206
+ object_=_response.json(),
1207
+ ),
1208
+ )
1209
+ return AsyncHttpResponse(response=_response, data=_data)
1210
+ if _response.status_code == 400:
1211
+ raise BadRequestError(
1212
+ headers=dict(_response.headers),
1213
+ body=typing.cast(
1214
+ typing.Any,
1215
+ construct_type(
1216
+ type_=typing.Any, # type: ignore
1217
+ object_=_response.json(),
1218
+ ),
1219
+ ),
1220
+ )
1221
+ if _response.status_code == 404:
1222
+ raise NotFoundError(
1223
+ headers=dict(_response.headers),
1224
+ body=typing.cast(
1225
+ typing.Any,
1226
+ construct_type(
1227
+ type_=typing.Any, # type: ignore
1228
+ object_=_response.json(),
1229
+ ),
1230
+ ),
1231
+ )
1232
+ _response_json = _response.json()
1233
+ except JSONDecodeError:
1234
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1235
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1236
+
1237
+ async def send_sms_campaign_now(
1238
+ self, campaign_id: int, *, request_options: typing.Optional[RequestOptions] = None
1239
+ ) -> AsyncHttpResponse[None]:
1240
+ """
1241
+ Parameters
1242
+ ----------
1243
+ campaign_id : int
1244
+ id of the campaign
1245
+
1246
+ request_options : typing.Optional[RequestOptions]
1247
+ Request-specific configuration.
1248
+
1249
+ Returns
1250
+ -------
1251
+ AsyncHttpResponse[None]
1252
+ """
1253
+ _response = await self._client_wrapper.httpx_client.request(
1254
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}/sendNow",
1255
+ method="POST",
1256
+ request_options=request_options,
1257
+ )
1258
+ try:
1259
+ if 200 <= _response.status_code < 300:
1260
+ return AsyncHttpResponse(response=_response, data=None)
1261
+ if _response.status_code == 400:
1262
+ raise BadRequestError(
1263
+ headers=dict(_response.headers),
1264
+ body=typing.cast(
1265
+ typing.Any,
1266
+ construct_type(
1267
+ type_=typing.Any, # type: ignore
1268
+ object_=_response.json(),
1269
+ ),
1270
+ ),
1271
+ )
1272
+ if _response.status_code == 402:
1273
+ raise PaymentRequiredError(
1274
+ headers=dict(_response.headers),
1275
+ body=typing.cast(
1276
+ ErrorModel,
1277
+ construct_type(
1278
+ type_=ErrorModel, # type: ignore
1279
+ object_=_response.json(),
1280
+ ),
1281
+ ),
1282
+ )
1283
+ if _response.status_code == 404:
1284
+ raise NotFoundError(
1285
+ headers=dict(_response.headers),
1286
+ body=typing.cast(
1287
+ typing.Any,
1288
+ construct_type(
1289
+ type_=typing.Any, # type: ignore
1290
+ object_=_response.json(),
1291
+ ),
1292
+ ),
1293
+ )
1294
+ _response_json = _response.json()
1295
+ except JSONDecodeError:
1296
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1297
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1298
+
1299
+ async def send_sms_report(
1300
+ self,
1301
+ campaign_id: int,
1302
+ *,
1303
+ email: SendReportEmail,
1304
+ language: typing.Optional[SendReportLanguage] = OMIT,
1305
+ request_options: typing.Optional[RequestOptions] = None,
1306
+ ) -> AsyncHttpResponse[None]:
1307
+ """
1308
+ Send report of Sent and Archived campaign, to the specified email addresses, with respective data and a pdf attachment in detail.
1309
+
1310
+ Parameters
1311
+ ----------
1312
+ campaign_id : int
1313
+ id of the campaign
1314
+
1315
+ email : SendReportEmail
1316
+ Custom attributes for the report email.
1317
+
1318
+ language : typing.Optional[SendReportLanguage]
1319
+ Language of email content for campaign report sending.
1320
+
1321
+ request_options : typing.Optional[RequestOptions]
1322
+ Request-specific configuration.
1323
+
1324
+ Returns
1325
+ -------
1326
+ AsyncHttpResponse[None]
1327
+ """
1328
+ _response = await self._client_wrapper.httpx_client.request(
1329
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}/sendReport",
1330
+ method="POST",
1331
+ json={
1332
+ "email": convert_and_respect_annotation_metadata(
1333
+ object_=email, annotation=SendReportEmail, direction="write"
1334
+ ),
1335
+ "language": language,
1336
+ },
1337
+ headers={
1338
+ "content-type": "application/json",
1339
+ },
1340
+ request_options=request_options,
1341
+ omit=OMIT,
1342
+ )
1343
+ try:
1344
+ if 200 <= _response.status_code < 300:
1345
+ return AsyncHttpResponse(response=_response, data=None)
1346
+ if _response.status_code == 400:
1347
+ raise BadRequestError(
1348
+ headers=dict(_response.headers),
1349
+ body=typing.cast(
1350
+ typing.Any,
1351
+ construct_type(
1352
+ type_=typing.Any, # type: ignore
1353
+ object_=_response.json(),
1354
+ ),
1355
+ ),
1356
+ )
1357
+ if _response.status_code == 404:
1358
+ raise NotFoundError(
1359
+ headers=dict(_response.headers),
1360
+ body=typing.cast(
1361
+ typing.Any,
1362
+ construct_type(
1363
+ type_=typing.Any, # type: ignore
1364
+ object_=_response.json(),
1365
+ ),
1366
+ ),
1367
+ )
1368
+ _response_json = _response.json()
1369
+ except JSONDecodeError:
1370
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1371
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1372
+
1373
+ async def send_test_sms(
1374
+ self,
1375
+ campaign_id: int,
1376
+ *,
1377
+ phone_number: typing.Optional[str] = OMIT,
1378
+ request_options: typing.Optional[RequestOptions] = None,
1379
+ ) -> AsyncHttpResponse[None]:
1380
+ """
1381
+ Parameters
1382
+ ----------
1383
+ campaign_id : int
1384
+ Id of the SMS campaign
1385
+
1386
+ phone_number : typing.Optional[str]
1387
+ Mobile number of the recipient with the country code. This number **must belong to one of your contacts in Brevo account and must not be blacklisted**
1388
+
1389
+ request_options : typing.Optional[RequestOptions]
1390
+ Request-specific configuration.
1391
+
1392
+ Returns
1393
+ -------
1394
+ AsyncHttpResponse[None]
1395
+ """
1396
+ _response = await self._client_wrapper.httpx_client.request(
1397
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}/sendTest",
1398
+ method="POST",
1399
+ json={
1400
+ "phoneNumber": phone_number,
1401
+ },
1402
+ headers={
1403
+ "content-type": "application/json",
1404
+ },
1405
+ request_options=request_options,
1406
+ omit=OMIT,
1407
+ )
1408
+ try:
1409
+ if 200 <= _response.status_code < 300:
1410
+ return AsyncHttpResponse(response=_response, data=None)
1411
+ if _response.status_code == 400:
1412
+ raise BadRequestError(
1413
+ headers=dict(_response.headers),
1414
+ body=typing.cast(
1415
+ typing.Any,
1416
+ construct_type(
1417
+ type_=typing.Any, # type: ignore
1418
+ object_=_response.json(),
1419
+ ),
1420
+ ),
1421
+ )
1422
+ if _response.status_code == 404:
1423
+ raise NotFoundError(
1424
+ headers=dict(_response.headers),
1425
+ body=typing.cast(
1426
+ typing.Any,
1427
+ construct_type(
1428
+ type_=typing.Any, # type: ignore
1429
+ object_=_response.json(),
1430
+ ),
1431
+ ),
1432
+ )
1433
+ _response_json = _response.json()
1434
+ except JSONDecodeError:
1435
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1436
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1437
+
1438
+ async def update_sms_campaign_status(
1439
+ self,
1440
+ campaign_id: int,
1441
+ *,
1442
+ status: typing.Optional[UpdateCampaignStatusStatus] = OMIT,
1443
+ request_options: typing.Optional[RequestOptions] = None,
1444
+ ) -> AsyncHttpResponse[None]:
1445
+ """
1446
+ Parameters
1447
+ ----------
1448
+ campaign_id : int
1449
+ id of the campaign
1450
+
1451
+ status : typing.Optional[UpdateCampaignStatusStatus]
1452
+ Note:- **replicateTemplate** status will be available **only for template type campaigns.**
1453
+
1454
+ request_options : typing.Optional[RequestOptions]
1455
+ Request-specific configuration.
1456
+
1457
+ Returns
1458
+ -------
1459
+ AsyncHttpResponse[None]
1460
+ """
1461
+ _response = await self._client_wrapper.httpx_client.request(
1462
+ f"smsCampaigns/{jsonable_encoder(campaign_id)}/status",
1463
+ method="PUT",
1464
+ json={
1465
+ "status": status,
1466
+ },
1467
+ headers={
1468
+ "content-type": "application/json",
1469
+ },
1470
+ request_options=request_options,
1471
+ omit=OMIT,
1472
+ )
1473
+ try:
1474
+ if 200 <= _response.status_code < 300:
1475
+ return AsyncHttpResponse(response=_response, data=None)
1476
+ if _response.status_code == 400:
1477
+ raise BadRequestError(
1478
+ headers=dict(_response.headers),
1479
+ body=typing.cast(
1480
+ typing.Any,
1481
+ construct_type(
1482
+ type_=typing.Any, # type: ignore
1483
+ object_=_response.json(),
1484
+ ),
1485
+ ),
1486
+ )
1487
+ if _response.status_code == 404:
1488
+ raise NotFoundError(
1489
+ headers=dict(_response.headers),
1490
+ body=typing.cast(
1491
+ typing.Any,
1492
+ construct_type(
1493
+ type_=typing.Any, # type: ignore
1494
+ object_=_response.json(),
1495
+ ),
1496
+ ),
1497
+ )
1498
+ _response_json = _response.json()
1499
+ except JSONDecodeError:
1500
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1501
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)