sequenzy 2.0.0__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 (1149) hide show
  1. sequenzy/.fern/metadata.json +12 -0
  2. sequenzy/__init__.py +3017 -0
  3. sequenzy/_default_clients.py +30 -0
  4. sequenzy/ab_tests/__init__.py +91 -0
  5. sequenzy/ab_tests/client.py +1229 -0
  6. sequenzy/ab_tests/raw_client.py +2275 -0
  7. sequenzy/ab_tests/types/__init__.py +89 -0
  8. sequenzy/ab_tests/types/add_variant_ab_tests_response.py +32 -0
  9. sequenzy/ab_tests/types/create_ab_tests_request_test_type.py +5 -0
  10. sequenzy/ab_tests/types/create_ab_tests_request_variants_item.py +32 -0
  11. sequenzy/ab_tests/types/create_ab_tests_request_winner_criteria.py +5 -0
  12. sequenzy/ab_tests/types/create_ab_tests_response.py +50 -0
  13. sequenzy/ab_tests/types/delete_ab_tests_response.py +19 -0
  14. sequenzy/ab_tests/types/delete_variant_ab_tests_response.py +30 -0
  15. sequenzy/ab_tests/types/get_ab_tests_response.py +30 -0
  16. sequenzy/ab_tests/types/get_stats_ab_tests_request_period.py +5 -0
  17. sequenzy/ab_tests/types/get_stats_ab_tests_response.py +31 -0
  18. sequenzy/ab_tests/types/get_stats_ab_tests_response_variants_item.py +27 -0
  19. sequenzy/ab_tests/types/list_ab_tests_response.py +30 -0
  20. sequenzy/ab_tests/types/restart_ab_tests_request_test_type.py +5 -0
  21. sequenzy/ab_tests/types/restart_ab_tests_response.py +41 -0
  22. sequenzy/ab_tests/types/update_ab_tests_request_test_type.py +5 -0
  23. sequenzy/ab_tests/types/update_ab_tests_request_winner_criteria.py +5 -0
  24. sequenzy/ab_tests/types/update_ab_tests_response.py +30 -0
  25. sequenzy/ab_tests/types/update_variant_ab_tests_response.py +28 -0
  26. sequenzy/account/__init__.py +103 -0
  27. sequenzy/account/client.py +646 -0
  28. sequenzy/account/raw_client.py +1257 -0
  29. sequenzy/account/types/__init__.py +103 -0
  30. sequenzy/account/types/create_api_key_request_preset.py +17 -0
  31. sequenzy/account/types/create_api_key_response.py +27 -0
  32. sequenzy/account/types/create_api_key_response_api_key.py +42 -0
  33. sequenzy/account/types/create_api_key_response_api_key_permissions.py +39 -0
  34. sequenzy/account/types/get_account_response.py +42 -0
  35. sequenzy/account/types/get_account_response_api_key_permissions.py +136 -0
  36. sequenzy/account/types/get_account_response_api_key_permissions_active_key.py +31 -0
  37. sequenzy/account/types/get_account_response_api_key_permissions_active_key_type.py +5 -0
  38. sequenzy/account/types/get_account_response_api_key_permissions_preset.py +18 -0
  39. sequenzy/account/types/get_account_response_companies_item.py +25 -0
  40. sequenzy/account/types/get_account_response_companies_item_role.py +5 -0
  41. sequenzy/account/types/get_account_response_user.py +19 -0
  42. sequenzy/account/types/get_integration_guide_response.py +23 -0
  43. sequenzy/account/types/list_api_keys_response.py +25 -0
  44. sequenzy/account/types/request_api_key_handoff_request_preset.py +17 -0
  45. sequenzy/account/types/request_api_key_handoff_response.py +27 -0
  46. sequenzy/account/types/request_api_key_handoff_response_handoff.py +81 -0
  47. sequenzy/account/types/request_api_key_handoff_response_handoff_key_type.py +5 -0
  48. sequenzy/account/types/request_api_key_handoff_response_handoff_replaces.py +30 -0
  49. sequenzy/account/types/revoke_api_key_response.py +24 -0
  50. sequenzy/account/types/update_api_key_request_preset.py +17 -0
  51. sequenzy/account/types/update_api_key_response.py +24 -0
  52. sequenzy/analytics/__init__.py +163 -0
  53. sequenzy/analytics/client.py +1896 -0
  54. sequenzy/analytics/raw_client.py +3036 -0
  55. sequenzy/analytics/types/__init__.py +167 -0
  56. sequenzy/analytics/types/get_campaign_metrics_request_period.py +5 -0
  57. sequenzy/analytics/types/get_campaign_metrics_response.py +67 -0
  58. sequenzy/analytics/types/get_campaign_stats_legacy_request_period.py +5 -0
  59. sequenzy/analytics/types/get_campaign_stats_legacy_response.py +63 -0
  60. sequenzy/analytics/types/get_metrics_request_email_type.py +5 -0
  61. sequenzy/analytics/types/get_metrics_request_period.py +5 -0
  62. sequenzy/analytics/types/get_metrics_response.py +76 -0
  63. sequenzy/analytics/types/get_metrics_response_email_type.py +5 -0
  64. sequenzy/analytics/types/get_recipients_request_period.py +5 -0
  65. sequenzy/analytics/types/get_recipients_response.py +23 -0
  66. sequenzy/analytics/types/get_recipients_response_recipients_item.py +24 -0
  67. sequenzy/analytics/types/get_recipients_response_recipients_item_clicked_item.py +41 -0
  68. sequenzy/analytics/types/get_recipients_response_recipients_item_clicked_item_engagement_quality.py +7 -0
  69. sequenzy/analytics/types/get_recipients_response_recipients_item_opened_item.py +40 -0
  70. sequenzy/analytics/types/get_recipients_response_recipients_item_opened_item_engagement_quality.py +7 -0
  71. sequenzy/analytics/types/get_sequence_metrics_request_period.py +5 -0
  72. sequenzy/analytics/types/get_sequence_metrics_response.py +58 -0
  73. sequenzy/analytics/types/get_sequence_metrics_response_enrollment_skipped.py +37 -0
  74. sequenzy/analytics/types/get_sequence_metrics_response_steps_item.py +61 -0
  75. sequenzy/analytics/types/get_sequence_metrics_response_steps_item_failed_subscribers_item.py +52 -0
  76. sequenzy/analytics/types/get_stats_legacy_request_email_type.py +5 -0
  77. sequenzy/analytics/types/get_stats_legacy_request_period.py +5 -0
  78. sequenzy/analytics/types/get_stats_legacy_response.py +52 -0
  79. sequenzy/analytics/types/get_stats_legacy_response_email_type.py +5 -0
  80. sequenzy/analytics/types/get_transactional_metrics_legacy_request_period.py +5 -0
  81. sequenzy/analytics/types/get_transactional_metrics_request_period.py +5 -0
  82. sequenzy/analytics/types/list_campaign_events_request_event_type.py +10 -0
  83. sequenzy/analytics/types/list_campaign_events_request_period.py +5 -0
  84. sequenzy/analytics/types/list_campaign_events_response.py +31 -0
  85. sequenzy/analytics/types/list_campaign_poll_responses_legacy_response.py +31 -0
  86. sequenzy/analytics/types/list_campaign_poll_responses_response.py +37 -0
  87. sequenzy/analytics/types/list_email_metrics_request_email_type.py +5 -0
  88. sequenzy/analytics/types/list_email_metrics_request_order.py +5 -0
  89. sequenzy/analytics/types/list_email_metrics_request_period.py +5 -0
  90. sequenzy/analytics/types/list_email_metrics_request_sort.py +20 -0
  91. sequenzy/analytics/types/list_email_metrics_response.py +55 -0
  92. sequenzy/analytics/types/list_email_metrics_response_email_type.py +5 -0
  93. sequenzy/analytics/types/list_email_metrics_response_emails_item.py +63 -0
  94. sequenzy/analytics/types/list_email_metrics_response_emails_item_email_type.py +5 -0
  95. sequenzy/analytics/types/list_sequence_events_request_event_type.py +10 -0
  96. sequenzy/analytics/types/list_sequence_events_request_period.py +5 -0
  97. sequenzy/analytics/types/list_sequence_events_response.py +36 -0
  98. sequenzy/audience_syncs/__init__.py +64 -0
  99. sequenzy/audience_syncs/client.py +484 -0
  100. sequenzy/audience_syncs/raw_client.py +954 -0
  101. sequenzy/audience_syncs/types/__init__.py +62 -0
  102. sequenzy/audience_syncs/types/create_audience_syncs_request.py +5 -0
  103. sequenzy/audience_syncs/types/create_audience_syncs_request_frequency.py +5 -0
  104. sequenzy/audience_syncs/types/create_audience_syncs_response.py +25 -0
  105. sequenzy/audience_syncs/types/delete_audience_syncs_response.py +19 -0
  106. sequenzy/audience_syncs/types/list_ad_accounts_response.py +25 -0
  107. sequenzy/audience_syncs/types/list_audience_syncs_response.py +27 -0
  108. sequenzy/audience_syncs/types/run_now_audience_syncs_response.py +20 -0
  109. sequenzy/audience_syncs/types/update_audience_syncs_request_frequency.py +5 -0
  110. sequenzy/audience_syncs/types/update_audience_syncs_response.py +25 -0
  111. sequenzy/campaigns/__init__.py +145 -0
  112. sequenzy/campaigns/client.py +2788 -0
  113. sequenzy/campaigns/raw_client.py +4803 -0
  114. sequenzy/campaigns/types/__init__.py +143 -0
  115. sequenzy/campaigns/types/cancel_campaigns_response.py +26 -0
  116. sequenzy/campaigns/types/create_campaigns_request_email_preset.py +5 -0
  117. sequenzy/campaigns/types/create_campaigns_request_status.py +5 -0
  118. sequenzy/campaigns/types/create_campaigns_response.py +23 -0
  119. sequenzy/campaigns/types/create_campaigns_response_campaign.py +98 -0
  120. sequenzy/campaigns/types/create_goal_campaigns_response.py +21 -0
  121. sequenzy/campaigns/types/create_share_link_campaigns_response.py +44 -0
  122. sequenzy/campaigns/types/delete_campaigns_response.py +19 -0
  123. sequenzy/campaigns/types/delete_goal_campaigns_response.py +24 -0
  124. sequenzy/campaigns/types/duplicate_campaigns_request_mode.py +5 -0
  125. sequenzy/campaigns/types/duplicate_campaigns_response.py +26 -0
  126. sequenzy/campaigns/types/duplicate_campaigns_response_campaign.py +245 -0
  127. sequenzy/campaigns/types/get_audience_campaigns_response.py +51 -0
  128. sequenzy/campaigns/types/get_campaigns_response.py +26 -0
  129. sequenzy/campaigns/types/list_campaigns_request_status.py +8 -0
  130. sequenzy/campaigns/types/list_campaigns_response.py +23 -0
  131. sequenzy/campaigns/types/list_campaigns_response_pagination.py +27 -0
  132. sequenzy/campaigns/types/list_goals_campaigns_response.py +21 -0
  133. sequenzy/campaigns/types/pause_campaigns_response.py +26 -0
  134. sequenzy/campaigns/types/preview_computed_data_campaigns_request_subscriber.py +36 -0
  135. sequenzy/campaigns/types/preview_computed_data_campaigns_response.py +22 -0
  136. sequenzy/campaigns/types/preview_computed_data_campaigns_response_lists_item.py +21 -0
  137. sequenzy/campaigns/types/resend_to_non_openers_campaigns_response.py +40 -0
  138. sequenzy/campaigns/types/resend_to_non_openers_campaigns_response_campaign.py +245 -0
  139. sequenzy/campaigns/types/resume_campaigns_response.py +26 -0
  140. sequenzy/campaigns/types/revoke_share_link_campaigns_response.py +24 -0
  141. sequenzy/campaigns/types/schedule_campaigns_request_recurring_interval.py +5 -0
  142. sequenzy/campaigns/types/schedule_campaigns_response.py +36 -0
  143. sequenzy/campaigns/types/schedule_campaigns_response_campaign.py +60 -0
  144. sequenzy/campaigns/types/schedule_campaigns_response_campaign_status.py +5 -0
  145. sequenzy/campaigns/types/send_test_campaigns_response.py +48 -0
  146. sequenzy/campaigns/types/unschedule_campaigns_response.py +26 -0
  147. sequenzy/campaigns/types/update_campaigns_request_email_preset.py +5 -0
  148. sequenzy/campaigns/types/update_campaigns_response.py +23 -0
  149. sequenzy/campaigns/types/update_campaigns_response_campaign.py +71 -0
  150. sequenzy/campaigns/types/update_goal_campaigns_response.py +21 -0
  151. sequenzy/client.py +974 -0
  152. sequenzy/companies/__init__.py +79 -0
  153. sequenzy/companies/client.py +624 -0
  154. sequenzy/companies/raw_client.py +962 -0
  155. sequenzy/companies/types/__init__.py +77 -0
  156. sequenzy/companies/types/create_companies_response.py +22 -0
  157. sequenzy/companies/types/create_companies_response_company.py +26 -0
  158. sequenzy/companies/types/get_companies_response.py +21 -0
  159. sequenzy/companies/types/list_companies_response.py +26 -0
  160. sequenzy/companies/types/update_companies_request_email_direction.py +5 -0
  161. sequenzy/companies/types/update_companies_request_email_length_preference.py +7 -0
  162. sequenzy/companies/types/update_companies_request_email_theme.py +60 -0
  163. sequenzy/companies/types/update_companies_request_email_theme_button_style.py +5 -0
  164. sequenzy/companies/types/update_companies_request_email_theme_colors.py +46 -0
  165. sequenzy/companies/types/update_companies_request_email_theme_layout.py +53 -0
  166. sequenzy/companies/types/update_companies_request_email_theme_preset_id.py +7 -0
  167. sequenzy/companies/types/update_companies_request_email_theme_typography.py +90 -0
  168. sequenzy/companies/types/update_companies_request_reply_tracking_domain_mode.py +5 -0
  169. sequenzy/companies/types/update_companies_response.py +21 -0
  170. sequenzy/conversations/__init__.py +70 -0
  171. sequenzy/conversations/client.py +529 -0
  172. sequenzy/conversations/raw_client.py +938 -0
  173. sequenzy/conversations/types/__init__.py +70 -0
  174. sequenzy/conversations/types/get_conversations_response.py +24 -0
  175. sequenzy/conversations/types/list_conversations_request_status.py +5 -0
  176. sequenzy/conversations/types/list_conversations_request_unread.py +5 -0
  177. sequenzy/conversations/types/list_conversations_response.py +23 -0
  178. sequenzy/conversations/types/mark_read_conversations_response.py +23 -0
  179. sequenzy/conversations/types/send_message_conversations_request_type.py +5 -0
  180. sequenzy/conversations/types/send_message_conversations_response.py +21 -0
  181. sequenzy/conversations/types/update_status_conversations_request_status.py +5 -0
  182. sequenzy/conversations/types/update_status_conversations_response.py +21 -0
  183. sequenzy/conversations/types/update_status_conversations_response_conversation.py +23 -0
  184. sequenzy/conversations/types/update_status_conversations_response_conversation_status.py +5 -0
  185. sequenzy/core/__init__.py +127 -0
  186. sequenzy/core/api_error.py +23 -0
  187. sequenzy/core/client_wrapper.py +146 -0
  188. sequenzy/core/datetime_utils.py +70 -0
  189. sequenzy/core/file.py +67 -0
  190. sequenzy/core/force_multipart.py +18 -0
  191. sequenzy/core/http_client.py +940 -0
  192. sequenzy/core/http_response.py +63 -0
  193. sequenzy/core/http_sse/__init__.py +42 -0
  194. sequenzy/core/http_sse/_api.py +455 -0
  195. sequenzy/core/http_sse/_decoders.py +74 -0
  196. sequenzy/core/http_sse/_exceptions.py +7 -0
  197. sequenzy/core/http_sse/_models.py +17 -0
  198. sequenzy/core/jsonable_encoder.py +133 -0
  199. sequenzy/core/logging.py +107 -0
  200. sequenzy/core/parse_error.py +36 -0
  201. sequenzy/core/pydantic_utilities.py +508 -0
  202. sequenzy/core/query_encoder.py +58 -0
  203. sequenzy/core/remove_none_from_dict.py +11 -0
  204. sequenzy/core/request_options.py +40 -0
  205. sequenzy/core/serialization.py +347 -0
  206. sequenzy/email_blocks/__init__.py +49 -0
  207. sequenzy/email_blocks/client.py +207 -0
  208. sequenzy/email_blocks/raw_client.py +344 -0
  209. sequenzy/email_blocks/types/__init__.py +47 -0
  210. sequenzy/email_blocks/types/get_email_blocks_request_condition_fields.py +5 -0
  211. sequenzy/email_blocks/types/get_email_blocks_response.py +55 -0
  212. sequenzy/email_blocks/types/list_email_blocks_request_creatable_only.py +5 -0
  213. sequenzy/email_blocks/types/list_email_blocks_response.py +45 -0
  214. sequenzy/email_components/__init__.py +79 -0
  215. sequenzy/email_components/client.py +717 -0
  216. sequenzy/email_components/raw_client.py +1373 -0
  217. sequenzy/email_components/types/__init__.py +77 -0
  218. sequenzy/email_components/types/create_email_components_request_component_type.py +5 -0
  219. sequenzy/email_components/types/create_email_components_response.py +28 -0
  220. sequenzy/email_components/types/delete_email_components_response.py +20 -0
  221. sequenzy/email_components/types/get_default_email_components_request_slot.py +5 -0
  222. sequenzy/email_components/types/get_default_email_components_response.py +26 -0
  223. sequenzy/email_components/types/get_email_components_response.py +26 -0
  224. sequenzy/email_components/types/list_email_components_request_defaults_only.py +5 -0
  225. sequenzy/email_components/types/list_email_components_request_slot.py +5 -0
  226. sequenzy/email_components/types/list_email_components_request_type.py +5 -0
  227. sequenzy/email_components/types/list_email_components_response.py +26 -0
  228. sequenzy/email_components/types/set_default_email_components_request_slot.py +5 -0
  229. sequenzy/email_components/types/set_default_email_components_response.py +28 -0
  230. sequenzy/email_components/types/update_email_components_request_component_type.py +5 -0
  231. sequenzy/email_components/types/update_email_components_response.py +28 -0
  232. sequenzy/email_sends/__init__.py +64 -0
  233. sequenzy/email_sends/client.py +342 -0
  234. sequenzy/email_sends/raw_client.py +559 -0
  235. sequenzy/email_sends/types/__init__.py +62 -0
  236. sequenzy/email_sends/types/get_email_sends_response.py +30 -0
  237. sequenzy/email_sends/types/get_email_sends_response_source.py +5 -0
  238. sequenzy/email_sends/types/list_email_sends_request_bounce_type.py +5 -0
  239. sequenzy/email_sends/types/list_email_sends_request_email_type.py +5 -0
  240. sequenzy/email_sends/types/list_email_sends_request_sort_field.py +7 -0
  241. sequenzy/email_sends/types/list_email_sends_request_sort_order.py +5 -0
  242. sequenzy/email_sends/types/list_email_sends_request_status.py +10 -0
  243. sequenzy/email_sends/types/list_email_sends_response.py +32 -0
  244. sequenzy/email_sends/types/list_email_sends_response_email_sends_item.py +27 -0
  245. sequenzy/emails/__init__.py +49 -0
  246. sequenzy/emails/client.py +435 -0
  247. sequenzy/emails/raw_client.py +800 -0
  248. sequenzy/emails/types/__init__.py +47 -0
  249. sequenzy/emails/types/create_emails_response.py +28 -0
  250. sequenzy/emails/types/update_blocks_emails_request_type.py +5 -0
  251. sequenzy/emails/types/update_blocks_emails_response.py +28 -0
  252. sequenzy/emails/types/update_emails_response.py +28 -0
  253. sequenzy/environment.py +7 -0
  254. sequenzy/errors/__init__.py +62 -0
  255. sequenzy/errors/bad_request_error.py +10 -0
  256. sequenzy/errors/conflict_error.py +10 -0
  257. sequenzy/errors/forbidden_error.py +11 -0
  258. sequenzy/errors/internal_server_error.py +10 -0
  259. sequenzy/errors/not_found_error.py +10 -0
  260. sequenzy/errors/service_unavailable_error.py +10 -0
  261. sequenzy/errors/too_many_requests_error.py +10 -0
  262. sequenzy/errors/unauthorized_error.py +10 -0
  263. sequenzy/errors/unprocessable_entity_error.py +10 -0
  264. sequenzy/events/__init__.py +37 -0
  265. sequenzy/events/client.py +129 -0
  266. sequenzy/events/raw_client.py +201 -0
  267. sequenzy/events/types/__init__.py +38 -0
  268. sequenzy/events/types/get_schemas_events_request_provider.py +7 -0
  269. sequenzy/events/types/get_schemas_events_response.py +40 -0
  270. sequenzy/feedback/__init__.py +49 -0
  271. sequenzy/feedback/client.py +212 -0
  272. sequenzy/feedback/raw_client.py +317 -0
  273. sequenzy/feedback/types/__init__.py +47 -0
  274. sequenzy/feedback/types/submit_feedback_request_category.py +7 -0
  275. sequenzy/feedback/types/submit_feedback_request_source.py +5 -0
  276. sequenzy/feedback/types/submit_feedback_request_tool_calls_item.py +32 -0
  277. sequenzy/feedback/types/submit_feedback_response.py +20 -0
  278. sequenzy/generation/__init__.py +55 -0
  279. sequenzy/generation/client.py +352 -0
  280. sequenzy/generation/raw_client.py +676 -0
  281. sequenzy/generation/types/__init__.py +53 -0
  282. sequenzy/generation/types/generate_email_request_email_type.py +5 -0
  283. sequenzy/generation/types/generate_email_response.py +38 -0
  284. sequenzy/generation/types/generate_sms_messages_response.py +22 -0
  285. sequenzy/generation/types/generate_sms_messages_response_messages_item.py +27 -0
  286. sequenzy/generation/types/generate_sms_messages_response_messages_item_encoding.py +5 -0
  287. sequenzy/generation/types/generate_subject_lines_response.py +21 -0
  288. sequenzy/integrations/__init__.py +82 -0
  289. sequenzy/integrations/client.py +851 -0
  290. sequenzy/integrations/raw_client.py +1689 -0
  291. sequenzy/integrations/types/__init__.py +80 -0
  292. sequenzy/integrations/types/activate_pixel_integrations_response.py +33 -0
  293. sequenzy/integrations/types/connect_integrations_request_history_import.py +61 -0
  294. sequenzy/integrations/types/connect_integrations_request_history_import_region.py +5 -0
  295. sequenzy/integrations/types/connect_integrations_request_provider.py +8 -0
  296. sequenzy/integrations/types/connect_integrations_request_settings.py +30 -0
  297. sequenzy/integrations/types/connect_integrations_response.py +60 -0
  298. sequenzy/integrations/types/connect_integrations_response_history.py +25 -0
  299. sequenzy/integrations/types/list_activity_integrations_request_status.py +7 -0
  300. sequenzy/integrations/types/list_activity_integrations_response.py +27 -0
  301. sequenzy/integrations/types/list_capabilities_integrations_response.py +21 -0
  302. sequenzy/integrations/types/list_integrations_response.py +21 -0
  303. sequenzy/integrations/types/sync_integrations_response.py +44 -0
  304. sequenzy/integrations/types/sync_integrations_response_sync_target.py +31 -0
  305. sequenzy/integrations/types/update_sync_integrations_response.py +73 -0
  306. sequenzy/integrations/types/update_sync_integrations_response_list_targeting.py +7 -0
  307. sequenzy/landing_pages/__init__.py +88 -0
  308. sequenzy/landing_pages/client.py +1368 -0
  309. sequenzy/landing_pages/raw_client.py +2615 -0
  310. sequenzy/landing_pages/types/__init__.py +86 -0
  311. sequenzy/landing_pages/types/connect_dedicated_domain_landing_pages_response.py +22 -0
  312. sequenzy/landing_pages/types/connect_domain_landing_pages_response.py +22 -0
  313. sequenzy/landing_pages/types/create_landing_pages_request_template.py +20 -0
  314. sequenzy/landing_pages/types/create_landing_pages_response.py +26 -0
  315. sequenzy/landing_pages/types/delete_landing_pages_response.py +25 -0
  316. sequenzy/landing_pages/types/duplicate_landing_pages_response.py +26 -0
  317. sequenzy/landing_pages/types/get_dedicated_domain_landing_pages_response.py +21 -0
  318. sequenzy/landing_pages/types/get_domain_landing_pages_response.py +21 -0
  319. sequenzy/landing_pages/types/get_landing_pages_response.py +25 -0
  320. sequenzy/landing_pages/types/list_landing_pages_response.py +31 -0
  321. sequenzy/landing_pages/types/publish_landing_pages_response.py +25 -0
  322. sequenzy/landing_pages/types/remove_dedicated_domain_landing_pages_response.py +21 -0
  323. sequenzy/landing_pages/types/unpublish_landing_pages_response.py +25 -0
  324. sequenzy/landing_pages/types/update_domain_settings_landing_pages_response.py +21 -0
  325. sequenzy/landing_pages/types/update_landing_pages_response.py +25 -0
  326. sequenzy/landing_pages/types/verify_dedicated_domain_landing_pages_response.py +21 -0
  327. sequenzy/landing_pages/types/verify_domain_landing_pages_response.py +21 -0
  328. sequenzy/lists/__init__.py +64 -0
  329. sequenzy/lists/client.py +608 -0
  330. sequenzy/lists/raw_client.py +1095 -0
  331. sequenzy/lists/types/__init__.py +62 -0
  332. sequenzy/lists/types/add_subscribers_lists_request_duplicate_strategy.py +5 -0
  333. sequenzy/lists/types/add_subscribers_lists_request_opt_in_mode.py +5 -0
  334. sequenzy/lists/types/add_subscribers_lists_response.py +41 -0
  335. sequenzy/lists/types/add_subscribers_lists_response_results_item.py +29 -0
  336. sequenzy/lists/types/create_lists_response.py +25 -0
  337. sequenzy/lists/types/delete_lists_response.py +30 -0
  338. sequenzy/lists/types/list_lists_response.py +21 -0
  339. sequenzy/lists/types/remove_subscribers_lists_response.py +35 -0
  340. sequenzy/lists/types/update_lists_response.py +25 -0
  341. sequenzy/media/__init__.py +49 -0
  342. sequenzy/media/client.py +375 -0
  343. sequenzy/media/raw_client.py +682 -0
  344. sequenzy/media/types/__init__.py +47 -0
  345. sequenzy/media/types/complete_email_image_upload_response.py +21 -0
  346. sequenzy/media/types/complete_email_image_upload_response_asset.py +39 -0
  347. sequenzy/media/types/create_email_image_upload_url_response.py +31 -0
  348. sequenzy/media/types/upload_email_image_bytes_response.py +25 -0
  349. sequenzy/migrations/__init__.py +58 -0
  350. sequenzy/migrations/client.py +645 -0
  351. sequenzy/migrations/raw_client.py +1250 -0
  352. sequenzy/migrations/types/__init__.py +56 -0
  353. sequenzy/migrations/types/approve_plan_migrations_response.py +20 -0
  354. sequenzy/migrations/types/cancel_migrations_response.py +20 -0
  355. sequenzy/migrations/types/connect_source_migrations_response.py +20 -0
  356. sequenzy/migrations/types/discover_source_migrations_response.py +20 -0
  357. sequenzy/migrations/types/get_agent_package_migrations_response.py +20 -0
  358. sequenzy/migrations/types/get_run_migrations_response.py +20 -0
  359. sequenzy/migrations/types/start_migrations_response.py +20 -0
  360. sequenzy/notification_preferences/__init__.py +4 -0
  361. sequenzy/notification_preferences/client.py +198 -0
  362. sequenzy/notification_preferences/raw_client.py +311 -0
  363. sequenzy/orders/__init__.py +49 -0
  364. sequenzy/orders/client.py +393 -0
  365. sequenzy/orders/raw_client.py +539 -0
  366. sequenzy/orders/types/__init__.py +47 -0
  367. sequenzy/orders/types/push_orders_request_customer_totals.py +30 -0
  368. sequenzy/orders/types/push_orders_request_status.py +5 -0
  369. sequenzy/orders/types/push_orders_response.py +29 -0
  370. sequenzy/orders/types/track_checkout_started_response.py +30 -0
  371. sequenzy/products/__init__.py +82 -0
  372. sequenzy/products/client.py +905 -0
  373. sequenzy/products/raw_client.py +1642 -0
  374. sequenzy/products/types/__init__.py +82 -0
  375. sequenzy/products/types/attach_delivery_products_request_source.py +5 -0
  376. sequenzy/products/types/attach_delivery_products_response.py +21 -0
  377. sequenzy/products/types/create_delivery_upload_url_products_response.py +30 -0
  378. sequenzy/products/types/delete_products_response.py +20 -0
  379. sequenzy/products/types/get_products_response.py +21 -0
  380. sequenzy/products/types/list_products_request_provider.py +7 -0
  381. sequenzy/products/types/list_products_response.py +23 -0
  382. sequenzy/products/types/list_products_response_pagination.py +40 -0
  383. sequenzy/products/types/register_back_in_stock_response.py +24 -0
  384. sequenzy/products/types/remove_delivery_products_response.py +21 -0
  385. sequenzy/products/types/sync_stripe_products_response.py +24 -0
  386. sequenzy/products/types/upsert_products_request_products_item.py +89 -0
  387. sequenzy/products/types/upsert_products_request_products_item_variants_item.py +53 -0
  388. sequenzy/products/types/upsert_products_request_products_item_variants_item_options_item.py +20 -0
  389. sequenzy/products/types/upsert_products_response.py +36 -0
  390. sequenzy/reference.md +27269 -0
  391. sequenzy/segments/__init__.py +61 -0
  392. sequenzy/segments/client.py +445 -0
  393. sequenzy/segments/raw_client.py +831 -0
  394. sequenzy/segments/types/__init__.py +59 -0
  395. sequenzy/segments/types/create_segments_request.py +5 -0
  396. sequenzy/segments/types/create_segments_request_filter_join_operator.py +5 -0
  397. sequenzy/segments/types/create_segments_response.py +30 -0
  398. sequenzy/segments/types/delete_segments_response.py +19 -0
  399. sequenzy/segments/types/get_count_segments_response.py +25 -0
  400. sequenzy/segments/types/list_segments_response.py +26 -0
  401. sequenzy/segments/types/update_segments_request_filter_join_operator.py +5 -0
  402. sequenzy/segments/types/update_segments_response.py +30 -0
  403. sequenzy/sender_profiles/__init__.py +38 -0
  404. sequenzy/sender_profiles/client.py +269 -0
  405. sequenzy/sender_profiles/raw_client.py +524 -0
  406. sequenzy/sender_profiles/types/__init__.py +40 -0
  407. sequenzy/sender_profiles/types/list_sender_profiles_response.py +43 -0
  408. sequenzy/sender_profiles/types/update_reply_profile_response.py +30 -0
  409. sequenzy/sender_profiles/types/update_sender_profiles_response.py +32 -0
  410. sequenzy/sending_status/__init__.py +34 -0
  411. sequenzy/sending_status/client.py +182 -0
  412. sequenzy/sending_status/raw_client.py +363 -0
  413. sequenzy/sending_status/types/__init__.py +34 -0
  414. sequenzy/sending_status/types/resume_sending_status_response.py +28 -0
  415. sequenzy/sequences/__init__.py +139 -0
  416. sequenzy/sequences/client.py +4043 -0
  417. sequenzy/sequences/raw_client.py +6760 -0
  418. sequenzy/sequences/types/__init__.py +139 -0
  419. sequenzy/sequences/types/archive_sequences_response.py +21 -0
  420. sequenzy/sequences/types/configure_inbound_webhook_sequences_response.py +21 -0
  421. sequenzy/sequences/types/create_goal_sequences_response.py +21 -0
  422. sequenzy/sequences/types/delete_goal_sequences_response.py +24 -0
  423. sequenzy/sequences/types/duplicate_sequences_response.py +25 -0
  424. sequenzy/sequences/types/enroll_subscribers_in_sequences_response.py +58 -0
  425. sequenzy/sequences/types/generate_sequences_response.py +25 -0
  426. sequenzy/sequences/types/get_inbound_webhook_sequences_response.py +21 -0
  427. sequenzy/sequences/types/get_sequences_response.py +26 -0
  428. sequenzy/sequences/types/get_stats_sequences_request_period.py +5 -0
  429. sequenzy/sequences/types/get_stats_sequences_response.py +58 -0
  430. sequenzy/sequences/types/get_stats_sequences_response_enrollment_skipped.py +37 -0
  431. sequenzy/sequences/types/get_stats_sequences_response_steps_item.py +61 -0
  432. sequenzy/sequences/types/get_stats_sequences_response_steps_item_failed_subscribers_item.py +31 -0
  433. sequenzy/sequences/types/list_enrollments_sequences_request_sort.py +7 -0
  434. sequenzy/sequences/types/list_goals_sequences_response.py +21 -0
  435. sequenzy/sequences/types/list_sequences_response.py +23 -0
  436. sequenzy/sequences/types/list_sequences_response_pagination.py +31 -0
  437. sequenzy/sequences/types/rotate_inbound_webhook_secret_sequences_response.py +21 -0
  438. sequenzy/sequences/types/send_test_email_sequences_response.py +26 -0
  439. sequenzy/sequences/types/send_test_email_sequences_response_results_item.py +43 -0
  440. sequenzy/sequences/types/sequence_create_request_email_style.py +5 -0
  441. sequenzy/sequences/types/sequence_create_request_inactivity_baseline.py +7 -0
  442. sequenzy/sequences/types/sequence_create_request_list_scope.py +5 -0
  443. sequenzy/sequences/types/sequence_enrollment_move_request_sort.py +7 -0
  444. sequenzy/sequences/types/sequence_update_request_inactivity_baseline.py +7 -0
  445. sequenzy/sequences/types/sequence_update_request_list_scope.py +5 -0
  446. sequenzy/sequences/types/simulate_sequences_response.py +43 -0
  447. sequenzy/sequences/types/simulate_sequences_response_readiness.py +25 -0
  448. sequenzy/sequences/types/unarchive_sequences_response.py +21 -0
  449. sequenzy/sequences/types/update_goal_sequences_response.py +21 -0
  450. sequenzy/sequences/types/update_sequences_response.py +23 -0
  451. sequenzy/sequences/types/update_sequences_response_sequence.py +162 -0
  452. sequenzy/sequences/types/update_sequences_response_sequence_graph_edit_action.py +7 -0
  453. sequenzy/shopify/__init__.py +37 -0
  454. sequenzy/shopify/client.py +215 -0
  455. sequenzy/shopify/raw_client.py +432 -0
  456. sequenzy/shopify/types/__init__.py +38 -0
  457. sequenzy/shopify/types/get_automation_settings_shopify_response.py +43 -0
  458. sequenzy/shopify/types/update_automation_settings_shopify_response.py +44 -0
  459. sequenzy/sms/__init__.py +55 -0
  460. sequenzy/sms/client.py +313 -0
  461. sequenzy/sms/raw_client.py +663 -0
  462. sequenzy/sms/types/__init__.py +53 -0
  463. sequenzy/sms/types/get_settings_sms_response.py +22 -0
  464. sequenzy/sms/types/get_settings_sms_response_sms.py +35 -0
  465. sequenzy/sms/types/get_settings_sms_response_sms_numbers_item.py +39 -0
  466. sequenzy/sms/types/send_test_sms_response.py +28 -0
  467. sequenzy/sms/types/update_number_label_sms_response.py +22 -0
  468. sequenzy/sms/types/update_number_label_sms_response_number.py +25 -0
  469. sequenzy/subscribers/__init__.py +229 -0
  470. sequenzy/subscribers/client.py +2872 -0
  471. sequenzy/subscribers/events/__init__.py +67 -0
  472. sequenzy/subscribers/events/client.py +352 -0
  473. sequenzy/subscribers/events/raw_client.py +460 -0
  474. sequenzy/subscribers/events/types/__init__.py +65 -0
  475. sequenzy/subscribers/events/types/trigger_bulk_events_request_events_item.py +47 -0
  476. sequenzy/subscribers/events/types/trigger_bulk_events_response.py +38 -0
  477. sequenzy/subscribers/events/types/trigger_bulk_events_response_events_item.py +41 -0
  478. sequenzy/subscribers/events/types/trigger_bulk_events_response_opt_in.py +28 -0
  479. sequenzy/subscribers/events/types/trigger_bulk_events_response_subscriber.py +25 -0
  480. sequenzy/subscribers/events/types/trigger_events_response.py +76 -0
  481. sequenzy/subscribers/events/types/trigger_events_response_event.py +35 -0
  482. sequenzy/subscribers/events/types/trigger_events_response_events_item.py +26 -0
  483. sequenzy/subscribers/events/types/trigger_events_response_opt_in.py +28 -0
  484. sequenzy/subscribers/events/types/trigger_events_response_subscriber.py +25 -0
  485. sequenzy/subscribers/raw_client.py +4840 -0
  486. sequenzy/subscribers/tags/__init__.py +58 -0
  487. sequenzy/subscribers/tags/client.py +302 -0
  488. sequenzy/subscribers/tags/raw_client.py +415 -0
  489. sequenzy/subscribers/tags/types/__init__.py +56 -0
  490. sequenzy/subscribers/tags/types/add_tags_response.py +38 -0
  491. sequenzy/subscribers/tags/types/add_tags_response_opt_in.py +28 -0
  492. sequenzy/subscribers/tags/types/add_tags_response_subscriber.py +30 -0
  493. sequenzy/subscribers/tags/types/add_tags_response_tag.py +25 -0
  494. sequenzy/subscribers/tags/types/remove_tags_response.py +23 -0
  495. sequenzy/subscribers/tags/types/remove_tags_response_subscriber.py +30 -0
  496. sequenzy/subscribers/tags/types/remove_tags_response_tag.py +23 -0
  497. sequenzy/subscribers/types/__init__.py +173 -0
  498. sequenzy/subscribers/types/add_tags_bulk_response.py +38 -0
  499. sequenzy/subscribers/types/add_tags_bulk_response_opt_in.py +28 -0
  500. sequenzy/subscribers/types/add_tags_bulk_response_subscriber.py +26 -0
  501. sequenzy/subscribers/types/add_tags_bulk_response_tags.py +27 -0
  502. sequenzy/subscribers/types/create_import_subscribers_request_duplicate_strategy.py +5 -0
  503. sequenzy/subscribers/types/create_import_subscribers_request_opt_in_mode.py +7 -0
  504. sequenzy/subscribers/types/create_import_subscribers_response.py +27 -0
  505. sequenzy/subscribers/types/create_note_by_external_id_subscribers_response.py +21 -0
  506. sequenzy/subscribers/types/create_note_subscribers_response.py +21 -0
  507. sequenzy/subscribers/types/create_subscribers_request_duplicate_strategy.py +5 -0
  508. sequenzy/subscribers/types/create_subscribers_request_opt_in_mode.py +5 -0
  509. sequenzy/subscribers/types/create_subscribers_request_status.py +5 -0
  510. sequenzy/subscribers/types/create_subscribers_response.py +35 -0
  511. sequenzy/subscribers/types/create_subscribers_response_opt_in.py +28 -0
  512. sequenzy/subscribers/types/create_subscribers_response_subscriber.py +33 -0
  513. sequenzy/subscribers/types/delete_by_external_id_path_subscribers_response.py +20 -0
  514. sequenzy/subscribers/types/delete_by_external_id_subscribers_response.py +20 -0
  515. sequenzy/subscribers/types/delete_note_subscribers_response.py +26 -0
  516. sequenzy/subscribers/types/delete_subscribers_response.py +20 -0
  517. sequenzy/subscribers/types/get_account_info_response.py +21 -0
  518. sequenzy/subscribers/types/get_account_info_response_account.py +26 -0
  519. sequenzy/subscribers/types/get_by_external_id_path_subscribers_response.py +21 -0
  520. sequenzy/subscribers/types/get_by_external_id_subscribers_response.py +21 -0
  521. sequenzy/subscribers/types/get_import_subscribers_response.py +25 -0
  522. sequenzy/subscribers/types/get_subscribers_response.py +21 -0
  523. sequenzy/subscribers/types/import_events_subscribers_request_events_item.py +71 -0
  524. sequenzy/subscribers/types/import_events_subscribers_response.py +83 -0
  525. sequenzy/subscribers/types/import_events_subscribers_response_failures_item.py +20 -0
  526. sequenzy/subscribers/types/import_events_subscribers_response_side_effect_failures_item.py +21 -0
  527. sequenzy/subscribers/types/list_notes_by_external_id_subscribers_response.py +21 -0
  528. sequenzy/subscribers/types/list_notes_subscribers_response.py +21 -0
  529. sequenzy/subscribers/types/list_subscribers_request_attribute_operator.py +7 -0
  530. sequenzy/subscribers/types/list_subscribers_request_include_total.py +5 -0
  531. sequenzy/subscribers/types/list_subscribers_request_status.py +5 -0
  532. sequenzy/subscribers/types/list_subscribers_response.py +23 -0
  533. sequenzy/subscribers/types/update_by_external_id_path_subscribers_request_custom_attributes_strategy.py +7 -0
  534. sequenzy/subscribers/types/update_by_external_id_path_subscribers_request_status.py +7 -0
  535. sequenzy/subscribers/types/update_by_external_id_path_subscribers_response.py +21 -0
  536. sequenzy/subscribers/types/update_by_external_id_subscribers_request_custom_attributes_strategy.py +7 -0
  537. sequenzy/subscribers/types/update_by_external_id_subscribers_request_status.py +7 -0
  538. sequenzy/subscribers/types/update_by_external_id_subscribers_response.py +21 -0
  539. sequenzy/subscribers/types/update_subscribers_request_custom_attributes_strategy.py +5 -0
  540. sequenzy/subscribers/types/update_subscribers_request_status.py +5 -0
  541. sequenzy/subscribers/types/update_subscribers_response.py +21 -0
  542. sequenzy/suppressions/__init__.py +94 -0
  543. sequenzy/suppressions/client.py +358 -0
  544. sequenzy/suppressions/raw_client.py +760 -0
  545. sequenzy/suppressions/types/__init__.py +98 -0
  546. sequenzy/suppressions/types/get_suppressions_response.py +21 -0
  547. sequenzy/suppressions/types/get_suppressions_response_suppression.py +29 -0
  548. sequenzy/suppressions/types/get_suppressions_response_suppression_local.py +51 -0
  549. sequenzy/suppressions/types/get_suppressions_response_suppression_local_scope.py +5 -0
  550. sequenzy/suppressions/types/get_suppressions_response_suppression_local_suppression_type.py +7 -0
  551. sequenzy/suppressions/types/get_suppressions_response_suppression_ses.py +25 -0
  552. sequenzy/suppressions/types/get_suppressions_response_suppression_ses_entries_item.py +36 -0
  553. sequenzy/suppressions/types/get_suppressions_response_suppression_ses_entries_item_reason.py +5 -0
  554. sequenzy/suppressions/types/list_suppressions_request_order.py +5 -0
  555. sequenzy/suppressions/types/list_suppressions_request_sort.py +5 -0
  556. sequenzy/suppressions/types/list_suppressions_response.py +49 -0
  557. sequenzy/suppressions/types/list_suppressions_response_sort_by.py +5 -0
  558. sequenzy/suppressions/types/list_suppressions_response_sort_order.py +5 -0
  559. sequenzy/suppressions/types/list_suppressions_response_suppressions_item.py +63 -0
  560. sequenzy/suppressions/types/list_suppressions_response_suppressions_item_reason.py +5 -0
  561. sequenzy/suppressions/types/list_suppressions_response_suppressions_item_scope.py +5 -0
  562. sequenzy/suppressions/types/list_suppressions_response_suppressions_item_source.py +7 -0
  563. sequenzy/suppressions/types/list_suppressions_response_suppressions_item_suppression_type.py +7 -0
  564. sequenzy/suppressions/types/remove_suppressions_response.py +52 -0
  565. sequenzy/sync_rules/__init__.py +34 -0
  566. sequenzy/sync_rules/client.py +223 -0
  567. sequenzy/sync_rules/raw_client.py +330 -0
  568. sequenzy/sync_rules/types/__init__.py +38 -0
  569. sequenzy/sync_rules/types/get_sync_rules_response.py +34 -0
  570. sequenzy/sync_rules/types/update_sync_rules_response.py +29 -0
  571. sequenzy/tags/__init__.py +39 -0
  572. sequenzy/tags/client.py +340 -0
  573. sequenzy/tags/raw_client.py +746 -0
  574. sequenzy/tags/types/__init__.py +42 -0
  575. sequenzy/tags/types/create_tags_response.py +21 -0
  576. sequenzy/tags/types/delete_tags_response.py +19 -0
  577. sequenzy/tags/types/list_tags_response.py +21 -0
  578. sequenzy/tags/types/update_tags_response.py +21 -0
  579. sequenzy/team/__init__.py +55 -0
  580. sequenzy/team/client.py +282 -0
  581. sequenzy/team/raw_client.py +658 -0
  582. sequenzy/team/types/__init__.py +53 -0
  583. sequenzy/team/types/cancel_invitation_team_response.py +19 -0
  584. sequenzy/team/types/invite_team_request_role.py +5 -0
  585. sequenzy/team/types/invite_team_response.py +23 -0
  586. sequenzy/team/types/invite_team_response_invitation.py +35 -0
  587. sequenzy/team/types/invite_team_response_invitation_role.py +5 -0
  588. sequenzy/team/types/list_team_response.py +21 -0
  589. sequenzy/templates/__init__.py +73 -0
  590. sequenzy/templates/client.py +1152 -0
  591. sequenzy/templates/raw_client.py +2088 -0
  592. sequenzy/templates/types/__init__.py +71 -0
  593. sequenzy/templates/types/create_share_link_templates_response.py +44 -0
  594. sequenzy/templates/types/create_templates_response.py +23 -0
  595. sequenzy/templates/types/create_templates_response_template.py +22 -0
  596. sequenzy/templates/types/delete_templates_response.py +25 -0
  597. sequenzy/templates/types/get_templates_response.py +27 -0
  598. sequenzy/templates/types/list_templates_response.py +33 -0
  599. sequenzy/templates/types/list_templates_response_pagination.py +34 -0
  600. sequenzy/templates/types/revoke_share_link_templates_response.py +24 -0
  601. sequenzy/templates/types/set_localization_templates_response.py +33 -0
  602. sequenzy/templates/types/sync_localizations_templates_response.py +30 -0
  603. sequenzy/templates/types/update_templates_response.py +24 -0
  604. sequenzy/templates/types/update_templates_response_template.py +27 -0
  605. sequenzy/tests/conftest.py +21 -0
  606. sequenzy/tests/test_aiohttp_autodetect.py +113 -0
  607. sequenzy/tracking_settings/__init__.py +37 -0
  608. sequenzy/tracking_settings/client.py +267 -0
  609. sequenzy/tracking_settings/raw_client.py +415 -0
  610. sequenzy/tracking_settings/types/__init__.py +38 -0
  611. sequenzy/tracking_settings/types/update_tracking_settings_request_auto_utm_settings.py +27 -0
  612. sequenzy/tracking_settings/types/update_tracking_settings_response.py +20 -0
  613. sequenzy/transactional/__init__.py +103 -0
  614. sequenzy/transactional/client.py +968 -0
  615. sequenzy/transactional/raw_client.py +1678 -0
  616. sequenzy/transactional/types/__init__.py +103 -0
  617. sequenzy/transactional/types/create_transactional_response.py +28 -0
  618. sequenzy/transactional/types/delete_transactional_response.py +22 -0
  619. sequenzy/transactional/types/delete_transactional_response_deleted.py +35 -0
  620. sequenzy/transactional/types/get_transactional_response.py +26 -0
  621. sequenzy/transactional/types/list_transactional_request_order.py +5 -0
  622. sequenzy/transactional/types/list_transactional_request_sort.py +7 -0
  623. sequenzy/transactional/types/list_transactional_request_status.py +5 -0
  624. sequenzy/transactional/types/list_transactional_response.py +21 -0
  625. sequenzy/transactional/types/send_transactional_request_bcc.py +5 -0
  626. sequenzy/transactional/types/send_transactional_request_cc.py +5 -0
  627. sequenzy/transactional/types/send_transactional_request_email_type.py +5 -0
  628. sequenzy/transactional/types/send_transactional_request_to.py +5 -0
  629. sequenzy/transactional/types/send_transactional_request_tracking_settings.py +46 -0
  630. sequenzy/transactional/types/send_transactional_response.py +8 -0
  631. sequenzy/transactional/types/send_transactional_response_one.py +67 -0
  632. sequenzy/transactional/types/send_transactional_response_one_email_type.py +5 -0
  633. sequenzy/transactional/types/send_transactional_response_one_to.py +5 -0
  634. sequenzy/transactional/types/send_transactional_response_transactional.py +69 -0
  635. sequenzy/transactional/types/send_transactional_response_transactional_email_type.py +5 -0
  636. sequenzy/transactional/types/send_transactional_response_transactional_to.py +5 -0
  637. sequenzy/transactional/types/send_transactional_response_transactional_transactional.py +21 -0
  638. sequenzy/transactional/types/update_transactional_response.py +28 -0
  639. sequenzy/types/__init__.py +1409 -0
  640. sequenzy/types/ab_test.py +119 -0
  641. sequenzy/types/ab_test_content_editing.py +30 -0
  642. sequenzy/types/ab_test_kind.py +5 -0
  643. sequenzy/types/ab_test_test_type.py +5 -0
  644. sequenzy/types/ab_test_variant.py +63 -0
  645. sequenzy/types/ad_account.py +20 -0
  646. sequenzy/types/agent_friendly_error.py +55 -0
  647. sequenzy/types/api_key_metadata.py +65 -0
  648. sequenzy/types/api_key_metadata_type.py +5 -0
  649. sequenzy/types/attachment.py +58 -0
  650. sequenzy/types/audience_sync.py +72 -0
  651. sequenzy/types/audience_sync_frequency.py +5 -0
  652. sequenzy/types/bad_request_error_body.py +21 -0
  653. sequenzy/types/bad_request_error_body_error.py +20 -0
  654. sequenzy/types/block_field_warnings.py +8 -0
  655. sequenzy/types/bulk_subscriber_tag_request.py +63 -0
  656. sequenzy/types/bulk_subscriber_tag_response.py +76 -0
  657. sequenzy/types/bulk_subscriber_tag_response_failures_item.py +25 -0
  658. sequenzy/types/bulk_subscriber_tag_response_not_found.py +31 -0
  659. sequenzy/types/campaign_channel.py +5 -0
  660. sequenzy/types/campaign_detail.py +108 -0
  661. sequenzy/types/campaign_goal.py +71 -0
  662. sequenzy/types/campaign_goal_attribute_condition.py +5 -0
  663. sequenzy/types/campaign_goal_input.py +65 -0
  664. sequenzy/types/campaign_goal_input_attribute_condition.py +7 -0
  665. sequenzy/types/campaign_goal_input_trigger_type.py +5 -0
  666. sequenzy/types/campaign_goal_metrics.py +33 -0
  667. sequenzy/types/campaign_goal_scope.py +5 -0
  668. sequenzy/types/campaign_goal_trigger_type.py +5 -0
  669. sequenzy/types/campaign_status.py +8 -0
  670. sequenzy/types/campaign_summary.py +160 -0
  671. sequenzy/types/clicked_link.py +36 -0
  672. sequenzy/types/commerce_customer.py +41 -0
  673. sequenzy/types/commerce_forecast_range.py +26 -0
  674. sequenzy/types/commerce_order_item.py +55 -0
  675. sequenzy/types/commerce_product.py +99 -0
  676. sequenzy/types/commerce_product_provider.py +5 -0
  677. sequenzy/types/commerce_product_variants_item.py +47 -0
  678. sequenzy/types/commerce_product_variants_item_options_item.py +20 -0
  679. sequenzy/types/commerce_value_forecast.py +47 -0
  680. sequenzy/types/commerce_value_forecast_actual.py +33 -0
  681. sequenzy/types/commerce_value_forecast_confidence.py +5 -0
  682. sequenzy/types/commerce_value_forecast_eligibility.py +20 -0
  683. sequenzy/types/commerce_value_forecast_eligibility_reasons_item.py +22 -0
  684. sequenzy/types/commerce_value_forecast_forecast.py +56 -0
  685. sequenzy/types/commerce_value_forecast_history.py +40 -0
  686. sequenzy/types/commerce_value_forecast_status.py +5 -0
  687. sequenzy/types/company.py +204 -0
  688. sequenzy/types/company_email_length_preference.py +5 -0
  689. sequenzy/types/company_reply_tracking_domain_mode.py +5 -0
  690. sequenzy/types/conversation_message.py +61 -0
  691. sequenzy/types/conversation_message_type.py +5 -0
  692. sequenzy/types/conversation_summary.py +51 -0
  693. sequenzy/types/conversation_summary_context.py +27 -0
  694. sequenzy/types/conversation_summary_status.py +5 -0
  695. sequenzy/types/detailed_subscriber.py +37 -0
  696. sequenzy/types/email.py +44 -0
  697. sequenzy/types/email_block.py +108 -0
  698. sequenzy/types/email_block_condition_field_reference.py +74 -0
  699. sequenzy/types/email_block_condition_field_reference_preview_support.py +7 -0
  700. sequenzy/types/email_block_conditions_item.py +31 -0
  701. sequenzy/types/email_block_conditions_item_field.py +7 -0
  702. sequenzy/types/email_block_conditions_item_operator.py +8 -0
  703. sequenzy/types/email_block_field_reference.py +53 -0
  704. sequenzy/types/email_block_layout.py +5 -0
  705. sequenzy/types/email_block_overlay_position.py +5 -0
  706. sequenzy/types/email_block_styles.py +69 -0
  707. sequenzy/types/email_block_styles_text_align.py +5 -0
  708. sequenzy/types/email_block_type.py +47 -0
  709. sequenzy/types/email_block_type_reference.py +49 -0
  710. sequenzy/types/email_body_input.py +34 -0
  711. sequenzy/types/email_component.py +64 -0
  712. sequenzy/types/email_component_component_type.py +5 -0
  713. sequenzy/types/email_component_default_slot.py +5 -0
  714. sequenzy/types/email_event.py +89 -0
  715. sequenzy/types/email_event_email_type.py +5 -0
  716. sequenzy/types/email_event_event_type.py +10 -0
  717. sequenzy/types/email_preset.py +5 -0
  718. sequenzy/types/email_send.py +250 -0
  719. sequenzy/types/email_send_additional_recipients.py +25 -0
  720. sequenzy/types/email_send_automation.py +20 -0
  721. sequenzy/types/email_send_campaign.py +20 -0
  722. sequenzy/types/email_send_email_type.py +5 -0
  723. sequenzy/types/email_send_event.py +101 -0
  724. sequenzy/types/email_send_event_delivery_policy.py +5 -0
  725. sequenzy/types/email_send_event_email_type.py +5 -0
  726. sequenzy/types/email_send_internal_failure_code.py +7 -0
  727. sequenzy/types/email_send_status.py +10 -0
  728. sequenzy/types/email_send_subscriber.py +28 -0
  729. sequenzy/types/email_send_suppression_reason.py +5 -0
  730. sequenzy/types/email_send_type.py +5 -0
  731. sequenzy/types/email_theme_patch.py +40 -0
  732. sequenzy/types/email_theme_patch_button_style.py +5 -0
  733. sequenzy/types/email_theme_patch_colors.py +33 -0
  734. sequenzy/types/email_theme_patch_layout.py +52 -0
  735. sequenzy/types/email_theme_patch_preset_id.py +5 -0
  736. sequenzy/types/email_theme_patch_typography.py +55 -0
  737. sequenzy/types/engagement_stats.py +143 -0
  738. sequenzy/types/engagement_stats_rate_denominator_basis.py +5 -0
  739. sequenzy/types/error.py +30 -0
  740. sequenzy/types/event_schema.py +71 -0
  741. sequenzy/types/event_schema_documented_providers_item.py +7 -0
  742. sequenzy/types/event_schema_providers_item.py +33 -0
  743. sequenzy/types/event_schema_providers_item_properties_item.py +43 -0
  744. sequenzy/types/event_schema_providers_item_provider.py +7 -0
  745. sequenzy/types/filter_group.py +39 -0
  746. sequenzy/types/filter_group_children_item.py +54 -0
  747. sequenzy/types/filter_group_join_operator.py +5 -0
  748. sequenzy/types/filter_group_kind.py +5 -0
  749. sequenzy/types/filter_leaf.py +41 -0
  750. sequenzy/types/filter_leaf_field.py +33 -0
  751. sequenzy/types/filter_leaf_kind.py +5 -0
  752. sequenzy/types/filter_leaf_operator.py +25 -0
  753. sequenzy/types/integration_activity_entry.py +86 -0
  754. sequenzy/types/integration_activity_entry_status.py +7 -0
  755. sequenzy/types/integration_detail.py +74 -0
  756. sequenzy/types/integration_detail_activity.py +42 -0
  757. sequenzy/types/integration_detail_activity_recent_failures_item.py +30 -0
  758. sequenzy/types/integration_detail_ingestion.py +88 -0
  759. sequenzy/types/integration_detail_ingestion_list_targeting.py +7 -0
  760. sequenzy/types/integration_detail_ingestion_lists_item.py +20 -0
  761. sequenzy/types/integration_detail_integration.py +91 -0
  762. sequenzy/types/integration_detail_integration_category.py +7 -0
  763. sequenzy/types/integration_detail_pixel.py +40 -0
  764. sequenzy/types/integration_detail_recommendations_item.py +23 -0
  765. sequenzy/types/integration_detail_recommendations_item_severity.py +5 -0
  766. sequenzy/types/integration_event_wiring.py +81 -0
  767. sequenzy/types/integration_event_wiring_listeners_item.py +37 -0
  768. sequenzy/types/integration_event_wiring_rule_source.py +5 -0
  769. sequenzy/types/integration_event_wiring_rules_item.py +27 -0
  770. sequenzy/types/integration_pixel_state.py +47 -0
  771. sequenzy/types/integration_pixel_state_pixel.py +68 -0
  772. sequenzy/types/integration_provider_capability.py +78 -0
  773. sequenzy/types/integration_provider_capability_actions_item.py +10 -0
  774. sequenzy/types/integration_provider_capability_availability.py +5 -0
  775. sequenzy/types/integration_provider_capability_category.py +7 -0
  776. sequenzy/types/integration_provider_capability_connect_fields_item.py +26 -0
  777. sequenzy/types/integration_provider_capability_connect_fields_item_key.py +7 -0
  778. sequenzy/types/integration_provider_capability_connect_method.py +7 -0
  779. sequenzy/types/integration_provider_capability_emits_item.py +27 -0
  780. sequenzy/types/integration_provider_capability_writes_attributes_item.py +20 -0
  781. sequenzy/types/integration_summary.py +91 -0
  782. sequenzy/types/integration_summary_category.py +7 -0
  783. sequenzy/types/integration_sync_skip_summary.py +47 -0
  784. sequenzy/types/integration_sync_skip_summary_records_item.py +27 -0
  785. sequenzy/types/integration_sync_skip_summary_records_item_outcome.py +5 -0
  786. sequenzy/types/internal_server_error_body.py +20 -0
  787. sequenzy/types/landing_page_content.py +41 -0
  788. sequenzy/types/landing_page_content_seo.py +50 -0
  789. sequenzy/types/landing_page_content_theme.py +46 -0
  790. sequenzy/types/landing_page_content_theme_section_animation.py +7 -0
  791. sequenzy/types/landing_page_content_theme_section_animation_speed.py +5 -0
  792. sequenzy/types/landing_page_domain.py +125 -0
  793. sequenzy/types/landing_page_domain_dns_record_type.py +5 -0
  794. sequenzy/types/landing_page_domain_domain_scope.py +5 -0
  795. sequenzy/types/landing_page_summary.py +94 -0
  796. sequenzy/types/landing_page_summary_custom_domain_scope.py +5 -0
  797. sequenzy/types/landing_page_summary_status.py +5 -0
  798. sequenzy/types/not_found_error_body.py +21 -0
  799. sequenzy/types/not_found_error_body_error.py +20 -0
  800. sequenzy/types/notification_preference.py +29 -0
  801. sequenzy/types/notification_preference_event.py +7 -0
  802. sequenzy/types/notification_preference_mode.py +5 -0
  803. sequenzy/types/notification_preferences.py +47 -0
  804. sequenzy/types/outbound_webhook_delivery.py +56 -0
  805. sequenzy/types/outbound_webhook_delivery_attempt.py +40 -0
  806. sequenzy/types/outbound_webhook_delivery_attempt_status.py +5 -0
  807. sequenzy/types/outbound_webhook_delivery_status.py +7 -0
  808. sequenzy/types/outbound_webhook_endpoint.py +80 -0
  809. sequenzy/types/outbound_webhook_endpoint_signing_secrets_item.py +26 -0
  810. sequenzy/types/outbound_webhook_endpoint_status.py +5 -0
  811. sequenzy/types/outbound_webhook_event_type.py +34 -0
  812. sequenzy/types/pagination.py +26 -0
  813. sequenzy/types/poll_response.py +85 -0
  814. sequenzy/types/poll_response_variant.py +5 -0
  815. sequenzy/types/poll_results_summary.py +84 -0
  816. sequenzy/types/poll_results_summary_answers_item.py +33 -0
  817. sequenzy/types/poll_results_summary_nps.py +30 -0
  818. sequenzy/types/poll_results_summary_variant.py +5 -0
  819. sequenzy/types/product.py +60 -0
  820. sequenzy/types/product_digital_delivery.py +40 -0
  821. sequenzy/types/product_digital_delivery_source.py +5 -0
  822. sequenzy/types/product_provider.py +5 -0
  823. sequenzy/types/recommendation_metrics.py +83 -0
  824. sequenzy/types/recommendation_metrics_revenue_by_currency_item.py +33 -0
  825. sequenzy/types/recommendation_metrics_top_products_item.py +35 -0
  826. sequenzy/types/render_email_request.py +65 -0
  827. sequenzy/types/render_email_request_subscriber.py +40 -0
  828. sequenzy/types/render_email_response.py +86 -0
  829. sequenzy/types/render_email_response_entity.py +26 -0
  830. sequenzy/types/render_email_response_entity_type.py +5 -0
  831. sequenzy/types/render_email_response_unevaluated_conditions_item.py +41 -0
  832. sequenzy/types/render_email_response_unevaluated_conditions_item_reason.py +7 -0
  833. sequenzy/types/render_email_response_unresolved_merge_tags_item.py +28 -0
  834. sequenzy/types/render_email_response_unresolved_merge_tags_item_reason.py +5 -0
  835. sequenzy/types/reply_profile_summary.py +30 -0
  836. sequenzy/types/resolved_audience_entity.py +28 -0
  837. sequenzy/types/resolved_audience_rule.py +24 -0
  838. sequenzy/types/resolved_audience_rule_type.py +5 -0
  839. sequenzy/types/resolved_campaign_audience.py +67 -0
  840. sequenzy/types/resolved_campaign_audience_filter_join_operator.py +5 -0
  841. sequenzy/types/resolved_campaign_audience_type.py +7 -0
  842. sequenzy/types/saved_popup.py +81 -0
  843. sequenzy/types/saved_popup_embed.py +36 -0
  844. sequenzy/types/saved_popup_frequency.py +30 -0
  845. sequenzy/types/saved_popup_schedule.py +37 -0
  846. sequenzy/types/saved_popup_stats.py +58 -0
  847. sequenzy/types/saved_popup_status.py +5 -0
  848. sequenzy/types/saved_popup_targeting.py +31 -0
  849. sequenzy/types/saved_popup_targeting_device.py +5 -0
  850. sequenzy/types/saved_popup_trigger.py +56 -0
  851. sequenzy/types/saved_popup_trigger_type.py +5 -0
  852. sequenzy/types/saved_popup_visual.py +37 -0
  853. sequenzy/types/saved_popup_visual_placement.py +5 -0
  854. sequenzy/types/saved_popup_visual_style.py +7 -0
  855. sequenzy/types/segment.py +53 -0
  856. sequenzy/types/segment_filter_join_operator.py +5 -0
  857. sequenzy/types/segment_format.py +5 -0
  858. sequenzy/types/sender_health_metric.py +37 -0
  859. sequenzy/types/sender_health_threshold_bound.py +24 -0
  860. sequenzy/types/sender_profile_summary.py +55 -0
  861. sequenzy/types/sending_status.py +85 -0
  862. sequenzy/types/sending_status_metrics_window.py +42 -0
  863. sequenzy/types/sending_status_metrics_window_kind.py +5 -0
  864. sequenzy/types/sending_status_pause_reason_kind.py +10 -0
  865. sequenzy/types/sending_status_remediation.py +37 -0
  866. sequenzy/types/sending_status_self_resume.py +78 -0
  867. sequenzy/types/sending_status_self_resume_ai_review_status.py +7 -0
  868. sequenzy/types/sending_status_self_resume_unavailable_reason.py +8 -0
  869. sequenzy/types/sending_status_sender_health.py +71 -0
  870. sequenzy/types/sending_status_sender_health_enforcement_mode.py +5 -0
  871. sequenzy/types/sending_status_status.py +5 -0
  872. sequenzy/types/sequence_ab_test_step_summary.py +53 -0
  873. sequenzy/types/sequence_ab_test_step_summary_test_type.py +5 -0
  874. sequenzy/types/sequence_ab_test_step_variant.py +54 -0
  875. sequenzy/types/sequence_action_response.py +79 -0
  876. sequenzy/types/sequence_branch_condition_input.py +155 -0
  877. sequenzy/types/sequence_branch_condition_input_activity_scope.py +7 -0
  878. sequenzy/types/sequence_branch_condition_input_condition_type.py +21 -0
  879. sequenzy/types/sequence_branch_input.py +102 -0
  880. sequenzy/types/sequence_branch_input_split_mode.py +5 -0
  881. sequenzy/types/sequence_branch_path_step_input.py +210 -0
  882. sequenzy/types/sequence_branch_path_step_input_ineligible_action.py +5 -0
  883. sequenzy/types/sequence_branch_path_step_input_node_type.py +22 -0
  884. sequenzy/types/sequence_branch_path_step_input_type.py +10 -0
  885. sequenzy/types/sequence_create_response.py +51 -0
  886. sequenzy/types/sequence_create_response_event_tracking.py +72 -0
  887. sequenzy/types/sequence_create_response_event_tracking_integration_guide.py +20 -0
  888. sequenzy/types/sequence_create_response_event_tracking_payload_contract.py +42 -0
  889. sequenzy/types/sequence_create_response_sequence.py +107 -0
  890. sequenzy/types/sequence_delay_input.py +134 -0
  891. sequenzy/types/sequence_delay_input_direction.py +5 -0
  892. sequenzy/types/sequence_delay_input_missing_action.py +5 -0
  893. sequenzy/types/sequence_delay_input_mode.py +5 -0
  894. sequenzy/types/sequence_delay_input_until_missing_action.py +5 -0
  895. sequenzy/types/sequence_delay_input_until_offset_direction.py +5 -0
  896. sequenzy/types/sequence_delay_offset_input.py +25 -0
  897. sequenzy/types/sequence_details.py +91 -0
  898. sequenzy/types/sequence_details_enrichment_status.py +5 -0
  899. sequenzy/types/sequence_discount_input.py +173 -0
  900. sequenzy/types/sequence_discount_input_discount_type.py +5 -0
  901. sequenzy/types/sequence_discount_input_duration.py +5 -0
  902. sequenzy/types/sequence_discount_input_provider.py +5 -0
  903. sequenzy/types/sequence_effective_status.py +7 -0
  904. sequenzy/types/sequence_email.py +206 -0
  905. sequenzy/types/sequence_email_delay_mode.py +5 -0
  906. sequenzy/types/sequence_email_email_preset.py +5 -0
  907. sequenzy/types/sequence_email_node_type.py +5 -0
  908. sequenzy/types/sequence_email_update_input.py +203 -0
  909. sequenzy/types/sequence_email_update_input_email_preset.py +5 -0
  910. sequenzy/types/sequence_enrollment_cancel_response.py +70 -0
  911. sequenzy/types/sequence_enrollment_cancel_response_enrollments_item.py +33 -0
  912. sequenzy/types/sequence_enrollment_counts.py +50 -0
  913. sequenzy/types/sequence_enrollment_counts_by_current_node_item.py +77 -0
  914. sequenzy/types/sequence_enrollment_list_response.py +61 -0
  915. sequenzy/types/sequence_enrollment_list_response_enrollments_item.py +203 -0
  916. sequenzy/types/sequence_enrollment_list_response_enrollments_item_entered_via.py +44 -0
  917. sequenzy/types/sequence_enrollment_list_response_enrollments_item_entered_via_kind.py +8 -0
  918. sequenzy/types/sequence_enrollment_list_response_enrollments_item_status.py +7 -0
  919. sequenzy/types/sequence_enrollment_list_response_pagination.py +27 -0
  920. sequenzy/types/sequence_enrollment_mode.py +5 -0
  921. sequenzy/types/sequence_enrollment_move_response.py +133 -0
  922. sequenzy/types/sequence_enrollment_move_response_enqueue_errors_item.py +24 -0
  923. sequenzy/types/sequence_enrollment_move_response_enrollments_item.py +33 -0
  924. sequenzy/types/sequence_enrollment_realign_job_response.py +36 -0
  925. sequenzy/types/sequence_enrollment_realign_job_response_status.py +7 -0
  926. sequenzy/types/sequence_enrollment_realign_queued_response.py +30 -0
  927. sequenzy/types/sequence_enrollment_realign_queued_response_status.py +5 -0
  928. sequenzy/types/sequence_enrollment_realign_response.py +125 -0
  929. sequenzy/types/sequence_enrollment_realign_response_changes_item.py +42 -0
  930. sequenzy/types/sequence_goal.py +69 -0
  931. sequenzy/types/sequence_goal_attribute_condition.py +5 -0
  932. sequenzy/types/sequence_goal_input.py +65 -0
  933. sequenzy/types/sequence_goal_input_attribute_condition.py +7 -0
  934. sequenzy/types/sequence_goal_input_trigger_type.py +5 -0
  935. sequenzy/types/sequence_goal_trigger_type.py +5 -0
  936. sequenzy/types/sequence_graph_edge_input.py +42 -0
  937. sequenzy/types/sequence_graph_edit_input.py +76 -0
  938. sequenzy/types/sequence_graph_edit_input_action.py +7 -0
  939. sequenzy/types/sequence_inbound_webhook.py +50 -0
  940. sequenzy/types/sequence_inbound_webhook_field_mapping.py +32 -0
  941. sequenzy/types/sequence_inbound_webhook_status.py +5 -0
  942. sequenzy/types/sequence_linear_step_insertion_input.py +42 -0
  943. sequenzy/types/sequence_node.py +64 -0
  944. sequenzy/types/sequence_node_update_hints.py +45 -0
  945. sequenzy/types/sequence_node_update_input.py +47 -0
  946. sequenzy/types/sequence_node_update_input_changes.py +49 -0
  947. sequenzy/types/sequence_node_update_input_changes_email_preset.py +5 -0
  948. sequenzy/types/sequence_path_step_config.py +329 -0
  949. sequenzy/types/sequence_path_step_config_activity_scope.py +7 -0
  950. sequenzy/types/sequence_path_step_config_condition_type.py +21 -0
  951. sequenzy/types/sequence_path_step_config_method.py +5 -0
  952. sequenzy/types/sequence_path_step_config_on_error.py +5 -0
  953. sequenzy/types/sequence_path_step_config_output_fields_item.py +46 -0
  954. sequenzy/types/sequence_path_step_config_timeout_action.py +5 -0
  955. sequenzy/types/sequence_position.py +20 -0
  956. sequenzy/types/sequence_sending_window.py +56 -0
  957. sequenzy/types/sequence_sending_window_days_item.py +7 -0
  958. sequenzy/types/sequence_sms_step_update_input.py +64 -0
  959. sequenzy/types/sequence_sms_step_update_input_ineligible_action.py +5 -0
  960. sequenzy/types/sequence_status.py +5 -0
  961. sequenzy/types/sequence_step_input.py +388 -0
  962. sequenzy/types/sequence_step_input_discount_type.py +5 -0
  963. sequenzy/types/sequence_step_input_duration.py +5 -0
  964. sequenzy/types/sequence_step_input_ineligible_action.py +5 -0
  965. sequenzy/types/sequence_step_input_node_type.py +7 -0
  966. sequenzy/types/sequence_step_input_provider.py +5 -0
  967. sequenzy/types/sequence_step_input_type.py +7 -0
  968. sequenzy/types/sequence_stop_condition.py +43 -0
  969. sequenzy/types/sequence_stop_condition_match_config.py +110 -0
  970. sequenzy/types/sequence_stop_condition_match_config_entry_audience.py +25 -0
  971. sequenzy/types/sequence_stop_condition_match_config_entry_audience_audience.py +5 -0
  972. sequenzy/types/sequence_stop_condition_match_config_event_property.py +22 -0
  973. sequenzy/types/sequence_stop_condition_match_config_event_property_filter.py +34 -0
  974. sequenzy/types/sequence_stop_condition_match_config_event_property_filter_property_filters_item.py +31 -0
  975. sequenzy/types/sequence_stop_condition_match_config_event_property_filter_property_filters_item_operator.py +8 -0
  976. sequenzy/types/sequence_stop_condition_match_config_event_property_rules_item.py +26 -0
  977. sequenzy/types/sequence_stop_condition_match_config_field_value.py +23 -0
  978. sequenzy/types/sequence_stop_condition_match_config_field_value_operator.py +7 -0
  979. sequenzy/types/sequence_stop_condition_type.py +17 -0
  980. sequenzy/types/sequence_subscriber_update_step_update_input.py +30 -0
  981. sequenzy/types/sequence_summary.py +151 -0
  982. sequenzy/types/sequence_summary_paused_by_user.py +21 -0
  983. sequenzy/types/sequence_trigger_property_filter.py +34 -0
  984. sequenzy/types/sequence_trigger_property_filter_operator.py +8 -0
  985. sequenzy/types/sequence_trigger_property_filter_value.py +9 -0
  986. sequenzy/types/sequence_trigger_property_filter_value_three_item.py +5 -0
  987. sequenzy/types/sequence_trigger_type.py +10 -0
  988. sequenzy/types/sequence_wait_until_input.py +93 -0
  989. sequenzy/types/sequence_wait_until_input_direction.py +5 -0
  990. sequenzy/types/sequence_wait_until_input_missing_action.py +5 -0
  991. sequenzy/types/sequence_wait_until_input_until_missing_action.py +5 -0
  992. sequenzy/types/sequence_wait_until_input_until_offset_direction.py +5 -0
  993. sequenzy/types/sequence_wait_until_weekday_input.py +86 -0
  994. sequenzy/types/service_unavailable_error_body.py +26 -0
  995. sequenzy/types/shopify_browse_abandonment_settings.py +48 -0
  996. sequenzy/types/shopify_cart_abandonment_settings.py +60 -0
  997. sequenzy/types/shopify_price_drop_settings.py +59 -0
  998. sequenzy/types/subscriber.py +91 -0
  999. sequenzy/types/subscriber_activity_event.py +108 -0
  1000. sequenzy/types/subscriber_activity_event_engagement_quality.py +5 -0
  1001. sequenzy/types/subscriber_email_stats.py +25 -0
  1002. sequenzy/types/subscriber_import.py +96 -0
  1003. sequenzy/types/subscriber_import_record.py +69 -0
  1004. sequenzy/types/subscriber_import_record_custom_attributes_value.py +11 -0
  1005. sequenzy/types/subscriber_import_record_custom_attributes_value_three_item.py +5 -0
  1006. sequenzy/types/subscriber_import_record_status.py +5 -0
  1007. sequenzy/types/subscriber_import_status.py +5 -0
  1008. sequenzy/types/subscriber_list.py +62 -0
  1009. sequenzy/types/subscriber_list_membership.py +42 -0
  1010. sequenzy/types/subscriber_list_pagination.py +54 -0
  1011. sequenzy/types/subscriber_note.py +40 -0
  1012. sequenzy/types/subscriber_note_author.py +21 -0
  1013. sequenzy/types/subscriber_sequence_enrollment.py +54 -0
  1014. sequenzy/types/subscriber_sms_status.py +7 -0
  1015. sequenzy/types/subscriber_status.py +5 -0
  1016. sequenzy/types/subscriber_update_config.py +39 -0
  1017. sequenzy/types/subscriber_update_config_custom_attribute_updates_item.py +37 -0
  1018. sequenzy/types/subscriber_update_config_custom_attribute_updates_item_value.py +5 -0
  1019. sequenzy/types/subscriber_update_config_custom_attribute_updates_item_value_type.py +7 -0
  1020. sequenzy/types/subscriber_update_config_status.py +5 -0
  1021. sequenzy/types/sync_rule.py +36 -0
  1022. sequenzy/types/sync_rule_actions.py +26 -0
  1023. sequenzy/types/sync_rule_conditions.py +56 -0
  1024. sequenzy/types/sync_rule_conditions_purchased_product.py +32 -0
  1025. sequenzy/types/tag_definition.py +26 -0
  1026. sequenzy/types/team_member.py +53 -0
  1027. sequenzy/types/team_member_invited_by.py +21 -0
  1028. sequenzy/types/team_member_kind.py +5 -0
  1029. sequenzy/types/team_member_role.py +5 -0
  1030. sequenzy/types/team_member_status.py +5 -0
  1031. sequenzy/types/team_member_user.py +22 -0
  1032. sequenzy/types/template_detail.py +52 -0
  1033. sequenzy/types/template_localization.py +51 -0
  1034. sequenzy/types/template_localization_status.py +5 -0
  1035. sequenzy/types/template_summary.py +43 -0
  1036. sequenzy/types/too_many_requests_error_body.py +20 -0
  1037. sequenzy/types/tracking_settings.py +50 -0
  1038. sequenzy/types/tracking_settings_auto_utm.py +20 -0
  1039. sequenzy/types/tracking_settings_consent.py +59 -0
  1040. sequenzy/types/tracking_settings_reply_tracking.py +31 -0
  1041. sequenzy/types/tracking_settings_tracking.py +48 -0
  1042. sequenzy/types/tracking_settings_tracking_domain.py +37 -0
  1043. sequenzy/types/transactional_email.py +34 -0
  1044. sequenzy/types/transactional_email_details.py +40 -0
  1045. sequenzy/types/transactional_email_list_item.py +28 -0
  1046. sequenzy/types/transactional_email_list_item_stats.py +31 -0
  1047. sequenzy/types/transactional_metrics_response.py +49 -0
  1048. sequenzy/types/transactional_metrics_response_bounce_breakdown.py +25 -0
  1049. sequenzy/types/transactional_metrics_response_bounce_breakdown_subtypes_item.py +28 -0
  1050. sequenzy/types/transactional_metrics_response_bounce_breakdown_subtypes_item_type.py +7 -0
  1051. sequenzy/types/transactional_metrics_response_clicked_links_item.py +21 -0
  1052. sequenzy/types/transactional_metrics_response_complaints.py +20 -0
  1053. sequenzy/types/transactional_metrics_response_engagement_breakdown.py +26 -0
  1054. sequenzy/types/transactional_metrics_response_engagement_breakdown_human.py +20 -0
  1055. sequenzy/types/transactional_metrics_response_engagement_breakdown_machine.py +20 -0
  1056. sequenzy/types/transactional_metrics_response_stats.py +25 -0
  1057. sequenzy/types/transactional_metrics_response_transactional.py +21 -0
  1058. sequenzy/types/transactional_send_diagnostics.py +41 -0
  1059. sequenzy/types/transactional_send_diagnostics_missing_required_variables_item.py +34 -0
  1060. sequenzy/types/transactional_send_diagnostics_missing_required_variables_item_used_in_item.py +31 -0
  1061. sequenzy/types/transactional_send_diagnostics_missing_required_variables_item_used_in_item_surface.py +7 -0
  1062. sequenzy/types/transactional_send_diagnostics_status.py +5 -0
  1063. sequenzy/types/transactional_send_diagnostics_unused_variables_item.py +21 -0
  1064. sequenzy/types/unauthorized_error_body.py +21 -0
  1065. sequenzy/types/unauthorized_error_body_error.py +20 -0
  1066. sequenzy/types/unprocessable_entity_error_body.py +26 -0
  1067. sequenzy/types/url_attachment.py +31 -0
  1068. sequenzy/types/web_tracking_key.py +100 -0
  1069. sequenzy/types/website.py +102 -0
  1070. sequenzy/types/website_readiness.py +26 -0
  1071. sequenzy/types/website_readiness_reason.py +10 -0
  1072. sequenzy/types/website_readiness_status.py +7 -0
  1073. sequenzy/types/website_status.py +7 -0
  1074. sequenzy/web_tracking_keys/__init__.py +55 -0
  1075. sequenzy/web_tracking_keys/client.py +554 -0
  1076. sequenzy/web_tracking_keys/raw_client.py +1087 -0
  1077. sequenzy/web_tracking_keys/types/__init__.py +53 -0
  1078. sequenzy/web_tracking_keys/types/create_web_tracking_keys_response.py +22 -0
  1079. sequenzy/web_tracking_keys/types/delete_web_tracking_keys_response.py +20 -0
  1080. sequenzy/web_tracking_keys/types/get_web_tracking_keys_response.py +21 -0
  1081. sequenzy/web_tracking_keys/types/list_web_tracking_keys_response.py +21 -0
  1082. sequenzy/web_tracking_keys/types/mint_identity_web_tracking_keys_response.py +47 -0
  1083. sequenzy/web_tracking_keys/types/update_web_tracking_keys_response.py +21 -0
  1084. sequenzy/webhooks/__init__.py +70 -0
  1085. sequenzy/webhooks/client.py +834 -0
  1086. sequenzy/webhooks/raw_client.py +1602 -0
  1087. sequenzy/webhooks/types/__init__.py +68 -0
  1088. sequenzy/webhooks/types/add_signing_secret_webhooks_response.py +21 -0
  1089. sequenzy/webhooks/types/create_webhooks_response.py +21 -0
  1090. sequenzy/webhooks/types/delete_webhooks_response.py +21 -0
  1091. sequenzy/webhooks/types/list_deliveries_webhooks_response.py +21 -0
  1092. sequenzy/webhooks/types/list_delivery_attempts_webhooks_response.py +21 -0
  1093. sequenzy/webhooks/types/list_webhooks_response.py +21 -0
  1094. sequenzy/webhooks/types/remove_signing_secret_webhooks_response.py +21 -0
  1095. sequenzy/webhooks/types/replay_delivery_webhooks_response.py +21 -0
  1096. sequenzy/webhooks/types/test_webhooks_response.py +29 -0
  1097. sequenzy/webhooks/types/update_webhooks_request_status.py +5 -0
  1098. sequenzy/webhooks/types/update_webhooks_response.py +21 -0
  1099. sequenzy/websites/__init__.py +39 -0
  1100. sequenzy/websites/client.py +320 -0
  1101. sequenzy/websites/raw_client.py +696 -0
  1102. sequenzy/websites/types/__init__.py +42 -0
  1103. sequenzy/websites/types/add_websites_response.py +21 -0
  1104. sequenzy/websites/types/get_websites_response.py +21 -0
  1105. sequenzy/websites/types/list_websites_response.py +21 -0
  1106. sequenzy/websites/types/verify_sending_domain_response.py +42 -0
  1107. sequenzy/widgets/__init__.py +133 -0
  1108. sequenzy/widgets/client.py +2327 -0
  1109. sequenzy/widgets/preferences/__init__.py +34 -0
  1110. sequenzy/widgets/preferences/client.py +123 -0
  1111. sequenzy/widgets/preferences/raw_client.py +224 -0
  1112. sequenzy/widgets/preferences/types/__init__.py +34 -0
  1113. sequenzy/widgets/preferences/types/generate_token_preferences_response.py +23 -0
  1114. sequenzy/widgets/raw_client.py +3966 -0
  1115. sequenzy/widgets/types/__init__.py +127 -0
  1116. sequenzy/widgets/types/create_saved_form_request_duplicate_strategy.py +5 -0
  1117. sequenzy/widgets/types/create_saved_form_response.py +21 -0
  1118. sequenzy/widgets/types/create_saved_popup_request_duplicate_strategy.py +5 -0
  1119. sequenzy/widgets/types/create_saved_popup_request_placement.py +5 -0
  1120. sequenzy/widgets/types/create_saved_popup_request_presentation.py +7 -0
  1121. sequenzy/widgets/types/create_saved_popup_request_status.py +5 -0
  1122. sequenzy/widgets/types/create_saved_popup_request_template.py +21 -0
  1123. sequenzy/widgets/types/create_saved_popup_response.py +24 -0
  1124. sequenzy/widgets/types/delete_saved_popup_response.py +25 -0
  1125. sequenzy/widgets/types/duplicate_saved_popup_response.py +22 -0
  1126. sequenzy/widgets/types/get_saved_form_embed_response.py +22 -0
  1127. sequenzy/widgets/types/get_saved_form_embed_response_embed.py +36 -0
  1128. sequenzy/widgets/types/get_saved_popup_embed_response.py +23 -0
  1129. sequenzy/widgets/types/get_saved_popup_response.py +23 -0
  1130. sequenzy/widgets/types/list_saved_forms_response.py +24 -0
  1131. sequenzy/widgets/types/list_saved_forms_response_forms_item.py +27 -0
  1132. sequenzy/widgets/types/list_saved_popups_request_include_content.py +5 -0
  1133. sequenzy/widgets/types/list_saved_popups_response.py +30 -0
  1134. sequenzy/widgets/types/submit_company_scoped_saved_signup_form_request_duplicate_strategy.py +7 -0
  1135. sequenzy/widgets/types/submit_company_scoped_saved_signup_form_response.py +19 -0
  1136. sequenzy/widgets/types/submit_saved_popup_response.py +32 -0
  1137. sequenzy/widgets/types/submit_signup_form_request_duplicate_strategy.py +5 -0
  1138. sequenzy/widgets/types/submit_signup_form_response.py +19 -0
  1139. sequenzy/widgets/types/update_saved_form_request_duplicate_strategy.py +5 -0
  1140. sequenzy/widgets/types/update_saved_form_response.py +26 -0
  1141. sequenzy/widgets/types/update_saved_popup_request_duplicate_strategy.py +5 -0
  1142. sequenzy/widgets/types/update_saved_popup_request_placement.py +5 -0
  1143. sequenzy/widgets/types/update_saved_popup_request_presentation.py +7 -0
  1144. sequenzy/widgets/types/update_saved_popup_request_status.py +5 -0
  1145. sequenzy/widgets/types/update_saved_popup_response.py +24 -0
  1146. sequenzy-2.0.0.dist-info/METADATA +204 -0
  1147. sequenzy-2.0.0.dist-info/RECORD +1149 -0
  1148. sequenzy-2.0.0.dist-info/WHEEL +4 -0
  1149. sequenzy-2.0.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,1229 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
