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
wavix/numbers/client.py
ADDED
|
@@ -0,0 +1,689 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import typing
|
|
6
|
+
|
|
7
|
+
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
8
|
+
from ..core.request_options import RequestOptions
|
|
9
|
+
from ..types.number import Number
|
|
10
|
+
from ..types.number_destination import NumberDestination
|
|
11
|
+
from ..types.number_list_response import NumberListResponse
|
|
12
|
+
from .raw_client import AsyncRawNumbersClient, RawNumbersClient
|
|
13
|
+
from .types.bulk_update_numbers_response import BulkUpdateNumbersResponse
|
|
14
|
+
from .types.delete_numbers_response import DeleteNumbersResponse
|
|
15
|
+
|
|
16
|
+
if typing.TYPE_CHECKING:
|
|
17
|
+
from .papers.client import AsyncPapersClient, PapersClient
|
|
18
|
+
# this is used as the default value for optional parameters
|
|
19
|
+
OMIT = typing.cast(typing.Any, ...)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class NumbersClient:
|
|
23
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
24
|
+
self._raw_client = RawNumbersClient(client_wrapper=client_wrapper)
|
|
25
|
+
self._client_wrapper = client_wrapper
|
|
26
|
+
self._papers: typing.Optional[PapersClient] = None
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def with_raw_response(self) -> RawNumbersClient:
|
|
30
|
+
"""
|
|
31
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
32
|
+
|
|
33
|
+
Returns
|
|
34
|
+
-------
|
|
35
|
+
RawNumbersClient
|
|
36
|
+
"""
|
|
37
|
+
return self._raw_client
|
|
38
|
+
|
|
39
|
+
def list(
|
|
40
|
+
self,
|
|
41
|
+
*,
|
|
42
|
+
city_id: typing.Optional[int] = None,
|
|
43
|
+
search: typing.Optional[str] = None,
|
|
44
|
+
label: typing.Optional[str] = None,
|
|
45
|
+
label_present: typing.Optional[bool] = None,
|
|
46
|
+
page: typing.Optional[int] = None,
|
|
47
|
+
per_page: typing.Optional[int] = None,
|
|
48
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
49
|
+
) -> NumberListResponse:
|
|
50
|
+
"""
|
|
51
|
+
Returns a paginated list of the phone numbers owned by the authenticated account.
|
|
52
|
+
|
|
53
|
+
Parameters
|
|
54
|
+
----------
|
|
55
|
+
city_id : typing.Optional[int]
|
|
56
|
+
Filters numbers by the ID of their city or rate center.
|
|
57
|
+
|
|
58
|
+
search : typing.Optional[str]
|
|
59
|
+
Filters numbers by a full or partial phone number.
|
|
60
|
+
|
|
61
|
+
label : typing.Optional[str]
|
|
62
|
+
Filters numbers by `label`.
|
|
63
|
+
|
|
64
|
+
label_present : typing.Optional[bool]
|
|
65
|
+
When `true`, returns only numbers that have a label; when `false`, only numbers without one.
|
|
66
|
+
|
|
67
|
+
page : typing.Optional[int]
|
|
68
|
+
Page number to retrieve. Default `1`.
|
|
69
|
+
|
|
70
|
+
per_page : typing.Optional[int]
|
|
71
|
+
Number of records to return per page. Default `25`.
|
|
72
|
+
|
|
73
|
+
request_options : typing.Optional[RequestOptions]
|
|
74
|
+
Request-specific configuration.
|
|
75
|
+
|
|
76
|
+
Returns
|
|
77
|
+
-------
|
|
78
|
+
NumberListResponse
|
|
79
|
+
Returns a paginated list of phone numbers.
|
|
80
|
+
|
|
81
|
+
Examples
|
|
82
|
+
--------
|
|
83
|
+
from wavix import Wavix
|
|
84
|
+
|
|
85
|
+
client = Wavix(
|
|
86
|
+
token="YOUR_TOKEN",
|
|
87
|
+
)
|
|
88
|
+
client.numbers.list(
|
|
89
|
+
city_id=123,
|
|
90
|
+
search="256537",
|
|
91
|
+
label="ALEX",
|
|
92
|
+
label_present=True,
|
|
93
|
+
page=2,
|
|
94
|
+
per_page=50,
|
|
95
|
+
)
|
|
96
|
+
"""
|
|
97
|
+
_response = self._raw_client.list(
|
|
98
|
+
city_id=city_id,
|
|
99
|
+
search=search,
|
|
100
|
+
label=label,
|
|
101
|
+
label_present=label_present,
|
|
102
|
+
page=page,
|
|
103
|
+
per_page=per_page,
|
|
104
|
+
request_options=request_options,
|
|
105
|
+
)
|
|
106
|
+
return _response.data
|
|
107
|
+
|
|
108
|
+
def delete(
|
|
109
|
+
self,
|
|
110
|
+
*,
|
|
111
|
+
ids: typing.Optional[typing.Union[int, typing.Sequence[int]]] = None,
|
|
112
|
+
dids: typing.Optional[str] = None,
|
|
113
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
114
|
+
) -> DeleteNumbersResponse:
|
|
115
|
+
"""
|
|
116
|
+
Releases the listed phone numbers back to stock. Selection accepts either `ids` (record IDs) or `dids` (phone numbers), but not both.
|
|
117
|
+
|
|
118
|
+
Parameters
|
|
119
|
+
----------
|
|
120
|
+
ids : typing.Optional[typing.Union[int, typing.Sequence[int]]]
|
|
121
|
+
Record IDs of the phone numbers to release. Mutually exclusive with `dids`.
|
|
122
|
+
|
|
123
|
+
dids : typing.Optional[str]
|
|
124
|
+
Comma-separated phone numbers to release. Mutually exclusive with `ids`.
|
|
125
|
+
|
|
126
|
+
request_options : typing.Optional[RequestOptions]
|
|
127
|
+
Request-specific configuration.
|
|
128
|
+
|
|
129
|
+
Returns
|
|
130
|
+
-------
|
|
131
|
+
DeleteNumbersResponse
|
|
132
|
+
Returns a success confirmation. The numbers are released back to stock.
|
|
133
|
+
|
|
134
|
+
Examples
|
|
135
|
+
--------
|
|
136
|
+
from wavix import Wavix
|
|
137
|
+
|
|
138
|
+
client = Wavix(
|
|
139
|
+
token="YOUR_TOKEN",
|
|
140
|
+
)
|
|
141
|
+
client.numbers.delete(
|
|
142
|
+
dids="47832123321,47832123324,478321233215",
|
|
143
|
+
)
|
|
144
|
+
"""
|
|
145
|
+
_response = self._raw_client.delete(ids=ids, dids=dids, request_options=request_options)
|
|
146
|
+
return _response.data
|
|
147
|
+
|
|
148
|
+
def bulk_update(
|
|
149
|
+
self,
|
|
150
|
+
*,
|
|
151
|
+
ids: typing.Sequence[int],
|
|
152
|
+
sms_enabled: typing.Optional[bool] = OMIT,
|
|
153
|
+
destinations: typing.Optional[typing.Sequence[NumberDestination]] = OMIT,
|
|
154
|
+
sms_relay_url: typing.Optional[str] = OMIT,
|
|
155
|
+
call_recording_enabled: typing.Optional[bool] = OMIT,
|
|
156
|
+
transcription_enabled: typing.Optional[bool] = OMIT,
|
|
157
|
+
transcription_threshold: typing.Optional[int] = OMIT,
|
|
158
|
+
call_status_url: typing.Optional[str] = OMIT,
|
|
159
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
160
|
+
) -> BulkUpdateNumbersResponse:
|
|
161
|
+
"""
|
|
162
|
+
Applies the same changes to every listed phone number. Only the provided fields are changed. Destination and SMS callback changes are applied asynchronously and may not be reflected in the response immediately.
|
|
163
|
+
|
|
164
|
+
Parameters
|
|
165
|
+
----------
|
|
166
|
+
ids : typing.Sequence[int]
|
|
167
|
+
Numbers (by ID) to apply the patch to. The same patch is
|
|
168
|
+
applied to every listed number.
|
|
169
|
+
|
|
170
|
+
sms_enabled : typing.Optional[bool]
|
|
171
|
+
Indicates whether SMS is enabled for the phone numbers.
|
|
172
|
+
|
|
173
|
+
destinations : typing.Optional[typing.Sequence[NumberDestination]]
|
|
174
|
+
Inbound call routing destinations for the phone numbers.
|
|
175
|
+
|
|
176
|
+
sms_relay_url : typing.Optional[str]
|
|
177
|
+
Callback URL for inbound messages.
|
|
178
|
+
|
|
179
|
+
call_recording_enabled : typing.Optional[bool]
|
|
180
|
+
Indicates whether call recording is enabled.
|
|
181
|
+
|
|
182
|
+
transcription_enabled : typing.Optional[bool]
|
|
183
|
+
Indicates whether call transcription is enabled.
|
|
184
|
+
|
|
185
|
+
transcription_threshold : typing.Optional[int]
|
|
186
|
+
Minimum call duration in seconds before transcription runs.
|
|
187
|
+
|
|
188
|
+
call_status_url : typing.Optional[str]
|
|
189
|
+
Callback URL for call status updates.
|
|
190
|
+
|
|
191
|
+
request_options : typing.Optional[RequestOptions]
|
|
192
|
+
Request-specific configuration.
|
|
193
|
+
|
|
194
|
+
Returns
|
|
195
|
+
-------
|
|
196
|
+
BulkUpdateNumbersResponse
|
|
197
|
+
Returns the updated phone numbers.
|
|
198
|
+
|
|
199
|
+
Examples
|
|
200
|
+
--------
|
|
201
|
+
from wavix import Wavix
|
|
202
|
+
|
|
203
|
+
client = Wavix(
|
|
204
|
+
token="YOUR_TOKEN",
|
|
205
|
+
)
|
|
206
|
+
client.numbers.bulk_update(
|
|
207
|
+
ids=[123, 456],
|
|
208
|
+
)
|
|
209
|
+
"""
|
|
210
|
+
_response = self._raw_client.bulk_update(
|
|
211
|
+
ids=ids,
|
|
212
|
+
sms_enabled=sms_enabled,
|
|
213
|
+
destinations=destinations,
|
|
214
|
+
sms_relay_url=sms_relay_url,
|
|
215
|
+
call_recording_enabled=call_recording_enabled,
|
|
216
|
+
transcription_enabled=transcription_enabled,
|
|
217
|
+
transcription_threshold=transcription_threshold,
|
|
218
|
+
call_status_url=call_status_url,
|
|
219
|
+
request_options=request_options,
|
|
220
|
+
)
|
|
221
|
+
return _response.data
|
|
222
|
+
|
|
223
|
+
def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> Number:
|
|
224
|
+
"""
|
|
225
|
+
Returns the phone number identified by `id`, including its destinations, documents, and feature settings.
|
|
226
|
+
|
|
227
|
+
Parameters
|
|
228
|
+
----------
|
|
229
|
+
id : int
|
|
230
|
+
The unique ID of the phone number.
|
|
231
|
+
|
|
232
|
+
request_options : typing.Optional[RequestOptions]
|
|
233
|
+
Request-specific configuration.
|
|
234
|
+
|
|
235
|
+
Returns
|
|
236
|
+
-------
|
|
237
|
+
Number
|
|
238
|
+
Returns the phone number.
|
|
239
|
+
|
|
240
|
+
Examples
|
|
241
|
+
--------
|
|
242
|
+
from wavix import Wavix
|
|
243
|
+
|
|
244
|
+
client = Wavix(
|
|
245
|
+
token="YOUR_TOKEN",
|
|
246
|
+
)
|
|
247
|
+
client.numbers.get(
|
|
248
|
+
id=123,
|
|
249
|
+
)
|
|
250
|
+
"""
|
|
251
|
+
_response = self._raw_client.get(id, request_options=request_options)
|
|
252
|
+
return _response.data
|
|
253
|
+
|
|
254
|
+
def update(
|
|
255
|
+
self,
|
|
256
|
+
id: int,
|
|
257
|
+
*,
|
|
258
|
+
sms_enabled: typing.Optional[bool] = OMIT,
|
|
259
|
+
destinations: typing.Optional[typing.Sequence[NumberDestination]] = OMIT,
|
|
260
|
+
sms_relay_url: typing.Optional[str] = OMIT,
|
|
261
|
+
call_recording_enabled: typing.Optional[bool] = OMIT,
|
|
262
|
+
transcription_enabled: typing.Optional[bool] = OMIT,
|
|
263
|
+
transcription_threshold: typing.Optional[int] = OMIT,
|
|
264
|
+
call_status_url: typing.Optional[str] = OMIT,
|
|
265
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
266
|
+
) -> Number:
|
|
267
|
+
"""
|
|
268
|
+
Updates the phone number identified by `id`. Only the provided fields are changed.
|
|
269
|
+
|
|
270
|
+
Parameters
|
|
271
|
+
----------
|
|
272
|
+
id : int
|
|
273
|
+
The unique ID of the phone number.
|
|
274
|
+
|
|
275
|
+
sms_enabled : typing.Optional[bool]
|
|
276
|
+
Indicates whether SMS is enabled for the phone number.
|
|
277
|
+
|
|
278
|
+
destinations : typing.Optional[typing.Sequence[NumberDestination]]
|
|
279
|
+
Inbound call routing destinations for the phone number.
|
|
280
|
+
|
|
281
|
+
sms_relay_url : typing.Optional[str]
|
|
282
|
+
Callback URL for inbound messages.
|
|
283
|
+
|
|
284
|
+
call_recording_enabled : typing.Optional[bool]
|
|
285
|
+
Indicates whether call recording is enabled.
|
|
286
|
+
|
|
287
|
+
transcription_enabled : typing.Optional[bool]
|
|
288
|
+
Indicates whether call transcription is enabled.
|
|
289
|
+
|
|
290
|
+
transcription_threshold : typing.Optional[int]
|
|
291
|
+
Minimum call duration in seconds before transcription runs.
|
|
292
|
+
|
|
293
|
+
call_status_url : typing.Optional[str]
|
|
294
|
+
Callback URL for call status updates.
|
|
295
|
+
|
|
296
|
+
request_options : typing.Optional[RequestOptions]
|
|
297
|
+
Request-specific configuration.
|
|
298
|
+
|
|
299
|
+
Returns
|
|
300
|
+
-------
|
|
301
|
+
Number
|
|
302
|
+
Returns the updated phone number.
|
|
303
|
+
|
|
304
|
+
Examples
|
|
305
|
+
--------
|
|
306
|
+
from wavix import Wavix
|
|
307
|
+
|
|
308
|
+
client = Wavix(
|
|
309
|
+
token="YOUR_TOKEN",
|
|
310
|
+
)
|
|
311
|
+
client.numbers.update(
|
|
312
|
+
id=123,
|
|
313
|
+
)
|
|
314
|
+
"""
|
|
315
|
+
_response = self._raw_client.update(
|
|
316
|
+
id,
|
|
317
|
+
sms_enabled=sms_enabled,
|
|
318
|
+
destinations=destinations,
|
|
319
|
+
sms_relay_url=sms_relay_url,
|
|
320
|
+
call_recording_enabled=call_recording_enabled,
|
|
321
|
+
transcription_enabled=transcription_enabled,
|
|
322
|
+
transcription_threshold=transcription_threshold,
|
|
323
|
+
call_status_url=call_status_url,
|
|
324
|
+
request_options=request_options,
|
|
325
|
+
)
|
|
326
|
+
return _response.data
|
|
327
|
+
|
|
328
|
+
@property
|
|
329
|
+
def papers(self):
|
|
330
|
+
if self._papers is None:
|
|
331
|
+
from .papers.client import PapersClient # noqa: E402
|
|
332
|
+
|
|
333
|
+
self._papers = PapersClient(client_wrapper=self._client_wrapper)
|
|
334
|
+
return self._papers
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
class AsyncNumbersClient:
|
|
338
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
339
|
+
self._raw_client = AsyncRawNumbersClient(client_wrapper=client_wrapper)
|
|
340
|
+
self._client_wrapper = client_wrapper
|
|
341
|
+
self._papers: typing.Optional[AsyncPapersClient] = None
|
|
342
|
+
|
|
343
|
+
@property
|
|
344
|
+
def with_raw_response(self) -> AsyncRawNumbersClient:
|
|
345
|
+
"""
|
|
346
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
347
|
+
|
|
348
|
+
Returns
|
|
349
|
+
-------
|
|
350
|
+
AsyncRawNumbersClient
|
|
351
|
+
"""
|
|
352
|
+
return self._raw_client
|
|
353
|
+
|
|
354
|
+
async def list(
|
|
355
|
+
self,
|
|
356
|
+
*,
|
|
357
|
+
city_id: typing.Optional[int] = None,
|
|
358
|
+
search: typing.Optional[str] = None,
|
|
359
|
+
label: typing.Optional[str] = None,
|
|
360
|
+
label_present: typing.Optional[bool] = None,
|
|
361
|
+
page: typing.Optional[int] = None,
|
|
362
|
+
per_page: typing.Optional[int] = None,
|
|
363
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
364
|
+
) -> NumberListResponse:
|
|
365
|
+
"""
|
|
366
|
+
Returns a paginated list of the phone numbers owned by the authenticated account.
|
|
367
|
+
|
|
368
|
+
Parameters
|
|
369
|
+
----------
|
|
370
|
+
city_id : typing.Optional[int]
|
|
371
|
+
Filters numbers by the ID of their city or rate center.
|
|
372
|
+
|
|
373
|
+
search : typing.Optional[str]
|
|
374
|
+
Filters numbers by a full or partial phone number.
|
|
375
|
+
|
|
376
|
+
label : typing.Optional[str]
|
|
377
|
+
Filters numbers by `label`.
|
|
378
|
+
|
|
379
|
+
label_present : typing.Optional[bool]
|
|
380
|
+
When `true`, returns only numbers that have a label; when `false`, only numbers without one.
|
|
381
|
+
|
|
382
|
+
page : typing.Optional[int]
|
|
383
|
+
Page number to retrieve. Default `1`.
|
|
384
|
+
|
|
385
|
+
per_page : typing.Optional[int]
|
|
386
|
+
Number of records to return per page. Default `25`.
|
|
387
|
+
|
|
388
|
+
request_options : typing.Optional[RequestOptions]
|
|
389
|
+
Request-specific configuration.
|
|
390
|
+
|
|
391
|
+
Returns
|
|
392
|
+
-------
|
|
393
|
+
NumberListResponse
|
|
394
|
+
Returns a paginated list of phone numbers.
|
|
395
|
+
|
|
396
|
+
Examples
|
|
397
|
+
--------
|
|
398
|
+
import asyncio
|
|
399
|
+
|
|
400
|
+
from wavix import AsyncWavix
|
|
401
|
+
|
|
402
|
+
client = AsyncWavix(
|
|
403
|
+
token="YOUR_TOKEN",
|
|
404
|
+
)
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
async def main() -> None:
|
|
408
|
+
await client.numbers.list(
|
|
409
|
+
city_id=123,
|
|
410
|
+
search="256537",
|
|
411
|
+
label="ALEX",
|
|
412
|
+
label_present=True,
|
|
413
|
+
page=2,
|
|
414
|
+
per_page=50,
|
|
415
|
+
)
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
asyncio.run(main())
|
|
419
|
+
"""
|
|
420
|
+
_response = await self._raw_client.list(
|
|
421
|
+
city_id=city_id,
|
|
422
|
+
search=search,
|
|
423
|
+
label=label,
|
|
424
|
+
label_present=label_present,
|
|
425
|
+
page=page,
|
|
426
|
+
per_page=per_page,
|
|
427
|
+
request_options=request_options,
|
|
428
|
+
)
|
|
429
|
+
return _response.data
|
|
430
|
+
|
|
431
|
+
async def delete(
|
|
432
|
+
self,
|
|
433
|
+
*,
|
|
434
|
+
ids: typing.Optional[typing.Union[int, typing.Sequence[int]]] = None,
|
|
435
|
+
dids: typing.Optional[str] = None,
|
|
436
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
437
|
+
) -> DeleteNumbersResponse:
|
|
438
|
+
"""
|
|
439
|
+
Releases the listed phone numbers back to stock. Selection accepts either `ids` (record IDs) or `dids` (phone numbers), but not both.
|
|
440
|
+
|
|
441
|
+
Parameters
|
|
442
|
+
----------
|
|
443
|
+
ids : typing.Optional[typing.Union[int, typing.Sequence[int]]]
|
|
444
|
+
Record IDs of the phone numbers to release. Mutually exclusive with `dids`.
|
|
445
|
+
|
|
446
|
+
dids : typing.Optional[str]
|
|
447
|
+
Comma-separated phone numbers to release. Mutually exclusive with `ids`.
|
|
448
|
+
|
|
449
|
+
request_options : typing.Optional[RequestOptions]
|
|
450
|
+
Request-specific configuration.
|
|
451
|
+
|
|
452
|
+
Returns
|
|
453
|
+
-------
|
|
454
|
+
DeleteNumbersResponse
|
|
455
|
+
Returns a success confirmation. The numbers are released back to stock.
|
|
456
|
+
|
|
457
|
+
Examples
|
|
458
|
+
--------
|
|
459
|
+
import asyncio
|
|
460
|
+
|
|
461
|
+
from wavix import AsyncWavix
|
|
462
|
+
|
|
463
|
+
client = AsyncWavix(
|
|
464
|
+
token="YOUR_TOKEN",
|
|
465
|
+
)
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
async def main() -> None:
|
|
469
|
+
await client.numbers.delete(
|
|
470
|
+
dids="47832123321,47832123324,478321233215",
|
|
471
|
+
)
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
asyncio.run(main())
|
|
475
|
+
"""
|
|
476
|
+
_response = await self._raw_client.delete(ids=ids, dids=dids, request_options=request_options)
|
|
477
|
+
return _response.data
|
|
478
|
+
|
|
479
|
+
async def bulk_update(
|
|
480
|
+
self,
|
|
481
|
+
*,
|
|
482
|
+
ids: typing.Sequence[int],
|
|
483
|
+
sms_enabled: typing.Optional[bool] = OMIT,
|
|
484
|
+
destinations: typing.Optional[typing.Sequence[NumberDestination]] = OMIT,
|
|
485
|
+
sms_relay_url: typing.Optional[str] = OMIT,
|
|
486
|
+
call_recording_enabled: typing.Optional[bool] = OMIT,
|
|
487
|
+
transcription_enabled: typing.Optional[bool] = OMIT,
|
|
488
|
+
transcription_threshold: typing.Optional[int] = OMIT,
|
|
489
|
+
call_status_url: typing.Optional[str] = OMIT,
|
|
490
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
491
|
+
) -> BulkUpdateNumbersResponse:
|
|
492
|
+
"""
|
|
493
|
+
Applies the same changes to every listed phone number. Only the provided fields are changed. Destination and SMS callback changes are applied asynchronously and may not be reflected in the response immediately.
|
|
494
|
+
|
|
495
|
+
Parameters
|
|
496
|
+
----------
|
|
497
|
+
ids : typing.Sequence[int]
|
|
498
|
+
Numbers (by ID) to apply the patch to. The same patch is
|
|
499
|
+
applied to every listed number.
|
|
500
|
+
|
|
501
|
+
sms_enabled : typing.Optional[bool]
|
|
502
|
+
Indicates whether SMS is enabled for the phone numbers.
|
|
503
|
+
|
|
504
|
+
destinations : typing.Optional[typing.Sequence[NumberDestination]]
|
|
505
|
+
Inbound call routing destinations for the phone numbers.
|
|
506
|
+
|
|
507
|
+
sms_relay_url : typing.Optional[str]
|
|
508
|
+
Callback URL for inbound messages.
|
|
509
|
+
|
|
510
|
+
call_recording_enabled : typing.Optional[bool]
|
|
511
|
+
Indicates whether call recording is enabled.
|
|
512
|
+
|
|
513
|
+
transcription_enabled : typing.Optional[bool]
|
|
514
|
+
Indicates whether call transcription is enabled.
|
|
515
|
+
|
|
516
|
+
transcription_threshold : typing.Optional[int]
|
|
517
|
+
Minimum call duration in seconds before transcription runs.
|
|
518
|
+
|
|
519
|
+
call_status_url : typing.Optional[str]
|
|
520
|
+
Callback URL for call status updates.
|
|
521
|
+
|
|
522
|
+
request_options : typing.Optional[RequestOptions]
|
|
523
|
+
Request-specific configuration.
|
|
524
|
+
|
|
525
|
+
Returns
|
|
526
|
+
-------
|
|
527
|
+
BulkUpdateNumbersResponse
|
|
528
|
+
Returns the updated phone numbers.
|
|
529
|
+
|
|
530
|
+
Examples
|
|
531
|
+
--------
|
|
532
|
+
import asyncio
|
|
533
|
+
|
|
534
|
+
from wavix import AsyncWavix
|
|
535
|
+
|
|
536
|
+
client = AsyncWavix(
|
|
537
|
+
token="YOUR_TOKEN",
|
|
538
|
+
)
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
async def main() -> None:
|
|
542
|
+
await client.numbers.bulk_update(
|
|
543
|
+
ids=[123, 456],
|
|
544
|
+
)
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
asyncio.run(main())
|
|
548
|
+
"""
|
|
549
|
+
_response = await self._raw_client.bulk_update(
|
|
550
|
+
ids=ids,
|
|
551
|
+
sms_enabled=sms_enabled,
|
|
552
|
+
destinations=destinations,
|
|
553
|
+
sms_relay_url=sms_relay_url,
|
|
554
|
+
call_recording_enabled=call_recording_enabled,
|
|
555
|
+
transcription_enabled=transcription_enabled,
|
|
556
|
+
transcription_threshold=transcription_threshold,
|
|
557
|
+
call_status_url=call_status_url,
|
|
558
|
+
request_options=request_options,
|
|
559
|
+
)
|
|
560
|
+
return _response.data
|
|
561
|
+
|
|
562
|
+
async def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> Number:
|
|
563
|
+
"""
|
|
564
|
+
Returns the phone number identified by `id`, including its destinations, documents, and feature settings.
|
|
565
|
+
|
|
566
|
+
Parameters
|
|
567
|
+
----------
|
|
568
|
+
id : int
|
|
569
|
+
The unique ID of the phone number.
|
|
570
|
+
|
|
571
|
+
request_options : typing.Optional[RequestOptions]
|
|
572
|
+
Request-specific configuration.
|
|
573
|
+
|
|
574
|
+
Returns
|
|
575
|
+
-------
|
|
576
|
+
Number
|
|
577
|
+
Returns the phone number.
|
|
578
|
+
|
|
579
|
+
Examples
|
|
580
|
+
--------
|
|
581
|
+
import asyncio
|
|
582
|
+
|
|
583
|
+
from wavix import AsyncWavix
|
|
584
|
+
|
|
585
|
+
client = AsyncWavix(
|
|
586
|
+
token="YOUR_TOKEN",
|
|
587
|
+
)
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
async def main() -> None:
|
|
591
|
+
await client.numbers.get(
|
|
592
|
+
id=123,
|
|
593
|
+
)
|
|
594
|
+
|
|
595
|
+
|
|
596
|
+
asyncio.run(main())
|
|
597
|
+
"""
|
|
598
|
+
_response = await self._raw_client.get(id, request_options=request_options)
|
|
599
|
+
return _response.data
|
|
600
|
+
|
|
601
|
+
async def update(
|
|
602
|
+
self,
|
|
603
|
+
id: int,
|
|
604
|
+
*,
|
|
605
|
+
sms_enabled: typing.Optional[bool] = OMIT,
|
|
606
|
+
destinations: typing.Optional[typing.Sequence[NumberDestination]] = OMIT,
|
|
607
|
+
sms_relay_url: typing.Optional[str] = OMIT,
|
|
608
|
+
call_recording_enabled: typing.Optional[bool] = OMIT,
|
|
609
|
+
transcription_enabled: typing.Optional[bool] = OMIT,
|
|
610
|
+
transcription_threshold: typing.Optional[int] = OMIT,
|
|
611
|
+
call_status_url: typing.Optional[str] = OMIT,
|
|
612
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
613
|
+
) -> Number:
|
|
614
|
+
"""
|
|
615
|
+
Updates the phone number identified by `id`. Only the provided fields are changed.
|
|
616
|
+
|
|
617
|
+
Parameters
|
|
618
|
+
----------
|
|
619
|
+
id : int
|
|
620
|
+
The unique ID of the phone number.
|
|
621
|
+
|
|
622
|
+
sms_enabled : typing.Optional[bool]
|
|
623
|
+
Indicates whether SMS is enabled for the phone number.
|
|
624
|
+
|
|
625
|
+
destinations : typing.Optional[typing.Sequence[NumberDestination]]
|
|
626
|
+
Inbound call routing destinations for the phone number.
|
|
627
|
+
|
|
628
|
+
sms_relay_url : typing.Optional[str]
|
|
629
|
+
Callback URL for inbound messages.
|
|
630
|
+
|
|
631
|
+
call_recording_enabled : typing.Optional[bool]
|
|
632
|
+
Indicates whether call recording is enabled.
|
|
633
|
+
|
|
634
|
+
transcription_enabled : typing.Optional[bool]
|
|
635
|
+
Indicates whether call transcription is enabled.
|
|
636
|
+
|
|
637
|
+
transcription_threshold : typing.Optional[int]
|
|
638
|
+
Minimum call duration in seconds before transcription runs.
|
|
639
|
+
|
|
640
|
+
call_status_url : typing.Optional[str]
|
|
641
|
+
Callback URL for call status updates.
|
|
642
|
+
|
|
643
|
+
request_options : typing.Optional[RequestOptions]
|
|
644
|
+
Request-specific configuration.
|
|
645
|
+
|
|
646
|
+
Returns
|
|
647
|
+
-------
|
|
648
|
+
Number
|
|
649
|
+
Returns the updated phone number.
|
|
650
|
+
|
|
651
|
+
Examples
|
|
652
|
+
--------
|
|
653
|
+
import asyncio
|
|
654
|
+
|
|
655
|
+
from wavix import AsyncWavix
|
|
656
|
+
|
|
657
|
+
client = AsyncWavix(
|
|
658
|
+
token="YOUR_TOKEN",
|
|
659
|
+
)
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
async def main() -> None:
|
|
663
|
+
await client.numbers.update(
|
|
664
|
+
id=123,
|
|
665
|
+
)
|
|
666
|
+
|
|
667
|
+
|
|
668
|
+
asyncio.run(main())
|
|
669
|
+
"""
|
|
670
|
+
_response = await self._raw_client.update(
|
|
671
|
+
id,
|
|
672
|
+
sms_enabled=sms_enabled,
|
|
673
|
+
destinations=destinations,
|
|
674
|
+
sms_relay_url=sms_relay_url,
|
|
675
|
+
call_recording_enabled=call_recording_enabled,
|
|
676
|
+
transcription_enabled=transcription_enabled,
|
|
677
|
+
transcription_threshold=transcription_threshold,
|
|
678
|
+
call_status_url=call_status_url,
|
|
679
|
+
request_options=request_options,
|
|
680
|
+
)
|
|
681
|
+
return _response.data
|
|
682
|
+
|
|
683
|
+
@property
|
|
684
|
+
def papers(self):
|
|
685
|
+
if self._papers is None:
|
|
686
|
+
from .papers.client import AsyncPapersClient # noqa: E402
|
|
687
|
+
|
|
688
|
+
self._papers = AsyncPapersClient(client_wrapper=self._client_wrapper)
|
|
689
|
+
return self._papers
|