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,132 @@
|
|
|
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 .sip_trunk_create_request_allowed_ips_item import SipTrunkCreateRequestAllowedIpsItem
|
|
8
|
+
from .sip_trunk_create_request_host_request import SipTrunkCreateRequestHostRequest
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SipTrunkCreateRequest(UniversalBaseModel):
|
|
12
|
+
label: str = pydantic.Field()
|
|
13
|
+
"""
|
|
14
|
+
User-defined name of the SIP trunk
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
password: str = pydantic.Field()
|
|
18
|
+
"""
|
|
19
|
+
Password set for the SIP trunk. A strong password helps keep the trunk secure.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
host_request: typing.Optional[SipTrunkCreateRequestHostRequest] = pydantic.Field(default=None)
|
|
23
|
+
"""
|
|
24
|
+
For SIP trunks with IP authentication, includes the SIP endpoint public static IP address and the status of the authentication request. Wavix authenticates all SIP traffic originating from this IP address.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
callerid: str = pydantic.Field()
|
|
28
|
+
"""
|
|
29
|
+
Caller ID associated with the SIP trunk. Must be an active or verified number on the account.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
multiple_numbers: typing.Optional[bool] = pydantic.Field(default=None)
|
|
33
|
+
"""
|
|
34
|
+
Indicates whether any active or verified phone number on the account can be used as the Caller ID for the SIP trunk.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
ip_restrict: bool = pydantic.Field()
|
|
38
|
+
"""
|
|
39
|
+
Indicates whether SIP trunk registration is allowed from only specific public static IP addresses. When set to `true`, the `allowed_ips` parameter must be provided.
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
allowed_ips: typing.Optional[typing.List[SipTrunkCreateRequestAllowedIpsItem]] = pydantic.Field(default=None)
|
|
43
|
+
"""
|
|
44
|
+
A list of public static IP addresses allowed to register with the SIP trunk
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
didinfo_enabled: bool = pydantic.Field()
|
|
48
|
+
"""
|
|
49
|
+
Indicates whether inbound calls include dialed number information in the `To` header of SIP INVITE requests
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
call_restrict: bool = pydantic.Field()
|
|
53
|
+
"""
|
|
54
|
+
Indicates whether a maximum call duration limit is enforced for the SIP trunk
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
call_limit: typing.Optional[int] = pydantic.Field(default=None)
|
|
58
|
+
"""
|
|
59
|
+
Maximum call duration for the SIP trunk, in seconds. Must not exceed the maximum duration set for the account. Ignored when `call_restrict` is `false`.
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
cost_limit: bool = pydantic.Field()
|
|
63
|
+
"""
|
|
64
|
+
Indicates if the max cost limit for an outbound call limit is activated for the SIP trunk.
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
max_call_cost: typing.Optional[float] = pydantic.Field(default=None)
|
|
68
|
+
"""
|
|
69
|
+
Maximum cost for an outbound call, in USD
|
|
70
|
+
"""
|
|
71
|
+
|
|
72
|
+
channels_restrict: bool = pydantic.Field()
|
|
73
|
+
"""
|
|
74
|
+
Indicates whether a limit on the number of concurrent outbound calls is enforced for the SIP trunk
|
|
75
|
+
"""
|
|
76
|
+
|
|
77
|
+
max_channels: typing.Optional[int] = pydantic.Field(default=None)
|
|
78
|
+
"""
|
|
79
|
+
Maximum number of concurrent outbound calls for the SIP trunk. Must not exceed the outbound channel capacity set for the account. Ignored when `channels_restrict` is `false`.
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
rewrite_enabled: bool = pydantic.Field()
|
|
83
|
+
"""
|
|
84
|
+
Indicates whether a custom dial plan is activated for the SIP trunk
|
|
85
|
+
"""
|
|
86
|
+
|
|
87
|
+
rewrite_prefix: typing.Optional[str] = pydantic.Field(default=None)
|
|
88
|
+
"""
|
|
89
|
+
Digits to automatically prepend to each dialed phone number
|
|
90
|
+
"""
|
|
91
|
+
|
|
92
|
+
rewrite_cond: typing.Optional[str] = pydantic.Field(default=None)
|
|
93
|
+
"""
|
|
94
|
+
Number of leading digits to automatically remove from each dialed phone number
|
|
95
|
+
"""
|
|
96
|
+
|
|
97
|
+
call_recording_enabled: typing.Optional[bool] = pydantic.Field(default=None)
|
|
98
|
+
"""
|
|
99
|
+
Indicates whether outbound call recording is enabled for the SIP trunk
|
|
100
|
+
"""
|
|
101
|
+
|
|
102
|
+
transcription_enabled: bool = pydantic.Field()
|
|
103
|
+
"""
|
|
104
|
+
Indicates whether automatic call transcription is enabled for the SIP trunk.
|
|
105
|
+
Available for `Flex Pro` customers only.
|
|
106
|
+
"""
|
|
107
|
+
|
|
108
|
+
transcription_threshold: int = pydantic.Field()
|
|
109
|
+
"""
|
|
110
|
+
Transcriptions will be generated for calls that meet or exceed the specified minimal call duration threshold, in seconds.
|
|
111
|
+
Available for `Flex Pro` customers only.
|
|
112
|
+
"""
|
|
113
|
+
|
|
114
|
+
machine_detection_enabled: typing.Optional[bool] = pydantic.Field(default=None)
|
|
115
|
+
"""
|
|
116
|
+
Indicates whether automatic voicemail detection is enabled for the SIP trunk.
|
|
117
|
+
Available for `Flex Pro` customers only.
|
|
118
|
+
"""
|
|
119
|
+
|
|
120
|
+
encrypted_media: typing.Optional[bool] = pydantic.Field(default=None)
|
|
121
|
+
"""
|
|
122
|
+
Indicates whether SRTP media encryption is enabled for the SIP trunk.
|
|
123
|
+
"""
|
|
124
|
+
|
|
125
|
+
if IS_PYDANTIC_V2:
|
|
126
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
127
|
+
else:
|
|
128
|
+
|
|
129
|
+
class Config:
|
|
130
|
+
frozen = True
|
|
131
|
+
smart_union = True
|
|
132
|
+
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 SipTrunkCreateRequestAllowedIpsItem(UniversalBaseModel):
|
|
10
|
+
ip: str = pydantic.Field()
|
|
11
|
+
"""
|
|
12
|
+
Public static IP address allowed to register with the SIP trunk.
|
|
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,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
|
+
|
|
8
|
+
|
|
9
|
+
class SipTrunkCreateRequestHostRequest(UniversalBaseModel):
|
|
10
|
+
"""
|
|
11
|
+
For SIP trunks with IP authentication, includes the SIP endpoint public static IP address and the status of the authentication request. Wavix authenticates all SIP traffic originating from this IP address.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
host: str = pydantic.Field()
|
|
15
|
+
"""
|
|
16
|
+
SIP endpoint public static IP address
|
|
17
|
+
"""
|
|
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
|
|
@@ -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 .pagination import Pagination
|
|
8
|
+
from .sip_trunk_summary import SipTrunkSummary
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SipTrunkListResponse(UniversalBaseModel):
|
|
12
|
+
sip_trunks: typing.Optional[typing.List[SipTrunkSummary]] = pydantic.Field(default=None)
|
|
13
|
+
"""
|
|
14
|
+
SIP trunks associated with the account.
|
|
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
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import datetime as dt
|
|
4
|
+
import typing
|
|
5
|
+
|
|
6
|
+
import pydantic
|
|
7
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
8
|
+
from .allowed_i_ps import AllowedIPs
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SipTrunkResponse(UniversalBaseModel):
|
|
12
|
+
id: int = pydantic.Field()
|
|
13
|
+
"""
|
|
14
|
+
Unique identifier of the SIP trunk on the platform
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
name: str = pydantic.Field()
|
|
18
|
+
"""
|
|
19
|
+
System-generated login name of the SIP trunk
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
callerid: typing.Optional[str] = pydantic.Field(default=None)
|
|
23
|
+
"""
|
|
24
|
+
Caller ID configured on the SIP trunk. Contains `null` if no Caller ID is set, or an empty string if multiple Caller IDs are allowed.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
label: str = pydantic.Field()
|
|
28
|
+
"""
|
|
29
|
+
User-defined name of the SIP trunk
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
ip_restrict: typing.Optional[bool] = pydantic.Field(default=None)
|
|
33
|
+
"""
|
|
34
|
+
Indicates whether IP restriction must be enabled on the SIP trunk
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
allowed_ips: AllowedIPs
|
|
38
|
+
channels_restrict: typing.Optional[bool] = pydantic.Field(default=None)
|
|
39
|
+
"""
|
|
40
|
+
Indicates if the max number of concurrent outbound calls limit is activated for the SIP trunk.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
max_channels: typing.Optional[int] = pydantic.Field(default=None)
|
|
44
|
+
"""
|
|
45
|
+
A maximum number of concurrent outbound calls placed via the SIP trunk. Cannot be higher than the outbound channel capacity configured on the account.
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
cost_limit: typing.Optional[bool] = pydantic.Field(default=None)
|
|
49
|
+
"""
|
|
50
|
+
Indicates if the max cost limit for an outbound call limit is activated for the SIP trunk.
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
max_call_cost: typing.Optional[str] = pydantic.Field(default=None)
|
|
54
|
+
"""
|
|
55
|
+
A maximum cost of an outbound call, in USD.
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
call_restrict: typing.Optional[bool] = pydantic.Field(default=None)
|
|
59
|
+
"""
|
|
60
|
+
Indicates if maximum call duration limit is activated for the SIP trunk.
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
call_limit: typing.Optional[int] = pydantic.Field(default=None)
|
|
64
|
+
"""
|
|
65
|
+
A maximum call duration for the SIP trunk, in seconds. Cannot be higher than the max call duration set for the account.
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
didinfo_enabled: typing.Optional[bool] = pydantic.Field(default=None)
|
|
69
|
+
"""
|
|
70
|
+
Indicates if inbound calls carry dialed number information in the 'To' header of SIP Invites
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
rewrite_enabled: typing.Optional[bool] = pydantic.Field(default=None)
|
|
74
|
+
"""
|
|
75
|
+
Indicates if a custom dial plan is activated for the SIP trunk.
|
|
76
|
+
"""
|
|
77
|
+
|
|
78
|
+
rewrite_prefix: typing.Optional[str] = pydantic.Field(default=None)
|
|
79
|
+
"""
|
|
80
|
+
Leading digits to be added before the dialed phone numbers.
|
|
81
|
+
"""
|
|
82
|
+
|
|
83
|
+
rewrite_cond: typing.Optional[str] = pydantic.Field(default=None)
|
|
84
|
+
"""
|
|
85
|
+
Leading digits to be deleted from the dialed phone numbers.
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
call_recording_enabled: typing.Optional[bool] = pydantic.Field(default=None)
|
|
89
|
+
"""
|
|
90
|
+
Indicates if outbound call recording is enabled on the SIP trunk. Available for `Flex Pro` customers only.
|
|
91
|
+
"""
|
|
92
|
+
|
|
93
|
+
machine_detection_enabled: typing.Optional[bool] = pydantic.Field(default=None)
|
|
94
|
+
"""
|
|
95
|
+
Indicates if automatic voicemail detection is enabled on the SIP trunk. Available for `Flex Pro` customers only.
|
|
96
|
+
"""
|
|
97
|
+
|
|
98
|
+
transcription_enabled: typing.Optional[bool] = pydantic.Field(default=None)
|
|
99
|
+
"""
|
|
100
|
+
Indicates if automatic call transcription is enabled on the SIP trunk. Available for `Flex Pro` customers only.
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
transcription_threshold: typing.Optional[int] = pydantic.Field(default=None)
|
|
104
|
+
"""
|
|
105
|
+
Transcriptions will be generated for calls that meet or exceed the specified minimal call duration threshold, in seconds
|
|
106
|
+
"""
|
|
107
|
+
|
|
108
|
+
created_at: dt.datetime = pydantic.Field()
|
|
109
|
+
"""
|
|
110
|
+
Date and time the SIP trunk was created
|
|
111
|
+
"""
|
|
112
|
+
|
|
113
|
+
host: typing.Optional[str] = pydantic.Field(default=None)
|
|
114
|
+
"""
|
|
115
|
+
Registration host for the SIP trunk. `dynamic` for credential-based registration, or a public static IP address for IP authentication.
|
|
116
|
+
"""
|
|
117
|
+
|
|
118
|
+
multiple_numbers: typing.Optional[bool] = pydantic.Field(default=None)
|
|
119
|
+
"""
|
|
120
|
+
Indicates whether any active or verified phone number on the account can be used as the Caller ID for the SIP trunk.
|
|
121
|
+
"""
|
|
122
|
+
|
|
123
|
+
encrypted_media: typing.Optional[bool] = pydantic.Field(default=None)
|
|
124
|
+
"""
|
|
125
|
+
Indicates whether SRTP media encryption is enabled for the SIP trunk.
|
|
126
|
+
"""
|
|
127
|
+
|
|
128
|
+
passthrough: typing.Optional[bool] = pydantic.Field(default=None)
|
|
129
|
+
"""
|
|
130
|
+
Indicates whether Caller ID passthrough is enabled.
|
|
131
|
+
"""
|
|
132
|
+
|
|
133
|
+
access_token: typing.Optional[str] = pydantic.Field(default=None)
|
|
134
|
+
"""
|
|
135
|
+
Static authentication token for the SIP trunk.
|
|
136
|
+
"""
|
|
137
|
+
|
|
138
|
+
if IS_PYDANTIC_V2:
|
|
139
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
140
|
+
else:
|
|
141
|
+
|
|
142
|
+
class Config:
|
|
143
|
+
frozen = True
|
|
144
|
+
smart_union = True
|
|
145
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,114 @@
|
|
|
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 .sip_trunk_summary_host_request import SipTrunkSummaryHostRequest
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class SipTrunkSummary(UniversalBaseModel):
|
|
11
|
+
"""
|
|
12
|
+
A SIP trunk associated with the account.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
id: int = pydantic.Field()
|
|
16
|
+
"""
|
|
17
|
+
Unique identifier of the SIP trunk on the platform
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
name: str = pydantic.Field()
|
|
21
|
+
"""
|
|
22
|
+
System-generated login name of the SIP trunk
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
callerid: typing.Optional[str] = pydantic.Field(default=None)
|
|
26
|
+
"""
|
|
27
|
+
Caller ID associated with the SIP trunk. Contains `null` if no Caller ID is set, or an empty string if multiple Caller IDs are allowed.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
label: str = pydantic.Field()
|
|
31
|
+
"""
|
|
32
|
+
User-defined name of the SIP trunk
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
auth_method: str = pydantic.Field()
|
|
36
|
+
"""
|
|
37
|
+
SIP trunk authentication method. Can be either `Digest` or `IP auth`.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
host_request: typing.Optional[SipTrunkSummaryHostRequest] = pydantic.Field(default=None)
|
|
41
|
+
"""
|
|
42
|
+
For SIP trunks with IP-based authentication, contains the status of the IP authentication request.
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
passthrough: typing.Optional[bool] = pydantic.Field(default=None)
|
|
46
|
+
"""
|
|
47
|
+
Indicates whether Caller ID passthrough is enabled for the SIP trunk
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
multiple_numbers: bool = pydantic.Field()
|
|
51
|
+
"""
|
|
52
|
+
Indicates whether multiple Caller IDs are enabled for the SIP trunk
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
status: str = pydantic.Field()
|
|
56
|
+
"""
|
|
57
|
+
Status of the SIP trunk. Possible values are:
|
|
58
|
+
`active` - The SIP trunk is active and can be used to place outbound calls.
|
|
59
|
+
`pending` - The IP authentication request is under review by the Wavix team.
|
|
60
|
+
`rejected` - The IP authentication request was rejected by the Wavix team.
|
|
61
|
+
SIP trunks with a `pending` or `rejected` status can't be used to place calls.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
talk_time: int = pydantic.Field()
|
|
65
|
+
"""
|
|
66
|
+
Total duration of all outbound calls placed through the SIP trunk the current month, in seconds. Automatically resets at the beginning of each month.
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
charge: str = pydantic.Field()
|
|
70
|
+
"""
|
|
71
|
+
Total cost of all outbound calls placed through the SIP trunk in the current month, in USD. Automatically resets at the beginning of each month.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
call_recording_enabled: typing.Optional[bool] = pydantic.Field(default=None)
|
|
75
|
+
"""
|
|
76
|
+
Indicates whether outbound call recording is enabled for the SIP trunk
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
machine_detection_enabled: typing.Optional[bool] = pydantic.Field(default=None)
|
|
80
|
+
"""
|
|
81
|
+
Indicates whether automatic voicemail detection is enabled for the SIP trunk.
|
|
82
|
+
Available for `Flex Pro` customers only.
|
|
83
|
+
"""
|
|
84
|
+
|
|
85
|
+
transcription_enabled: typing.Optional[bool] = pydantic.Field(default=None)
|
|
86
|
+
"""
|
|
87
|
+
Indicates whether automatic call transcription is enabled for the SIP trunk.
|
|
88
|
+
Available for `Flex Pro` customers only.
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
transcription_threshold: typing.Optional[int] = pydantic.Field(default=None)
|
|
92
|
+
"""
|
|
93
|
+
Minimum call duration (in seconds) required to automatically generate a transcription. Transcriptions are created for calls that meet or exceed this value.
|
|
94
|
+
Available to `Flex Pro` customers only.
|
|
95
|
+
"""
|
|
96
|
+
|
|
97
|
+
encrypted_media: typing.Optional[bool] = pydantic.Field(default=None)
|
|
98
|
+
"""
|
|
99
|
+
Indicates whether SRTP media encryption is enabled for the SIP trunk.
|
|
100
|
+
"""
|
|
101
|
+
|
|
102
|
+
access_token: typing.Optional[str] = pydantic.Field(default=None)
|
|
103
|
+
"""
|
|
104
|
+
Static authentication token for the SIP trunk.
|
|
105
|
+
"""
|
|
106
|
+
|
|
107
|
+
if IS_PYDANTIC_V2:
|
|
108
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
109
|
+
else:
|
|
110
|
+
|
|
111
|
+
class Config:
|
|
112
|
+
frozen = True
|
|
113
|
+
smart_union = True
|
|
114
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,31 @@
|
|
|
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 SipTrunkSummaryHostRequest(UniversalBaseModel):
|
|
10
|
+
"""
|
|
11
|
+
For SIP trunks with IP-based authentication, contains the status of the IP authentication request.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
host: typing.Optional[str] = pydantic.Field(default=None)
|
|
15
|
+
"""
|
|
16
|
+
The IP address submitted for authentication
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
status: typing.Optional[str] = pydantic.Field(default=None)
|
|
20
|
+
"""
|
|
21
|
+
Status of the IP authentication request
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
if IS_PYDANTIC_V2:
|
|
25
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
26
|
+
else:
|
|
27
|
+
|
|
28
|
+
class Config:
|
|
29
|
+
frozen = True
|
|
30
|
+
smart_union = True
|
|
31
|
+
extra = pydantic.Extra.allow
|
|
@@ -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 .pagination import Pagination
|
|
8
|
+
from .sub_organization_response import SubOrganizationResponse
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SubAccountsListResponse(UniversalBaseModel):
|
|
12
|
+
sub_organizations: typing.Optional[typing.List[SubOrganizationResponse]] = pydantic.Field(default=None)
|
|
13
|
+
"""
|
|
14
|
+
Subaccounts belonging to the authenticated account.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
pagination: typing.Optional[Pagination] = None
|
|
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
|
|
@@ -0,0 +1,30 @@
|
|
|
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 .pagination import Pagination
|
|
8
|
+
from .sub_accounts_transactions_list_response_transactions_item import (
|
|
9
|
+
SubAccountsTransactionsListResponseTransactionsItem,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class SubAccountsTransactionsListResponse(UniversalBaseModel):
|
|
14
|
+
transactions: typing.Optional[typing.List[SubAccountsTransactionsListResponseTransactionsItem]] = pydantic.Field(
|
|
15
|
+
default=None
|
|
16
|
+
)
|
|
17
|
+
"""
|
|
18
|
+
Financial transactions for the subaccount.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
pagination: typing.Optional[Pagination] = None
|
|
22
|
+
|
|
23
|
+
if IS_PYDANTIC_V2:
|
|
24
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
25
|
+
else:
|
|
26
|
+
|
|
27
|
+
class Config:
|
|
28
|
+
frozen = True
|
|
29
|
+
smart_union = True
|
|
30
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import datetime as dt
|
|
4
|
+
import typing
|
|
5
|
+
|
|
6
|
+
import pydantic
|
|
7
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class SubAccountsTransactionsListResponseTransactionsItem(UniversalBaseModel):
|
|
11
|
+
amount: typing.Optional[float] = pydantic.Field(default=None)
|
|
12
|
+
"""
|
|
13
|
+
Transaction amount.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
balance_after: typing.Optional[float] = pydantic.Field(default=None)
|
|
17
|
+
"""
|
|
18
|
+
Sub-account balance after the transaction.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
date: typing.Optional[dt.datetime] = pydantic.Field(default=None)
|
|
22
|
+
"""
|
|
23
|
+
Transaction date and time in ISO 8601 format.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
details: typing.Optional[str] = pydantic.Field(default=None)
|
|
27
|
+
"""
|
|
28
|
+
Transaction details.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
status: typing.Optional[str] = pydantic.Field(default=None)
|
|
32
|
+
"""
|
|
33
|
+
Transaction status.
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
type: typing.Optional[int] = pydantic.Field(default=None)
|
|
37
|
+
"""
|
|
38
|
+
Transaction type.
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
if IS_PYDANTIC_V2:
|
|
42
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
43
|
+
else:
|
|
44
|
+
|
|
45
|
+
class Config:
|
|
46
|
+
frozen = True
|
|
47
|
+
smart_union = True
|
|
48
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import datetime as dt
|
|
4
|
+
import typing
|
|
5
|
+
|
|
6
|
+
import pydantic
|
|
7
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
8
|
+
from .sub_organization_response_default_destinations import SubOrganizationResponseDefaultDestinations
|
|
9
|
+
from .sub_organization_response_status import SubOrganizationResponseStatus
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class SubOrganizationResponse(UniversalBaseModel):
|
|
13
|
+
"""
|
|
14
|
+
Sub-account details including API key and webhook configurations.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
id: int = pydantic.Field()
|
|
18
|
+
"""
|
|
19
|
+
Sub-account ID.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
created_at: dt.datetime = pydantic.Field()
|
|
23
|
+
"""
|
|
24
|
+
Date and time the sub-account was created in ISO 8601 format.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
name: str = pydantic.Field()
|
|
28
|
+
"""
|
|
29
|
+
Sub-account name.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
api_key: str = pydantic.Field()
|
|
33
|
+
"""
|
|
34
|
+
Sub-account API key.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
master_organization: int = pydantic.Field()
|
|
38
|
+
"""
|
|
39
|
+
Master account ID.
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
status: SubOrganizationResponseStatus = pydantic.Field()
|
|
43
|
+
"""
|
|
44
|
+
Status of the subaccount. One of `enabled` (the subaccount is active and can be used) or `disabled` (the subaccount is suspended).
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
default_destinations: SubOrganizationResponseDefaultDestinations = pydantic.Field()
|
|
48
|
+
"""
|
|
49
|
+
Default webhook URLs for inbound messages and delivery reports.
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
if IS_PYDANTIC_V2:
|
|
53
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
54
|
+
else:
|
|
55
|
+
|
|
56
|
+
class Config:
|
|
57
|
+
frozen = True
|
|
58
|
+
smart_union = True
|
|
59
|
+
extra = pydantic.Extra.allow
|