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,97 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
import typing_extensions
|
|
7
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
8
|
+
from ..core.serialization import FieldMetadata
|
|
9
|
+
from .message_body import MessageBody
|
|
10
|
+
from .message_delivery_status import MessageDeliveryStatus
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class MessageResponse(UniversalBaseModel):
|
|
14
|
+
message_id: str = pydantic.Field()
|
|
15
|
+
"""
|
|
16
|
+
Message ID.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
message_type: str = pydantic.Field()
|
|
20
|
+
"""
|
|
21
|
+
Message type. Possible values are `sms`, `mms`.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
from_: typing_extensions.Annotated[
|
|
25
|
+
str, FieldMetadata(alias="from"), pydantic.Field(alias="from", description="Sender ID.")
|
|
26
|
+
]
|
|
27
|
+
to: str = pydantic.Field()
|
|
28
|
+
"""
|
|
29
|
+
Recipient phone number.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
direction: str = pydantic.Field()
|
|
33
|
+
"""
|
|
34
|
+
Message direction. Possible values are `outbound`, `inbound`.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
mcc: typing.Optional[str] = pydantic.Field(default=None)
|
|
38
|
+
"""
|
|
39
|
+
Mobile country code.
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
mnc: typing.Optional[str] = pydantic.Field(default=None)
|
|
43
|
+
"""
|
|
44
|
+
Mobile network code.
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
message_body: MessageBody
|
|
48
|
+
tag: typing.Optional[str] = pydantic.Field(default=None)
|
|
49
|
+
"""
|
|
50
|
+
Tag to group messages, such as for a specific campaign.
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
status: MessageDeliveryStatus
|
|
54
|
+
segments: int = pydantic.Field()
|
|
55
|
+
"""
|
|
56
|
+
Number of SMS segments. Always 1 for MMS.
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
charge: str = pydantic.Field()
|
|
60
|
+
"""
|
|
61
|
+
Total charge for the message in USD.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
submitted_at: str = pydantic.Field()
|
|
65
|
+
"""
|
|
66
|
+
Date and time the message was accepted in ISO 8601 format.
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
sent_at: typing.Optional[str] = pydantic.Field(default=None)
|
|
70
|
+
"""
|
|
71
|
+
Date and time the message was sent in ISO 8601 format. For mobile-terminated messages only.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
delivered_at: typing.Optional[str] = pydantic.Field(default=None)
|
|
75
|
+
"""
|
|
76
|
+
Date and time the message was delivered in ISO 8601 format. Refers to DLR reception for mobile-terminated messages
|
|
77
|
+
or webhook relay for mobile-originated messages.
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
error_message: typing.Optional[str] = pydantic.Field(default=None)
|
|
81
|
+
"""
|
|
82
|
+
Human-readable error message.
|
|
83
|
+
"""
|
|
84
|
+
|
|
85
|
+
carrier_fees: typing.Optional[str] = pydantic.Field(default=None)
|
|
86
|
+
"""
|
|
87
|
+
Mobile carrier fees in USD.
|
|
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,81 @@
|
|
|
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 .message_delivery_status import MessageDeliveryStatus
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class MessagesDeliveryReport(UniversalBaseModel):
|
|
14
|
+
"""
|
|
15
|
+
Message delivery report (DLR).
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
message_id: str = pydantic.Field()
|
|
19
|
+
"""
|
|
20
|
+
Message ID.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
message_type: str = pydantic.Field()
|
|
24
|
+
"""
|
|
25
|
+
Type of message. Possible values are `sms`, `mms`.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
from_: typing_extensions.Annotated[
|
|
29
|
+
str,
|
|
30
|
+
FieldMetadata(alias="from"),
|
|
31
|
+
pydantic.Field(alias="from", description="Sender ID. Can be numeric or alphanumeric."),
|
|
32
|
+
]
|
|
33
|
+
to: str = pydantic.Field()
|
|
34
|
+
"""
|
|
35
|
+
Destination phone number.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
tag: typing.Optional[str] = pydantic.Field(default=None)
|
|
39
|
+
"""
|
|
40
|
+
Tag to identify a group of messages, such as those associated with a campaign.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
status: MessageDeliveryStatus
|
|
44
|
+
segments_count: int = pydantic.Field()
|
|
45
|
+
"""
|
|
46
|
+
Number of message segments for SMS. For MMS, the value is always 1.
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
sent: typing.Optional[dt.datetime] = pydantic.Field(default=None)
|
|
50
|
+
"""
|
|
51
|
+
Date and time the message was accepted in ISO 8601 format.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
delivered: typing.Optional[dt.datetime] = pydantic.Field(default=None)
|
|
55
|
+
"""
|
|
56
|
+
Date and time when the final status was received in ISO 8601 format.
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
error: typing.Optional[str] = pydantic.Field(default=None)
|
|
60
|
+
"""
|
|
61
|
+
Human-readable error description.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
charge: str = pydantic.Field()
|
|
65
|
+
"""
|
|
66
|
+
Total charge for the message in USD.
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
carrier_fees: str = pydantic.Field()
|
|
70
|
+
"""
|
|
71
|
+
Mobile carrier fees in USD.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
if IS_PYDANTIC_V2:
|
|
75
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
76
|
+
else:
|
|
77
|
+
|
|
78
|
+
class Config:
|
|
79
|
+
frozen = True
|
|
80
|
+
smart_union = True
|
|
81
|
+
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 NotFoundErrorBody(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,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 NotFoundErrorResponse(UniversalBaseModel):
|
|
10
|
+
success: typing.Optional[bool] = pydantic.Field(default=None)
|
|
11
|
+
"""
|
|
12
|
+
Indicates whether the request was successful. Always `false` for this error.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
message: typing.Optional[str] = pydantic.Field(default=None)
|
|
16
|
+
"""
|
|
17
|
+
Human-readable description stating that no resource matches the given ID.
|
|
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/number.py
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
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 .inbound_call_destination import InboundCallDestination
|
|
9
|
+
from .number_document import NumberDocument
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Number(UniversalBaseModel):
|
|
13
|
+
id: int = pydantic.Field()
|
|
14
|
+
"""
|
|
15
|
+
Phone number ID.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
number: str = pydantic.Field()
|
|
19
|
+
"""
|
|
20
|
+
Phone number.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
activation_fee: str = pydantic.Field()
|
|
24
|
+
"""
|
|
25
|
+
One-time activation fee in USD.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
monthly_fee: str = pydantic.Field()
|
|
29
|
+
"""
|
|
30
|
+
Monthly fee in USD.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
per_min: str = pydantic.Field()
|
|
34
|
+
"""
|
|
35
|
+
Price per inbound minute in USD.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
city: str = pydantic.Field()
|
|
39
|
+
"""
|
|
40
|
+
City or rate center where the phone number originates.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
state: typing.Optional[str] = pydantic.Field(default=None)
|
|
44
|
+
"""
|
|
45
|
+
State where the phone number originates. For non-US numbers, this field may be null.
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
country: str = pydantic.Field()
|
|
49
|
+
"""
|
|
50
|
+
Country where the phone number originates.
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
country_short_name: str = pydantic.Field()
|
|
54
|
+
"""
|
|
55
|
+
Two-letter ISO country code.
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
destination: typing.List[InboundCallDestination] = pydantic.Field()
|
|
59
|
+
"""
|
|
60
|
+
Inbound call destinations set for the phone number.
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
channels: int = pydantic.Field()
|
|
64
|
+
"""
|
|
65
|
+
Maximum number of concurrent inbound calls.
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
require_docs: typing.List[str] = pydantic.Field()
|
|
69
|
+
"""
|
|
70
|
+
Documents required to activate the phone number.
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
documents: typing.List[NumberDocument] = pydantic.Field()
|
|
74
|
+
"""
|
|
75
|
+
Uploaded documents for the phone number.
|
|
76
|
+
"""
|
|
77
|
+
|
|
78
|
+
domestic_cli: bool = pydantic.Field()
|
|
79
|
+
"""
|
|
80
|
+
Indicates whether the number can be used as the Caller ID for local calls.
|
|
81
|
+
"""
|
|
82
|
+
|
|
83
|
+
free_min: typing.Optional[int] = pydantic.Field(default=None)
|
|
84
|
+
"""
|
|
85
|
+
Number of free inbound minutes.
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
unlimited: typing.Optional[bool] = pydantic.Field(default=None)
|
|
89
|
+
"""
|
|
90
|
+
Indicates whether usage is unlimited.
|
|
91
|
+
"""
|
|
92
|
+
|
|
93
|
+
label: typing.Optional[str] = pydantic.Field(default=None)
|
|
94
|
+
"""
|
|
95
|
+
Label assigned to the phone number.
|
|
96
|
+
"""
|
|
97
|
+
|
|
98
|
+
status: str = pydantic.Field()
|
|
99
|
+
"""
|
|
100
|
+
Phone number status. `active` means the number can receive and place calls; `inactive` means it cannot.
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
seconds: str = pydantic.Field()
|
|
104
|
+
"""
|
|
105
|
+
Total inbound call duration in seconds for current month.
|
|
106
|
+
"""
|
|
107
|
+
|
|
108
|
+
added: dt.datetime = pydantic.Field()
|
|
109
|
+
"""
|
|
110
|
+
Date and time the phone number was purchased in ISO 8601 format.
|
|
111
|
+
"""
|
|
112
|
+
|
|
113
|
+
paid_until: dt.date = pydantic.Field()
|
|
114
|
+
"""
|
|
115
|
+
Date until which the number is paid.
|
|
116
|
+
"""
|
|
117
|
+
|
|
118
|
+
sms_enabled: bool = pydantic.Field()
|
|
119
|
+
"""
|
|
120
|
+
Indicates whether SMS is enabled.
|
|
121
|
+
"""
|
|
122
|
+
|
|
123
|
+
sms_relay_url: typing.Optional[str] = pydantic.Field(default=None)
|
|
124
|
+
"""
|
|
125
|
+
Callback URL for inbound SMS and MMS messages.
|
|
126
|
+
"""
|
|
127
|
+
|
|
128
|
+
cnam: typing.Optional[bool] = pydantic.Field(default=None)
|
|
129
|
+
"""
|
|
130
|
+
Indicates whether CNAM is enabled.
|
|
131
|
+
"""
|
|
132
|
+
|
|
133
|
+
call_recording_enabled: bool = pydantic.Field()
|
|
134
|
+
"""
|
|
135
|
+
Indicates whether call recording is enabled.
|
|
136
|
+
"""
|
|
137
|
+
|
|
138
|
+
transcription_enabled: bool = pydantic.Field()
|
|
139
|
+
"""
|
|
140
|
+
Indicates whether transcription is enabled.
|
|
141
|
+
"""
|
|
142
|
+
|
|
143
|
+
transcription_threshold: int = pydantic.Field()
|
|
144
|
+
"""
|
|
145
|
+
Minimum call duration in seconds to trigger transcription.
|
|
146
|
+
"""
|
|
147
|
+
|
|
148
|
+
call_status_url: typing.Optional[str] = pydantic.Field(default=None)
|
|
149
|
+
"""
|
|
150
|
+
Callback URL for call status updates.
|
|
151
|
+
"""
|
|
152
|
+
|
|
153
|
+
if IS_PYDANTIC_V2:
|
|
154
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
155
|
+
else:
|
|
156
|
+
|
|
157
|
+
class Config:
|
|
158
|
+
frozen = True
|
|
159
|
+
smart_union = True
|
|
160
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,38 @@
|
|
|
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 .inbound_call_transport import InboundCallTransport
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class NumberDestination(UniversalBaseModel):
|
|
11
|
+
"""
|
|
12
|
+
Inbound call destination
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
destination: str = pydantic.Field()
|
|
16
|
+
"""
|
|
17
|
+
SIP URI, PSTN number, or SIP trunk login for inbound call routing.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
priority: int = pydantic.Field()
|
|
21
|
+
"""
|
|
22
|
+
Destination priority (lower is higher priority).
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
transport: InboundCallTransport
|
|
26
|
+
trunk_id: typing.Optional[int] = pydantic.Field(default=None)
|
|
27
|
+
"""
|
|
28
|
+
SIP trunk ID when `transport` is 5, otherwise null.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
if IS_PYDANTIC_V2:
|
|
32
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
33
|
+
else:
|
|
34
|
+
|
|
35
|
+
class Config:
|
|
36
|
+
frozen = True
|
|
37
|
+
smart_union = True
|
|
38
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,58 @@
|
|
|
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 .document_type_id import DocumentTypeId
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class NumberDocument(UniversalBaseModel):
|
|
11
|
+
"""
|
|
12
|
+
A document uploaded for a phone number
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
id: int = pydantic.Field()
|
|
16
|
+
"""
|
|
17
|
+
Unique identifier of the uploaded document
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
allow_replace: bool = pydantic.Field()
|
|
21
|
+
"""
|
|
22
|
+
Indicates whether the document can be replaced. Only documents with `rejected` status can be replaced.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
did_number: str = pydantic.Field()
|
|
26
|
+
"""
|
|
27
|
+
The phone number the document was uploaded for
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
doc_content_type: str = pydantic.Field()
|
|
31
|
+
"""
|
|
32
|
+
The uploaded content type identified by the platform
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
doc_file_name: str = pydantic.Field()
|
|
36
|
+
"""
|
|
37
|
+
The uploaded document name
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
doc_type_id: DocumentTypeId
|
|
41
|
+
status: str = pydantic.Field()
|
|
42
|
+
"""
|
|
43
|
+
Status of the uploaded document. Can be either `approved`, `pending`, or `rejected`
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
url: str = pydantic.Field()
|
|
47
|
+
"""
|
|
48
|
+
A link to the uploaded document
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
if IS_PYDANTIC_V2:
|
|
52
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
53
|
+
else:
|
|
54
|
+
|
|
55
|
+
class Config:
|
|
56
|
+
frozen = True
|
|
57
|
+
smart_union = True
|
|
58
|
+
extra = pydantic.Extra.allow
|
|
@@ -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
|
+
from .document_type import DocumentType
|
|
8
|
+
from .number import Number
|
|
9
|
+
from .pagination import Pagination
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class NumberListResponse(UniversalBaseModel):
|
|
13
|
+
items: typing.List[Number] = pydantic.Field()
|
|
14
|
+
"""
|
|
15
|
+
List of phone numbers on the account.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
doc_types: typing.List[DocumentType] = pydantic.Field()
|
|
19
|
+
"""
|
|
20
|
+
Documents required to activate phone numbers.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
pagination: Pagination
|
|
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,38 @@
|
|
|
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 .number_status_updated_webhook_status import NumberStatusUpdatedWebhookStatus
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class NumberStatusUpdatedWebhook(UniversalBaseModel):
|
|
11
|
+
brand_id: str = pydantic.Field()
|
|
12
|
+
"""
|
|
13
|
+
10DLC Brand ID.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
campaign_id: str = pydantic.Field()
|
|
17
|
+
"""
|
|
18
|
+
10DLC Campaign ID.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
number: str = pydantic.Field()
|
|
22
|
+
"""
|
|
23
|
+
Phone number associated with a 10DLC Campaign.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
status: NumberStatusUpdatedWebhookStatus = pydantic.Field()
|
|
27
|
+
"""
|
|
28
|
+
Status of the phone number's assignment to the 10DLC Campaign. One of `APPROVED` (the number is registered to the campaign), `PENDING` (registration is in progress), or `REJECTED` (registration was declined).
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
if IS_PYDANTIC_V2:
|
|
32
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
33
|
+
else:
|
|
34
|
+
|
|
35
|
+
class Config:
|
|
36
|
+
frozen = True
|
|
37
|
+
smart_union = True
|
|
38
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from .number_validator_create_bulk_response_request_id import NumberValidatorCreateBulkResponseRequestId
|
|
6
|
+
from .phone_validation_batch_response import PhoneValidationBatchResponse
|
|
7
|
+
|
|
8
|
+
NumberValidatorCreateBulkResponse = typing.Union[
|
|
9
|
+
PhoneValidationBatchResponse, NumberValidatorCreateBulkResponseRequestId
|
|
10
|
+
]
|
|
@@ -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 NumberValidatorCreateBulkResponseRequestId(UniversalBaseModel):
|
|
10
|
+
"""
|
|
11
|
+
Returned when validation runs asynchronously; poll results using `request_id`.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
request_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
15
|
+
"""
|
|
16
|
+
Request ID. Use to poll validation results when `async` is `true`.
|
|
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,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
|
+
from .on_call_event_payload_type import OnCallEventPayloadType
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class OnCallEventPayload(UniversalBaseModel):
|
|
11
|
+
"""
|
|
12
|
+
Payload for the `on_call_event` event type.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
type: OnCallEventPayloadType = pydantic.Field()
|
|
16
|
+
"""
|
|
17
|
+
Type of in-call sub-event. One of `audio` (audio playback progress) or `collect` (DTMF digit collection progress).
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
payload: typing.Optional[typing.Dict[str, typing.Any]] = pydantic.Field(default=None)
|
|
21
|
+
"""
|
|
22
|
+
Sub-event-specific data. Structure depends on the `type` field:
|
|
23
|
+
- `audio`: `{ "status": "started" | "completed", "playback_id": "<uuid>" }`
|
|
24
|
+
- `collect`: `{ "digits": "<digits>", "status": "started" | "completed" | "failed" }`
|
|
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
|
wavix/types/opt_out.py
ADDED
|
@@ -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 OptOut(UniversalBaseModel):
|
|
10
|
+
number: str = pydantic.Field()
|
|
11
|
+
"""
|
|
12
|
+
Phone number to opt out.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
sender_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
16
|
+
"""
|
|
17
|
+
Sender ID. If omitted, the phone number is opted out of all messages.
|
|
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
|