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,38 @@
|
|
|
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 .bulk_update_numbers_response import BulkUpdateNumbersResponse
|
|
10
|
+
from .delete_numbers_response import DeleteNumbersResponse
|
|
11
|
+
_dynamic_imports: typing.Dict[str, str] = {
|
|
12
|
+
"BulkUpdateNumbersResponse": ".bulk_update_numbers_response",
|
|
13
|
+
"DeleteNumbersResponse": ".delete_numbers_response",
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def __getattr__(attr_name: str) -> typing.Any:
|
|
18
|
+
module_name = _dynamic_imports.get(attr_name)
|
|
19
|
+
if module_name is None:
|
|
20
|
+
raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
|
|
21
|
+
try:
|
|
22
|
+
module = import_module(module_name, __package__)
|
|
23
|
+
if module_name == f".{attr_name}":
|
|
24
|
+
return module
|
|
25
|
+
else:
|
|
26
|
+
return getattr(module, attr_name)
|
|
27
|
+
except ImportError as e:
|
|
28
|
+
raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
|
|
29
|
+
except AttributeError as e:
|
|
30
|
+
raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def __dir__():
|
|
34
|
+
lazy_attrs = list(_dynamic_imports.keys())
|
|
35
|
+
return sorted(lazy_attrs)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
__all__ = ["BulkUpdateNumbersResponse", "DeleteNumbersResponse"]
|
|
@@ -0,0 +1,23 @@
|
|
|
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.number import Number
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class BulkUpdateNumbersResponse(UniversalBaseModel):
|
|
11
|
+
items: typing.Optional[typing.List[Number]] = pydantic.Field(default=None)
|
|
12
|
+
"""
|
|
13
|
+
The updated phone numbers.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
if IS_PYDANTIC_V2:
|
|
17
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
18
|
+
else:
|
|
19
|
+
|
|
20
|
+
class Config:
|
|
21
|
+
frozen = True
|
|
22
|
+
smart_union = True
|
|
23
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
|
|
8
|
+
|
|
9
|
+
class DeleteNumbersResponse(UniversalBaseModel):
|
|
10
|
+
success: bool = pydantic.Field()
|
|
11
|
+
"""
|
|
12
|
+
Indicates whether the request was successful.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
if IS_PYDANTIC_V2:
|
|
16
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
17
|
+
else:
|
|
18
|
+
|
|
19
|
+
class Config:
|
|
20
|
+
frozen = True
|
|
21
|
+
smart_union = True
|
|
22
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,41 @@
|
|
|
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 ProfileUpdateRequestCompanyInfo, ProfileUpdateRequestCompanyInfoIndustry
|
|
10
|
+
from . import config
|
|
11
|
+
from .config import GetConfigResponse
|
|
12
|
+
_dynamic_imports: typing.Dict[str, str] = {
|
|
13
|
+
"GetConfigResponse": ".config",
|
|
14
|
+
"ProfileUpdateRequestCompanyInfo": ".types",
|
|
15
|
+
"ProfileUpdateRequestCompanyInfoIndustry": ".types",
|
|
16
|
+
"config": ".config",
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def __getattr__(attr_name: str) -> typing.Any:
|
|
21
|
+
module_name = _dynamic_imports.get(attr_name)
|
|
22
|
+
if module_name is None:
|
|
23
|
+
raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
|
|
24
|
+
try:
|
|
25
|
+
module = import_module(module_name, __package__)
|
|
26
|
+
if module_name == f".{attr_name}":
|
|
27
|
+
return module
|
|
28
|
+
else:
|
|
29
|
+
return getattr(module, attr_name)
|
|
30
|
+
except ImportError as e:
|
|
31
|
+
raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
|
|
32
|
+
except AttributeError as e:
|
|
33
|
+
raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def __dir__():
|
|
37
|
+
lazy_attrs = list(_dynamic_imports.keys())
|
|
38
|
+
return sorted(lazy_attrs)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
__all__ = ["GetConfigResponse", "ProfileUpdateRequestCompanyInfo", "ProfileUpdateRequestCompanyInfoIndustry", "config"]
|
wavix/profile/client.py
ADDED
|
@@ -0,0 +1,308 @@
|
|
|
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.profile_response import ProfileResponse
|
|
10
|
+
from .raw_client import AsyncRawProfileClient, RawProfileClient
|
|
11
|
+
from .types.profile_update_request_company_info import ProfileUpdateRequestCompanyInfo
|
|
12
|
+
|
|
13
|
+
if typing.TYPE_CHECKING:
|
|
14
|
+
from .config.client import AsyncConfigClient, ConfigClient
|
|
15
|
+
# this is used as the default value for optional parameters
|
|
16
|
+
OMIT = typing.cast(typing.Any, ...)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class ProfileClient:
|
|
20
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
21
|
+
self._raw_client = RawProfileClient(client_wrapper=client_wrapper)
|
|
22
|
+
self._client_wrapper = client_wrapper
|
|
23
|
+
self._config: typing.Optional[ConfigClient] = None
|
|
24
|
+
|
|
25
|
+
@property
|
|
26
|
+
def with_raw_response(self) -> RawProfileClient:
|
|
27
|
+
"""
|
|
28
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
29
|
+
|
|
30
|
+
Returns
|
|
31
|
+
-------
|
|
32
|
+
RawProfileClient
|
|
33
|
+
"""
|
|
34
|
+
return self._raw_client
|
|
35
|
+
|
|
36
|
+
def get(self, *, request_options: typing.Optional[RequestOptions] = None) -> ProfileResponse:
|
|
37
|
+
"""
|
|
38
|
+
Returns the profile and billing details of the authenticated account.
|
|
39
|
+
|
|
40
|
+
Parameters
|
|
41
|
+
----------
|
|
42
|
+
request_options : typing.Optional[RequestOptions]
|
|
43
|
+
Request-specific configuration.
|
|
44
|
+
|
|
45
|
+
Returns
|
|
46
|
+
-------
|
|
47
|
+
ProfileResponse
|
|
48
|
+
Returns the profile.
|
|
49
|
+
|
|
50
|
+
Examples
|
|
51
|
+
--------
|
|
52
|
+
from wavix import Wavix
|
|
53
|
+
|
|
54
|
+
client = Wavix(
|
|
55
|
+
token="YOUR_TOKEN",
|
|
56
|
+
)
|
|
57
|
+
client.profile.get()
|
|
58
|
+
"""
|
|
59
|
+
_response = self._raw_client.get(request_options=request_options)
|
|
60
|
+
return _response.data
|
|
61
|
+
|
|
62
|
+
def update(
|
|
63
|
+
self,
|
|
64
|
+
*,
|
|
65
|
+
additional_info: typing.Optional[str] = OMIT,
|
|
66
|
+
contacts: typing.Optional[str] = OMIT,
|
|
67
|
+
default_short_link_endpoint: typing.Optional[str] = OMIT,
|
|
68
|
+
first_name: typing.Optional[str] = OMIT,
|
|
69
|
+
last_name: typing.Optional[str] = OMIT,
|
|
70
|
+
phone: typing.Optional[str] = OMIT,
|
|
71
|
+
sms_relay_url: typing.Optional[str] = OMIT,
|
|
72
|
+
dlr_relay_url: typing.Optional[str] = OMIT,
|
|
73
|
+
time_zone: typing.Optional[str] = OMIT,
|
|
74
|
+
job_title: typing.Optional[str] = OMIT,
|
|
75
|
+
company_info: typing.Optional[ProfileUpdateRequestCompanyInfo] = OMIT,
|
|
76
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
77
|
+
) -> ProfileResponse:
|
|
78
|
+
"""
|
|
79
|
+
Updates the profile and billing details of the authenticated account.
|
|
80
|
+
|
|
81
|
+
Parameters
|
|
82
|
+
----------
|
|
83
|
+
additional_info : typing.Optional[str]
|
|
84
|
+
Additional information associated with the account.
|
|
85
|
+
|
|
86
|
+
contacts : typing.Optional[str]
|
|
87
|
+
Email associated with the account.
|
|
88
|
+
|
|
89
|
+
default_short_link_endpoint : typing.Optional[str]
|
|
90
|
+
Default short link endpoint.
|
|
91
|
+
|
|
92
|
+
first_name : typing.Optional[str]
|
|
93
|
+
Account owner's first name.
|
|
94
|
+
|
|
95
|
+
last_name : typing.Optional[str]
|
|
96
|
+
Account owner's last name.
|
|
97
|
+
|
|
98
|
+
phone : typing.Optional[str]
|
|
99
|
+
Account owner's phone number
|
|
100
|
+
|
|
101
|
+
sms_relay_url : typing.Optional[str]
|
|
102
|
+
Callback URL to forward inbound SMS to.
|
|
103
|
+
|
|
104
|
+
dlr_relay_url : typing.Optional[str]
|
|
105
|
+
Callback URL to forward message delivery reports (DLRs) to.
|
|
106
|
+
|
|
107
|
+
time_zone : typing.Optional[str]
|
|
108
|
+
Timezone configured on the account.
|
|
109
|
+
|
|
110
|
+
job_title : typing.Optional[str]
|
|
111
|
+
Account owner's job title.
|
|
112
|
+
|
|
113
|
+
company_info : typing.Optional[ProfileUpdateRequestCompanyInfo]
|
|
114
|
+
|
|
115
|
+
request_options : typing.Optional[RequestOptions]
|
|
116
|
+
Request-specific configuration.
|
|
117
|
+
|
|
118
|
+
Returns
|
|
119
|
+
-------
|
|
120
|
+
ProfileResponse
|
|
121
|
+
Returns the updated profile.
|
|
122
|
+
|
|
123
|
+
Examples
|
|
124
|
+
--------
|
|
125
|
+
from wavix import Wavix
|
|
126
|
+
|
|
127
|
+
client = Wavix(
|
|
128
|
+
token="YOUR_TOKEN",
|
|
129
|
+
)
|
|
130
|
+
client.profile.update()
|
|
131
|
+
"""
|
|
132
|
+
_response = self._raw_client.update(
|
|
133
|
+
additional_info=additional_info,
|
|
134
|
+
contacts=contacts,
|
|
135
|
+
default_short_link_endpoint=default_short_link_endpoint,
|
|
136
|
+
first_name=first_name,
|
|
137
|
+
last_name=last_name,
|
|
138
|
+
phone=phone,
|
|
139
|
+
sms_relay_url=sms_relay_url,
|
|
140
|
+
dlr_relay_url=dlr_relay_url,
|
|
141
|
+
time_zone=time_zone,
|
|
142
|
+
job_title=job_title,
|
|
143
|
+
company_info=company_info,
|
|
144
|
+
request_options=request_options,
|
|
145
|
+
)
|
|
146
|
+
return _response.data
|
|
147
|
+
|
|
148
|
+
@property
|
|
149
|
+
def config(self):
|
|
150
|
+
if self._config is None:
|
|
151
|
+
from .config.client import ConfigClient # noqa: E402
|
|
152
|
+
|
|
153
|
+
self._config = ConfigClient(client_wrapper=self._client_wrapper)
|
|
154
|
+
return self._config
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
class AsyncProfileClient:
|
|
158
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
159
|
+
self._raw_client = AsyncRawProfileClient(client_wrapper=client_wrapper)
|
|
160
|
+
self._client_wrapper = client_wrapper
|
|
161
|
+
self._config: typing.Optional[AsyncConfigClient] = None
|
|
162
|
+
|
|
163
|
+
@property
|
|
164
|
+
def with_raw_response(self) -> AsyncRawProfileClient:
|
|
165
|
+
"""
|
|
166
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
167
|
+
|
|
168
|
+
Returns
|
|
169
|
+
-------
|
|
170
|
+
AsyncRawProfileClient
|
|
171
|
+
"""
|
|
172
|
+
return self._raw_client
|
|
173
|
+
|
|
174
|
+
async def get(self, *, request_options: typing.Optional[RequestOptions] = None) -> ProfileResponse:
|
|
175
|
+
"""
|
|
176
|
+
Returns the profile and billing details of the authenticated account.
|
|
177
|
+
|
|
178
|
+
Parameters
|
|
179
|
+
----------
|
|
180
|
+
request_options : typing.Optional[RequestOptions]
|
|
181
|
+
Request-specific configuration.
|
|
182
|
+
|
|
183
|
+
Returns
|
|
184
|
+
-------
|
|
185
|
+
ProfileResponse
|
|
186
|
+
Returns the profile.
|
|
187
|
+
|
|
188
|
+
Examples
|
|
189
|
+
--------
|
|
190
|
+
import asyncio
|
|
191
|
+
|
|
192
|
+
from wavix import AsyncWavix
|
|
193
|
+
|
|
194
|
+
client = AsyncWavix(
|
|
195
|
+
token="YOUR_TOKEN",
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
async def main() -> None:
|
|
200
|
+
await client.profile.get()
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
asyncio.run(main())
|
|
204
|
+
"""
|
|
205
|
+
_response = await self._raw_client.get(request_options=request_options)
|
|
206
|
+
return _response.data
|
|
207
|
+
|
|
208
|
+
async def update(
|
|
209
|
+
self,
|
|
210
|
+
*,
|
|
211
|
+
additional_info: typing.Optional[str] = OMIT,
|
|
212
|
+
contacts: typing.Optional[str] = OMIT,
|
|
213
|
+
default_short_link_endpoint: typing.Optional[str] = OMIT,
|
|
214
|
+
first_name: typing.Optional[str] = OMIT,
|
|
215
|
+
last_name: typing.Optional[str] = OMIT,
|
|
216
|
+
phone: typing.Optional[str] = OMIT,
|
|
217
|
+
sms_relay_url: typing.Optional[str] = OMIT,
|
|
218
|
+
dlr_relay_url: typing.Optional[str] = OMIT,
|
|
219
|
+
time_zone: typing.Optional[str] = OMIT,
|
|
220
|
+
job_title: typing.Optional[str] = OMIT,
|
|
221
|
+
company_info: typing.Optional[ProfileUpdateRequestCompanyInfo] = OMIT,
|
|
222
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
223
|
+
) -> ProfileResponse:
|
|
224
|
+
"""
|
|
225
|
+
Updates the profile and billing details of the authenticated account.
|
|
226
|
+
|
|
227
|
+
Parameters
|
|
228
|
+
----------
|
|
229
|
+
additional_info : typing.Optional[str]
|
|
230
|
+
Additional information associated with the account.
|
|
231
|
+
|
|
232
|
+
contacts : typing.Optional[str]
|
|
233
|
+
Email associated with the account.
|
|
234
|
+
|
|
235
|
+
default_short_link_endpoint : typing.Optional[str]
|
|
236
|
+
Default short link endpoint.
|
|
237
|
+
|
|
238
|
+
first_name : typing.Optional[str]
|
|
239
|
+
Account owner's first name.
|
|
240
|
+
|
|
241
|
+
last_name : typing.Optional[str]
|
|
242
|
+
Account owner's last name.
|
|
243
|
+
|
|
244
|
+
phone : typing.Optional[str]
|
|
245
|
+
Account owner's phone number
|
|
246
|
+
|
|
247
|
+
sms_relay_url : typing.Optional[str]
|
|
248
|
+
Callback URL to forward inbound SMS to.
|
|
249
|
+
|
|
250
|
+
dlr_relay_url : typing.Optional[str]
|
|
251
|
+
Callback URL to forward message delivery reports (DLRs) to.
|
|
252
|
+
|
|
253
|
+
time_zone : typing.Optional[str]
|
|
254
|
+
Timezone configured on the account.
|
|
255
|
+
|
|
256
|
+
job_title : typing.Optional[str]
|
|
257
|
+
Account owner's job title.
|
|
258
|
+
|
|
259
|
+
company_info : typing.Optional[ProfileUpdateRequestCompanyInfo]
|
|
260
|
+
|
|
261
|
+
request_options : typing.Optional[RequestOptions]
|
|
262
|
+
Request-specific configuration.
|
|
263
|
+
|
|
264
|
+
Returns
|
|
265
|
+
-------
|
|
266
|
+
ProfileResponse
|
|
267
|
+
Returns the updated profile.
|
|
268
|
+
|
|
269
|
+
Examples
|
|
270
|
+
--------
|
|
271
|
+
import asyncio
|
|
272
|
+
|
|
273
|
+
from wavix import AsyncWavix
|
|
274
|
+
|
|
275
|
+
client = AsyncWavix(
|
|
276
|
+
token="YOUR_TOKEN",
|
|
277
|
+
)
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
async def main() -> None:
|
|
281
|
+
await client.profile.update()
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
asyncio.run(main())
|
|
285
|
+
"""
|
|
286
|
+
_response = await self._raw_client.update(
|
|
287
|
+
additional_info=additional_info,
|
|
288
|
+
contacts=contacts,
|
|
289
|
+
default_short_link_endpoint=default_short_link_endpoint,
|
|
290
|
+
first_name=first_name,
|
|
291
|
+
last_name=last_name,
|
|
292
|
+
phone=phone,
|
|
293
|
+
sms_relay_url=sms_relay_url,
|
|
294
|
+
dlr_relay_url=dlr_relay_url,
|
|
295
|
+
time_zone=time_zone,
|
|
296
|
+
job_title=job_title,
|
|
297
|
+
company_info=company_info,
|
|
298
|
+
request_options=request_options,
|
|
299
|
+
)
|
|
300
|
+
return _response.data
|
|
301
|
+
|
|
302
|
+
@property
|
|
303
|
+
def config(self):
|
|
304
|
+
if self._config is None:
|
|
305
|
+
from .config.client import AsyncConfigClient # noqa: E402
|
|
306
|
+
|
|
307
|
+
self._config = AsyncConfigClient(client_wrapper=self._client_wrapper)
|
|
308
|
+
return self._config
|
|
@@ -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 GetConfigResponse
|
|
10
|
+
_dynamic_imports: typing.Dict[str, str] = {"GetConfigResponse": ".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__ = ["GetConfigResponse"]
|
|
@@ -0,0 +1,100 @@
|
|
|
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 AsyncRawConfigClient, RawConfigClient
|
|
8
|
+
from .types.get_config_response import GetConfigResponse
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ConfigClient:
|
|
12
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
13
|
+
self._raw_client = RawConfigClient(client_wrapper=client_wrapper)
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def with_raw_response(self) -> RawConfigClient:
|
|
17
|
+
"""
|
|
18
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
19
|
+
|
|
20
|
+
Returns
|
|
21
|
+
-------
|
|
22
|
+
RawConfigClient
|
|
23
|
+
"""
|
|
24
|
+
return self._raw_client
|
|
25
|
+
|
|
26
|
+
def get(self, *, request_options: typing.Optional[RequestOptions] = None) -> GetConfigResponse:
|
|
27
|
+
"""
|
|
28
|
+
Returns the balance and global limits configured for the authenticated account.
|
|
29
|
+
|
|
30
|
+
Parameters
|
|
31
|
+
----------
|
|
32
|
+
request_options : typing.Optional[RequestOptions]
|
|
33
|
+
Request-specific configuration.
|
|
34
|
+
|
|
35
|
+
Returns
|
|
36
|
+
-------
|
|
37
|
+
GetConfigResponse
|
|
38
|
+
Returns the account settings.
|
|
39
|
+
|
|
40
|
+
Examples
|
|
41
|
+
--------
|
|
42
|
+
from wavix import Wavix
|
|
43
|
+
|
|
44
|
+
client = Wavix(
|
|
45
|
+
token="YOUR_TOKEN",
|
|
46
|
+
)
|
|
47
|
+
client.profile.config.get()
|
|
48
|
+
"""
|
|
49
|
+
_response = self._raw_client.get(request_options=request_options)
|
|
50
|
+
return _response.data
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class AsyncConfigClient:
|
|
54
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
55
|
+
self._raw_client = AsyncRawConfigClient(client_wrapper=client_wrapper)
|
|
56
|
+
|
|
57
|
+
@property
|
|
58
|
+
def with_raw_response(self) -> AsyncRawConfigClient:
|
|
59
|
+
"""
|
|
60
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
61
|
+
|
|
62
|
+
Returns
|
|
63
|
+
-------
|
|
64
|
+
AsyncRawConfigClient
|
|
65
|
+
"""
|
|
66
|
+
return self._raw_client
|
|
67
|
+
|
|
68
|
+
async def get(self, *, request_options: typing.Optional[RequestOptions] = None) -> GetConfigResponse:
|
|
69
|
+
"""
|
|
70
|
+
Returns the balance and global limits configured for the authenticated account.
|
|
71
|
+
|
|
72
|
+
Parameters
|
|
73
|
+
----------
|
|
74
|
+
request_options : typing.Optional[RequestOptions]
|
|
75
|
+
Request-specific configuration.
|
|
76
|
+
|
|
77
|
+
Returns
|
|
78
|
+
-------
|
|
79
|
+
GetConfigResponse
|
|
80
|
+
Returns the account settings.
|
|
81
|
+
|
|
82
|
+
Examples
|
|
83
|
+
--------
|
|
84
|
+
import asyncio
|
|
85
|
+
|
|
86
|
+
from wavix import AsyncWavix
|
|
87
|
+
|
|
88
|
+
client = AsyncWavix(
|
|
89
|
+
token="YOUR_TOKEN",
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
async def main() -> None:
|
|
94
|
+
await client.profile.config.get()
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
asyncio.run(main())
|
|
98
|
+
"""
|
|
99
|
+
_response = await self._raw_client.get(request_options=request_options)
|
|
100
|
+
return _response.data
|
|
@@ -0,0 +1,124 @@
|
|
|
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.parse_error import ParsingError
|
|
10
|
+
from ...core.pydantic_utilities import parse_obj_as
|
|
11
|
+
from ...core.request_options import RequestOptions
|
|
12
|
+
from ...errors.forbidden_error import ForbiddenError
|
|
13
|
+
from .types.get_config_response import GetConfigResponse
|
|
14
|
+
from pydantic import ValidationError
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class RawConfigClient:
|
|
18
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
19
|
+
self._client_wrapper = client_wrapper
|
|
20
|
+
|
|
21
|
+
def get(self, *, request_options: typing.Optional[RequestOptions] = None) -> HttpResponse[GetConfigResponse]:
|
|
22
|
+
"""
|
|
23
|
+
Returns the balance and global limits configured for the authenticated account.
|
|
24
|
+
|
|
25
|
+
Parameters
|
|
26
|
+
----------
|
|
27
|
+
request_options : typing.Optional[RequestOptions]
|
|
28
|
+
Request-specific configuration.
|
|
29
|
+
|
|
30
|
+
Returns
|
|
31
|
+
-------
|
|
32
|
+
HttpResponse[GetConfigResponse]
|
|
33
|
+
Returns the account settings.
|
|
34
|
+
"""
|
|
35
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
36
|
+
"v1/profile/config",
|
|
37
|
+
method="GET",
|
|
38
|
+
request_options=request_options,
|
|
39
|
+
)
|
|
40
|
+
try:
|
|
41
|
+
if 200 <= _response.status_code < 300:
|
|
42
|
+
_data = typing.cast(
|
|
43
|
+
GetConfigResponse,
|
|
44
|
+
parse_obj_as(
|
|
45
|
+
type_=GetConfigResponse, # type: ignore
|
|
46
|
+
object_=_response.json(),
|
|
47
|
+
),
|
|
48
|
+
)
|
|
49
|
+
return HttpResponse(response=_response, data=_data)
|
|
50
|
+
if _response.status_code == 403:
|
|
51
|
+
raise ForbiddenError(
|
|
52
|
+
headers=dict(_response.headers),
|
|
53
|
+
body=typing.cast(
|
|
54
|
+
typing.Any,
|
|
55
|
+
parse_obj_as(
|
|
56
|
+
type_=typing.Any, # type: ignore
|
|
57
|
+
object_=_response.json(),
|
|
58
|
+
),
|
|
59
|
+
),
|
|
60
|
+
)
|
|
61
|
+
_response_json = _response.json()
|
|
62
|
+
except JSONDecodeError:
|
|
63
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
64
|
+
except ValidationError as e:
|
|
65
|
+
raise ParsingError(
|
|
66
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
67
|
+
)
|
|
68
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class AsyncRawConfigClient:
|
|
72
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
73
|
+
self._client_wrapper = client_wrapper
|
|
74
|
+
|
|
75
|
+
async def get(
|
|
76
|
+
self, *, request_options: typing.Optional[RequestOptions] = None
|
|
77
|
+
) -> AsyncHttpResponse[GetConfigResponse]:
|
|
78
|
+
"""
|
|
79
|
+
Returns the balance and global limits configured for the authenticated account.
|
|
80
|
+
|
|
81
|
+
Parameters
|
|
82
|
+
----------
|
|
83
|
+
request_options : typing.Optional[RequestOptions]
|
|
84
|
+
Request-specific configuration.
|
|
85
|
+
|
|
86
|
+
Returns
|
|
87
|
+
-------
|
|
88
|
+
AsyncHttpResponse[GetConfigResponse]
|
|
89
|
+
Returns the account settings.
|
|
90
|
+
"""
|
|
91
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
92
|
+
"v1/profile/config",
|
|
93
|
+
method="GET",
|
|
94
|
+
request_options=request_options,
|
|
95
|
+
)
|
|
96
|
+
try:
|
|
97
|
+
if 200 <= _response.status_code < 300:
|
|
98
|
+
_data = typing.cast(
|
|
99
|
+
GetConfigResponse,
|
|
100
|
+
parse_obj_as(
|
|
101
|
+
type_=GetConfigResponse, # type: ignore
|
|
102
|
+
object_=_response.json(),
|
|
103
|
+
),
|
|
104
|
+
)
|
|
105
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
106
|
+
if _response.status_code == 403:
|
|
107
|
+
raise ForbiddenError(
|
|
108
|
+
headers=dict(_response.headers),
|
|
109
|
+
body=typing.cast(
|
|
110
|
+
typing.Any,
|
|
111
|
+
parse_obj_as(
|
|
112
|
+
type_=typing.Any, # type: ignore
|
|
113
|
+
object_=_response.json(),
|
|
114
|
+
),
|
|
115
|
+
),
|
|
116
|
+
)
|
|
117
|
+
_response_json = _response.json()
|
|
118
|
+
except JSONDecodeError:
|
|
119
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
120
|
+
except ValidationError as e:
|
|
121
|
+
raise ParsingError(
|
|
122
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
123
|
+
)
|
|
124
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|