wavix-python-sdk 1.0.0__tar.gz
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_python_sdk-1.0.0/LICENSE +21 -0
- wavix_python_sdk-1.0.0/PKG-INFO +339 -0
- wavix_python_sdk-1.0.0/README.md +307 -0
- wavix_python_sdk-1.0.0/pyproject.toml +97 -0
- wavix_python_sdk-1.0.0/src/wavix/__init__.py +801 -0
- wavix_python_sdk-1.0.0/src/wavix/_default_clients.py +32 -0
- wavix_python_sdk-1.0.0/src/wavix/api_keys/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/api_keys/client.py +764 -0
- wavix_python_sdk-1.0.0/src/wavix/api_keys/raw_client.py +1191 -0
- wavix_python_sdk-1.0.0/src/wavix/billing/__init__.py +41 -0
- wavix_python_sdk-1.0.0/src/wavix/billing/client.py +82 -0
- wavix_python_sdk-1.0.0/src/wavix/billing/invoices/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/billing/invoices/client.py +203 -0
- wavix_python_sdk-1.0.0/src/wavix/billing/invoices/raw_client.py +302 -0
- wavix_python_sdk-1.0.0/src/wavix/billing/invoices/types/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/billing/invoices/types/list_invoices_response.py +31 -0
- wavix_python_sdk-1.0.0/src/wavix/billing/raw_client.py +13 -0
- wavix_python_sdk-1.0.0/src/wavix/billing/transactions/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/billing/transactions/client.py +209 -0
- wavix_python_sdk-1.0.0/src/wavix/billing/transactions/raw_client.py +253 -0
- wavix_python_sdk-1.0.0/src/wavix/billing/transactions/types/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/billing/transactions/types/list_transactions_response.py +31 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/__init__.py +61 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/cities/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/cities/client.py +134 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/cities/raw_client.py +201 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/cities/types/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/cities/types/list_cities_response.py +23 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/client.py +139 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/countries/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/countries/client.py +116 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/countries/raw_client.py +144 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/countries/types/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/countries/types/list_countries_response.py +23 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/numbers/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/numbers/client.py +168 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/numbers/raw_client.py +227 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/numbers/types/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/numbers/types/list_numbers_response.py +26 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/raw_client.py +13 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/region_cities/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/region_cities/client.py +142 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/region_cities/raw_client.py +207 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/region_cities/types/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/region_cities/types/list_region_cities_response.py +23 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/regions/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/regions/client.py +132 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/regions/raw_client.py +222 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/regions/types/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/buy/regions/types/list_regions_response.py +23 -0
- wavix_python_sdk-1.0.0/src/wavix/call_control/__init__.py +40 -0
- wavix_python_sdk-1.0.0/src/wavix/call_control/audio/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/call_control/audio/client.py +195 -0
- wavix_python_sdk-1.0.0/src/wavix/call_control/audio/raw_client.py +333 -0
- wavix_python_sdk-1.0.0/src/wavix/call_control/client.py +796 -0
- wavix_python_sdk-1.0.0/src/wavix/call_control/raw_client.py +1224 -0
- wavix_python_sdk-1.0.0/src/wavix/call_control/streams/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/call_control/streams/client.py +250 -0
- wavix_python_sdk-1.0.0/src/wavix/call_control/streams/raw_client.py +325 -0
- wavix_python_sdk-1.0.0/src/wavix/call_control/types/__init__.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/call_control/types/call_dtmf_collect_request_prompt.py +33 -0
- wavix_python_sdk-1.0.0/src/wavix/call_control/types/call_dtmf_collect_request_prompt_say.py +31 -0
- wavix_python_sdk-1.0.0/src/wavix/call_recording/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/call_recording/client.py +430 -0
- wavix_python_sdk-1.0.0/src/wavix/call_recording/raw_client.py +726 -0
- wavix_python_sdk-1.0.0/src/wavix/call_webhooks/__init__.py +37 -0
- wavix_python_sdk-1.0.0/src/wavix/call_webhooks/client.py +281 -0
- wavix_python_sdk-1.0.0/src/wavix/call_webhooks/raw_client.py +529 -0
- wavix_python_sdk-1.0.0/src/wavix/call_webhooks/types/__init__.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/call_webhooks/types/call_webhooks_create_request_event_type.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/call_webhooks/types/delete_call_webhooks_request_event_type.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/cart/__init__.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/cart/client.py +327 -0
- wavix_python_sdk-1.0.0/src/wavix/cart/raw_client.py +629 -0
- wavix_python_sdk-1.0.0/src/wavix/cart/types/__init__.py +40 -0
- wavix_python_sdk-1.0.0/src/wavix/cart/types/checkout_cart_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/cart/types/get_cart_response.py +29 -0
- wavix_python_sdk-1.0.0/src/wavix/cart/types/remove_cart_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/cdrs/__init__.py +39 -0
- wavix_python_sdk-1.0.0/src/wavix/cdrs/client.py +968 -0
- wavix_python_sdk-1.0.0/src/wavix/cdrs/raw_client.py +1176 -0
- wavix_python_sdk-1.0.0/src/wavix/cdrs/transcription/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/cdrs/transcription/client.py +112 -0
- wavix_python_sdk-1.0.0/src/wavix/cdrs/transcription/raw_client.py +156 -0
- wavix_python_sdk-1.0.0/src/wavix/cdrs/types/__init__.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/cdrs/types/cdr_search_request_disposition.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/cdrs/types/cdr_search_request_type.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/client.py +578 -0
- wavix_python_sdk-1.0.0/src/wavix/core/__init__.py +127 -0
- wavix_python_sdk-1.0.0/src/wavix/core/api_error.py +23 -0
- wavix_python_sdk-1.0.0/src/wavix/core/client_wrapper.py +119 -0
- wavix_python_sdk-1.0.0/src/wavix/core/datetime_utils.py +70 -0
- wavix_python_sdk-1.0.0/src/wavix/core/file.py +67 -0
- wavix_python_sdk-1.0.0/src/wavix/core/force_multipart.py +18 -0
- wavix_python_sdk-1.0.0/src/wavix/core/http_client.py +839 -0
- wavix_python_sdk-1.0.0/src/wavix/core/http_response.py +59 -0
- wavix_python_sdk-1.0.0/src/wavix/core/http_sse/__init__.py +42 -0
- wavix_python_sdk-1.0.0/src/wavix/core/http_sse/_api.py +170 -0
- wavix_python_sdk-1.0.0/src/wavix/core/http_sse/_decoders.py +61 -0
- wavix_python_sdk-1.0.0/src/wavix/core/http_sse/_exceptions.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/core/http_sse/_models.py +17 -0
- wavix_python_sdk-1.0.0/src/wavix/core/jsonable_encoder.py +120 -0
- wavix_python_sdk-1.0.0/src/wavix/core/logging.py +107 -0
- wavix_python_sdk-1.0.0/src/wavix/core/parse_error.py +36 -0
- wavix_python_sdk-1.0.0/src/wavix/core/pydantic_utilities.py +508 -0
- wavix_python_sdk-1.0.0/src/wavix/core/query_encoder.py +58 -0
- wavix_python_sdk-1.0.0/src/wavix/core/remove_none_from_dict.py +11 -0
- wavix_python_sdk-1.0.0/src/wavix/core/request_options.py +35 -0
- wavix_python_sdk-1.0.0/src/wavix/core/serialization.py +347 -0
- wavix_python_sdk-1.0.0/src/wavix/environment.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/errors/__init__.py +56 -0
- wavix_python_sdk-1.0.0/src/wavix/errors/bad_request_error.py +10 -0
- wavix_python_sdk-1.0.0/src/wavix/errors/forbidden_error.py +10 -0
- wavix_python_sdk-1.0.0/src/wavix/errors/not_found_error.py +10 -0
- wavix_python_sdk-1.0.0/src/wavix/errors/service_unavailable_error.py +11 -0
- wavix_python_sdk-1.0.0/src/wavix/errors/too_many_requests_error.py +11 -0
- wavix_python_sdk-1.0.0/src/wavix/errors/unauthorized_error.py +11 -0
- wavix_python_sdk-1.0.0/src/wavix/errors/unprocessable_entity_error.py +10 -0
- wavix_python_sdk-1.0.0/src/wavix/link_shortener/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/link_shortener/client.py +194 -0
- wavix_python_sdk-1.0.0/src/wavix/link_shortener/metrics/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/link_shortener/metrics/client.py +198 -0
- wavix_python_sdk-1.0.0/src/wavix/link_shortener/metrics/raw_client.py +218 -0
- wavix_python_sdk-1.0.0/src/wavix/link_shortener/raw_client.py +265 -0
- wavix_python_sdk-1.0.0/src/wavix/number_validator/__init__.py +35 -0
- wavix_python_sdk-1.0.0/src/wavix/number_validator/client.py +271 -0
- wavix_python_sdk-1.0.0/src/wavix/number_validator/raw_client.py +383 -0
- wavix_python_sdk-1.0.0/src/wavix/number_validator/results/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/number_validator/results/client.py +114 -0
- wavix_python_sdk-1.0.0/src/wavix/number_validator/results/raw_client.py +156 -0
- wavix_python_sdk-1.0.0/src/wavix/number_validator/types/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/number_validator/types/get_number_validator_response.py +112 -0
- wavix_python_sdk-1.0.0/src/wavix/numbers/__init__.py +39 -0
- wavix_python_sdk-1.0.0/src/wavix/numbers/client.py +689 -0
- wavix_python_sdk-1.0.0/src/wavix/numbers/papers/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/numbers/papers/client.py +155 -0
- wavix_python_sdk-1.0.0/src/wavix/numbers/papers/raw_client.py +208 -0
- wavix_python_sdk-1.0.0/src/wavix/numbers/raw_client.py +1000 -0
- wavix_python_sdk-1.0.0/src/wavix/numbers/types/__init__.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/numbers/types/bulk_update_numbers_response.py +23 -0
- wavix_python_sdk-1.0.0/src/wavix/numbers/types/delete_numbers_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/profile/__init__.py +41 -0
- wavix_python_sdk-1.0.0/src/wavix/profile/client.py +308 -0
- wavix_python_sdk-1.0.0/src/wavix/profile/config/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/profile/config/client.py +100 -0
- wavix_python_sdk-1.0.0/src/wavix/profile/config/raw_client.py +124 -0
- wavix_python_sdk-1.0.0/src/wavix/profile/config/types/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/profile/config/types/get_config_response.py +25 -0
- wavix_python_sdk-1.0.0/src/wavix/profile/raw_client.py +360 -0
- wavix_python_sdk-1.0.0/src/wavix/profile/types/__init__.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/profile/types/profile_update_request_company_info.py +48 -0
- wavix_python_sdk-1.0.0/src/wavix/profile/types/profile_update_request_company_info_industry.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/py.typed +0 -0
- wavix_python_sdk-1.0.0/src/wavix/sip_trunks/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/sip_trunks/client.py +927 -0
- wavix_python_sdk-1.0.0/src/wavix/sip_trunks/raw_client.py +1324 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/__init__.py +66 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/client.py +101 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/messages/__init__.py +49 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/messages/client.py +625 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/messages/raw_client.py +793 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/messages/types/__init__.py +47 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/messages/types/get_messages_response.py +97 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/messages/types/list_all_messages_request_message_type.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/messages/types/list_messages_request_message_type.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/messages/types/list_messages_response.py +26 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/opt_outs/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/opt_outs/client.py +277 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/opt_outs/raw_client.py +438 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/opt_outs/types/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/opt_outs/types/create_opt_outs_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/raw_client.py +13 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/sender_ids/__init__.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/sender_ids/client.py +391 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/sender_ids/raw_client.py +617 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/sender_ids/types/__init__.py +40 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/sender_ids/types/delete_sender_ids_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/sender_ids/types/sender_id_create_request_monthly_volume.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/sms_and_mms/sender_ids/types/sender_id_create_request_usecase.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/speech_analytics/__init__.py +52 -0
- wavix_python_sdk-1.0.0/src/wavix/speech_analytics/client.py +372 -0
- wavix_python_sdk-1.0.0/src/wavix/speech_analytics/file/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/speech_analytics/file/client.py +114 -0
- wavix_python_sdk-1.0.0/src/wavix/speech_analytics/file/raw_client.py +148 -0
- wavix_python_sdk-1.0.0/src/wavix/speech_analytics/raw_client.py +527 -0
- wavix_python_sdk-1.0.0/src/wavix/speech_analytics/types/__init__.py +47 -0
- wavix_python_sdk-1.0.0/src/wavix/speech_analytics/types/create_speech_analytics_response.py +32 -0
- wavix_python_sdk-1.0.0/src/wavix/speech_analytics/types/get_speech_analytics_response.py +77 -0
- wavix_python_sdk-1.0.0/src/wavix/speech_analytics/types/get_speech_analytics_response_language.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/speech_analytics/types/get_speech_analytics_response_status.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/sub_accounts/__init__.py +52 -0
- wavix_python_sdk-1.0.0/src/wavix/sub_accounts/client.py +442 -0
- wavix_python_sdk-1.0.0/src/wavix/sub_accounts/raw_client.py +775 -0
- wavix_python_sdk-1.0.0/src/wavix/sub_accounts/transactions/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/sub_accounts/transactions/client.py +198 -0
- wavix_python_sdk-1.0.0/src/wavix/sub_accounts/transactions/raw_client.py +265 -0
- wavix_python_sdk-1.0.0/src/wavix/sub_accounts/types/__init__.py +47 -0
- wavix_python_sdk-1.0.0/src/wavix/sub_accounts/types/list_sub_accounts_request_status.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/sub_accounts/types/sub_accounts_create_request_default_destinations.py +31 -0
- wavix_python_sdk-1.0.0/src/wavix/sub_accounts/types/sub_accounts_update_request_default_destinations.py +31 -0
- wavix_python_sdk-1.0.0/src/wavix/sub_accounts/types/sub_accounts_update_request_status.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/__init__.py +167 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_appeals/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_appeals/client.py +244 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_appeals/raw_client.py +390 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_appeals/types/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_appeals/types/create_brand_appeals_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_evidence/__init__.py +37 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_evidence/client.py +365 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_evidence/raw_client.py +599 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_evidence/types/__init__.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_evidence/types/delete_brand_evidence_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_evidence/types/upload_brand_evidence_response.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_vetting_appeals/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_vetting_appeals/client.py +258 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_vetting_appeals/raw_client.py +381 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_vetting_appeals/types/__init__.py +36 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_vetting_appeals/types/create_brand_vetting_appeals_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_vettings/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_vettings/client.py +325 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brand_vettings/raw_client.py +518 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/__init__.py +85 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/client.py +870 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/raw_client.py +1263 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/__init__.py +83 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/create_brands_response.py +143 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/create_brands_response_entity_type.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/create_brands_response_status.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/delete_brands_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/get_brands_response.py +143 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/get_brands_response_entity_type.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/get_brands_response_status.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/list_brands_response.py +33 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/list_brands_response_pagination.py +41 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/qualify_usecase_brands_request_use_case.py +35 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/qualify_usecase_brands_response.py +33 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/ten_dlc_brand_update_request_entity_type.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/ten_dlc_brand_update_request_vertical.py +18 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/update_brands_response.py +143 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/update_brands_response_entity_type.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/brands/types/update_brands_response_status.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaign_numbers/__init__.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaign_numbers/client.py +304 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaign_numbers/raw_client.py +448 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaign_numbers/types/__init__.py +40 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaign_numbers/types/link_campaign_numbers_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaign_numbers/types/list_campaign_numbers_response.py +33 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaign_numbers/types/unlink_campaign_numbers_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaigns/__init__.py +64 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaigns/client.py +1493 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaigns/raw_client.py +1840 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaigns/types/__init__.py +62 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaigns/types/create_campaigns_response.py +211 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaigns/types/delete_campaigns_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaigns/types/get_campaigns_response.py +211 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaigns/types/list_by_brand_campaigns_response.py +33 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaigns/types/list_by_brand_campaigns_response_pagination.py +41 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaigns/types/list_campaigns_response.py +33 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaigns/types/list_campaigns_response_pagination.py +41 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaigns/types/ten_dlc_campaign_update_request_usecase.py +15 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/campaigns/types/update_campaigns_response.py +211 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/client.py +196 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/raw_client.py +13 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/subscriptions/__init__.py +37 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/subscriptions/client.py +271 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/subscriptions/raw_client.py +398 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/subscriptions/types/__init__.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/subscriptions/types/create_subscriptions_response.py +31 -0
- wavix_python_sdk-1.0.0/src/wavix/ten_dlc/subscriptions/types/delete_subscriptions_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/__init__.py +56 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/client.py +101 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/events/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/events/client.py +114 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/events/raw_client.py +156 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/raw_client.py +13 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/sessions/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/sessions/client.py +142 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/sessions/raw_client.py +200 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/verification/__init__.py +49 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/verification/client.py +395 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/verification/raw_client.py +664 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/verification/types/__init__.py +47 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/verification/types/check_verification_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/verification/types/create_verification_response.py +51 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/verification/types/resend_verification_response.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/two_fa/verification/types/two_factor_verification_resend_request_channel.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/__init__.py +637 -0
- wavix_python_sdk-1.0.0/src/wavix/types/account_error_response.py +31 -0
- wavix_python_sdk-1.0.0/src/wavix/types/account_limits.py +32 -0
- wavix_python_sdk-1.0.0/src/wavix/types/allowed_i_ps.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/types/allowed_i_ps_item.py +27 -0
- wavix_python_sdk-1.0.0/src/wavix/types/api_key.py +138 -0
- wavix_python_sdk-1.0.0/src/wavix/types/api_key_calls_scope_permission.py +30 -0
- wavix_python_sdk-1.0.0/src/wavix/types/api_key_calls_scope_permission_allow.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/api_key_scope_permission.py +30 -0
- wavix_python_sdk-1.0.0/src/wavix/types/api_key_scope_permission_allow.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/available_number.py +97 -0
- wavix_python_sdk-1.0.0/src/wavix/types/available_number_list_response.py +26 -0
- wavix_python_sdk-1.0.0/src/wavix/types/bad_request_error_body.py +27 -0
- wavix_python_sdk-1.0.0/src/wavix/types/billing_transaction_list_response.py +31 -0
- wavix_python_sdk-1.0.0/src/wavix/types/brand_status_updated_webhook.py +28 -0
- wavix_python_sdk-1.0.0/src/wavix/types/brand_status_updated_webhook_status.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call.py +92 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_control_validation_error_response.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_create_response.py +92 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_create_response_event_type.py +18 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_direction.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_disposition.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_event_type.py +18 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_list_response.py +28 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_recording_list_response.py +28 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_response.py +24 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_status_webhook.py +70 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_status_webhook_direction.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_stream_channel.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_stream_response.py +27 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_stream_type.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_webhook.py +37 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_webhook_event_type.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_webhook_list_response.py +10 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_webhook_list_response_item.py +28 -0
- wavix_python_sdk-1.0.0/src/wavix/types/call_webhook_list_response_item_event_type.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/campaign_status_updated_webhook.py +41 -0
- wavix_python_sdk-1.0.0/src/wavix/types/campaign_status_updated_webhook_status.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/types/cart_response.py +29 -0
- wavix_python_sdk-1.0.0/src/wavix/types/cdr.py +97 -0
- wavix_python_sdk-1.0.0/src/wavix/types/cdr_list_response.py +26 -0
- wavix_python_sdk-1.0.0/src/wavix/types/cdr_response.py +104 -0
- wavix_python_sdk-1.0.0/src/wavix/types/cdr_transcription_completed_webhook.py +28 -0
- wavix_python_sdk-1.0.0/src/wavix/types/cdr_transcription_completed_webhook_status.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/cdr_transcription_response.py +74 -0
- wavix_python_sdk-1.0.0/src/wavix/types/cdr_transcription_search_response.py +26 -0
- wavix_python_sdk-1.0.0/src/wavix/types/cdr_with_transcription.py +97 -0
- wavix_python_sdk-1.0.0/src/wavix/types/city.py +32 -0
- wavix_python_sdk-1.0.0/src/wavix/types/city_list_response.py +23 -0
- wavix_python_sdk-1.0.0/src/wavix/types/country.py +32 -0
- wavix_python_sdk-1.0.0/src/wavix/types/country_has_no_regions_error_response.py +27 -0
- wavix_python_sdk-1.0.0/src/wavix/types/country_list_response.py +23 -0
- wavix_python_sdk-1.0.0/src/wavix/types/document_type.py +32 -0
- wavix_python_sdk-1.0.0/src/wavix/types/document_type_id.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/types/file_transcript_response.py +30 -0
- wavix_python_sdk-1.0.0/src/wavix/types/file_transcript_turn.py +46 -0
- wavix_python_sdk-1.0.0/src/wavix/types/file_transcription_completed_webhook.py +32 -0
- wavix_python_sdk-1.0.0/src/wavix/types/file_transcription_response.py +77 -0
- wavix_python_sdk-1.0.0/src/wavix/types/file_transcription_response_language.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/file_transcription_response_status.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/financial_transaction.py +57 -0
- wavix_python_sdk-1.0.0/src/wavix/types/forbidden_error_response.py +27 -0
- wavix_python_sdk-1.0.0/src/wavix/types/inbound_call_destination.py +53 -0
- wavix_python_sdk-1.0.0/src/wavix/types/inbound_call_transport.py +6 -0
- wavix_python_sdk-1.0.0/src/wavix/types/inbound_message.py +46 -0
- wavix_python_sdk-1.0.0/src/wavix/types/invalid_recording.py +31 -0
- wavix_python_sdk-1.0.0/src/wavix/types/invoice.py +42 -0
- wavix_python_sdk-1.0.0/src/wavix/types/invoice_list_response.py +31 -0
- wavix_python_sdk-1.0.0/src/wavix/types/list_brand_evidence_response.py +23 -0
- wavix_python_sdk-1.0.0/src/wavix/types/list_sessions_response_item.py +58 -0
- wavix_python_sdk-1.0.0/src/wavix/types/message.py +103 -0
- wavix_python_sdk-1.0.0/src/wavix/types/message_body.py +29 -0
- wavix_python_sdk-1.0.0/src/wavix/types/message_create_request.py +46 -0
- wavix_python_sdk-1.0.0/src/wavix/types/message_delivery_status.py +8 -0
- wavix_python_sdk-1.0.0/src/wavix/types/message_list_response.py +26 -0
- wavix_python_sdk-1.0.0/src/wavix/types/message_response.py +97 -0
- wavix_python_sdk-1.0.0/src/wavix/types/messages_delivery_report.py +81 -0
- wavix_python_sdk-1.0.0/src/wavix/types/not_found_error_body.py +27 -0
- wavix_python_sdk-1.0.0/src/wavix/types/not_found_error_response.py +27 -0
- wavix_python_sdk-1.0.0/src/wavix/types/number.py +160 -0
- wavix_python_sdk-1.0.0/src/wavix/types/number_destination.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/types/number_document.py +58 -0
- wavix_python_sdk-1.0.0/src/wavix/types/number_list_response.py +32 -0
- wavix_python_sdk-1.0.0/src/wavix/types/number_status_updated_webhook.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/types/number_status_updated_webhook_status.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/number_validator_create_bulk_response.py +10 -0
- wavix_python_sdk-1.0.0/src/wavix/types/number_validator_create_bulk_response_request_id.py +26 -0
- wavix_python_sdk-1.0.0/src/wavix/types/on_call_event_payload.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/types/on_call_event_payload_type.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/opt_out.py +27 -0
- wavix_python_sdk-1.0.0/src/wavix/types/opt_out_item.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/types/opt_outs_list_response.py +26 -0
- wavix_python_sdk-1.0.0/src/wavix/types/pagination.py +37 -0
- wavix_python_sdk-1.0.0/src/wavix/types/phone_lookup_details.py +32 -0
- wavix_python_sdk-1.0.0/src/wavix/types/phone_number_validation_type.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/phone_validation_batch_response.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/types/phone_validation_batch_result_response.py +41 -0
- wavix_python_sdk-1.0.0/src/wavix/types/phone_validation_response.py +112 -0
- wavix_python_sdk-1.0.0/src/wavix/types/phone_validation_result_response.py +115 -0
- wavix_python_sdk-1.0.0/src/wavix/types/profile_config_response.py +25 -0
- wavix_python_sdk-1.0.0/src/wavix/types/profile_response.py +79 -0
- wavix_python_sdk-1.0.0/src/wavix/types/profile_response_company_info.py +53 -0
- wavix_python_sdk-1.0.0/src/wavix/types/profile_response_company_info_country.py +31 -0
- wavix_python_sdk-1.0.0/src/wavix/types/profile_response_company_info_industry.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/types/profile_response_default_destinations_item.py +27 -0
- wavix_python_sdk-1.0.0/src/wavix/types/record_not_found_error_response.py +27 -0
- wavix_python_sdk-1.0.0/src/wavix/types/recording.py +57 -0
- wavix_python_sdk-1.0.0/src/wavix/types/recording_deleted_error_response.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/types/region.py +31 -0
- wavix_python_sdk-1.0.0/src/wavix/types/region_list_response.py +23 -0
- wavix_python_sdk-1.0.0/src/wavix/types/send_messages_response.py +100 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sender_id.py +48 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sender_id_details.py +44 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sender_id_list_response.py +23 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sender_id_response.py +48 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sender_id_response_type.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sender_id_type.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/short_link_metrics_item.py +69 -0
- wavix_python_sdk-1.0.0/src/wavix/types/short_link_metrics_response.py +26 -0
- wavix_python_sdk-1.0.0/src/wavix/types/short_link_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sip_trunk_create_request.py +132 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sip_trunk_create_request_allowed_ips_item.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sip_trunk_create_request_host_request.py +26 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sip_trunk_list_response.py +26 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sip_trunk_response.py +145 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sip_trunk_summary.py +114 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sip_trunk_summary_host_request.py +31 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sub_accounts_list_response.py +26 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sub_accounts_transactions_list_response.py +30 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sub_accounts_transactions_list_response_transactions_item.py +48 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sub_organization_response.py +59 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sub_organization_response_default_destinations.py +31 -0
- wavix_python_sdk-1.0.0/src/wavix/types/sub_organization_response_status.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/submit_file_transcription_response.py +32 -0
- wavix_python_sdk-1.0.0/src/wavix/types/success_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/types/tcr_error_message.py +27 -0
- wavix_python_sdk-1.0.0/src/wavix/types/tcr_feedback.py +23 -0
- wavix_python_sdk-1.0.0/src/wavix/types/tcr_feedback_category.py +47 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand.py +143 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_appeal.py +54 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_appeal_create_request.py +36 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_appeal_outcome.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_appeal_outcome_feedback.py +27 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_appeal_outcome_vetting_status.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_create_request.py +8 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_create_request_entity_type.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_create_request_stock_exchange.py +26 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_create_request_stock_exchange_entity_type.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_create_request_vertical.py +18 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_create_request_zero.py +24 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_create_request_zero_entity_type.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_entity_type.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_evidence.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_identity_verification_status.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_list_response.py +33 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_list_response_pagination.py +41 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_qualification_result.py +33 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_status.py +7 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_vetting.py +71 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_vetting_appeal.py +78 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_vetting_appeal_appeal_outcome.py +37 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_vetting_appeal_appeal_outcome_feedback.py +26 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_vetting_appeal_outcome.py +33 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_vetting_appeal_outcome_feedback.py +26 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_brand_vetting_appeal_outcome_reason.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_campaign.py +211 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_campaign_list_response.py +33 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_campaign_list_response_pagination.py +41 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_campaign_nudge_request.py +32 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_campaign_number.py +27 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_campaign_number_list_response.py +33 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlc_event_subscription.py +31 -0
- wavix_python_sdk-1.0.0/src/wavix/types/ten_dlcmno_metadata.py +101 -0
- wavix_python_sdk-1.0.0/src/wavix/types/transaction_status.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/transaction_type.py +50 -0
- wavix_python_sdk-1.0.0/src/wavix/types/transcript_turn.py +46 -0
- wavix_python_sdk-1.0.0/src/wavix/types/transcription_filter.py +35 -0
- wavix_python_sdk-1.0.0/src/wavix/types/transcription_filter_agent.py +36 -0
- wavix_python_sdk-1.0.0/src/wavix/types/transcription_filter_any.py +36 -0
- wavix_python_sdk-1.0.0/src/wavix/types/transcription_filter_client.py +36 -0
- wavix_python_sdk-1.0.0/src/wavix/types/transcription_language.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/transcription_reference.py +29 -0
- wavix_python_sdk-1.0.0/src/wavix/types/transcription_status.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/tts_language.py +5 -0
- wavix_python_sdk-1.0.0/src/wavix/types/tts_voice_id.py +25 -0
- wavix_python_sdk-1.0.0/src/wavix/types/two_factor_verification_check_response.py +22 -0
- wavix_python_sdk-1.0.0/src/wavix/types/two_factor_verification_event.py +47 -0
- wavix_python_sdk-1.0.0/src/wavix/types/two_factor_verification_resend_response.py +38 -0
- wavix_python_sdk-1.0.0/src/wavix/types/two_factor_verification_response.py +51 -0
- wavix_python_sdk-1.0.0/src/wavix/types/unauthorized_error_response.py +32 -0
- wavix_python_sdk-1.0.0/src/wavix/types/unprocessable_entity_error_body.py +27 -0
- wavix_python_sdk-1.0.0/src/wavix/types/validation_error_response.py +27 -0
- wavix_python_sdk-1.0.0/src/wavix/types/voice_campaign_create_request.py +20 -0
- wavix_python_sdk-1.0.0/src/wavix/types/voice_campaign_response.py +41 -0
- wavix_python_sdk-1.0.0/src/wavix/types/voice_campaigns_create_response.py +20 -0
- wavix_python_sdk-1.0.0/src/wavix/types/voice_campaigns_create_response_voice_campaign.py +43 -0
- wavix_python_sdk-1.0.0/src/wavix/types/voice_campaigns_get_response.py +20 -0
- wavix_python_sdk-1.0.0/src/wavix/types/voice_campaigns_get_response_voice_campaign.py +43 -0
- wavix_python_sdk-1.0.0/src/wavix/types/web_rtc_token.py +43 -0
- wavix_python_sdk-1.0.0/src/wavix/types/web_rtc_token_response.py +44 -0
- wavix_python_sdk-1.0.0/src/wavix/types/web_rtc_tokens_list_response.py +30 -0
- wavix_python_sdk-1.0.0/src/wavix/version.py +3 -0
- wavix_python_sdk-1.0.0/src/wavix/voice_campaigns/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/voice_campaigns/client.py +197 -0
- wavix_python_sdk-1.0.0/src/wavix/voice_campaigns/raw_client.py +332 -0
- wavix_python_sdk-1.0.0/src/wavix/webrtc/__init__.py +34 -0
- wavix_python_sdk-1.0.0/src/wavix/webrtc/client.py +63 -0
- wavix_python_sdk-1.0.0/src/wavix/webrtc/raw_client.py +13 -0
- wavix_python_sdk-1.0.0/src/wavix/webrtc/tokens/__init__.py +4 -0
- wavix_python_sdk-1.0.0/src/wavix/webrtc/tokens/client.py +432 -0
- wavix_python_sdk-1.0.0/src/wavix/webrtc/tokens/raw_client.py +869 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Wavix
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: wavix-python-sdk
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary:
|
|
5
|
+
Requires-Python: >=3.10,<4.0
|
|
6
|
+
Classifier: Intended Audience :: Developers
|
|
7
|
+
Classifier: Operating System :: MacOS
|
|
8
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Classifier: Operating System :: POSIX
|
|
11
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
12
|
+
Classifier: Programming Language :: Python
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
20
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
|
+
Classifier: Typing :: Typed
|
|
22
|
+
Provides-Extra: aiohttp
|
|
23
|
+
Requires-Dist: aiohttp (>=3.14.0,<4) ; (python_version >= "3.10") and (extra == "aiohttp")
|
|
24
|
+
Requires-Dist: httpx (>=0.21.2)
|
|
25
|
+
Requires-Dist: httpx-aiohttp (==0.1.8) ; (python_version >= "3.10") and (extra == "aiohttp")
|
|
26
|
+
Requires-Dist: pydantic (>=1.9.2)
|
|
27
|
+
Requires-Dist: pydantic-core (>=2.18.2,<3.0.0)
|
|
28
|
+
Requires-Dist: typing_extensions (>=4.0.0)
|
|
29
|
+
Project-URL: Repository, https://github.com/wavix/wavix-python-sdk
|
|
30
|
+
Description-Content-Type: text/markdown
|
|
31
|
+
|
|
32
|
+
# Wavix Python SDK
|
|
33
|
+
|
|
34
|
+
[](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Fwavix%2Fwavix-python-sdk)
|
|
35
|
+
[](https://pypi.python.org/pypi/wavix-python-sdk)
|
|
36
|
+
|
|
37
|
+
The official Wavix Python SDK provides programmatic access to the
|
|
38
|
+
[Wavix](https://wavix.com) APIs. Use it to add messaging, voice, and account
|
|
39
|
+
management capabilities to your application.
|
|
40
|
+
|
|
41
|
+
Use the SDK to:
|
|
42
|
+
|
|
43
|
+
- Send and receive SMS and MMS messages.
|
|
44
|
+
- Place and programmatically control calls.
|
|
45
|
+
- Search for, buy, and manage phone numbers.
|
|
46
|
+
- Validate phone numbers.
|
|
47
|
+
- Manage SIP trunks.
|
|
48
|
+
- Retrieve call detail records (CDRs).
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
## Table of contents
|
|
52
|
+
|
|
53
|
+
- [Installation](#installation)
|
|
54
|
+
- [Authentication](#authentication)
|
|
55
|
+
- [Quickstart](#quickstart)
|
|
56
|
+
- [Async client](#async-client)
|
|
57
|
+
- [Error handling](#error-handling)
|
|
58
|
+
- [Pagination](#pagination)
|
|
59
|
+
- [Rate limits and retries](#rate-limits-and-retries)
|
|
60
|
+
- [Retries](#retries)
|
|
61
|
+
- [Idempotency](#idempotency)
|
|
62
|
+
- [Advanced](#advanced)
|
|
63
|
+
- [Access raw response data](#access-raw-response-data)
|
|
64
|
+
- [Timeouts](#timeouts)
|
|
65
|
+
- [Custom HTTP client](#custom-http-client)
|
|
66
|
+
- [SDK and API compatibility](#sdk-and-api-compatibility)
|
|
67
|
+
- [Release notes](#release-notes)
|
|
68
|
+
- [Major-version upgrades](#major-version-upgrades)
|
|
69
|
+
- [Documentation](#documentation)
|
|
70
|
+
- [Resources and support](#resources-and-support)
|
|
71
|
+
- [Contributing](#contributing)
|
|
72
|
+
|
|
73
|
+
## Installation
|
|
74
|
+
|
|
75
|
+
```sh
|
|
76
|
+
pip install wavix-python-sdk
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Requirements:** Python 3.10 or later.
|
|
80
|
+
|
|
81
|
+
## Authentication
|
|
82
|
+
|
|
83
|
+
Create an API key in the [Wavix portal](https://app.wavix.com). Store the key
|
|
84
|
+
in an environment variable and pass it to the client.
|
|
85
|
+
|
|
86
|
+
```shell
|
|
87
|
+
export WAVIX_API_KEY="your-api-key"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
import os
|
|
92
|
+
|
|
93
|
+
from wavix import Wavix
|
|
94
|
+
|
|
95
|
+
client = Wavix(token=os.environ["WAVIX_API_KEY"])
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
> [!CAUTION]
|
|
99
|
+
> Don't commit API keys or tokens to source control. In production, store
|
|
100
|
+
> credentials in environment variables or a secrets manager.
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
## Quickstart
|
|
104
|
+
|
|
105
|
+
Create a client and send an SMS message:
|
|
106
|
+
|
|
107
|
+
```python
|
|
108
|
+
from wavix import Wavix, MessageBody
|
|
109
|
+
|
|
110
|
+
client = Wavix(
|
|
111
|
+
token="<token>",
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
client.sms_and_mms.messages.send(
|
|
115
|
+
from_="Wavix",
|
|
116
|
+
to="+447537151866",
|
|
117
|
+
message_body=MessageBody(
|
|
118
|
+
text="Hi there, this is a message from Wavix",
|
|
119
|
+
media=None,
|
|
120
|
+
),
|
|
121
|
+
callback_url="https://you-site.com/webhook",
|
|
122
|
+
validity=3600,
|
|
123
|
+
tag="Fall sale",
|
|
124
|
+
)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Async client
|
|
128
|
+
|
|
129
|
+
Use `AsyncWavix` to make nonblocking API calls. If you provide an `httpx`
|
|
130
|
+
client through the `httpx_client` parameter, use `httpx.AsyncClient` with
|
|
131
|
+
`AsyncWavix`. Don't use `httpx.Client` with the async client.
|
|
132
|
+
|
|
133
|
+
```python
|
|
134
|
+
import asyncio
|
|
135
|
+
|
|
136
|
+
from wavix import AsyncWavix, MessageBody
|
|
137
|
+
|
|
138
|
+
client = AsyncWavix(
|
|
139
|
+
token="<token>",
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
async def main() -> None:
|
|
144
|
+
await client.sms_and_mms.messages.send(
|
|
145
|
+
from_="Wavix",
|
|
146
|
+
to="+447537151866",
|
|
147
|
+
message_body=MessageBody(
|
|
148
|
+
text="Hi there, this is a message from Wavix",
|
|
149
|
+
media=None,
|
|
150
|
+
),
|
|
151
|
+
callback_url="https://you-site.com/webhook",
|
|
152
|
+
validity=3600,
|
|
153
|
+
tag="Fall sale",
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
asyncio.run(main())
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Error handling
|
|
161
|
+
|
|
162
|
+
When the API returns a `4xx` or `5xx` status code, the SDK raises a subclass
|
|
163
|
+
of `ApiError`. Use the error properties to inspect the status code and
|
|
164
|
+
response body:
|
|
165
|
+
|
|
166
|
+
```python
|
|
167
|
+
from wavix.core.api_error import ApiError
|
|
168
|
+
|
|
169
|
+
try:
|
|
170
|
+
client.sms_and_mms.messages.send(...)
|
|
171
|
+
except ApiError as e:
|
|
172
|
+
print(e.status_code)
|
|
173
|
+
print(e.body)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Handle errors that aren't instances of `ApiError` separately, or raise them
|
|
177
|
+
again so that your application doesn't ignore unexpected failures.
|
|
178
|
+
|
|
179
|
+
## Pagination
|
|
180
|
+
|
|
181
|
+
List operations use automatic page-number pagination. The SDK requests
|
|
182
|
+
additional pages as you iterate through the results.
|
|
183
|
+
|
|
184
|
+
The Wavix APIs support these pagination parameters:
|
|
185
|
+
|
|
186
|
+
- `page`: Specifies the page to retrieve.
|
|
187
|
+
- `per_page`: Specifies the number of items per page. The default is `25`.
|
|
188
|
+
The minimum is `1`, and the maximum is `100`.
|
|
189
|
+
|
|
190
|
+
## Rate limits and retries
|
|
191
|
+
|
|
192
|
+
Rate limits vary by endpoint. When a request exceeds an endpoint's rate
|
|
193
|
+
limit, the Wavix API returns an HTTP `429 Too Many Requests` response.
|
|
194
|
+
|
|
195
|
+
The SDK can retry `429` responses as described in [Retries](#retries).
|
|
196
|
+
Configure retries according to your application's traffic patterns and
|
|
197
|
+
latency requirements.
|
|
198
|
+
|
|
199
|
+
### Retries
|
|
200
|
+
|
|
201
|
+
The SDK automatically retries eligible requests by using exponential backoff.
|
|
202
|
+
By default, the SDK makes up to two retry attempts.
|
|
203
|
+
|
|
204
|
+
The SDK retries requests that return one of these status codes:
|
|
205
|
+
|
|
206
|
+
- [`408 Request Timeout`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408).
|
|
207
|
+
- [`409 Conflict`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409).
|
|
208
|
+
- [`429 Too Many Requests`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429).
|
|
209
|
+
- Any [`5xx` server error](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#server_error_responses).
|
|
210
|
+
|
|
211
|
+
These status codes aren't configurable.
|
|
212
|
+
|
|
213
|
+
Use `max_retries` to override the retry limit for an individual request:
|
|
214
|
+
|
|
215
|
+
```python
|
|
216
|
+
client.sms_and_mms.messages.send(..., request_options={
|
|
217
|
+
"max_retries": 1
|
|
218
|
+
})
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
> [!IMPORTANT]
|
|
222
|
+
> A retry can repeat an operation if the server processes the original
|
|
223
|
+
> request but the client doesn't receive the response. Before you retry an
|
|
224
|
+
> operation that sends a message, places a call, or changes a resource,
|
|
225
|
+
> confirm that the operation can be repeated safely.
|
|
226
|
+
|
|
227
|
+
### Idempotency
|
|
228
|
+
|
|
229
|
+
The Wavix APIs don't support idempotency keys. A repeated request can repeat
|
|
230
|
+
the operation, including sending a message, placing a call, or changing a
|
|
231
|
+
resource.
|
|
232
|
+
|
|
233
|
+
Before you retry a request that changes data or starts an operation, check
|
|
234
|
+
whether the original request succeeded. When duplicate operations could
|
|
235
|
+
affect customers or incur charges, track request state in your application
|
|
236
|
+
and prevent the same operation from being submitted more than once.
|
|
237
|
+
|
|
238
|
+
## Advanced
|
|
239
|
+
|
|
240
|
+
### Access raw response data
|
|
241
|
+
|
|
242
|
+
Use `.with_raw_response` to access the status code, headers, and underlying
|
|
243
|
+
response object. The property returns a raw client whose responses provide
|
|
244
|
+
`.headers`, `.status_code`, and `.data` attributes:
|
|
245
|
+
|
|
246
|
+
```python
|
|
247
|
+
from wavix import Wavix
|
|
248
|
+
|
|
249
|
+
client = Wavix(...)
|
|
250
|
+
response = client.sms_and_mms.messages.with_raw_response.send(...)
|
|
251
|
+
print(response.headers) # access the response headers
|
|
252
|
+
print(response.status_code) # access the response status code
|
|
253
|
+
print(response.data) # access the underlying object
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Timeouts
|
|
257
|
+
|
|
258
|
+
The default request timeout is 60 seconds. Set a timeout on the client, or
|
|
259
|
+
override it for an individual request:
|
|
260
|
+
|
|
261
|
+
```python
|
|
262
|
+
from wavix import Wavix
|
|
263
|
+
|
|
264
|
+
client = Wavix(..., timeout=20.0)
|
|
265
|
+
|
|
266
|
+
# Override timeout for a specific method
|
|
267
|
+
client.sms_and_mms.messages.send(..., request_options={
|
|
268
|
+
"timeout_in_seconds": 1
|
|
269
|
+
})
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### Custom HTTP client
|
|
273
|
+
|
|
274
|
+
Provide a custom `httpx` client to configure network behavior such as proxies
|
|
275
|
+
and transports:
|
|
276
|
+
|
|
277
|
+
```python
|
|
278
|
+
import httpx
|
|
279
|
+
from wavix import Wavix
|
|
280
|
+
|
|
281
|
+
client = Wavix(
|
|
282
|
+
...,
|
|
283
|
+
httpx_client=httpx.Client(
|
|
284
|
+
proxy="http://my.test.proxy.example.com",
|
|
285
|
+
transport=httpx.HTTPTransport(local_address="0.0.0.0"),
|
|
286
|
+
),
|
|
287
|
+
)
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## SDK and API compatibility
|
|
291
|
+
|
|
292
|
+
Each SDK release supports the current version of the Wavix APIs available
|
|
293
|
+
when that SDK version is released. Update the SDK regularly to access the
|
|
294
|
+
latest API capabilities and fixes.
|
|
295
|
+
|
|
296
|
+
Before you update the SDK, review the
|
|
297
|
+
[GitHub releases](https://github.com/wavix/wavix-python-sdk/releases) for changes
|
|
298
|
+
that might affect your application.
|
|
299
|
+
|
|
300
|
+
## Release notes
|
|
301
|
+
|
|
302
|
+
See [GitHub releases](https://github.com/wavix/wavix-python-sdk/releases) for new
|
|
303
|
+
features, fixes, and breaking changes in each SDK release.
|
|
304
|
+
|
|
305
|
+
## Major-version upgrades
|
|
306
|
+
|
|
307
|
+
The SDK doesn't provide separate migration guides. Breaking changes ship only
|
|
308
|
+
in major versions, so before you upgrade, review the
|
|
309
|
+
[GitHub releases](https://github.com/wavix/wavix-python-sdk/releases) for breaking
|
|
310
|
+
changes, then update and test in a development environment before you deploy.
|
|
311
|
+
|
|
312
|
+
## Documentation
|
|
313
|
+
|
|
314
|
+
- For API guides and API reference documentation, see the
|
|
315
|
+
[Wavix documentation](https://docs.wavix.com).
|
|
316
|
+
- For SDK methods and types, see the
|
|
317
|
+
[Python SDK reference](https://github.com/wavix/wavix-python-sdk/blob/HEAD/reference.md).
|
|
318
|
+
|
|
319
|
+
## Resources and support
|
|
320
|
+
|
|
321
|
+
- **Versioning:** The SDK follows [Semantic Versioning](https://semver.org).
|
|
322
|
+
Breaking changes are released in major versions.
|
|
323
|
+
- **Security:** Report vulnerabilities privately by following the instructions
|
|
324
|
+
in [SECURITY.md](./SECURITY.md). Don't report vulnerabilities in public
|
|
325
|
+
issues.
|
|
326
|
+
- **Support:** For product and API support, contact
|
|
327
|
+
[support@wavix.com](mailto:support@wavix.com).
|
|
328
|
+
- **Issues:** To report an SDK bug or request a feature, open a
|
|
329
|
+
[GitHub issue](https://github.com/wavix/wavix-python-sdk/issues).
|
|
330
|
+
- **License:** The SDK is available under the [MIT License](./LICENSE).
|
|
331
|
+
|
|
332
|
+
## Contributing
|
|
333
|
+
|
|
334
|
+
The SDK source code is generated. Changes made directly to generated files are
|
|
335
|
+
overwritten in the next release and can't be merged as submitted. Before you
|
|
336
|
+
prepare a code change, open an issue to discuss the proposed update.
|
|
337
|
+
|
|
338
|
+
You can submit README improvements directly in a pull request.
|
|
339
|
+
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
# Wavix Python SDK
|
|
2
|
+
|
|
3
|
+
[](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Fwavix%2Fwavix-python-sdk)
|
|
4
|
+
[](https://pypi.python.org/pypi/wavix-python-sdk)
|
|
5
|
+
|
|
6
|
+
The official Wavix Python SDK provides programmatic access to the
|
|
7
|
+
[Wavix](https://wavix.com) APIs. Use it to add messaging, voice, and account
|
|
8
|
+
management capabilities to your application.
|
|
9
|
+
|
|
10
|
+
Use the SDK to:
|
|
11
|
+
|
|
12
|
+
- Send and receive SMS and MMS messages.
|
|
13
|
+
- Place and programmatically control calls.
|
|
14
|
+
- Search for, buy, and manage phone numbers.
|
|
15
|
+
- Validate phone numbers.
|
|
16
|
+
- Manage SIP trunks.
|
|
17
|
+
- Retrieve call detail records (CDRs).
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
## Table of contents
|
|
21
|
+
|
|
22
|
+
- [Installation](#installation)
|
|
23
|
+
- [Authentication](#authentication)
|
|
24
|
+
- [Quickstart](#quickstart)
|
|
25
|
+
- [Async client](#async-client)
|
|
26
|
+
- [Error handling](#error-handling)
|
|
27
|
+
- [Pagination](#pagination)
|
|
28
|
+
- [Rate limits and retries](#rate-limits-and-retries)
|
|
29
|
+
- [Retries](#retries)
|
|
30
|
+
- [Idempotency](#idempotency)
|
|
31
|
+
- [Advanced](#advanced)
|
|
32
|
+
- [Access raw response data](#access-raw-response-data)
|
|
33
|
+
- [Timeouts](#timeouts)
|
|
34
|
+
- [Custom HTTP client](#custom-http-client)
|
|
35
|
+
- [SDK and API compatibility](#sdk-and-api-compatibility)
|
|
36
|
+
- [Release notes](#release-notes)
|
|
37
|
+
- [Major-version upgrades](#major-version-upgrades)
|
|
38
|
+
- [Documentation](#documentation)
|
|
39
|
+
- [Resources and support](#resources-and-support)
|
|
40
|
+
- [Contributing](#contributing)
|
|
41
|
+
|
|
42
|
+
## Installation
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
pip install wavix-python-sdk
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Requirements:** Python 3.10 or later.
|
|
49
|
+
|
|
50
|
+
## Authentication
|
|
51
|
+
|
|
52
|
+
Create an API key in the [Wavix portal](https://app.wavix.com). Store the key
|
|
53
|
+
in an environment variable and pass it to the client.
|
|
54
|
+
|
|
55
|
+
```shell
|
|
56
|
+
export WAVIX_API_KEY="your-api-key"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
import os
|
|
61
|
+
|
|
62
|
+
from wavix import Wavix
|
|
63
|
+
|
|
64
|
+
client = Wavix(token=os.environ["WAVIX_API_KEY"])
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
> [!CAUTION]
|
|
68
|
+
> Don't commit API keys or tokens to source control. In production, store
|
|
69
|
+
> credentials in environment variables or a secrets manager.
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
## Quickstart
|
|
73
|
+
|
|
74
|
+
Create a client and send an SMS message:
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
from wavix import Wavix, MessageBody
|
|
78
|
+
|
|
79
|
+
client = Wavix(
|
|
80
|
+
token="<token>",
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
client.sms_and_mms.messages.send(
|
|
84
|
+
from_="Wavix",
|
|
85
|
+
to="+447537151866",
|
|
86
|
+
message_body=MessageBody(
|
|
87
|
+
text="Hi there, this is a message from Wavix",
|
|
88
|
+
media=None,
|
|
89
|
+
),
|
|
90
|
+
callback_url="https://you-site.com/webhook",
|
|
91
|
+
validity=3600,
|
|
92
|
+
tag="Fall sale",
|
|
93
|
+
)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Async client
|
|
97
|
+
|
|
98
|
+
Use `AsyncWavix` to make nonblocking API calls. If you provide an `httpx`
|
|
99
|
+
client through the `httpx_client` parameter, use `httpx.AsyncClient` with
|
|
100
|
+
`AsyncWavix`. Don't use `httpx.Client` with the async client.
|
|
101
|
+
|
|
102
|
+
```python
|
|
103
|
+
import asyncio
|
|
104
|
+
|
|
105
|
+
from wavix import AsyncWavix, MessageBody
|
|
106
|
+
|
|
107
|
+
client = AsyncWavix(
|
|
108
|
+
token="<token>",
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
async def main() -> None:
|
|
113
|
+
await client.sms_and_mms.messages.send(
|
|
114
|
+
from_="Wavix",
|
|
115
|
+
to="+447537151866",
|
|
116
|
+
message_body=MessageBody(
|
|
117
|
+
text="Hi there, this is a message from Wavix",
|
|
118
|
+
media=None,
|
|
119
|
+
),
|
|
120
|
+
callback_url="https://you-site.com/webhook",
|
|
121
|
+
validity=3600,
|
|
122
|
+
tag="Fall sale",
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
asyncio.run(main())
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Error handling
|
|
130
|
+
|
|
131
|
+
When the API returns a `4xx` or `5xx` status code, the SDK raises a subclass
|
|
132
|
+
of `ApiError`. Use the error properties to inspect the status code and
|
|
133
|
+
response body:
|
|
134
|
+
|
|
135
|
+
```python
|
|
136
|
+
from wavix.core.api_error import ApiError
|
|
137
|
+
|
|
138
|
+
try:
|
|
139
|
+
client.sms_and_mms.messages.send(...)
|
|
140
|
+
except ApiError as e:
|
|
141
|
+
print(e.status_code)
|
|
142
|
+
print(e.body)
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Handle errors that aren't instances of `ApiError` separately, or raise them
|
|
146
|
+
again so that your application doesn't ignore unexpected failures.
|
|
147
|
+
|
|
148
|
+
## Pagination
|
|
149
|
+
|
|
150
|
+
List operations use automatic page-number pagination. The SDK requests
|
|
151
|
+
additional pages as you iterate through the results.
|
|
152
|
+
|
|
153
|
+
The Wavix APIs support these pagination parameters:
|
|
154
|
+
|
|
155
|
+
- `page`: Specifies the page to retrieve.
|
|
156
|
+
- `per_page`: Specifies the number of items per page. The default is `25`.
|
|
157
|
+
The minimum is `1`, and the maximum is `100`.
|
|
158
|
+
|
|
159
|
+
## Rate limits and retries
|
|
160
|
+
|
|
161
|
+
Rate limits vary by endpoint. When a request exceeds an endpoint's rate
|
|
162
|
+
limit, the Wavix API returns an HTTP `429 Too Many Requests` response.
|
|
163
|
+
|
|
164
|
+
The SDK can retry `429` responses as described in [Retries](#retries).
|
|
165
|
+
Configure retries according to your application's traffic patterns and
|
|
166
|
+
latency requirements.
|
|
167
|
+
|
|
168
|
+
### Retries
|
|
169
|
+
|
|
170
|
+
The SDK automatically retries eligible requests by using exponential backoff.
|
|
171
|
+
By default, the SDK makes up to two retry attempts.
|
|
172
|
+
|
|
173
|
+
The SDK retries requests that return one of these status codes:
|
|
174
|
+
|
|
175
|
+
- [`408 Request Timeout`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408).
|
|
176
|
+
- [`409 Conflict`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409).
|
|
177
|
+
- [`429 Too Many Requests`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429).
|
|
178
|
+
- Any [`5xx` server error](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#server_error_responses).
|
|
179
|
+
|
|
180
|
+
These status codes aren't configurable.
|
|
181
|
+
|
|
182
|
+
Use `max_retries` to override the retry limit for an individual request:
|
|
183
|
+
|
|
184
|
+
```python
|
|
185
|
+
client.sms_and_mms.messages.send(..., request_options={
|
|
186
|
+
"max_retries": 1
|
|
187
|
+
})
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
> [!IMPORTANT]
|
|
191
|
+
> A retry can repeat an operation if the server processes the original
|
|
192
|
+
> request but the client doesn't receive the response. Before you retry an
|
|
193
|
+
> operation that sends a message, places a call, or changes a resource,
|
|
194
|
+
> confirm that the operation can be repeated safely.
|
|
195
|
+
|
|
196
|
+
### Idempotency
|
|
197
|
+
|
|
198
|
+
The Wavix APIs don't support idempotency keys. A repeated request can repeat
|
|
199
|
+
the operation, including sending a message, placing a call, or changing a
|
|
200
|
+
resource.
|
|
201
|
+
|
|
202
|
+
Before you retry a request that changes data or starts an operation, check
|
|
203
|
+
whether the original request succeeded. When duplicate operations could
|
|
204
|
+
affect customers or incur charges, track request state in your application
|
|
205
|
+
and prevent the same operation from being submitted more than once.
|
|
206
|
+
|
|
207
|
+
## Advanced
|
|
208
|
+
|
|
209
|
+
### Access raw response data
|
|
210
|
+
|
|
211
|
+
Use `.with_raw_response` to access the status code, headers, and underlying
|
|
212
|
+
response object. The property returns a raw client whose responses provide
|
|
213
|
+
`.headers`, `.status_code`, and `.data` attributes:
|
|
214
|
+
|
|
215
|
+
```python
|
|
216
|
+
from wavix import Wavix
|
|
217
|
+
|
|
218
|
+
client = Wavix(...)
|
|
219
|
+
response = client.sms_and_mms.messages.with_raw_response.send(...)
|
|
220
|
+
print(response.headers) # access the response headers
|
|
221
|
+
print(response.status_code) # access the response status code
|
|
222
|
+
print(response.data) # access the underlying object
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Timeouts
|
|
226
|
+
|
|
227
|
+
The default request timeout is 60 seconds. Set a timeout on the client, or
|
|
228
|
+
override it for an individual request:
|
|
229
|
+
|
|
230
|
+
```python
|
|
231
|
+
from wavix import Wavix
|
|
232
|
+
|
|
233
|
+
client = Wavix(..., timeout=20.0)
|
|
234
|
+
|
|
235
|
+
# Override timeout for a specific method
|
|
236
|
+
client.sms_and_mms.messages.send(..., request_options={
|
|
237
|
+
"timeout_in_seconds": 1
|
|
238
|
+
})
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Custom HTTP client
|
|
242
|
+
|
|
243
|
+
Provide a custom `httpx` client to configure network behavior such as proxies
|
|
244
|
+
and transports:
|
|
245
|
+
|
|
246
|
+
```python
|
|
247
|
+
import httpx
|
|
248
|
+
from wavix import Wavix
|
|
249
|
+
|
|
250
|
+
client = Wavix(
|
|
251
|
+
...,
|
|
252
|
+
httpx_client=httpx.Client(
|
|
253
|
+
proxy="http://my.test.proxy.example.com",
|
|
254
|
+
transport=httpx.HTTPTransport(local_address="0.0.0.0"),
|
|
255
|
+
),
|
|
256
|
+
)
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
## SDK and API compatibility
|
|
260
|
+
|
|
261
|
+
Each SDK release supports the current version of the Wavix APIs available
|
|
262
|
+
when that SDK version is released. Update the SDK regularly to access the
|
|
263
|
+
latest API capabilities and fixes.
|
|
264
|
+
|
|
265
|
+
Before you update the SDK, review the
|
|
266
|
+
[GitHub releases](https://github.com/wavix/wavix-python-sdk/releases) for changes
|
|
267
|
+
that might affect your application.
|
|
268
|
+
|
|
269
|
+
## Release notes
|
|
270
|
+
|
|
271
|
+
See [GitHub releases](https://github.com/wavix/wavix-python-sdk/releases) for new
|
|
272
|
+
features, fixes, and breaking changes in each SDK release.
|
|
273
|
+
|
|
274
|
+
## Major-version upgrades
|
|
275
|
+
|
|
276
|
+
The SDK doesn't provide separate migration guides. Breaking changes ship only
|
|
277
|
+
in major versions, so before you upgrade, review the
|
|
278
|
+
[GitHub releases](https://github.com/wavix/wavix-python-sdk/releases) for breaking
|
|
279
|
+
changes, then update and test in a development environment before you deploy.
|
|
280
|
+
|
|
281
|
+
## Documentation
|
|
282
|
+
|
|
283
|
+
- For API guides and API reference documentation, see the
|
|
284
|
+
[Wavix documentation](https://docs.wavix.com).
|
|
285
|
+
- For SDK methods and types, see the
|
|
286
|
+
[Python SDK reference](https://github.com/wavix/wavix-python-sdk/blob/HEAD/reference.md).
|
|
287
|
+
|
|
288
|
+
## Resources and support
|
|
289
|
+
|
|
290
|
+
- **Versioning:** The SDK follows [Semantic Versioning](https://semver.org).
|
|
291
|
+
Breaking changes are released in major versions.
|
|
292
|
+
- **Security:** Report vulnerabilities privately by following the instructions
|
|
293
|
+
in [SECURITY.md](./SECURITY.md). Don't report vulnerabilities in public
|
|
294
|
+
issues.
|
|
295
|
+
- **Support:** For product and API support, contact
|
|
296
|
+
[support@wavix.com](mailto:support@wavix.com).
|
|
297
|
+
- **Issues:** To report an SDK bug or request a feature, open a
|
|
298
|
+
[GitHub issue](https://github.com/wavix/wavix-python-sdk/issues).
|
|
299
|
+
- **License:** The SDK is available under the [MIT License](./LICENSE).
|
|
300
|
+
|
|
301
|
+
## Contributing
|
|
302
|
+
|
|
303
|
+
The SDK source code is generated. Changes made directly to generated files are
|
|
304
|
+
overwritten in the next release and can't be merged as submitted. Before you
|
|
305
|
+
prepare a code change, open an issue to discuss the proposed update.
|
|
306
|
+
|
|
307
|
+
You can submit README improvements directly in a pull request.
|