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,31 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class CreateSubscriptionsResponse(UniversalBaseModel):
|
|
10
|
+
"""
|
|
11
|
+
Represents a subscription that delivers 10DLC lifecycle events to a webhook URL.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
subscription_category: str = pydantic.Field()
|
|
15
|
+
"""
|
|
16
|
+
Category of 10DLC events to subscribe to. One of `brand` (brand status changes), `campaign` (campaign status changes), or `number` (number provisioning changes).
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
url: str = pydantic.Field()
|
|
20
|
+
"""
|
|
21
|
+
Webhook URL that events in this category are delivered to.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
if IS_PYDANTIC_V2:
|
|
25
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
26
|
+
else:
|
|
27
|
+
|
|
28
|
+
class Config:
|
|
29
|
+
frozen = True
|
|
30
|
+
smart_union = True
|
|
31
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class DeleteSubscriptionsResponse(UniversalBaseModel):
|
|
10
|
+
success: bool = pydantic.Field()
|
|
11
|
+
"""
|
|
12
|
+
Indicates whether the request was successful.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
if IS_PYDANTIC_V2:
|
|
16
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
17
|
+
else:
|
|
18
|
+
|
|
19
|
+
class Config:
|
|
20
|
+
frozen = True
|
|
21
|
+
smart_union = True
|
|
22
|
+
extra = pydantic.Extra.allow
|
wavix/two_fa/__init__.py
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
# isort: skip_file
|
|
4
|
+
|
|
5
|
+
import typing
|
|
6
|
+
from importlib import import_module
|
|
7
|
+
|
|
8
|
+
if typing.TYPE_CHECKING:
|
|
9
|
+
from . import events, sessions, verification
|
|
10
|
+
from .verification import (
|
|
11
|
+
CheckVerificationResponse,
|
|
12
|
+
CreateVerificationResponse,
|
|
13
|
+
ResendVerificationResponse,
|
|
14
|
+
TwoFactorVerificationResendRequestChannel,
|
|
15
|
+
)
|
|
16
|
+
_dynamic_imports: typing.Dict[str, str] = {
|
|
17
|
+
"CheckVerificationResponse": ".verification",
|
|
18
|
+
"CreateVerificationResponse": ".verification",
|
|
19
|
+
"ResendVerificationResponse": ".verification",
|
|
20
|
+
"TwoFactorVerificationResendRequestChannel": ".verification",
|
|
21
|
+
"events": ".events",
|
|
22
|
+
"sessions": ".sessions",
|
|
23
|
+
"verification": ".verification",
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def __getattr__(attr_name: str) -> typing.Any:
|
|
28
|
+
module_name = _dynamic_imports.get(attr_name)
|
|
29
|
+
if module_name is None:
|
|
30
|
+
raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
|
|
31
|
+
try:
|
|
32
|
+
module = import_module(module_name, __package__)
|
|
33
|
+
if module_name == f".{attr_name}":
|
|
34
|
+
return module
|
|
35
|
+
else:
|
|
36
|
+
return getattr(module, attr_name)
|
|
37
|
+
except ImportError as e:
|
|
38
|
+
raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
|
|
39
|
+
except AttributeError as e:
|
|
40
|
+
raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def __dir__():
|
|
44
|
+
lazy_attrs = list(_dynamic_imports.keys())
|
|
45
|
+
return sorted(lazy_attrs)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
__all__ = [
|
|
49
|
+
"CheckVerificationResponse",
|
|
50
|
+
"CreateVerificationResponse",
|
|
51
|
+
"ResendVerificationResponse",
|
|
52
|
+
"TwoFactorVerificationResendRequestChannel",
|
|
53
|
+
"events",
|
|
54
|
+
"sessions",
|
|
55
|
+
"verification",
|
|
56
|
+
]
|
wavix/two_fa/client.py
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import typing
|
|
6
|
+
|
|
7
|
+
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
8
|
+
from .raw_client import AsyncRawTwoFaClient, RawTwoFaClient
|
|
9
|
+
|
|
10
|
+
if typing.TYPE_CHECKING:
|
|
11
|
+
from .events.client import AsyncEventsClient, EventsClient
|
|
12
|
+
from .sessions.client import AsyncSessionsClient, SessionsClient
|
|
13
|
+
from .verification.client import AsyncVerificationClient, VerificationClient
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class TwoFaClient:
|
|
17
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
18
|
+
self._raw_client = RawTwoFaClient(client_wrapper=client_wrapper)
|
|
19
|
+
self._client_wrapper = client_wrapper
|
|
20
|
+
self._verification: typing.Optional[VerificationClient] = None
|
|
21
|
+
self._sessions: typing.Optional[SessionsClient] = None
|
|
22
|
+
self._events: typing.Optional[EventsClient] = None
|
|
23
|
+
|
|
24
|
+
@property
|
|
25
|
+
def with_raw_response(self) -> RawTwoFaClient:
|
|
26
|
+
"""
|
|
27
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
28
|
+
|
|
29
|
+
Returns
|
|
30
|
+
-------
|
|
31
|
+
RawTwoFaClient
|
|
32
|
+
"""
|
|
33
|
+
return self._raw_client
|
|
34
|
+
|
|
35
|
+
@property
|
|
36
|
+
def verification(self):
|
|
37
|
+
if self._verification is None:
|
|
38
|
+
from .verification.client import VerificationClient # noqa: E402
|
|
39
|
+
|
|
40
|
+
self._verification = VerificationClient(client_wrapper=self._client_wrapper)
|
|
41
|
+
return self._verification
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def sessions(self):
|
|
45
|
+
if self._sessions is None:
|
|
46
|
+
from .sessions.client import SessionsClient # noqa: E402
|
|
47
|
+
|
|
48
|
+
self._sessions = SessionsClient(client_wrapper=self._client_wrapper)
|
|
49
|
+
return self._sessions
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def events(self):
|
|
53
|
+
if self._events is None:
|
|
54
|
+
from .events.client import EventsClient # noqa: E402
|
|
55
|
+
|
|
56
|
+
self._events = EventsClient(client_wrapper=self._client_wrapper)
|
|
57
|
+
return self._events
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class AsyncTwoFaClient:
|
|
61
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
62
|
+
self._raw_client = AsyncRawTwoFaClient(client_wrapper=client_wrapper)
|
|
63
|
+
self._client_wrapper = client_wrapper
|
|
64
|
+
self._verification: typing.Optional[AsyncVerificationClient] = None
|
|
65
|
+
self._sessions: typing.Optional[AsyncSessionsClient] = None
|
|
66
|
+
self._events: typing.Optional[AsyncEventsClient] = None
|
|
67
|
+
|
|
68
|
+
@property
|
|
69
|
+
def with_raw_response(self) -> AsyncRawTwoFaClient:
|
|
70
|
+
"""
|
|
71
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
72
|
+
|
|
73
|
+
Returns
|
|
74
|
+
-------
|
|
75
|
+
AsyncRawTwoFaClient
|
|
76
|
+
"""
|
|
77
|
+
return self._raw_client
|
|
78
|
+
|
|
79
|
+
@property
|
|
80
|
+
def verification(self):
|
|
81
|
+
if self._verification is None:
|
|
82
|
+
from .verification.client import AsyncVerificationClient # noqa: E402
|
|
83
|
+
|
|
84
|
+
self._verification = AsyncVerificationClient(client_wrapper=self._client_wrapper)
|
|
85
|
+
return self._verification
|
|
86
|
+
|
|
87
|
+
@property
|
|
88
|
+
def sessions(self):
|
|
89
|
+
if self._sessions is None:
|
|
90
|
+
from .sessions.client import AsyncSessionsClient # noqa: E402
|
|
91
|
+
|
|
92
|
+
self._sessions = AsyncSessionsClient(client_wrapper=self._client_wrapper)
|
|
93
|
+
return self._sessions
|
|
94
|
+
|
|
95
|
+
@property
|
|
96
|
+
def events(self):
|
|
97
|
+
if self._events is None:
|
|
98
|
+
from .events.client import AsyncEventsClient # noqa: E402
|
|
99
|
+
|
|
100
|
+
self._events = AsyncEventsClient(client_wrapper=self._client_wrapper)
|
|
101
|
+
return self._events
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
6
|
+
from ...core.request_options import RequestOptions
|
|
7
|
+
from ...types.two_factor_verification_event import TwoFactorVerificationEvent
|
|
8
|
+
from .raw_client import AsyncRawEventsClient, RawEventsClient
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class EventsClient:
|
|
12
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
13
|
+
self._raw_client = RawEventsClient(client_wrapper=client_wrapper)
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def with_raw_response(self) -> RawEventsClient:
|
|
17
|
+
"""
|
|
18
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
19
|
+
|
|
20
|
+
Returns
|
|
21
|
+
-------
|
|
22
|
+
RawEventsClient
|
|
23
|
+
"""
|
|
24
|
+
return self._raw_client
|
|
25
|
+
|
|
26
|
+
def list(
|
|
27
|
+
self, session_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
28
|
+
) -> typing.List[TwoFactorVerificationEvent]:
|
|
29
|
+
"""
|
|
30
|
+
Returns the lifecycle events of the 2FA verification identified by `session_id`, such as number lookup and code delivery.
|
|
31
|
+
|
|
32
|
+
Parameters
|
|
33
|
+
----------
|
|
34
|
+
session_id : str
|
|
35
|
+
The unique ID of the 2FA verification session.
|
|
36
|
+
|
|
37
|
+
request_options : typing.Optional[RequestOptions]
|
|
38
|
+
Request-specific configuration.
|
|
39
|
+
|
|
40
|
+
Returns
|
|
41
|
+
-------
|
|
42
|
+
typing.List[TwoFactorVerificationEvent]
|
|
43
|
+
Returns the list of 2FA verification events.
|
|
44
|
+
|
|
45
|
+
Examples
|
|
46
|
+
--------
|
|
47
|
+
from wavix import Wavix
|
|
48
|
+
|
|
49
|
+
client = Wavix(
|
|
50
|
+
token="YOUR_TOKEN",
|
|
51
|
+
)
|
|
52
|
+
client.two_fa.events.list(
|
|
53
|
+
session_id="8753d4308f2e11ecb75fcdafd6d2d690",
|
|
54
|
+
)
|
|
55
|
+
"""
|
|
56
|
+
_response = self._raw_client.list(session_id, request_options=request_options)
|
|
57
|
+
return _response.data
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class AsyncEventsClient:
|
|
61
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
62
|
+
self._raw_client = AsyncRawEventsClient(client_wrapper=client_wrapper)
|
|
63
|
+
|
|
64
|
+
@property
|
|
65
|
+
def with_raw_response(self) -> AsyncRawEventsClient:
|
|
66
|
+
"""
|
|
67
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
68
|
+
|
|
69
|
+
Returns
|
|
70
|
+
-------
|
|
71
|
+
AsyncRawEventsClient
|
|
72
|
+
"""
|
|
73
|
+
return self._raw_client
|
|
74
|
+
|
|
75
|
+
async def list(
|
|
76
|
+
self, session_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
77
|
+
) -> typing.List[TwoFactorVerificationEvent]:
|
|
78
|
+
"""
|
|
79
|
+
Returns the lifecycle events of the 2FA verification identified by `session_id`, such as number lookup and code delivery.
|
|
80
|
+
|
|
81
|
+
Parameters
|
|
82
|
+
----------
|
|
83
|
+
session_id : str
|
|
84
|
+
The unique ID of the 2FA verification session.
|
|
85
|
+
|
|
86
|
+
request_options : typing.Optional[RequestOptions]
|
|
87
|
+
Request-specific configuration.
|
|
88
|
+
|
|
89
|
+
Returns
|
|
90
|
+
-------
|
|
91
|
+
typing.List[TwoFactorVerificationEvent]
|
|
92
|
+
Returns the list of 2FA verification events.
|
|
93
|
+
|
|
94
|
+
Examples
|
|
95
|
+
--------
|
|
96
|
+
import asyncio
|
|
97
|
+
|
|
98
|
+
from wavix import AsyncWavix
|
|
99
|
+
|
|
100
|
+
client = AsyncWavix(
|
|
101
|
+
token="YOUR_TOKEN",
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
async def main() -> None:
|
|
106
|
+
await client.two_fa.events.list(
|
|
107
|
+
session_id="8753d4308f2e11ecb75fcdafd6d2d690",
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
asyncio.run(main())
|
|
112
|
+
"""
|
|
113
|
+
_response = await self._raw_client.list(session_id, request_options=request_options)
|
|
114
|
+
return _response.data
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
from json.decoder import JSONDecodeError
|
|
5
|
+
|
|
6
|
+
from ...core.api_error import ApiError
|
|
7
|
+
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
8
|
+
from ...core.http_response import AsyncHttpResponse, HttpResponse
|
|
9
|
+
from ...core.jsonable_encoder import encode_path_param
|
|
10
|
+
from ...core.parse_error import ParsingError
|
|
11
|
+
from ...core.pydantic_utilities import parse_obj_as
|
|
12
|
+
from ...core.request_options import RequestOptions
|
|
13
|
+
from ...errors.forbidden_error import ForbiddenError
|
|
14
|
+
from ...errors.not_found_error import NotFoundError
|
|
15
|
+
from ...types.two_factor_verification_event import TwoFactorVerificationEvent
|
|
16
|
+
from pydantic import ValidationError
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class RawEventsClient:
|
|
20
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
21
|
+
self._client_wrapper = client_wrapper
|
|
22
|
+
|
|
23
|
+
def list(
|
|
24
|
+
self, session_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
25
|
+
) -> HttpResponse[typing.List[TwoFactorVerificationEvent]]:
|
|
26
|
+
"""
|
|
27
|
+
Returns the lifecycle events of the 2FA verification identified by `session_id`, such as number lookup and code delivery.
|
|
28
|
+
|
|
29
|
+
Parameters
|
|
30
|
+
----------
|
|
31
|
+
session_id : str
|
|
32
|
+
The unique ID of the 2FA verification session.
|
|
33
|
+
|
|
34
|
+
request_options : typing.Optional[RequestOptions]
|
|
35
|
+
Request-specific configuration.
|
|
36
|
+
|
|
37
|
+
Returns
|
|
38
|
+
-------
|
|
39
|
+
HttpResponse[typing.List[TwoFactorVerificationEvent]]
|
|
40
|
+
Returns the list of 2FA verification events.
|
|
41
|
+
"""
|
|
42
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
43
|
+
f"v1/two-fa/session/{encode_path_param(session_id)}/events",
|
|
44
|
+
method="GET",
|
|
45
|
+
request_options=request_options,
|
|
46
|
+
)
|
|
47
|
+
try:
|
|
48
|
+
if 200 <= _response.status_code < 300:
|
|
49
|
+
_data = typing.cast(
|
|
50
|
+
typing.List[TwoFactorVerificationEvent],
|
|
51
|
+
parse_obj_as(
|
|
52
|
+
type_=typing.List[TwoFactorVerificationEvent], # type: ignore
|
|
53
|
+
object_=_response.json(),
|
|
54
|
+
),
|
|
55
|
+
)
|
|
56
|
+
return HttpResponse(response=_response, data=_data)
|
|
57
|
+
if _response.status_code == 403:
|
|
58
|
+
raise ForbiddenError(
|
|
59
|
+
headers=dict(_response.headers),
|
|
60
|
+
body=typing.cast(
|
|
61
|
+
typing.Any,
|
|
62
|
+
parse_obj_as(
|
|
63
|
+
type_=typing.Any, # type: ignore
|
|
64
|
+
object_=_response.json(),
|
|
65
|
+
),
|
|
66
|
+
),
|
|
67
|
+
)
|
|
68
|
+
if _response.status_code == 404:
|
|
69
|
+
raise NotFoundError(
|
|
70
|
+
headers=dict(_response.headers),
|
|
71
|
+
body=typing.cast(
|
|
72
|
+
typing.Any,
|
|
73
|
+
parse_obj_as(
|
|
74
|
+
type_=typing.Any, # type: ignore
|
|
75
|
+
object_=_response.json(),
|
|
76
|
+
),
|
|
77
|
+
),
|
|
78
|
+
)
|
|
79
|
+
_response_json = _response.json()
|
|
80
|
+
except JSONDecodeError:
|
|
81
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
82
|
+
except ValidationError as e:
|
|
83
|
+
raise ParsingError(
|
|
84
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
85
|
+
)
|
|
86
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
class AsyncRawEventsClient:
|
|
90
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
91
|
+
self._client_wrapper = client_wrapper
|
|
92
|
+
|
|
93
|
+
async def list(
|
|
94
|
+
self, session_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
95
|
+
) -> AsyncHttpResponse[typing.List[TwoFactorVerificationEvent]]:
|
|
96
|
+
"""
|
|
97
|
+
Returns the lifecycle events of the 2FA verification identified by `session_id`, such as number lookup and code delivery.
|
|
98
|
+
|
|
99
|
+
Parameters
|
|
100
|
+
----------
|
|
101
|
+
session_id : str
|
|
102
|
+
The unique ID of the 2FA verification session.
|
|
103
|
+
|
|
104
|
+
request_options : typing.Optional[RequestOptions]
|
|
105
|
+
Request-specific configuration.
|
|
106
|
+
|
|
107
|
+
Returns
|
|
108
|
+
-------
|
|
109
|
+
AsyncHttpResponse[typing.List[TwoFactorVerificationEvent]]
|
|
110
|
+
Returns the list of 2FA verification events.
|
|
111
|
+
"""
|
|
112
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
113
|
+
f"v1/two-fa/session/{encode_path_param(session_id)}/events",
|
|
114
|
+
method="GET",
|
|
115
|
+
request_options=request_options,
|
|
116
|
+
)
|
|
117
|
+
try:
|
|
118
|
+
if 200 <= _response.status_code < 300:
|
|
119
|
+
_data = typing.cast(
|
|
120
|
+
typing.List[TwoFactorVerificationEvent],
|
|
121
|
+
parse_obj_as(
|
|
122
|
+
type_=typing.List[TwoFactorVerificationEvent], # type: ignore
|
|
123
|
+
object_=_response.json(),
|
|
124
|
+
),
|
|
125
|
+
)
|
|
126
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
127
|
+
if _response.status_code == 403:
|
|
128
|
+
raise ForbiddenError(
|
|
129
|
+
headers=dict(_response.headers),
|
|
130
|
+
body=typing.cast(
|
|
131
|
+
typing.Any,
|
|
132
|
+
parse_obj_as(
|
|
133
|
+
type_=typing.Any, # type: ignore
|
|
134
|
+
object_=_response.json(),
|
|
135
|
+
),
|
|
136
|
+
),
|
|
137
|
+
)
|
|
138
|
+
if _response.status_code == 404:
|
|
139
|
+
raise NotFoundError(
|
|
140
|
+
headers=dict(_response.headers),
|
|
141
|
+
body=typing.cast(
|
|
142
|
+
typing.Any,
|
|
143
|
+
parse_obj_as(
|
|
144
|
+
type_=typing.Any, # type: ignore
|
|
145
|
+
object_=_response.json(),
|
|
146
|
+
),
|
|
147
|
+
),
|
|
148
|
+
)
|
|
149
|
+
_response_json = _response.json()
|
|
150
|
+
except JSONDecodeError:
|
|
151
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
152
|
+
except ValidationError as e:
|
|
153
|
+
raise ParsingError(
|
|
154
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
155
|
+
)
|
|
156
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class RawTwoFaClient:
|
|
7
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
8
|
+
self._client_wrapper = client_wrapper
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AsyncRawTwoFaClient:
|
|
12
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
13
|
+
self._client_wrapper = client_wrapper
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import datetime as dt
|
|
4
|
+
import typing
|
|
5
|
+
|
|
6
|
+
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
7
|
+
from ...core.request_options import RequestOptions
|
|
8
|
+
from ...types.list_sessions_response_item import ListSessionsResponseItem
|
|
9
|
+
from .raw_client import AsyncRawSessionsClient, RawSessionsClient
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class SessionsClient:
|
|
13
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
14
|
+
self._raw_client = RawSessionsClient(client_wrapper=client_wrapper)
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def with_raw_response(self) -> RawSessionsClient:
|
|
18
|
+
"""
|
|
19
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
20
|
+
|
|
21
|
+
Returns
|
|
22
|
+
-------
|
|
23
|
+
RawSessionsClient
|
|
24
|
+
"""
|
|
25
|
+
return self._raw_client
|
|
26
|
+
|
|
27
|
+
def list(
|
|
28
|
+
self, service_id: str, *, from_: dt.date, to: dt.date, request_options: typing.Optional[RequestOptions] = None
|
|
29
|
+
) -> typing.List[ListSessionsResponseItem]:
|
|
30
|
+
"""
|
|
31
|
+
Returns the 2FA verifications for the service identified by `service_id`, within the requested date range.
|
|
32
|
+
|
|
33
|
+
Parameters
|
|
34
|
+
----------
|
|
35
|
+
service_id : str
|
|
36
|
+
The unique ID of the 2FA service.
|
|
37
|
+
|
|
38
|
+
from_ : dt.date
|
|
39
|
+
Start of the date range to query, in `YYYY-MM-DD` format. Inclusive.
|
|
40
|
+
|
|
41
|
+
to : dt.date
|
|
42
|
+
End of the date range to query, in `YYYY-MM-DD` format. Inclusive.
|
|
43
|
+
|
|
44
|
+
request_options : typing.Optional[RequestOptions]
|
|
45
|
+
Request-specific configuration.
|
|
46
|
+
|
|
47
|
+
Returns
|
|
48
|
+
-------
|
|
49
|
+
typing.List[ListSessionsResponseItem]
|
|
50
|
+
Returns the list of 2FA verifications.
|
|
51
|
+
|
|
52
|
+
Examples
|
|
53
|
+
--------
|
|
54
|
+
import datetime
|
|
55
|
+
|
|
56
|
+
from wavix import Wavix
|
|
57
|
+
|
|
58
|
+
client = Wavix(
|
|
59
|
+
token="YOUR_TOKEN",
|
|
60
|
+
)
|
|
61
|
+
client.two_fa.sessions.list(
|
|
62
|
+
service_id="7204a030201211ee9fb47d093f2f127c",
|
|
63
|
+
from_=datetime.date.fromisoformat(
|
|
64
|
+
"2022-01-01",
|
|
65
|
+
),
|
|
66
|
+
to=datetime.date.fromisoformat(
|
|
67
|
+
"2022-01-31",
|
|
68
|
+
),
|
|
69
|
+
)
|
|
70
|
+
"""
|
|
71
|
+
_response = self._raw_client.list(service_id, from_=from_, to=to, request_options=request_options)
|
|
72
|
+
return _response.data
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class AsyncSessionsClient:
|
|
76
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
77
|
+
self._raw_client = AsyncRawSessionsClient(client_wrapper=client_wrapper)
|
|
78
|
+
|
|
79
|
+
@property
|
|
80
|
+
def with_raw_response(self) -> AsyncRawSessionsClient:
|
|
81
|
+
"""
|
|
82
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
83
|
+
|
|
84
|
+
Returns
|
|
85
|
+
-------
|
|
86
|
+
AsyncRawSessionsClient
|
|
87
|
+
"""
|
|
88
|
+
return self._raw_client
|
|
89
|
+
|
|
90
|
+
async def list(
|
|
91
|
+
self, service_id: str, *, from_: dt.date, to: dt.date, request_options: typing.Optional[RequestOptions] = None
|
|
92
|
+
) -> typing.List[ListSessionsResponseItem]:
|
|
93
|
+
"""
|
|
94
|
+
Returns the 2FA verifications for the service identified by `service_id`, within the requested date range.
|
|
95
|
+
|
|
96
|
+
Parameters
|
|
97
|
+
----------
|
|
98
|
+
service_id : str
|
|
99
|
+
The unique ID of the 2FA service.
|
|
100
|
+
|
|
101
|
+
from_ : dt.date
|
|
102
|
+
Start of the date range to query, in `YYYY-MM-DD` format. Inclusive.
|
|
103
|
+
|
|
104
|
+
to : dt.date
|
|
105
|
+
End of the date range to query, in `YYYY-MM-DD` format. Inclusive.
|
|
106
|
+
|
|
107
|
+
request_options : typing.Optional[RequestOptions]
|
|
108
|
+
Request-specific configuration.
|
|
109
|
+
|
|
110
|
+
Returns
|
|
111
|
+
-------
|
|
112
|
+
typing.List[ListSessionsResponseItem]
|
|
113
|
+
Returns the list of 2FA verifications.
|
|
114
|
+
|
|
115
|
+
Examples
|
|
116
|
+
--------
|
|
117
|
+
import asyncio
|
|
118
|
+
import datetime
|
|
119
|
+
|
|
120
|
+
from wavix import AsyncWavix
|
|
121
|
+
|
|
122
|
+
client = AsyncWavix(
|
|
123
|
+
token="YOUR_TOKEN",
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
async def main() -> None:
|
|
128
|
+
await client.two_fa.sessions.list(
|
|
129
|
+
service_id="7204a030201211ee9fb47d093f2f127c",
|
|
130
|
+
from_=datetime.date.fromisoformat(
|
|
131
|
+
"2022-01-01",
|
|
132
|
+
),
|
|
133
|
+
to=datetime.date.fromisoformat(
|
|
134
|
+
"2022-01-31",
|
|
135
|
+
),
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
asyncio.run(main())
|
|
140
|
+
"""
|
|
141
|
+
_response = await self._raw_client.list(service_id, from_=from_, to=to, request_options=request_options)
|
|
142
|
+
return _response.data
|