7
+ from ..core.request_options import RequestOptions
8
+ from ..types.email_block import EmailBlock
9
+ from .raw_client import AsyncRawAbTestsClient, RawAbTestsClient
10
+ from .types.add_variant_ab_tests_response import AddVariantAbTestsResponse
11
+ from .types.create_ab_tests_request_test_type import CreateAbTestsRequestTestType
12
+ from .types.create_ab_tests_request_variants_item import CreateAbTestsRequestVariantsItem
13
+ from .types.create_ab_tests_request_winner_criteria import CreateAbTestsRequestWinnerCriteria
14
+ from .types.create_ab_tests_response import CreateAbTestsResponse
15
+ from .types.delete_ab_tests_response import DeleteAbTestsResponse
16
+ from .types.delete_variant_ab_tests_response import DeleteVariantAbTestsResponse
17
+ from .types.get_ab_tests_response import GetAbTestsResponse
18
+ from .types.get_stats_ab_tests_request_period import GetStatsAbTestsRequestPeriod
19
+ from .types.get_stats_ab_tests_response import GetStatsAbTestsResponse
20
+ from .types.list_ab_tests_response import ListAbTestsResponse
21
+ from .types.restart_ab_tests_request_test_type import RestartAbTestsRequestTestType
22
+ from .types.restart_ab_tests_response import RestartAbTestsResponse
23
+ from .types.update_ab_tests_request_test_type import UpdateAbTestsRequestTestType
24
+ from .types.update_ab_tests_request_winner_criteria import UpdateAbTestsRequestWinnerCriteria
25
+ from .types.update_ab_tests_response import UpdateAbTestsResponse
26
+ from .types.update_variant_ab_tests_response import UpdateVariantAbTestsResponse
27
+
28
+ # this is used as the default value for optional parameters
29
+ OMIT = typing.cast(typing.Any, ...)
30
+
31
+
32
+ class AbTestsClient:
33
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
34
+ self._raw_client = RawAbTestsClient(client_wrapper=client_wrapper)
35
+
36
+ @property
37
+ def with_raw_response(self) -> RawAbTestsClient:
38
+ """
39
+ Retrieves a raw implementation of this client that returns raw responses.
40
+
41
+ Returns
42
+ -------
43
+ RawAbTestsClient
44
+ """
45
+ return self._raw_client
46
+
47
+ def add_variant(
48
+ self,
49
+ ab_test_id: str,
50
+ *,
51
+ subject: str,
52
+ blocks: typing.Optional[typing.Sequence[EmailBlock]] = OMIT,
53
+ confirm_live_change: typing.Optional[bool] = OMIT,
54
+ preview_text: typing.Optional[str] = OMIT,
55
+ request_options: typing.Optional[RequestOptions] = None,
56
+ ) -> AddVariantAbTestsResponse:
57
+ """
58
+ Adds a variant to a draft campaign or sequence A/B test. Sequence variants receive an independent email template. The body defaults to the control email when blocks are omitted. Sequence tests whose parent sequence is active require confirmLiveChange.
59
+
60
+ Parameters
61
+ ----------
62
+ ab_test_id : str
63
+ A/B test ID.
64
+
65
+ subject : str
66
+ Variant subject line.
67
+
68
+ blocks : typing.Optional[typing.Sequence[EmailBlock]]
69
+ Variant body blocks. Defaults to the campaign or sequence control email blocks.
70
+
71
+ confirm_live_change : typing.Optional[bool]
72
+ Required as true when the A/B test belongs to an active sequence, because new variants immediately enter the live rotation.
73
+
74
+ preview_text : typing.Optional[str]
75
+ Variant preview text.
76
+
77
+ request_options : typing.Optional[RequestOptions]
78
+ Request-specific configuration.
79
+
80
+ Returns
81
+ -------
82
+ AddVariantAbTestsResponse
83
+ Variant added
84
+
85
+ Examples
86
+ --------
87
+ from sequenzy import Sequenzy
88
+
89
+ client = Sequenzy(
90
+ api_key="YOUR_API_KEY",
91
+ )
92
+ client.ab_tests.add_variant(
93
+ ab_test_id="abTestId",
94
+ subject="subject",
95
+ )
96
+ """
97
+ _response = self._raw_client.add_variant(
98
+ ab_test_id,
99
+ subject=subject,
100
+ blocks=blocks,
101
+ confirm_live_change=confirm_live_change,
102
+ preview_text=preview_text,
103
+ request_options=request_options,
104
+ )
105
+ return _response.data
106
+
107
+ def create(
108
+ self,
109
+ *,
110
+ automation_node_id: typing.Optional[str] = OMIT,
111
+ campaign_id: typing.Optional[str] = OMIT,
112
+ confirm_live_change: typing.Optional[bool] = OMIT,
113
+ name: typing.Optional[str] = OMIT,
114
+ test_duration_minutes: typing.Optional[int] = OMIT,
115
+ test_percentage: typing.Optional[int] = OMIT,
116
+ test_type: typing.Optional[CreateAbTestsRequestTestType] = OMIT,
117
+ variants: typing.Optional[typing.Sequence[CreateAbTestsRequestVariantsItem]] = OMIT,
118
+ winner_criteria: typing.Optional[CreateAbTestsRequestWinnerCriteria] = OMIT,
119
+ winner_threshold: typing.Optional[int] = OMIT,
120
+ request_options: typing.Optional[RequestOptions] = None,
121
+ ) -> CreateAbTestsResponse:
122
+ """
123
+ Creates a draft campaign A/B test or converts a sequence email node to action_ab_test. Provide exactly one owner. Variant A is copied into an independent email for sequences; sequence conversions require at least one extra variant.
124
+
125
+ Parameters
126
+ ----------
127
+ automation_node_id : typing.Optional[str]
128
+ Sequence action_email node to convert. Mutually exclusive with campaignId.
129
+
130
+ campaign_id : typing.Optional[str]
131
+ Campaign to attach the test to. Must be in draft or rejected status. Mutually exclusive with automationNodeId.
132
+
133
+ confirm_live_change : typing.Optional[bool]
134
+ Must be true when converting an email node in an active sequence.
135
+
136
+ name : typing.Optional[str]
137
+ Test name. Defaults to "A/B Test for <campaign name>".
138
+
139
+ test_duration_minutes : typing.Optional[int]
140
+ Campaign-only duration before winner selection. Sequence tests select after winnerThreshold recipients.
141
+
142
+ test_percentage : typing.Optional[int]
143
+ Campaign-only share of the audience that receives test sends. Sequence tests use winnerThreshold.
144
+
145
+ test_type : typing.Optional[CreateAbTestsRequestTestType]
146
+ Sequence variant strategy. Subject defaults to open_rate and content defaults to click_rate unless winnerCriteria is explicit.
147
+
148
+ variants : typing.Optional[typing.Sequence[CreateAbTestsRequestVariantsItem]]
149
+ Extra variants beyond the control. Required (min 1) when converting with automationNodeId. Total variants cannot exceed 5.
150
+
151
+ winner_criteria : typing.Optional[CreateAbTestsRequestWinnerCriteria]
152
+ Metric used to pick the winner. For sequence tests, an explicit value overrides the testType default.
153
+
154
+ winner_threshold : typing.Optional[int]
155
+ Number of sequence recipients in the test sample.
156
+
157
+ request_options : typing.Optional[RequestOptions]
158
+ Request-specific configuration.
159
+
160
+ Returns
161
+ -------
162
+ CreateAbTestsResponse
163
+ A/B test created
164
+
165
+ Examples
166
+ --------
167
+ from sequenzy import Sequenzy
168
+
169
+ client = Sequenzy(
170
+ api_key="YOUR_API_KEY",
171
+ )
172
+ client.ab_tests.create()
173
+ """
174
+ _response = self._raw_client.create(
175
+ automation_node_id=automation_node_id,
176
+ campaign_id=campaign_id,
177
+ confirm_live_change=confirm_live_change,
178
+ name=name,
179
+ test_duration_minutes=test_duration_minutes,
180
+ test_percentage=test_percentage,
181
+ test_type=test_type,
182
+ variants=variants,
183
+ winner_criteria=winner_criteria,
184
+ winner_threshold=winner_threshold,
185
+ request_options=request_options,
186
+ )
187
+ return _response.data
188
+
189
+ def delete(
190
+ self, ab_test_id: str, *, request_options: typing.Optional[RequestOptions] = None
191
+ ) -> DeleteAbTestsResponse:
192
+ """
193
+ Deletes a campaign A/B test and its variants. Running tests cannot be deleted, and the linked campaign must be in draft or rejected status.
194
+
195
+ Parameters
196
+ ----------
197
+ ab_test_id : str
198
+ A/B test ID.
199
+
200
+ request_options : typing.Optional[RequestOptions]
201
+ Request-specific configuration.
202
+
203
+ Returns
204
+ -------
205
+ DeleteAbTestsResponse
206
+ A/B test deleted
207
+
208
+ Examples
209
+ --------
210
+ from sequenzy import Sequenzy
211
+
212
+ client = Sequenzy(
213
+ api_key="YOUR_API_KEY",
214
+ )
215
+ client.ab_tests.delete(
216
+ ab_test_id="abTestId",
217
+ )
218
+ """
219
+ _response = self._raw_client.delete(ab_test_id, request_options=request_options)
220
+ return _response.data
221
+
222
+ def delete_variant(
223
+ self,
224
+ ab_test_id: str,
225
+ variant_id: str,
226
+ *,
227
+ confirm_live_change: typing.Optional[bool] = None,
228
+ request_options: typing.Optional[RequestOptions] = None,
229
+ ) -> DeleteVariantAbTestsResponse:
230
+ """
231
+ Removes a variant from a draft campaign or sequence A/B test. The control variant A cannot be deleted, and at least 2 variants must remain. Deleting a sequence variant also deletes its dedicated email template; sequence tests whose parent sequence is active require confirmLiveChange.
232
+
233
+ Parameters
234
+ ----------
235
+ ab_test_id : str
236
+ A/B test ID.
237
+
238
+ variant_id : str
239
+ Variant ID.
240
+
241
+ confirm_live_change : typing.Optional[bool]
242
+ Required as true when the A/B test belongs to an active sequence, because deletion immediately changes the live rotation.
243
+
244
+ request_options : typing.Optional[RequestOptions]
245
+ Request-specific configuration.
246
+
247
+ Returns
248
+ -------
249
+ DeleteVariantAbTestsResponse
250
+ Variant deleted
251
+
252
+ Examples
253
+ --------
254
+ from sequenzy import Sequenzy
255
+
256
+ client = Sequenzy(
257
+ api_key="YOUR_API_KEY",
258
+ )
259
+ client.ab_tests.delete_variant(
260
+ ab_test_id="abTestId",
261
+ variant_id="variantId",
262
+ )
263
+ """
264
+ _response = self._raw_client.delete_variant(
265
+ ab_test_id, variant_id, confirm_live_change=confirm_live_change, request_options=request_options
266
+ )
267
+ return _response.data
268
+
269
+ def get(self, ab_test_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> GetAbTestsResponse:
270
+ """
271
+ Returns one A/B test with variants and variant localization status.
272
+
273
+ Parameters
274
+ ----------
275
+ ab_test_id : str
276
+ A/B test ID.
277
+
278
+ request_options : typing.Optional[RequestOptions]
279
+ Request-specific configuration.
280
+
281
+ Returns
282
+ -------
283
+ GetAbTestsResponse
284
+ A/B test returned
285
+
286
+ Examples
287
+ --------
288
+ from sequenzy import Sequenzy
289
+
290
+ client = Sequenzy(
291
+ api_key="YOUR_API_KEY",
292
+ )
293
+ client.ab_tests.get(
294
+ ab_test_id="abTestId",
295
+ )
296
+ """
297
+ _response = self._raw_client.get(ab_test_id, request_options=request_options)
298
+ return _response.data
299
+
300
+ def get_stats(
301
+ self,
302
+ ab_test_id: str,
303
+ *,
304
+ end: typing.Optional[dt.datetime] = None,
305
+ include_machine_engagement: typing.Optional[bool] = None,
306
+ period: typing.Optional[GetStatsAbTestsRequestPeriod] = None,
307
+ start: typing.Optional[dt.datetime] = None,
308
+ request_options: typing.Optional[RequestOptions] = None,
309
+ ) -> GetStatsAbTestsResponse:
310
+ """
311
+ Returns aggregate and per-variant engagement stats for an A/B test.
312
+
313
+ Parameters
314
+ ----------
315
+ ab_test_id : str
316
+ A/B test ID.
317
+
318
+ end : typing.Optional[dt.datetime]
319
+ Custom range end. Requires start.
320
+
321
+ include_machine_engagement : typing.Optional[bool]
322
+ Include detected scanner, preview, and tracked asset open/click events.
323
+
324
+ period : typing.Optional[GetStatsAbTestsRequestPeriod]
325
+ Optional period filter.
326
+
327
+ start : typing.Optional[dt.datetime]
328
+ Custom range start. Requires end.
329
+
330
+ request_options : typing.Optional[RequestOptions]
331
+ Request-specific configuration.
332
+
333
+ Returns
334
+ -------
335
+ GetStatsAbTestsResponse
336
+ A/B test stats returned
337
+
338
+ Examples
339
+ --------
340
+ from sequenzy import Sequenzy
341
+
342
+ client = Sequenzy(
343
+ api_key="YOUR_API_KEY",
344
+ )
345
+ client.ab_tests.get_stats(
346
+ ab_test_id="abTestId",
347
+ )
348
+ """
349
+ _response = self._raw_client.get_stats(
350
+ ab_test_id,
351
+ end=end,
352
+ include_machine_engagement=include_machine_engagement,
353
+ period=period,
354
+ start=start,
355
+ request_options=request_options,
356
+ )
357
+ return _response.data
358
+
359
+ def list(
360
+ self, *, sequence_id: typing.Optional[str] = None, request_options: typing.Optional[RequestOptions] = None
361
+ ) -> ListAbTestsResponse:
362
+ """
363
+ Lists A/B tests and variants for the authenticated company, optionally filtered by sequence.
364
+
365
+ Parameters
366
+ ----------
367
+ sequence_id : typing.Optional[str]
368
+ Optional sequence ID filter for automation A/B tests.
369
+
370
+ request_options : typing.Optional[RequestOptions]
371
+ Request-specific configuration.
372
+
373
+ Returns
374
+ -------
375
+ ListAbTestsResponse
376
+ A/B tests returned
377
+
378
+ Examples
379
+ --------
380
+ from sequenzy import Sequenzy
381
+
382
+ client = Sequenzy(
383
+ api_key="YOUR_API_KEY",
384
+ )
385
+ client.ab_tests.list()
386
+ """
387
+ _response = self._raw_client.list(sequence_id=sequence_id, request_options=request_options)
388
+ return _response.data
389
+
390
+ def restart(
391
+ self,
392
+ ab_test_id: str,
393
+ *,
394
+ source_variant_id: typing.Optional[str] = OMIT,
395
+ test_type: typing.Optional[RestartAbTestsRequestTestType] = OMIT,
396
+ variant_count: typing.Optional[int] = OMIT,
397
+ winner_threshold: typing.Optional[int] = OMIT,
398
+ request_options: typing.Optional[RequestOptions] = None,
399
+ ) -> RestartAbTestsResponse:
400
+ """
401
+ Starts a new draft sequence A/B test from the selected control variant after a winner has been selected. The new test becomes active after generated variants are ready.
402
+
403
+ Parameters
404
+ ----------
405
+ ab_test_id : str
406
+ A/B test ID to restart.
407
+
408
+ source_variant_id : typing.Optional[str]
409
+ Variant ID to use as the new control email. Defaults to the selected winner.
410
+
411
+ test_type : typing.Optional[RestartAbTestsRequestTestType]
412
+ Test type for generated variants.
413
+
414
+ variant_count : typing.Optional[int]
415
+ Total variants including the control.
416
+
417
+ winner_threshold : typing.Optional[int]
418
+ Subscribers before selecting a winner.
419
+
420
+ request_options : typing.Optional[RequestOptions]
421
+ Request-specific configuration.
422
+
423
+ Returns
424
+ -------
425
+ RestartAbTestsResponse
426
+ A/B test restarted
427
+
428
+ Examples
429
+ --------
430
+ from sequenzy import Sequenzy
431
+
432
+ client = Sequenzy(
433
+ api_key="YOUR_API_KEY",
434
+ )
435
+ client.ab_tests.restart(
436
+ ab_test_id="abTestId",
437
+ )
438
+ """
439
+ _response = self._raw_client.restart(
440
+ ab_test_id,
441
+ source_variant_id=source_variant_id,
442
+ test_type=test_type,
443
+ variant_count=variant_count,
444
+ winner_threshold=winner_threshold,
445
+ request_options=request_options,
446
+ )
447
+ return _response.data
448
+
449
+ def update(
450
+ self,
451
+ ab_test_id: str,
452
+ *,
453
+ confirm_live_change: typing.Optional[bool] = OMIT,
454
+ name: typing.Optional[str] = OMIT,
455
+ test_duration_minutes: typing.Optional[int] = OMIT,
456
+ test_percentage: typing.Optional[int] = OMIT,
457
+ test_type: typing.Optional[UpdateAbTestsRequestTestType] = OMIT,
458
+ winner_criteria: typing.Optional[UpdateAbTestsRequestWinnerCriteria] = OMIT,
459
+ winner_threshold: typing.Optional[int] = OMIT,
460
+ request_options: typing.Optional[RequestOptions] = None,
461
+ ) -> UpdateAbTestsResponse:
462
+ """
463
+ Updates a draft campaign test or the effective settings for a sequence test. Campaigns use testPercentage and testDurationMinutes; sequences use testType and winnerThreshold. Sequence changes that affect a live or already-used test require confirmLiveChange.
464
+
465
+ Parameters
466
+ ----------
467
+ ab_test_id : str
468
+ A/B test ID.
469
+
470
+ confirm_live_change : typing.Optional[bool]
471
+ Required when sequence settings affect an active test or a test with recorded activity.
472
+
473
+ name : typing.Optional[str]
474
+
475
+ test_duration_minutes : typing.Optional[int]
476
+ Campaign-only test duration.
477
+
478
+ test_percentage : typing.Optional[int]
479
+ Campaign-only test audience percentage.
480
+
481
+ test_type : typing.Optional[UpdateAbTestsRequestTestType]
482
+ Sequence-only variant strategy.
483
+
484
+ winner_criteria : typing.Optional[UpdateAbTestsRequestWinnerCriteria]
485
+ Winner metric for campaign or sequence tests.
486
+
487
+ winner_threshold : typing.Optional[int]
488
+ Sequence-only recipient threshold.
489
+
490
+ request_options : typing.Optional[RequestOptions]
491
+ Request-specific configuration.
492
+
493
+ Returns
494
+ -------
495
+ UpdateAbTestsResponse
496
+ A/B test settings updated
497
+
498
+ Examples
499
+ --------
500
+ from sequenzy import Sequenzy
501
+
502
+ client = Sequenzy(
503
+ api_key="YOUR_API_KEY",
504
+ )
505
+ client.ab_tests.update(
506
+ ab_test_id="abTestId",
507
+ )
508
+ """
509
+ _response = self._raw_client.update(
510
+ ab_test_id,
511
+ confirm_live_change=confirm_live_change,
512
+ name=name,
513
+ test_duration_minutes=test_duration_minutes,
514
+ test_percentage=test_percentage,
515
+ test_type=test_type,
516
+ winner_criteria=winner_criteria,
517
+ winner_threshold=winner_threshold,
518
+ request_options=request_options,
519
+ )
520
+ return _response.data
521
+
522
+ def update_variant(
523
+ self,
524
+ ab_test_id: str,
525
+ variant_id: str,
526
+ *,
527
+ confirm_live_change: typing.Optional[bool] = OMIT,
528
+ preview_text: typing.Optional[str] = OMIT,
529
+ subject: typing.Optional[str] = OMIT,
530
+ blocks: typing.Optional[typing.Sequence[EmailBlock]] = OMIT,
531
+ html: typing.Optional[str] = OMIT,
532
+ request_options: typing.Optional[RequestOptions] = None,
533
+ ) -> UpdateVariantAbTestsResponse:
534
+ """
535
+ Updates an A/B test variant's subject, preview text, or body content. Campaign variants remain editable only while the test is in draft. Sequence variants can be edited later with confirmLiveChange when the sequence is active, the test is no longer a draft, or the test has recorded activity; earlier sends remain unchanged, so combined results may no longer be accurate.
536
+
537
+ Parameters
538
+ ----------
539
+ ab_test_id : str
540
+ A/B test ID.
541
+
542
+ variant_id : str
543
+ Variant ID.
544
+
545
+ confirm_live_change : typing.Optional[bool]
546
+ Required as true when the sequence is active, the test is no longer a draft, or the test has recorded activity. Earlier sends remain unchanged, so combined results may no longer be accurate.
547
+
548
+ preview_text : typing.Optional[str]
549
+
550
+ subject : typing.Optional[str]
551
+
552
+ blocks : typing.Optional[typing.Sequence[EmailBlock]]
553
+ Structured email blocks. Provide either blocks or html, not both. Put visual styling under styles; top-level style keys such as backgroundColor, backgroundOpacity, borderColor, borderWidth, and borderRadius are normalized into styles.
554
+
555
+ html : typing.Optional[str]
556
+ Raw HTML body. Provide either html or blocks, not both.
557
+
558
+ request_options : typing.Optional[RequestOptions]
559
+ Request-specific configuration.
560
+
561
+ Returns
562
+ -------
563
+ UpdateVariantAbTestsResponse
564
+ Variant updated
565
+
566
+ Examples
567
+ --------
568
+ from sequenzy import Sequenzy
569
+
570
+ client = Sequenzy(
571
+ api_key="YOUR_API_KEY",
572
+ )
573
+ client.ab_tests.update_variant(
574
+ ab_test_id="abTestId",
575
+ variant_id="variantId",
576
+ )
577
+ """
578
+ _response = self._raw_client.update_variant(
579
+ ab_test_id,
580
+ variant_id,
581
+ confirm_live_change=confirm_live_change,
582
+ preview_text=preview_text,
583
+ subject=subject,
584
+ blocks=blocks,
585
+ html=html,
586
+ request_options=request_options,
587
+ )
588
+ return _response.data
589
+
590
+
591
+ class AsyncAbTestsClient:
592
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
593
+ self._raw_client = AsyncRawAbTestsClient(client_wrapper=client_wrapper)
594
+
595
+ @property
596
+ def with_raw_response(self) -> AsyncRawAbTestsClient:
597
+ """
598
+ Retrieves a raw implementation of this client that returns raw responses.
599
+
600
+ Returns
601
+ -------
602
+ AsyncRawAbTestsClient
603
+ """
604
+ return self._raw_client
605
+
606
+ async def add_variant(
607
+ self,
608
+ ab_test_id: str,
609
+ *,
610
+ subject: str,
611
+ blocks: typing.Optional[typing.Sequence[EmailBlock]] = OMIT,
612
+ confirm_live_change: typing.Optional[bool] = OMIT,
613
+ preview_text: typing.Optional[str] = OMIT,
614
+ request_options: typing.Optional[RequestOptions] = None,
615
+ ) -> AddVariantAbTestsResponse:
616
+ """
617
+ Adds a variant to a draft campaign or sequence A/B test. Sequence variants receive an independent email template. The body defaults to the control email when blocks are omitted. Sequence tests whose parent sequence is active require confirmLiveChange.
618
+
619
+ Parameters
620
+ ----------
621
+ ab_test_id : str
622
+ A/B test ID.
623
+
624
+ subject : str
625
+ Variant subject line.
626
+
627
+ blocks : typing.Optional[typing.Sequence[EmailBlock]]
628
+ Variant body blocks. Defaults to the campaign or sequence control email blocks.
629
+
630
+ confirm_live_change : typing.Optional[bool]
631
+ Required as true when the A/B test belongs to an active sequence, because new variants immediately enter the live rotation.
632
+
633
+ preview_text : typing.Optional[str]
634
+ Variant preview text.
635
+
636
+ request_options : typing.Optional[RequestOptions]
637
+ Request-specific configuration.
638
+
639
+ Returns
640
+ -------
641
+ AddVariantAbTestsResponse
642
+ Variant added
643
+
644
+ Examples
645
+ --------
646
+ import asyncio
647
+
648
+ from sequenzy import AsyncSequenzy
649
+
650
+ client = AsyncSequenzy(
651
+ api_key="YOUR_API_KEY",
652
+ )
653
+
654
+
655
+ async def main() -> None:
656
+ await client.ab_tests.add_variant(
657
+ ab_test_id="abTestId",
658
+ subject="subject",
659
+ )
660
+
661
+
662
+ asyncio.run(main())
663
+ """
664
+ _response = await self._raw_client.add_variant(
665
+ ab_test_id,
666
+ subject=subject,
667
+ blocks=blocks,
668
+ confirm_live_change=confirm_live_change,
669
+ preview_text=preview_text,
670
+ request_options=request_options,
671
+ )
672
+ return _response.data
673
+
674
+ async def create(
675
+ self,
676
+ *,
677
+ automation_node_id: typing.Optional[str] = OMIT,
678
+ campaign_id: typing.Optional[str] = OMIT,
679
+ confirm_live_change: typing.Optional[bool] = OMIT,
680
+ name: typing.Optional[str] = OMIT,
681
+ test_duration_minutes: typing.Optional[int] = OMIT,
682
+ test_percentage: typing.Optional[int] = OMIT,
683
+ test_type: typing.Optional[CreateAbTestsRequestTestType] = OMIT,
684
+ variants: typing.Optional[typing.Sequence[CreateAbTestsRequestVariantsItem]] = OMIT,
685
+ winner_criteria: typing.Optional[CreateAbTestsRequestWinnerCriteria] = OMIT,
686
+ winner_threshold: typing.Optional[int] = OMIT,
687
+ request_options: typing.Optional[RequestOptions] = None,
688
+ ) -> CreateAbTestsResponse:
689
+ """
690
+ Creates a draft campaign A/B test or converts a sequence email node to action_ab_test. Provide exactly one owner. Variant A is copied into an independent email for sequences; sequence conversions require at least one extra variant.
691
+
692
+ Parameters
693
+ ----------
694
+ automation_node_id : typing.Optional[str]
695
+ Sequence action_email node to convert. Mutually exclusive with campaignId.
696
+
697
+ campaign_id : typing.Optional[str]
698
+ Campaign to attach the test to. Must be in draft or rejected status. Mutually exclusive with automationNodeId.
699
+
700
+ confirm_live_change : typing.Optional[bool]
701
+ Must be true when converting an email node in an active sequence.
702
+
703
+ name : typing.Optional[str]
704
+ Test name. Defaults to "A/B Test for <campaign name>".
705
+
706
+ test_duration_minutes : typing.Optional[int]
707
+ Campaign-only duration before winner selection. Sequence tests select after winnerThreshold recipients.
708
+
709
+ test_percentage : typing.Optional[int]
710
+ Campaign-only share of the audience that receives test sends. Sequence tests use winnerThreshold.
711
+
712
+ test_type : typing.Optional[CreateAbTestsRequestTestType]
713
+ Sequence variant strategy. Subject defaults to open_rate and content defaults to click_rate unless winnerCriteria is explicit.
714
+
715
+ variants : typing.Optional[typing.Sequence[CreateAbTestsRequestVariantsItem]]
716
+ Extra variants beyond the control. Required (min 1) when converting with automationNodeId. Total variants cannot exceed 5.
717
+
718
+ winner_criteria : typing.Optional[CreateAbTestsRequestWinnerCriteria]
719
+ Metric used to pick the winner. For sequence tests, an explicit value overrides the testType default.
720
+
721
+ winner_threshold : typing.Optional[int]
722
+ Number of sequence recipients in the test sample.
723
+
724
+ request_options : typing.Optional[RequestOptions]
725
+ Request-specific configuration.
726
+
727
+ Returns
728
+ -------
729
+ CreateAbTestsResponse
730
+ A/B test created
731
+
732
+ Examples
733
+ --------
734
+ import asyncio
735
+
736
+ from sequenzy import AsyncSequenzy
737
+
738
+ client = AsyncSequenzy(
739
+ api_key="YOUR_API_KEY",
740
+ )
741
+
742
+
743
+ async def main() -> None:
744
+ await client.ab_tests.create()
745
+
746
+
747
+ asyncio.run(main())
748
+ """
749
+ _response = await self._raw_client.create(
750
+ automation_node_id=automation_node_id,
751
+ campaign_id=campaign_id,
752
+ confirm_live_change=confirm_live_change,
753
+ name=name,
754
+ test_duration_minutes=test_duration_minutes,
755
+ test_percentage=test_percentage,
756
+ test_type=test_type,
757
+ variants=variants,
758
+ winner_criteria=winner_criteria,
759
+ winner_threshold=winner_threshold,
760
+ request_options=request_options,
761
+ )
762
+ return _response.data
763
+
764
+ async def delete(
765
+ self, ab_test_id: str, *, request_options: typing.Optional[RequestOptions] = None
766
+ ) -> DeleteAbTestsResponse:
767
+ """
768
+ Deletes a campaign A/B test and its variants. Running tests cannot be deleted, and the linked campaign must be in draft or rejected status.
769
+
770
+ Parameters
771
+ ----------
772
+ ab_test_id : str
773
+ A/B test ID.
774
+
775
+ request_options : typing.Optional[RequestOptions]
776
+ Request-specific configuration.
777
+
778
+ Returns
779
+ -------
780
+ DeleteAbTestsResponse
781
+ A/B test deleted
782
+
783
+ Examples
784
+ --------
785
+ import asyncio
786
+
787
+ from sequenzy import AsyncSequenzy
788
+
789
+ client = AsyncSequenzy(
790
+ api_key="YOUR_API_KEY",
791
+ )
792
+
793
+
794
+ async def main() -> None:
795
+ await client.ab_tests.delete(
796
+ ab_test_id="abTestId",
797
+ )
798
+
799
+
800
+ asyncio.run(main())
801
+ """
802
+ _response = await self._raw_client.delete(ab_test_id, request_options=request_options)
803
+ return _response.data
804
+
805
+ async def delete_variant(
806
+ self,
807
+ ab_test_id: str,
808
+ variant_id: str,
809
+ *,
810
+ confirm_live_change: typing.Optional[bool] = None,
811
+ request_options: typing.Optional[RequestOptions] = None,
812
+ ) -> DeleteVariantAbTestsResponse:
813
+ """
814
+ Removes a variant from a draft campaign or sequence A/B test. The control variant A cannot be deleted, and at least 2 variants must remain. Deleting a sequence variant also deletes its dedicated email template; sequence tests whose parent sequence is active require confirmLiveChange.
815
+
816
+ Parameters
817
+ ----------
818
+ ab_test_id : str
819
+ A/B test ID.
820
+
821
+ variant_id : str
822
+ Variant ID.
823
+
824
+ confirm_live_change : typing.Optional[bool]
825
+ Required as true when the A/B test belongs to an active sequence, because deletion immediately changes the live rotation.
826
+
827
+ request_options : typing.Optional[RequestOptions]
828
+ Request-specific configuration.
829
+
830
+ Returns
831
+ -------
832
+ DeleteVariantAbTestsResponse
833
+ Variant deleted
834
+
835
+ Examples
836
+ --------
837
+ import asyncio
838
+
839
+ from sequenzy import AsyncSequenzy
840
+
841
+ client = AsyncSequenzy(
842
+ api_key="YOUR_API_KEY",
843
+ )
844
+
845
+
846
+ async def main() -> None:
847
+ await client.ab_tests.delete_variant(
848
+ ab_test_id="abTestId",
849
+ variant_id="variantId",
850
+ )
851
+
852
+
853
+ asyncio.run(main())
854
+ """
855
+ _response = await self._raw_client.delete_variant(
856
+ ab_test_id, variant_id, confirm_live_change=confirm_live_change, request_options=request_options
857
+ )
858
+ return _response.data
859
+
860
+ async def get(
861
+ self, ab_test_id: str, *, request_options: typing.Optional[RequestOptions] = None
862
+ ) -> GetAbTestsResponse:
863
+ """
864
+ Returns one A/B test with variants and variant localization status.
865
+
866
+ Parameters
867
+ ----------
868
+ ab_test_id : str
869
+ A/B test ID.
870
+
871
+ request_options : typing.Optional[RequestOptions]
872
+ Request-specific configuration.
873
+
874
+ Returns
875
+ -------
876
+ GetAbTestsResponse
877
+ A/B test returned
878
+
879
+ Examples
880
+ --------
881
+ import asyncio
882
+
883
+ from sequenzy import AsyncSequenzy
884
+
885
+ client = AsyncSequenzy(
886
+ api_key="YOUR_API_KEY",
887
+ )
888
+
889
+
890
+ async def main() -> None:
891
+ await client.ab_tests.get(
892
+ ab_test_id="abTestId",
893
+ )
894
+
895
+
896
+ asyncio.run(main())
897
+ """
898
+ _response = await self._raw_client.get(ab_test_id, request_options=request_options)
899
+ return _response.data
900
+
901
+ async def get_stats(
902
+ self,
903
+ ab_test_id: str,
904
+ *,
905
+ end: typing.Optional[dt.datetime] = None,
906
+ include_machine_engagement: typing.Optional[bool] = None,
907
+ period: typing.Optional[GetStatsAbTestsRequestPeriod] = None,
908
+ start: typing.Optional[dt.datetime] = None,
909
+ request_options: typing.Optional[RequestOptions] = None,
910
+ ) -> GetStatsAbTestsResponse:
911
+ """
912
+ Returns aggregate and per-variant engagement stats for an A/B test.
913
+
914
+ Parameters
915
+ ----------
916
+ ab_test_id : str
917
+ A/B test ID.
918
+
919
+ end : typing.Optional[dt.datetime]
920
+ Custom range end. Requires start.
921
+
922
+ include_machine_engagement : typing.Optional[bool]
923
+ Include detected scanner, preview, and tracked asset open/click events.
924
+
925
+ period : typing.Optional[GetStatsAbTestsRequestPeriod]
926
+ Optional period filter.
927
+
928
+ start : typing.Optional[dt.datetime]
929
+ Custom range start. Requires end.
930
+
931
+ request_options : typing.Optional[RequestOptions]
932
+ Request-specific configuration.
933
+
934
+ Returns
935
+ -------
936
+ GetStatsAbTestsResponse
937
+ A/B test stats returned
938
+
939
+ Examples
940
+ --------
941
+ import asyncio
942
+
943
+ from sequenzy import AsyncSequenzy
944
+
945
+ client = AsyncSequenzy(
946
+ api_key="YOUR_API_KEY",
947
+ )
948
+
949
+
950
+ async def main() -> None:
951
+ await client.ab_tests.get_stats(
952
+ ab_test_id="abTestId",
953
+ )
954
+
955
+
956
+ asyncio.run(main())
957
+ """
958
+ _response = await self._raw_client.get_stats(
959
+ ab_test_id,
960
+ end=end,
961
+ include_machine_engagement=include_machine_engagement,
962
+ period=period,
963
+ start=start,
964
+ request_options=request_options,
965
+ )
966
+ return _response.data
967
+
968
+ async def list(
969
+ self, *, sequence_id: typing.Optional[str] = None, request_options: typing.Optional[RequestOptions] = None
970
+ ) -> ListAbTestsResponse:
971
+ """
972
+ Lists A/B tests and variants for the authenticated company, optionally filtered by sequence.
973
+
974
+ Parameters
975
+ ----------
976
+ sequence_id : typing.Optional[str]
977
+ Optional sequence ID filter for automation A/B tests.
978
+
979
+ request_options : typing.Optional[RequestOptions]
980
+ Request-specific configuration.
981
+
982
+ Returns
983
+ -------
984
+ ListAbTestsResponse
985
+ A/B tests returned
986
+
987
+ Examples
988
+ --------
989
+ import asyncio
990
+
991
+ from sequenzy import AsyncSequenzy
992
+
993
+ client = AsyncSequenzy(
994
+ api_key="YOUR_API_KEY",
995
+ )
996
+
997
+
998
+ async def main() -> None:
999
+ await client.ab_tests.list()
1000
+
1001
+
1002
+ asyncio.run(main())
1003
+ """
1004
+ _response = await self._raw_client.list(sequence_id=sequence_id, request_options=request_options)
1005
+ return _response.data
1006
+
1007
+ async def restart(
1008
+ self,
1009
+ ab_test_id: str,
1010
+ *,
1011
+ source_variant_id: typing.Optional[str] = OMIT,
1012
+ test_type: typing.Optional[RestartAbTestsRequestTestType] = OMIT,
1013
+ variant_count: typing.Optional[int] = OMIT,
1014
+ winner_threshold: typing.Optional[int] = OMIT,
1015
+ request_options: typing.Optional[RequestOptions] = None,
1016
+ ) -> RestartAbTestsResponse:
1017
+ """
1018
+ Starts a new draft sequence A/B test from the selected control variant after a winner has been selected. The new test becomes active after generated variants are ready.
1019
+
1020
+ Parameters
1021
+ ----------
1022
+ ab_test_id : str
1023
+ A/B test ID to restart.
1024
+
1025
+ source_variant_id : typing.Optional[str]
1026
+ Variant ID to use as the new control email. Defaults to the selected winner.
1027
+
1028
+ test_type : typing.Optional[RestartAbTestsRequestTestType]
1029
+ Test type for generated variants.
1030
+
1031
+ variant_count : typing.Optional[int]
1032
+ Total variants including the control.
1033
+
1034
+ winner_threshold : typing.Optional[int]
1035
+ Subscribers before selecting a winner.
1036
+
1037
+ request_options : typing.Optional[RequestOptions]
1038
+ Request-specific configuration.
1039
+
1040
+ Returns
1041
+ -------
1042
+ RestartAbTestsResponse
1043
+ A/B test restarted
1044
+
1045
+ Examples
1046
+ --------
1047
+ import asyncio
1048
+
1049
+ from sequenzy import AsyncSequenzy
1050
+
1051
+ client = AsyncSequenzy(
1052
+ api_key="YOUR_API_KEY",
1053
+ )
1054
+
1055
+
1056
+ async def main() -> None:
1057
+ await client.ab_tests.restart(
1058
+ ab_test_id="abTestId",
1059
+ )
1060
+
1061
+
1062
+ asyncio.run(main())
1063
+ """
1064
+ _response = await self._raw_client.restart(
1065
+ ab_test_id,
1066
+ source_variant_id=source_variant_id,
1067
+ test_type=test_type,
1068
+ variant_count=variant_count,
1069
+ winner_threshold=winner_threshold,
1070
+ request_options=request_options,
1071
+ )
1072
+ return _response.data
1073
+
1074
+ async def update(
1075
+ self,
1076
+ ab_test_id: str,
1077
+ *,
1078
+ confirm_live_change: typing.Optional[bool] = OMIT,
1079
+ name: typing.Optional[str] = OMIT,
1080
+ test_duration_minutes: typing.Optional[int] = OMIT,
1081
+ test_percentage: typing.Optional[int] = OMIT,
1082
+ test_type: typing.Optional[UpdateAbTestsRequestTestType] = OMIT,
1083
+ winner_criteria: typing.Optional[UpdateAbTestsRequestWinnerCriteria] = OMIT,
1084
+ winner_threshold: typing.Optional[int] = OMIT,
1085
+ request_options: typing.Optional[RequestOptions] = None,
1086
+ ) -> UpdateAbTestsResponse:
1087
+ """
1088
+ Updates a draft campaign test or the effective settings for a sequence test. Campaigns use testPercentage and testDurationMinutes; sequences use testType and winnerThreshold. Sequence changes that affect a live or already-used test require confirmLiveChange.
1089
+
1090
+ Parameters
1091
+ ----------
1092
+ ab_test_id : str
1093
+ A/B test ID.
1094
+
1095
+ confirm_live_change : typing.Optional[bool]
1096
+ Required when sequence settings affect an active test or a test with recorded activity.
1097
+
1098
+ name : typing.Optional[str]
1099
+
1100
+ test_duration_minutes : typing.Optional[int]
1101
+ Campaign-only test duration.
1102
+
1103
+ test_percentage : typing.Optional[int]
1104
+ Campaign-only test audience percentage.
1105
+
1106
+ test_type : typing.Optional[UpdateAbTestsRequestTestType]
1107
+ Sequence-only variant strategy.
1108
+
1109
+ winner_criteria : typing.Optional[UpdateAbTestsRequestWinnerCriteria]
1110
+ Winner metric for campaign or sequence tests.
1111
+
1112
+ winner_threshold : typing.Optional[int]
1113
+ Sequence-only recipient threshold.
1114
+
1115
+ request_options : typing.Optional[RequestOptions]
1116
+ Request-specific configuration.
1117
+
1118
+ Returns
1119
+ -------
1120
+ UpdateAbTestsResponse
1121
+ A/B test settings updated
1122
+
1123
+ Examples
1124
+ --------
1125
+ import asyncio
1126
+
1127
+ from sequenzy import AsyncSequenzy
1128
+
1129
+ client = AsyncSequenzy(
1130
+ api_key="YOUR_API_KEY",
1131
+ )
1132
+
1133
+
1134
+ async def main() -> None:
1135
+ await client.ab_tests.update(
1136
+ ab_test_id="abTestId",
1137
+ )
1138
+
1139
+
1140
+ asyncio.run(main())
1141
+ """
1142
+ _response = await self._raw_client.update(
1143
+ ab_test_id,
1144
+ confirm_live_change=confirm_live_change,
1145
+ name=name,
1146
+ test_duration_minutes=test_duration_minutes,
1147
+ test_percentage=test_percentage,
1148
+ test_type=test_type,
1149
+ winner_criteria=winner_criteria,
1150
+ winner_threshold=winner_threshold,
1151
+ request_options=request_options,
1152
+ )
1153
+ return _response.data
1154
+
1155
+ async def update_variant(
1156
+ self,
1157
+ ab_test_id: str,
1158
+ variant_id: str,
1159
+ *,
1160
+ confirm_live_change: typing.Optional[bool] = OMIT,
1161
+ preview_text: typing.Optional[str] = OMIT,
1162
+ subject: typing.Optional[str] = OMIT,
1163
+ blocks: typing.Optional[typing.Sequence[EmailBlock]] = OMIT,
1164
+ html: typing.Optional[str] = OMIT,
1165
+ request_options: typing.Optional[RequestOptions] = None,
1166
+ ) -> UpdateVariantAbTestsResponse:
1167
+ """
1168
+ Updates an A/B test variant's subject, preview text, or body content. Campaign variants remain editable only while the test is in draft. Sequence variants can be edited later with confirmLiveChange when the sequence is active, the test is no longer a draft, or the test has recorded activity; earlier sends remain unchanged, so combined results may no longer be accurate.
1169
+
1170
+ Parameters
1171
+ ----------
1172
+ ab_test_id : str
1173
+ A/B test ID.
1174
+
1175
+ variant_id : str
1176
+ Variant ID.
1177
+
1178
+ confirm_live_change : typing.Optional[bool]
1179
+ Required as true when the sequence is active, the test is no longer a draft, or the test has recorded activity. Earlier sends remain unchanged, so combined results may no longer be accurate.
1180
+
1181
+ preview_text : typing.Optional[str]
1182
+
1183
+ subject : typing.Optional[str]
1184
+
1185
+ blocks : typing.Optional[typing.Sequence[EmailBlock]]
1186
+ Structured email blocks. Provide either blocks or html, not both. Put visual styling under styles; top-level style keys such as backgroundColor, backgroundOpacity, borderColor, borderWidth, and borderRadius are normalized into styles.
1187
+
1188
+ html : typing.Optional[str]
1189
+ Raw HTML body. Provide either html or blocks, not both.
1190
+
1191
+ request_options : typing.Optional[RequestOptions]
1192
+ Request-specific configuration.
1193
+
1194
+ Returns
1195
+ -------
1196
+ UpdateVariantAbTestsResponse
1197
+ Variant updated
1198
+
1199
+ Examples
1200
+ --------
1201
+ import asyncio
1202
+
1203
+ from sequenzy import AsyncSequenzy
1204
+
1205
+ client = AsyncSequenzy(
1206
+ api_key="YOUR_API_KEY",
1207
+ )
1208
+
1209
+
1210
+ async def main() -> None:
1211
+ await client.ab_tests.update_variant(
1212
+ ab_test_id="abTestId",
1213
+ variant_id="variantId",
1214
+ )
1215
+
1216
+
1217
+ asyncio.run(main())
1218
+ """
1219
+ _response = await self._raw_client.update_variant(
1220
+ ab_test_id,
1221
+ variant_id,
1222
+ confirm_live_change=confirm_live_change,
1223
+ preview_text=preview_text,
1224
+ subject=subject,
1225
+ blocks=blocks,
1226
+ html=html,
1227
+ request_options=request_options,
1228
+ )
1229
+ return _response.data