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.
- sequenzy/.fern/metadata.json +12 -0
- sequenzy/__init__.py +3017 -0
- sequenzy/_default_clients.py +30 -0
- sequenzy/ab_tests/__init__.py +91 -0
- sequenzy/ab_tests/client.py +1229 -0
- sequenzy/ab_tests/raw_client.py +2275 -0
- sequenzy/ab_tests/types/__init__.py +89 -0
- sequenzy/ab_tests/types/add_variant_ab_tests_response.py +32 -0
- sequenzy/ab_tests/types/create_ab_tests_request_test_type.py +5 -0
- sequenzy/ab_tests/types/create_ab_tests_request_variants_item.py +32 -0
- sequenzy/ab_tests/types/create_ab_tests_request_winner_criteria.py +5 -0
- sequenzy/ab_tests/types/create_ab_tests_response.py +50 -0
- sequenzy/ab_tests/types/delete_ab_tests_response.py +19 -0
- sequenzy/ab_tests/types/delete_variant_ab_tests_response.py +30 -0
- sequenzy/ab_tests/types/get_ab_tests_response.py +30 -0
- sequenzy/ab_tests/types/get_stats_ab_tests_request_period.py +5 -0
- sequenzy/ab_tests/types/get_stats_ab_tests_response.py +31 -0
- sequenzy/ab_tests/types/get_stats_ab_tests_response_variants_item.py +27 -0
- sequenzy/ab_tests/types/list_ab_tests_response.py +30 -0
- sequenzy/ab_tests/types/restart_ab_tests_request_test_type.py +5 -0
- sequenzy/ab_tests/types/restart_ab_tests_response.py +41 -0
- sequenzy/ab_tests/types/update_ab_tests_request_test_type.py +5 -0
- sequenzy/ab_tests/types/update_ab_tests_request_winner_criteria.py +5 -0
- sequenzy/ab_tests/types/update_ab_tests_response.py +30 -0
- sequenzy/ab_tests/types/update_variant_ab_tests_response.py +28 -0
- sequenzy/account/__init__.py +103 -0
- sequenzy/account/client.py +646 -0
- sequenzy/account/raw_client.py +1257 -0
- sequenzy/account/types/__init__.py +103 -0
- sequenzy/account/types/create_api_key_request_preset.py +17 -0
- sequenzy/account/types/create_api_key_response.py +27 -0
- sequenzy/account/types/create_api_key_response_api_key.py +42 -0
- sequenzy/account/types/create_api_key_response_api_key_permissions.py +39 -0
- sequenzy/account/types/get_account_response.py +42 -0
- sequenzy/account/types/get_account_response_api_key_permissions.py +136 -0
- sequenzy/account/types/get_account_response_api_key_permissions_active_key.py +31 -0
- sequenzy/account/types/get_account_response_api_key_permissions_active_key_type.py +5 -0
- sequenzy/account/types/get_account_response_api_key_permissions_preset.py +18 -0
- sequenzy/account/types/get_account_response_companies_item.py +25 -0
- sequenzy/account/types/get_account_response_companies_item_role.py +5 -0
- sequenzy/account/types/get_account_response_user.py +19 -0
- sequenzy/account/types/get_integration_guide_response.py +23 -0
- sequenzy/account/types/list_api_keys_response.py +25 -0
- sequenzy/account/types/request_api_key_handoff_request_preset.py +17 -0
- sequenzy/account/types/request_api_key_handoff_response.py +27 -0
- sequenzy/account/types/request_api_key_handoff_response_handoff.py +81 -0
- sequenzy/account/types/request_api_key_handoff_response_handoff_key_type.py +5 -0
- sequenzy/account/types/request_api_key_handoff_response_handoff_replaces.py +30 -0
- sequenzy/account/types/revoke_api_key_response.py +24 -0
- sequenzy/account/types/update_api_key_request_preset.py +17 -0
- sequenzy/account/types/update_api_key_response.py +24 -0
- sequenzy/analytics/__init__.py +163 -0
- sequenzy/analytics/client.py +1896 -0
- sequenzy/analytics/raw_client.py +3036 -0
- sequenzy/analytics/types/__init__.py +167 -0
- sequenzy/analytics/types/get_campaign_metrics_request_period.py +5 -0
- sequenzy/analytics/types/get_campaign_metrics_response.py +67 -0
- sequenzy/analytics/types/get_campaign_stats_legacy_request_period.py +5 -0
- sequenzy/analytics/types/get_campaign_stats_legacy_response.py +63 -0
- sequenzy/analytics/types/get_metrics_request_email_type.py +5 -0
- sequenzy/analytics/types/get_metrics_request_period.py +5 -0
- sequenzy/analytics/types/get_metrics_response.py +76 -0
- sequenzy/analytics/types/get_metrics_response_email_type.py +5 -0
- sequenzy/analytics/types/get_recipients_request_period.py +5 -0
- sequenzy/analytics/types/get_recipients_response.py +23 -0
- sequenzy/analytics/types/get_recipients_response_recipients_item.py +24 -0
- sequenzy/analytics/types/get_recipients_response_recipients_item_clicked_item.py +41 -0
- sequenzy/analytics/types/get_recipients_response_recipients_item_clicked_item_engagement_quality.py +7 -0
- sequenzy/analytics/types/get_recipients_response_recipients_item_opened_item.py +40 -0
- sequenzy/analytics/types/get_recipients_response_recipients_item_opened_item_engagement_quality.py +7 -0
- sequenzy/analytics/types/get_sequence_metrics_request_period.py +5 -0
- sequenzy/analytics/types/get_sequence_metrics_response.py +58 -0
- sequenzy/analytics/types/get_sequence_metrics_response_enrollment_skipped.py +37 -0
- sequenzy/analytics/types/get_sequence_metrics_response_steps_item.py +61 -0
- sequenzy/analytics/types/get_sequence_metrics_response_steps_item_failed_subscribers_item.py +52 -0
- sequenzy/analytics/types/get_stats_legacy_request_email_type.py +5 -0
- sequenzy/analytics/types/get_stats_legacy_request_period.py +5 -0
- sequenzy/analytics/types/get_stats_legacy_response.py +52 -0
- sequenzy/analytics/types/get_stats_legacy_response_email_type.py +5 -0
- sequenzy/analytics/types/get_transactional_metrics_legacy_request_period.py +5 -0
- sequenzy/analytics/types/get_transactional_metrics_request_period.py +5 -0
- sequenzy/analytics/types/list_campaign_events_request_event_type.py +10 -0
- sequenzy/analytics/types/list_campaign_events_request_period.py +5 -0
- sequenzy/analytics/types/list_campaign_events_response.py +31 -0
- sequenzy/analytics/types/list_campaign_poll_responses_legacy_response.py +31 -0
- sequenzy/analytics/types/list_campaign_poll_responses_response.py +37 -0
- sequenzy/analytics/types/list_email_metrics_request_email_type.py +5 -0
- sequenzy/analytics/types/list_email_metrics_request_order.py +5 -0
- sequenzy/analytics/types/list_email_metrics_request_period.py +5 -0
- sequenzy/analytics/types/list_email_metrics_request_sort.py +20 -0
- sequenzy/analytics/types/list_email_metrics_response.py +55 -0
- sequenzy/analytics/types/list_email_metrics_response_email_type.py +5 -0
- sequenzy/analytics/types/list_email_metrics_response_emails_item.py +63 -0
- sequenzy/analytics/types/list_email_metrics_response_emails_item_email_type.py +5 -0
- sequenzy/analytics/types/list_sequence_events_request_event_type.py +10 -0
- sequenzy/analytics/types/list_sequence_events_request_period.py +5 -0
- sequenzy/analytics/types/list_sequence_events_response.py +36 -0
- sequenzy/audience_syncs/__init__.py +64 -0
- sequenzy/audience_syncs/client.py +484 -0
- sequenzy/audience_syncs/raw_client.py +954 -0
- sequenzy/audience_syncs/types/__init__.py +62 -0
- sequenzy/audience_syncs/types/create_audience_syncs_request.py +5 -0
- sequenzy/audience_syncs/types/create_audience_syncs_request_frequency.py +5 -0
- sequenzy/audience_syncs/types/create_audience_syncs_response.py +25 -0
- sequenzy/audience_syncs/types/delete_audience_syncs_response.py +19 -0
- sequenzy/audience_syncs/types/list_ad_accounts_response.py +25 -0
- sequenzy/audience_syncs/types/list_audience_syncs_response.py +27 -0
- sequenzy/audience_syncs/types/run_now_audience_syncs_response.py +20 -0
- sequenzy/audience_syncs/types/update_audience_syncs_request_frequency.py +5 -0
- sequenzy/audience_syncs/types/update_audience_syncs_response.py +25 -0
- sequenzy/campaigns/__init__.py +145 -0
- sequenzy/campaigns/client.py +2788 -0
- sequenzy/campaigns/raw_client.py +4803 -0
- sequenzy/campaigns/types/__init__.py +143 -0
- sequenzy/campaigns/types/cancel_campaigns_response.py +26 -0
- sequenzy/campaigns/types/create_campaigns_request_email_preset.py +5 -0
- sequenzy/campaigns/types/create_campaigns_request_status.py +5 -0
- sequenzy/campaigns/types/create_campaigns_response.py +23 -0
- sequenzy/campaigns/types/create_campaigns_response_campaign.py +98 -0
- sequenzy/campaigns/types/create_goal_campaigns_response.py +21 -0
- sequenzy/campaigns/types/create_share_link_campaigns_response.py +44 -0
- sequenzy/campaigns/types/delete_campaigns_response.py +19 -0
- sequenzy/campaigns/types/delete_goal_campaigns_response.py +24 -0
- sequenzy/campaigns/types/duplicate_campaigns_request_mode.py +5 -0
- sequenzy/campaigns/types/duplicate_campaigns_response.py +26 -0
- sequenzy/campaigns/types/duplicate_campaigns_response_campaign.py +245 -0
- sequenzy/campaigns/types/get_audience_campaigns_response.py +51 -0
- sequenzy/campaigns/types/get_campaigns_response.py +26 -0
- sequenzy/campaigns/types/list_campaigns_request_status.py +8 -0
- sequenzy/campaigns/types/list_campaigns_response.py +23 -0
- sequenzy/campaigns/types/list_campaigns_response_pagination.py +27 -0
- sequenzy/campaigns/types/list_goals_campaigns_response.py +21 -0
- sequenzy/campaigns/types/pause_campaigns_response.py +26 -0
- sequenzy/campaigns/types/preview_computed_data_campaigns_request_subscriber.py +36 -0
- sequenzy/campaigns/types/preview_computed_data_campaigns_response.py +22 -0
- sequenzy/campaigns/types/preview_computed_data_campaigns_response_lists_item.py +21 -0
- sequenzy/campaigns/types/resend_to_non_openers_campaigns_response.py +40 -0
- sequenzy/campaigns/types/resend_to_non_openers_campaigns_response_campaign.py +245 -0
- sequenzy/campaigns/types/resume_campaigns_response.py +26 -0
- sequenzy/campaigns/types/revoke_share_link_campaigns_response.py +24 -0
- sequenzy/campaigns/types/schedule_campaigns_request_recurring_interval.py +5 -0
- sequenzy/campaigns/types/schedule_campaigns_response.py +36 -0
- sequenzy/campaigns/types/schedule_campaigns_response_campaign.py +60 -0
- sequenzy/campaigns/types/schedule_campaigns_response_campaign_status.py +5 -0
- sequenzy/campaigns/types/send_test_campaigns_response.py +48 -0
- sequenzy/campaigns/types/unschedule_campaigns_response.py +26 -0
- sequenzy/campaigns/types/update_campaigns_request_email_preset.py +5 -0
- sequenzy/campaigns/types/update_campaigns_response.py +23 -0
- sequenzy/campaigns/types/update_campaigns_response_campaign.py +71 -0
- sequenzy/campaigns/types/update_goal_campaigns_response.py +21 -0
- sequenzy/client.py +974 -0
- sequenzy/companies/__init__.py +79 -0
- sequenzy/companies/client.py +624 -0
- sequenzy/companies/raw_client.py +962 -0
- sequenzy/companies/types/__init__.py +77 -0
- sequenzy/companies/types/create_companies_response.py +22 -0
- sequenzy/companies/types/create_companies_response_company.py +26 -0
- sequenzy/companies/types/get_companies_response.py +21 -0
- sequenzy/companies/types/list_companies_response.py +26 -0
- sequenzy/companies/types/update_companies_request_email_direction.py +5 -0
- sequenzy/companies/types/update_companies_request_email_length_preference.py +7 -0
- sequenzy/companies/types/update_companies_request_email_theme.py +60 -0
- sequenzy/companies/types/update_companies_request_email_theme_button_style.py +5 -0
- sequenzy/companies/types/update_companies_request_email_theme_colors.py +46 -0
- sequenzy/companies/types/update_companies_request_email_theme_layout.py +53 -0
- sequenzy/companies/types/update_companies_request_email_theme_preset_id.py +7 -0
- sequenzy/companies/types/update_companies_request_email_theme_typography.py +90 -0
- sequenzy/companies/types/update_companies_request_reply_tracking_domain_mode.py +5 -0
- sequenzy/companies/types/update_companies_response.py +21 -0
- sequenzy/conversations/__init__.py +70 -0
- sequenzy/conversations/client.py +529 -0
- sequenzy/conversations/raw_client.py +938 -0
- sequenzy/conversations/types/__init__.py +70 -0
- sequenzy/conversations/types/get_conversations_response.py +24 -0
- sequenzy/conversations/types/list_conversations_request_status.py +5 -0
- sequenzy/conversations/types/list_conversations_request_unread.py +5 -0
- sequenzy/conversations/types/list_conversations_response.py +23 -0
- sequenzy/conversations/types/mark_read_conversations_response.py +23 -0
- sequenzy/conversations/types/send_message_conversations_request_type.py +5 -0
- sequenzy/conversations/types/send_message_conversations_response.py +21 -0
- sequenzy/conversations/types/update_status_conversations_request_status.py +5 -0
- sequenzy/conversations/types/update_status_conversations_response.py +21 -0
- sequenzy/conversations/types/update_status_conversations_response_conversation.py +23 -0
- sequenzy/conversations/types/update_status_conversations_response_conversation_status.py +5 -0
- sequenzy/core/__init__.py +127 -0
- sequenzy/core/api_error.py +23 -0
- sequenzy/core/client_wrapper.py +146 -0
- sequenzy/core/datetime_utils.py +70 -0
- sequenzy/core/file.py +67 -0
- sequenzy/core/force_multipart.py +18 -0
- sequenzy/core/http_client.py +940 -0
- sequenzy/core/http_response.py +63 -0
- sequenzy/core/http_sse/__init__.py +42 -0
- sequenzy/core/http_sse/_api.py +455 -0
- sequenzy/core/http_sse/_decoders.py +74 -0
- sequenzy/core/http_sse/_exceptions.py +7 -0
- sequenzy/core/http_sse/_models.py +17 -0
- sequenzy/core/jsonable_encoder.py +133 -0
- sequenzy/core/logging.py +107 -0
- sequenzy/core/parse_error.py +36 -0
- sequenzy/core/pydantic_utilities.py +508 -0
- sequenzy/core/query_encoder.py +58 -0
- sequenzy/core/remove_none_from_dict.py +11 -0
- sequenzy/core/request_options.py +40 -0
- sequenzy/core/serialization.py +347 -0
- sequenzy/email_blocks/__init__.py +49 -0
- sequenzy/email_blocks/client.py +207 -0
- sequenzy/email_blocks/raw_client.py +344 -0
- sequenzy/email_blocks/types/__init__.py +47 -0
- sequenzy/email_blocks/types/get_email_blocks_request_condition_fields.py +5 -0
- sequenzy/email_blocks/types/get_email_blocks_response.py +55 -0
- sequenzy/email_blocks/types/list_email_blocks_request_creatable_only.py +5 -0
- sequenzy/email_blocks/types/list_email_blocks_response.py +45 -0
- sequenzy/email_components/__init__.py +79 -0
- sequenzy/email_components/client.py +717 -0
- sequenzy/email_components/raw_client.py +1373 -0
- sequenzy/email_components/types/__init__.py +77 -0
- sequenzy/email_components/types/create_email_components_request_component_type.py +5 -0
- sequenzy/email_components/types/create_email_components_response.py +28 -0
- sequenzy/email_components/types/delete_email_components_response.py +20 -0
- sequenzy/email_components/types/get_default_email_components_request_slot.py +5 -0
- sequenzy/email_components/types/get_default_email_components_response.py +26 -0
- sequenzy/email_components/types/get_email_components_response.py +26 -0
- sequenzy/email_components/types/list_email_components_request_defaults_only.py +5 -0
- sequenzy/email_components/types/list_email_components_request_slot.py +5 -0
- sequenzy/email_components/types/list_email_components_request_type.py +5 -0
- sequenzy/email_components/types/list_email_components_response.py +26 -0
- sequenzy/email_components/types/set_default_email_components_request_slot.py +5 -0
- sequenzy/email_components/types/set_default_email_components_response.py +28 -0
- sequenzy/email_components/types/update_email_components_request_component_type.py +5 -0
- sequenzy/email_components/types/update_email_components_response.py +28 -0
- sequenzy/email_sends/__init__.py +64 -0
- sequenzy/email_sends/client.py +342 -0
- sequenzy/email_sends/raw_client.py +559 -0
- sequenzy/email_sends/types/__init__.py +62 -0
- sequenzy/email_sends/types/get_email_sends_response.py +30 -0
- sequenzy/email_sends/types/get_email_sends_response_source.py +5 -0
- sequenzy/email_sends/types/list_email_sends_request_bounce_type.py +5 -0
- sequenzy/email_sends/types/list_email_sends_request_email_type.py +5 -0
- sequenzy/email_sends/types/list_email_sends_request_sort_field.py +7 -0
- sequenzy/email_sends/types/list_email_sends_request_sort_order.py +5 -0
- sequenzy/email_sends/types/list_email_sends_request_status.py +10 -0
- sequenzy/email_sends/types/list_email_sends_response.py +32 -0
- sequenzy/email_sends/types/list_email_sends_response_email_sends_item.py +27 -0
- sequenzy/emails/__init__.py +49 -0
- sequenzy/emails/client.py +435 -0
- sequenzy/emails/raw_client.py +800 -0
- sequenzy/emails/types/__init__.py +47 -0
- sequenzy/emails/types/create_emails_response.py +28 -0
- sequenzy/emails/types/update_blocks_emails_request_type.py +5 -0
- sequenzy/emails/types/update_blocks_emails_response.py +28 -0
- sequenzy/emails/types/update_emails_response.py +28 -0
- sequenzy/environment.py +7 -0
- sequenzy/errors/__init__.py +62 -0
- sequenzy/errors/bad_request_error.py +10 -0
- sequenzy/errors/conflict_error.py +10 -0
- sequenzy/errors/forbidden_error.py +11 -0
- sequenzy/errors/internal_server_error.py +10 -0
- sequenzy/errors/not_found_error.py +10 -0
- sequenzy/errors/service_unavailable_error.py +10 -0
- sequenzy/errors/too_many_requests_error.py +10 -0
- sequenzy/errors/unauthorized_error.py +10 -0
- sequenzy/errors/unprocessable_entity_error.py +10 -0
- sequenzy/events/__init__.py +37 -0
- sequenzy/events/client.py +129 -0
- sequenzy/events/raw_client.py +201 -0
- sequenzy/events/types/__init__.py +38 -0
- sequenzy/events/types/get_schemas_events_request_provider.py +7 -0
- sequenzy/events/types/get_schemas_events_response.py +40 -0
- sequenzy/feedback/__init__.py +49 -0
- sequenzy/feedback/client.py +212 -0
- sequenzy/feedback/raw_client.py +317 -0
- sequenzy/feedback/types/__init__.py +47 -0
- sequenzy/feedback/types/submit_feedback_request_category.py +7 -0
- sequenzy/feedback/types/submit_feedback_request_source.py +5 -0
- sequenzy/feedback/types/submit_feedback_request_tool_calls_item.py +32 -0
- sequenzy/feedback/types/submit_feedback_response.py +20 -0
- sequenzy/generation/__init__.py +55 -0
- sequenzy/generation/client.py +352 -0
- sequenzy/generation/raw_client.py +676 -0
- sequenzy/generation/types/__init__.py +53 -0
- sequenzy/generation/types/generate_email_request_email_type.py +5 -0
- sequenzy/generation/types/generate_email_response.py +38 -0
- sequenzy/generation/types/generate_sms_messages_response.py +22 -0
- sequenzy/generation/types/generate_sms_messages_response_messages_item.py +27 -0
- sequenzy/generation/types/generate_sms_messages_response_messages_item_encoding.py +5 -0
- sequenzy/generation/types/generate_subject_lines_response.py +21 -0
- sequenzy/integrations/__init__.py +82 -0
- sequenzy/integrations/client.py +851 -0
- sequenzy/integrations/raw_client.py +1689 -0
- sequenzy/integrations/types/__init__.py +80 -0
- sequenzy/integrations/types/activate_pixel_integrations_response.py +33 -0
- sequenzy/integrations/types/connect_integrations_request_history_import.py +61 -0
- sequenzy/integrations/types/connect_integrations_request_history_import_region.py +5 -0
- sequenzy/integrations/types/connect_integrations_request_provider.py +8 -0
- sequenzy/integrations/types/connect_integrations_request_settings.py +30 -0
- sequenzy/integrations/types/connect_integrations_response.py +60 -0
- sequenzy/integrations/types/connect_integrations_response_history.py +25 -0
- sequenzy/integrations/types/list_activity_integrations_request_status.py +7 -0
- sequenzy/integrations/types/list_activity_integrations_response.py +27 -0
- sequenzy/integrations/types/list_capabilities_integrations_response.py +21 -0
- sequenzy/integrations/types/list_integrations_response.py +21 -0
- sequenzy/integrations/types/sync_integrations_response.py +44 -0
- sequenzy/integrations/types/sync_integrations_response_sync_target.py +31 -0
- sequenzy/integrations/types/update_sync_integrations_response.py +73 -0
- sequenzy/integrations/types/update_sync_integrations_response_list_targeting.py +7 -0
- sequenzy/landing_pages/__init__.py +88 -0
- sequenzy/landing_pages/client.py +1368 -0
- sequenzy/landing_pages/raw_client.py +2615 -0
- sequenzy/landing_pages/types/__init__.py +86 -0
- sequenzy/landing_pages/types/connect_dedicated_domain_landing_pages_response.py +22 -0
- sequenzy/landing_pages/types/connect_domain_landing_pages_response.py +22 -0
- sequenzy/landing_pages/types/create_landing_pages_request_template.py +20 -0
- sequenzy/landing_pages/types/create_landing_pages_response.py +26 -0
- sequenzy/landing_pages/types/delete_landing_pages_response.py +25 -0
- sequenzy/landing_pages/types/duplicate_landing_pages_response.py +26 -0
- sequenzy/landing_pages/types/get_dedicated_domain_landing_pages_response.py +21 -0
- sequenzy/landing_pages/types/get_domain_landing_pages_response.py +21 -0
- sequenzy/landing_pages/types/get_landing_pages_response.py +25 -0
- sequenzy/landing_pages/types/list_landing_pages_response.py +31 -0
- sequenzy/landing_pages/types/publish_landing_pages_response.py +25 -0
- sequenzy/landing_pages/types/remove_dedicated_domain_landing_pages_response.py +21 -0
- sequenzy/landing_pages/types/unpublish_landing_pages_response.py +25 -0
- sequenzy/landing_pages/types/update_domain_settings_landing_pages_response.py +21 -0
- sequenzy/landing_pages/types/update_landing_pages_response.py +25 -0
- sequenzy/landing_pages/types/verify_dedicated_domain_landing_pages_response.py +21 -0
- sequenzy/landing_pages/types/verify_domain_landing_pages_response.py +21 -0
- sequenzy/lists/__init__.py +64 -0
- sequenzy/lists/client.py +608 -0
- sequenzy/lists/raw_client.py +1095 -0
- sequenzy/lists/types/__init__.py +62 -0
- sequenzy/lists/types/add_subscribers_lists_request_duplicate_strategy.py +5 -0
- sequenzy/lists/types/add_subscribers_lists_request_opt_in_mode.py +5 -0
- sequenzy/lists/types/add_subscribers_lists_response.py +41 -0
- sequenzy/lists/types/add_subscribers_lists_response_results_item.py +29 -0
- sequenzy/lists/types/create_lists_response.py +25 -0
- sequenzy/lists/types/delete_lists_response.py +30 -0
- sequenzy/lists/types/list_lists_response.py +21 -0
- sequenzy/lists/types/remove_subscribers_lists_response.py +35 -0
- sequenzy/lists/types/update_lists_response.py +25 -0
- sequenzy/media/__init__.py +49 -0
- sequenzy/media/client.py +375 -0
- sequenzy/media/raw_client.py +682 -0
- sequenzy/media/types/__init__.py +47 -0
- sequenzy/media/types/complete_email_image_upload_response.py +21 -0
- sequenzy/media/types/complete_email_image_upload_response_asset.py +39 -0
- sequenzy/media/types/create_email_image_upload_url_response.py +31 -0
- sequenzy/media/types/upload_email_image_bytes_response.py +25 -0
- sequenzy/migrations/__init__.py +58 -0
- sequenzy/migrations/client.py +645 -0
- sequenzy/migrations/raw_client.py +1250 -0
- sequenzy/migrations/types/__init__.py +56 -0
- sequenzy/migrations/types/approve_plan_migrations_response.py +20 -0
- sequenzy/migrations/types/cancel_migrations_response.py +20 -0
- sequenzy/migrations/types/connect_source_migrations_response.py +20 -0
- sequenzy/migrations/types/discover_source_migrations_response.py +20 -0
- sequenzy/migrations/types/get_agent_package_migrations_response.py +20 -0
- sequenzy/migrations/types/get_run_migrations_response.py +20 -0
- sequenzy/migrations/types/start_migrations_response.py +20 -0
- sequenzy/notification_preferences/__init__.py +4 -0
- sequenzy/notification_preferences/client.py +198 -0
- sequenzy/notification_preferences/raw_client.py +311 -0
- sequenzy/orders/__init__.py +49 -0
- sequenzy/orders/client.py +393 -0
- sequenzy/orders/raw_client.py +539 -0
- sequenzy/orders/types/__init__.py +47 -0
- sequenzy/orders/types/push_orders_request_customer_totals.py +30 -0
- sequenzy/orders/types/push_orders_request_status.py +5 -0
- sequenzy/orders/types/push_orders_response.py +29 -0
- sequenzy/orders/types/track_checkout_started_response.py +30 -0
- sequenzy/products/__init__.py +82 -0
- sequenzy/products/client.py +905 -0
- sequenzy/products/raw_client.py +1642 -0
- sequenzy/products/types/__init__.py +82 -0
- sequenzy/products/types/attach_delivery_products_request_source.py +5 -0
- sequenzy/products/types/attach_delivery_products_response.py +21 -0
- sequenzy/products/types/create_delivery_upload_url_products_response.py +30 -0
- sequenzy/products/types/delete_products_response.py +20 -0
- sequenzy/products/types/get_products_response.py +21 -0
- sequenzy/products/types/list_products_request_provider.py +7 -0
- sequenzy/products/types/list_products_response.py +23 -0
- sequenzy/products/types/list_products_response_pagination.py +40 -0
- sequenzy/products/types/register_back_in_stock_response.py +24 -0
- sequenzy/products/types/remove_delivery_products_response.py +21 -0
- sequenzy/products/types/sync_stripe_products_response.py +24 -0
- sequenzy/products/types/upsert_products_request_products_item.py +89 -0
- sequenzy/products/types/upsert_products_request_products_item_variants_item.py +53 -0
- sequenzy/products/types/upsert_products_request_products_item_variants_item_options_item.py +20 -0
- sequenzy/products/types/upsert_products_response.py +36 -0
- sequenzy/reference.md +27269 -0
- sequenzy/segments/__init__.py +61 -0
- sequenzy/segments/client.py +445 -0
- sequenzy/segments/raw_client.py +831 -0
- sequenzy/segments/types/__init__.py +59 -0
- sequenzy/segments/types/create_segments_request.py +5 -0
- sequenzy/segments/types/create_segments_request_filter_join_operator.py +5 -0
- sequenzy/segments/types/create_segments_response.py +30 -0
- sequenzy/segments/types/delete_segments_response.py +19 -0
- sequenzy/segments/types/get_count_segments_response.py +25 -0
- sequenzy/segments/types/list_segments_response.py +26 -0
- sequenzy/segments/types/update_segments_request_filter_join_operator.py +5 -0
- sequenzy/segments/types/update_segments_response.py +30 -0
- sequenzy/sender_profiles/__init__.py +38 -0
- sequenzy/sender_profiles/client.py +269 -0
- sequenzy/sender_profiles/raw_client.py +524 -0
- sequenzy/sender_profiles/types/__init__.py +40 -0
- sequenzy/sender_profiles/types/list_sender_profiles_response.py +43 -0
- sequenzy/sender_profiles/types/update_reply_profile_response.py +30 -0
- sequenzy/sender_profiles/types/update_sender_profiles_response.py +32 -0
- sequenzy/sending_status/__init__.py +34 -0
- sequenzy/sending_status/client.py +182 -0
- sequenzy/sending_status/raw_client.py +363 -0
- sequenzy/sending_status/types/__init__.py +34 -0
- sequenzy/sending_status/types/resume_sending_status_response.py +28 -0
- sequenzy/sequences/__init__.py +139 -0
- sequenzy/sequences/client.py +4043 -0
- sequenzy/sequences/raw_client.py +6760 -0
- sequenzy/sequences/types/__init__.py +139 -0
- sequenzy/sequences/types/archive_sequences_response.py +21 -0
- sequenzy/sequences/types/configure_inbound_webhook_sequences_response.py +21 -0
- sequenzy/sequences/types/create_goal_sequences_response.py +21 -0
- sequenzy/sequences/types/delete_goal_sequences_response.py +24 -0
- sequenzy/sequences/types/duplicate_sequences_response.py +25 -0
- sequenzy/sequences/types/enroll_subscribers_in_sequences_response.py +58 -0
- sequenzy/sequences/types/generate_sequences_response.py +25 -0
- sequenzy/sequences/types/get_inbound_webhook_sequences_response.py +21 -0
- sequenzy/sequences/types/get_sequences_response.py +26 -0
- sequenzy/sequences/types/get_stats_sequences_request_period.py +5 -0
- sequenzy/sequences/types/get_stats_sequences_response.py +58 -0
- sequenzy/sequences/types/get_stats_sequences_response_enrollment_skipped.py +37 -0
- sequenzy/sequences/types/get_stats_sequences_response_steps_item.py +61 -0
- sequenzy/sequences/types/get_stats_sequences_response_steps_item_failed_subscribers_item.py +31 -0
- sequenzy/sequences/types/list_enrollments_sequences_request_sort.py +7 -0
- sequenzy/sequences/types/list_goals_sequences_response.py +21 -0
- sequenzy/sequences/types/list_sequences_response.py +23 -0
- sequenzy/sequences/types/list_sequences_response_pagination.py +31 -0
- sequenzy/sequences/types/rotate_inbound_webhook_secret_sequences_response.py +21 -0
- sequenzy/sequences/types/send_test_email_sequences_response.py +26 -0
- sequenzy/sequences/types/send_test_email_sequences_response_results_item.py +43 -0
- sequenzy/sequences/types/sequence_create_request_email_style.py +5 -0
- sequenzy/sequences/types/sequence_create_request_inactivity_baseline.py +7 -0
- sequenzy/sequences/types/sequence_create_request_list_scope.py +5 -0
- sequenzy/sequences/types/sequence_enrollment_move_request_sort.py +7 -0
- sequenzy/sequences/types/sequence_update_request_inactivity_baseline.py +7 -0
- sequenzy/sequences/types/sequence_update_request_list_scope.py +5 -0
- sequenzy/sequences/types/simulate_sequences_response.py +43 -0
- sequenzy/sequences/types/simulate_sequences_response_readiness.py +25 -0
- sequenzy/sequences/types/unarchive_sequences_response.py +21 -0
- sequenzy/sequences/types/update_goal_sequences_response.py +21 -0
- sequenzy/sequences/types/update_sequences_response.py +23 -0
- sequenzy/sequences/types/update_sequences_response_sequence.py +162 -0
- sequenzy/sequences/types/update_sequences_response_sequence_graph_edit_action.py +7 -0
- sequenzy/shopify/__init__.py +37 -0
- sequenzy/shopify/client.py +215 -0
- sequenzy/shopify/raw_client.py +432 -0
- sequenzy/shopify/types/__init__.py +38 -0
- sequenzy/shopify/types/get_automation_settings_shopify_response.py +43 -0
- sequenzy/shopify/types/update_automation_settings_shopify_response.py +44 -0
- sequenzy/sms/__init__.py +55 -0
- sequenzy/sms/client.py +313 -0
- sequenzy/sms/raw_client.py +663 -0
- sequenzy/sms/types/__init__.py +53 -0
- sequenzy/sms/types/get_settings_sms_response.py +22 -0
- sequenzy/sms/types/get_settings_sms_response_sms.py +35 -0
- sequenzy/sms/types/get_settings_sms_response_sms_numbers_item.py +39 -0
- sequenzy/sms/types/send_test_sms_response.py +28 -0
- sequenzy/sms/types/update_number_label_sms_response.py +22 -0
- sequenzy/sms/types/update_number_label_sms_response_number.py +25 -0
- sequenzy/subscribers/__init__.py +229 -0
- sequenzy/subscribers/client.py +2872 -0
- sequenzy/subscribers/events/__init__.py +67 -0
- sequenzy/subscribers/events/client.py +352 -0
- sequenzy/subscribers/events/raw_client.py +460 -0
- sequenzy/subscribers/events/types/__init__.py +65 -0
- sequenzy/subscribers/events/types/trigger_bulk_events_request_events_item.py +47 -0
- sequenzy/subscribers/events/types/trigger_bulk_events_response.py +38 -0
- sequenzy/subscribers/events/types/trigger_bulk_events_response_events_item.py +41 -0
- sequenzy/subscribers/events/types/trigger_bulk_events_response_opt_in.py +28 -0
- sequenzy/subscribers/events/types/trigger_bulk_events_response_subscriber.py +25 -0
- sequenzy/subscribers/events/types/trigger_events_response.py +76 -0
- sequenzy/subscribers/events/types/trigger_events_response_event.py +35 -0
- sequenzy/subscribers/events/types/trigger_events_response_events_item.py +26 -0
- sequenzy/subscribers/events/types/trigger_events_response_opt_in.py +28 -0
- sequenzy/subscribers/events/types/trigger_events_response_subscriber.py +25 -0
- sequenzy/subscribers/raw_client.py +4840 -0
- sequenzy/subscribers/tags/__init__.py +58 -0
- sequenzy/subscribers/tags/client.py +302 -0
- sequenzy/subscribers/tags/raw_client.py +415 -0
- sequenzy/subscribers/tags/types/__init__.py +56 -0
- sequenzy/subscribers/tags/types/add_tags_response.py +38 -0
- sequenzy/subscribers/tags/types/add_tags_response_opt_in.py +28 -0
- sequenzy/subscribers/tags/types/add_tags_response_subscriber.py +30 -0
- sequenzy/subscribers/tags/types/add_tags_response_tag.py +25 -0
- sequenzy/subscribers/tags/types/remove_tags_response.py +23 -0
- sequenzy/subscribers/tags/types/remove_tags_response_subscriber.py +30 -0
- sequenzy/subscribers/tags/types/remove_tags_response_tag.py +23 -0
- sequenzy/subscribers/types/__init__.py +173 -0
- sequenzy/subscribers/types/add_tags_bulk_response.py +38 -0
- sequenzy/subscribers/types/add_tags_bulk_response_opt_in.py +28 -0
- sequenzy/subscribers/types/add_tags_bulk_response_subscriber.py +26 -0
- sequenzy/subscribers/types/add_tags_bulk_response_tags.py +27 -0
- sequenzy/subscribers/types/create_import_subscribers_request_duplicate_strategy.py +5 -0
- sequenzy/subscribers/types/create_import_subscribers_request_opt_in_mode.py +7 -0
- sequenzy/subscribers/types/create_import_subscribers_response.py +27 -0
- sequenzy/subscribers/types/create_note_by_external_id_subscribers_response.py +21 -0
- sequenzy/subscribers/types/create_note_subscribers_response.py +21 -0
- sequenzy/subscribers/types/create_subscribers_request_duplicate_strategy.py +5 -0
- sequenzy/subscribers/types/create_subscribers_request_opt_in_mode.py +5 -0
- sequenzy/subscribers/types/create_subscribers_request_status.py +5 -0
- sequenzy/subscribers/types/create_subscribers_response.py +35 -0
- sequenzy/subscribers/types/create_subscribers_response_opt_in.py +28 -0
- sequenzy/subscribers/types/create_subscribers_response_subscriber.py +33 -0
- sequenzy/subscribers/types/delete_by_external_id_path_subscribers_response.py +20 -0
- sequenzy/subscribers/types/delete_by_external_id_subscribers_response.py +20 -0
- sequenzy/subscribers/types/delete_note_subscribers_response.py +26 -0
- sequenzy/subscribers/types/delete_subscribers_response.py +20 -0
- sequenzy/subscribers/types/get_account_info_response.py +21 -0
- sequenzy/subscribers/types/get_account_info_response_account.py +26 -0
- sequenzy/subscribers/types/get_by_external_id_path_subscribers_response.py +21 -0
- sequenzy/subscribers/types/get_by_external_id_subscribers_response.py +21 -0
- sequenzy/subscribers/types/get_import_subscribers_response.py +25 -0
- sequenzy/subscribers/types/get_subscribers_response.py +21 -0
- sequenzy/subscribers/types/import_events_subscribers_request_events_item.py +71 -0
- sequenzy/subscribers/types/import_events_subscribers_response.py +83 -0
- sequenzy/subscribers/types/import_events_subscribers_response_failures_item.py +20 -0
- sequenzy/subscribers/types/import_events_subscribers_response_side_effect_failures_item.py +21 -0
- sequenzy/subscribers/types/list_notes_by_external_id_subscribers_response.py +21 -0
- sequenzy/subscribers/types/list_notes_subscribers_response.py +21 -0
- sequenzy/subscribers/types/list_subscribers_request_attribute_operator.py +7 -0
- sequenzy/subscribers/types/list_subscribers_request_include_total.py +5 -0
- sequenzy/subscribers/types/list_subscribers_request_status.py +5 -0
- sequenzy/subscribers/types/list_subscribers_response.py +23 -0
- sequenzy/subscribers/types/update_by_external_id_path_subscribers_request_custom_attributes_strategy.py +7 -0
- sequenzy/subscribers/types/update_by_external_id_path_subscribers_request_status.py +7 -0
- sequenzy/subscribers/types/update_by_external_id_path_subscribers_response.py +21 -0
- sequenzy/subscribers/types/update_by_external_id_subscribers_request_custom_attributes_strategy.py +7 -0
- sequenzy/subscribers/types/update_by_external_id_subscribers_request_status.py +7 -0
- sequenzy/subscribers/types/update_by_external_id_subscribers_response.py +21 -0
- sequenzy/subscribers/types/update_subscribers_request_custom_attributes_strategy.py +5 -0
- sequenzy/subscribers/types/update_subscribers_request_status.py +5 -0
- sequenzy/subscribers/types/update_subscribers_response.py +21 -0
- sequenzy/suppressions/__init__.py +94 -0
- sequenzy/suppressions/client.py +358 -0
- sequenzy/suppressions/raw_client.py +760 -0
- sequenzy/suppressions/types/__init__.py +98 -0
- sequenzy/suppressions/types/get_suppressions_response.py +21 -0
- sequenzy/suppressions/types/get_suppressions_response_suppression.py +29 -0
- sequenzy/suppressions/types/get_suppressions_response_suppression_local.py +51 -0
- sequenzy/suppressions/types/get_suppressions_response_suppression_local_scope.py +5 -0
- sequenzy/suppressions/types/get_suppressions_response_suppression_local_suppression_type.py +7 -0
- sequenzy/suppressions/types/get_suppressions_response_suppression_ses.py +25 -0
- sequenzy/suppressions/types/get_suppressions_response_suppression_ses_entries_item.py +36 -0
- sequenzy/suppressions/types/get_suppressions_response_suppression_ses_entries_item_reason.py +5 -0
- sequenzy/suppressions/types/list_suppressions_request_order.py +5 -0
- sequenzy/suppressions/types/list_suppressions_request_sort.py +5 -0
- sequenzy/suppressions/types/list_suppressions_response.py +49 -0
- sequenzy/suppressions/types/list_suppressions_response_sort_by.py +5 -0
- sequenzy/suppressions/types/list_suppressions_response_sort_order.py +5 -0
- sequenzy/suppressions/types/list_suppressions_response_suppressions_item.py +63 -0
- sequenzy/suppressions/types/list_suppressions_response_suppressions_item_reason.py +5 -0
- sequenzy/suppressions/types/list_suppressions_response_suppressions_item_scope.py +5 -0
- sequenzy/suppressions/types/list_suppressions_response_suppressions_item_source.py +7 -0
- sequenzy/suppressions/types/list_suppressions_response_suppressions_item_suppression_type.py +7 -0
- sequenzy/suppressions/types/remove_suppressions_response.py +52 -0
- sequenzy/sync_rules/__init__.py +34 -0
- sequenzy/sync_rules/client.py +223 -0
- sequenzy/sync_rules/raw_client.py +330 -0
- sequenzy/sync_rules/types/__init__.py +38 -0
- sequenzy/sync_rules/types/get_sync_rules_response.py +34 -0
- sequenzy/sync_rules/types/update_sync_rules_response.py +29 -0
- sequenzy/tags/__init__.py +39 -0
- sequenzy/tags/client.py +340 -0
- sequenzy/tags/raw_client.py +746 -0
- sequenzy/tags/types/__init__.py +42 -0
- sequenzy/tags/types/create_tags_response.py +21 -0
- sequenzy/tags/types/delete_tags_response.py +19 -0
- sequenzy/tags/types/list_tags_response.py +21 -0
- sequenzy/tags/types/update_tags_response.py +21 -0
- sequenzy/team/__init__.py +55 -0
- sequenzy/team/client.py +282 -0
- sequenzy/team/raw_client.py +658 -0
- sequenzy/team/types/__init__.py +53 -0
- sequenzy/team/types/cancel_invitation_team_response.py +19 -0
- sequenzy/team/types/invite_team_request_role.py +5 -0
- sequenzy/team/types/invite_team_response.py +23 -0
- sequenzy/team/types/invite_team_response_invitation.py +35 -0
- sequenzy/team/types/invite_team_response_invitation_role.py +5 -0
- sequenzy/team/types/list_team_response.py +21 -0
- sequenzy/templates/__init__.py +73 -0
- sequenzy/templates/client.py +1152 -0
- sequenzy/templates/raw_client.py +2088 -0
- sequenzy/templates/types/__init__.py +71 -0
- sequenzy/templates/types/create_share_link_templates_response.py +44 -0
- sequenzy/templates/types/create_templates_response.py +23 -0
- sequenzy/templates/types/create_templates_response_template.py +22 -0
- sequenzy/templates/types/delete_templates_response.py +25 -0
- sequenzy/templates/types/get_templates_response.py +27 -0
- sequenzy/templates/types/list_templates_response.py +33 -0
- sequenzy/templates/types/list_templates_response_pagination.py +34 -0
- sequenzy/templates/types/revoke_share_link_templates_response.py +24 -0
- sequenzy/templates/types/set_localization_templates_response.py +33 -0
- sequenzy/templates/types/sync_localizations_templates_response.py +30 -0
- sequenzy/templates/types/update_templates_response.py +24 -0
- sequenzy/templates/types/update_templates_response_template.py +27 -0
- sequenzy/tests/conftest.py +21 -0
- sequenzy/tests/test_aiohttp_autodetect.py +113 -0
- sequenzy/tracking_settings/__init__.py +37 -0
- sequenzy/tracking_settings/client.py +267 -0
- sequenzy/tracking_settings/raw_client.py +415 -0
- sequenzy/tracking_settings/types/__init__.py +38 -0
- sequenzy/tracking_settings/types/update_tracking_settings_request_auto_utm_settings.py +27 -0
- sequenzy/tracking_settings/types/update_tracking_settings_response.py +20 -0
- sequenzy/transactional/__init__.py +103 -0
- sequenzy/transactional/client.py +968 -0
- sequenzy/transactional/raw_client.py +1678 -0
- sequenzy/transactional/types/__init__.py +103 -0
- sequenzy/transactional/types/create_transactional_response.py +28 -0
- sequenzy/transactional/types/delete_transactional_response.py +22 -0
- sequenzy/transactional/types/delete_transactional_response_deleted.py +35 -0
- sequenzy/transactional/types/get_transactional_response.py +26 -0
- sequenzy/transactional/types/list_transactional_request_order.py +5 -0
- sequenzy/transactional/types/list_transactional_request_sort.py +7 -0
- sequenzy/transactional/types/list_transactional_request_status.py +5 -0
- sequenzy/transactional/types/list_transactional_response.py +21 -0
- sequenzy/transactional/types/send_transactional_request_bcc.py +5 -0
- sequenzy/transactional/types/send_transactional_request_cc.py +5 -0
- sequenzy/transactional/types/send_transactional_request_email_type.py +5 -0
- sequenzy/transactional/types/send_transactional_request_to.py +5 -0
- sequenzy/transactional/types/send_transactional_request_tracking_settings.py +46 -0
- sequenzy/transactional/types/send_transactional_response.py +8 -0
- sequenzy/transactional/types/send_transactional_response_one.py +67 -0
- sequenzy/transactional/types/send_transactional_response_one_email_type.py +5 -0
- sequenzy/transactional/types/send_transactional_response_one_to.py +5 -0
- sequenzy/transactional/types/send_transactional_response_transactional.py +69 -0
- sequenzy/transactional/types/send_transactional_response_transactional_email_type.py +5 -0
- sequenzy/transactional/types/send_transactional_response_transactional_to.py +5 -0
- sequenzy/transactional/types/send_transactional_response_transactional_transactional.py +21 -0
- sequenzy/transactional/types/update_transactional_response.py +28 -0
- sequenzy/types/__init__.py +1409 -0
- sequenzy/types/ab_test.py +119 -0
- sequenzy/types/ab_test_content_editing.py +30 -0
- sequenzy/types/ab_test_kind.py +5 -0
- sequenzy/types/ab_test_test_type.py +5 -0
- sequenzy/types/ab_test_variant.py +63 -0
- sequenzy/types/ad_account.py +20 -0
- sequenzy/types/agent_friendly_error.py +55 -0
- sequenzy/types/api_key_metadata.py +65 -0
- sequenzy/types/api_key_metadata_type.py +5 -0
- sequenzy/types/attachment.py +58 -0
- sequenzy/types/audience_sync.py +72 -0
- sequenzy/types/audience_sync_frequency.py +5 -0
- sequenzy/types/bad_request_error_body.py +21 -0
- sequenzy/types/bad_request_error_body_error.py +20 -0
- sequenzy/types/block_field_warnings.py +8 -0
- sequenzy/types/bulk_subscriber_tag_request.py +63 -0
- sequenzy/types/bulk_subscriber_tag_response.py +76 -0
- sequenzy/types/bulk_subscriber_tag_response_failures_item.py +25 -0
- sequenzy/types/bulk_subscriber_tag_response_not_found.py +31 -0
- sequenzy/types/campaign_channel.py +5 -0
- sequenzy/types/campaign_detail.py +108 -0
- sequenzy/types/campaign_goal.py +71 -0
- sequenzy/types/campaign_goal_attribute_condition.py +5 -0
- sequenzy/types/campaign_goal_input.py +65 -0
- sequenzy/types/campaign_goal_input_attribute_condition.py +7 -0
- sequenzy/types/campaign_goal_input_trigger_type.py +5 -0
- sequenzy/types/campaign_goal_metrics.py +33 -0
- sequenzy/types/campaign_goal_scope.py +5 -0
- sequenzy/types/campaign_goal_trigger_type.py +5 -0
- sequenzy/types/campaign_status.py +8 -0
- sequenzy/types/campaign_summary.py +160 -0
- sequenzy/types/clicked_link.py +36 -0
- sequenzy/types/commerce_customer.py +41 -0
- sequenzy/types/commerce_forecast_range.py +26 -0
- sequenzy/types/commerce_order_item.py +55 -0
- sequenzy/types/commerce_product.py +99 -0
- sequenzy/types/commerce_product_provider.py +5 -0
- sequenzy/types/commerce_product_variants_item.py +47 -0
- sequenzy/types/commerce_product_variants_item_options_item.py +20 -0
- sequenzy/types/commerce_value_forecast.py +47 -0
- sequenzy/types/commerce_value_forecast_actual.py +33 -0
- sequenzy/types/commerce_value_forecast_confidence.py +5 -0
- sequenzy/types/commerce_value_forecast_eligibility.py +20 -0
- sequenzy/types/commerce_value_forecast_eligibility_reasons_item.py +22 -0
- sequenzy/types/commerce_value_forecast_forecast.py +56 -0
- sequenzy/types/commerce_value_forecast_history.py +40 -0
- sequenzy/types/commerce_value_forecast_status.py +5 -0
- sequenzy/types/company.py +204 -0
- sequenzy/types/company_email_length_preference.py +5 -0
- sequenzy/types/company_reply_tracking_domain_mode.py +5 -0
- sequenzy/types/conversation_message.py +61 -0
- sequenzy/types/conversation_message_type.py +5 -0
- sequenzy/types/conversation_summary.py +51 -0
- sequenzy/types/conversation_summary_context.py +27 -0
- sequenzy/types/conversation_summary_status.py +5 -0
- sequenzy/types/detailed_subscriber.py +37 -0
- sequenzy/types/email.py +44 -0
- sequenzy/types/email_block.py +108 -0
- sequenzy/types/email_block_condition_field_reference.py +74 -0
- sequenzy/types/email_block_condition_field_reference_preview_support.py +7 -0
- sequenzy/types/email_block_conditions_item.py +31 -0
- sequenzy/types/email_block_conditions_item_field.py +7 -0
- sequenzy/types/email_block_conditions_item_operator.py +8 -0
- sequenzy/types/email_block_field_reference.py +53 -0
- sequenzy/types/email_block_layout.py +5 -0
- sequenzy/types/email_block_overlay_position.py +5 -0
- sequenzy/types/email_block_styles.py +69 -0
- sequenzy/types/email_block_styles_text_align.py +5 -0
- sequenzy/types/email_block_type.py +47 -0
- sequenzy/types/email_block_type_reference.py +49 -0
- sequenzy/types/email_body_input.py +34 -0
- sequenzy/types/email_component.py +64 -0
- sequenzy/types/email_component_component_type.py +5 -0
- sequenzy/types/email_component_default_slot.py +5 -0
- sequenzy/types/email_event.py +89 -0
- sequenzy/types/email_event_email_type.py +5 -0
- sequenzy/types/email_event_event_type.py +10 -0
- sequenzy/types/email_preset.py +5 -0
- sequenzy/types/email_send.py +250 -0
- sequenzy/types/email_send_additional_recipients.py +25 -0
- sequenzy/types/email_send_automation.py +20 -0
- sequenzy/types/email_send_campaign.py +20 -0
- sequenzy/types/email_send_email_type.py +5 -0
- sequenzy/types/email_send_event.py +101 -0
- sequenzy/types/email_send_event_delivery_policy.py +5 -0
- sequenzy/types/email_send_event_email_type.py +5 -0
- sequenzy/types/email_send_internal_failure_code.py +7 -0
- sequenzy/types/email_send_status.py +10 -0
- sequenzy/types/email_send_subscriber.py +28 -0
- sequenzy/types/email_send_suppression_reason.py +5 -0
- sequenzy/types/email_send_type.py +5 -0
- sequenzy/types/email_theme_patch.py +40 -0
- sequenzy/types/email_theme_patch_button_style.py +5 -0
- sequenzy/types/email_theme_patch_colors.py +33 -0
- sequenzy/types/email_theme_patch_layout.py +52 -0
- sequenzy/types/email_theme_patch_preset_id.py +5 -0
- sequenzy/types/email_theme_patch_typography.py +55 -0
- sequenzy/types/engagement_stats.py +143 -0
- sequenzy/types/engagement_stats_rate_denominator_basis.py +5 -0
- sequenzy/types/error.py +30 -0
- sequenzy/types/event_schema.py +71 -0
- sequenzy/types/event_schema_documented_providers_item.py +7 -0
- sequenzy/types/event_schema_providers_item.py +33 -0
- sequenzy/types/event_schema_providers_item_properties_item.py +43 -0
- sequenzy/types/event_schema_providers_item_provider.py +7 -0
- sequenzy/types/filter_group.py +39 -0
- sequenzy/types/filter_group_children_item.py +54 -0
- sequenzy/types/filter_group_join_operator.py +5 -0
- sequenzy/types/filter_group_kind.py +5 -0
- sequenzy/types/filter_leaf.py +41 -0
- sequenzy/types/filter_leaf_field.py +33 -0
- sequenzy/types/filter_leaf_kind.py +5 -0
- sequenzy/types/filter_leaf_operator.py +25 -0
- sequenzy/types/integration_activity_entry.py +86 -0
- sequenzy/types/integration_activity_entry_status.py +7 -0
- sequenzy/types/integration_detail.py +74 -0
- sequenzy/types/integration_detail_activity.py +42 -0
- sequenzy/types/integration_detail_activity_recent_failures_item.py +30 -0
- sequenzy/types/integration_detail_ingestion.py +88 -0
- sequenzy/types/integration_detail_ingestion_list_targeting.py +7 -0
- sequenzy/types/integration_detail_ingestion_lists_item.py +20 -0
- sequenzy/types/integration_detail_integration.py +91 -0
- sequenzy/types/integration_detail_integration_category.py +7 -0
- sequenzy/types/integration_detail_pixel.py +40 -0
- sequenzy/types/integration_detail_recommendations_item.py +23 -0
- sequenzy/types/integration_detail_recommendations_item_severity.py +5 -0
- sequenzy/types/integration_event_wiring.py +81 -0
- sequenzy/types/integration_event_wiring_listeners_item.py +37 -0
- sequenzy/types/integration_event_wiring_rule_source.py +5 -0
- sequenzy/types/integration_event_wiring_rules_item.py +27 -0
- sequenzy/types/integration_pixel_state.py +47 -0
- sequenzy/types/integration_pixel_state_pixel.py +68 -0
- sequenzy/types/integration_provider_capability.py +78 -0
- sequenzy/types/integration_provider_capability_actions_item.py +10 -0
- sequenzy/types/integration_provider_capability_availability.py +5 -0
- sequenzy/types/integration_provider_capability_category.py +7 -0
- sequenzy/types/integration_provider_capability_connect_fields_item.py +26 -0
- sequenzy/types/integration_provider_capability_connect_fields_item_key.py +7 -0
- sequenzy/types/integration_provider_capability_connect_method.py +7 -0
- sequenzy/types/integration_provider_capability_emits_item.py +27 -0
- sequenzy/types/integration_provider_capability_writes_attributes_item.py +20 -0
- sequenzy/types/integration_summary.py +91 -0
- sequenzy/types/integration_summary_category.py +7 -0
- sequenzy/types/integration_sync_skip_summary.py +47 -0
- sequenzy/types/integration_sync_skip_summary_records_item.py +27 -0
- sequenzy/types/integration_sync_skip_summary_records_item_outcome.py +5 -0
- sequenzy/types/internal_server_error_body.py +20 -0
- sequenzy/types/landing_page_content.py +41 -0
- sequenzy/types/landing_page_content_seo.py +50 -0
- sequenzy/types/landing_page_content_theme.py +46 -0
- sequenzy/types/landing_page_content_theme_section_animation.py +7 -0
- sequenzy/types/landing_page_content_theme_section_animation_speed.py +5 -0
- sequenzy/types/landing_page_domain.py +125 -0
- sequenzy/types/landing_page_domain_dns_record_type.py +5 -0
- sequenzy/types/landing_page_domain_domain_scope.py +5 -0
- sequenzy/types/landing_page_summary.py +94 -0
- sequenzy/types/landing_page_summary_custom_domain_scope.py +5 -0
- sequenzy/types/landing_page_summary_status.py +5 -0
- sequenzy/types/not_found_error_body.py +21 -0
- sequenzy/types/not_found_error_body_error.py +20 -0
- sequenzy/types/notification_preference.py +29 -0
- sequenzy/types/notification_preference_event.py +7 -0
- sequenzy/types/notification_preference_mode.py +5 -0
- sequenzy/types/notification_preferences.py +47 -0
- sequenzy/types/outbound_webhook_delivery.py +56 -0
- sequenzy/types/outbound_webhook_delivery_attempt.py +40 -0
- sequenzy/types/outbound_webhook_delivery_attempt_status.py +5 -0
- sequenzy/types/outbound_webhook_delivery_status.py +7 -0
- sequenzy/types/outbound_webhook_endpoint.py +80 -0
- sequenzy/types/outbound_webhook_endpoint_signing_secrets_item.py +26 -0
- sequenzy/types/outbound_webhook_endpoint_status.py +5 -0
- sequenzy/types/outbound_webhook_event_type.py +34 -0
- sequenzy/types/pagination.py +26 -0
- sequenzy/types/poll_response.py +85 -0
- sequenzy/types/poll_response_variant.py +5 -0
- sequenzy/types/poll_results_summary.py +84 -0
- sequenzy/types/poll_results_summary_answers_item.py +33 -0
- sequenzy/types/poll_results_summary_nps.py +30 -0
- sequenzy/types/poll_results_summary_variant.py +5 -0
- sequenzy/types/product.py +60 -0
- sequenzy/types/product_digital_delivery.py +40 -0
- sequenzy/types/product_digital_delivery_source.py +5 -0
- sequenzy/types/product_provider.py +5 -0
- sequenzy/types/recommendation_metrics.py +83 -0
- sequenzy/types/recommendation_metrics_revenue_by_currency_item.py +33 -0
- sequenzy/types/recommendation_metrics_top_products_item.py +35 -0
- sequenzy/types/render_email_request.py +65 -0
- sequenzy/types/render_email_request_subscriber.py +40 -0
- sequenzy/types/render_email_response.py +86 -0
- sequenzy/types/render_email_response_entity.py +26 -0
- sequenzy/types/render_email_response_entity_type.py +5 -0
- sequenzy/types/render_email_response_unevaluated_conditions_item.py +41 -0
- sequenzy/types/render_email_response_unevaluated_conditions_item_reason.py +7 -0
- sequenzy/types/render_email_response_unresolved_merge_tags_item.py +28 -0
- sequenzy/types/render_email_response_unresolved_merge_tags_item_reason.py +5 -0
- sequenzy/types/reply_profile_summary.py +30 -0
- sequenzy/types/resolved_audience_entity.py +28 -0
- sequenzy/types/resolved_audience_rule.py +24 -0
- sequenzy/types/resolved_audience_rule_type.py +5 -0
- sequenzy/types/resolved_campaign_audience.py +67 -0
- sequenzy/types/resolved_campaign_audience_filter_join_operator.py +5 -0
- sequenzy/types/resolved_campaign_audience_type.py +7 -0
- sequenzy/types/saved_popup.py +81 -0
- sequenzy/types/saved_popup_embed.py +36 -0
- sequenzy/types/saved_popup_frequency.py +30 -0
- sequenzy/types/saved_popup_schedule.py +37 -0
- sequenzy/types/saved_popup_stats.py +58 -0
- sequenzy/types/saved_popup_status.py +5 -0
- sequenzy/types/saved_popup_targeting.py +31 -0
- sequenzy/types/saved_popup_targeting_device.py +5 -0
- sequenzy/types/saved_popup_trigger.py +56 -0
- sequenzy/types/saved_popup_trigger_type.py +5 -0
- sequenzy/types/saved_popup_visual.py +37 -0
- sequenzy/types/saved_popup_visual_placement.py +5 -0
- sequenzy/types/saved_popup_visual_style.py +7 -0
- sequenzy/types/segment.py +53 -0
- sequenzy/types/segment_filter_join_operator.py +5 -0
- sequenzy/types/segment_format.py +5 -0
- sequenzy/types/sender_health_metric.py +37 -0
- sequenzy/types/sender_health_threshold_bound.py +24 -0
- sequenzy/types/sender_profile_summary.py +55 -0
- sequenzy/types/sending_status.py +85 -0
- sequenzy/types/sending_status_metrics_window.py +42 -0
- sequenzy/types/sending_status_metrics_window_kind.py +5 -0
- sequenzy/types/sending_status_pause_reason_kind.py +10 -0
- sequenzy/types/sending_status_remediation.py +37 -0
- sequenzy/types/sending_status_self_resume.py +78 -0
- sequenzy/types/sending_status_self_resume_ai_review_status.py +7 -0
- sequenzy/types/sending_status_self_resume_unavailable_reason.py +8 -0
- sequenzy/types/sending_status_sender_health.py +71 -0
- sequenzy/types/sending_status_sender_health_enforcement_mode.py +5 -0
- sequenzy/types/sending_status_status.py +5 -0
- sequenzy/types/sequence_ab_test_step_summary.py +53 -0
- sequenzy/types/sequence_ab_test_step_summary_test_type.py +5 -0
- sequenzy/types/sequence_ab_test_step_variant.py +54 -0
- sequenzy/types/sequence_action_response.py +79 -0
- sequenzy/types/sequence_branch_condition_input.py +155 -0
- sequenzy/types/sequence_branch_condition_input_activity_scope.py +7 -0
- sequenzy/types/sequence_branch_condition_input_condition_type.py +21 -0
- sequenzy/types/sequence_branch_input.py +102 -0
- sequenzy/types/sequence_branch_input_split_mode.py +5 -0
- sequenzy/types/sequence_branch_path_step_input.py +210 -0
- sequenzy/types/sequence_branch_path_step_input_ineligible_action.py +5 -0
- sequenzy/types/sequence_branch_path_step_input_node_type.py +22 -0
- sequenzy/types/sequence_branch_path_step_input_type.py +10 -0
- sequenzy/types/sequence_create_response.py +51 -0
- sequenzy/types/sequence_create_response_event_tracking.py +72 -0
- sequenzy/types/sequence_create_response_event_tracking_integration_guide.py +20 -0
- sequenzy/types/sequence_create_response_event_tracking_payload_contract.py +42 -0
- sequenzy/types/sequence_create_response_sequence.py +107 -0
- sequenzy/types/sequence_delay_input.py +134 -0
- sequenzy/types/sequence_delay_input_direction.py +5 -0
- sequenzy/types/sequence_delay_input_missing_action.py +5 -0
- sequenzy/types/sequence_delay_input_mode.py +5 -0
- sequenzy/types/sequence_delay_input_until_missing_action.py +5 -0
- sequenzy/types/sequence_delay_input_until_offset_direction.py +5 -0
- sequenzy/types/sequence_delay_offset_input.py +25 -0
- sequenzy/types/sequence_details.py +91 -0
- sequenzy/types/sequence_details_enrichment_status.py +5 -0
- sequenzy/types/sequence_discount_input.py +173 -0
- sequenzy/types/sequence_discount_input_discount_type.py +5 -0
- sequenzy/types/sequence_discount_input_duration.py +5 -0
- sequenzy/types/sequence_discount_input_provider.py +5 -0
- sequenzy/types/sequence_effective_status.py +7 -0
- sequenzy/types/sequence_email.py +206 -0
- sequenzy/types/sequence_email_delay_mode.py +5 -0
- sequenzy/types/sequence_email_email_preset.py +5 -0
- sequenzy/types/sequence_email_node_type.py +5 -0
- sequenzy/types/sequence_email_update_input.py +203 -0
- sequenzy/types/sequence_email_update_input_email_preset.py +5 -0
- sequenzy/types/sequence_enrollment_cancel_response.py +70 -0
- sequenzy/types/sequence_enrollment_cancel_response_enrollments_item.py +33 -0
- sequenzy/types/sequence_enrollment_counts.py +50 -0
- sequenzy/types/sequence_enrollment_counts_by_current_node_item.py +77 -0
- sequenzy/types/sequence_enrollment_list_response.py +61 -0
- sequenzy/types/sequence_enrollment_list_response_enrollments_item.py +203 -0
- sequenzy/types/sequence_enrollment_list_response_enrollments_item_entered_via.py +44 -0
- sequenzy/types/sequence_enrollment_list_response_enrollments_item_entered_via_kind.py +8 -0
- sequenzy/types/sequence_enrollment_list_response_enrollments_item_status.py +7 -0
- sequenzy/types/sequence_enrollment_list_response_pagination.py +27 -0
- sequenzy/types/sequence_enrollment_mode.py +5 -0
- sequenzy/types/sequence_enrollment_move_response.py +133 -0
- sequenzy/types/sequence_enrollment_move_response_enqueue_errors_item.py +24 -0
- sequenzy/types/sequence_enrollment_move_response_enrollments_item.py +33 -0
- sequenzy/types/sequence_enrollment_realign_job_response.py +36 -0
- sequenzy/types/sequence_enrollment_realign_job_response_status.py +7 -0
- sequenzy/types/sequence_enrollment_realign_queued_response.py +30 -0
- sequenzy/types/sequence_enrollment_realign_queued_response_status.py +5 -0
- sequenzy/types/sequence_enrollment_realign_response.py +125 -0
- sequenzy/types/sequence_enrollment_realign_response_changes_item.py +42 -0
- sequenzy/types/sequence_goal.py +69 -0
- sequenzy/types/sequence_goal_attribute_condition.py +5 -0
- sequenzy/types/sequence_goal_input.py +65 -0
- sequenzy/types/sequence_goal_input_attribute_condition.py +7 -0
- sequenzy/types/sequence_goal_input_trigger_type.py +5 -0
- sequenzy/types/sequence_goal_trigger_type.py +5 -0
- sequenzy/types/sequence_graph_edge_input.py +42 -0
- sequenzy/types/sequence_graph_edit_input.py +76 -0
- sequenzy/types/sequence_graph_edit_input_action.py +7 -0
- sequenzy/types/sequence_inbound_webhook.py +50 -0
- sequenzy/types/sequence_inbound_webhook_field_mapping.py +32 -0
- sequenzy/types/sequence_inbound_webhook_status.py +5 -0
- sequenzy/types/sequence_linear_step_insertion_input.py +42 -0
- sequenzy/types/sequence_node.py +64 -0
- sequenzy/types/sequence_node_update_hints.py +45 -0
- sequenzy/types/sequence_node_update_input.py +47 -0
- sequenzy/types/sequence_node_update_input_changes.py +49 -0
- sequenzy/types/sequence_node_update_input_changes_email_preset.py +5 -0
- sequenzy/types/sequence_path_step_config.py +329 -0
- sequenzy/types/sequence_path_step_config_activity_scope.py +7 -0
- sequenzy/types/sequence_path_step_config_condition_type.py +21 -0
- sequenzy/types/sequence_path_step_config_method.py +5 -0
- sequenzy/types/sequence_path_step_config_on_error.py +5 -0
- sequenzy/types/sequence_path_step_config_output_fields_item.py +46 -0
- sequenzy/types/sequence_path_step_config_timeout_action.py +5 -0
- sequenzy/types/sequence_position.py +20 -0
- sequenzy/types/sequence_sending_window.py +56 -0
- sequenzy/types/sequence_sending_window_days_item.py +7 -0
- sequenzy/types/sequence_sms_step_update_input.py +64 -0
- sequenzy/types/sequence_sms_step_update_input_ineligible_action.py +5 -0
- sequenzy/types/sequence_status.py +5 -0
- sequenzy/types/sequence_step_input.py +388 -0
- sequenzy/types/sequence_step_input_discount_type.py +5 -0
- sequenzy/types/sequence_step_input_duration.py +5 -0
- sequenzy/types/sequence_step_input_ineligible_action.py +5 -0
- sequenzy/types/sequence_step_input_node_type.py +7 -0
- sequenzy/types/sequence_step_input_provider.py +5 -0
- sequenzy/types/sequence_step_input_type.py +7 -0
- sequenzy/types/sequence_stop_condition.py +43 -0
- sequenzy/types/sequence_stop_condition_match_config.py +110 -0
- sequenzy/types/sequence_stop_condition_match_config_entry_audience.py +25 -0
- sequenzy/types/sequence_stop_condition_match_config_entry_audience_audience.py +5 -0
- sequenzy/types/sequence_stop_condition_match_config_event_property.py +22 -0
- sequenzy/types/sequence_stop_condition_match_config_event_property_filter.py +34 -0
- sequenzy/types/sequence_stop_condition_match_config_event_property_filter_property_filters_item.py +31 -0
- sequenzy/types/sequence_stop_condition_match_config_event_property_filter_property_filters_item_operator.py +8 -0
- sequenzy/types/sequence_stop_condition_match_config_event_property_rules_item.py +26 -0
- sequenzy/types/sequence_stop_condition_match_config_field_value.py +23 -0
- sequenzy/types/sequence_stop_condition_match_config_field_value_operator.py +7 -0
- sequenzy/types/sequence_stop_condition_type.py +17 -0
- sequenzy/types/sequence_subscriber_update_step_update_input.py +30 -0
- sequenzy/types/sequence_summary.py +151 -0
- sequenzy/types/sequence_summary_paused_by_user.py +21 -0
- sequenzy/types/sequence_trigger_property_filter.py +34 -0
- sequenzy/types/sequence_trigger_property_filter_operator.py +8 -0
- sequenzy/types/sequence_trigger_property_filter_value.py +9 -0
- sequenzy/types/sequence_trigger_property_filter_value_three_item.py +5 -0
- sequenzy/types/sequence_trigger_type.py +10 -0
- sequenzy/types/sequence_wait_until_input.py +93 -0
- sequenzy/types/sequence_wait_until_input_direction.py +5 -0
- sequenzy/types/sequence_wait_until_input_missing_action.py +5 -0
- sequenzy/types/sequence_wait_until_input_until_missing_action.py +5 -0
- sequenzy/types/sequence_wait_until_input_until_offset_direction.py +5 -0
- sequenzy/types/sequence_wait_until_weekday_input.py +86 -0
- sequenzy/types/service_unavailable_error_body.py +26 -0
- sequenzy/types/shopify_browse_abandonment_settings.py +48 -0
- sequenzy/types/shopify_cart_abandonment_settings.py +60 -0
- sequenzy/types/shopify_price_drop_settings.py +59 -0
- sequenzy/types/subscriber.py +91 -0
- sequenzy/types/subscriber_activity_event.py +108 -0
- sequenzy/types/subscriber_activity_event_engagement_quality.py +5 -0
- sequenzy/types/subscriber_email_stats.py +25 -0
- sequenzy/types/subscriber_import.py +96 -0
- sequenzy/types/subscriber_import_record.py +69 -0
- sequenzy/types/subscriber_import_record_custom_attributes_value.py +11 -0
- sequenzy/types/subscriber_import_record_custom_attributes_value_three_item.py +5 -0
- sequenzy/types/subscriber_import_record_status.py +5 -0
- sequenzy/types/subscriber_import_status.py +5 -0
- sequenzy/types/subscriber_list.py +62 -0
- sequenzy/types/subscriber_list_membership.py +42 -0
- sequenzy/types/subscriber_list_pagination.py +54 -0
- sequenzy/types/subscriber_note.py +40 -0
- sequenzy/types/subscriber_note_author.py +21 -0
- sequenzy/types/subscriber_sequence_enrollment.py +54 -0
- sequenzy/types/subscriber_sms_status.py +7 -0
- sequenzy/types/subscriber_status.py +5 -0
- sequenzy/types/subscriber_update_config.py +39 -0
- sequenzy/types/subscriber_update_config_custom_attribute_updates_item.py +37 -0
- sequenzy/types/subscriber_update_config_custom_attribute_updates_item_value.py +5 -0
- sequenzy/types/subscriber_update_config_custom_attribute_updates_item_value_type.py +7 -0
- sequenzy/types/subscriber_update_config_status.py +5 -0
- sequenzy/types/sync_rule.py +36 -0
- sequenzy/types/sync_rule_actions.py +26 -0
- sequenzy/types/sync_rule_conditions.py +56 -0
- sequenzy/types/sync_rule_conditions_purchased_product.py +32 -0
- sequenzy/types/tag_definition.py +26 -0
- sequenzy/types/team_member.py +53 -0
- sequenzy/types/team_member_invited_by.py +21 -0
- sequenzy/types/team_member_kind.py +5 -0
- sequenzy/types/team_member_role.py +5 -0
- sequenzy/types/team_member_status.py +5 -0
- sequenzy/types/team_member_user.py +22 -0
- sequenzy/types/template_detail.py +52 -0
- sequenzy/types/template_localization.py +51 -0
- sequenzy/types/template_localization_status.py +5 -0
- sequenzy/types/template_summary.py +43 -0
- sequenzy/types/too_many_requests_error_body.py +20 -0
- sequenzy/types/tracking_settings.py +50 -0
- sequenzy/types/tracking_settings_auto_utm.py +20 -0
- sequenzy/types/tracking_settings_consent.py +59 -0
- sequenzy/types/tracking_settings_reply_tracking.py +31 -0
- sequenzy/types/tracking_settings_tracking.py +48 -0
- sequenzy/types/tracking_settings_tracking_domain.py +37 -0
- sequenzy/types/transactional_email.py +34 -0
- sequenzy/types/transactional_email_details.py +40 -0
- sequenzy/types/transactional_email_list_item.py +28 -0
- sequenzy/types/transactional_email_list_item_stats.py +31 -0
- sequenzy/types/transactional_metrics_response.py +49 -0
- sequenzy/types/transactional_metrics_response_bounce_breakdown.py +25 -0
- sequenzy/types/transactional_metrics_response_bounce_breakdown_subtypes_item.py +28 -0
- sequenzy/types/transactional_metrics_response_bounce_breakdown_subtypes_item_type.py +7 -0
- sequenzy/types/transactional_metrics_response_clicked_links_item.py +21 -0
- sequenzy/types/transactional_metrics_response_complaints.py +20 -0
- sequenzy/types/transactional_metrics_response_engagement_breakdown.py +26 -0
- sequenzy/types/transactional_metrics_response_engagement_breakdown_human.py +20 -0
- sequenzy/types/transactional_metrics_response_engagement_breakdown_machine.py +20 -0
- sequenzy/types/transactional_metrics_response_stats.py +25 -0
- sequenzy/types/transactional_metrics_response_transactional.py +21 -0
- sequenzy/types/transactional_send_diagnostics.py +41 -0
- sequenzy/types/transactional_send_diagnostics_missing_required_variables_item.py +34 -0
- sequenzy/types/transactional_send_diagnostics_missing_required_variables_item_used_in_item.py +31 -0
- sequenzy/types/transactional_send_diagnostics_missing_required_variables_item_used_in_item_surface.py +7 -0
- sequenzy/types/transactional_send_diagnostics_status.py +5 -0
- sequenzy/types/transactional_send_diagnostics_unused_variables_item.py +21 -0
- sequenzy/types/unauthorized_error_body.py +21 -0
- sequenzy/types/unauthorized_error_body_error.py +20 -0
- sequenzy/types/unprocessable_entity_error_body.py +26 -0
- sequenzy/types/url_attachment.py +31 -0
- sequenzy/types/web_tracking_key.py +100 -0
- sequenzy/types/website.py +102 -0
- sequenzy/types/website_readiness.py +26 -0
- sequenzy/types/website_readiness_reason.py +10 -0
- sequenzy/types/website_readiness_status.py +7 -0
- sequenzy/types/website_status.py +7 -0
- sequenzy/web_tracking_keys/__init__.py +55 -0
- sequenzy/web_tracking_keys/client.py +554 -0
- sequenzy/web_tracking_keys/raw_client.py +1087 -0
- sequenzy/web_tracking_keys/types/__init__.py +53 -0
- sequenzy/web_tracking_keys/types/create_web_tracking_keys_response.py +22 -0
- sequenzy/web_tracking_keys/types/delete_web_tracking_keys_response.py +20 -0
- sequenzy/web_tracking_keys/types/get_web_tracking_keys_response.py +21 -0
- sequenzy/web_tracking_keys/types/list_web_tracking_keys_response.py +21 -0
- sequenzy/web_tracking_keys/types/mint_identity_web_tracking_keys_response.py +47 -0
- sequenzy/web_tracking_keys/types/update_web_tracking_keys_response.py +21 -0
- sequenzy/webhooks/__init__.py +70 -0
- sequenzy/webhooks/client.py +834 -0
- sequenzy/webhooks/raw_client.py +1602 -0
- sequenzy/webhooks/types/__init__.py +68 -0
- sequenzy/webhooks/types/add_signing_secret_webhooks_response.py +21 -0
- sequenzy/webhooks/types/create_webhooks_response.py +21 -0
- sequenzy/webhooks/types/delete_webhooks_response.py +21 -0
- sequenzy/webhooks/types/list_deliveries_webhooks_response.py +21 -0
- sequenzy/webhooks/types/list_delivery_attempts_webhooks_response.py +21 -0
- sequenzy/webhooks/types/list_webhooks_response.py +21 -0
- sequenzy/webhooks/types/remove_signing_secret_webhooks_response.py +21 -0
- sequenzy/webhooks/types/replay_delivery_webhooks_response.py +21 -0
- sequenzy/webhooks/types/test_webhooks_response.py +29 -0
- sequenzy/webhooks/types/update_webhooks_request_status.py +5 -0
- sequenzy/webhooks/types/update_webhooks_response.py +21 -0
- sequenzy/websites/__init__.py +39 -0
- sequenzy/websites/client.py +320 -0
- sequenzy/websites/raw_client.py +696 -0
- sequenzy/websites/types/__init__.py +42 -0
- sequenzy/websites/types/add_websites_response.py +21 -0
- sequenzy/websites/types/get_websites_response.py +21 -0
- sequenzy/websites/types/list_websites_response.py +21 -0
- sequenzy/websites/types/verify_sending_domain_response.py +42 -0
- sequenzy/widgets/__init__.py +133 -0
- sequenzy/widgets/client.py +2327 -0
- sequenzy/widgets/preferences/__init__.py +34 -0
- sequenzy/widgets/preferences/client.py +123 -0
- sequenzy/widgets/preferences/raw_client.py +224 -0
- sequenzy/widgets/preferences/types/__init__.py +34 -0
- sequenzy/widgets/preferences/types/generate_token_preferences_response.py +23 -0
- sequenzy/widgets/raw_client.py +3966 -0
- sequenzy/widgets/types/__init__.py +127 -0
- sequenzy/widgets/types/create_saved_form_request_duplicate_strategy.py +5 -0
- sequenzy/widgets/types/create_saved_form_response.py +21 -0
- sequenzy/widgets/types/create_saved_popup_request_duplicate_strategy.py +5 -0
- sequenzy/widgets/types/create_saved_popup_request_placement.py +5 -0
- sequenzy/widgets/types/create_saved_popup_request_presentation.py +7 -0
- sequenzy/widgets/types/create_saved_popup_request_status.py +5 -0
- sequenzy/widgets/types/create_saved_popup_request_template.py +21 -0
- sequenzy/widgets/types/create_saved_popup_response.py +24 -0
- sequenzy/widgets/types/delete_saved_popup_response.py +25 -0
- sequenzy/widgets/types/duplicate_saved_popup_response.py +22 -0
- sequenzy/widgets/types/get_saved_form_embed_response.py +22 -0
- sequenzy/widgets/types/get_saved_form_embed_response_embed.py +36 -0
- sequenzy/widgets/types/get_saved_popup_embed_response.py +23 -0
- sequenzy/widgets/types/get_saved_popup_response.py +23 -0
- sequenzy/widgets/types/list_saved_forms_response.py +24 -0
- sequenzy/widgets/types/list_saved_forms_response_forms_item.py +27 -0
- sequenzy/widgets/types/list_saved_popups_request_include_content.py +5 -0
- sequenzy/widgets/types/list_saved_popups_response.py +30 -0
- sequenzy/widgets/types/submit_company_scoped_saved_signup_form_request_duplicate_strategy.py +7 -0
- sequenzy/widgets/types/submit_company_scoped_saved_signup_form_response.py +19 -0
- sequenzy/widgets/types/submit_saved_popup_response.py +32 -0
- sequenzy/widgets/types/submit_signup_form_request_duplicate_strategy.py +5 -0
- sequenzy/widgets/types/submit_signup_form_response.py +19 -0
- sequenzy/widgets/types/update_saved_form_request_duplicate_strategy.py +5 -0
- sequenzy/widgets/types/update_saved_form_response.py +26 -0
- sequenzy/widgets/types/update_saved_popup_request_duplicate_strategy.py +5 -0
- sequenzy/widgets/types/update_saved_popup_request_placement.py +5 -0
- sequenzy/widgets/types/update_saved_popup_request_presentation.py +7 -0
- sequenzy/widgets/types/update_saved_popup_request_status.py +5 -0
- sequenzy/widgets/types/update_saved_popup_response.py +24 -0
- sequenzy-2.0.0.dist-info/METADATA +204 -0
- sequenzy-2.0.0.dist-info/RECORD +1149 -0
- sequenzy-2.0.0.dist-info/WHEEL +4 -0
- 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
|