wavix-python-sdk 1.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.
- wavix/__init__.py +801 -0
- wavix/_default_clients.py +32 -0
- wavix/api_keys/__init__.py +4 -0
- wavix/api_keys/client.py +764 -0
- wavix/api_keys/raw_client.py +1191 -0
- wavix/billing/__init__.py +41 -0
- wavix/billing/client.py +82 -0
- wavix/billing/invoices/__init__.py +34 -0
- wavix/billing/invoices/client.py +203 -0
- wavix/billing/invoices/raw_client.py +302 -0
- wavix/billing/invoices/types/__init__.py +34 -0
- wavix/billing/invoices/types/list_invoices_response.py +31 -0
- wavix/billing/raw_client.py +13 -0
- wavix/billing/transactions/__init__.py +34 -0
- wavix/billing/transactions/client.py +209 -0
- wavix/billing/transactions/raw_client.py +253 -0
- wavix/billing/transactions/types/__init__.py +34 -0
- wavix/billing/transactions/types/list_transactions_response.py +31 -0
- wavix/buy/__init__.py +61 -0
- wavix/buy/cities/__init__.py +34 -0
- wavix/buy/cities/client.py +134 -0
- wavix/buy/cities/raw_client.py +201 -0
- wavix/buy/cities/types/__init__.py +34 -0
- wavix/buy/cities/types/list_cities_response.py +23 -0
- wavix/buy/client.py +139 -0
- wavix/buy/countries/__init__.py +34 -0
- wavix/buy/countries/client.py +116 -0
- wavix/buy/countries/raw_client.py +144 -0
- wavix/buy/countries/types/__init__.py +34 -0
- wavix/buy/countries/types/list_countries_response.py +23 -0
- wavix/buy/numbers/__init__.py +34 -0
- wavix/buy/numbers/client.py +168 -0
- wavix/buy/numbers/raw_client.py +227 -0
- wavix/buy/numbers/types/__init__.py +34 -0
- wavix/buy/numbers/types/list_numbers_response.py +26 -0
- wavix/buy/raw_client.py +13 -0
- wavix/buy/region_cities/__init__.py +34 -0
- wavix/buy/region_cities/client.py +142 -0
- wavix/buy/region_cities/raw_client.py +207 -0
- wavix/buy/region_cities/types/__init__.py +34 -0
- wavix/buy/region_cities/types/list_region_cities_response.py +23 -0
- wavix/buy/regions/__init__.py +34 -0
- wavix/buy/regions/client.py +132 -0
- wavix/buy/regions/raw_client.py +222 -0
- wavix/buy/regions/types/__init__.py +34 -0
- wavix/buy/regions/types/list_regions_response.py +23 -0
- wavix/call_control/__init__.py +40 -0
- wavix/call_control/audio/__init__.py +4 -0
- wavix/call_control/audio/client.py +195 -0
- wavix/call_control/audio/raw_client.py +333 -0
- wavix/call_control/client.py +796 -0
- wavix/call_control/raw_client.py +1224 -0
- wavix/call_control/streams/__init__.py +4 -0
- wavix/call_control/streams/client.py +250 -0
- wavix/call_control/streams/raw_client.py +325 -0
- wavix/call_control/types/__init__.py +38 -0
- wavix/call_control/types/call_dtmf_collect_request_prompt.py +33 -0
- wavix/call_control/types/call_dtmf_collect_request_prompt_say.py +31 -0
- wavix/call_recording/__init__.py +4 -0
- wavix/call_recording/client.py +430 -0
- wavix/call_recording/raw_client.py +726 -0
- wavix/call_webhooks/__init__.py +37 -0
- wavix/call_webhooks/client.py +281 -0
- wavix/call_webhooks/raw_client.py +529 -0
- wavix/call_webhooks/types/__init__.py +38 -0
- wavix/call_webhooks/types/call_webhooks_create_request_event_type.py +5 -0
- wavix/call_webhooks/types/delete_call_webhooks_request_event_type.py +5 -0
- wavix/cart/__init__.py +38 -0
- wavix/cart/client.py +327 -0
- wavix/cart/raw_client.py +629 -0
- wavix/cart/types/__init__.py +40 -0
- wavix/cart/types/checkout_cart_response.py +22 -0
- wavix/cart/types/get_cart_response.py +29 -0
- wavix/cart/types/remove_cart_response.py +22 -0
- wavix/cdrs/__init__.py +39 -0
- wavix/cdrs/client.py +968 -0
- wavix/cdrs/raw_client.py +1176 -0
- wavix/cdrs/transcription/__init__.py +4 -0
- wavix/cdrs/transcription/client.py +112 -0
- wavix/cdrs/transcription/raw_client.py +156 -0
- wavix/cdrs/types/__init__.py +38 -0
- wavix/cdrs/types/cdr_search_request_disposition.py +5 -0
- wavix/cdrs/types/cdr_search_request_type.py +5 -0
- wavix/client.py +578 -0
- wavix/core/__init__.py +127 -0
- wavix/core/api_error.py +23 -0
- wavix/core/client_wrapper.py +119 -0
- wavix/core/datetime_utils.py +70 -0
- wavix/core/file.py +67 -0
- wavix/core/force_multipart.py +18 -0
- wavix/core/http_client.py +839 -0
- wavix/core/http_response.py +59 -0
- wavix/core/http_sse/__init__.py +42 -0
- wavix/core/http_sse/_api.py +170 -0
- wavix/core/http_sse/_decoders.py +61 -0
- wavix/core/http_sse/_exceptions.py +7 -0
- wavix/core/http_sse/_models.py +17 -0
- wavix/core/jsonable_encoder.py +120 -0
- wavix/core/logging.py +107 -0
- wavix/core/parse_error.py +36 -0
- wavix/core/pydantic_utilities.py +508 -0
- wavix/core/query_encoder.py +58 -0
- wavix/core/remove_none_from_dict.py +11 -0
- wavix/core/request_options.py +35 -0
- wavix/core/serialization.py +347 -0
- wavix/environment.py +7 -0
- wavix/errors/__init__.py +56 -0
- wavix/errors/bad_request_error.py +10 -0
- wavix/errors/forbidden_error.py +10 -0
- wavix/errors/not_found_error.py +10 -0
- wavix/errors/service_unavailable_error.py +11 -0
- wavix/errors/too_many_requests_error.py +11 -0
- wavix/errors/unauthorized_error.py +11 -0
- wavix/errors/unprocessable_entity_error.py +10 -0
- wavix/link_shortener/__init__.py +34 -0
- wavix/link_shortener/client.py +194 -0
- wavix/link_shortener/metrics/__init__.py +4 -0
- wavix/link_shortener/metrics/client.py +198 -0
- wavix/link_shortener/metrics/raw_client.py +218 -0
- wavix/link_shortener/raw_client.py +265 -0
- wavix/number_validator/__init__.py +35 -0
- wavix/number_validator/client.py +271 -0
- wavix/number_validator/raw_client.py +383 -0
- wavix/number_validator/results/__init__.py +4 -0
- wavix/number_validator/results/client.py +114 -0
- wavix/number_validator/results/raw_client.py +156 -0
- wavix/number_validator/types/__init__.py +34 -0
- wavix/number_validator/types/get_number_validator_response.py +112 -0
- wavix/numbers/__init__.py +39 -0
- wavix/numbers/client.py +689 -0
- wavix/numbers/papers/__init__.py +4 -0
- wavix/numbers/papers/client.py +155 -0
- wavix/numbers/papers/raw_client.py +208 -0
- wavix/numbers/raw_client.py +1000 -0
- wavix/numbers/types/__init__.py +38 -0
- wavix/numbers/types/bulk_update_numbers_response.py +23 -0
- wavix/numbers/types/delete_numbers_response.py +22 -0
- wavix/profile/__init__.py +41 -0
- wavix/profile/client.py +308 -0
- wavix/profile/config/__init__.py +34 -0
- wavix/profile/config/client.py +100 -0
- wavix/profile/config/raw_client.py +124 -0
- wavix/profile/config/types/__init__.py +34 -0
- wavix/profile/config/types/get_config_response.py +25 -0
- wavix/profile/raw_client.py +360 -0
- wavix/profile/types/__init__.py +38 -0
- wavix/profile/types/profile_update_request_company_info.py +48 -0
- wavix/profile/types/profile_update_request_company_info_industry.py +22 -0
- wavix/py.typed +0 -0
- wavix/sip_trunks/__init__.py +4 -0
- wavix/sip_trunks/client.py +927 -0
- wavix/sip_trunks/raw_client.py +1324 -0
- wavix/sms_and_mms/__init__.py +66 -0
- wavix/sms_and_mms/client.py +101 -0
- wavix/sms_and_mms/messages/__init__.py +49 -0
- wavix/sms_and_mms/messages/client.py +625 -0
- wavix/sms_and_mms/messages/raw_client.py +793 -0
- wavix/sms_and_mms/messages/types/__init__.py +47 -0
- wavix/sms_and_mms/messages/types/get_messages_response.py +97 -0
- wavix/sms_and_mms/messages/types/list_all_messages_request_message_type.py +5 -0
- wavix/sms_and_mms/messages/types/list_messages_request_message_type.py +5 -0
- wavix/sms_and_mms/messages/types/list_messages_response.py +26 -0
- wavix/sms_and_mms/opt_outs/__init__.py +34 -0
- wavix/sms_and_mms/opt_outs/client.py +277 -0
- wavix/sms_and_mms/opt_outs/raw_client.py +438 -0
- wavix/sms_and_mms/opt_outs/types/__init__.py +34 -0
- wavix/sms_and_mms/opt_outs/types/create_opt_outs_response.py +22 -0
- wavix/sms_and_mms/raw_client.py +13 -0
- wavix/sms_and_mms/sender_ids/__init__.py +38 -0
- wavix/sms_and_mms/sender_ids/client.py +391 -0
- wavix/sms_and_mms/sender_ids/raw_client.py +617 -0
- wavix/sms_and_mms/sender_ids/types/__init__.py +40 -0
- wavix/sms_and_mms/sender_ids/types/delete_sender_ids_response.py +22 -0
- wavix/sms_and_mms/sender_ids/types/sender_id_create_request_monthly_volume.py +7 -0
- wavix/sms_and_mms/sender_ids/types/sender_id_create_request_usecase.py +5 -0
- wavix/speech_analytics/__init__.py +52 -0
- wavix/speech_analytics/client.py +372 -0
- wavix/speech_analytics/file/__init__.py +4 -0
- wavix/speech_analytics/file/client.py +114 -0
- wavix/speech_analytics/file/raw_client.py +148 -0
- wavix/speech_analytics/raw_client.py +527 -0
- wavix/speech_analytics/types/__init__.py +47 -0
- wavix/speech_analytics/types/create_speech_analytics_response.py +32 -0
- wavix/speech_analytics/types/get_speech_analytics_response.py +77 -0
- wavix/speech_analytics/types/get_speech_analytics_response_language.py +5 -0
- wavix/speech_analytics/types/get_speech_analytics_response_status.py +5 -0
- wavix/sub_accounts/__init__.py +52 -0
- wavix/sub_accounts/client.py +442 -0
- wavix/sub_accounts/raw_client.py +775 -0
- wavix/sub_accounts/transactions/__init__.py +4 -0
- wavix/sub_accounts/transactions/client.py +198 -0
- wavix/sub_accounts/transactions/raw_client.py +265 -0
- wavix/sub_accounts/types/__init__.py +47 -0
- wavix/sub_accounts/types/list_sub_accounts_request_status.py +5 -0
- wavix/sub_accounts/types/sub_accounts_create_request_default_destinations.py +31 -0
- wavix/sub_accounts/types/sub_accounts_update_request_default_destinations.py +31 -0
- wavix/sub_accounts/types/sub_accounts_update_request_status.py +5 -0
- wavix/ten_dlc/__init__.py +167 -0
- wavix/ten_dlc/brand_appeals/__init__.py +34 -0
- wavix/ten_dlc/brand_appeals/client.py +244 -0
- wavix/ten_dlc/brand_appeals/raw_client.py +390 -0
- wavix/ten_dlc/brand_appeals/types/__init__.py +34 -0
- wavix/ten_dlc/brand_appeals/types/create_brand_appeals_response.py +22 -0
- wavix/ten_dlc/brand_evidence/__init__.py +37 -0
- wavix/ten_dlc/brand_evidence/client.py +365 -0
- wavix/ten_dlc/brand_evidence/raw_client.py +599 -0
- wavix/ten_dlc/brand_evidence/types/__init__.py +38 -0
- wavix/ten_dlc/brand_evidence/types/delete_brand_evidence_response.py +22 -0
- wavix/ten_dlc/brand_evidence/types/upload_brand_evidence_response.py +38 -0
- wavix/ten_dlc/brand_vetting_appeals/__init__.py +34 -0
- wavix/ten_dlc/brand_vetting_appeals/client.py +258 -0
- wavix/ten_dlc/brand_vetting_appeals/raw_client.py +381 -0
- wavix/ten_dlc/brand_vetting_appeals/types/__init__.py +36 -0
- wavix/ten_dlc/brand_vetting_appeals/types/create_brand_vetting_appeals_response.py +22 -0
- wavix/ten_dlc/brand_vettings/__init__.py +4 -0
- wavix/ten_dlc/brand_vettings/client.py +325 -0
- wavix/ten_dlc/brand_vettings/raw_client.py +518 -0
- wavix/ten_dlc/brands/__init__.py +85 -0
- wavix/ten_dlc/brands/client.py +870 -0
- wavix/ten_dlc/brands/raw_client.py +1263 -0
- wavix/ten_dlc/brands/types/__init__.py +83 -0
- wavix/ten_dlc/brands/types/create_brands_response.py +143 -0
- wavix/ten_dlc/brands/types/create_brands_response_entity_type.py +7 -0
- wavix/ten_dlc/brands/types/create_brands_response_status.py +7 -0
- wavix/ten_dlc/brands/types/delete_brands_response.py +22 -0
- wavix/ten_dlc/brands/types/get_brands_response.py +143 -0
- wavix/ten_dlc/brands/types/get_brands_response_entity_type.py +7 -0
- wavix/ten_dlc/brands/types/get_brands_response_status.py +7 -0
- wavix/ten_dlc/brands/types/list_brands_response.py +33 -0
- wavix/ten_dlc/brands/types/list_brands_response_pagination.py +41 -0
- wavix/ten_dlc/brands/types/qualify_usecase_brands_request_use_case.py +35 -0
- wavix/ten_dlc/brands/types/qualify_usecase_brands_response.py +33 -0
- wavix/ten_dlc/brands/types/ten_dlc_brand_update_request_entity_type.py +7 -0
- wavix/ten_dlc/brands/types/ten_dlc_brand_update_request_vertical.py +18 -0
- wavix/ten_dlc/brands/types/update_brands_response.py +143 -0
- wavix/ten_dlc/brands/types/update_brands_response_entity_type.py +7 -0
- wavix/ten_dlc/brands/types/update_brands_response_status.py +7 -0
- wavix/ten_dlc/campaign_numbers/__init__.py +38 -0
- wavix/ten_dlc/campaign_numbers/client.py +304 -0
- wavix/ten_dlc/campaign_numbers/raw_client.py +448 -0
- wavix/ten_dlc/campaign_numbers/types/__init__.py +40 -0
- wavix/ten_dlc/campaign_numbers/types/link_campaign_numbers_response.py +22 -0
- wavix/ten_dlc/campaign_numbers/types/list_campaign_numbers_response.py +33 -0
- wavix/ten_dlc/campaign_numbers/types/unlink_campaign_numbers_response.py +22 -0
- wavix/ten_dlc/campaigns/__init__.py +64 -0
- wavix/ten_dlc/campaigns/client.py +1493 -0
- wavix/ten_dlc/campaigns/raw_client.py +1840 -0
- wavix/ten_dlc/campaigns/types/__init__.py +62 -0
- wavix/ten_dlc/campaigns/types/create_campaigns_response.py +211 -0
- wavix/ten_dlc/campaigns/types/delete_campaigns_response.py +22 -0
- wavix/ten_dlc/campaigns/types/get_campaigns_response.py +211 -0
- wavix/ten_dlc/campaigns/types/list_by_brand_campaigns_response.py +33 -0
- wavix/ten_dlc/campaigns/types/list_by_brand_campaigns_response_pagination.py +41 -0
- wavix/ten_dlc/campaigns/types/list_campaigns_response.py +33 -0
- wavix/ten_dlc/campaigns/types/list_campaigns_response_pagination.py +41 -0
- wavix/ten_dlc/campaigns/types/ten_dlc_campaign_update_request_usecase.py +15 -0
- wavix/ten_dlc/campaigns/types/update_campaigns_response.py +211 -0
- wavix/ten_dlc/client.py +196 -0
- wavix/ten_dlc/raw_client.py +13 -0
- wavix/ten_dlc/subscriptions/__init__.py +37 -0
- wavix/ten_dlc/subscriptions/client.py +271 -0
- wavix/ten_dlc/subscriptions/raw_client.py +398 -0
- wavix/ten_dlc/subscriptions/types/__init__.py +38 -0
- wavix/ten_dlc/subscriptions/types/create_subscriptions_response.py +31 -0
- wavix/ten_dlc/subscriptions/types/delete_subscriptions_response.py +22 -0
- wavix/two_fa/__init__.py +56 -0
- wavix/two_fa/client.py +101 -0
- wavix/two_fa/events/__init__.py +4 -0
- wavix/two_fa/events/client.py +114 -0
- wavix/two_fa/events/raw_client.py +156 -0
- wavix/two_fa/raw_client.py +13 -0
- wavix/two_fa/sessions/__init__.py +4 -0
- wavix/two_fa/sessions/client.py +142 -0
- wavix/two_fa/sessions/raw_client.py +200 -0
- wavix/two_fa/verification/__init__.py +49 -0
- wavix/two_fa/verification/client.py +395 -0
- wavix/two_fa/verification/raw_client.py +664 -0
- wavix/two_fa/verification/types/__init__.py +47 -0
- wavix/two_fa/verification/types/check_verification_response.py +22 -0
- wavix/two_fa/verification/types/create_verification_response.py +51 -0
- wavix/two_fa/verification/types/resend_verification_response.py +38 -0
- wavix/two_fa/verification/types/two_factor_verification_resend_request_channel.py +5 -0
- wavix/types/__init__.py +637 -0
- wavix/types/account_error_response.py +31 -0
- wavix/types/account_limits.py +32 -0
- wavix/types/allowed_i_ps.py +7 -0
- wavix/types/allowed_i_ps_item.py +27 -0
- wavix/types/api_key.py +138 -0
- wavix/types/api_key_calls_scope_permission.py +30 -0
- wavix/types/api_key_calls_scope_permission_allow.py +5 -0
- wavix/types/api_key_scope_permission.py +30 -0
- wavix/types/api_key_scope_permission_allow.py +5 -0
- wavix/types/available_number.py +97 -0
- wavix/types/available_number_list_response.py +26 -0
- wavix/types/bad_request_error_body.py +27 -0
- wavix/types/billing_transaction_list_response.py +31 -0
- wavix/types/brand_status_updated_webhook.py +28 -0
- wavix/types/brand_status_updated_webhook_status.py +7 -0
- wavix/types/call.py +92 -0
- wavix/types/call_control_validation_error_response.py +34 -0
- wavix/types/call_create_response.py +92 -0
- wavix/types/call_create_response_event_type.py +18 -0
- wavix/types/call_direction.py +5 -0
- wavix/types/call_disposition.py +5 -0
- wavix/types/call_event_type.py +18 -0
- wavix/types/call_list_response.py +28 -0
- wavix/types/call_recording_list_response.py +28 -0
- wavix/types/call_response.py +24 -0
- wavix/types/call_status_webhook.py +70 -0
- wavix/types/call_status_webhook_direction.py +5 -0
- wavix/types/call_stream_channel.py +5 -0
- wavix/types/call_stream_response.py +27 -0
- wavix/types/call_stream_type.py +5 -0
- wavix/types/call_webhook.py +37 -0
- wavix/types/call_webhook_event_type.py +5 -0
- wavix/types/call_webhook_list_response.py +10 -0
- wavix/types/call_webhook_list_response_item.py +28 -0
- wavix/types/call_webhook_list_response_item_event_type.py +5 -0
- wavix/types/campaign_status_updated_webhook.py +41 -0
- wavix/types/campaign_status_updated_webhook_status.py +7 -0
- wavix/types/cart_response.py +29 -0
- wavix/types/cdr.py +97 -0
- wavix/types/cdr_list_response.py +26 -0
- wavix/types/cdr_response.py +104 -0
- wavix/types/cdr_transcription_completed_webhook.py +28 -0
- wavix/types/cdr_transcription_completed_webhook_status.py +5 -0
- wavix/types/cdr_transcription_response.py +74 -0
- wavix/types/cdr_transcription_search_response.py +26 -0
- wavix/types/cdr_with_transcription.py +97 -0
- wavix/types/city.py +32 -0
- wavix/types/city_list_response.py +23 -0
- wavix/types/country.py +32 -0
- wavix/types/country_has_no_regions_error_response.py +27 -0
- wavix/types/country_list_response.py +23 -0
- wavix/types/document_type.py +32 -0
- wavix/types/document_type_id.py +7 -0
- wavix/types/file_transcript_response.py +30 -0
- wavix/types/file_transcript_turn.py +46 -0
- wavix/types/file_transcription_completed_webhook.py +32 -0
- wavix/types/file_transcription_response.py +77 -0
- wavix/types/file_transcription_response_language.py +5 -0
- wavix/types/file_transcription_response_status.py +5 -0
- wavix/types/financial_transaction.py +57 -0
- wavix/types/forbidden_error_response.py +27 -0
- wavix/types/inbound_call_destination.py +53 -0
- wavix/types/inbound_call_transport.py +6 -0
- wavix/types/inbound_message.py +46 -0
- wavix/types/invalid_recording.py +31 -0
- wavix/types/invoice.py +42 -0
- wavix/types/invoice_list_response.py +31 -0
- wavix/types/list_brand_evidence_response.py +23 -0
- wavix/types/list_sessions_response_item.py +58 -0
- wavix/types/message.py +103 -0
- wavix/types/message_body.py +29 -0
- wavix/types/message_create_request.py +46 -0
- wavix/types/message_delivery_status.py +8 -0
- wavix/types/message_list_response.py +26 -0
- wavix/types/message_response.py +97 -0
- wavix/types/messages_delivery_report.py +81 -0
- wavix/types/not_found_error_body.py +27 -0
- wavix/types/not_found_error_response.py +27 -0
- wavix/types/number.py +160 -0
- wavix/types/number_destination.py +38 -0
- wavix/types/number_document.py +58 -0
- wavix/types/number_list_response.py +32 -0
- wavix/types/number_status_updated_webhook.py +38 -0
- wavix/types/number_status_updated_webhook_status.py +5 -0
- wavix/types/number_validator_create_bulk_response.py +10 -0
- wavix/types/number_validator_create_bulk_response_request_id.py +26 -0
- wavix/types/on_call_event_payload.py +34 -0
- wavix/types/on_call_event_payload_type.py +5 -0
- wavix/types/opt_out.py +27 -0
- wavix/types/opt_out_item.py +38 -0
- wavix/types/opt_outs_list_response.py +26 -0
- wavix/types/pagination.py +37 -0
- wavix/types/phone_lookup_details.py +32 -0
- wavix/types/phone_number_validation_type.py +5 -0
- wavix/types/phone_validation_batch_response.py +38 -0
- wavix/types/phone_validation_batch_result_response.py +41 -0
- wavix/types/phone_validation_response.py +112 -0
- wavix/types/phone_validation_result_response.py +115 -0
- wavix/types/profile_config_response.py +25 -0
- wavix/types/profile_response.py +79 -0
- wavix/types/profile_response_company_info.py +53 -0
- wavix/types/profile_response_company_info_country.py +31 -0
- wavix/types/profile_response_company_info_industry.py +22 -0
- wavix/types/profile_response_default_destinations_item.py +27 -0
- wavix/types/record_not_found_error_response.py +27 -0
- wavix/types/recording.py +57 -0
- wavix/types/recording_deleted_error_response.py +38 -0
- wavix/types/region.py +31 -0
- wavix/types/region_list_response.py +23 -0
- wavix/types/send_messages_response.py +100 -0
- wavix/types/sender_id.py +48 -0
- wavix/types/sender_id_details.py +44 -0
- wavix/types/sender_id_list_response.py +23 -0
- wavix/types/sender_id_response.py +48 -0
- wavix/types/sender_id_response_type.py +5 -0
- wavix/types/sender_id_type.py +5 -0
- wavix/types/short_link_metrics_item.py +69 -0
- wavix/types/short_link_metrics_response.py +26 -0
- wavix/types/short_link_response.py +22 -0
- wavix/types/sip_trunk_create_request.py +132 -0
- wavix/types/sip_trunk_create_request_allowed_ips_item.py +22 -0
- wavix/types/sip_trunk_create_request_host_request.py +26 -0
- wavix/types/sip_trunk_list_response.py +26 -0
- wavix/types/sip_trunk_response.py +145 -0
- wavix/types/sip_trunk_summary.py +114 -0
- wavix/types/sip_trunk_summary_host_request.py +31 -0
- wavix/types/sub_accounts_list_response.py +26 -0
- wavix/types/sub_accounts_transactions_list_response.py +30 -0
- wavix/types/sub_accounts_transactions_list_response_transactions_item.py +48 -0
- wavix/types/sub_organization_response.py +59 -0
- wavix/types/sub_organization_response_default_destinations.py +31 -0
- wavix/types/sub_organization_response_status.py +5 -0
- wavix/types/submit_file_transcription_response.py +32 -0
- wavix/types/success_response.py +22 -0
- wavix/types/tcr_error_message.py +27 -0
- wavix/types/tcr_feedback.py +23 -0
- wavix/types/tcr_feedback_category.py +47 -0
- wavix/types/ten_dlc_brand.py +143 -0
- wavix/types/ten_dlc_brand_appeal.py +54 -0
- wavix/types/ten_dlc_brand_appeal_create_request.py +36 -0
- wavix/types/ten_dlc_brand_appeal_outcome.py +38 -0
- wavix/types/ten_dlc_brand_appeal_outcome_feedback.py +27 -0
- wavix/types/ten_dlc_brand_appeal_outcome_vetting_status.py +7 -0
- wavix/types/ten_dlc_brand_create_request.py +8 -0
- wavix/types/ten_dlc_brand_create_request_entity_type.py +7 -0
- wavix/types/ten_dlc_brand_create_request_stock_exchange.py +26 -0
- wavix/types/ten_dlc_brand_create_request_stock_exchange_entity_type.py +7 -0
- wavix/types/ten_dlc_brand_create_request_vertical.py +18 -0
- wavix/types/ten_dlc_brand_create_request_zero.py +24 -0
- wavix/types/ten_dlc_brand_create_request_zero_entity_type.py +5 -0
- wavix/types/ten_dlc_brand_entity_type.py +7 -0
- wavix/types/ten_dlc_brand_evidence.py +38 -0
- wavix/types/ten_dlc_brand_identity_verification_status.py +7 -0
- wavix/types/ten_dlc_brand_list_response.py +33 -0
- wavix/types/ten_dlc_brand_list_response_pagination.py +41 -0
- wavix/types/ten_dlc_brand_qualification_result.py +33 -0
- wavix/types/ten_dlc_brand_status.py +7 -0
- wavix/types/ten_dlc_brand_vetting.py +71 -0
- wavix/types/ten_dlc_brand_vetting_appeal.py +78 -0
- wavix/types/ten_dlc_brand_vetting_appeal_appeal_outcome.py +37 -0
- wavix/types/ten_dlc_brand_vetting_appeal_appeal_outcome_feedback.py +26 -0
- wavix/types/ten_dlc_brand_vetting_appeal_outcome.py +33 -0
- wavix/types/ten_dlc_brand_vetting_appeal_outcome_feedback.py +26 -0
- wavix/types/ten_dlc_brand_vetting_appeal_outcome_reason.py +22 -0
- wavix/types/ten_dlc_campaign.py +211 -0
- wavix/types/ten_dlc_campaign_list_response.py +33 -0
- wavix/types/ten_dlc_campaign_list_response_pagination.py +41 -0
- wavix/types/ten_dlc_campaign_nudge_request.py +32 -0
- wavix/types/ten_dlc_campaign_number.py +27 -0
- wavix/types/ten_dlc_campaign_number_list_response.py +33 -0
- wavix/types/ten_dlc_event_subscription.py +31 -0
- wavix/types/ten_dlcmno_metadata.py +101 -0
- wavix/types/transaction_status.py +5 -0
- wavix/types/transaction_type.py +50 -0
- wavix/types/transcript_turn.py +46 -0
- wavix/types/transcription_filter.py +35 -0
- wavix/types/transcription_filter_agent.py +36 -0
- wavix/types/transcription_filter_any.py +36 -0
- wavix/types/transcription_filter_client.py +36 -0
- wavix/types/transcription_language.py +5 -0
- wavix/types/transcription_reference.py +29 -0
- wavix/types/transcription_status.py +5 -0
- wavix/types/tts_language.py +5 -0
- wavix/types/tts_voice_id.py +25 -0
- wavix/types/two_factor_verification_check_response.py +22 -0
- wavix/types/two_factor_verification_event.py +47 -0
- wavix/types/two_factor_verification_resend_response.py +38 -0
- wavix/types/two_factor_verification_response.py +51 -0
- wavix/types/unauthorized_error_response.py +32 -0
- wavix/types/unprocessable_entity_error_body.py +27 -0
- wavix/types/validation_error_response.py +27 -0
- wavix/types/voice_campaign_create_request.py +20 -0
- wavix/types/voice_campaign_response.py +41 -0
- wavix/types/voice_campaigns_create_response.py +20 -0
- wavix/types/voice_campaigns_create_response_voice_campaign.py +43 -0
- wavix/types/voice_campaigns_get_response.py +20 -0
- wavix/types/voice_campaigns_get_response_voice_campaign.py +43 -0
- wavix/types/web_rtc_token.py +43 -0
- wavix/types/web_rtc_token_response.py +44 -0
- wavix/types/web_rtc_tokens_list_response.py +30 -0
- wavix/version.py +3 -0
- wavix/voice_campaigns/__init__.py +4 -0
- wavix/voice_campaigns/client.py +197 -0
- wavix/voice_campaigns/raw_client.py +332 -0
- wavix/webrtc/__init__.py +34 -0
- wavix/webrtc/client.py +63 -0
- wavix/webrtc/raw_client.py +13 -0
- wavix/webrtc/tokens/__init__.py +4 -0
- wavix/webrtc/tokens/client.py +432 -0
- wavix/webrtc/tokens/raw_client.py +869 -0
- wavix_python_sdk-1.0.0.dist-info/LICENSE +21 -0
- wavix_python_sdk-1.0.0.dist-info/METADATA +339 -0
- wavix_python_sdk-1.0.0.dist-info/RECORD +497 -0
- wavix_python_sdk-1.0.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,1493 @@
|
|
|
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.success_response import SuccessResponse
|
|
9
|
+
from .raw_client import AsyncRawCampaignsClient, RawCampaignsClient
|
|
10
|
+
from .types.create_campaigns_response import CreateCampaignsResponse
|
|
11
|
+
from .types.delete_campaigns_response import DeleteCampaignsResponse
|
|
12
|
+
from .types.get_campaigns_response import GetCampaignsResponse
|
|
13
|
+
from .types.list_by_brand_campaigns_response import ListByBrandCampaignsResponse
|
|
14
|
+
from .types.list_campaigns_response import ListCampaignsResponse
|
|
15
|
+
from .types.ten_dlc_campaign_update_request_usecase import TenDlcCampaignUpdateRequestUsecase
|
|
16
|
+
from .types.update_campaigns_response import UpdateCampaignsResponse
|
|
17
|
+
|
|
18
|
+
# this is used as the default value for optional parameters
|
|
19
|
+
OMIT = typing.cast(typing.Any, ...)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class CampaignsClient:
|
|
23
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
24
|
+
self._raw_client = RawCampaignsClient(client_wrapper=client_wrapper)
|
|
25
|
+
|
|
26
|
+
@property
|
|
27
|
+
def with_raw_response(self) -> RawCampaignsClient:
|
|
28
|
+
"""
|
|
29
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
30
|
+
|
|
31
|
+
Returns
|
|
32
|
+
-------
|
|
33
|
+
RawCampaignsClient
|
|
34
|
+
"""
|
|
35
|
+
return self._raw_client
|
|
36
|
+
|
|
37
|
+
def list(
|
|
38
|
+
self,
|
|
39
|
+
*,
|
|
40
|
+
name: typing.Optional[str] = None,
|
|
41
|
+
usecase: typing.Optional[str] = None,
|
|
42
|
+
status: typing.Optional[str] = None,
|
|
43
|
+
mock: typing.Optional[bool] = None,
|
|
44
|
+
created_before: typing.Optional[dt.date] = None,
|
|
45
|
+
created_after: typing.Optional[dt.date] = None,
|
|
46
|
+
page: typing.Optional[int] = None,
|
|
47
|
+
per_page: typing.Optional[int] = None,
|
|
48
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
49
|
+
) -> ListCampaignsResponse:
|
|
50
|
+
"""
|
|
51
|
+
Returns a paginated list of 10DLC Campaigns for the authenticated account, filtered by date, status, and use case.
|
|
52
|
+
|
|
53
|
+
Parameters
|
|
54
|
+
----------
|
|
55
|
+
name : typing.Optional[str]
|
|
56
|
+
Filters Campaigns by name. Matches partial values.
|
|
57
|
+
|
|
58
|
+
usecase : typing.Optional[str]
|
|
59
|
+
Filters Campaigns by use case.
|
|
60
|
+
|
|
61
|
+
status : typing.Optional[str]
|
|
62
|
+
Filters Campaigns by status.
|
|
63
|
+
|
|
64
|
+
mock : typing.Optional[bool]
|
|
65
|
+
When `true`, returns only mock Campaigns used for testing. Default `false`.
|
|
66
|
+
|
|
67
|
+
created_before : typing.Optional[dt.date]
|
|
68
|
+
Returns Campaigns created on or before this date, in `YYYY-MM-DD` format.
|
|
69
|
+
|
|
70
|
+
created_after : typing.Optional[dt.date]
|
|
71
|
+
Returns Campaigns created on or after this date, in `YYYY-MM-DD` format.
|
|
72
|
+
|
|
73
|
+
page : typing.Optional[int]
|
|
74
|
+
Page number to retrieve. Default `1`.
|
|
75
|
+
|
|
76
|
+
per_page : typing.Optional[int]
|
|
77
|
+
Number of records to return per page. Default `25`.
|
|
78
|
+
|
|
79
|
+
request_options : typing.Optional[RequestOptions]
|
|
80
|
+
Request-specific configuration.
|
|
81
|
+
|
|
82
|
+
Returns
|
|
83
|
+
-------
|
|
84
|
+
ListCampaignsResponse
|
|
85
|
+
Returns a paginated list of 10DLC Campaigns.
|
|
86
|
+
|
|
87
|
+
Examples
|
|
88
|
+
--------
|
|
89
|
+
import datetime
|
|
90
|
+
|
|
91
|
+
from wavix import Wavix
|
|
92
|
+
|
|
93
|
+
client = Wavix(
|
|
94
|
+
token="YOUR_TOKEN",
|
|
95
|
+
)
|
|
96
|
+
client.ten_dlc.campaigns.list(
|
|
97
|
+
name="Name",
|
|
98
|
+
usecase="2FA",
|
|
99
|
+
status="APPROVED",
|
|
100
|
+
mock=True,
|
|
101
|
+
created_before=datetime.date.fromisoformat(
|
|
102
|
+
"2024-08-22",
|
|
103
|
+
),
|
|
104
|
+
created_after=datetime.date.fromisoformat(
|
|
105
|
+
"2024-08-22",
|
|
106
|
+
),
|
|
107
|
+
page=1,
|
|
108
|
+
per_page=25,
|
|
109
|
+
)
|
|
110
|
+
"""
|
|
111
|
+
_response = self._raw_client.list(
|
|
112
|
+
name=name,
|
|
113
|
+
usecase=usecase,
|
|
114
|
+
status=status,
|
|
115
|
+
mock=mock,
|
|
116
|
+
created_before=created_before,
|
|
117
|
+
created_after=created_after,
|
|
118
|
+
page=page,
|
|
119
|
+
per_page=per_page,
|
|
120
|
+
request_options=request_options,
|
|
121
|
+
)
|
|
122
|
+
return _response.data
|
|
123
|
+
|
|
124
|
+
def list_by_brand(
|
|
125
|
+
self,
|
|
126
|
+
brand_id: str,
|
|
127
|
+
*,
|
|
128
|
+
name: typing.Optional[str] = None,
|
|
129
|
+
usecase: typing.Optional[str] = None,
|
|
130
|
+
status: typing.Optional[str] = None,
|
|
131
|
+
mock: typing.Optional[bool] = None,
|
|
132
|
+
created_before: typing.Optional[dt.date] = None,
|
|
133
|
+
created_after: typing.Optional[dt.date] = None,
|
|
134
|
+
page: typing.Optional[int] = None,
|
|
135
|
+
per_page: typing.Optional[int] = None,
|
|
136
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
137
|
+
) -> ListByBrandCampaignsResponse:
|
|
138
|
+
"""
|
|
139
|
+
Returns a paginated list of 10DLC Campaigns associated with the 10DLC Brand identified by `brand_id`.
|
|
140
|
+
|
|
141
|
+
Parameters
|
|
142
|
+
----------
|
|
143
|
+
brand_id : str
|
|
144
|
+
The unique ID of the 10DLC Brand.
|
|
145
|
+
|
|
146
|
+
name : typing.Optional[str]
|
|
147
|
+
Filters Campaigns by name. Matches partial values.
|
|
148
|
+
|
|
149
|
+
usecase : typing.Optional[str]
|
|
150
|
+
Filters Campaigns by use case.
|
|
151
|
+
|
|
152
|
+
status : typing.Optional[str]
|
|
153
|
+
Filters Campaigns by status.
|
|
154
|
+
|
|
155
|
+
mock : typing.Optional[bool]
|
|
156
|
+
When `true`, returns only mock Campaigns used for testing. Default `false`.
|
|
157
|
+
|
|
158
|
+
created_before : typing.Optional[dt.date]
|
|
159
|
+
Returns Campaigns created on or before this date, in `YYYY-MM-DD` format.
|
|
160
|
+
|
|
161
|
+
created_after : typing.Optional[dt.date]
|
|
162
|
+
Returns Campaigns created on or after this date, in `YYYY-MM-DD` format.
|
|
163
|
+
|
|
164
|
+
page : typing.Optional[int]
|
|
165
|
+
Page number to retrieve. Default `1`.
|
|
166
|
+
|
|
167
|
+
per_page : typing.Optional[int]
|
|
168
|
+
Number of records to return per page. Default `25`.
|
|
169
|
+
|
|
170
|
+
request_options : typing.Optional[RequestOptions]
|
|
171
|
+
Request-specific configuration.
|
|
172
|
+
|
|
173
|
+
Returns
|
|
174
|
+
-------
|
|
175
|
+
ListByBrandCampaignsResponse
|
|
176
|
+
Returns a paginated list of 10DLC Campaigns.
|
|
177
|
+
|
|
178
|
+
Examples
|
|
179
|
+
--------
|
|
180
|
+
import datetime
|
|
181
|
+
|
|
182
|
+
from wavix import Wavix
|
|
183
|
+
|
|
184
|
+
client = Wavix(
|
|
185
|
+
token="YOUR_TOKEN",
|
|
186
|
+
)
|
|
187
|
+
client.ten_dlc.campaigns.list_by_brand(
|
|
188
|
+
brand_id="BM20QP9",
|
|
189
|
+
name="Name",
|
|
190
|
+
usecase="2FA",
|
|
191
|
+
status="APPROVED",
|
|
192
|
+
mock=True,
|
|
193
|
+
created_before=datetime.date.fromisoformat(
|
|
194
|
+
"2024-08-22",
|
|
195
|
+
),
|
|
196
|
+
created_after=datetime.date.fromisoformat(
|
|
197
|
+
"2024-08-22",
|
|
198
|
+
),
|
|
199
|
+
page=1,
|
|
200
|
+
per_page=25,
|
|
201
|
+
)
|
|
202
|
+
"""
|
|
203
|
+
_response = self._raw_client.list_by_brand(
|
|
204
|
+
brand_id,
|
|
205
|
+
name=name,
|
|
206
|
+
usecase=usecase,
|
|
207
|
+
status=status,
|
|
208
|
+
mock=mock,
|
|
209
|
+
created_before=created_before,
|
|
210
|
+
created_after=created_after,
|
|
211
|
+
page=page,
|
|
212
|
+
per_page=per_page,
|
|
213
|
+
request_options=request_options,
|
|
214
|
+
)
|
|
215
|
+
return _response.data
|
|
216
|
+
|
|
217
|
+
def create(
|
|
218
|
+
self,
|
|
219
|
+
brand_id: str,
|
|
220
|
+
*,
|
|
221
|
+
affiliate_marketing: bool,
|
|
222
|
+
age_gated: bool,
|
|
223
|
+
auto_renewal: bool,
|
|
224
|
+
direct_lending: bool,
|
|
225
|
+
embedded_links: bool,
|
|
226
|
+
description: str,
|
|
227
|
+
optin_workflow: str,
|
|
228
|
+
help: bool,
|
|
229
|
+
help_keywords: str,
|
|
230
|
+
help_message: str,
|
|
231
|
+
optin: bool,
|
|
232
|
+
optin_keywords: str,
|
|
233
|
+
optin_message: str,
|
|
234
|
+
optout: bool,
|
|
235
|
+
optout_keywords: str,
|
|
236
|
+
optout_message: str,
|
|
237
|
+
name: str,
|
|
238
|
+
sample1: str,
|
|
239
|
+
mock: bool,
|
|
240
|
+
usecase: str,
|
|
241
|
+
terms_conditions: str,
|
|
242
|
+
embedded_phones: typing.Optional[bool] = OMIT,
|
|
243
|
+
embedded_link_sample: typing.Optional[str] = OMIT,
|
|
244
|
+
sample2: typing.Optional[str] = OMIT,
|
|
245
|
+
sample3: typing.Optional[str] = OMIT,
|
|
246
|
+
sample4: typing.Optional[str] = OMIT,
|
|
247
|
+
sample5: typing.Optional[str] = OMIT,
|
|
248
|
+
privacy_policy: typing.Optional[str] = OMIT,
|
|
249
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
250
|
+
) -> CreateCampaignsResponse:
|
|
251
|
+
"""
|
|
252
|
+
Registers a 10DLC Campaign under the 10DLC Brand identified by `brand_id`. The Brand must have a verified identity status.
|
|
253
|
+
|
|
254
|
+
Parameters
|
|
255
|
+
----------
|
|
256
|
+
brand_id : str
|
|
257
|
+
The unique ID of the 10DLC Brand.
|
|
258
|
+
|
|
259
|
+
affiliate_marketing : bool
|
|
260
|
+
Indicates whether the Campaign is used for affiliate marketing.
|
|
261
|
+
|
|
262
|
+
age_gated : bool
|
|
263
|
+
Indicates whether the Campaign messages contain age-gated content.
|
|
264
|
+
|
|
265
|
+
auto_renewal : bool
|
|
266
|
+
Indicates whether the Campaign is automatically renewed at the end of each billing period.
|
|
267
|
+
|
|
268
|
+
direct_lending : bool
|
|
269
|
+
Indicates whether the Campaign messages contain direct lending content.
|
|
270
|
+
|
|
271
|
+
embedded_links : bool
|
|
272
|
+
Indicates whether the Campaign messages contain embedded links.
|
|
273
|
+
|
|
274
|
+
description : str
|
|
275
|
+
Description of the Campaign and its messaging purpose.
|
|
276
|
+
|
|
277
|
+
optin_workflow : str
|
|
278
|
+
Description of the workflow through which subscribers opt in to the Campaign.
|
|
279
|
+
|
|
280
|
+
help : bool
|
|
281
|
+
Indicates whether the Campaign provides a help system that subscribers can trigger with a keyword such as HELP or INFO.
|
|
282
|
+
|
|
283
|
+
help_keywords : str
|
|
284
|
+
Comma-separated list of help keywords. Keywords are case-insensitive.
|
|
285
|
+
|
|
286
|
+
help_message : str
|
|
287
|
+
Acknowledgement sent when a subscriber texts a help keyword.
|
|
288
|
+
|
|
289
|
+
optin : bool
|
|
290
|
+
Indicates whether the Campaign requires subscribers to opt in before receiving messages.
|
|
291
|
+
|
|
292
|
+
optin_keywords : str
|
|
293
|
+
Comma-separated list of opt-in keywords. Keywords are case-insensitive.
|
|
294
|
+
|
|
295
|
+
optin_message : str
|
|
296
|
+
Acknowledgement sent when a subscriber texts an opt-in keyword.
|
|
297
|
+
|
|
298
|
+
optout : bool
|
|
299
|
+
Indicates whether the Campaign provides an opt-out system that subscribers can trigger with a keyword such as STOP or QUIT.
|
|
300
|
+
|
|
301
|
+
optout_keywords : str
|
|
302
|
+
Comma-separated list of opt-out keywords. Keywords are case-insensitive.
|
|
303
|
+
|
|
304
|
+
optout_message : str
|
|
305
|
+
Acknowledgement sent when a subscriber texts an opt-out keyword.
|
|
306
|
+
|
|
307
|
+
name : str
|
|
308
|
+
Display name of the Campaign.
|
|
309
|
+
|
|
310
|
+
sample1 : str
|
|
311
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
312
|
+
|
|
313
|
+
mock : bool
|
|
314
|
+
Indicates whether the Campaign is a mock campaign used for testing. Mock campaigns cannot send production traffic.
|
|
315
|
+
|
|
316
|
+
usecase : str
|
|
317
|
+
Registered use case for the Campaign, such as `2FA` or `MARKETING`.
|
|
318
|
+
|
|
319
|
+
terms_conditions : str
|
|
320
|
+
URL of the Campaign terms and conditions.
|
|
321
|
+
|
|
322
|
+
embedded_phones : typing.Optional[bool]
|
|
323
|
+
Indicates whether the Campaign messages contain embedded phone numbers.
|
|
324
|
+
|
|
325
|
+
embedded_link_sample : typing.Optional[str]
|
|
326
|
+
Sample of an embedded link used in Campaign messages.
|
|
327
|
+
|
|
328
|
+
sample2 : typing.Optional[str]
|
|
329
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
330
|
+
|
|
331
|
+
sample3 : typing.Optional[str]
|
|
332
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
333
|
+
|
|
334
|
+
sample4 : typing.Optional[str]
|
|
335
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
336
|
+
|
|
337
|
+
sample5 : typing.Optional[str]
|
|
338
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
339
|
+
|
|
340
|
+
privacy_policy : typing.Optional[str]
|
|
341
|
+
URL of the Campaign privacy policy.
|
|
342
|
+
|
|
343
|
+
request_options : typing.Optional[RequestOptions]
|
|
344
|
+
Request-specific configuration.
|
|
345
|
+
|
|
346
|
+
Returns
|
|
347
|
+
-------
|
|
348
|
+
CreateCampaignsResponse
|
|
349
|
+
Returns the registered 10DLC Campaign.
|
|
350
|
+
|
|
351
|
+
Examples
|
|
352
|
+
--------
|
|
353
|
+
from wavix import Wavix
|
|
354
|
+
|
|
355
|
+
client = Wavix(
|
|
356
|
+
token="YOUR_TOKEN",
|
|
357
|
+
)
|
|
358
|
+
client.ten_dlc.campaigns.create(
|
|
359
|
+
brand_id="BM20QP9",
|
|
360
|
+
affiliate_marketing=False,
|
|
361
|
+
age_gated=False,
|
|
362
|
+
auto_renewal=False,
|
|
363
|
+
direct_lending=False,
|
|
364
|
+
embedded_links=False,
|
|
365
|
+
embedded_phones=False,
|
|
366
|
+
embedded_link_sample="https://site.com/verify",
|
|
367
|
+
description="Our campaign aims to …",
|
|
368
|
+
optin_workflow="Our SMS ...",
|
|
369
|
+
help=True,
|
|
370
|
+
help_keywords="help",
|
|
371
|
+
help_message="For help, please visit www.site.com. To opt-out, reply STOP.",
|
|
372
|
+
optin=True,
|
|
373
|
+
optin_keywords="begin,start",
|
|
374
|
+
optin_message="You are now opted-in for help please reply HELP, to stop please reply STOP",
|
|
375
|
+
optout=True,
|
|
376
|
+
optout_keywords="stop,quit,unsubscribe",
|
|
377
|
+
optout_message="You are now opted out and will receive no further messages",
|
|
378
|
+
name="My first campaign",
|
|
379
|
+
sample1="Your verification code is XXXXXX",
|
|
380
|
+
sample2="XXXX is your verification code",
|
|
381
|
+
sample3="Your code is XXXXXX, valid for 10 minutes",
|
|
382
|
+
sample4="Use code XXXXXX to confirm your login",
|
|
383
|
+
sample5="XXXXXX is your one-time passcode",
|
|
384
|
+
mock=False,
|
|
385
|
+
usecase="2FA",
|
|
386
|
+
privacy_policy="https://site.com/privacy-policy",
|
|
387
|
+
terms_conditions="https://site.com/terms-and-conditions",
|
|
388
|
+
)
|
|
389
|
+
"""
|
|
390
|
+
_response = self._raw_client.create(
|
|
391
|
+
brand_id,
|
|
392
|
+
affiliate_marketing=affiliate_marketing,
|
|
393
|
+
age_gated=age_gated,
|
|
394
|
+
auto_renewal=auto_renewal,
|
|
395
|
+
direct_lending=direct_lending,
|
|
396
|
+
embedded_links=embedded_links,
|
|
397
|
+
description=description,
|
|
398
|
+
optin_workflow=optin_workflow,
|
|
399
|
+
help=help,
|
|
400
|
+
help_keywords=help_keywords,
|
|
401
|
+
help_message=help_message,
|
|
402
|
+
optin=optin,
|
|
403
|
+
optin_keywords=optin_keywords,
|
|
404
|
+
optin_message=optin_message,
|
|
405
|
+
optout=optout,
|
|
406
|
+
optout_keywords=optout_keywords,
|
|
407
|
+
optout_message=optout_message,
|
|
408
|
+
name=name,
|
|
409
|
+
sample1=sample1,
|
|
410
|
+
mock=mock,
|
|
411
|
+
usecase=usecase,
|
|
412
|
+
terms_conditions=terms_conditions,
|
|
413
|
+
embedded_phones=embedded_phones,
|
|
414
|
+
embedded_link_sample=embedded_link_sample,
|
|
415
|
+
sample2=sample2,
|
|
416
|
+
sample3=sample3,
|
|
417
|
+
sample4=sample4,
|
|
418
|
+
sample5=sample5,
|
|
419
|
+
privacy_policy=privacy_policy,
|
|
420
|
+
request_options=request_options,
|
|
421
|
+
)
|
|
422
|
+
return _response.data
|
|
423
|
+
|
|
424
|
+
def get(
|
|
425
|
+
self, brand_id: str, campaign_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
426
|
+
) -> GetCampaignsResponse:
|
|
427
|
+
"""
|
|
428
|
+
Returns the 10DLC Campaign identified by `campaign_id` under the Brand identified by `brand_id`.
|
|
429
|
+
|
|
430
|
+
Parameters
|
|
431
|
+
----------
|
|
432
|
+
brand_id : str
|
|
433
|
+
The unique ID of the 10DLC Brand.
|
|
434
|
+
|
|
435
|
+
campaign_id : str
|
|
436
|
+
The unique ID of the 10DLC Campaign.
|
|
437
|
+
|
|
438
|
+
request_options : typing.Optional[RequestOptions]
|
|
439
|
+
Request-specific configuration.
|
|
440
|
+
|
|
441
|
+
Returns
|
|
442
|
+
-------
|
|
443
|
+
GetCampaignsResponse
|
|
444
|
+
Returns the 10DLC Campaign.
|
|
445
|
+
|
|
446
|
+
Examples
|
|
447
|
+
--------
|
|
448
|
+
from wavix import Wavix
|
|
449
|
+
|
|
450
|
+
client = Wavix(
|
|
451
|
+
token="YOUR_TOKEN",
|
|
452
|
+
)
|
|
453
|
+
client.ten_dlc.campaigns.get(
|
|
454
|
+
brand_id="BM20QP9",
|
|
455
|
+
campaign_id="CKLCK95",
|
|
456
|
+
)
|
|
457
|
+
"""
|
|
458
|
+
_response = self._raw_client.get(brand_id, campaign_id, request_options=request_options)
|
|
459
|
+
return _response.data
|
|
460
|
+
|
|
461
|
+
def update(
|
|
462
|
+
self,
|
|
463
|
+
brand_id: str,
|
|
464
|
+
campaign_id: str,
|
|
465
|
+
*,
|
|
466
|
+
name: typing.Optional[str] = OMIT,
|
|
467
|
+
usecase: typing.Optional[TenDlcCampaignUpdateRequestUsecase] = OMIT,
|
|
468
|
+
description: typing.Optional[str] = OMIT,
|
|
469
|
+
embedded_links: typing.Optional[bool] = OMIT,
|
|
470
|
+
embedded_phones: typing.Optional[bool] = OMIT,
|
|
471
|
+
age_gated: typing.Optional[bool] = OMIT,
|
|
472
|
+
direct_lending: typing.Optional[bool] = OMIT,
|
|
473
|
+
optin: typing.Optional[bool] = OMIT,
|
|
474
|
+
optout: typing.Optional[bool] = OMIT,
|
|
475
|
+
help: typing.Optional[bool] = OMIT,
|
|
476
|
+
sample1: typing.Optional[str] = OMIT,
|
|
477
|
+
sample2: typing.Optional[str] = OMIT,
|
|
478
|
+
sample3: typing.Optional[str] = OMIT,
|
|
479
|
+
sample4: typing.Optional[str] = OMIT,
|
|
480
|
+
sample5: typing.Optional[str] = OMIT,
|
|
481
|
+
optin_workflow: typing.Optional[str] = OMIT,
|
|
482
|
+
help_message: typing.Optional[str] = OMIT,
|
|
483
|
+
optin_message: typing.Optional[str] = OMIT,
|
|
484
|
+
optout_message: typing.Optional[str] = OMIT,
|
|
485
|
+
auto_renewal: typing.Optional[bool] = OMIT,
|
|
486
|
+
optin_keywords: typing.Optional[str] = OMIT,
|
|
487
|
+
help_keywords: typing.Optional[str] = OMIT,
|
|
488
|
+
optout_keywords: typing.Optional[str] = OMIT,
|
|
489
|
+
terms_conditions: typing.Optional[str] = OMIT,
|
|
490
|
+
privacy_policy: typing.Optional[str] = OMIT,
|
|
491
|
+
embedded_link_sample: typing.Optional[str] = OMIT,
|
|
492
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
493
|
+
) -> UpdateCampaignsResponse:
|
|
494
|
+
"""
|
|
495
|
+
Updates the 10DLC Campaign identified by `campaign_id`. Only the provided fields are changed.
|
|
496
|
+
|
|
497
|
+
Parameters
|
|
498
|
+
----------
|
|
499
|
+
brand_id : str
|
|
500
|
+
The unique ID of the 10DLC Brand.
|
|
501
|
+
|
|
502
|
+
campaign_id : str
|
|
503
|
+
The unique ID of the 10DLC Campaign.
|
|
504
|
+
|
|
505
|
+
name : typing.Optional[str]
|
|
506
|
+
Display name of the Campaign.
|
|
507
|
+
|
|
508
|
+
usecase : typing.Optional[TenDlcCampaignUpdateRequestUsecase]
|
|
509
|
+
Registered use case for the Campaign. One of `CUSTOMER_CARE` (customer support messaging), `MARKETING` (promotional content), `ACCOUNT_NOTIFICATION` (account-related alerts), `FRAUD_ALERT` (fraud and suspicious-activity warnings), `PUBLIC_SERVICE_ANNOUNCEMENT` (public-interest notices), or `SECURITY_ALERT` (security-related warnings).
|
|
510
|
+
|
|
511
|
+
description : typing.Optional[str]
|
|
512
|
+
Description of the Campaign and its messaging purpose.
|
|
513
|
+
|
|
514
|
+
embedded_links : typing.Optional[bool]
|
|
515
|
+
Indicates whether the Campaign messages contain embedded links.
|
|
516
|
+
|
|
517
|
+
embedded_phones : typing.Optional[bool]
|
|
518
|
+
Indicates whether the Campaign messages contain embedded phone numbers.
|
|
519
|
+
|
|
520
|
+
age_gated : typing.Optional[bool]
|
|
521
|
+
Indicates whether the Campaign messages contain age-gated content.
|
|
522
|
+
|
|
523
|
+
direct_lending : typing.Optional[bool]
|
|
524
|
+
Indicates whether the Campaign messages contain direct lending content.
|
|
525
|
+
|
|
526
|
+
optin : typing.Optional[bool]
|
|
527
|
+
Indicates whether the Campaign requires subscribers to opt in before receiving messages.
|
|
528
|
+
|
|
529
|
+
optout : typing.Optional[bool]
|
|
530
|
+
Indicates whether the Campaign provides an opt-out system that subscribers can trigger with a keyword.
|
|
531
|
+
|
|
532
|
+
help : typing.Optional[bool]
|
|
533
|
+
Indicates whether the Campaign provides a help system that subscribers can trigger with a keyword.
|
|
534
|
+
|
|
535
|
+
sample1 : typing.Optional[str]
|
|
536
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
537
|
+
|
|
538
|
+
sample2 : typing.Optional[str]
|
|
539
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
540
|
+
|
|
541
|
+
sample3 : typing.Optional[str]
|
|
542
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
543
|
+
|
|
544
|
+
sample4 : typing.Optional[str]
|
|
545
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
546
|
+
|
|
547
|
+
sample5 : typing.Optional[str]
|
|
548
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
549
|
+
|
|
550
|
+
optin_workflow : typing.Optional[str]
|
|
551
|
+
Description of the workflow through which subscribers opt in to the Campaign.
|
|
552
|
+
|
|
553
|
+
help_message : typing.Optional[str]
|
|
554
|
+
Acknowledgement sent when a subscriber texts a help keyword.
|
|
555
|
+
|
|
556
|
+
optin_message : typing.Optional[str]
|
|
557
|
+
Acknowledgement sent when a subscriber texts an opt-in keyword.
|
|
558
|
+
|
|
559
|
+
optout_message : typing.Optional[str]
|
|
560
|
+
Acknowledgement sent when a subscriber texts an opt-out keyword.
|
|
561
|
+
|
|
562
|
+
auto_renewal : typing.Optional[bool]
|
|
563
|
+
Indicates whether the Campaign is automatically renewed at the end of each billing period.
|
|
564
|
+
|
|
565
|
+
optin_keywords : typing.Optional[str]
|
|
566
|
+
Comma-separated list of opt-in keywords. Keywords are case-insensitive.
|
|
567
|
+
|
|
568
|
+
help_keywords : typing.Optional[str]
|
|
569
|
+
Comma-separated list of help keywords. Keywords are case-insensitive.
|
|
570
|
+
|
|
571
|
+
optout_keywords : typing.Optional[str]
|
|
572
|
+
Comma-separated list of opt-out keywords. Keywords are case-insensitive.
|
|
573
|
+
|
|
574
|
+
terms_conditions : typing.Optional[str]
|
|
575
|
+
URL of the Campaign terms and conditions.
|
|
576
|
+
|
|
577
|
+
privacy_policy : typing.Optional[str]
|
|
578
|
+
URL of the Campaign privacy policy.
|
|
579
|
+
|
|
580
|
+
embedded_link_sample : typing.Optional[str]
|
|
581
|
+
Sample of an embedded link used in Campaign messages.
|
|
582
|
+
|
|
583
|
+
request_options : typing.Optional[RequestOptions]
|
|
584
|
+
Request-specific configuration.
|
|
585
|
+
|
|
586
|
+
Returns
|
|
587
|
+
-------
|
|
588
|
+
UpdateCampaignsResponse
|
|
589
|
+
Returns the updated 10DLC Campaign.
|
|
590
|
+
|
|
591
|
+
Examples
|
|
592
|
+
--------
|
|
593
|
+
from wavix import Wavix
|
|
594
|
+
|
|
595
|
+
client = Wavix(
|
|
596
|
+
token="YOUR_TOKEN",
|
|
597
|
+
)
|
|
598
|
+
client.ten_dlc.campaigns.update(
|
|
599
|
+
brand_id="BM20QP9",
|
|
600
|
+
campaign_id="CKLCK95",
|
|
601
|
+
)
|
|
602
|
+
"""
|
|
603
|
+
_response = self._raw_client.update(
|
|
604
|
+
brand_id,
|
|
605
|
+
campaign_id,
|
|
606
|
+
name=name,
|
|
607
|
+
usecase=usecase,
|
|
608
|
+
description=description,
|
|
609
|
+
embedded_links=embedded_links,
|
|
610
|
+
embedded_phones=embedded_phones,
|
|
611
|
+
age_gated=age_gated,
|
|
612
|
+
direct_lending=direct_lending,
|
|
613
|
+
optin=optin,
|
|
614
|
+
optout=optout,
|
|
615
|
+
help=help,
|
|
616
|
+
sample1=sample1,
|
|
617
|
+
sample2=sample2,
|
|
618
|
+
sample3=sample3,
|
|
619
|
+
sample4=sample4,
|
|
620
|
+
sample5=sample5,
|
|
621
|
+
optin_workflow=optin_workflow,
|
|
622
|
+
help_message=help_message,
|
|
623
|
+
optin_message=optin_message,
|
|
624
|
+
optout_message=optout_message,
|
|
625
|
+
auto_renewal=auto_renewal,
|
|
626
|
+
optin_keywords=optin_keywords,
|
|
627
|
+
help_keywords=help_keywords,
|
|
628
|
+
optout_keywords=optout_keywords,
|
|
629
|
+
terms_conditions=terms_conditions,
|
|
630
|
+
privacy_policy=privacy_policy,
|
|
631
|
+
embedded_link_sample=embedded_link_sample,
|
|
632
|
+
request_options=request_options,
|
|
633
|
+
)
|
|
634
|
+
return _response.data
|
|
635
|
+
|
|
636
|
+
def delete(
|
|
637
|
+
self, brand_id: str, campaign_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
638
|
+
) -> DeleteCampaignsResponse:
|
|
639
|
+
"""
|
|
640
|
+
Deletes a 10DLC Campaign. Associated phone numbers cannot be used as Sender IDs once the Campaign is deleted.
|
|
641
|
+
|
|
642
|
+
Parameters
|
|
643
|
+
----------
|
|
644
|
+
brand_id : str
|
|
645
|
+
The unique ID of the 10DLC Brand.
|
|
646
|
+
|
|
647
|
+
campaign_id : str
|
|
648
|
+
The unique ID of the 10DLC Campaign.
|
|
649
|
+
|
|
650
|
+
request_options : typing.Optional[RequestOptions]
|
|
651
|
+
Request-specific configuration.
|
|
652
|
+
|
|
653
|
+
Returns
|
|
654
|
+
-------
|
|
655
|
+
DeleteCampaignsResponse
|
|
656
|
+
Returns a success confirmation. The 10DLC Campaign is deleted.
|
|
657
|
+
|
|
658
|
+
Examples
|
|
659
|
+
--------
|
|
660
|
+
from wavix import Wavix
|
|
661
|
+
|
|
662
|
+
client = Wavix(
|
|
663
|
+
token="YOUR_TOKEN",
|
|
664
|
+
)
|
|
665
|
+
client.ten_dlc.campaigns.delete(
|
|
666
|
+
brand_id="BM20QP9",
|
|
667
|
+
campaign_id="CKLCK95",
|
|
668
|
+
)
|
|
669
|
+
"""
|
|
670
|
+
_response = self._raw_client.delete(brand_id, campaign_id, request_options=request_options)
|
|
671
|
+
return _response.data
|
|
672
|
+
|
|
673
|
+
def nudge(
|
|
674
|
+
self,
|
|
675
|
+
brand_id: str,
|
|
676
|
+
campaign_id: str,
|
|
677
|
+
*,
|
|
678
|
+
nudge_intent: str,
|
|
679
|
+
description: str,
|
|
680
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
681
|
+
) -> SuccessResponse:
|
|
682
|
+
"""
|
|
683
|
+
Requests action on a pending or rejected 10DLC Campaign. Use `nudge_intent` to specify the action:
|
|
684
|
+
- `REVIEW`: Request review for a pending Campaign. - `APPEAL_REJECTION`: Appeal a rejected Campaign.
|
|
685
|
+
Note:
|
|
686
|
+
- The Campaign must be at least 72 hours old.
|
|
687
|
+
- Only one nudge request per Campaign is allowed every 24 hours.
|
|
688
|
+
|
|
689
|
+
Parameters
|
|
690
|
+
----------
|
|
691
|
+
brand_id : str
|
|
692
|
+
The unique ID of the 10DLC Brand.
|
|
693
|
+
|
|
694
|
+
campaign_id : str
|
|
695
|
+
The unique ID of the 10DLC Campaign.
|
|
696
|
+
|
|
697
|
+
nudge_intent : str
|
|
698
|
+
Nudge intent. Allowed values: `REVIEW`, `APPEAL_REJECTION`.
|
|
699
|
+
Use `nudge_intent` to specify the action: - `REVIEW`: Request review for a pending Campaign. - `APPEAL_REJECTION`: Appeal a rejected Campaign.
|
|
700
|
+
|
|
701
|
+
description : str
|
|
702
|
+
Description of the nudge request.
|
|
703
|
+
|
|
704
|
+
request_options : typing.Optional[RequestOptions]
|
|
705
|
+
Request-specific configuration.
|
|
706
|
+
|
|
707
|
+
Returns
|
|
708
|
+
-------
|
|
709
|
+
SuccessResponse
|
|
710
|
+
Returns a success confirmation. The nudge request is submitted.
|
|
711
|
+
|
|
712
|
+
Examples
|
|
713
|
+
--------
|
|
714
|
+
from wavix import Wavix
|
|
715
|
+
|
|
716
|
+
client = Wavix(
|
|
717
|
+
token="YOUR_TOKEN",
|
|
718
|
+
)
|
|
719
|
+
client.ten_dlc.campaigns.nudge(
|
|
720
|
+
brand_id="B9FXYNH",
|
|
721
|
+
campaign_id="CSJ4TV0",
|
|
722
|
+
nudge_intent="REVIEW",
|
|
723
|
+
description="Please review the campaign.",
|
|
724
|
+
)
|
|
725
|
+
"""
|
|
726
|
+
_response = self._raw_client.nudge(
|
|
727
|
+
brand_id, campaign_id, nudge_intent=nudge_intent, description=description, request_options=request_options
|
|
728
|
+
)
|
|
729
|
+
return _response.data
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
class AsyncCampaignsClient:
|
|
733
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
734
|
+
self._raw_client = AsyncRawCampaignsClient(client_wrapper=client_wrapper)
|
|
735
|
+
|
|
736
|
+
@property
|
|
737
|
+
def with_raw_response(self) -> AsyncRawCampaignsClient:
|
|
738
|
+
"""
|
|
739
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
740
|
+
|
|
741
|
+
Returns
|
|
742
|
+
-------
|
|
743
|
+
AsyncRawCampaignsClient
|
|
744
|
+
"""
|
|
745
|
+
return self._raw_client
|
|
746
|
+
|
|
747
|
+
async def list(
|
|
748
|
+
self,
|
|
749
|
+
*,
|
|
750
|
+
name: typing.Optional[str] = None,
|
|
751
|
+
usecase: typing.Optional[str] = None,
|
|
752
|
+
status: typing.Optional[str] = None,
|
|
753
|
+
mock: typing.Optional[bool] = None,
|
|
754
|
+
created_before: typing.Optional[dt.date] = None,
|
|
755
|
+
created_after: typing.Optional[dt.date] = None,
|
|
756
|
+
page: typing.Optional[int] = None,
|
|
757
|
+
per_page: typing.Optional[int] = None,
|
|
758
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
759
|
+
) -> ListCampaignsResponse:
|
|
760
|
+
"""
|
|
761
|
+
Returns a paginated list of 10DLC Campaigns for the authenticated account, filtered by date, status, and use case.
|
|
762
|
+
|
|
763
|
+
Parameters
|
|
764
|
+
----------
|
|
765
|
+
name : typing.Optional[str]
|
|
766
|
+
Filters Campaigns by name. Matches partial values.
|
|
767
|
+
|
|
768
|
+
usecase : typing.Optional[str]
|
|
769
|
+
Filters Campaigns by use case.
|
|
770
|
+
|
|
771
|
+
status : typing.Optional[str]
|
|
772
|
+
Filters Campaigns by status.
|
|
773
|
+
|
|
774
|
+
mock : typing.Optional[bool]
|
|
775
|
+
When `true`, returns only mock Campaigns used for testing. Default `false`.
|
|
776
|
+
|
|
777
|
+
created_before : typing.Optional[dt.date]
|
|
778
|
+
Returns Campaigns created on or before this date, in `YYYY-MM-DD` format.
|
|
779
|
+
|
|
780
|
+
created_after : typing.Optional[dt.date]
|
|
781
|
+
Returns Campaigns created on or after this date, in `YYYY-MM-DD` format.
|
|
782
|
+
|
|
783
|
+
page : typing.Optional[int]
|
|
784
|
+
Page number to retrieve. Default `1`.
|
|
785
|
+
|
|
786
|
+
per_page : typing.Optional[int]
|
|
787
|
+
Number of records to return per page. Default `25`.
|
|
788
|
+
|
|
789
|
+
request_options : typing.Optional[RequestOptions]
|
|
790
|
+
Request-specific configuration.
|
|
791
|
+
|
|
792
|
+
Returns
|
|
793
|
+
-------
|
|
794
|
+
ListCampaignsResponse
|
|
795
|
+
Returns a paginated list of 10DLC Campaigns.
|
|
796
|
+
|
|
797
|
+
Examples
|
|
798
|
+
--------
|
|
799
|
+
import asyncio
|
|
800
|
+
import datetime
|
|
801
|
+
|
|
802
|
+
from wavix import AsyncWavix
|
|
803
|
+
|
|
804
|
+
client = AsyncWavix(
|
|
805
|
+
token="YOUR_TOKEN",
|
|
806
|
+
)
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
async def main() -> None:
|
|
810
|
+
await client.ten_dlc.campaigns.list(
|
|
811
|
+
name="Name",
|
|
812
|
+
usecase="2FA",
|
|
813
|
+
status="APPROVED",
|
|
814
|
+
mock=True,
|
|
815
|
+
created_before=datetime.date.fromisoformat(
|
|
816
|
+
"2024-08-22",
|
|
817
|
+
),
|
|
818
|
+
created_after=datetime.date.fromisoformat(
|
|
819
|
+
"2024-08-22",
|
|
820
|
+
),
|
|
821
|
+
page=1,
|
|
822
|
+
per_page=25,
|
|
823
|
+
)
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
asyncio.run(main())
|
|
827
|
+
"""
|
|
828
|
+
_response = await self._raw_client.list(
|
|
829
|
+
name=name,
|
|
830
|
+
usecase=usecase,
|
|
831
|
+
status=status,
|
|
832
|
+
mock=mock,
|
|
833
|
+
created_before=created_before,
|
|
834
|
+
created_after=created_after,
|
|
835
|
+
page=page,
|
|
836
|
+
per_page=per_page,
|
|
837
|
+
request_options=request_options,
|
|
838
|
+
)
|
|
839
|
+
return _response.data
|
|
840
|
+
|
|
841
|
+
async def list_by_brand(
|
|
842
|
+
self,
|
|
843
|
+
brand_id: str,
|
|
844
|
+
*,
|
|
845
|
+
name: typing.Optional[str] = None,
|
|
846
|
+
usecase: typing.Optional[str] = None,
|
|
847
|
+
status: typing.Optional[str] = None,
|
|
848
|
+
mock: typing.Optional[bool] = None,
|
|
849
|
+
created_before: typing.Optional[dt.date] = None,
|
|
850
|
+
created_after: typing.Optional[dt.date] = None,
|
|
851
|
+
page: typing.Optional[int] = None,
|
|
852
|
+
per_page: typing.Optional[int] = None,
|
|
853
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
854
|
+
) -> ListByBrandCampaignsResponse:
|
|
855
|
+
"""
|
|
856
|
+
Returns a paginated list of 10DLC Campaigns associated with the 10DLC Brand identified by `brand_id`.
|
|
857
|
+
|
|
858
|
+
Parameters
|
|
859
|
+
----------
|
|
860
|
+
brand_id : str
|
|
861
|
+
The unique ID of the 10DLC Brand.
|
|
862
|
+
|
|
863
|
+
name : typing.Optional[str]
|
|
864
|
+
Filters Campaigns by name. Matches partial values.
|
|
865
|
+
|
|
866
|
+
usecase : typing.Optional[str]
|
|
867
|
+
Filters Campaigns by use case.
|
|
868
|
+
|
|
869
|
+
status : typing.Optional[str]
|
|
870
|
+
Filters Campaigns by status.
|
|
871
|
+
|
|
872
|
+
mock : typing.Optional[bool]
|
|
873
|
+
When `true`, returns only mock Campaigns used for testing. Default `false`.
|
|
874
|
+
|
|
875
|
+
created_before : typing.Optional[dt.date]
|
|
876
|
+
Returns Campaigns created on or before this date, in `YYYY-MM-DD` format.
|
|
877
|
+
|
|
878
|
+
created_after : typing.Optional[dt.date]
|
|
879
|
+
Returns Campaigns created on or after this date, in `YYYY-MM-DD` format.
|
|
880
|
+
|
|
881
|
+
page : typing.Optional[int]
|
|
882
|
+
Page number to retrieve. Default `1`.
|
|
883
|
+
|
|
884
|
+
per_page : typing.Optional[int]
|
|
885
|
+
Number of records to return per page. Default `25`.
|
|
886
|
+
|
|
887
|
+
request_options : typing.Optional[RequestOptions]
|
|
888
|
+
Request-specific configuration.
|
|
889
|
+
|
|
890
|
+
Returns
|
|
891
|
+
-------
|
|
892
|
+
ListByBrandCampaignsResponse
|
|
893
|
+
Returns a paginated list of 10DLC Campaigns.
|
|
894
|
+
|
|
895
|
+
Examples
|
|
896
|
+
--------
|
|
897
|
+
import asyncio
|
|
898
|
+
import datetime
|
|
899
|
+
|
|
900
|
+
from wavix import AsyncWavix
|
|
901
|
+
|
|
902
|
+
client = AsyncWavix(
|
|
903
|
+
token="YOUR_TOKEN",
|
|
904
|
+
)
|
|
905
|
+
|
|
906
|
+
|
|
907
|
+
async def main() -> None:
|
|
908
|
+
await client.ten_dlc.campaigns.list_by_brand(
|
|
909
|
+
brand_id="BM20QP9",
|
|
910
|
+
name="Name",
|
|
911
|
+
usecase="2FA",
|
|
912
|
+
status="APPROVED",
|
|
913
|
+
mock=True,
|
|
914
|
+
created_before=datetime.date.fromisoformat(
|
|
915
|
+
"2024-08-22",
|
|
916
|
+
),
|
|
917
|
+
created_after=datetime.date.fromisoformat(
|
|
918
|
+
"2024-08-22",
|
|
919
|
+
),
|
|
920
|
+
page=1,
|
|
921
|
+
per_page=25,
|
|
922
|
+
)
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
asyncio.run(main())
|
|
926
|
+
"""
|
|
927
|
+
_response = await self._raw_client.list_by_brand(
|
|
928
|
+
brand_id,
|
|
929
|
+
name=name,
|
|
930
|
+
usecase=usecase,
|
|
931
|
+
status=status,
|
|
932
|
+
mock=mock,
|
|
933
|
+
created_before=created_before,
|
|
934
|
+
created_after=created_after,
|
|
935
|
+
page=page,
|
|
936
|
+
per_page=per_page,
|
|
937
|
+
request_options=request_options,
|
|
938
|
+
)
|
|
939
|
+
return _response.data
|
|
940
|
+
|
|
941
|
+
async def create(
|
|
942
|
+
self,
|
|
943
|
+
brand_id: str,
|
|
944
|
+
*,
|
|
945
|
+
affiliate_marketing: bool,
|
|
946
|
+
age_gated: bool,
|
|
947
|
+
auto_renewal: bool,
|
|
948
|
+
direct_lending: bool,
|
|
949
|
+
embedded_links: bool,
|
|
950
|
+
description: str,
|
|
951
|
+
optin_workflow: str,
|
|
952
|
+
help: bool,
|
|
953
|
+
help_keywords: str,
|
|
954
|
+
help_message: str,
|
|
955
|
+
optin: bool,
|
|
956
|
+
optin_keywords: str,
|
|
957
|
+
optin_message: str,
|
|
958
|
+
optout: bool,
|
|
959
|
+
optout_keywords: str,
|
|
960
|
+
optout_message: str,
|
|
961
|
+
name: str,
|
|
962
|
+
sample1: str,
|
|
963
|
+
mock: bool,
|
|
964
|
+
usecase: str,
|
|
965
|
+
terms_conditions: str,
|
|
966
|
+
embedded_phones: typing.Optional[bool] = OMIT,
|
|
967
|
+
embedded_link_sample: typing.Optional[str] = OMIT,
|
|
968
|
+
sample2: typing.Optional[str] = OMIT,
|
|
969
|
+
sample3: typing.Optional[str] = OMIT,
|
|
970
|
+
sample4: typing.Optional[str] = OMIT,
|
|
971
|
+
sample5: typing.Optional[str] = OMIT,
|
|
972
|
+
privacy_policy: typing.Optional[str] = OMIT,
|
|
973
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
974
|
+
) -> CreateCampaignsResponse:
|
|
975
|
+
"""
|
|
976
|
+
Registers a 10DLC Campaign under the 10DLC Brand identified by `brand_id`. The Brand must have a verified identity status.
|
|
977
|
+
|
|
978
|
+
Parameters
|
|
979
|
+
----------
|
|
980
|
+
brand_id : str
|
|
981
|
+
The unique ID of the 10DLC Brand.
|
|
982
|
+
|
|
983
|
+
affiliate_marketing : bool
|
|
984
|
+
Indicates whether the Campaign is used for affiliate marketing.
|
|
985
|
+
|
|
986
|
+
age_gated : bool
|
|
987
|
+
Indicates whether the Campaign messages contain age-gated content.
|
|
988
|
+
|
|
989
|
+
auto_renewal : bool
|
|
990
|
+
Indicates whether the Campaign is automatically renewed at the end of each billing period.
|
|
991
|
+
|
|
992
|
+
direct_lending : bool
|
|
993
|
+
Indicates whether the Campaign messages contain direct lending content.
|
|
994
|
+
|
|
995
|
+
embedded_links : bool
|
|
996
|
+
Indicates whether the Campaign messages contain embedded links.
|
|
997
|
+
|
|
998
|
+
description : str
|
|
999
|
+
Description of the Campaign and its messaging purpose.
|
|
1000
|
+
|
|
1001
|
+
optin_workflow : str
|
|
1002
|
+
Description of the workflow through which subscribers opt in to the Campaign.
|
|
1003
|
+
|
|
1004
|
+
help : bool
|
|
1005
|
+
Indicates whether the Campaign provides a help system that subscribers can trigger with a keyword such as HELP or INFO.
|
|
1006
|
+
|
|
1007
|
+
help_keywords : str
|
|
1008
|
+
Comma-separated list of help keywords. Keywords are case-insensitive.
|
|
1009
|
+
|
|
1010
|
+
help_message : str
|
|
1011
|
+
Acknowledgement sent when a subscriber texts a help keyword.
|
|
1012
|
+
|
|
1013
|
+
optin : bool
|
|
1014
|
+
Indicates whether the Campaign requires subscribers to opt in before receiving messages.
|
|
1015
|
+
|
|
1016
|
+
optin_keywords : str
|
|
1017
|
+
Comma-separated list of opt-in keywords. Keywords are case-insensitive.
|
|
1018
|
+
|
|
1019
|
+
optin_message : str
|
|
1020
|
+
Acknowledgement sent when a subscriber texts an opt-in keyword.
|
|
1021
|
+
|
|
1022
|
+
optout : bool
|
|
1023
|
+
Indicates whether the Campaign provides an opt-out system that subscribers can trigger with a keyword such as STOP or QUIT.
|
|
1024
|
+
|
|
1025
|
+
optout_keywords : str
|
|
1026
|
+
Comma-separated list of opt-out keywords. Keywords are case-insensitive.
|
|
1027
|
+
|
|
1028
|
+
optout_message : str
|
|
1029
|
+
Acknowledgement sent when a subscriber texts an opt-out keyword.
|
|
1030
|
+
|
|
1031
|
+
name : str
|
|
1032
|
+
Display name of the Campaign.
|
|
1033
|
+
|
|
1034
|
+
sample1 : str
|
|
1035
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
1036
|
+
|
|
1037
|
+
mock : bool
|
|
1038
|
+
Indicates whether the Campaign is a mock campaign used for testing. Mock campaigns cannot send production traffic.
|
|
1039
|
+
|
|
1040
|
+
usecase : str
|
|
1041
|
+
Registered use case for the Campaign, such as `2FA` or `MARKETING`.
|
|
1042
|
+
|
|
1043
|
+
terms_conditions : str
|
|
1044
|
+
URL of the Campaign terms and conditions.
|
|
1045
|
+
|
|
1046
|
+
embedded_phones : typing.Optional[bool]
|
|
1047
|
+
Indicates whether the Campaign messages contain embedded phone numbers.
|
|
1048
|
+
|
|
1049
|
+
embedded_link_sample : typing.Optional[str]
|
|
1050
|
+
Sample of an embedded link used in Campaign messages.
|
|
1051
|
+
|
|
1052
|
+
sample2 : typing.Optional[str]
|
|
1053
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
1054
|
+
|
|
1055
|
+
sample3 : typing.Optional[str]
|
|
1056
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
1057
|
+
|
|
1058
|
+
sample4 : typing.Optional[str]
|
|
1059
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
1060
|
+
|
|
1061
|
+
sample5 : typing.Optional[str]
|
|
1062
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
1063
|
+
|
|
1064
|
+
privacy_policy : typing.Optional[str]
|
|
1065
|
+
URL of the Campaign privacy policy.
|
|
1066
|
+
|
|
1067
|
+
request_options : typing.Optional[RequestOptions]
|
|
1068
|
+
Request-specific configuration.
|
|
1069
|
+
|
|
1070
|
+
Returns
|
|
1071
|
+
-------
|
|
1072
|
+
CreateCampaignsResponse
|
|
1073
|
+
Returns the registered 10DLC Campaign.
|
|
1074
|
+
|
|
1075
|
+
Examples
|
|
1076
|
+
--------
|
|
1077
|
+
import asyncio
|
|
1078
|
+
|
|
1079
|
+
from wavix import AsyncWavix
|
|
1080
|
+
|
|
1081
|
+
client = AsyncWavix(
|
|
1082
|
+
token="YOUR_TOKEN",
|
|
1083
|
+
)
|
|
1084
|
+
|
|
1085
|
+
|
|
1086
|
+
async def main() -> None:
|
|
1087
|
+
await client.ten_dlc.campaigns.create(
|
|
1088
|
+
brand_id="BM20QP9",
|
|
1089
|
+
affiliate_marketing=False,
|
|
1090
|
+
age_gated=False,
|
|
1091
|
+
auto_renewal=False,
|
|
1092
|
+
direct_lending=False,
|
|
1093
|
+
embedded_links=False,
|
|
1094
|
+
embedded_phones=False,
|
|
1095
|
+
embedded_link_sample="https://site.com/verify",
|
|
1096
|
+
description="Our campaign aims to …",
|
|
1097
|
+
optin_workflow="Our SMS ...",
|
|
1098
|
+
help=True,
|
|
1099
|
+
help_keywords="help",
|
|
1100
|
+
help_message="For help, please visit www.site.com. To opt-out, reply STOP.",
|
|
1101
|
+
optin=True,
|
|
1102
|
+
optin_keywords="begin,start",
|
|
1103
|
+
optin_message="You are now opted-in for help please reply HELP, to stop please reply STOP",
|
|
1104
|
+
optout=True,
|
|
1105
|
+
optout_keywords="stop,quit,unsubscribe",
|
|
1106
|
+
optout_message="You are now opted out and will receive no further messages",
|
|
1107
|
+
name="My first campaign",
|
|
1108
|
+
sample1="Your verification code is XXXXXX",
|
|
1109
|
+
sample2="XXXX is your verification code",
|
|
1110
|
+
sample3="Your code is XXXXXX, valid for 10 minutes",
|
|
1111
|
+
sample4="Use code XXXXXX to confirm your login",
|
|
1112
|
+
sample5="XXXXXX is your one-time passcode",
|
|
1113
|
+
mock=False,
|
|
1114
|
+
usecase="2FA",
|
|
1115
|
+
privacy_policy="https://site.com/privacy-policy",
|
|
1116
|
+
terms_conditions="https://site.com/terms-and-conditions",
|
|
1117
|
+
)
|
|
1118
|
+
|
|
1119
|
+
|
|
1120
|
+
asyncio.run(main())
|
|
1121
|
+
"""
|
|
1122
|
+
_response = await self._raw_client.create(
|
|
1123
|
+
brand_id,
|
|
1124
|
+
affiliate_marketing=affiliate_marketing,
|
|
1125
|
+
age_gated=age_gated,
|
|
1126
|
+
auto_renewal=auto_renewal,
|
|
1127
|
+
direct_lending=direct_lending,
|
|
1128
|
+
embedded_links=embedded_links,
|
|
1129
|
+
description=description,
|
|
1130
|
+
optin_workflow=optin_workflow,
|
|
1131
|
+
help=help,
|
|
1132
|
+
help_keywords=help_keywords,
|
|
1133
|
+
help_message=help_message,
|
|
1134
|
+
optin=optin,
|
|
1135
|
+
optin_keywords=optin_keywords,
|
|
1136
|
+
optin_message=optin_message,
|
|
1137
|
+
optout=optout,
|
|
1138
|
+
optout_keywords=optout_keywords,
|
|
1139
|
+
optout_message=optout_message,
|
|
1140
|
+
name=name,
|
|
1141
|
+
sample1=sample1,
|
|
1142
|
+
mock=mock,
|
|
1143
|
+
usecase=usecase,
|
|
1144
|
+
terms_conditions=terms_conditions,
|
|
1145
|
+
embedded_phones=embedded_phones,
|
|
1146
|
+
embedded_link_sample=embedded_link_sample,
|
|
1147
|
+
sample2=sample2,
|
|
1148
|
+
sample3=sample3,
|
|
1149
|
+
sample4=sample4,
|
|
1150
|
+
sample5=sample5,
|
|
1151
|
+
privacy_policy=privacy_policy,
|
|
1152
|
+
request_options=request_options,
|
|
1153
|
+
)
|
|
1154
|
+
return _response.data
|
|
1155
|
+
|
|
1156
|
+
async def get(
|
|
1157
|
+
self, brand_id: str, campaign_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
1158
|
+
) -> GetCampaignsResponse:
|
|
1159
|
+
"""
|
|
1160
|
+
Returns the 10DLC Campaign identified by `campaign_id` under the Brand identified by `brand_id`.
|
|
1161
|
+
|
|
1162
|
+
Parameters
|
|
1163
|
+
----------
|
|
1164
|
+
brand_id : str
|
|
1165
|
+
The unique ID of the 10DLC Brand.
|
|
1166
|
+
|
|
1167
|
+
campaign_id : str
|
|
1168
|
+
The unique ID of the 10DLC Campaign.
|
|
1169
|
+
|
|
1170
|
+
request_options : typing.Optional[RequestOptions]
|
|
1171
|
+
Request-specific configuration.
|
|
1172
|
+
|
|
1173
|
+
Returns
|
|
1174
|
+
-------
|
|
1175
|
+
GetCampaignsResponse
|
|
1176
|
+
Returns the 10DLC Campaign.
|
|
1177
|
+
|
|
1178
|
+
Examples
|
|
1179
|
+
--------
|
|
1180
|
+
import asyncio
|
|
1181
|
+
|
|
1182
|
+
from wavix import AsyncWavix
|
|
1183
|
+
|
|
1184
|
+
client = AsyncWavix(
|
|
1185
|
+
token="YOUR_TOKEN",
|
|
1186
|
+
)
|
|
1187
|
+
|
|
1188
|
+
|
|
1189
|
+
async def main() -> None:
|
|
1190
|
+
await client.ten_dlc.campaigns.get(
|
|
1191
|
+
brand_id="BM20QP9",
|
|
1192
|
+
campaign_id="CKLCK95",
|
|
1193
|
+
)
|
|
1194
|
+
|
|
1195
|
+
|
|
1196
|
+
asyncio.run(main())
|
|
1197
|
+
"""
|
|
1198
|
+
_response = await self._raw_client.get(brand_id, campaign_id, request_options=request_options)
|
|
1199
|
+
return _response.data
|
|
1200
|
+
|
|
1201
|
+
async def update(
|
|
1202
|
+
self,
|
|
1203
|
+
brand_id: str,
|
|
1204
|
+
campaign_id: str,
|
|
1205
|
+
*,
|
|
1206
|
+
name: typing.Optional[str] = OMIT,
|
|
1207
|
+
usecase: typing.Optional[TenDlcCampaignUpdateRequestUsecase] = OMIT,
|
|
1208
|
+
description: typing.Optional[str] = OMIT,
|
|
1209
|
+
embedded_links: typing.Optional[bool] = OMIT,
|
|
1210
|
+
embedded_phones: typing.Optional[bool] = OMIT,
|
|
1211
|
+
age_gated: typing.Optional[bool] = OMIT,
|
|
1212
|
+
direct_lending: typing.Optional[bool] = OMIT,
|
|
1213
|
+
optin: typing.Optional[bool] = OMIT,
|
|
1214
|
+
optout: typing.Optional[bool] = OMIT,
|
|
1215
|
+
help: typing.Optional[bool] = OMIT,
|
|
1216
|
+
sample1: typing.Optional[str] = OMIT,
|
|
1217
|
+
sample2: typing.Optional[str] = OMIT,
|
|
1218
|
+
sample3: typing.Optional[str] = OMIT,
|
|
1219
|
+
sample4: typing.Optional[str] = OMIT,
|
|
1220
|
+
sample5: typing.Optional[str] = OMIT,
|
|
1221
|
+
optin_workflow: typing.Optional[str] = OMIT,
|
|
1222
|
+
help_message: typing.Optional[str] = OMIT,
|
|
1223
|
+
optin_message: typing.Optional[str] = OMIT,
|
|
1224
|
+
optout_message: typing.Optional[str] = OMIT,
|
|
1225
|
+
auto_renewal: typing.Optional[bool] = OMIT,
|
|
1226
|
+
optin_keywords: typing.Optional[str] = OMIT,
|
|
1227
|
+
help_keywords: typing.Optional[str] = OMIT,
|
|
1228
|
+
optout_keywords: typing.Optional[str] = OMIT,
|
|
1229
|
+
terms_conditions: typing.Optional[str] = OMIT,
|
|
1230
|
+
privacy_policy: typing.Optional[str] = OMIT,
|
|
1231
|
+
embedded_link_sample: typing.Optional[str] = OMIT,
|
|
1232
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1233
|
+
) -> UpdateCampaignsResponse:
|
|
1234
|
+
"""
|
|
1235
|
+
Updates the 10DLC Campaign identified by `campaign_id`. Only the provided fields are changed.
|
|
1236
|
+
|
|
1237
|
+
Parameters
|
|
1238
|
+
----------
|
|
1239
|
+
brand_id : str
|
|
1240
|
+
The unique ID of the 10DLC Brand.
|
|
1241
|
+
|
|
1242
|
+
campaign_id : str
|
|
1243
|
+
The unique ID of the 10DLC Campaign.
|
|
1244
|
+
|
|
1245
|
+
name : typing.Optional[str]
|
|
1246
|
+
Display name of the Campaign.
|
|
1247
|
+
|
|
1248
|
+
usecase : typing.Optional[TenDlcCampaignUpdateRequestUsecase]
|
|
1249
|
+
Registered use case for the Campaign. One of `CUSTOMER_CARE` (customer support messaging), `MARKETING` (promotional content), `ACCOUNT_NOTIFICATION` (account-related alerts), `FRAUD_ALERT` (fraud and suspicious-activity warnings), `PUBLIC_SERVICE_ANNOUNCEMENT` (public-interest notices), or `SECURITY_ALERT` (security-related warnings).
|
|
1250
|
+
|
|
1251
|
+
description : typing.Optional[str]
|
|
1252
|
+
Description of the Campaign and its messaging purpose.
|
|
1253
|
+
|
|
1254
|
+
embedded_links : typing.Optional[bool]
|
|
1255
|
+
Indicates whether the Campaign messages contain embedded links.
|
|
1256
|
+
|
|
1257
|
+
embedded_phones : typing.Optional[bool]
|
|
1258
|
+
Indicates whether the Campaign messages contain embedded phone numbers.
|
|
1259
|
+
|
|
1260
|
+
age_gated : typing.Optional[bool]
|
|
1261
|
+
Indicates whether the Campaign messages contain age-gated content.
|
|
1262
|
+
|
|
1263
|
+
direct_lending : typing.Optional[bool]
|
|
1264
|
+
Indicates whether the Campaign messages contain direct lending content.
|
|
1265
|
+
|
|
1266
|
+
optin : typing.Optional[bool]
|
|
1267
|
+
Indicates whether the Campaign requires subscribers to opt in before receiving messages.
|
|
1268
|
+
|
|
1269
|
+
optout : typing.Optional[bool]
|
|
1270
|
+
Indicates whether the Campaign provides an opt-out system that subscribers can trigger with a keyword.
|
|
1271
|
+
|
|
1272
|
+
help : typing.Optional[bool]
|
|
1273
|
+
Indicates whether the Campaign provides a help system that subscribers can trigger with a keyword.
|
|
1274
|
+
|
|
1275
|
+
sample1 : typing.Optional[str]
|
|
1276
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
1277
|
+
|
|
1278
|
+
sample2 : typing.Optional[str]
|
|
1279
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
1280
|
+
|
|
1281
|
+
sample3 : typing.Optional[str]
|
|
1282
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
1283
|
+
|
|
1284
|
+
sample4 : typing.Optional[str]
|
|
1285
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
1286
|
+
|
|
1287
|
+
sample5 : typing.Optional[str]
|
|
1288
|
+
Sample message demonstrating the content sent through the Campaign.
|
|
1289
|
+
|
|
1290
|
+
optin_workflow : typing.Optional[str]
|
|
1291
|
+
Description of the workflow through which subscribers opt in to the Campaign.
|
|
1292
|
+
|
|
1293
|
+
help_message : typing.Optional[str]
|
|
1294
|
+
Acknowledgement sent when a subscriber texts a help keyword.
|
|
1295
|
+
|
|
1296
|
+
optin_message : typing.Optional[str]
|
|
1297
|
+
Acknowledgement sent when a subscriber texts an opt-in keyword.
|
|
1298
|
+
|
|
1299
|
+
optout_message : typing.Optional[str]
|
|
1300
|
+
Acknowledgement sent when a subscriber texts an opt-out keyword.
|
|
1301
|
+
|
|
1302
|
+
auto_renewal : typing.Optional[bool]
|
|
1303
|
+
Indicates whether the Campaign is automatically renewed at the end of each billing period.
|
|
1304
|
+
|
|
1305
|
+
optin_keywords : typing.Optional[str]
|
|
1306
|
+
Comma-separated list of opt-in keywords. Keywords are case-insensitive.
|
|
1307
|
+
|
|
1308
|
+
help_keywords : typing.Optional[str]
|
|
1309
|
+
Comma-separated list of help keywords. Keywords are case-insensitive.
|
|
1310
|
+
|
|
1311
|
+
optout_keywords : typing.Optional[str]
|
|
1312
|
+
Comma-separated list of opt-out keywords. Keywords are case-insensitive.
|
|
1313
|
+
|
|
1314
|
+
terms_conditions : typing.Optional[str]
|
|
1315
|
+
URL of the Campaign terms and conditions.
|
|
1316
|
+
|
|
1317
|
+
privacy_policy : typing.Optional[str]
|
|
1318
|
+
URL of the Campaign privacy policy.
|
|
1319
|
+
|
|
1320
|
+
embedded_link_sample : typing.Optional[str]
|
|
1321
|
+
Sample of an embedded link used in Campaign messages.
|
|
1322
|
+
|
|
1323
|
+
request_options : typing.Optional[RequestOptions]
|
|
1324
|
+
Request-specific configuration.
|
|
1325
|
+
|
|
1326
|
+
Returns
|
|
1327
|
+
-------
|
|
1328
|
+
UpdateCampaignsResponse
|
|
1329
|
+
Returns the updated 10DLC Campaign.
|
|
1330
|
+
|
|
1331
|
+
Examples
|
|
1332
|
+
--------
|
|
1333
|
+
import asyncio
|
|
1334
|
+
|
|
1335
|
+
from wavix import AsyncWavix
|
|
1336
|
+
|
|
1337
|
+
client = AsyncWavix(
|
|
1338
|
+
token="YOUR_TOKEN",
|
|
1339
|
+
)
|
|
1340
|
+
|
|
1341
|
+
|
|
1342
|
+
async def main() -> None:
|
|
1343
|
+
await client.ten_dlc.campaigns.update(
|
|
1344
|
+
brand_id="BM20QP9",
|
|
1345
|
+
campaign_id="CKLCK95",
|
|
1346
|
+
)
|
|
1347
|
+
|
|
1348
|
+
|
|
1349
|
+
asyncio.run(main())
|
|
1350
|
+
"""
|
|
1351
|
+
_response = await self._raw_client.update(
|
|
1352
|
+
brand_id,
|
|
1353
|
+
campaign_id,
|
|
1354
|
+
name=name,
|
|
1355
|
+
usecase=usecase,
|
|
1356
|
+
description=description,
|
|
1357
|
+
embedded_links=embedded_links,
|
|
1358
|
+
embedded_phones=embedded_phones,
|
|
1359
|
+
age_gated=age_gated,
|
|
1360
|
+
direct_lending=direct_lending,
|
|
1361
|
+
optin=optin,
|
|
1362
|
+
optout=optout,
|
|
1363
|
+
help=help,
|
|
1364
|
+
sample1=sample1,
|
|
1365
|
+
sample2=sample2,
|
|
1366
|
+
sample3=sample3,
|
|
1367
|
+
sample4=sample4,
|
|
1368
|
+
sample5=sample5,
|
|
1369
|
+
optin_workflow=optin_workflow,
|
|
1370
|
+
help_message=help_message,
|
|
1371
|
+
optin_message=optin_message,
|
|
1372
|
+
optout_message=optout_message,
|
|
1373
|
+
auto_renewal=auto_renewal,
|
|
1374
|
+
optin_keywords=optin_keywords,
|
|
1375
|
+
help_keywords=help_keywords,
|
|
1376
|
+
optout_keywords=optout_keywords,
|
|
1377
|
+
terms_conditions=terms_conditions,
|
|
1378
|
+
privacy_policy=privacy_policy,
|
|
1379
|
+
embedded_link_sample=embedded_link_sample,
|
|
1380
|
+
request_options=request_options,
|
|
1381
|
+
)
|
|
1382
|
+
return _response.data
|
|
1383
|
+
|
|
1384
|
+
async def delete(
|
|
1385
|
+
self, brand_id: str, campaign_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
1386
|
+
) -> DeleteCampaignsResponse:
|
|
1387
|
+
"""
|
|
1388
|
+
Deletes a 10DLC Campaign. Associated phone numbers cannot be used as Sender IDs once the Campaign is deleted.
|
|
1389
|
+
|
|
1390
|
+
Parameters
|
|
1391
|
+
----------
|
|
1392
|
+
brand_id : str
|
|
1393
|
+
The unique ID of the 10DLC Brand.
|
|
1394
|
+
|
|
1395
|
+
campaign_id : str
|
|
1396
|
+
The unique ID of the 10DLC Campaign.
|
|
1397
|
+
|
|
1398
|
+
request_options : typing.Optional[RequestOptions]
|
|
1399
|
+
Request-specific configuration.
|
|
1400
|
+
|
|
1401
|
+
Returns
|
|
1402
|
+
-------
|
|
1403
|
+
DeleteCampaignsResponse
|
|
1404
|
+
Returns a success confirmation. The 10DLC Campaign is deleted.
|
|
1405
|
+
|
|
1406
|
+
Examples
|
|
1407
|
+
--------
|
|
1408
|
+
import asyncio
|
|
1409
|
+
|
|
1410
|
+
from wavix import AsyncWavix
|
|
1411
|
+
|
|
1412
|
+
client = AsyncWavix(
|
|
1413
|
+
token="YOUR_TOKEN",
|
|
1414
|
+
)
|
|
1415
|
+
|
|
1416
|
+
|
|
1417
|
+
async def main() -> None:
|
|
1418
|
+
await client.ten_dlc.campaigns.delete(
|
|
1419
|
+
brand_id="BM20QP9",
|
|
1420
|
+
campaign_id="CKLCK95",
|
|
1421
|
+
)
|
|
1422
|
+
|
|
1423
|
+
|
|
1424
|
+
asyncio.run(main())
|
|
1425
|
+
"""
|
|
1426
|
+
_response = await self._raw_client.delete(brand_id, campaign_id, request_options=request_options)
|
|
1427
|
+
return _response.data
|
|
1428
|
+
|
|
1429
|
+
async def nudge(
|
|
1430
|
+
self,
|
|
1431
|
+
brand_id: str,
|
|
1432
|
+
campaign_id: str,
|
|
1433
|
+
*,
|
|
1434
|
+
nudge_intent: str,
|
|
1435
|
+
description: str,
|
|
1436
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1437
|
+
) -> SuccessResponse:
|
|
1438
|
+
"""
|
|
1439
|
+
Requests action on a pending or rejected 10DLC Campaign. Use `nudge_intent` to specify the action:
|
|
1440
|
+
- `REVIEW`: Request review for a pending Campaign. - `APPEAL_REJECTION`: Appeal a rejected Campaign.
|
|
1441
|
+
Note:
|
|
1442
|
+
- The Campaign must be at least 72 hours old.
|
|
1443
|
+
- Only one nudge request per Campaign is allowed every 24 hours.
|
|
1444
|
+
|
|
1445
|
+
Parameters
|
|
1446
|
+
----------
|
|
1447
|
+
brand_id : str
|
|
1448
|
+
The unique ID of the 10DLC Brand.
|
|
1449
|
+
|
|
1450
|
+
campaign_id : str
|
|
1451
|
+
The unique ID of the 10DLC Campaign.
|
|
1452
|
+
|
|
1453
|
+
nudge_intent : str
|
|
1454
|
+
Nudge intent. Allowed values: `REVIEW`, `APPEAL_REJECTION`.
|
|
1455
|
+
Use `nudge_intent` to specify the action: - `REVIEW`: Request review for a pending Campaign. - `APPEAL_REJECTION`: Appeal a rejected Campaign.
|
|
1456
|
+
|
|
1457
|
+
description : str
|
|
1458
|
+
Description of the nudge request.
|
|
1459
|
+
|
|
1460
|
+
request_options : typing.Optional[RequestOptions]
|
|
1461
|
+
Request-specific configuration.
|
|
1462
|
+
|
|
1463
|
+
Returns
|
|
1464
|
+
-------
|
|
1465
|
+
SuccessResponse
|
|
1466
|
+
Returns a success confirmation. The nudge request is submitted.
|
|
1467
|
+
|
|
1468
|
+
Examples
|
|
1469
|
+
--------
|
|
1470
|
+
import asyncio
|
|
1471
|
+
|
|
1472
|
+
from wavix import AsyncWavix
|
|
1473
|
+
|
|
1474
|
+
client = AsyncWavix(
|
|
1475
|
+
token="YOUR_TOKEN",
|
|
1476
|
+
)
|
|
1477
|
+
|
|
1478
|
+
|
|
1479
|
+
async def main() -> None:
|
|
1480
|
+
await client.ten_dlc.campaigns.nudge(
|
|
1481
|
+
brand_id="B9FXYNH",
|
|
1482
|
+
campaign_id="CSJ4TV0",
|
|
1483
|
+
nudge_intent="REVIEW",
|
|
1484
|
+
description="Please review the campaign.",
|
|
1485
|
+
)
|
|
1486
|
+
|
|
1487
|
+
|
|
1488
|
+
asyncio.run(main())
|
|
1489
|
+
"""
|
|
1490
|
+
_response = await self._raw_client.nudge(
|
|
1491
|
+
brand_id, campaign_id, nudge_intent=nudge_intent, description=description, request_options=request_options
|
|
1492
|
+
)
|
|
1493
|
+
return _response.data
|