wavix-python-sdk 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wavix/__init__.py +801 -0
- wavix/_default_clients.py +32 -0
- wavix/api_keys/__init__.py +4 -0
- wavix/api_keys/client.py +764 -0
- wavix/api_keys/raw_client.py +1191 -0
- wavix/billing/__init__.py +41 -0
- wavix/billing/client.py +82 -0
- wavix/billing/invoices/__init__.py +34 -0
- wavix/billing/invoices/client.py +203 -0
- wavix/billing/invoices/raw_client.py +302 -0
- wavix/billing/invoices/types/__init__.py +34 -0
- wavix/billing/invoices/types/list_invoices_response.py +31 -0
- wavix/billing/raw_client.py +13 -0
- wavix/billing/transactions/__init__.py +34 -0
- wavix/billing/transactions/client.py +209 -0
- wavix/billing/transactions/raw_client.py +253 -0
- wavix/billing/transactions/types/__init__.py +34 -0
- wavix/billing/transactions/types/list_transactions_response.py +31 -0
- wavix/buy/__init__.py +61 -0
- wavix/buy/cities/__init__.py +34 -0
- wavix/buy/cities/client.py +134 -0
- wavix/buy/cities/raw_client.py +201 -0
- wavix/buy/cities/types/__init__.py +34 -0
- wavix/buy/cities/types/list_cities_response.py +23 -0
- wavix/buy/client.py +139 -0
- wavix/buy/countries/__init__.py +34 -0
- wavix/buy/countries/client.py +116 -0
- wavix/buy/countries/raw_client.py +144 -0
- wavix/buy/countries/types/__init__.py +34 -0
- wavix/buy/countries/types/list_countries_response.py +23 -0
- wavix/buy/numbers/__init__.py +34 -0
- wavix/buy/numbers/client.py +168 -0
- wavix/buy/numbers/raw_client.py +227 -0
- wavix/buy/numbers/types/__init__.py +34 -0
- wavix/buy/numbers/types/list_numbers_response.py +26 -0
- wavix/buy/raw_client.py +13 -0
- wavix/buy/region_cities/__init__.py +34 -0
- wavix/buy/region_cities/client.py +142 -0
- wavix/buy/region_cities/raw_client.py +207 -0
- wavix/buy/region_cities/types/__init__.py +34 -0
- wavix/buy/region_cities/types/list_region_cities_response.py +23 -0
- wavix/buy/regions/__init__.py +34 -0
- wavix/buy/regions/client.py +132 -0
- wavix/buy/regions/raw_client.py +222 -0
- wavix/buy/regions/types/__init__.py +34 -0
- wavix/buy/regions/types/list_regions_response.py +23 -0
- wavix/call_control/__init__.py +40 -0
- wavix/call_control/audio/__init__.py +4 -0
- wavix/call_control/audio/client.py +195 -0
- wavix/call_control/audio/raw_client.py +333 -0
- wavix/call_control/client.py +796 -0
- wavix/call_control/raw_client.py +1224 -0
- wavix/call_control/streams/__init__.py +4 -0
- wavix/call_control/streams/client.py +250 -0
- wavix/call_control/streams/raw_client.py +325 -0
- wavix/call_control/types/__init__.py +38 -0
- wavix/call_control/types/call_dtmf_collect_request_prompt.py +33 -0
- wavix/call_control/types/call_dtmf_collect_request_prompt_say.py +31 -0
- wavix/call_recording/__init__.py +4 -0
- wavix/call_recording/client.py +430 -0
- wavix/call_recording/raw_client.py +726 -0
- wavix/call_webhooks/__init__.py +37 -0
- wavix/call_webhooks/client.py +281 -0
- wavix/call_webhooks/raw_client.py +529 -0
- wavix/call_webhooks/types/__init__.py +38 -0
- wavix/call_webhooks/types/call_webhooks_create_request_event_type.py +5 -0
- wavix/call_webhooks/types/delete_call_webhooks_request_event_type.py +5 -0
- wavix/cart/__init__.py +38 -0
- wavix/cart/client.py +327 -0
- wavix/cart/raw_client.py +629 -0
- wavix/cart/types/__init__.py +40 -0
- wavix/cart/types/checkout_cart_response.py +22 -0
- wavix/cart/types/get_cart_response.py +29 -0
- wavix/cart/types/remove_cart_response.py +22 -0
- wavix/cdrs/__init__.py +39 -0
- wavix/cdrs/client.py +968 -0
- wavix/cdrs/raw_client.py +1176 -0
- wavix/cdrs/transcription/__init__.py +4 -0
- wavix/cdrs/transcription/client.py +112 -0
- wavix/cdrs/transcription/raw_client.py +156 -0
- wavix/cdrs/types/__init__.py +38 -0
- wavix/cdrs/types/cdr_search_request_disposition.py +5 -0
- wavix/cdrs/types/cdr_search_request_type.py +5 -0
- wavix/client.py +578 -0
- wavix/core/__init__.py +127 -0
- wavix/core/api_error.py +23 -0
- wavix/core/client_wrapper.py +119 -0
- wavix/core/datetime_utils.py +70 -0
- wavix/core/file.py +67 -0
- wavix/core/force_multipart.py +18 -0
- wavix/core/http_client.py +839 -0
- wavix/core/http_response.py +59 -0
- wavix/core/http_sse/__init__.py +42 -0
- wavix/core/http_sse/_api.py +170 -0
- wavix/core/http_sse/_decoders.py +61 -0
- wavix/core/http_sse/_exceptions.py +7 -0
- wavix/core/http_sse/_models.py +17 -0
- wavix/core/jsonable_encoder.py +120 -0
- wavix/core/logging.py +107 -0
- wavix/core/parse_error.py +36 -0
- wavix/core/pydantic_utilities.py +508 -0
- wavix/core/query_encoder.py +58 -0
- wavix/core/remove_none_from_dict.py +11 -0
- wavix/core/request_options.py +35 -0
- wavix/core/serialization.py +347 -0
- wavix/environment.py +7 -0
- wavix/errors/__init__.py +56 -0
- wavix/errors/bad_request_error.py +10 -0
- wavix/errors/forbidden_error.py +10 -0
- wavix/errors/not_found_error.py +10 -0
- wavix/errors/service_unavailable_error.py +11 -0
- wavix/errors/too_many_requests_error.py +11 -0
- wavix/errors/unauthorized_error.py +11 -0
- wavix/errors/unprocessable_entity_error.py +10 -0
- wavix/link_shortener/__init__.py +34 -0
- wavix/link_shortener/client.py +194 -0
- wavix/link_shortener/metrics/__init__.py +4 -0
- wavix/link_shortener/metrics/client.py +198 -0
- wavix/link_shortener/metrics/raw_client.py +218 -0
- wavix/link_shortener/raw_client.py +265 -0
- wavix/number_validator/__init__.py +35 -0
- wavix/number_validator/client.py +271 -0
- wavix/number_validator/raw_client.py +383 -0
- wavix/number_validator/results/__init__.py +4 -0
- wavix/number_validator/results/client.py +114 -0
- wavix/number_validator/results/raw_client.py +156 -0
- wavix/number_validator/types/__init__.py +34 -0
- wavix/number_validator/types/get_number_validator_response.py +112 -0
- wavix/numbers/__init__.py +39 -0
- wavix/numbers/client.py +689 -0
- wavix/numbers/papers/__init__.py +4 -0
- wavix/numbers/papers/client.py +155 -0
- wavix/numbers/papers/raw_client.py +208 -0
- wavix/numbers/raw_client.py +1000 -0
- wavix/numbers/types/__init__.py +38 -0
- wavix/numbers/types/bulk_update_numbers_response.py +23 -0
- wavix/numbers/types/delete_numbers_response.py +22 -0
- wavix/profile/__init__.py +41 -0
- wavix/profile/client.py +308 -0
- wavix/profile/config/__init__.py +34 -0
- wavix/profile/config/client.py +100 -0
- wavix/profile/config/raw_client.py +124 -0
- wavix/profile/config/types/__init__.py +34 -0
- wavix/profile/config/types/get_config_response.py +25 -0
- wavix/profile/raw_client.py +360 -0
- wavix/profile/types/__init__.py +38 -0
- wavix/profile/types/profile_update_request_company_info.py +48 -0
- wavix/profile/types/profile_update_request_company_info_industry.py +22 -0
- wavix/py.typed +0 -0
- wavix/sip_trunks/__init__.py +4 -0
- wavix/sip_trunks/client.py +927 -0
- wavix/sip_trunks/raw_client.py +1324 -0
- wavix/sms_and_mms/__init__.py +66 -0
- wavix/sms_and_mms/client.py +101 -0
- wavix/sms_and_mms/messages/__init__.py +49 -0
- wavix/sms_and_mms/messages/client.py +625 -0
- wavix/sms_and_mms/messages/raw_client.py +793 -0
- wavix/sms_and_mms/messages/types/__init__.py +47 -0
- wavix/sms_and_mms/messages/types/get_messages_response.py +97 -0
- wavix/sms_and_mms/messages/types/list_all_messages_request_message_type.py +5 -0
- wavix/sms_and_mms/messages/types/list_messages_request_message_type.py +5 -0
- wavix/sms_and_mms/messages/types/list_messages_response.py +26 -0
- wavix/sms_and_mms/opt_outs/__init__.py +34 -0
- wavix/sms_and_mms/opt_outs/client.py +277 -0
- wavix/sms_and_mms/opt_outs/raw_client.py +438 -0
- wavix/sms_and_mms/opt_outs/types/__init__.py +34 -0
- wavix/sms_and_mms/opt_outs/types/create_opt_outs_response.py +22 -0
- wavix/sms_and_mms/raw_client.py +13 -0
- wavix/sms_and_mms/sender_ids/__init__.py +38 -0
- wavix/sms_and_mms/sender_ids/client.py +391 -0
- wavix/sms_and_mms/sender_ids/raw_client.py +617 -0
- wavix/sms_and_mms/sender_ids/types/__init__.py +40 -0
- wavix/sms_and_mms/sender_ids/types/delete_sender_ids_response.py +22 -0
- wavix/sms_and_mms/sender_ids/types/sender_id_create_request_monthly_volume.py +7 -0
- wavix/sms_and_mms/sender_ids/types/sender_id_create_request_usecase.py +5 -0
- wavix/speech_analytics/__init__.py +52 -0
- wavix/speech_analytics/client.py +372 -0
- wavix/speech_analytics/file/__init__.py +4 -0
- wavix/speech_analytics/file/client.py +114 -0
- wavix/speech_analytics/file/raw_client.py +148 -0
- wavix/speech_analytics/raw_client.py +527 -0
- wavix/speech_analytics/types/__init__.py +47 -0
- wavix/speech_analytics/types/create_speech_analytics_response.py +32 -0
- wavix/speech_analytics/types/get_speech_analytics_response.py +77 -0
- wavix/speech_analytics/types/get_speech_analytics_response_language.py +5 -0
- wavix/speech_analytics/types/get_speech_analytics_response_status.py +5 -0
- wavix/sub_accounts/__init__.py +52 -0
- wavix/sub_accounts/client.py +442 -0
- wavix/sub_accounts/raw_client.py +775 -0
- wavix/sub_accounts/transactions/__init__.py +4 -0
- wavix/sub_accounts/transactions/client.py +198 -0
- wavix/sub_accounts/transactions/raw_client.py +265 -0
- wavix/sub_accounts/types/__init__.py +47 -0
- wavix/sub_accounts/types/list_sub_accounts_request_status.py +5 -0
- wavix/sub_accounts/types/sub_accounts_create_request_default_destinations.py +31 -0
- wavix/sub_accounts/types/sub_accounts_update_request_default_destinations.py +31 -0
- wavix/sub_accounts/types/sub_accounts_update_request_status.py +5 -0
- wavix/ten_dlc/__init__.py +167 -0
- wavix/ten_dlc/brand_appeals/__init__.py +34 -0
- wavix/ten_dlc/brand_appeals/client.py +244 -0
- wavix/ten_dlc/brand_appeals/raw_client.py +390 -0
- wavix/ten_dlc/brand_appeals/types/__init__.py +34 -0
- wavix/ten_dlc/brand_appeals/types/create_brand_appeals_response.py +22 -0
- wavix/ten_dlc/brand_evidence/__init__.py +37 -0
- wavix/ten_dlc/brand_evidence/client.py +365 -0
- wavix/ten_dlc/brand_evidence/raw_client.py +599 -0
- wavix/ten_dlc/brand_evidence/types/__init__.py +38 -0
- wavix/ten_dlc/brand_evidence/types/delete_brand_evidence_response.py +22 -0
- wavix/ten_dlc/brand_evidence/types/upload_brand_evidence_response.py +38 -0
- wavix/ten_dlc/brand_vetting_appeals/__init__.py +34 -0
- wavix/ten_dlc/brand_vetting_appeals/client.py +258 -0
- wavix/ten_dlc/brand_vetting_appeals/raw_client.py +381 -0
- wavix/ten_dlc/brand_vetting_appeals/types/__init__.py +36 -0
- wavix/ten_dlc/brand_vetting_appeals/types/create_brand_vetting_appeals_response.py +22 -0
- wavix/ten_dlc/brand_vettings/__init__.py +4 -0
- wavix/ten_dlc/brand_vettings/client.py +325 -0
- wavix/ten_dlc/brand_vettings/raw_client.py +518 -0
- wavix/ten_dlc/brands/__init__.py +85 -0
- wavix/ten_dlc/brands/client.py +870 -0
- wavix/ten_dlc/brands/raw_client.py +1263 -0
- wavix/ten_dlc/brands/types/__init__.py +83 -0
- wavix/ten_dlc/brands/types/create_brands_response.py +143 -0
- wavix/ten_dlc/brands/types/create_brands_response_entity_type.py +7 -0
- wavix/ten_dlc/brands/types/create_brands_response_status.py +7 -0
- wavix/ten_dlc/brands/types/delete_brands_response.py +22 -0
- wavix/ten_dlc/brands/types/get_brands_response.py +143 -0
- wavix/ten_dlc/brands/types/get_brands_response_entity_type.py +7 -0
- wavix/ten_dlc/brands/types/get_brands_response_status.py +7 -0
- wavix/ten_dlc/brands/types/list_brands_response.py +33 -0
- wavix/ten_dlc/brands/types/list_brands_response_pagination.py +41 -0
- wavix/ten_dlc/brands/types/qualify_usecase_brands_request_use_case.py +35 -0
- wavix/ten_dlc/brands/types/qualify_usecase_brands_response.py +33 -0
- wavix/ten_dlc/brands/types/ten_dlc_brand_update_request_entity_type.py +7 -0
- wavix/ten_dlc/brands/types/ten_dlc_brand_update_request_vertical.py +18 -0
- wavix/ten_dlc/brands/types/update_brands_response.py +143 -0
- wavix/ten_dlc/brands/types/update_brands_response_entity_type.py +7 -0
- wavix/ten_dlc/brands/types/update_brands_response_status.py +7 -0
- wavix/ten_dlc/campaign_numbers/__init__.py +38 -0
- wavix/ten_dlc/campaign_numbers/client.py +304 -0
- wavix/ten_dlc/campaign_numbers/raw_client.py +448 -0
- wavix/ten_dlc/campaign_numbers/types/__init__.py +40 -0
- wavix/ten_dlc/campaign_numbers/types/link_campaign_numbers_response.py +22 -0
- wavix/ten_dlc/campaign_numbers/types/list_campaign_numbers_response.py +33 -0
- wavix/ten_dlc/campaign_numbers/types/unlink_campaign_numbers_response.py +22 -0
- wavix/ten_dlc/campaigns/__init__.py +64 -0
- wavix/ten_dlc/campaigns/client.py +1493 -0
- wavix/ten_dlc/campaigns/raw_client.py +1840 -0
- wavix/ten_dlc/campaigns/types/__init__.py +62 -0
- wavix/ten_dlc/campaigns/types/create_campaigns_response.py +211 -0
- wavix/ten_dlc/campaigns/types/delete_campaigns_response.py +22 -0
- wavix/ten_dlc/campaigns/types/get_campaigns_response.py +211 -0
- wavix/ten_dlc/campaigns/types/list_by_brand_campaigns_response.py +33 -0
- wavix/ten_dlc/campaigns/types/list_by_brand_campaigns_response_pagination.py +41 -0
- wavix/ten_dlc/campaigns/types/list_campaigns_response.py +33 -0
- wavix/ten_dlc/campaigns/types/list_campaigns_response_pagination.py +41 -0
- wavix/ten_dlc/campaigns/types/ten_dlc_campaign_update_request_usecase.py +15 -0
- wavix/ten_dlc/campaigns/types/update_campaigns_response.py +211 -0
- wavix/ten_dlc/client.py +196 -0
- wavix/ten_dlc/raw_client.py +13 -0
- wavix/ten_dlc/subscriptions/__init__.py +37 -0
- wavix/ten_dlc/subscriptions/client.py +271 -0
- wavix/ten_dlc/subscriptions/raw_client.py +398 -0
- wavix/ten_dlc/subscriptions/types/__init__.py +38 -0
- wavix/ten_dlc/subscriptions/types/create_subscriptions_response.py +31 -0
- wavix/ten_dlc/subscriptions/types/delete_subscriptions_response.py +22 -0
- wavix/two_fa/__init__.py +56 -0
- wavix/two_fa/client.py +101 -0
- wavix/two_fa/events/__init__.py +4 -0
- wavix/two_fa/events/client.py +114 -0
- wavix/two_fa/events/raw_client.py +156 -0
- wavix/two_fa/raw_client.py +13 -0
- wavix/two_fa/sessions/__init__.py +4 -0
- wavix/two_fa/sessions/client.py +142 -0
- wavix/two_fa/sessions/raw_client.py +200 -0
- wavix/two_fa/verification/__init__.py +49 -0
- wavix/two_fa/verification/client.py +395 -0
- wavix/two_fa/verification/raw_client.py +664 -0
- wavix/two_fa/verification/types/__init__.py +47 -0
- wavix/two_fa/verification/types/check_verification_response.py +22 -0
- wavix/two_fa/verification/types/create_verification_response.py +51 -0
- wavix/two_fa/verification/types/resend_verification_response.py +38 -0
- wavix/two_fa/verification/types/two_factor_verification_resend_request_channel.py +5 -0
- wavix/types/__init__.py +637 -0
- wavix/types/account_error_response.py +31 -0
- wavix/types/account_limits.py +32 -0
- wavix/types/allowed_i_ps.py +7 -0
- wavix/types/allowed_i_ps_item.py +27 -0
- wavix/types/api_key.py +138 -0
- wavix/types/api_key_calls_scope_permission.py +30 -0
- wavix/types/api_key_calls_scope_permission_allow.py +5 -0
- wavix/types/api_key_scope_permission.py +30 -0
- wavix/types/api_key_scope_permission_allow.py +5 -0
- wavix/types/available_number.py +97 -0
- wavix/types/available_number_list_response.py +26 -0
- wavix/types/bad_request_error_body.py +27 -0
- wavix/types/billing_transaction_list_response.py +31 -0
- wavix/types/brand_status_updated_webhook.py +28 -0
- wavix/types/brand_status_updated_webhook_status.py +7 -0
- wavix/types/call.py +92 -0
- wavix/types/call_control_validation_error_response.py +34 -0
- wavix/types/call_create_response.py +92 -0
- wavix/types/call_create_response_event_type.py +18 -0
- wavix/types/call_direction.py +5 -0
- wavix/types/call_disposition.py +5 -0
- wavix/types/call_event_type.py +18 -0
- wavix/types/call_list_response.py +28 -0
- wavix/types/call_recording_list_response.py +28 -0
- wavix/types/call_response.py +24 -0
- wavix/types/call_status_webhook.py +70 -0
- wavix/types/call_status_webhook_direction.py +5 -0
- wavix/types/call_stream_channel.py +5 -0
- wavix/types/call_stream_response.py +27 -0
- wavix/types/call_stream_type.py +5 -0
- wavix/types/call_webhook.py +37 -0
- wavix/types/call_webhook_event_type.py +5 -0
- wavix/types/call_webhook_list_response.py +10 -0
- wavix/types/call_webhook_list_response_item.py +28 -0
- wavix/types/call_webhook_list_response_item_event_type.py +5 -0
- wavix/types/campaign_status_updated_webhook.py +41 -0
- wavix/types/campaign_status_updated_webhook_status.py +7 -0
- wavix/types/cart_response.py +29 -0
- wavix/types/cdr.py +97 -0
- wavix/types/cdr_list_response.py +26 -0
- wavix/types/cdr_response.py +104 -0
- wavix/types/cdr_transcription_completed_webhook.py +28 -0
- wavix/types/cdr_transcription_completed_webhook_status.py +5 -0
- wavix/types/cdr_transcription_response.py +74 -0
- wavix/types/cdr_transcription_search_response.py +26 -0
- wavix/types/cdr_with_transcription.py +97 -0
- wavix/types/city.py +32 -0
- wavix/types/city_list_response.py +23 -0
- wavix/types/country.py +32 -0
- wavix/types/country_has_no_regions_error_response.py +27 -0
- wavix/types/country_list_response.py +23 -0
- wavix/types/document_type.py +32 -0
- wavix/types/document_type_id.py +7 -0
- wavix/types/file_transcript_response.py +30 -0
- wavix/types/file_transcript_turn.py +46 -0
- wavix/types/file_transcription_completed_webhook.py +32 -0
- wavix/types/file_transcription_response.py +77 -0
- wavix/types/file_transcription_response_language.py +5 -0
- wavix/types/file_transcription_response_status.py +5 -0
- wavix/types/financial_transaction.py +57 -0
- wavix/types/forbidden_error_response.py +27 -0
- wavix/types/inbound_call_destination.py +53 -0
- wavix/types/inbound_call_transport.py +6 -0
- wavix/types/inbound_message.py +46 -0
- wavix/types/invalid_recording.py +31 -0
- wavix/types/invoice.py +42 -0
- wavix/types/invoice_list_response.py +31 -0
- wavix/types/list_brand_evidence_response.py +23 -0
- wavix/types/list_sessions_response_item.py +58 -0
- wavix/types/message.py +103 -0
- wavix/types/message_body.py +29 -0
- wavix/types/message_create_request.py +46 -0
- wavix/types/message_delivery_status.py +8 -0
- wavix/types/message_list_response.py +26 -0
- wavix/types/message_response.py +97 -0
- wavix/types/messages_delivery_report.py +81 -0
- wavix/types/not_found_error_body.py +27 -0
- wavix/types/not_found_error_response.py +27 -0
- wavix/types/number.py +160 -0
- wavix/types/number_destination.py +38 -0
- wavix/types/number_document.py +58 -0
- wavix/types/number_list_response.py +32 -0
- wavix/types/number_status_updated_webhook.py +38 -0
- wavix/types/number_status_updated_webhook_status.py +5 -0
- wavix/types/number_validator_create_bulk_response.py +10 -0
- wavix/types/number_validator_create_bulk_response_request_id.py +26 -0
- wavix/types/on_call_event_payload.py +34 -0
- wavix/types/on_call_event_payload_type.py +5 -0
- wavix/types/opt_out.py +27 -0
- wavix/types/opt_out_item.py +38 -0
- wavix/types/opt_outs_list_response.py +26 -0
- wavix/types/pagination.py +37 -0
- wavix/types/phone_lookup_details.py +32 -0
- wavix/types/phone_number_validation_type.py +5 -0
- wavix/types/phone_validation_batch_response.py +38 -0
- wavix/types/phone_validation_batch_result_response.py +41 -0
- wavix/types/phone_validation_response.py +112 -0
- wavix/types/phone_validation_result_response.py +115 -0
- wavix/types/profile_config_response.py +25 -0
- wavix/types/profile_response.py +79 -0
- wavix/types/profile_response_company_info.py +53 -0
- wavix/types/profile_response_company_info_country.py +31 -0
- wavix/types/profile_response_company_info_industry.py +22 -0
- wavix/types/profile_response_default_destinations_item.py +27 -0
- wavix/types/record_not_found_error_response.py +27 -0
- wavix/types/recording.py +57 -0
- wavix/types/recording_deleted_error_response.py +38 -0
- wavix/types/region.py +31 -0
- wavix/types/region_list_response.py +23 -0
- wavix/types/send_messages_response.py +100 -0
- wavix/types/sender_id.py +48 -0
- wavix/types/sender_id_details.py +44 -0
- wavix/types/sender_id_list_response.py +23 -0
- wavix/types/sender_id_response.py +48 -0
- wavix/types/sender_id_response_type.py +5 -0
- wavix/types/sender_id_type.py +5 -0
- wavix/types/short_link_metrics_item.py +69 -0
- wavix/types/short_link_metrics_response.py +26 -0
- wavix/types/short_link_response.py +22 -0
- wavix/types/sip_trunk_create_request.py +132 -0
- wavix/types/sip_trunk_create_request_allowed_ips_item.py +22 -0
- wavix/types/sip_trunk_create_request_host_request.py +26 -0
- wavix/types/sip_trunk_list_response.py +26 -0
- wavix/types/sip_trunk_response.py +145 -0
- wavix/types/sip_trunk_summary.py +114 -0
- wavix/types/sip_trunk_summary_host_request.py +31 -0
- wavix/types/sub_accounts_list_response.py +26 -0
- wavix/types/sub_accounts_transactions_list_response.py +30 -0
- wavix/types/sub_accounts_transactions_list_response_transactions_item.py +48 -0
- wavix/types/sub_organization_response.py +59 -0
- wavix/types/sub_organization_response_default_destinations.py +31 -0
- wavix/types/sub_organization_response_status.py +5 -0
- wavix/types/submit_file_transcription_response.py +32 -0
- wavix/types/success_response.py +22 -0
- wavix/types/tcr_error_message.py +27 -0
- wavix/types/tcr_feedback.py +23 -0
- wavix/types/tcr_feedback_category.py +47 -0
- wavix/types/ten_dlc_brand.py +143 -0
- wavix/types/ten_dlc_brand_appeal.py +54 -0
- wavix/types/ten_dlc_brand_appeal_create_request.py +36 -0
- wavix/types/ten_dlc_brand_appeal_outcome.py +38 -0
- wavix/types/ten_dlc_brand_appeal_outcome_feedback.py +27 -0
- wavix/types/ten_dlc_brand_appeal_outcome_vetting_status.py +7 -0
- wavix/types/ten_dlc_brand_create_request.py +8 -0
- wavix/types/ten_dlc_brand_create_request_entity_type.py +7 -0
- wavix/types/ten_dlc_brand_create_request_stock_exchange.py +26 -0
- wavix/types/ten_dlc_brand_create_request_stock_exchange_entity_type.py +7 -0
- wavix/types/ten_dlc_brand_create_request_vertical.py +18 -0
- wavix/types/ten_dlc_brand_create_request_zero.py +24 -0
- wavix/types/ten_dlc_brand_create_request_zero_entity_type.py +5 -0
- wavix/types/ten_dlc_brand_entity_type.py +7 -0
- wavix/types/ten_dlc_brand_evidence.py +38 -0
- wavix/types/ten_dlc_brand_identity_verification_status.py +7 -0
- wavix/types/ten_dlc_brand_list_response.py +33 -0
- wavix/types/ten_dlc_brand_list_response_pagination.py +41 -0
- wavix/types/ten_dlc_brand_qualification_result.py +33 -0
- wavix/types/ten_dlc_brand_status.py +7 -0
- wavix/types/ten_dlc_brand_vetting.py +71 -0
- wavix/types/ten_dlc_brand_vetting_appeal.py +78 -0
- wavix/types/ten_dlc_brand_vetting_appeal_appeal_outcome.py +37 -0
- wavix/types/ten_dlc_brand_vetting_appeal_appeal_outcome_feedback.py +26 -0
- wavix/types/ten_dlc_brand_vetting_appeal_outcome.py +33 -0
- wavix/types/ten_dlc_brand_vetting_appeal_outcome_feedback.py +26 -0
- wavix/types/ten_dlc_brand_vetting_appeal_outcome_reason.py +22 -0
- wavix/types/ten_dlc_campaign.py +211 -0
- wavix/types/ten_dlc_campaign_list_response.py +33 -0
- wavix/types/ten_dlc_campaign_list_response_pagination.py +41 -0
- wavix/types/ten_dlc_campaign_nudge_request.py +32 -0
- wavix/types/ten_dlc_campaign_number.py +27 -0
- wavix/types/ten_dlc_campaign_number_list_response.py +33 -0
- wavix/types/ten_dlc_event_subscription.py +31 -0
- wavix/types/ten_dlcmno_metadata.py +101 -0
- wavix/types/transaction_status.py +5 -0
- wavix/types/transaction_type.py +50 -0
- wavix/types/transcript_turn.py +46 -0
- wavix/types/transcription_filter.py +35 -0
- wavix/types/transcription_filter_agent.py +36 -0
- wavix/types/transcription_filter_any.py +36 -0
- wavix/types/transcription_filter_client.py +36 -0
- wavix/types/transcription_language.py +5 -0
- wavix/types/transcription_reference.py +29 -0
- wavix/types/transcription_status.py +5 -0
- wavix/types/tts_language.py +5 -0
- wavix/types/tts_voice_id.py +25 -0
- wavix/types/two_factor_verification_check_response.py +22 -0
- wavix/types/two_factor_verification_event.py +47 -0
- wavix/types/two_factor_verification_resend_response.py +38 -0
- wavix/types/two_factor_verification_response.py +51 -0
- wavix/types/unauthorized_error_response.py +32 -0
- wavix/types/unprocessable_entity_error_body.py +27 -0
- wavix/types/validation_error_response.py +27 -0
- wavix/types/voice_campaign_create_request.py +20 -0
- wavix/types/voice_campaign_response.py +41 -0
- wavix/types/voice_campaigns_create_response.py +20 -0
- wavix/types/voice_campaigns_create_response_voice_campaign.py +43 -0
- wavix/types/voice_campaigns_get_response.py +20 -0
- wavix/types/voice_campaigns_get_response_voice_campaign.py +43 -0
- wavix/types/web_rtc_token.py +43 -0
- wavix/types/web_rtc_token_response.py +44 -0
- wavix/types/web_rtc_tokens_list_response.py +30 -0
- wavix/version.py +3 -0
- wavix/voice_campaigns/__init__.py +4 -0
- wavix/voice_campaigns/client.py +197 -0
- wavix/voice_campaigns/raw_client.py +332 -0
- wavix/webrtc/__init__.py +34 -0
- wavix/webrtc/client.py +63 -0
- wavix/webrtc/raw_client.py +13 -0
- wavix/webrtc/tokens/__init__.py +4 -0
- wavix/webrtc/tokens/client.py +432 -0
- wavix/webrtc/tokens/raw_client.py +869 -0
- wavix_python_sdk-1.0.0.dist-info/LICENSE +21 -0
- wavix_python_sdk-1.0.0.dist-info/METADATA +339 -0
- wavix_python_sdk-1.0.0.dist-info/RECORD +497 -0
- wavix_python_sdk-1.0.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
from json.decoder import JSONDecodeError
|
|
5
|
+
|
|
6
|
+
from ...core.api_error import ApiError
|
|
7
|
+
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
8
|
+
from ...core.http_response import AsyncHttpResponse, HttpResponse
|
|
9
|
+
from ...core.jsonable_encoder import encode_path_param
|
|
10
|
+
from ...core.parse_error import ParsingError
|
|
11
|
+
from ...core.pydantic_utilities import parse_obj_as
|
|
12
|
+
from ...core.request_options import RequestOptions
|
|
13
|
+
from ...errors.bad_request_error import BadRequestError
|
|
14
|
+
from ...errors.forbidden_error import ForbiddenError
|
|
15
|
+
from ...errors.not_found_error import NotFoundError
|
|
16
|
+
from .types.list_numbers_response import ListNumbersResponse
|
|
17
|
+
from pydantic import ValidationError
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class RawNumbersClient:
|
|
21
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
22
|
+
self._client_wrapper = client_wrapper
|
|
23
|
+
|
|
24
|
+
def list(
|
|
25
|
+
self,
|
|
26
|
+
country_id: int,
|
|
27
|
+
city_id: int,
|
|
28
|
+
*,
|
|
29
|
+
text_enabled_only: typing.Optional[bool] = None,
|
|
30
|
+
page: typing.Optional[int] = None,
|
|
31
|
+
per_page: typing.Optional[int] = None,
|
|
32
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
33
|
+
) -> HttpResponse[ListNumbersResponse]:
|
|
34
|
+
"""
|
|
35
|
+
Returns a paginated list of phone numbers available for purchase in the specified city.
|
|
36
|
+
|
|
37
|
+
Parameters
|
|
38
|
+
----------
|
|
39
|
+
country_id : int
|
|
40
|
+
The unique ID of the country.
|
|
41
|
+
|
|
42
|
+
city_id : int
|
|
43
|
+
The unique ID of the city.
|
|
44
|
+
|
|
45
|
+
text_enabled_only : typing.Optional[bool]
|
|
46
|
+
When `true`, returns only text-enabled phone numbers.
|
|
47
|
+
|
|
48
|
+
page : typing.Optional[int]
|
|
49
|
+
Page number to retrieve. Default `1`.
|
|
50
|
+
|
|
51
|
+
per_page : typing.Optional[int]
|
|
52
|
+
Number of records to return per page. Default `25`.
|
|
53
|
+
|
|
54
|
+
request_options : typing.Optional[RequestOptions]
|
|
55
|
+
Request-specific configuration.
|
|
56
|
+
|
|
57
|
+
Returns
|
|
58
|
+
-------
|
|
59
|
+
HttpResponse[ListNumbersResponse]
|
|
60
|
+
Returns a paginated list of available phone numbers.
|
|
61
|
+
"""
|
|
62
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
63
|
+
f"v1/buy/countries/{encode_path_param(country_id)}/cities/{encode_path_param(city_id)}/dids",
|
|
64
|
+
method="GET",
|
|
65
|
+
params={
|
|
66
|
+
"text_enabled_only": text_enabled_only,
|
|
67
|
+
"page": page,
|
|
68
|
+
"per_page": per_page,
|
|
69
|
+
},
|
|
70
|
+
request_options=request_options,
|
|
71
|
+
)
|
|
72
|
+
try:
|
|
73
|
+
if 200 <= _response.status_code < 300:
|
|
74
|
+
_data = typing.cast(
|
|
75
|
+
ListNumbersResponse,
|
|
76
|
+
parse_obj_as(
|
|
77
|
+
type_=ListNumbersResponse, # type: ignore
|
|
78
|
+
object_=_response.json(),
|
|
79
|
+
),
|
|
80
|
+
)
|
|
81
|
+
return HttpResponse(response=_response, data=_data)
|
|
82
|
+
if _response.status_code == 400:
|
|
83
|
+
raise BadRequestError(
|
|
84
|
+
headers=dict(_response.headers),
|
|
85
|
+
body=typing.cast(
|
|
86
|
+
typing.Any,
|
|
87
|
+
parse_obj_as(
|
|
88
|
+
type_=typing.Any, # type: ignore
|
|
89
|
+
object_=_response.json(),
|
|
90
|
+
),
|
|
91
|
+
),
|
|
92
|
+
)
|
|
93
|
+
if _response.status_code == 403:
|
|
94
|
+
raise ForbiddenError(
|
|
95
|
+
headers=dict(_response.headers),
|
|
96
|
+
body=typing.cast(
|
|
97
|
+
typing.Any,
|
|
98
|
+
parse_obj_as(
|
|
99
|
+
type_=typing.Any, # type: ignore
|
|
100
|
+
object_=_response.json(),
|
|
101
|
+
),
|
|
102
|
+
),
|
|
103
|
+
)
|
|
104
|
+
if _response.status_code == 404:
|
|
105
|
+
raise NotFoundError(
|
|
106
|
+
headers=dict(_response.headers),
|
|
107
|
+
body=typing.cast(
|
|
108
|
+
typing.Any,
|
|
109
|
+
parse_obj_as(
|
|
110
|
+
type_=typing.Any, # type: ignore
|
|
111
|
+
object_=_response.json(),
|
|
112
|
+
),
|
|
113
|
+
),
|
|
114
|
+
)
|
|
115
|
+
_response_json = _response.json()
|
|
116
|
+
except JSONDecodeError:
|
|
117
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
118
|
+
except ValidationError as e:
|
|
119
|
+
raise ParsingError(
|
|
120
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
121
|
+
)
|
|
122
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
class AsyncRawNumbersClient:
|
|
126
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
127
|
+
self._client_wrapper = client_wrapper
|
|
128
|
+
|
|
129
|
+
async def list(
|
|
130
|
+
self,
|
|
131
|
+
country_id: int,
|
|
132
|
+
city_id: int,
|
|
133
|
+
*,
|
|
134
|
+
text_enabled_only: typing.Optional[bool] = None,
|
|
135
|
+
page: typing.Optional[int] = None,
|
|
136
|
+
per_page: typing.Optional[int] = None,
|
|
137
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
138
|
+
) -> AsyncHttpResponse[ListNumbersResponse]:
|
|
139
|
+
"""
|
|
140
|
+
Returns a paginated list of phone numbers available for purchase in the specified city.
|
|
141
|
+
|
|
142
|
+
Parameters
|
|
143
|
+
----------
|
|
144
|
+
country_id : int
|
|
145
|
+
The unique ID of the country.
|
|
146
|
+
|
|
147
|
+
city_id : int
|
|
148
|
+
The unique ID of the city.
|
|
149
|
+
|
|
150
|
+
text_enabled_only : typing.Optional[bool]
|
|
151
|
+
When `true`, returns only text-enabled phone numbers.
|
|
152
|
+
|
|
153
|
+
page : typing.Optional[int]
|
|
154
|
+
Page number to retrieve. Default `1`.
|
|
155
|
+
|
|
156
|
+
per_page : typing.Optional[int]
|
|
157
|
+
Number of records to return per page. Default `25`.
|
|
158
|
+
|
|
159
|
+
request_options : typing.Optional[RequestOptions]
|
|
160
|
+
Request-specific configuration.
|
|
161
|
+
|
|
162
|
+
Returns
|
|
163
|
+
-------
|
|
164
|
+
AsyncHttpResponse[ListNumbersResponse]
|
|
165
|
+
Returns a paginated list of available phone numbers.
|
|
166
|
+
"""
|
|
167
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
168
|
+
f"v1/buy/countries/{encode_path_param(country_id)}/cities/{encode_path_param(city_id)}/dids",
|
|
169
|
+
method="GET",
|
|
170
|
+
params={
|
|
171
|
+
"text_enabled_only": text_enabled_only,
|
|
172
|
+
"page": page,
|
|
173
|
+
"per_page": per_page,
|
|
174
|
+
},
|
|
175
|
+
request_options=request_options,
|
|
176
|
+
)
|
|
177
|
+
try:
|
|
178
|
+
if 200 <= _response.status_code < 300:
|
|
179
|
+
_data = typing.cast(
|
|
180
|
+
ListNumbersResponse,
|
|
181
|
+
parse_obj_as(
|
|
182
|
+
type_=ListNumbersResponse, # type: ignore
|
|
183
|
+
object_=_response.json(),
|
|
184
|
+
),
|
|
185
|
+
)
|
|
186
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
187
|
+
if _response.status_code == 400:
|
|
188
|
+
raise BadRequestError(
|
|
189
|
+
headers=dict(_response.headers),
|
|
190
|
+
body=typing.cast(
|
|
191
|
+
typing.Any,
|
|
192
|
+
parse_obj_as(
|
|
193
|
+
type_=typing.Any, # type: ignore
|
|
194
|
+
object_=_response.json(),
|
|
195
|
+
),
|
|
196
|
+
),
|
|
197
|
+
)
|
|
198
|
+
if _response.status_code == 403:
|
|
199
|
+
raise ForbiddenError(
|
|
200
|
+
headers=dict(_response.headers),
|
|
201
|
+
body=typing.cast(
|
|
202
|
+
typing.Any,
|
|
203
|
+
parse_obj_as(
|
|
204
|
+
type_=typing.Any, # type: ignore
|
|
205
|
+
object_=_response.json(),
|
|
206
|
+
),
|
|
207
|
+
),
|
|
208
|
+
)
|
|
209
|
+
if _response.status_code == 404:
|
|
210
|
+
raise NotFoundError(
|
|
211
|
+
headers=dict(_response.headers),
|
|
212
|
+
body=typing.cast(
|
|
213
|
+
typing.Any,
|
|
214
|
+
parse_obj_as(
|
|
215
|
+
type_=typing.Any, # type: ignore
|
|
216
|
+
object_=_response.json(),
|
|
217
|
+
),
|
|
218
|
+
),
|
|
219
|
+
)
|
|
220
|
+
_response_json = _response.json()
|
|
221
|
+
except JSONDecodeError:
|
|
222
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
223
|
+
except ValidationError as e:
|
|
224
|
+
raise ParsingError(
|
|
225
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
226
|
+
)
|
|
227
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
# isort: skip_file
|
|
4
|
+
|
|
5
|
+
import typing
|
|
6
|
+
from importlib import import_module
|
|
7
|
+
|
|
8
|
+
if typing.TYPE_CHECKING:
|
|
9
|
+
from .list_numbers_response import ListNumbersResponse
|
|
10
|
+
_dynamic_imports: typing.Dict[str, str] = {"ListNumbersResponse": ".list_numbers_response"}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def __getattr__(attr_name: str) -> typing.Any:
|
|
14
|
+
module_name = _dynamic_imports.get(attr_name)
|
|
15
|
+
if module_name is None:
|
|
16
|
+
raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
|
|
17
|
+
try:
|
|
18
|
+
module = import_module(module_name, __package__)
|
|
19
|
+
if module_name == f".{attr_name}":
|
|
20
|
+
return module
|
|
21
|
+
else:
|
|
22
|
+
return getattr(module, attr_name)
|
|
23
|
+
except ImportError as e:
|
|
24
|
+
raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
|
|
25
|
+
except AttributeError as e:
|
|
26
|
+
raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def __dir__():
|
|
30
|
+
lazy_attrs = list(_dynamic_imports.keys())
|
|
31
|
+
return sorted(lazy_attrs)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
__all__ = ["ListNumbersResponse"]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from ....types.available_number import AvailableNumber
|
|
8
|
+
from ....types.pagination import Pagination
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ListNumbersResponse(UniversalBaseModel):
|
|
12
|
+
dids: typing.List[AvailableNumber] = pydantic.Field()
|
|
13
|
+
"""
|
|
14
|
+
Phone numbers available for purchase that match the search criteria.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
pagination: Pagination
|
|
18
|
+
|
|
19
|
+
if IS_PYDANTIC_V2:
|
|
20
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
21
|
+
else:
|
|
22
|
+
|
|
23
|
+
class Config:
|
|
24
|
+
frozen = True
|
|
25
|
+
smart_union = True
|
|
26
|
+
extra = pydantic.Extra.allow
|
wavix/buy/raw_client.py
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class RawBuyClient:
|
|
7
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
8
|
+
self._client_wrapper = client_wrapper
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AsyncRawBuyClient:
|
|
12
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
13
|
+
self._client_wrapper = client_wrapper
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
# isort: skip_file
|
|
4
|
+
|
|
5
|
+
import typing
|
|
6
|
+
from importlib import import_module
|
|
7
|
+
|
|
8
|
+
if typing.TYPE_CHECKING:
|
|
9
|
+
from .types import ListRegionCitiesResponse
|
|
10
|
+
_dynamic_imports: typing.Dict[str, str] = {"ListRegionCitiesResponse": ".types"}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def __getattr__(attr_name: str) -> typing.Any:
|
|
14
|
+
module_name = _dynamic_imports.get(attr_name)
|
|
15
|
+
if module_name is None:
|
|
16
|
+
raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
|
|
17
|
+
try:
|
|
18
|
+
module = import_module(module_name, __package__)
|
|
19
|
+
if module_name == f".{attr_name}":
|
|
20
|
+
return module
|
|
21
|
+
else:
|
|
22
|
+
return getattr(module, attr_name)
|
|
23
|
+
except ImportError as e:
|
|
24
|
+
raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
|
|
25
|
+
except AttributeError as e:
|
|
26
|
+
raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def __dir__():
|
|
30
|
+
lazy_attrs = list(_dynamic_imports.keys())
|
|
31
|
+
return sorted(lazy_attrs)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
__all__ = ["ListRegionCitiesResponse"]
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
6
|
+
from ...core.request_options import RequestOptions
|
|
7
|
+
from .raw_client import AsyncRawRegionCitiesClient, RawRegionCitiesClient
|
|
8
|
+
from .types.list_region_cities_response import ListRegionCitiesResponse
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class RegionCitiesClient:
|
|
12
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
13
|
+
self._raw_client = RawRegionCitiesClient(client_wrapper=client_wrapper)
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def with_raw_response(self) -> RawRegionCitiesClient:
|
|
17
|
+
"""
|
|
18
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
19
|
+
|
|
20
|
+
Returns
|
|
21
|
+
-------
|
|
22
|
+
RawRegionCitiesClient
|
|
23
|
+
"""
|
|
24
|
+
return self._raw_client
|
|
25
|
+
|
|
26
|
+
def list(
|
|
27
|
+
self,
|
|
28
|
+
country_id: int,
|
|
29
|
+
region_id: int,
|
|
30
|
+
*,
|
|
31
|
+
text_enabled_only: typing.Optional[bool] = None,
|
|
32
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
33
|
+
) -> ListRegionCitiesResponse:
|
|
34
|
+
"""
|
|
35
|
+
Returns a list of cities in the specified region for countries where `has_provinces_or_states` is `true`.
|
|
36
|
+
|
|
37
|
+
Parameters
|
|
38
|
+
----------
|
|
39
|
+
country_id : int
|
|
40
|
+
The unique ID of the country.
|
|
41
|
+
|
|
42
|
+
region_id : int
|
|
43
|
+
The unique ID of the region.
|
|
44
|
+
|
|
45
|
+
text_enabled_only : typing.Optional[bool]
|
|
46
|
+
When `true`, returns only cities that offer text-enabled numbers.
|
|
47
|
+
|
|
48
|
+
request_options : typing.Optional[RequestOptions]
|
|
49
|
+
Request-specific configuration.
|
|
50
|
+
|
|
51
|
+
Returns
|
|
52
|
+
-------
|
|
53
|
+
ListRegionCitiesResponse
|
|
54
|
+
Returns the list of cities.
|
|
55
|
+
|
|
56
|
+
Examples
|
|
57
|
+
--------
|
|
58
|
+
from wavix import Wavix
|
|
59
|
+
|
|
60
|
+
client = Wavix(
|
|
61
|
+
token="YOUR_TOKEN",
|
|
62
|
+
)
|
|
63
|
+
client.buy.region_cities.list(
|
|
64
|
+
country_id=1891,
|
|
65
|
+
region_id=821,
|
|
66
|
+
)
|
|
67
|
+
"""
|
|
68
|
+
_response = self._raw_client.list(
|
|
69
|
+
country_id, region_id, text_enabled_only=text_enabled_only, request_options=request_options
|
|
70
|
+
)
|
|
71
|
+
return _response.data
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class AsyncRegionCitiesClient:
|
|
75
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
76
|
+
self._raw_client = AsyncRawRegionCitiesClient(client_wrapper=client_wrapper)
|
|
77
|
+
|
|
78
|
+
@property
|
|
79
|
+
def with_raw_response(self) -> AsyncRawRegionCitiesClient:
|
|
80
|
+
"""
|
|
81
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
82
|
+
|
|
83
|
+
Returns
|
|
84
|
+
-------
|
|
85
|
+
AsyncRawRegionCitiesClient
|
|
86
|
+
"""
|
|
87
|
+
return self._raw_client
|
|
88
|
+
|
|
89
|
+
async def list(
|
|
90
|
+
self,
|
|
91
|
+
country_id: int,
|
|
92
|
+
region_id: int,
|
|
93
|
+
*,
|
|
94
|
+
text_enabled_only: typing.Optional[bool] = None,
|
|
95
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
96
|
+
) -> ListRegionCitiesResponse:
|
|
97
|
+
"""
|
|
98
|
+
Returns a list of cities in the specified region for countries where `has_provinces_or_states` is `true`.
|
|
99
|
+
|
|
100
|
+
Parameters
|
|
101
|
+
----------
|
|
102
|
+
country_id : int
|
|
103
|
+
The unique ID of the country.
|
|
104
|
+
|
|
105
|
+
region_id : int
|
|
106
|
+
The unique ID of the region.
|
|
107
|
+
|
|
108
|
+
text_enabled_only : typing.Optional[bool]
|
|
109
|
+
When `true`, returns only cities that offer text-enabled numbers.
|
|
110
|
+
|
|
111
|
+
request_options : typing.Optional[RequestOptions]
|
|
112
|
+
Request-specific configuration.
|
|
113
|
+
|
|
114
|
+
Returns
|
|
115
|
+
-------
|
|
116
|
+
ListRegionCitiesResponse
|
|
117
|
+
Returns the list of cities.
|
|
118
|
+
|
|
119
|
+
Examples
|
|
120
|
+
--------
|
|
121
|
+
import asyncio
|
|
122
|
+
|
|
123
|
+
from wavix import AsyncWavix
|
|
124
|
+
|
|
125
|
+
client = AsyncWavix(
|
|
126
|
+
token="YOUR_TOKEN",
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
async def main() -> None:
|
|
131
|
+
await client.buy.region_cities.list(
|
|
132
|
+
country_id=1891,
|
|
133
|
+
region_id=821,
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
asyncio.run(main())
|
|
138
|
+
"""
|
|
139
|
+
_response = await self._raw_client.list(
|
|
140
|
+
country_id, region_id, text_enabled_only=text_enabled_only, request_options=request_options
|
|
141
|
+
)
|
|
142
|
+
return _response.data
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
from json.decoder import JSONDecodeError
|
|
5
|
+
|
|
6
|
+
from ...core.api_error import ApiError
|
|
7
|
+
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
8
|
+
from ...core.http_response import AsyncHttpResponse, HttpResponse
|
|
9
|
+
from ...core.jsonable_encoder import encode_path_param
|
|
10
|
+
from ...core.parse_error import ParsingError
|
|
11
|
+
from ...core.pydantic_utilities import parse_obj_as
|
|
12
|
+
from ...core.request_options import RequestOptions
|
|
13
|
+
from ...errors.bad_request_error import BadRequestError
|
|
14
|
+
from ...errors.forbidden_error import ForbiddenError
|
|
15
|
+
from ...errors.not_found_error import NotFoundError
|
|
16
|
+
from .types.list_region_cities_response import ListRegionCitiesResponse
|
|
17
|
+
from pydantic import ValidationError
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class RawRegionCitiesClient:
|
|
21
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
22
|
+
self._client_wrapper = client_wrapper
|
|
23
|
+
|
|
24
|
+
def list(
|
|
25
|
+
self,
|
|
26
|
+
country_id: int,
|
|
27
|
+
region_id: int,
|
|
28
|
+
*,
|
|
29
|
+
text_enabled_only: typing.Optional[bool] = None,
|
|
30
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
31
|
+
) -> HttpResponse[ListRegionCitiesResponse]:
|
|
32
|
+
"""
|
|
33
|
+
Returns a list of cities in the specified region for countries where `has_provinces_or_states` is `true`.
|
|
34
|
+
|
|
35
|
+
Parameters
|
|
36
|
+
----------
|
|
37
|
+
country_id : int
|
|
38
|
+
The unique ID of the country.
|
|
39
|
+
|
|
40
|
+
region_id : int
|
|
41
|
+
The unique ID of the region.
|
|
42
|
+
|
|
43
|
+
text_enabled_only : typing.Optional[bool]
|
|
44
|
+
When `true`, returns only cities that offer text-enabled numbers.
|
|
45
|
+
|
|
46
|
+
request_options : typing.Optional[RequestOptions]
|
|
47
|
+
Request-specific configuration.
|
|
48
|
+
|
|
49
|
+
Returns
|
|
50
|
+
-------
|
|
51
|
+
HttpResponse[ListRegionCitiesResponse]
|
|
52
|
+
Returns the list of cities.
|
|
53
|
+
"""
|
|
54
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
55
|
+
f"v1/buy/countries/{encode_path_param(country_id)}/regions/{encode_path_param(region_id)}/cities",
|
|
56
|
+
method="GET",
|
|
57
|
+
params={
|
|
58
|
+
"text_enabled_only": text_enabled_only,
|
|
59
|
+
},
|
|
60
|
+
request_options=request_options,
|
|
61
|
+
)
|
|
62
|
+
try:
|
|
63
|
+
if 200 <= _response.status_code < 300:
|
|
64
|
+
_data = typing.cast(
|
|
65
|
+
ListRegionCitiesResponse,
|
|
66
|
+
parse_obj_as(
|
|
67
|
+
type_=ListRegionCitiesResponse, # type: ignore
|
|
68
|
+
object_=_response.json(),
|
|
69
|
+
),
|
|
70
|
+
)
|
|
71
|
+
return HttpResponse(response=_response, data=_data)
|
|
72
|
+
if _response.status_code == 400:
|
|
73
|
+
raise BadRequestError(
|
|
74
|
+
headers=dict(_response.headers),
|
|
75
|
+
body=typing.cast(
|
|
76
|
+
typing.Any,
|
|
77
|
+
parse_obj_as(
|
|
78
|
+
type_=typing.Any, # type: ignore
|
|
79
|
+
object_=_response.json(),
|
|
80
|
+
),
|
|
81
|
+
),
|
|
82
|
+
)
|
|
83
|
+
if _response.status_code == 403:
|
|
84
|
+
raise ForbiddenError(
|
|
85
|
+
headers=dict(_response.headers),
|
|
86
|
+
body=typing.cast(
|
|
87
|
+
typing.Any,
|
|
88
|
+
parse_obj_as(
|
|
89
|
+
type_=typing.Any, # type: ignore
|
|
90
|
+
object_=_response.json(),
|
|
91
|
+
),
|
|
92
|
+
),
|
|
93
|
+
)
|
|
94
|
+
if _response.status_code == 404:
|
|
95
|
+
raise NotFoundError(
|
|
96
|
+
headers=dict(_response.headers),
|
|
97
|
+
body=typing.cast(
|
|
98
|
+
typing.Any,
|
|
99
|
+
parse_obj_as(
|
|
100
|
+
type_=typing.Any, # type: ignore
|
|
101
|
+
object_=_response.json(),
|
|
102
|
+
),
|
|
103
|
+
),
|
|
104
|
+
)
|
|
105
|
+
_response_json = _response.json()
|
|
106
|
+
except JSONDecodeError:
|
|
107
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
108
|
+
except ValidationError as e:
|
|
109
|
+
raise ParsingError(
|
|
110
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
111
|
+
)
|
|
112
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
class AsyncRawRegionCitiesClient:
|
|
116
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
117
|
+
self._client_wrapper = client_wrapper
|
|
118
|
+
|
|
119
|
+
async def list(
|
|
120
|
+
self,
|
|
121
|
+
country_id: int,
|
|
122
|
+
region_id: int,
|
|
123
|
+
*,
|
|
124
|
+
text_enabled_only: typing.Optional[bool] = None,
|
|
125
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
126
|
+
) -> AsyncHttpResponse[ListRegionCitiesResponse]:
|
|
127
|
+
"""
|
|
128
|
+
Returns a list of cities in the specified region for countries where `has_provinces_or_states` is `true`.
|
|
129
|
+
|
|
130
|
+
Parameters
|
|
131
|
+
----------
|
|
132
|
+
country_id : int
|
|
133
|
+
The unique ID of the country.
|
|
134
|
+
|
|
135
|
+
region_id : int
|
|
136
|
+
The unique ID of the region.
|
|
137
|
+
|
|
138
|
+
text_enabled_only : typing.Optional[bool]
|
|
139
|
+
When `true`, returns only cities that offer text-enabled numbers.
|
|
140
|
+
|
|
141
|
+
request_options : typing.Optional[RequestOptions]
|
|
142
|
+
Request-specific configuration.
|
|
143
|
+
|
|
144
|
+
Returns
|
|
145
|
+
-------
|
|
146
|
+
AsyncHttpResponse[ListRegionCitiesResponse]
|
|
147
|
+
Returns the list of cities.
|
|
148
|
+
"""
|
|
149
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
150
|
+
f"v1/buy/countries/{encode_path_param(country_id)}/regions/{encode_path_param(region_id)}/cities",
|
|
151
|
+
method="GET",
|
|
152
|
+
params={
|
|
153
|
+
"text_enabled_only": text_enabled_only,
|
|
154
|
+
},
|
|
155
|
+
request_options=request_options,
|
|
156
|
+
)
|
|
157
|
+
try:
|
|
158
|
+
if 200 <= _response.status_code < 300:
|
|
159
|
+
_data = typing.cast(
|
|
160
|
+
ListRegionCitiesResponse,
|
|
161
|
+
parse_obj_as(
|
|
162
|
+
type_=ListRegionCitiesResponse, # type: ignore
|
|
163
|
+
object_=_response.json(),
|
|
164
|
+
),
|
|
165
|
+
)
|
|
166
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
167
|
+
if _response.status_code == 400:
|
|
168
|
+
raise BadRequestError(
|
|
169
|
+
headers=dict(_response.headers),
|
|
170
|
+
body=typing.cast(
|
|
171
|
+
typing.Any,
|
|
172
|
+
parse_obj_as(
|
|
173
|
+
type_=typing.Any, # type: ignore
|
|
174
|
+
object_=_response.json(),
|
|
175
|
+
),
|
|
176
|
+
),
|
|
177
|
+
)
|
|
178
|
+
if _response.status_code == 403:
|
|
179
|
+
raise ForbiddenError(
|
|
180
|
+
headers=dict(_response.headers),
|
|
181
|
+
body=typing.cast(
|
|
182
|
+
typing.Any,
|
|
183
|
+
parse_obj_as(
|
|
184
|
+
type_=typing.Any, # type: ignore
|
|
185
|
+
object_=_response.json(),
|
|
186
|
+
),
|
|
187
|
+
),
|
|
188
|
+
)
|
|
189
|
+
if _response.status_code == 404:
|
|
190
|
+
raise NotFoundError(
|
|
191
|
+
headers=dict(_response.headers),
|
|
192
|
+
body=typing.cast(
|
|
193
|
+
typing.Any,
|
|
194
|
+
parse_obj_as(
|
|
195
|
+
type_=typing.Any, # type: ignore
|
|
196
|
+
object_=_response.json(),
|
|
197
|
+
),
|
|
198
|
+
),
|
|
199
|
+
)
|
|
200
|
+
_response_json = _response.json()
|
|
201
|
+
except JSONDecodeError:
|
|
202
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
203
|
+
except ValidationError as e:
|
|
204
|
+
raise ParsingError(
|
|
205
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
206
|
+
)
|
|
207
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|