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,625 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
6
|
+
from ...core.request_options import RequestOptions
|
|
7
|
+
from ...types.message_body import MessageBody
|
|
8
|
+
from ...types.message_delivery_status import MessageDeliveryStatus
|
|
9
|
+
from ...types.send_messages_response import SendMessagesResponse
|
|
10
|
+
from .raw_client import AsyncRawMessagesClient, RawMessagesClient
|
|
11
|
+
from .types.get_messages_response import GetMessagesResponse
|
|
12
|
+
from .types.list_all_messages_request_message_type import ListAllMessagesRequestMessageType
|
|
13
|
+
from .types.list_messages_request_message_type import ListMessagesRequestMessageType
|
|
14
|
+
from .types.list_messages_response import ListMessagesResponse
|
|
15
|
+
|
|
16
|
+
# this is used as the default value for optional parameters
|
|
17
|
+
OMIT = typing.cast(typing.Any, ...)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class MessagesClient:
|
|
21
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
22
|
+
self._raw_client = RawMessagesClient(client_wrapper=client_wrapper)
|
|
23
|
+
|
|
24
|
+
@property
|
|
25
|
+
def with_raw_response(self) -> RawMessagesClient:
|
|
26
|
+
"""
|
|
27
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
28
|
+
|
|
29
|
+
Returns
|
|
30
|
+
-------
|
|
31
|
+
RawMessagesClient
|
|
32
|
+
"""
|
|
33
|
+
return self._raw_client
|
|
34
|
+
|
|
35
|
+
def list(
|
|
36
|
+
self,
|
|
37
|
+
*,
|
|
38
|
+
type: str,
|
|
39
|
+
sent_after: typing.Optional[str] = None,
|
|
40
|
+
sent_before: typing.Optional[str] = None,
|
|
41
|
+
from_: typing.Optional[str] = None,
|
|
42
|
+
to: typing.Optional[str] = None,
|
|
43
|
+
status: typing.Optional[MessageDeliveryStatus] = None,
|
|
44
|
+
tag: typing.Optional[str] = None,
|
|
45
|
+
message_type: typing.Optional[ListMessagesRequestMessageType] = None,
|
|
46
|
+
page: typing.Optional[int] = None,
|
|
47
|
+
per_page: typing.Optional[int] = None,
|
|
48
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
49
|
+
) -> ListMessagesResponse:
|
|
50
|
+
"""
|
|
51
|
+
Returns a paginated list of SMS and MMS messages for the authenticated account, filtered by direction, date, and other criteria.
|
|
52
|
+
|
|
53
|
+
Parameters
|
|
54
|
+
----------
|
|
55
|
+
type : str
|
|
56
|
+
Filters messages by direction. One of `inbound` (messages received by the account) or `outbound` (messages sent by the account).
|
|
57
|
+
|
|
58
|
+
sent_after : typing.Optional[str]
|
|
59
|
+
Returns messages sent on or after this date, in `YYYY-MM-DD` format.
|
|
60
|
+
|
|
61
|
+
sent_before : typing.Optional[str]
|
|
62
|
+
Returns messages sent on or before this date, in `YYYY-MM-DD` format.
|
|
63
|
+
|
|
64
|
+
from_ : typing.Optional[str]
|
|
65
|
+
Filters by message sender. For `outbound` messages, the Sender ID used to send the message; for `inbound` messages, the originating phone number.
|
|
66
|
+
|
|
67
|
+
to : typing.Optional[str]
|
|
68
|
+
Filters by message recipient. For `outbound` messages, the destination phone number; for `inbound` messages, an SMS-enabled number on the Wavix platform.
|
|
69
|
+
|
|
70
|
+
status : typing.Optional[MessageDeliveryStatus]
|
|
71
|
+
Filters messages by delivery status. Accepts a `MessageDeliveryStatus` value.
|
|
72
|
+
|
|
73
|
+
tag : typing.Optional[str]
|
|
74
|
+
Filters messages by `tag`. Supported for outbound messages only.
|
|
75
|
+
|
|
76
|
+
message_type : typing.Optional[ListMessagesRequestMessageType]
|
|
77
|
+
Filters messages by type. One of `sms` (text message) or `mms` (multimedia message).
|
|
78
|
+
|
|
79
|
+
page : typing.Optional[int]
|
|
80
|
+
Page number to retrieve. Default `1`.
|
|
81
|
+
|
|
82
|
+
per_page : typing.Optional[int]
|
|
83
|
+
Number of records to return per page. Default `25`.
|
|
84
|
+
|
|
85
|
+
request_options : typing.Optional[RequestOptions]
|
|
86
|
+
Request-specific configuration.
|
|
87
|
+
|
|
88
|
+
Returns
|
|
89
|
+
-------
|
|
90
|
+
ListMessagesResponse
|
|
91
|
+
Returns a paginated list of messages.
|
|
92
|
+
|
|
93
|
+
Examples
|
|
94
|
+
--------
|
|
95
|
+
from wavix import Wavix
|
|
96
|
+
|
|
97
|
+
client = Wavix(
|
|
98
|
+
token="YOUR_TOKEN",
|
|
99
|
+
)
|
|
100
|
+
client.sms_and_mms.messages.list(
|
|
101
|
+
sent_after="2023-04-10",
|
|
102
|
+
sent_before="2023-04-13",
|
|
103
|
+
type="outbound",
|
|
104
|
+
from_="15072429497",
|
|
105
|
+
to="16419252149",
|
|
106
|
+
tag="campaignX",
|
|
107
|
+
page=2,
|
|
108
|
+
per_page=50,
|
|
109
|
+
)
|
|
110
|
+
"""
|
|
111
|
+
_response = self._raw_client.list(
|
|
112
|
+
type=type,
|
|
113
|
+
sent_after=sent_after,
|
|
114
|
+
sent_before=sent_before,
|
|
115
|
+
from_=from_,
|
|
116
|
+
to=to,
|
|
117
|
+
status=status,
|
|
118
|
+
tag=tag,
|
|
119
|
+
message_type=message_type,
|
|
120
|
+
page=page,
|
|
121
|
+
per_page=per_page,
|
|
122
|
+
request_options=request_options,
|
|
123
|
+
)
|
|
124
|
+
return _response.data
|
|
125
|
+
|
|
126
|
+
def send(
|
|
127
|
+
self,
|
|
128
|
+
*,
|
|
129
|
+
from_: str,
|
|
130
|
+
to: str,
|
|
131
|
+
message_body: MessageBody,
|
|
132
|
+
callback_url: typing.Optional[str] = OMIT,
|
|
133
|
+
validity: typing.Optional[int] = OMIT,
|
|
134
|
+
tag: typing.Optional[str] = OMIT,
|
|
135
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
136
|
+
) -> SendMessagesResponse:
|
|
137
|
+
"""
|
|
138
|
+
Sends an SMS or MMS message. MMS is supported for U.S. numbers only. Track delivery using the returned `message_id` and the message status callback.
|
|
139
|
+
**Rate limit**: 20 messages per phone number in 24 hours.
|
|
140
|
+
|
|
141
|
+
Parameters
|
|
142
|
+
----------
|
|
143
|
+
from_ : str
|
|
144
|
+
Sender ID. Numeric or alphanumeric.
|
|
145
|
+
|
|
146
|
+
to : str
|
|
147
|
+
Recipient phone number.
|
|
148
|
+
|
|
149
|
+
message_body : MessageBody
|
|
150
|
+
|
|
151
|
+
callback_url : typing.Optional[str]
|
|
152
|
+
Callback URL for delivery reports.
|
|
153
|
+
|
|
154
|
+
validity : typing.Optional[int]
|
|
155
|
+
Message validity period in seconds. Delivery attempts stop after this period expires.
|
|
156
|
+
|
|
157
|
+
tag : typing.Optional[str]
|
|
158
|
+
Tag to group messages, such as for a specific campaign.
|
|
159
|
+
|
|
160
|
+
request_options : typing.Optional[RequestOptions]
|
|
161
|
+
Request-specific configuration.
|
|
162
|
+
|
|
163
|
+
Returns
|
|
164
|
+
-------
|
|
165
|
+
SendMessagesResponse
|
|
166
|
+
Returns the submitted message with its `message_id` and initial status.
|
|
167
|
+
|
|
168
|
+
Examples
|
|
169
|
+
--------
|
|
170
|
+
from wavix import MessageBody, Wavix
|
|
171
|
+
|
|
172
|
+
client = Wavix(
|
|
173
|
+
token="YOUR_TOKEN",
|
|
174
|
+
)
|
|
175
|
+
client.sms_and_mms.messages.send(
|
|
176
|
+
from_="Wavix",
|
|
177
|
+
to="+447537151866",
|
|
178
|
+
message_body=MessageBody(
|
|
179
|
+
text="Hi there, this is a message from Wavix",
|
|
180
|
+
),
|
|
181
|
+
callback_url="https://you-site.com/webhook",
|
|
182
|
+
validity=3600,
|
|
183
|
+
tag="Fall sale",
|
|
184
|
+
)
|
|
185
|
+
"""
|
|
186
|
+
_response = self._raw_client.send(
|
|
187
|
+
from_=from_,
|
|
188
|
+
to=to,
|
|
189
|
+
message_body=message_body,
|
|
190
|
+
callback_url=callback_url,
|
|
191
|
+
validity=validity,
|
|
192
|
+
tag=tag,
|
|
193
|
+
request_options=request_options,
|
|
194
|
+
)
|
|
195
|
+
return _response.data
|
|
196
|
+
|
|
197
|
+
def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> GetMessagesResponse:
|
|
198
|
+
"""
|
|
199
|
+
Returns the SMS or MMS message identified by `id`, including its delivery status and content.
|
|
200
|
+
|
|
201
|
+
Parameters
|
|
202
|
+
----------
|
|
203
|
+
id : str
|
|
204
|
+
The unique ID of the message.
|
|
205
|
+
|
|
206
|
+
request_options : typing.Optional[RequestOptions]
|
|
207
|
+
Request-specific configuration.
|
|
208
|
+
|
|
209
|
+
Returns
|
|
210
|
+
-------
|
|
211
|
+
GetMessagesResponse
|
|
212
|
+
Returns the message.
|
|
213
|
+
|
|
214
|
+
Examples
|
|
215
|
+
--------
|
|
216
|
+
from wavix import Wavix
|
|
217
|
+
|
|
218
|
+
client = Wavix(
|
|
219
|
+
token="YOUR_TOKEN",
|
|
220
|
+
)
|
|
221
|
+
client.sms_and_mms.messages.get(
|
|
222
|
+
id="3a525ca2-6909-4c72-9399-905adf7f3a74",
|
|
223
|
+
)
|
|
224
|
+
"""
|
|
225
|
+
_response = self._raw_client.get(id, request_options=request_options)
|
|
226
|
+
return _response.data
|
|
227
|
+
|
|
228
|
+
def list_all(
|
|
229
|
+
self,
|
|
230
|
+
*,
|
|
231
|
+
type: str,
|
|
232
|
+
sent_after: typing.Optional[str] = None,
|
|
233
|
+
sent_before: typing.Optional[str] = None,
|
|
234
|
+
from_: typing.Optional[str] = None,
|
|
235
|
+
to: typing.Optional[str] = None,
|
|
236
|
+
status: typing.Optional[MessageDeliveryStatus] = None,
|
|
237
|
+
tag: typing.Optional[str] = None,
|
|
238
|
+
message_type: typing.Optional[ListAllMessagesRequestMessageType] = None,
|
|
239
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
240
|
+
) -> str:
|
|
241
|
+
"""
|
|
242
|
+
Streams matching SMS and MMS messages as newline-delimited JSON (NDJSON), one message per line, for bulk export.
|
|
243
|
+
|
|
244
|
+
Parameters
|
|
245
|
+
----------
|
|
246
|
+
type : str
|
|
247
|
+
Filters messages by direction. One of `inbound` (messages received by the account) or `outbound` (messages sent by the account).
|
|
248
|
+
|
|
249
|
+
sent_after : typing.Optional[str]
|
|
250
|
+
Returns messages sent on or after this timestamp, in `YYYY-MM-DDTHH:MM:SS` format.
|
|
251
|
+
|
|
252
|
+
sent_before : typing.Optional[str]
|
|
253
|
+
Returns messages sent on or before this timestamp, in `YYYY-MM-DDTHH:MM:SS` format.
|
|
254
|
+
|
|
255
|
+
from_ : typing.Optional[str]
|
|
256
|
+
Filters by message sender. For `outbound` messages, the Sender ID used to send the message; for `inbound` messages, the originating phone number.
|
|
257
|
+
|
|
258
|
+
to : typing.Optional[str]
|
|
259
|
+
Filters by message recipient. For `outbound` messages, the destination phone number; for `inbound` messages, the SMS-enabled number that received the message.
|
|
260
|
+
|
|
261
|
+
status : typing.Optional[MessageDeliveryStatus]
|
|
262
|
+
Filters messages by delivery status. Accepts a `MessageDeliveryStatus` value.
|
|
263
|
+
|
|
264
|
+
tag : typing.Optional[str]
|
|
265
|
+
Filters messages by `tag`. Supported for outbound messages only.
|
|
266
|
+
|
|
267
|
+
message_type : typing.Optional[ListAllMessagesRequestMessageType]
|
|
268
|
+
Filters messages by type. One of `sms` (text message) or `mms` (multimedia message).
|
|
269
|
+
|
|
270
|
+
request_options : typing.Optional[RequestOptions]
|
|
271
|
+
Request-specific configuration.
|
|
272
|
+
|
|
273
|
+
Returns
|
|
274
|
+
-------
|
|
275
|
+
str
|
|
276
|
+
Returns an NDJSON stream of messages, one per line.
|
|
277
|
+
|
|
278
|
+
Examples
|
|
279
|
+
--------
|
|
280
|
+
from wavix import Wavix
|
|
281
|
+
|
|
282
|
+
client = Wavix(
|
|
283
|
+
token="YOUR_TOKEN",
|
|
284
|
+
)
|
|
285
|
+
client.sms_and_mms.messages.list_all(
|
|
286
|
+
sent_after="2023-04-10T00:00:00",
|
|
287
|
+
sent_before="2023-04-13T23:59:59",
|
|
288
|
+
type="outbound",
|
|
289
|
+
from_="15072429497",
|
|
290
|
+
to="16419252149",
|
|
291
|
+
tag="campaignX",
|
|
292
|
+
)
|
|
293
|
+
"""
|
|
294
|
+
_response = self._raw_client.list_all(
|
|
295
|
+
type=type,
|
|
296
|
+
sent_after=sent_after,
|
|
297
|
+
sent_before=sent_before,
|
|
298
|
+
from_=from_,
|
|
299
|
+
to=to,
|
|
300
|
+
status=status,
|
|
301
|
+
tag=tag,
|
|
302
|
+
message_type=message_type,
|
|
303
|
+
request_options=request_options,
|
|
304
|
+
)
|
|
305
|
+
return _response.data
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
class AsyncMessagesClient:
|
|
309
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
310
|
+
self._raw_client = AsyncRawMessagesClient(client_wrapper=client_wrapper)
|
|
311
|
+
|
|
312
|
+
@property
|
|
313
|
+
def with_raw_response(self) -> AsyncRawMessagesClient:
|
|
314
|
+
"""
|
|
315
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
316
|
+
|
|
317
|
+
Returns
|
|
318
|
+
-------
|
|
319
|
+
AsyncRawMessagesClient
|
|
320
|
+
"""
|
|
321
|
+
return self._raw_client
|
|
322
|
+
|
|
323
|
+
async def list(
|
|
324
|
+
self,
|
|
325
|
+
*,
|
|
326
|
+
type: str,
|
|
327
|
+
sent_after: typing.Optional[str] = None,
|
|
328
|
+
sent_before: typing.Optional[str] = None,
|
|
329
|
+
from_: typing.Optional[str] = None,
|
|
330
|
+
to: typing.Optional[str] = None,
|
|
331
|
+
status: typing.Optional[MessageDeliveryStatus] = None,
|
|
332
|
+
tag: typing.Optional[str] = None,
|
|
333
|
+
message_type: typing.Optional[ListMessagesRequestMessageType] = None,
|
|
334
|
+
page: typing.Optional[int] = None,
|
|
335
|
+
per_page: typing.Optional[int] = None,
|
|
336
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
337
|
+
) -> ListMessagesResponse:
|
|
338
|
+
"""
|
|
339
|
+
Returns a paginated list of SMS and MMS messages for the authenticated account, filtered by direction, date, and other criteria.
|
|
340
|
+
|
|
341
|
+
Parameters
|
|
342
|
+
----------
|
|
343
|
+
type : str
|
|
344
|
+
Filters messages by direction. One of `inbound` (messages received by the account) or `outbound` (messages sent by the account).
|
|
345
|
+
|
|
346
|
+
sent_after : typing.Optional[str]
|
|
347
|
+
Returns messages sent on or after this date, in `YYYY-MM-DD` format.
|
|
348
|
+
|
|
349
|
+
sent_before : typing.Optional[str]
|
|
350
|
+
Returns messages sent on or before this date, in `YYYY-MM-DD` format.
|
|
351
|
+
|
|
352
|
+
from_ : typing.Optional[str]
|
|
353
|
+
Filters by message sender. For `outbound` messages, the Sender ID used to send the message; for `inbound` messages, the originating phone number.
|
|
354
|
+
|
|
355
|
+
to : typing.Optional[str]
|
|
356
|
+
Filters by message recipient. For `outbound` messages, the destination phone number; for `inbound` messages, an SMS-enabled number on the Wavix platform.
|
|
357
|
+
|
|
358
|
+
status : typing.Optional[MessageDeliveryStatus]
|
|
359
|
+
Filters messages by delivery status. Accepts a `MessageDeliveryStatus` value.
|
|
360
|
+
|
|
361
|
+
tag : typing.Optional[str]
|
|
362
|
+
Filters messages by `tag`. Supported for outbound messages only.
|
|
363
|
+
|
|
364
|
+
message_type : typing.Optional[ListMessagesRequestMessageType]
|
|
365
|
+
Filters messages by type. One of `sms` (text message) or `mms` (multimedia message).
|
|
366
|
+
|
|
367
|
+
page : typing.Optional[int]
|
|
368
|
+
Page number to retrieve. Default `1`.
|
|
369
|
+
|
|
370
|
+
per_page : typing.Optional[int]
|
|
371
|
+
Number of records to return per page. Default `25`.
|
|
372
|
+
|
|
373
|
+
request_options : typing.Optional[RequestOptions]
|
|
374
|
+
Request-specific configuration.
|
|
375
|
+
|
|
376
|
+
Returns
|
|
377
|
+
-------
|
|
378
|
+
ListMessagesResponse
|
|
379
|
+
Returns a paginated list of messages.
|
|
380
|
+
|
|
381
|
+
Examples
|
|
382
|
+
--------
|
|
383
|
+
import asyncio
|
|
384
|
+
|
|
385
|
+
from wavix import AsyncWavix
|
|
386
|
+
|
|
387
|
+
client = AsyncWavix(
|
|
388
|
+
token="YOUR_TOKEN",
|
|
389
|
+
)
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
async def main() -> None:
|
|
393
|
+
await client.sms_and_mms.messages.list(
|
|
394
|
+
sent_after="2023-04-10",
|
|
395
|
+
sent_before="2023-04-13",
|
|
396
|
+
type="outbound",
|
|
397
|
+
from_="15072429497",
|
|
398
|
+
to="16419252149",
|
|
399
|
+
tag="campaignX",
|
|
400
|
+
page=2,
|
|
401
|
+
per_page=50,
|
|
402
|
+
)
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
asyncio.run(main())
|
|
406
|
+
"""
|
|
407
|
+
_response = await self._raw_client.list(
|
|
408
|
+
type=type,
|
|
409
|
+
sent_after=sent_after,
|
|
410
|
+
sent_before=sent_before,
|
|
411
|
+
from_=from_,
|
|
412
|
+
to=to,
|
|
413
|
+
status=status,
|
|
414
|
+
tag=tag,
|
|
415
|
+
message_type=message_type,
|
|
416
|
+
page=page,
|
|
417
|
+
per_page=per_page,
|
|
418
|
+
request_options=request_options,
|
|
419
|
+
)
|
|
420
|
+
return _response.data
|
|
421
|
+
|
|
422
|
+
async def send(
|
|
423
|
+
self,
|
|
424
|
+
*,
|
|
425
|
+
from_: str,
|
|
426
|
+
to: str,
|
|
427
|
+
message_body: MessageBody,
|
|
428
|
+
callback_url: typing.Optional[str] = OMIT,
|
|
429
|
+
validity: typing.Optional[int] = OMIT,
|
|
430
|
+
tag: typing.Optional[str] = OMIT,
|
|
431
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
432
|
+
) -> SendMessagesResponse:
|
|
433
|
+
"""
|
|
434
|
+
Sends an SMS or MMS message. MMS is supported for U.S. numbers only. Track delivery using the returned `message_id` and the message status callback.
|
|
435
|
+
**Rate limit**: 20 messages per phone number in 24 hours.
|
|
436
|
+
|
|
437
|
+
Parameters
|
|
438
|
+
----------
|
|
439
|
+
from_ : str
|
|
440
|
+
Sender ID. Numeric or alphanumeric.
|
|
441
|
+
|
|
442
|
+
to : str
|
|
443
|
+
Recipient phone number.
|
|
444
|
+
|
|
445
|
+
message_body : MessageBody
|
|
446
|
+
|
|
447
|
+
callback_url : typing.Optional[str]
|
|
448
|
+
Callback URL for delivery reports.
|
|
449
|
+
|
|
450
|
+
validity : typing.Optional[int]
|
|
451
|
+
Message validity period in seconds. Delivery attempts stop after this period expires.
|
|
452
|
+
|
|
453
|
+
tag : typing.Optional[str]
|
|
454
|
+
Tag to group messages, such as for a specific campaign.
|
|
455
|
+
|
|
456
|
+
request_options : typing.Optional[RequestOptions]
|
|
457
|
+
Request-specific configuration.
|
|
458
|
+
|
|
459
|
+
Returns
|
|
460
|
+
-------
|
|
461
|
+
SendMessagesResponse
|
|
462
|
+
Returns the submitted message with its `message_id` and initial status.
|
|
463
|
+
|
|
464
|
+
Examples
|
|
465
|
+
--------
|
|
466
|
+
import asyncio
|
|
467
|
+
|
|
468
|
+
from wavix import AsyncWavix, MessageBody
|
|
469
|
+
|
|
470
|
+
client = AsyncWavix(
|
|
471
|
+
token="YOUR_TOKEN",
|
|
472
|
+
)
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
async def main() -> None:
|
|
476
|
+
await client.sms_and_mms.messages.send(
|
|
477
|
+
from_="Wavix",
|
|
478
|
+
to="+447537151866",
|
|
479
|
+
message_body=MessageBody(
|
|
480
|
+
text="Hi there, this is a message from Wavix",
|
|
481
|
+
),
|
|
482
|
+
callback_url="https://you-site.com/webhook",
|
|
483
|
+
validity=3600,
|
|
484
|
+
tag="Fall sale",
|
|
485
|
+
)
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
asyncio.run(main())
|
|
489
|
+
"""
|
|
490
|
+
_response = await self._raw_client.send(
|
|
491
|
+
from_=from_,
|
|
492
|
+
to=to,
|
|
493
|
+
message_body=message_body,
|
|
494
|
+
callback_url=callback_url,
|
|
495
|
+
validity=validity,
|
|
496
|
+
tag=tag,
|
|
497
|
+
request_options=request_options,
|
|
498
|
+
)
|
|
499
|
+
return _response.data
|
|
500
|
+
|
|
501
|
+
async def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> GetMessagesResponse:
|
|
502
|
+
"""
|
|
503
|
+
Returns the SMS or MMS message identified by `id`, including its delivery status and content.
|
|
504
|
+
|
|
505
|
+
Parameters
|
|
506
|
+
----------
|
|
507
|
+
id : str
|
|
508
|
+
The unique ID of the message.
|
|
509
|
+
|
|
510
|
+
request_options : typing.Optional[RequestOptions]
|
|
511
|
+
Request-specific configuration.
|
|
512
|
+
|
|
513
|
+
Returns
|
|
514
|
+
-------
|
|
515
|
+
GetMessagesResponse
|
|
516
|
+
Returns the message.
|
|
517
|
+
|
|
518
|
+
Examples
|
|
519
|
+
--------
|
|
520
|
+
import asyncio
|
|
521
|
+
|
|
522
|
+
from wavix import AsyncWavix
|
|
523
|
+
|
|
524
|
+
client = AsyncWavix(
|
|
525
|
+
token="YOUR_TOKEN",
|
|
526
|
+
)
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
async def main() -> None:
|
|
530
|
+
await client.sms_and_mms.messages.get(
|
|
531
|
+
id="3a525ca2-6909-4c72-9399-905adf7f3a74",
|
|
532
|
+
)
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
asyncio.run(main())
|
|
536
|
+
"""
|
|
537
|
+
_response = await self._raw_client.get(id, request_options=request_options)
|
|
538
|
+
return _response.data
|
|
539
|
+
|
|
540
|
+
async def list_all(
|
|
541
|
+
self,
|
|
542
|
+
*,
|
|
543
|
+
type: str,
|
|
544
|
+
sent_after: typing.Optional[str] = None,
|
|
545
|
+
sent_before: typing.Optional[str] = None,
|
|
546
|
+
from_: typing.Optional[str] = None,
|
|
547
|
+
to: typing.Optional[str] = None,
|
|
548
|
+
status: typing.Optional[MessageDeliveryStatus] = None,
|
|
549
|
+
tag: typing.Optional[str] = None,
|
|
550
|
+
message_type: typing.Optional[ListAllMessagesRequestMessageType] = None,
|
|
551
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
552
|
+
) -> str:
|
|
553
|
+
"""
|
|
554
|
+
Streams matching SMS and MMS messages as newline-delimited JSON (NDJSON), one message per line, for bulk export.
|
|
555
|
+
|
|
556
|
+
Parameters
|
|
557
|
+
----------
|
|
558
|
+
type : str
|
|
559
|
+
Filters messages by direction. One of `inbound` (messages received by the account) or `outbound` (messages sent by the account).
|
|
560
|
+
|
|
561
|
+
sent_after : typing.Optional[str]
|
|
562
|
+
Returns messages sent on or after this timestamp, in `YYYY-MM-DDTHH:MM:SS` format.
|
|
563
|
+
|
|
564
|
+
sent_before : typing.Optional[str]
|
|
565
|
+
Returns messages sent on or before this timestamp, in `YYYY-MM-DDTHH:MM:SS` format.
|
|
566
|
+
|
|
567
|
+
from_ : typing.Optional[str]
|
|
568
|
+
Filters by message sender. For `outbound` messages, the Sender ID used to send the message; for `inbound` messages, the originating phone number.
|
|
569
|
+
|
|
570
|
+
to : typing.Optional[str]
|
|
571
|
+
Filters by message recipient. For `outbound` messages, the destination phone number; for `inbound` messages, the SMS-enabled number that received the message.
|
|
572
|
+
|
|
573
|
+
status : typing.Optional[MessageDeliveryStatus]
|
|
574
|
+
Filters messages by delivery status. Accepts a `MessageDeliveryStatus` value.
|
|
575
|
+
|
|
576
|
+
tag : typing.Optional[str]
|
|
577
|
+
Filters messages by `tag`. Supported for outbound messages only.
|
|
578
|
+
|
|
579
|
+
message_type : typing.Optional[ListAllMessagesRequestMessageType]
|
|
580
|
+
Filters messages by type. One of `sms` (text message) or `mms` (multimedia message).
|
|
581
|
+
|
|
582
|
+
request_options : typing.Optional[RequestOptions]
|
|
583
|
+
Request-specific configuration.
|
|
584
|
+
|
|
585
|
+
Returns
|
|
586
|
+
-------
|
|
587
|
+
str
|
|
588
|
+
Returns an NDJSON stream of messages, one per line.
|
|
589
|
+
|
|
590
|
+
Examples
|
|
591
|
+
--------
|
|
592
|
+
import asyncio
|
|
593
|
+
|
|
594
|
+
from wavix import AsyncWavix
|
|
595
|
+
|
|
596
|
+
client = AsyncWavix(
|
|
597
|
+
token="YOUR_TOKEN",
|
|
598
|
+
)
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
async def main() -> None:
|
|
602
|
+
await client.sms_and_mms.messages.list_all(
|
|
603
|
+
sent_after="2023-04-10T00:00:00",
|
|
604
|
+
sent_before="2023-04-13T23:59:59",
|
|
605
|
+
type="outbound",
|
|
606
|
+
from_="15072429497",
|
|
607
|
+
to="16419252149",
|
|
608
|
+
tag="campaignX",
|
|
609
|
+
)
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
asyncio.run(main())
|
|
613
|
+
"""
|
|
614
|
+
_response = await self._raw_client.list_all(
|
|
615
|
+
type=type,
|
|
616
|
+
sent_after=sent_after,
|
|
617
|
+
sent_before=sent_before,
|
|
618
|
+
from_=from_,
|
|
619
|
+
to=to,
|
|
620
|
+
status=status,
|
|
621
|
+
tag=tag,
|
|
622
|
+
message_type=message_type,
|
|
623
|
+
request_options=request_options,
|
|
624
|
+
)
|
|
625
|
+
return _response.data
|