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,32 @@
|
|
|
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 AccountLimits(UniversalBaseModel):
|
|
10
|
+
max_call_duration: int = pydantic.Field()
|
|
11
|
+
"""
|
|
12
|
+
Maximum outbound call duration, in seconds
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
max_sip_channels: int = pydantic.Field()
|
|
16
|
+
"""
|
|
17
|
+
Maximum number of concurrent outbound calls.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
max_call_rate: str = pydantic.Field()
|
|
21
|
+
"""
|
|
22
|
+
Maximum outbound call rate, in cents
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
if IS_PYDANTIC_V2:
|
|
26
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
27
|
+
else:
|
|
28
|
+
|
|
29
|
+
class Config:
|
|
30
|
+
frozen = True
|
|
31
|
+
smart_union = True
|
|
32
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,27 @@
|
|
|
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 AllowedIPsItem(UniversalBaseModel):
|
|
10
|
+
id: int = pydantic.Field()
|
|
11
|
+
"""
|
|
12
|
+
IP address ID.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
ip: str = pydantic.Field()
|
|
16
|
+
"""
|
|
17
|
+
Public static IP address.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
if IS_PYDANTIC_V2:
|
|
21
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
22
|
+
else:
|
|
23
|
+
|
|
24
|
+
class Config:
|
|
25
|
+
frozen = True
|
|
26
|
+
smart_union = True
|
|
27
|
+
extra = pydantic.Extra.allow
|
wavix/types/api_key.py
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
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 .api_key_calls_scope_permission import ApiKeyCallsScopePermission
|
|
9
|
+
from .api_key_scope_permission import ApiKeyScopePermission
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ApiKey(UniversalBaseModel):
|
|
13
|
+
"""
|
|
14
|
+
API key details including IP restrictions and scope permissions.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
id: int = pydantic.Field()
|
|
18
|
+
"""
|
|
19
|
+
API key ID.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
label: str = pydantic.Field()
|
|
23
|
+
"""
|
|
24
|
+
API key label.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
value: str = pydantic.Field()
|
|
28
|
+
"""
|
|
29
|
+
API key value.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
active: bool = pydantic.Field()
|
|
33
|
+
"""
|
|
34
|
+
Indicates whether the API key is active.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
restricted: bool = pydantic.Field()
|
|
38
|
+
"""
|
|
39
|
+
Indicates whether IP restrictions are enabled. When enabled,
|
|
40
|
+
the API key works only from IP addresses in `permitted_ips`.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
permitted_ips: typing.List[str] = pydantic.Field()
|
|
44
|
+
"""
|
|
45
|
+
List of permitted IP addresses. If `restricted` is false,
|
|
46
|
+
an empty list means no IP restrictions. If `restricted` is true,
|
|
47
|
+
an empty list prevents all requests.
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
scopes_enabled: bool = pydantic.Field()
|
|
51
|
+
"""
|
|
52
|
+
When `true`, the key is restricted to the permissions defined in the
|
|
53
|
+
scope fields below. When `false`, the key has full access.
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
last_used_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
|
|
57
|
+
"""
|
|
58
|
+
Timestamp of the most recent authenticated request made with this key.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
numbers: typing.Optional[ApiKeyScopePermission] = pydantic.Field(default=None)
|
|
62
|
+
"""
|
|
63
|
+
View, buy, release, and configure phone numbers, browse inventory, and manage the cart.
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
trunks: typing.Optional[ApiKeyScopePermission] = pydantic.Field(default=None)
|
|
67
|
+
"""
|
|
68
|
+
View, create, update, and delete SIP trunks and their settings.
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
calls: typing.Optional[ApiKeyCallsScopePermission] = pydantic.Field(default=None)
|
|
72
|
+
"""
|
|
73
|
+
Access call records and active calls, and control live call actions such as starting, answering, ending, audio playback, DTMF, streaming, and transcription requests.
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
messages: typing.Optional[ApiKeyScopePermission] = pydantic.Field(default=None)
|
|
77
|
+
"""
|
|
78
|
+
Access message history and Sender IDs, send messages, manage opt-outs, and create or delete Sender IDs.
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
recordings: typing.Optional[ApiKeyScopePermission] = pydantic.Field(default=None)
|
|
82
|
+
"""
|
|
83
|
+
List, download, and delete call recordings.
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
campaigns: typing.Optional[ApiKeyScopePermission] = pydantic.Field(default=None)
|
|
87
|
+
"""
|
|
88
|
+
View campaign analytics and Sender ID or Brand status, schedule bulk voice or SMS campaigns, register Brands, and create short links.
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
two_fa: typing.Optional[ApiKeyScopePermission] = pydantic.Field(default=None)
|
|
92
|
+
"""
|
|
93
|
+
View 2FA service details and verification logs, trigger OTPs by voice or SMS, and validate verification codes.
|
|
94
|
+
"""
|
|
95
|
+
|
|
96
|
+
validator: typing.Optional[ApiKeyScopePermission] = pydantic.Field(default=None)
|
|
97
|
+
"""
|
|
98
|
+
View number validation results and trigger single or bulk validation or HLR lookup requests.
|
|
99
|
+
"""
|
|
100
|
+
|
|
101
|
+
webhooks: typing.Optional[ApiKeyScopePermission] = pydantic.Field(default=None)
|
|
102
|
+
"""
|
|
103
|
+
List, create, and delete webhooks.
|
|
104
|
+
"""
|
|
105
|
+
|
|
106
|
+
embeddable: typing.Optional[ApiKeyScopePermission] = pydantic.Field(default=None)
|
|
107
|
+
"""
|
|
108
|
+
Manage widget tokens, including listing, viewing, creating, updating, and deleting them.
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
billing: typing.Optional[ApiKeyScopePermission] = pydantic.Field(default=None)
|
|
112
|
+
"""
|
|
113
|
+
Access statements, balance, payment methods, usage reports, and billing settings, including payment method updates.
|
|
114
|
+
"""
|
|
115
|
+
|
|
116
|
+
account: typing.Optional[ApiKeyScopePermission] = pydantic.Field(default=None)
|
|
117
|
+
"""
|
|
118
|
+
View and update account profile information and timezone.
|
|
119
|
+
"""
|
|
120
|
+
|
|
121
|
+
subaccounts: typing.Optional[ApiKeyScopePermission] = pydantic.Field(default=None)
|
|
122
|
+
"""
|
|
123
|
+
Manage subaccounts: list and view them, create, update, and suspend them.
|
|
124
|
+
"""
|
|
125
|
+
|
|
126
|
+
created_at: dt.datetime = pydantic.Field()
|
|
127
|
+
"""
|
|
128
|
+
Creation date and time in ISO 8601 format.
|
|
129
|
+
"""
|
|
130
|
+
|
|
131
|
+
if IS_PYDANTIC_V2:
|
|
132
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
133
|
+
else:
|
|
134
|
+
|
|
135
|
+
class Config:
|
|
136
|
+
frozen = True
|
|
137
|
+
smart_union = True
|
|
138
|
+
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 .api_key_calls_scope_permission_allow import ApiKeyCallsScopePermissionAllow
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ApiKeyCallsScopePermission(UniversalBaseModel):
|
|
11
|
+
"""
|
|
12
|
+
Permission level for the `calls` scope group.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
allow: typing.Optional[ApiKeyCallsScopePermissionAllow] = pydantic.Field(default=None)
|
|
16
|
+
"""
|
|
17
|
+
Permission level:
|
|
18
|
+
- `none`: no access
|
|
19
|
+
- `read`: GET requests, `POST /v1/cdrs`
|
|
20
|
+
- `write`: all methods (includes read)
|
|
21
|
+
"""
|
|
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,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 .api_key_scope_permission_allow import ApiKeyScopePermissionAllow
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ApiKeyScopePermission(UniversalBaseModel):
|
|
11
|
+
"""
|
|
12
|
+
Permission level for an API key scope group.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
allow: typing.Optional[ApiKeyScopePermissionAllow] = pydantic.Field(default=None)
|
|
16
|
+
"""
|
|
17
|
+
Permission level:
|
|
18
|
+
- `none`: no access
|
|
19
|
+
- `read`: GET only
|
|
20
|
+
- `write`: all methods (includes read)
|
|
21
|
+
"""
|
|
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,97 @@
|
|
|
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 AvailableNumber(UniversalBaseModel):
|
|
10
|
+
"""
|
|
11
|
+
Phone number available for purchase.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
id: int = pydantic.Field()
|
|
15
|
+
"""
|
|
16
|
+
Phone number ID.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
activation_fee: str = pydantic.Field()
|
|
20
|
+
"""
|
|
21
|
+
One-time activation fee in USD.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
monthly_fee: str = pydantic.Field()
|
|
25
|
+
"""
|
|
26
|
+
Monthly fee in USD.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
per_min: str = pydantic.Field()
|
|
30
|
+
"""
|
|
31
|
+
Price per inbound minute in USD.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
channels: str = pydantic.Field()
|
|
35
|
+
"""
|
|
36
|
+
Maximum number of concurrent inbound calls.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
city: str = pydantic.Field()
|
|
40
|
+
"""
|
|
41
|
+
City where the phone number originates.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
country: str = pydantic.Field()
|
|
45
|
+
"""
|
|
46
|
+
Country where the phone number originates.
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
country_short_name: str = pydantic.Field()
|
|
50
|
+
"""
|
|
51
|
+
Two-letter ISO country code.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
cnam: typing.Optional[bool] = pydantic.Field(default=None)
|
|
55
|
+
"""
|
|
56
|
+
Indicates whether CNAM can be activated.
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
free_min: int = pydantic.Field()
|
|
60
|
+
"""
|
|
61
|
+
Number of free inbound minutes.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
number: str = pydantic.Field()
|
|
65
|
+
"""
|
|
66
|
+
Phone number in E.164 format.
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
require_docs: typing.List[int] = pydantic.Field()
|
|
70
|
+
"""
|
|
71
|
+
Documents required to activate the phone number.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
sms_enabled: bool = pydantic.Field()
|
|
75
|
+
"""
|
|
76
|
+
Indicates whether the phone number can receive inbound
|
|
77
|
+
SMS and MMS messages.
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
sms_price: float = pydantic.Field()
|
|
81
|
+
"""
|
|
82
|
+
Price per inbound SMS segment in USD.
|
|
83
|
+
"""
|
|
84
|
+
|
|
85
|
+
domestic_cli: typing.Optional[bool] = pydantic.Field(default=None)
|
|
86
|
+
"""
|
|
87
|
+
Indicates whether the number can be used as the Caller ID for local calls.
|
|
88
|
+
"""
|
|
89
|
+
|
|
90
|
+
if IS_PYDANTIC_V2:
|
|
91
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
92
|
+
else:
|
|
93
|
+
|
|
94
|
+
class Config:
|
|
95
|
+
frozen = True
|
|
96
|
+
smart_union = True
|
|
97
|
+
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 .available_number import AvailableNumber
|
|
8
|
+
from .pagination import Pagination
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AvailableNumberListResponse(UniversalBaseModel):
|
|
12
|
+
dids: typing.List[AvailableNumber] = pydantic.Field()
|
|
13
|
+
"""
|
|
14
|
+
Phone numbers available for purchase that match the search criteria.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
pagination: Pagination
|
|
18
|
+
|
|
19
|
+
if IS_PYDANTIC_V2:
|
|
20
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
21
|
+
else:
|
|
22
|
+
|
|
23
|
+
class Config:
|
|
24
|
+
frozen = True
|
|
25
|
+
smart_union = True
|
|
26
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,27 @@
|
|
|
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 BadRequestErrorBody(UniversalBaseModel):
|
|
10
|
+
success: bool = pydantic.Field()
|
|
11
|
+
"""
|
|
12
|
+
Indicates whether the request was successful. Always `false` for this error.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
message: str = pydantic.Field()
|
|
16
|
+
"""
|
|
17
|
+
Human-readable error description
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
if IS_PYDANTIC_V2:
|
|
21
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
22
|
+
else:
|
|
23
|
+
|
|
24
|
+
class Config:
|
|
25
|
+
frozen = True
|
|
26
|
+
smart_union = True
|
|
27
|
+
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
|
+
from .financial_transaction import FinancialTransaction
|
|
8
|
+
from .pagination import Pagination
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class BillingTransactionListResponse(UniversalBaseModel):
|
|
12
|
+
is_empty: bool = pydantic.Field()
|
|
13
|
+
"""
|
|
14
|
+
Indicates whether there are no transactions.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
transactions: typing.List[FinancialTransaction] = pydantic.Field()
|
|
18
|
+
"""
|
|
19
|
+
List of transactions.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
pagination: Pagination
|
|
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,28 @@
|
|
|
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 .brand_status_updated_webhook_status import BrandStatusUpdatedWebhookStatus
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class BrandStatusUpdatedWebhook(UniversalBaseModel):
|
|
11
|
+
brand_id: str = pydantic.Field()
|
|
12
|
+
"""
|
|
13
|
+
Unique identifier of the 10DLC Brand.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
status: BrandStatusUpdatedWebhookStatus = pydantic.Field()
|
|
17
|
+
"""
|
|
18
|
+
Current verification status of the 10DLC Brand. One of `SELF_DECLARED`, `UNVERIFIED`, `VERIFIED`, `VETTED_VERIFIED`, `REVIEW`, or `SUSPENDED`. `SELF_DECLARED` means the Brand registered without external verification; `UNVERIFIED` means verification has not yet succeeded; `VERIFIED` means the Brand passed standard verification; `VETTED_VERIFIED` means the Brand also passed third-party vetting; `REVIEW` means verification is in progress; `SUSPENDED` means the Brand is blocked from sending.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
if IS_PYDANTIC_V2:
|
|
22
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
23
|
+
else:
|
|
24
|
+
|
|
25
|
+
class Config:
|
|
26
|
+
frozen = True
|
|
27
|
+
smart_union = True
|
|
28
|
+
extra = pydantic.Extra.allow
|
wavix/types/call.py
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
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
|
+
import typing_extensions
|
|
8
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
9
|
+
from ..core.serialization import FieldMetadata
|
|
10
|
+
from .call_direction import CallDirection
|
|
11
|
+
from .call_event_type import CallEventType
|
|
12
|
+
from .on_call_event_payload import OnCallEventPayload
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class Call(UniversalBaseModel):
|
|
16
|
+
uuid_: typing_extensions.Annotated[
|
|
17
|
+
str,
|
|
18
|
+
FieldMetadata(alias="uuid"),
|
|
19
|
+
pydantic.Field(alias="uuid", description="Call ID. Deprecated — use `id` instead."),
|
|
20
|
+
]
|
|
21
|
+
id: str = pydantic.Field()
|
|
22
|
+
"""
|
|
23
|
+
Call ID. Alias of `uuid`.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
direction: typing.Optional[CallDirection] = None
|
|
27
|
+
event_type: CallEventType = pydantic.Field()
|
|
28
|
+
"""
|
|
29
|
+
Most recent lifecycle event for the call. One of:
|
|
30
|
+
|
|
31
|
+
- `call_setup` — the call is being initiated.
|
|
32
|
+
- `ringing` — the destination is ringing.
|
|
33
|
+
- `early_media` — early media (such as ringback) is playing before answer.
|
|
34
|
+
- `answered` — the destination answered the call.
|
|
35
|
+
- `completed` — the call ended normally.
|
|
36
|
+
- `busy` — the destination was busy.
|
|
37
|
+
- `cancelled` — the call was cancelled before answer.
|
|
38
|
+
- `rejected` — the destination rejected the call.
|
|
39
|
+
- `on_call_event` — an in-call event occurred (see `event_payload`).
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
event_time: dt.datetime = pydantic.Field()
|
|
43
|
+
"""
|
|
44
|
+
Date and time of the latest event in ISO 8601 format.
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
event_payload: typing.Optional[OnCallEventPayload] = pydantic.Field(default=None)
|
|
48
|
+
"""
|
|
49
|
+
Event-specific metadata.
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
from_: typing_extensions.Annotated[
|
|
53
|
+
str, FieldMetadata(alias="from"), pydantic.Field(alias="from", description="Caller ID.")
|
|
54
|
+
]
|
|
55
|
+
to: str = pydantic.Field()
|
|
56
|
+
"""
|
|
57
|
+
Destination number.
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
call_started: dt.datetime = pydantic.Field()
|
|
61
|
+
"""
|
|
62
|
+
Date and time when the call started in ISO 8601 format.
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
call_answered: typing.Optional[dt.datetime] = pydantic.Field(default=None)
|
|
66
|
+
"""
|
|
67
|
+
Date and time when the call was answered in ISO 8601 format.
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
call_completed: typing.Optional[dt.datetime] = pydantic.Field(default=None)
|
|
71
|
+
"""
|
|
72
|
+
Date and time when the call ended in ISO 8601 format.
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
machine_detected: bool = pydantic.Field()
|
|
76
|
+
"""
|
|
77
|
+
Indicates whether the call was answered by a machine.
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
tag: str = pydantic.Field()
|
|
81
|
+
"""
|
|
82
|
+
Call metadata
|
|
83
|
+
"""
|
|
84
|
+
|
|
85
|
+
if IS_PYDANTIC_V2:
|
|
86
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
87
|
+
else:
|
|
88
|
+
|
|
89
|
+
class Config:
|
|
90
|
+
frozen = True
|
|
91
|
+
smart_union = True
|
|
92
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,34 @@
|
|
|
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 CallControlValidationErrorResponse(UniversalBaseModel):
|
|
10
|
+
success: bool = pydantic.Field()
|
|
11
|
+
"""
|
|
12
|
+
Indicates whether the request was successful. Always `false` for this error.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
message: str = pydantic.Field()
|
|
16
|
+
"""
|
|
17
|
+
Human-readable summary of the validation failure.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
errors: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None)
|
|
21
|
+
"""
|
|
22
|
+
Field-level validation messages, keyed by the offending request
|
|
23
|
+
field name (snake_case). Absent when the request body could not be
|
|
24
|
+
parsed at all (for example, malformed JSON).
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
if IS_PYDANTIC_V2:
|
|
28
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
29
|
+
else:
|
|
30
|
+
|
|
31
|
+
class Config:
|
|
32
|
+
frozen = True
|
|
33
|
+
smart_union = True
|
|
34
|
+
extra = pydantic.Extra.allow
|