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,1089 @@
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 .types.create_sender_request_ips_item import CreateSenderRequestIpsItem
16
+ from .types.create_sender_response import CreateSenderResponse
17
+ from .types.get_ips_from_sender_response import GetIpsFromSenderResponse
18
+ from .types.get_ips_response import GetIpsResponse
19
+ from .types.get_senders_response import GetSendersResponse
20
+ from .types.update_sender_request_ips_item import UpdateSenderRequestIpsItem
21
+
22
+ # this is used as the default value for optional parameters
23
+ OMIT = typing.cast(typing.Any, ...)
24
+
25
+
26
+ class RawSendersClient:
27
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
28
+ self._client_wrapper = client_wrapper
29
+
30
+ def get_senders(
31
+ self,
32
+ *,
33
+ ip: typing.Optional[str] = None,
34
+ domain: typing.Optional[str] = None,
35
+ request_options: typing.Optional[RequestOptions] = None,
36
+ ) -> HttpResponse[GetSendersResponse]:
37
+ """
38
+ Retrieves a list of all email senders from your Brevo account with optional filtering.
39
+
40
+ **Use this to:**
41
+ - Get all available senders for email campaign setup
42
+ - Find sender details including ID, name, and email address
43
+ - Filter senders by IP address for dedicated IP users
44
+ - Filter senders by domain for domain-specific configurations
45
+ - Monitor sender configuration and status
46
+
47
+ **Key information returned:**
48
+ - Sender details (ID, name, email address)
49
+ - Sender status and verification information
50
+ - Associated IP addresses and domains (for dedicated IP accounts)
51
+ - Sender configuration settings
52
+
53
+ **Important considerations:**
54
+ - Standard accounts show empty IP arrays, dedicated IP accounts show IP assignments
55
+ - Filtering by IP only available for accounts with dedicated IPs
56
+ - Domain filtering helps organize senders by business units or brands
57
+ - Sender status indicates if sender is active and ready for campaign use
58
+ - Email verification required before sender can be used in campaigns
59
+
60
+ Parameters
61
+ ----------
62
+ ip : typing.Optional[str]
63
+ Filter your senders for a specific ip. **Available for dedicated IP usage only**
64
+
65
+ domain : typing.Optional[str]
66
+ Filter your senders for a specific domain
67
+
68
+ request_options : typing.Optional[RequestOptions]
69
+ Request-specific configuration.
70
+
71
+ Returns
72
+ -------
73
+ HttpResponse[GetSendersResponse]
74
+ List of senders retrieved successfully
75
+ """
76
+ _response = self._client_wrapper.httpx_client.request(
77
+ "senders",
78
+ method="GET",
79
+ params={
80
+ "ip": ip,
81
+ "domain": domain,
82
+ },
83
+ request_options=request_options,
84
+ )
85
+ try:
86
+ if 200 <= _response.status_code < 300:
87
+ _data = typing.cast(
88
+ GetSendersResponse,
89
+ construct_type(
90
+ type_=GetSendersResponse, # type: ignore
91
+ object_=_response.json(),
92
+ ),
93
+ )
94
+ return HttpResponse(response=_response, data=_data)
95
+ if _response.status_code == 400:
96
+ raise BadRequestError(
97
+ headers=dict(_response.headers),
98
+ body=typing.cast(
99
+ typing.Any,
100
+ construct_type(
101
+ type_=typing.Any, # type: ignore
102
+ object_=_response.json(),
103
+ ),
104
+ ),
105
+ )
106
+ _response_json = _response.json()
107
+ except JSONDecodeError:
108
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
109
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
110
+
111
+ def create_sender(
112
+ self,
113
+ *,
114
+ email: str,
115
+ name: str,
116
+ ips: typing.Optional[typing.Sequence[CreateSenderRequestIpsItem]] = OMIT,
117
+ request_options: typing.Optional[RequestOptions] = None,
118
+ ) -> HttpResponse[CreateSenderResponse]:
119
+ """
120
+ Creates a new email sender in your Brevo account.
121
+
122
+ **Use this to:**
123
+ - Add new senders for email campaigns
124
+ - Configure sender identity (name and email)
125
+ - Associate dedicated IPs with the sender (for dedicated IP accounts)
126
+ - Set up domain-based sender configurations
127
+
128
+ **Key information returned:**
129
+ - Created sender ID
130
+ - DKIM and SPF configuration status
131
+ - Success confirmation
132
+
133
+ **Important considerations:**
134
+ - Verification email sent to specified sender address
135
+ - DKIM and SPF configuration affects deliverability
136
+ - Dedicated IP accounts require IP association during creation
137
+ - IP weights must sum to 100 when specified
138
+ - Sender must be verified before use in campaigns
139
+
140
+ Parameters
141
+ ----------
142
+ email : str
143
+ From email to use for the sender. A verification email will be
144
+ sent to this address.
145
+
146
+ name : str
147
+ From Name to use for the sender
148
+
149
+ ips : typing.Optional[typing.Sequence[CreateSenderRequestIpsItem]]
150
+ **Mandatory in case of dedicated IP**. IPs to associate to the
151
+ sender. Not required for standard accounts.
152
+
153
+ request_options : typing.Optional[RequestOptions]
154
+ Request-specific configuration.
155
+
156
+ Returns
157
+ -------
158
+ HttpResponse[CreateSenderResponse]
159
+ Sender created successfully
160
+ """
161
+ _response = self._client_wrapper.httpx_client.request(
162
+ "senders",
163
+ method="POST",
164
+ json={
165
+ "email": email,
166
+ "ips": convert_and_respect_annotation_metadata(
167
+ object_=ips, annotation=typing.Sequence[CreateSenderRequestIpsItem], direction="write"
168
+ ),
169
+ "name": name,
170
+ },
171
+ headers={
172
+ "content-type": "application/json",
173
+ },
174
+ request_options=request_options,
175
+ omit=OMIT,
176
+ )
177
+ try:
178
+ if 200 <= _response.status_code < 300:
179
+ _data = typing.cast(
180
+ CreateSenderResponse,
181
+ construct_type(
182
+ type_=CreateSenderResponse, # type: ignore
183
+ object_=_response.json(),
184
+ ),
185
+ )
186
+ return HttpResponse(response=_response, data=_data)
187
+ if _response.status_code == 400:
188
+ raise BadRequestError(
189
+ headers=dict(_response.headers),
190
+ body=typing.cast(
191
+ typing.Any,
192
+ construct_type(
193
+ type_=typing.Any, # type: ignore
194
+ object_=_response.json(),
195
+ ),
196
+ ),
197
+ )
198
+ _response_json = _response.json()
199
+ except JSONDecodeError:
200
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
201
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
202
+
203
+ def get_ips(self, *, request_options: typing.Optional[RequestOptions] = None) -> HttpResponse[GetIpsResponse]:
204
+ """
205
+ Retrieves all dedicated IPs associated with your Brevo account.
206
+
207
+ Use this to:
208
+ - List all your dedicated IPs
209
+ - Check the status of your dedicated IPs (active/inactive)
210
+ - Find IP addresses and associated domains for configuration purposes
211
+ - Monitor your IP reputation and deliverability
212
+ - Verify available IPs for sender configuration
213
+
214
+ Key information returned:
215
+ - IP ID and address
216
+ - Associated domain
217
+ - Active status
218
+ - IP configuration details
219
+
220
+ Parameters
221
+ ----------
222
+ request_options : typing.Optional[RequestOptions]
223
+ Request-specific configuration.
224
+
225
+ Returns
226
+ -------
227
+ HttpResponse[GetIpsResponse]
228
+ List of dedicated IPs retrieved successfully
229
+ """
230
+ _response = self._client_wrapper.httpx_client.request(
231
+ "senders/ips",
232
+ method="GET",
233
+ request_options=request_options,
234
+ )
235
+ try:
236
+ if 200 <= _response.status_code < 300:
237
+ _data = typing.cast(
238
+ GetIpsResponse,
239
+ construct_type(
240
+ type_=GetIpsResponse, # type: ignore
241
+ object_=_response.json(),
242
+ ),
243
+ )
244
+ return HttpResponse(response=_response, data=_data)
245
+ if _response.status_code == 400:
246
+ raise BadRequestError(
247
+ headers=dict(_response.headers),
248
+ body=typing.cast(
249
+ typing.Any,
250
+ construct_type(
251
+ type_=typing.Any, # type: ignore
252
+ object_=_response.json(),
253
+ ),
254
+ ),
255
+ )
256
+ _response_json = _response.json()
257
+ except JSONDecodeError:
258
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
259
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
260
+
261
+ def update_sender(
262
+ self,
263
+ sender_id: int,
264
+ *,
265
+ email: typing.Optional[str] = OMIT,
266
+ ips: typing.Optional[typing.Sequence[UpdateSenderRequestIpsItem]] = OMIT,
267
+ name: typing.Optional[str] = OMIT,
268
+ request_options: typing.Optional[RequestOptions] = None,
269
+ ) -> HttpResponse[None]:
270
+ """
271
+ Updates an existing email sender's configuration.
272
+
273
+ Use this to:
274
+ - Modify sender display name or email address
275
+ - Update dedicated IP associations
276
+ - Change sender configuration settings
277
+ - Correct sender information
278
+
279
+ Key information returned:
280
+ - Success confirmation
281
+ - Updated sender details
282
+
283
+ Parameters
284
+ ----------
285
+ sender_id : int
286
+ Id of the sender
287
+
288
+ email : typing.Optional[str]
289
+ From Email to update the sender
290
+
291
+ ips : typing.Optional[typing.Sequence[UpdateSenderRequestIpsItem]]
292
+ **Only in case of dedicated IP**. IPs to associate to the
293
+ sender. If passed, will replace all the existing IPs. Not required for standard accounts.
294
+
295
+ name : typing.Optional[str]
296
+ From Name to update the sender
297
+
298
+ request_options : typing.Optional[RequestOptions]
299
+ Request-specific configuration.
300
+
301
+ Returns
302
+ -------
303
+ HttpResponse[None]
304
+ """
305
+ _response = self._client_wrapper.httpx_client.request(
306
+ f"senders/{jsonable_encoder(sender_id)}",
307
+ method="PUT",
308
+ json={
309
+ "email": email,
310
+ "ips": convert_and_respect_annotation_metadata(
311
+ object_=ips, annotation=typing.Sequence[UpdateSenderRequestIpsItem], direction="write"
312
+ ),
313
+ "name": name,
314
+ },
315
+ headers={
316
+ "content-type": "application/json",
317
+ },
318
+ request_options=request_options,
319
+ omit=OMIT,
320
+ )
321
+ try:
322
+ if 200 <= _response.status_code < 300:
323
+ return HttpResponse(response=_response, data=None)
324
+ if _response.status_code == 400:
325
+ raise BadRequestError(
326
+ headers=dict(_response.headers),
327
+ body=typing.cast(
328
+ typing.Any,
329
+ construct_type(
330
+ type_=typing.Any, # type: ignore
331
+ object_=_response.json(),
332
+ ),
333
+ ),
334
+ )
335
+ if _response.status_code == 404:
336
+ raise NotFoundError(
337
+ headers=dict(_response.headers),
338
+ body=typing.cast(
339
+ typing.Any,
340
+ construct_type(
341
+ type_=typing.Any, # type: ignore
342
+ object_=_response.json(),
343
+ ),
344
+ ),
345
+ )
346
+ _response_json = _response.json()
347
+ except JSONDecodeError:
348
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
349
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
350
+
351
+ def delete_sender(
352
+ self, sender_id: int, *, request_options: typing.Optional[RequestOptions] = None
353
+ ) -> HttpResponse[None]:
354
+ """
355
+ Deletes an email sender from your Brevo account.
356
+
357
+ Use this to:
358
+ - Remove senders that are no longer needed
359
+ - Clean up sender configurations
360
+ - Remove duplicate or test senders
361
+
362
+ Key information returned:
363
+ - Success confirmation message
364
+
365
+ Parameters
366
+ ----------
367
+ sender_id : int
368
+ Id of the sender
369
+
370
+ request_options : typing.Optional[RequestOptions]
371
+ Request-specific configuration.
372
+
373
+ Returns
374
+ -------
375
+ HttpResponse[None]
376
+ """
377
+ _response = self._client_wrapper.httpx_client.request(
378
+ f"senders/{jsonable_encoder(sender_id)}",
379
+ method="DELETE",
380
+ request_options=request_options,
381
+ )
382
+ try:
383
+ if 200 <= _response.status_code < 300:
384
+ return HttpResponse(response=_response, data=None)
385
+ if _response.status_code == 400:
386
+ raise BadRequestError(
387
+ headers=dict(_response.headers),
388
+ body=typing.cast(
389
+ typing.Any,
390
+ construct_type(
391
+ type_=typing.Any, # type: ignore
392
+ object_=_response.json(),
393
+ ),
394
+ ),
395
+ )
396
+ if _response.status_code == 404:
397
+ raise NotFoundError(
398
+ headers=dict(_response.headers),
399
+ body=typing.cast(
400
+ typing.Any,
401
+ construct_type(
402
+ type_=typing.Any, # type: ignore
403
+ object_=_response.json(),
404
+ ),
405
+ ),
406
+ )
407
+ _response_json = _response.json()
408
+ except JSONDecodeError:
409
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
410
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
411
+
412
+ def get_ips_from_sender(
413
+ self, sender_id: int, *, request_options: typing.Optional[RequestOptions] = None
414
+ ) -> HttpResponse[GetIpsFromSenderResponse]:
415
+ """
416
+ Retrieves the dedicated IPs associated with a specific sender.
417
+
418
+ Use this to:
419
+ - Check IP configuration for a sender
420
+ - Verify dedicated IP associations
421
+ - Get IP details for troubleshooting
422
+ - Monitor sender IP configuration
423
+
424
+ Key information returned:
425
+ - List of associated dedicated IPs
426
+ - IP addresses and domain configurations
427
+ - IP status and settings
428
+
429
+ Parameters
430
+ ----------
431
+ sender_id : int
432
+ Id of the sender
433
+
434
+ request_options : typing.Optional[RequestOptions]
435
+ Request-specific configuration.
436
+
437
+ Returns
438
+ -------
439
+ HttpResponse[GetIpsFromSenderResponse]
440
+ List of dedicated IPs retrieved successfully
441
+ """
442
+ _response = self._client_wrapper.httpx_client.request(
443
+ f"senders/{jsonable_encoder(sender_id)}/ips",
444
+ method="GET",
445
+ request_options=request_options,
446
+ )
447
+ try:
448
+ if 200 <= _response.status_code < 300:
449
+ _data = typing.cast(
450
+ GetIpsFromSenderResponse,
451
+ construct_type(
452
+ type_=GetIpsFromSenderResponse, # type: ignore
453
+ object_=_response.json(),
454
+ ),
455
+ )
456
+ return HttpResponse(response=_response, data=_data)
457
+ if _response.status_code == 400:
458
+ raise BadRequestError(
459
+ headers=dict(_response.headers),
460
+ body=typing.cast(
461
+ typing.Any,
462
+ construct_type(
463
+ type_=typing.Any, # type: ignore
464
+ object_=_response.json(),
465
+ ),
466
+ ),
467
+ )
468
+ if _response.status_code == 404:
469
+ raise NotFoundError(
470
+ headers=dict(_response.headers),
471
+ body=typing.cast(
472
+ typing.Any,
473
+ construct_type(
474
+ type_=typing.Any, # type: ignore
475
+ object_=_response.json(),
476
+ ),
477
+ ),
478
+ )
479
+ _response_json = _response.json()
480
+ except JSONDecodeError:
481
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
482
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
483
+
484
+ def validate_sender_by_otp(
485
+ self, sender_id: int, *, otp: int, request_options: typing.Optional[RequestOptions] = None
486
+ ) -> HttpResponse[None]:
487
+ """
488
+ Validates a sender using the OTP (One-Time Password) received via email.
489
+
490
+ Use this to:
491
+ - Complete sender verification process
492
+ - Activate a newly created sender
493
+ - Verify ownership of the sender email address
494
+ - Enable the sender for use in email campaigns
495
+
496
+ Key information returned:
497
+ - Success confirmation of sender verification
498
+ - Sender activation status
499
+
500
+ Parameters
501
+ ----------
502
+ sender_id : int
503
+ Id of the sender
504
+
505
+ otp : int
506
+ 6 digit OTP received on email
507
+
508
+ request_options : typing.Optional[RequestOptions]
509
+ Request-specific configuration.
510
+
511
+ Returns
512
+ -------
513
+ HttpResponse[None]
514
+ """
515
+ _response = self._client_wrapper.httpx_client.request(
516
+ f"senders/{jsonable_encoder(sender_id)}/validate",
517
+ method="PUT",
518
+ json={
519
+ "otp": otp,
520
+ },
521
+ headers={
522
+ "content-type": "application/json",
523
+ },
524
+ request_options=request_options,
525
+ omit=OMIT,
526
+ )
527
+ try:
528
+ if 200 <= _response.status_code < 300:
529
+ return HttpResponse(response=_response, data=None)
530
+ if _response.status_code == 400:
531
+ raise BadRequestError(
532
+ headers=dict(_response.headers),
533
+ body=typing.cast(
534
+ typing.Any,
535
+ construct_type(
536
+ type_=typing.Any, # type: ignore
537
+ object_=_response.json(),
538
+ ),
539
+ ),
540
+ )
541
+ if _response.status_code == 404:
542
+ raise NotFoundError(
543
+ headers=dict(_response.headers),
544
+ body=typing.cast(
545
+ typing.Any,
546
+ construct_type(
547
+ type_=typing.Any, # type: ignore
548
+ object_=_response.json(),
549
+ ),
550
+ ),
551
+ )
552
+ _response_json = _response.json()
553
+ except JSONDecodeError:
554
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
555
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
556
+
557
+
558
+ class AsyncRawSendersClient:
559
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
560
+ self._client_wrapper = client_wrapper
561
+
562
+ async def get_senders(
563
+ self,
564
+ *,
565
+ ip: typing.Optional[str] = None,
566
+ domain: typing.Optional[str] = None,
567
+ request_options: typing.Optional[RequestOptions] = None,
568
+ ) -> AsyncHttpResponse[GetSendersResponse]:
569
+ """
570
+ Retrieves a list of all email senders from your Brevo account with optional filtering.
571
+
572
+ **Use this to:**
573
+ - Get all available senders for email campaign setup
574
+ - Find sender details including ID, name, and email address
575
+ - Filter senders by IP address for dedicated IP users
576
+ - Filter senders by domain for domain-specific configurations
577
+ - Monitor sender configuration and status
578
+
579
+ **Key information returned:**
580
+ - Sender details (ID, name, email address)
581
+ - Sender status and verification information
582
+ - Associated IP addresses and domains (for dedicated IP accounts)
583
+ - Sender configuration settings
584
+
585
+ **Important considerations:**
586
+ - Standard accounts show empty IP arrays, dedicated IP accounts show IP assignments
587
+ - Filtering by IP only available for accounts with dedicated IPs
588
+ - Domain filtering helps organize senders by business units or brands
589
+ - Sender status indicates if sender is active and ready for campaign use
590
+ - Email verification required before sender can be used in campaigns
591
+
592
+ Parameters
593
+ ----------
594
+ ip : typing.Optional[str]
595
+ Filter your senders for a specific ip. **Available for dedicated IP usage only**
596
+
597
+ domain : typing.Optional[str]
598
+ Filter your senders for a specific domain
599
+
600
+ request_options : typing.Optional[RequestOptions]
601
+ Request-specific configuration.
602
+
603
+ Returns
604
+ -------
605
+ AsyncHttpResponse[GetSendersResponse]
606
+ List of senders retrieved successfully
607
+ """
608
+ _response = await self._client_wrapper.httpx_client.request(
609
+ "senders",
610
+ method="GET",
611
+ params={
612
+ "ip": ip,
613
+ "domain": domain,
614
+ },
615
+ request_options=request_options,
616
+ )
617
+ try:
618
+ if 200 <= _response.status_code < 300:
619
+ _data = typing.cast(
620
+ GetSendersResponse,
621
+ construct_type(
622
+ type_=GetSendersResponse, # type: ignore
623
+ object_=_response.json(),
624
+ ),
625
+ )
626
+ return AsyncHttpResponse(response=_response, data=_data)
627
+ if _response.status_code == 400:
628
+ raise BadRequestError(
629
+ headers=dict(_response.headers),
630
+ body=typing.cast(
631
+ typing.Any,
632
+ construct_type(
633
+ type_=typing.Any, # type: ignore
634
+ object_=_response.json(),
635
+ ),
636
+ ),
637
+ )
638
+ _response_json = _response.json()
639
+ except JSONDecodeError:
640
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
641
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
642
+
643
+ async def create_sender(
644
+ self,
645
+ *,
646
+ email: str,
647
+ name: str,
648
+ ips: typing.Optional[typing.Sequence[CreateSenderRequestIpsItem]] = OMIT,
649
+ request_options: typing.Optional[RequestOptions] = None,
650
+ ) -> AsyncHttpResponse[CreateSenderResponse]:
651
+ """
652
+ Creates a new email sender in your Brevo account.
653
+
654
+ **Use this to:**
655
+ - Add new senders for email campaigns
656
+ - Configure sender identity (name and email)
657
+ - Associate dedicated IPs with the sender (for dedicated IP accounts)
658
+ - Set up domain-based sender configurations
659
+
660
+ **Key information returned:**
661
+ - Created sender ID
662
+ - DKIM and SPF configuration status
663
+ - Success confirmation
664
+
665
+ **Important considerations:**
666
+ - Verification email sent to specified sender address
667
+ - DKIM and SPF configuration affects deliverability
668
+ - Dedicated IP accounts require IP association during creation
669
+ - IP weights must sum to 100 when specified
670
+ - Sender must be verified before use in campaigns
671
+
672
+ Parameters
673
+ ----------
674
+ email : str
675
+ From email to use for the sender. A verification email will be
676
+ sent to this address.
677
+
678
+ name : str
679
+ From Name to use for the sender
680
+
681
+ ips : typing.Optional[typing.Sequence[CreateSenderRequestIpsItem]]
682
+ **Mandatory in case of dedicated IP**. IPs to associate to the
683
+ sender. Not required for standard accounts.
684
+
685
+ request_options : typing.Optional[RequestOptions]
686
+ Request-specific configuration.
687
+
688
+ Returns
689
+ -------
690
+ AsyncHttpResponse[CreateSenderResponse]
691
+ Sender created successfully
692
+ """
693
+ _response = await self._client_wrapper.httpx_client.request(
694
+ "senders",
695
+ method="POST",
696
+ json={
697
+ "email": email,
698
+ "ips": convert_and_respect_annotation_metadata(
699
+ object_=ips, annotation=typing.Sequence[CreateSenderRequestIpsItem], direction="write"
700
+ ),
701
+ "name": name,
702
+ },
703
+ headers={
704
+ "content-type": "application/json",
705
+ },
706
+ request_options=request_options,
707
+ omit=OMIT,
708
+ )
709
+ try:
710
+ if 200 <= _response.status_code < 300:
711
+ _data = typing.cast(
712
+ CreateSenderResponse,
713
+ construct_type(
714
+ type_=CreateSenderResponse, # type: ignore
715
+ object_=_response.json(),
716
+ ),
717
+ )
718
+ return AsyncHttpResponse(response=_response, data=_data)
719
+ if _response.status_code == 400:
720
+ raise BadRequestError(
721
+ headers=dict(_response.headers),
722
+ body=typing.cast(
723
+ typing.Any,
724
+ construct_type(
725
+ type_=typing.Any, # type: ignore
726
+ object_=_response.json(),
727
+ ),
728
+ ),
729
+ )
730
+ _response_json = _response.json()
731
+ except JSONDecodeError:
732
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
733
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
734
+
735
+ async def get_ips(
736
+ self, *, request_options: typing.Optional[RequestOptions] = None
737
+ ) -> AsyncHttpResponse[GetIpsResponse]:
738
+ """
739
+ Retrieves all dedicated IPs associated with your Brevo account.
740
+
741
+ Use this to:
742
+ - List all your dedicated IPs
743
+ - Check the status of your dedicated IPs (active/inactive)
744
+ - Find IP addresses and associated domains for configuration purposes
745
+ - Monitor your IP reputation and deliverability
746
+ - Verify available IPs for sender configuration
747
+
748
+ Key information returned:
749
+ - IP ID and address
750
+ - Associated domain
751
+ - Active status
752
+ - IP configuration details
753
+
754
+ Parameters
755
+ ----------
756
+ request_options : typing.Optional[RequestOptions]
757
+ Request-specific configuration.
758
+
759
+ Returns
760
+ -------
761
+ AsyncHttpResponse[GetIpsResponse]
762
+ List of dedicated IPs retrieved successfully
763
+ """
764
+ _response = await self._client_wrapper.httpx_client.request(
765
+ "senders/ips",
766
+ method="GET",
767
+ request_options=request_options,
768
+ )
769
+ try:
770
+ if 200 <= _response.status_code < 300:
771
+ _data = typing.cast(
772
+ GetIpsResponse,
773
+ construct_type(
774
+ type_=GetIpsResponse, # type: ignore
775
+ object_=_response.json(),
776
+ ),
777
+ )
778
+ return AsyncHttpResponse(response=_response, data=_data)
779
+ if _response.status_code == 400:
780
+ raise BadRequestError(
781
+ headers=dict(_response.headers),
782
+ body=typing.cast(
783
+ typing.Any,
784
+ construct_type(
785
+ type_=typing.Any, # type: ignore
786
+ object_=_response.json(),
787
+ ),
788
+ ),
789
+ )
790
+ _response_json = _response.json()
791
+ except JSONDecodeError:
792
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
793
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
794
+
795
+ async def update_sender(
796
+ self,
797
+ sender_id: int,
798
+ *,
799
+ email: typing.Optional[str] = OMIT,
800
+ ips: typing.Optional[typing.Sequence[UpdateSenderRequestIpsItem]] = OMIT,
801
+ name: typing.Optional[str] = OMIT,
802
+ request_options: typing.Optional[RequestOptions] = None,
803
+ ) -> AsyncHttpResponse[None]:
804
+ """
805
+ Updates an existing email sender's configuration.
806
+
807
+ Use this to:
808
+ - Modify sender display name or email address
809
+ - Update dedicated IP associations
810
+ - Change sender configuration settings
811
+ - Correct sender information
812
+
813
+ Key information returned:
814
+ - Success confirmation
815
+ - Updated sender details
816
+
817
+ Parameters
818
+ ----------
819
+ sender_id : int
820
+ Id of the sender
821
+
822
+ email : typing.Optional[str]
823
+ From Email to update the sender
824
+
825
+ ips : typing.Optional[typing.Sequence[UpdateSenderRequestIpsItem]]
826
+ **Only in case of dedicated IP**. IPs to associate to the
827
+ sender. If passed, will replace all the existing IPs. Not required for standard accounts.
828
+
829
+ name : typing.Optional[str]
830
+ From Name to update the sender
831
+
832
+ request_options : typing.Optional[RequestOptions]
833
+ Request-specific configuration.
834
+
835
+ Returns
836
+ -------
837
+ AsyncHttpResponse[None]
838
+ """
839
+ _response = await self._client_wrapper.httpx_client.request(
840
+ f"senders/{jsonable_encoder(sender_id)}",
841
+ method="PUT",
842
+ json={
843
+ "email": email,
844
+ "ips": convert_and_respect_annotation_metadata(
845
+ object_=ips, annotation=typing.Sequence[UpdateSenderRequestIpsItem], direction="write"
846
+ ),
847
+ "name": name,
848
+ },
849
+ headers={
850
+ "content-type": "application/json",
851
+ },
852
+ request_options=request_options,
853
+ omit=OMIT,
854
+ )
855
+ try:
856
+ if 200 <= _response.status_code < 300:
857
+ return AsyncHttpResponse(response=_response, data=None)
858
+ if _response.status_code == 400:
859
+ raise BadRequestError(
860
+ headers=dict(_response.headers),
861
+ body=typing.cast(
862
+ typing.Any,
863
+ construct_type(
864
+ type_=typing.Any, # type: ignore
865
+ object_=_response.json(),
866
+ ),
867
+ ),
868
+ )
869
+ if _response.status_code == 404:
870
+ raise NotFoundError(
871
+ headers=dict(_response.headers),
872
+ body=typing.cast(
873
+ typing.Any,
874
+ construct_type(
875
+ type_=typing.Any, # type: ignore
876
+ object_=_response.json(),
877
+ ),
878
+ ),
879
+ )
880
+ _response_json = _response.json()
881
+ except JSONDecodeError:
882
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
883
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
884
+
885
+ async def delete_sender(
886
+ self, sender_id: int, *, request_options: typing.Optional[RequestOptions] = None
887
+ ) -> AsyncHttpResponse[None]:
888
+ """
889
+ Deletes an email sender from your Brevo account.
890
+
891
+ Use this to:
892
+ - Remove senders that are no longer needed
893
+ - Clean up sender configurations
894
+ - Remove duplicate or test senders
895
+
896
+ Key information returned:
897
+ - Success confirmation message
898
+
899
+ Parameters
900
+ ----------
901
+ sender_id : int
902
+ Id of the sender
903
+
904
+ request_options : typing.Optional[RequestOptions]
905
+ Request-specific configuration.
906
+
907
+ Returns
908
+ -------
909
+ AsyncHttpResponse[None]
910
+ """
911
+ _response = await self._client_wrapper.httpx_client.request(
912
+ f"senders/{jsonable_encoder(sender_id)}",
913
+ method="DELETE",
914
+ request_options=request_options,
915
+ )
916
+ try:
917
+ if 200 <= _response.status_code < 300:
918
+ return AsyncHttpResponse(response=_response, data=None)
919
+ if _response.status_code == 400:
920
+ raise BadRequestError(
921
+ headers=dict(_response.headers),
922
+ body=typing.cast(
923
+ typing.Any,
924
+ construct_type(
925
+ type_=typing.Any, # type: ignore
926
+ object_=_response.json(),
927
+ ),
928
+ ),
929
+ )
930
+ if _response.status_code == 404:
931
+ raise NotFoundError(
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_ips_from_sender(
947
+ self, sender_id: int, *, request_options: typing.Optional[RequestOptions] = None
948
+ ) -> AsyncHttpResponse[GetIpsFromSenderResponse]:
949
+ """
950
+ Retrieves the dedicated IPs associated with a specific sender.
951
+
952
+ Use this to:
953
+ - Check IP configuration for a sender
954
+ - Verify dedicated IP associations
955
+ - Get IP details for troubleshooting
956
+ - Monitor sender IP configuration
957
+
958
+ Key information returned:
959
+ - List of associated dedicated IPs
960
+ - IP addresses and domain configurations
961
+ - IP status and settings
962
+
963
+ Parameters
964
+ ----------
965
+ sender_id : int
966
+ Id of the sender
967
+
968
+ request_options : typing.Optional[RequestOptions]
969
+ Request-specific configuration.
970
+
971
+ Returns
972
+ -------
973
+ AsyncHttpResponse[GetIpsFromSenderResponse]
974
+ List of dedicated IPs retrieved successfully
975
+ """
976
+ _response = await self._client_wrapper.httpx_client.request(
977
+ f"senders/{jsonable_encoder(sender_id)}/ips",
978
+ method="GET",
979
+ request_options=request_options,
980
+ )
981
+ try:
982
+ if 200 <= _response.status_code < 300:
983
+ _data = typing.cast(
984
+ GetIpsFromSenderResponse,
985
+ construct_type(
986
+ type_=GetIpsFromSenderResponse, # type: ignore
987
+ object_=_response.json(),
988
+ ),
989
+ )
990
+ return AsyncHttpResponse(response=_response, data=_data)
991
+ if _response.status_code == 400:
992
+ raise BadRequestError(
993
+ headers=dict(_response.headers),
994
+ body=typing.cast(
995
+ typing.Any,
996
+ construct_type(
997
+ type_=typing.Any, # type: ignore
998
+ object_=_response.json(),
999
+ ),
1000
+ ),
1001
+ )
1002
+ if _response.status_code == 404:
1003
+ raise NotFoundError(
1004
+ headers=dict(_response.headers),
1005
+ body=typing.cast(
1006
+ typing.Any,
1007
+ construct_type(
1008
+ type_=typing.Any, # type: ignore
1009
+ object_=_response.json(),
1010
+ ),
1011
+ ),
1012
+ )
1013
+ _response_json = _response.json()
1014
+ except JSONDecodeError:
1015
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1016
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1017
+
1018
+ async def validate_sender_by_otp(
1019
+ self, sender_id: int, *, otp: int, request_options: typing.Optional[RequestOptions] = None
1020
+ ) -> AsyncHttpResponse[None]:
1021
+ """
1022
+ Validates a sender using the OTP (One-Time Password) received via email.
1023
+
1024
+ Use this to:
1025
+ - Complete sender verification process
1026
+ - Activate a newly created sender
1027
+ - Verify ownership of the sender email address
1028
+ - Enable the sender for use in email campaigns
1029
+
1030
+ Key information returned:
1031
+ - Success confirmation of sender verification
1032
+ - Sender activation status
1033
+
1034
+ Parameters
1035
+ ----------
1036
+ sender_id : int
1037
+ Id of the sender
1038
+
1039
+ otp : int
1040
+ 6 digit OTP received on email
1041
+
1042
+ request_options : typing.Optional[RequestOptions]
1043
+ Request-specific configuration.
1044
+
1045
+ Returns
1046
+ -------
1047
+ AsyncHttpResponse[None]
1048
+ """
1049
+ _response = await self._client_wrapper.httpx_client.request(
1050
+ f"senders/{jsonable_encoder(sender_id)}/validate",
1051
+ method="PUT",
1052
+ json={
1053
+ "otp": otp,
1054
+ },
1055
+ headers={
1056
+ "content-type": "application/json",
1057
+ },
1058
+ request_options=request_options,
1059
+ omit=OMIT,
1060
+ )
1061
+ try:
1062
+ if 200 <= _response.status_code < 300:
1063
+ return AsyncHttpResponse(response=_response, data=None)
1064
+ if _response.status_code == 400:
1065
+ raise BadRequestError(
1066
+ headers=dict(_response.headers),
1067
+ body=typing.cast(
1068
+ typing.Any,
1069
+ construct_type(
1070
+ type_=typing.Any, # type: ignore
1071
+ object_=_response.json(),
1072
+ ),
1073
+ ),
1074
+ )
1075
+ if _response.status_code == 404:
1076
+ raise NotFoundError(
1077
+ headers=dict(_response.headers),
1078
+ body=typing.cast(
1079
+ typing.Any,
1080
+ construct_type(
1081
+ type_=typing.Any, # type: ignore
1082
+ object_=_response.json(),
1083
+ ),
1084
+ ),
1085
+ )
1086
+ _response_json = _response.json()
1087
+ except JSONDecodeError:
1088
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1089
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)