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,1263 @@
|
|
|
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 ...core.serialization import convert_and_respect_annotation_metadata
|
|
14
|
+
from ...errors.bad_request_error import BadRequestError
|
|
15
|
+
from ...errors.forbidden_error import ForbiddenError
|
|
16
|
+
from ...errors.not_found_error import NotFoundError
|
|
17
|
+
from ...errors.unprocessable_entity_error import UnprocessableEntityError
|
|
18
|
+
from ...types.ten_dlc_brand_create_request import TenDlcBrandCreateRequest
|
|
19
|
+
from .types.create_brands_response import CreateBrandsResponse
|
|
20
|
+
from .types.delete_brands_response import DeleteBrandsResponse
|
|
21
|
+
from .types.get_brands_response import GetBrandsResponse
|
|
22
|
+
from .types.list_brands_response import ListBrandsResponse
|
|
23
|
+
from .types.qualify_usecase_brands_request_use_case import QualifyUsecaseBrandsRequestUseCase
|
|
24
|
+
from .types.qualify_usecase_brands_response import QualifyUsecaseBrandsResponse
|
|
25
|
+
from .types.ten_dlc_brand_update_request_entity_type import TenDlcBrandUpdateRequestEntityType
|
|
26
|
+
from .types.ten_dlc_brand_update_request_vertical import TenDlcBrandUpdateRequestVertical
|
|
27
|
+
from .types.update_brands_response import UpdateBrandsResponse
|
|
28
|
+
from pydantic import ValidationError
|
|
29
|
+
|
|
30
|
+
# this is used as the default value for optional parameters
|
|
31
|
+
OMIT = typing.cast(typing.Any, ...)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class RawBrandsClient:
|
|
35
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
36
|
+
self._client_wrapper = client_wrapper
|
|
37
|
+
|
|
38
|
+
def list(
|
|
39
|
+
self,
|
|
40
|
+
*,
|
|
41
|
+
dba_name: typing.Optional[str] = None,
|
|
42
|
+
company_name: typing.Optional[str] = None,
|
|
43
|
+
entity_type: typing.Optional[str] = None,
|
|
44
|
+
status: typing.Optional[str] = None,
|
|
45
|
+
country: typing.Optional[str] = None,
|
|
46
|
+
show_deleted: typing.Optional[bool] = None,
|
|
47
|
+
ein_taxid: typing.Optional[str] = None,
|
|
48
|
+
mock: typing.Optional[bool] = None,
|
|
49
|
+
created_before: typing.Optional[str] = None,
|
|
50
|
+
created_after: typing.Optional[str] = None,
|
|
51
|
+
page: typing.Optional[int] = None,
|
|
52
|
+
per_page: typing.Optional[int] = None,
|
|
53
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
54
|
+
) -> HttpResponse[ListBrandsResponse]:
|
|
55
|
+
"""
|
|
56
|
+
Returns a paginated list of 10DLC Brands for the authenticated account, filtered by date, name, legal name, and status.
|
|
57
|
+
|
|
58
|
+
Parameters
|
|
59
|
+
----------
|
|
60
|
+
dba_name : typing.Optional[str]
|
|
61
|
+
Filters Brands by `dba_name` (doing-business-as name). Matches partial values.
|
|
62
|
+
|
|
63
|
+
company_name : typing.Optional[str]
|
|
64
|
+
Filters Brands by `company_name` (registered legal name). Matches partial values.
|
|
65
|
+
|
|
66
|
+
entity_type : typing.Optional[str]
|
|
67
|
+
Filters Brands by business entity type, such as `PRIVATE_PROFIT`.
|
|
68
|
+
|
|
69
|
+
status : typing.Optional[str]
|
|
70
|
+
Filters Brands by identity verification status, such as `VERIFIED`.
|
|
71
|
+
|
|
72
|
+
country : typing.Optional[str]
|
|
73
|
+
Filters Brands by registration country, as an ISO 3166-1 alpha-2 code (e.g., `US`).
|
|
74
|
+
|
|
75
|
+
show_deleted : typing.Optional[bool]
|
|
76
|
+
When `true`, includes deleted Brands in the results. Default `false`.
|
|
77
|
+
|
|
78
|
+
ein_taxid : typing.Optional[str]
|
|
79
|
+
Filters Brands by their Employer Identification Number (EIN) or tax ID.
|
|
80
|
+
|
|
81
|
+
mock : typing.Optional[bool]
|
|
82
|
+
When `true`, returns only mock Brands used for testing. Default `false`.
|
|
83
|
+
|
|
84
|
+
created_before : typing.Optional[str]
|
|
85
|
+
Returns brands created on or before this date, in `YYYY-MM-DD` format.
|
|
86
|
+
|
|
87
|
+
created_after : typing.Optional[str]
|
|
88
|
+
Returns brands created on or after this date, in `YYYY-MM-DD` format.
|
|
89
|
+
|
|
90
|
+
page : typing.Optional[int]
|
|
91
|
+
Page number to retrieve. Default `1`.
|
|
92
|
+
|
|
93
|
+
per_page : typing.Optional[int]
|
|
94
|
+
Number of records to return per page. Default `25`.
|
|
95
|
+
|
|
96
|
+
request_options : typing.Optional[RequestOptions]
|
|
97
|
+
Request-specific configuration.
|
|
98
|
+
|
|
99
|
+
Returns
|
|
100
|
+
-------
|
|
101
|
+
HttpResponse[ListBrandsResponse]
|
|
102
|
+
Returns a paginated list of 10DLC Brands.
|
|
103
|
+
"""
|
|
104
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
105
|
+
"v3/10dlc/brands",
|
|
106
|
+
method="GET",
|
|
107
|
+
params={
|
|
108
|
+
"dba_name": dba_name,
|
|
109
|
+
"company_name": company_name,
|
|
110
|
+
"entity_type": entity_type,
|
|
111
|
+
"status": status,
|
|
112
|
+
"country": country,
|
|
113
|
+
"show_deleted": show_deleted,
|
|
114
|
+
"ein_taxid": ein_taxid,
|
|
115
|
+
"mock": mock,
|
|
116
|
+
"created_before": created_before,
|
|
117
|
+
"created_after": created_after,
|
|
118
|
+
"page": page,
|
|
119
|
+
"per_page": per_page,
|
|
120
|
+
},
|
|
121
|
+
request_options=request_options,
|
|
122
|
+
)
|
|
123
|
+
try:
|
|
124
|
+
if 200 <= _response.status_code < 300:
|
|
125
|
+
_data = typing.cast(
|
|
126
|
+
ListBrandsResponse,
|
|
127
|
+
parse_obj_as(
|
|
128
|
+
type_=ListBrandsResponse, # type: ignore
|
|
129
|
+
object_=_response.json(),
|
|
130
|
+
),
|
|
131
|
+
)
|
|
132
|
+
return HttpResponse(response=_response, data=_data)
|
|
133
|
+
if _response.status_code == 400:
|
|
134
|
+
raise BadRequestError(
|
|
135
|
+
headers=dict(_response.headers),
|
|
136
|
+
body=typing.cast(
|
|
137
|
+
typing.Any,
|
|
138
|
+
parse_obj_as(
|
|
139
|
+
type_=typing.Any, # type: ignore
|
|
140
|
+
object_=_response.json(),
|
|
141
|
+
),
|
|
142
|
+
),
|
|
143
|
+
)
|
|
144
|
+
if _response.status_code == 403:
|
|
145
|
+
raise ForbiddenError(
|
|
146
|
+
headers=dict(_response.headers),
|
|
147
|
+
body=typing.cast(
|
|
148
|
+
typing.Any,
|
|
149
|
+
parse_obj_as(
|
|
150
|
+
type_=typing.Any, # type: ignore
|
|
151
|
+
object_=_response.json(),
|
|
152
|
+
),
|
|
153
|
+
),
|
|
154
|
+
)
|
|
155
|
+
_response_json = _response.json()
|
|
156
|
+
except JSONDecodeError:
|
|
157
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
158
|
+
except ValidationError as e:
|
|
159
|
+
raise ParsingError(
|
|
160
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
161
|
+
)
|
|
162
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
163
|
+
|
|
164
|
+
def create(
|
|
165
|
+
self, *, request: TenDlcBrandCreateRequest, request_options: typing.Optional[RequestOptions] = None
|
|
166
|
+
) -> HttpResponse[CreateBrandsResponse]:
|
|
167
|
+
"""
|
|
168
|
+
Registers a 10DLC Brand. TCR automatically verifies the brand identity. Only brands with `VERIFIED` or `VETTED_VERIFIED` identity status can register 10DLC Campaigns.
|
|
169
|
+
|
|
170
|
+
Parameters
|
|
171
|
+
----------
|
|
172
|
+
request : TenDlcBrandCreateRequest
|
|
173
|
+
|
|
174
|
+
request_options : typing.Optional[RequestOptions]
|
|
175
|
+
Request-specific configuration.
|
|
176
|
+
|
|
177
|
+
Returns
|
|
178
|
+
-------
|
|
179
|
+
HttpResponse[CreateBrandsResponse]
|
|
180
|
+
Returns the registered 10DLC Brand.
|
|
181
|
+
"""
|
|
182
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
183
|
+
"v3/10dlc/brands",
|
|
184
|
+
method="POST",
|
|
185
|
+
json=convert_and_respect_annotation_metadata(
|
|
186
|
+
object_=request, annotation=TenDlcBrandCreateRequest, direction="write"
|
|
187
|
+
),
|
|
188
|
+
headers={
|
|
189
|
+
"content-type": "application/json",
|
|
190
|
+
},
|
|
191
|
+
request_options=request_options,
|
|
192
|
+
omit=OMIT,
|
|
193
|
+
)
|
|
194
|
+
try:
|
|
195
|
+
if 200 <= _response.status_code < 300:
|
|
196
|
+
_data = typing.cast(
|
|
197
|
+
CreateBrandsResponse,
|
|
198
|
+
parse_obj_as(
|
|
199
|
+
type_=CreateBrandsResponse, # type: ignore
|
|
200
|
+
object_=_response.json(),
|
|
201
|
+
),
|
|
202
|
+
)
|
|
203
|
+
return HttpResponse(response=_response, data=_data)
|
|
204
|
+
if _response.status_code == 400:
|
|
205
|
+
raise BadRequestError(
|
|
206
|
+
headers=dict(_response.headers),
|
|
207
|
+
body=typing.cast(
|
|
208
|
+
typing.Any,
|
|
209
|
+
parse_obj_as(
|
|
210
|
+
type_=typing.Any, # type: ignore
|
|
211
|
+
object_=_response.json(),
|
|
212
|
+
),
|
|
213
|
+
),
|
|
214
|
+
)
|
|
215
|
+
if _response.status_code == 403:
|
|
216
|
+
raise ForbiddenError(
|
|
217
|
+
headers=dict(_response.headers),
|
|
218
|
+
body=typing.cast(
|
|
219
|
+
typing.Any,
|
|
220
|
+
parse_obj_as(
|
|
221
|
+
type_=typing.Any, # type: ignore
|
|
222
|
+
object_=_response.json(),
|
|
223
|
+
),
|
|
224
|
+
),
|
|
225
|
+
)
|
|
226
|
+
_response_json = _response.json()
|
|
227
|
+
except JSONDecodeError:
|
|
228
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
229
|
+
except ValidationError as e:
|
|
230
|
+
raise ParsingError(
|
|
231
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
232
|
+
)
|
|
233
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
234
|
+
|
|
235
|
+
def get(
|
|
236
|
+
self, brand_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
237
|
+
) -> HttpResponse[GetBrandsResponse]:
|
|
238
|
+
"""
|
|
239
|
+
Returns the 10DLC Brand identified by `brand_id`.
|
|
240
|
+
|
|
241
|
+
Parameters
|
|
242
|
+
----------
|
|
243
|
+
brand_id : str
|
|
244
|
+
The unique ID of the 10DLC Brand.
|
|
245
|
+
|
|
246
|
+
request_options : typing.Optional[RequestOptions]
|
|
247
|
+
Request-specific configuration.
|
|
248
|
+
|
|
249
|
+
Returns
|
|
250
|
+
-------
|
|
251
|
+
HttpResponse[GetBrandsResponse]
|
|
252
|
+
Returns the 10DLC Brand.
|
|
253
|
+
"""
|
|
254
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
255
|
+
f"v3/10dlc/brands/{encode_path_param(brand_id)}",
|
|
256
|
+
method="GET",
|
|
257
|
+
request_options=request_options,
|
|
258
|
+
)
|
|
259
|
+
try:
|
|
260
|
+
if 200 <= _response.status_code < 300:
|
|
261
|
+
_data = typing.cast(
|
|
262
|
+
GetBrandsResponse,
|
|
263
|
+
parse_obj_as(
|
|
264
|
+
type_=GetBrandsResponse, # type: ignore
|
|
265
|
+
object_=_response.json(),
|
|
266
|
+
),
|
|
267
|
+
)
|
|
268
|
+
return HttpResponse(response=_response, data=_data)
|
|
269
|
+
if _response.status_code == 403:
|
|
270
|
+
raise ForbiddenError(
|
|
271
|
+
headers=dict(_response.headers),
|
|
272
|
+
body=typing.cast(
|
|
273
|
+
typing.Any,
|
|
274
|
+
parse_obj_as(
|
|
275
|
+
type_=typing.Any, # type: ignore
|
|
276
|
+
object_=_response.json(),
|
|
277
|
+
),
|
|
278
|
+
),
|
|
279
|
+
)
|
|
280
|
+
if _response.status_code == 404:
|
|
281
|
+
raise NotFoundError(
|
|
282
|
+
headers=dict(_response.headers),
|
|
283
|
+
body=typing.cast(
|
|
284
|
+
typing.Any,
|
|
285
|
+
parse_obj_as(
|
|
286
|
+
type_=typing.Any, # type: ignore
|
|
287
|
+
object_=_response.json(),
|
|
288
|
+
),
|
|
289
|
+
),
|
|
290
|
+
)
|
|
291
|
+
_response_json = _response.json()
|
|
292
|
+
except JSONDecodeError:
|
|
293
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
294
|
+
except ValidationError as e:
|
|
295
|
+
raise ParsingError(
|
|
296
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
297
|
+
)
|
|
298
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
299
|
+
|
|
300
|
+
def update(
|
|
301
|
+
self,
|
|
302
|
+
brand_id: str,
|
|
303
|
+
*,
|
|
304
|
+
dba_name: typing.Optional[str] = OMIT,
|
|
305
|
+
company_name: typing.Optional[str] = OMIT,
|
|
306
|
+
entity_type: typing.Optional[TenDlcBrandUpdateRequestEntityType] = OMIT,
|
|
307
|
+
vertical: typing.Optional[TenDlcBrandUpdateRequestVertical] = OMIT,
|
|
308
|
+
ein_taxid: typing.Optional[str] = OMIT,
|
|
309
|
+
ein_taxid_country: typing.Optional[str] = OMIT,
|
|
310
|
+
website: typing.Optional[str] = OMIT,
|
|
311
|
+
stock_symbol: typing.Optional[str] = OMIT,
|
|
312
|
+
stock_exchange: typing.Optional[str] = OMIT,
|
|
313
|
+
first_name: typing.Optional[str] = OMIT,
|
|
314
|
+
last_name: typing.Optional[str] = OMIT,
|
|
315
|
+
phone_number: typing.Optional[str] = OMIT,
|
|
316
|
+
email: typing.Optional[str] = OMIT,
|
|
317
|
+
street_address: typing.Optional[str] = OMIT,
|
|
318
|
+
city: typing.Optional[str] = OMIT,
|
|
319
|
+
state_or_province: typing.Optional[str] = OMIT,
|
|
320
|
+
zip: typing.Optional[str] = OMIT,
|
|
321
|
+
country: typing.Optional[str] = OMIT,
|
|
322
|
+
mock: typing.Optional[bool] = OMIT,
|
|
323
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
324
|
+
) -> HttpResponse[UpdateBrandsResponse]:
|
|
325
|
+
"""
|
|
326
|
+
Updates the 10DLC Brand identified by `brand_id`. Changing identity fields, including `ein_taxid`, `ein_taxid_country`, and `entity_type`, resets the Brand status to `UNVERIFIED` and triggers automatic re-submission. Brands in `VETTED_VERIFIED` status or with active Campaigns cannot be updated.
|
|
327
|
+
|
|
328
|
+
Parameters
|
|
329
|
+
----------
|
|
330
|
+
brand_id : str
|
|
331
|
+
The unique ID of the 10DLC Brand.
|
|
332
|
+
|
|
333
|
+
dba_name : typing.Optional[str]
|
|
334
|
+
Brand name or DBA
|
|
335
|
+
|
|
336
|
+
company_name : typing.Optional[str]
|
|
337
|
+
Legal name of the company
|
|
338
|
+
|
|
339
|
+
entity_type : typing.Optional[TenDlcBrandUpdateRequestEntityType]
|
|
340
|
+
Legal entity type of the company. One of `PRIVATE_PROFIT` (privately held for-profit company), `PUBLIC_PROFIT` (publicly traded for-profit company), `NON_PROFIT` (non-profit organization), or `GOVERNMENT` (government entity).
|
|
341
|
+
|
|
342
|
+
vertical : typing.Optional[TenDlcBrandUpdateRequestVertical]
|
|
343
|
+
Business segment the Brand operates in. One of:
|
|
344
|
+
|
|
345
|
+
- `HEALTHCARE` — healthcare.
|
|
346
|
+
- `PROFESSIONAL` — professional services.
|
|
347
|
+
- `RETAIL` — retail.
|
|
348
|
+
- `TECHNOLOGY` — technology.
|
|
349
|
+
- `EDUCATION` — education.
|
|
350
|
+
- `FINANCIAL` — financial services.
|
|
351
|
+
- `NON_PROFIT` — non-profit organizations.
|
|
352
|
+
- `GOVERNMENT` — government entities.
|
|
353
|
+
- `OTHER` — any segment not listed above.
|
|
354
|
+
|
|
355
|
+
ein_taxid : typing.Optional[str]
|
|
356
|
+
IRS Employee Identification Number (EIN) for US-based or foreign companies with EIN. The numeric portion of Tax ID for companies incorporated in other countries.
|
|
357
|
+
|
|
358
|
+
ein_taxid_country : typing.Optional[str]
|
|
359
|
+
2-letter ISO country code of the Tax ID issuing country
|
|
360
|
+
|
|
361
|
+
website : typing.Optional[str]
|
|
362
|
+
The website of the business
|
|
363
|
+
|
|
364
|
+
stock_symbol : typing.Optional[str]
|
|
365
|
+
The stock symbol of the Brand. For PUBLIC_PROFIT Brands only.
|
|
366
|
+
|
|
367
|
+
stock_exchange : typing.Optional[str]
|
|
368
|
+
The stock exchange code. For PUBLIC_PROFIT Brands only.
|
|
369
|
+
|
|
370
|
+
first_name : typing.Optional[str]
|
|
371
|
+
The first name of the business contact
|
|
372
|
+
|
|
373
|
+
last_name : typing.Optional[str]
|
|
374
|
+
The last name of the business contact
|
|
375
|
+
|
|
376
|
+
phone_number : typing.Optional[str]
|
|
377
|
+
The support contact telephone in E.164 format
|
|
378
|
+
|
|
379
|
+
email : typing.Optional[str]
|
|
380
|
+
The email address of the support contact
|
|
381
|
+
|
|
382
|
+
street_address : typing.Optional[str]
|
|
383
|
+
Street name and house number
|
|
384
|
+
|
|
385
|
+
city : typing.Optional[str]
|
|
386
|
+
The city name
|
|
387
|
+
|
|
388
|
+
state_or_province : typing.Optional[str]
|
|
389
|
+
State or province. For the United States, use 2 character codes.
|
|
390
|
+
|
|
391
|
+
zip : typing.Optional[str]
|
|
392
|
+
The business zip or postal code
|
|
393
|
+
|
|
394
|
+
country : typing.Optional[str]
|
|
395
|
+
2-letter ISO country code the business address
|
|
396
|
+
|
|
397
|
+
mock : typing.Optional[bool]
|
|
398
|
+
Mock flag for testing (optional, defaults to false)
|
|
399
|
+
|
|
400
|
+
request_options : typing.Optional[RequestOptions]
|
|
401
|
+
Request-specific configuration.
|
|
402
|
+
|
|
403
|
+
Returns
|
|
404
|
+
-------
|
|
405
|
+
HttpResponse[UpdateBrandsResponse]
|
|
406
|
+
Returns the updated 10DLC Brand.
|
|
407
|
+
"""
|
|
408
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
409
|
+
f"v3/10dlc/brands/{encode_path_param(brand_id)}",
|
|
410
|
+
method="PUT",
|
|
411
|
+
json={
|
|
412
|
+
"dba_name": dba_name,
|
|
413
|
+
"company_name": company_name,
|
|
414
|
+
"entity_type": entity_type,
|
|
415
|
+
"vertical": vertical,
|
|
416
|
+
"ein_taxid": ein_taxid,
|
|
417
|
+
"ein_taxid_country": ein_taxid_country,
|
|
418
|
+
"website": website,
|
|
419
|
+
"stock_symbol": stock_symbol,
|
|
420
|
+
"stock_exchange": stock_exchange,
|
|
421
|
+
"first_name": first_name,
|
|
422
|
+
"last_name": last_name,
|
|
423
|
+
"phone_number": phone_number,
|
|
424
|
+
"email": email,
|
|
425
|
+
"street_address": street_address,
|
|
426
|
+
"city": city,
|
|
427
|
+
"state_or_province": state_or_province,
|
|
428
|
+
"zip": zip,
|
|
429
|
+
"country": country,
|
|
430
|
+
"mock": mock,
|
|
431
|
+
},
|
|
432
|
+
headers={
|
|
433
|
+
"content-type": "application/json",
|
|
434
|
+
},
|
|
435
|
+
request_options=request_options,
|
|
436
|
+
omit=OMIT,
|
|
437
|
+
)
|
|
438
|
+
try:
|
|
439
|
+
if 200 <= _response.status_code < 300:
|
|
440
|
+
_data = typing.cast(
|
|
441
|
+
UpdateBrandsResponse,
|
|
442
|
+
parse_obj_as(
|
|
443
|
+
type_=UpdateBrandsResponse, # type: ignore
|
|
444
|
+
object_=_response.json(),
|
|
445
|
+
),
|
|
446
|
+
)
|
|
447
|
+
return HttpResponse(response=_response, data=_data)
|
|
448
|
+
if _response.status_code == 400:
|
|
449
|
+
raise BadRequestError(
|
|
450
|
+
headers=dict(_response.headers),
|
|
451
|
+
body=typing.cast(
|
|
452
|
+
typing.Any,
|
|
453
|
+
parse_obj_as(
|
|
454
|
+
type_=typing.Any, # type: ignore
|
|
455
|
+
object_=_response.json(),
|
|
456
|
+
),
|
|
457
|
+
),
|
|
458
|
+
)
|
|
459
|
+
if _response.status_code == 403:
|
|
460
|
+
raise ForbiddenError(
|
|
461
|
+
headers=dict(_response.headers),
|
|
462
|
+
body=typing.cast(
|
|
463
|
+
typing.Any,
|
|
464
|
+
parse_obj_as(
|
|
465
|
+
type_=typing.Any, # type: ignore
|
|
466
|
+
object_=_response.json(),
|
|
467
|
+
),
|
|
468
|
+
),
|
|
469
|
+
)
|
|
470
|
+
if _response.status_code == 404:
|
|
471
|
+
raise NotFoundError(
|
|
472
|
+
headers=dict(_response.headers),
|
|
473
|
+
body=typing.cast(
|
|
474
|
+
typing.Any,
|
|
475
|
+
parse_obj_as(
|
|
476
|
+
type_=typing.Any, # type: ignore
|
|
477
|
+
object_=_response.json(),
|
|
478
|
+
),
|
|
479
|
+
),
|
|
480
|
+
)
|
|
481
|
+
if _response.status_code == 422:
|
|
482
|
+
raise UnprocessableEntityError(
|
|
483
|
+
headers=dict(_response.headers),
|
|
484
|
+
body=typing.cast(
|
|
485
|
+
typing.Any,
|
|
486
|
+
parse_obj_as(
|
|
487
|
+
type_=typing.Any, # type: ignore
|
|
488
|
+
object_=_response.json(),
|
|
489
|
+
),
|
|
490
|
+
),
|
|
491
|
+
)
|
|
492
|
+
_response_json = _response.json()
|
|
493
|
+
except JSONDecodeError:
|
|
494
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
495
|
+
except ValidationError as e:
|
|
496
|
+
raise ParsingError(
|
|
497
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
498
|
+
)
|
|
499
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
500
|
+
|
|
501
|
+
def delete(
|
|
502
|
+
self, brand_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
503
|
+
) -> HttpResponse[DeleteBrandsResponse]:
|
|
504
|
+
"""
|
|
505
|
+
Deletes a 10DLC Brand. Brands with active campaigns cannot be deleted.
|
|
506
|
+
|
|
507
|
+
Parameters
|
|
508
|
+
----------
|
|
509
|
+
brand_id : str
|
|
510
|
+
The unique ID of the 10DLC Brand.
|
|
511
|
+
|
|
512
|
+
request_options : typing.Optional[RequestOptions]
|
|
513
|
+
Request-specific configuration.
|
|
514
|
+
|
|
515
|
+
Returns
|
|
516
|
+
-------
|
|
517
|
+
HttpResponse[DeleteBrandsResponse]
|
|
518
|
+
Returns a success confirmation. The 10DLC Brand is deleted.
|
|
519
|
+
"""
|
|
520
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
521
|
+
f"v3/10dlc/brands/{encode_path_param(brand_id)}",
|
|
522
|
+
method="DELETE",
|
|
523
|
+
request_options=request_options,
|
|
524
|
+
)
|
|
525
|
+
try:
|
|
526
|
+
if 200 <= _response.status_code < 300:
|
|
527
|
+
_data = typing.cast(
|
|
528
|
+
DeleteBrandsResponse,
|
|
529
|
+
parse_obj_as(
|
|
530
|
+
type_=DeleteBrandsResponse, # type: ignore
|
|
531
|
+
object_=_response.json(),
|
|
532
|
+
),
|
|
533
|
+
)
|
|
534
|
+
return HttpResponse(response=_response, data=_data)
|
|
535
|
+
if _response.status_code == 403:
|
|
536
|
+
raise ForbiddenError(
|
|
537
|
+
headers=dict(_response.headers),
|
|
538
|
+
body=typing.cast(
|
|
539
|
+
typing.Any,
|
|
540
|
+
parse_obj_as(
|
|
541
|
+
type_=typing.Any, # type: ignore
|
|
542
|
+
object_=_response.json(),
|
|
543
|
+
),
|
|
544
|
+
),
|
|
545
|
+
)
|
|
546
|
+
if _response.status_code == 404:
|
|
547
|
+
raise NotFoundError(
|
|
548
|
+
headers=dict(_response.headers),
|
|
549
|
+
body=typing.cast(
|
|
550
|
+
typing.Any,
|
|
551
|
+
parse_obj_as(
|
|
552
|
+
type_=typing.Any, # type: ignore
|
|
553
|
+
object_=_response.json(),
|
|
554
|
+
),
|
|
555
|
+
),
|
|
556
|
+
)
|
|
557
|
+
_response_json = _response.json()
|
|
558
|
+
except JSONDecodeError:
|
|
559
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
560
|
+
except ValidationError as e:
|
|
561
|
+
raise ParsingError(
|
|
562
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
563
|
+
)
|
|
564
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
565
|
+
|
|
566
|
+
def qualify_usecase(
|
|
567
|
+
self,
|
|
568
|
+
brand_id: str,
|
|
569
|
+
use_case: QualifyUsecaseBrandsRequestUseCase,
|
|
570
|
+
*,
|
|
571
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
572
|
+
) -> HttpResponse[QualifyUsecaseBrandsResponse]:
|
|
573
|
+
"""
|
|
574
|
+
Returns the qualification results for a 10DLC Brand use case. Includes MNO-specific attributes, restrictions, and fees.
|
|
575
|
+
|
|
576
|
+
Parameters
|
|
577
|
+
----------
|
|
578
|
+
brand_id : str
|
|
579
|
+
The unique ID of the 10DLC Brand.
|
|
580
|
+
|
|
581
|
+
use_case : QualifyUsecaseBrandsRequestUseCase
|
|
582
|
+
Name of the use case to qualify the Brand for.
|
|
583
|
+
|
|
584
|
+
request_options : typing.Optional[RequestOptions]
|
|
585
|
+
Request-specific configuration.
|
|
586
|
+
|
|
587
|
+
Returns
|
|
588
|
+
-------
|
|
589
|
+
HttpResponse[QualifyUsecaseBrandsResponse]
|
|
590
|
+
Returns the use case qualification results for the Brand.
|
|
591
|
+
"""
|
|
592
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
593
|
+
f"v3/10dlc/brands/{encode_path_param(brand_id)}/usecases/{encode_path_param(use_case)}",
|
|
594
|
+
method="GET",
|
|
595
|
+
request_options=request_options,
|
|
596
|
+
)
|
|
597
|
+
try:
|
|
598
|
+
if 200 <= _response.status_code < 300:
|
|
599
|
+
_data = typing.cast(
|
|
600
|
+
QualifyUsecaseBrandsResponse,
|
|
601
|
+
parse_obj_as(
|
|
602
|
+
type_=QualifyUsecaseBrandsResponse, # type: ignore
|
|
603
|
+
object_=_response.json(),
|
|
604
|
+
),
|
|
605
|
+
)
|
|
606
|
+
return HttpResponse(response=_response, data=_data)
|
|
607
|
+
if _response.status_code == 403:
|
|
608
|
+
raise ForbiddenError(
|
|
609
|
+
headers=dict(_response.headers),
|
|
610
|
+
body=typing.cast(
|
|
611
|
+
typing.Any,
|
|
612
|
+
parse_obj_as(
|
|
613
|
+
type_=typing.Any, # type: ignore
|
|
614
|
+
object_=_response.json(),
|
|
615
|
+
),
|
|
616
|
+
),
|
|
617
|
+
)
|
|
618
|
+
if _response.status_code == 404:
|
|
619
|
+
raise NotFoundError(
|
|
620
|
+
headers=dict(_response.headers),
|
|
621
|
+
body=typing.cast(
|
|
622
|
+
typing.Any,
|
|
623
|
+
parse_obj_as(
|
|
624
|
+
type_=typing.Any, # type: ignore
|
|
625
|
+
object_=_response.json(),
|
|
626
|
+
),
|
|
627
|
+
),
|
|
628
|
+
)
|
|
629
|
+
if _response.status_code == 422:
|
|
630
|
+
raise UnprocessableEntityError(
|
|
631
|
+
headers=dict(_response.headers),
|
|
632
|
+
body=typing.cast(
|
|
633
|
+
typing.Any,
|
|
634
|
+
parse_obj_as(
|
|
635
|
+
type_=typing.Any, # type: ignore
|
|
636
|
+
object_=_response.json(),
|
|
637
|
+
),
|
|
638
|
+
),
|
|
639
|
+
)
|
|
640
|
+
_response_json = _response.json()
|
|
641
|
+
except JSONDecodeError:
|
|
642
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
643
|
+
except ValidationError as e:
|
|
644
|
+
raise ParsingError(
|
|
645
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
646
|
+
)
|
|
647
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
class AsyncRawBrandsClient:
|
|
651
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
652
|
+
self._client_wrapper = client_wrapper
|
|
653
|
+
|
|
654
|
+
async def list(
|
|
655
|
+
self,
|
|
656
|
+
*,
|
|
657
|
+
dba_name: typing.Optional[str] = None,
|
|
658
|
+
company_name: typing.Optional[str] = None,
|
|
659
|
+
entity_type: typing.Optional[str] = None,
|
|
660
|
+
status: typing.Optional[str] = None,
|
|
661
|
+
country: typing.Optional[str] = None,
|
|
662
|
+
show_deleted: typing.Optional[bool] = None,
|
|
663
|
+
ein_taxid: typing.Optional[str] = None,
|
|
664
|
+
mock: typing.Optional[bool] = None,
|
|
665
|
+
created_before: typing.Optional[str] = None,
|
|
666
|
+
created_after: typing.Optional[str] = None,
|
|
667
|
+
page: typing.Optional[int] = None,
|
|
668
|
+
per_page: typing.Optional[int] = None,
|
|
669
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
670
|
+
) -> AsyncHttpResponse[ListBrandsResponse]:
|
|
671
|
+
"""
|
|
672
|
+
Returns a paginated list of 10DLC Brands for the authenticated account, filtered by date, name, legal name, and status.
|
|
673
|
+
|
|
674
|
+
Parameters
|
|
675
|
+
----------
|
|
676
|
+
dba_name : typing.Optional[str]
|
|
677
|
+
Filters Brands by `dba_name` (doing-business-as name). Matches partial values.
|
|
678
|
+
|
|
679
|
+
company_name : typing.Optional[str]
|
|
680
|
+
Filters Brands by `company_name` (registered legal name). Matches partial values.
|
|
681
|
+
|
|
682
|
+
entity_type : typing.Optional[str]
|
|
683
|
+
Filters Brands by business entity type, such as `PRIVATE_PROFIT`.
|
|
684
|
+
|
|
685
|
+
status : typing.Optional[str]
|
|
686
|
+
Filters Brands by identity verification status, such as `VERIFIED`.
|
|
687
|
+
|
|
688
|
+
country : typing.Optional[str]
|
|
689
|
+
Filters Brands by registration country, as an ISO 3166-1 alpha-2 code (e.g., `US`).
|
|
690
|
+
|
|
691
|
+
show_deleted : typing.Optional[bool]
|
|
692
|
+
When `true`, includes deleted Brands in the results. Default `false`.
|
|
693
|
+
|
|
694
|
+
ein_taxid : typing.Optional[str]
|
|
695
|
+
Filters Brands by their Employer Identification Number (EIN) or tax ID.
|
|
696
|
+
|
|
697
|
+
mock : typing.Optional[bool]
|
|
698
|
+
When `true`, returns only mock Brands used for testing. Default `false`.
|
|
699
|
+
|
|
700
|
+
created_before : typing.Optional[str]
|
|
701
|
+
Returns brands created on or before this date, in `YYYY-MM-DD` format.
|
|
702
|
+
|
|
703
|
+
created_after : typing.Optional[str]
|
|
704
|
+
Returns brands created on or after this date, in `YYYY-MM-DD` format.
|
|
705
|
+
|
|
706
|
+
page : typing.Optional[int]
|
|
707
|
+
Page number to retrieve. Default `1`.
|
|
708
|
+
|
|
709
|
+
per_page : typing.Optional[int]
|
|
710
|
+
Number of records to return per page. Default `25`.
|
|
711
|
+
|
|
712
|
+
request_options : typing.Optional[RequestOptions]
|
|
713
|
+
Request-specific configuration.
|
|
714
|
+
|
|
715
|
+
Returns
|
|
716
|
+
-------
|
|
717
|
+
AsyncHttpResponse[ListBrandsResponse]
|
|
718
|
+
Returns a paginated list of 10DLC Brands.
|
|
719
|
+
"""
|
|
720
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
721
|
+
"v3/10dlc/brands",
|
|
722
|
+
method="GET",
|
|
723
|
+
params={
|
|
724
|
+
"dba_name": dba_name,
|
|
725
|
+
"company_name": company_name,
|
|
726
|
+
"entity_type": entity_type,
|
|
727
|
+
"status": status,
|
|
728
|
+
"country": country,
|
|
729
|
+
"show_deleted": show_deleted,
|
|
730
|
+
"ein_taxid": ein_taxid,
|
|
731
|
+
"mock": mock,
|
|
732
|
+
"created_before": created_before,
|
|
733
|
+
"created_after": created_after,
|
|
734
|
+
"page": page,
|
|
735
|
+
"per_page": per_page,
|
|
736
|
+
},
|
|
737
|
+
request_options=request_options,
|
|
738
|
+
)
|
|
739
|
+
try:
|
|
740
|
+
if 200 <= _response.status_code < 300:
|
|
741
|
+
_data = typing.cast(
|
|
742
|
+
ListBrandsResponse,
|
|
743
|
+
parse_obj_as(
|
|
744
|
+
type_=ListBrandsResponse, # type: ignore
|
|
745
|
+
object_=_response.json(),
|
|
746
|
+
),
|
|
747
|
+
)
|
|
748
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
749
|
+
if _response.status_code == 400:
|
|
750
|
+
raise BadRequestError(
|
|
751
|
+
headers=dict(_response.headers),
|
|
752
|
+
body=typing.cast(
|
|
753
|
+
typing.Any,
|
|
754
|
+
parse_obj_as(
|
|
755
|
+
type_=typing.Any, # type: ignore
|
|
756
|
+
object_=_response.json(),
|
|
757
|
+
),
|
|
758
|
+
),
|
|
759
|
+
)
|
|
760
|
+
if _response.status_code == 403:
|
|
761
|
+
raise ForbiddenError(
|
|
762
|
+
headers=dict(_response.headers),
|
|
763
|
+
body=typing.cast(
|
|
764
|
+
typing.Any,
|
|
765
|
+
parse_obj_as(
|
|
766
|
+
type_=typing.Any, # type: ignore
|
|
767
|
+
object_=_response.json(),
|
|
768
|
+
),
|
|
769
|
+
),
|
|
770
|
+
)
|
|
771
|
+
_response_json = _response.json()
|
|
772
|
+
except JSONDecodeError:
|
|
773
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
774
|
+
except ValidationError as e:
|
|
775
|
+
raise ParsingError(
|
|
776
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
777
|
+
)
|
|
778
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
779
|
+
|
|
780
|
+
async def create(
|
|
781
|
+
self, *, request: TenDlcBrandCreateRequest, request_options: typing.Optional[RequestOptions] = None
|
|
782
|
+
) -> AsyncHttpResponse[CreateBrandsResponse]:
|
|
783
|
+
"""
|
|
784
|
+
Registers a 10DLC Brand. TCR automatically verifies the brand identity. Only brands with `VERIFIED` or `VETTED_VERIFIED` identity status can register 10DLC Campaigns.
|
|
785
|
+
|
|
786
|
+
Parameters
|
|
787
|
+
----------
|
|
788
|
+
request : TenDlcBrandCreateRequest
|
|
789
|
+
|
|
790
|
+
request_options : typing.Optional[RequestOptions]
|
|
791
|
+
Request-specific configuration.
|
|
792
|
+
|
|
793
|
+
Returns
|
|
794
|
+
-------
|
|
795
|
+
AsyncHttpResponse[CreateBrandsResponse]
|
|
796
|
+
Returns the registered 10DLC Brand.
|
|
797
|
+
"""
|
|
798
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
799
|
+
"v3/10dlc/brands",
|
|
800
|
+
method="POST",
|
|
801
|
+
json=convert_and_respect_annotation_metadata(
|
|
802
|
+
object_=request, annotation=TenDlcBrandCreateRequest, direction="write"
|
|
803
|
+
),
|
|
804
|
+
headers={
|
|
805
|
+
"content-type": "application/json",
|
|
806
|
+
},
|
|
807
|
+
request_options=request_options,
|
|
808
|
+
omit=OMIT,
|
|
809
|
+
)
|
|
810
|
+
try:
|
|
811
|
+
if 200 <= _response.status_code < 300:
|
|
812
|
+
_data = typing.cast(
|
|
813
|
+
CreateBrandsResponse,
|
|
814
|
+
parse_obj_as(
|
|
815
|
+
type_=CreateBrandsResponse, # type: ignore
|
|
816
|
+
object_=_response.json(),
|
|
817
|
+
),
|
|
818
|
+
)
|
|
819
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
820
|
+
if _response.status_code == 400:
|
|
821
|
+
raise BadRequestError(
|
|
822
|
+
headers=dict(_response.headers),
|
|
823
|
+
body=typing.cast(
|
|
824
|
+
typing.Any,
|
|
825
|
+
parse_obj_as(
|
|
826
|
+
type_=typing.Any, # type: ignore
|
|
827
|
+
object_=_response.json(),
|
|
828
|
+
),
|
|
829
|
+
),
|
|
830
|
+
)
|
|
831
|
+
if _response.status_code == 403:
|
|
832
|
+
raise ForbiddenError(
|
|
833
|
+
headers=dict(_response.headers),
|
|
834
|
+
body=typing.cast(
|
|
835
|
+
typing.Any,
|
|
836
|
+
parse_obj_as(
|
|
837
|
+
type_=typing.Any, # type: ignore
|
|
838
|
+
object_=_response.json(),
|
|
839
|
+
),
|
|
840
|
+
),
|
|
841
|
+
)
|
|
842
|
+
_response_json = _response.json()
|
|
843
|
+
except JSONDecodeError:
|
|
844
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
845
|
+
except ValidationError as e:
|
|
846
|
+
raise ParsingError(
|
|
847
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
848
|
+
)
|
|
849
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
850
|
+
|
|
851
|
+
async def get(
|
|
852
|
+
self, brand_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
853
|
+
) -> AsyncHttpResponse[GetBrandsResponse]:
|
|
854
|
+
"""
|
|
855
|
+
Returns the 10DLC Brand identified by `brand_id`.
|
|
856
|
+
|
|
857
|
+
Parameters
|
|
858
|
+
----------
|
|
859
|
+
brand_id : str
|
|
860
|
+
The unique ID of the 10DLC Brand.
|
|
861
|
+
|
|
862
|
+
request_options : typing.Optional[RequestOptions]
|
|
863
|
+
Request-specific configuration.
|
|
864
|
+
|
|
865
|
+
Returns
|
|
866
|
+
-------
|
|
867
|
+
AsyncHttpResponse[GetBrandsResponse]
|
|
868
|
+
Returns the 10DLC Brand.
|
|
869
|
+
"""
|
|
870
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
871
|
+
f"v3/10dlc/brands/{encode_path_param(brand_id)}",
|
|
872
|
+
method="GET",
|
|
873
|
+
request_options=request_options,
|
|
874
|
+
)
|
|
875
|
+
try:
|
|
876
|
+
if 200 <= _response.status_code < 300:
|
|
877
|
+
_data = typing.cast(
|
|
878
|
+
GetBrandsResponse,
|
|
879
|
+
parse_obj_as(
|
|
880
|
+
type_=GetBrandsResponse, # type: ignore
|
|
881
|
+
object_=_response.json(),
|
|
882
|
+
),
|
|
883
|
+
)
|
|
884
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
885
|
+
if _response.status_code == 403:
|
|
886
|
+
raise ForbiddenError(
|
|
887
|
+
headers=dict(_response.headers),
|
|
888
|
+
body=typing.cast(
|
|
889
|
+
typing.Any,
|
|
890
|
+
parse_obj_as(
|
|
891
|
+
type_=typing.Any, # type: ignore
|
|
892
|
+
object_=_response.json(),
|
|
893
|
+
),
|
|
894
|
+
),
|
|
895
|
+
)
|
|
896
|
+
if _response.status_code == 404:
|
|
897
|
+
raise NotFoundError(
|
|
898
|
+
headers=dict(_response.headers),
|
|
899
|
+
body=typing.cast(
|
|
900
|
+
typing.Any,
|
|
901
|
+
parse_obj_as(
|
|
902
|
+
type_=typing.Any, # type: ignore
|
|
903
|
+
object_=_response.json(),
|
|
904
|
+
),
|
|
905
|
+
),
|
|
906
|
+
)
|
|
907
|
+
_response_json = _response.json()
|
|
908
|
+
except JSONDecodeError:
|
|
909
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
910
|
+
except ValidationError as e:
|
|
911
|
+
raise ParsingError(
|
|
912
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
913
|
+
)
|
|
914
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
915
|
+
|
|
916
|
+
async def update(
|
|
917
|
+
self,
|
|
918
|
+
brand_id: str,
|
|
919
|
+
*,
|
|
920
|
+
dba_name: typing.Optional[str] = OMIT,
|
|
921
|
+
company_name: typing.Optional[str] = OMIT,
|
|
922
|
+
entity_type: typing.Optional[TenDlcBrandUpdateRequestEntityType] = OMIT,
|
|
923
|
+
vertical: typing.Optional[TenDlcBrandUpdateRequestVertical] = OMIT,
|
|
924
|
+
ein_taxid: typing.Optional[str] = OMIT,
|
|
925
|
+
ein_taxid_country: typing.Optional[str] = OMIT,
|
|
926
|
+
website: typing.Optional[str] = OMIT,
|
|
927
|
+
stock_symbol: typing.Optional[str] = OMIT,
|
|
928
|
+
stock_exchange: typing.Optional[str] = OMIT,
|
|
929
|
+
first_name: typing.Optional[str] = OMIT,
|
|
930
|
+
last_name: typing.Optional[str] = OMIT,
|
|
931
|
+
phone_number: typing.Optional[str] = OMIT,
|
|
932
|
+
email: typing.Optional[str] = OMIT,
|
|
933
|
+
street_address: typing.Optional[str] = OMIT,
|
|
934
|
+
city: typing.Optional[str] = OMIT,
|
|
935
|
+
state_or_province: typing.Optional[str] = OMIT,
|
|
936
|
+
zip: typing.Optional[str] = OMIT,
|
|
937
|
+
country: typing.Optional[str] = OMIT,
|
|
938
|
+
mock: typing.Optional[bool] = OMIT,
|
|
939
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
940
|
+
) -> AsyncHttpResponse[UpdateBrandsResponse]:
|
|
941
|
+
"""
|
|
942
|
+
Updates the 10DLC Brand identified by `brand_id`. Changing identity fields, including `ein_taxid`, `ein_taxid_country`, and `entity_type`, resets the Brand status to `UNVERIFIED` and triggers automatic re-submission. Brands in `VETTED_VERIFIED` status or with active Campaigns cannot be updated.
|
|
943
|
+
|
|
944
|
+
Parameters
|
|
945
|
+
----------
|
|
946
|
+
brand_id : str
|
|
947
|
+
The unique ID of the 10DLC Brand.
|
|
948
|
+
|
|
949
|
+
dba_name : typing.Optional[str]
|
|
950
|
+
Brand name or DBA
|
|
951
|
+
|
|
952
|
+
company_name : typing.Optional[str]
|
|
953
|
+
Legal name of the company
|
|
954
|
+
|
|
955
|
+
entity_type : typing.Optional[TenDlcBrandUpdateRequestEntityType]
|
|
956
|
+
Legal entity type of the company. One of `PRIVATE_PROFIT` (privately held for-profit company), `PUBLIC_PROFIT` (publicly traded for-profit company), `NON_PROFIT` (non-profit organization), or `GOVERNMENT` (government entity).
|
|
957
|
+
|
|
958
|
+
vertical : typing.Optional[TenDlcBrandUpdateRequestVertical]
|
|
959
|
+
Business segment the Brand operates in. One of:
|
|
960
|
+
|
|
961
|
+
- `HEALTHCARE` — healthcare.
|
|
962
|
+
- `PROFESSIONAL` — professional services.
|
|
963
|
+
- `RETAIL` — retail.
|
|
964
|
+
- `TECHNOLOGY` — technology.
|
|
965
|
+
- `EDUCATION` — education.
|
|
966
|
+
- `FINANCIAL` — financial services.
|
|
967
|
+
- `NON_PROFIT` — non-profit organizations.
|
|
968
|
+
- `GOVERNMENT` — government entities.
|
|
969
|
+
- `OTHER` — any segment not listed above.
|
|
970
|
+
|
|
971
|
+
ein_taxid : typing.Optional[str]
|
|
972
|
+
IRS Employee Identification Number (EIN) for US-based or foreign companies with EIN. The numeric portion of Tax ID for companies incorporated in other countries.
|
|
973
|
+
|
|
974
|
+
ein_taxid_country : typing.Optional[str]
|
|
975
|
+
2-letter ISO country code of the Tax ID issuing country
|
|
976
|
+
|
|
977
|
+
website : typing.Optional[str]
|
|
978
|
+
The website of the business
|
|
979
|
+
|
|
980
|
+
stock_symbol : typing.Optional[str]
|
|
981
|
+
The stock symbol of the Brand. For PUBLIC_PROFIT Brands only.
|
|
982
|
+
|
|
983
|
+
stock_exchange : typing.Optional[str]
|
|
984
|
+
The stock exchange code. For PUBLIC_PROFIT Brands only.
|
|
985
|
+
|
|
986
|
+
first_name : typing.Optional[str]
|
|
987
|
+
The first name of the business contact
|
|
988
|
+
|
|
989
|
+
last_name : typing.Optional[str]
|
|
990
|
+
The last name of the business contact
|
|
991
|
+
|
|
992
|
+
phone_number : typing.Optional[str]
|
|
993
|
+
The support contact telephone in E.164 format
|
|
994
|
+
|
|
995
|
+
email : typing.Optional[str]
|
|
996
|
+
The email address of the support contact
|
|
997
|
+
|
|
998
|
+
street_address : typing.Optional[str]
|
|
999
|
+
Street name and house number
|
|
1000
|
+
|
|
1001
|
+
city : typing.Optional[str]
|
|
1002
|
+
The city name
|
|
1003
|
+
|
|
1004
|
+
state_or_province : typing.Optional[str]
|
|
1005
|
+
State or province. For the United States, use 2 character codes.
|
|
1006
|
+
|
|
1007
|
+
zip : typing.Optional[str]
|
|
1008
|
+
The business zip or postal code
|
|
1009
|
+
|
|
1010
|
+
country : typing.Optional[str]
|
|
1011
|
+
2-letter ISO country code the business address
|
|
1012
|
+
|
|
1013
|
+
mock : typing.Optional[bool]
|
|
1014
|
+
Mock flag for testing (optional, defaults to false)
|
|
1015
|
+
|
|
1016
|
+
request_options : typing.Optional[RequestOptions]
|
|
1017
|
+
Request-specific configuration.
|
|
1018
|
+
|
|
1019
|
+
Returns
|
|
1020
|
+
-------
|
|
1021
|
+
AsyncHttpResponse[UpdateBrandsResponse]
|
|
1022
|
+
Returns the updated 10DLC Brand.
|
|
1023
|
+
"""
|
|
1024
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
1025
|
+
f"v3/10dlc/brands/{encode_path_param(brand_id)}",
|
|
1026
|
+
method="PUT",
|
|
1027
|
+
json={
|
|
1028
|
+
"dba_name": dba_name,
|
|
1029
|
+
"company_name": company_name,
|
|
1030
|
+
"entity_type": entity_type,
|
|
1031
|
+
"vertical": vertical,
|
|
1032
|
+
"ein_taxid": ein_taxid,
|
|
1033
|
+
"ein_taxid_country": ein_taxid_country,
|
|
1034
|
+
"website": website,
|
|
1035
|
+
"stock_symbol": stock_symbol,
|
|
1036
|
+
"stock_exchange": stock_exchange,
|
|
1037
|
+
"first_name": first_name,
|
|
1038
|
+
"last_name": last_name,
|
|
1039
|
+
"phone_number": phone_number,
|
|
1040
|
+
"email": email,
|
|
1041
|
+
"street_address": street_address,
|
|
1042
|
+
"city": city,
|
|
1043
|
+
"state_or_province": state_or_province,
|
|
1044
|
+
"zip": zip,
|
|
1045
|
+
"country": country,
|
|
1046
|
+
"mock": mock,
|
|
1047
|
+
},
|
|
1048
|
+
headers={
|
|
1049
|
+
"content-type": "application/json",
|
|
1050
|
+
},
|
|
1051
|
+
request_options=request_options,
|
|
1052
|
+
omit=OMIT,
|
|
1053
|
+
)
|
|
1054
|
+
try:
|
|
1055
|
+
if 200 <= _response.status_code < 300:
|
|
1056
|
+
_data = typing.cast(
|
|
1057
|
+
UpdateBrandsResponse,
|
|
1058
|
+
parse_obj_as(
|
|
1059
|
+
type_=UpdateBrandsResponse, # type: ignore
|
|
1060
|
+
object_=_response.json(),
|
|
1061
|
+
),
|
|
1062
|
+
)
|
|
1063
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
1064
|
+
if _response.status_code == 400:
|
|
1065
|
+
raise BadRequestError(
|
|
1066
|
+
headers=dict(_response.headers),
|
|
1067
|
+
body=typing.cast(
|
|
1068
|
+
typing.Any,
|
|
1069
|
+
parse_obj_as(
|
|
1070
|
+
type_=typing.Any, # type: ignore
|
|
1071
|
+
object_=_response.json(),
|
|
1072
|
+
),
|
|
1073
|
+
),
|
|
1074
|
+
)
|
|
1075
|
+
if _response.status_code == 403:
|
|
1076
|
+
raise ForbiddenError(
|
|
1077
|
+
headers=dict(_response.headers),
|
|
1078
|
+
body=typing.cast(
|
|
1079
|
+
typing.Any,
|
|
1080
|
+
parse_obj_as(
|
|
1081
|
+
type_=typing.Any, # type: ignore
|
|
1082
|
+
object_=_response.json(),
|
|
1083
|
+
),
|
|
1084
|
+
),
|
|
1085
|
+
)
|
|
1086
|
+
if _response.status_code == 404:
|
|
1087
|
+
raise NotFoundError(
|
|
1088
|
+
headers=dict(_response.headers),
|
|
1089
|
+
body=typing.cast(
|
|
1090
|
+
typing.Any,
|
|
1091
|
+
parse_obj_as(
|
|
1092
|
+
type_=typing.Any, # type: ignore
|
|
1093
|
+
object_=_response.json(),
|
|
1094
|
+
),
|
|
1095
|
+
),
|
|
1096
|
+
)
|
|
1097
|
+
if _response.status_code == 422:
|
|
1098
|
+
raise UnprocessableEntityError(
|
|
1099
|
+
headers=dict(_response.headers),
|
|
1100
|
+
body=typing.cast(
|
|
1101
|
+
typing.Any,
|
|
1102
|
+
parse_obj_as(
|
|
1103
|
+
type_=typing.Any, # type: ignore
|
|
1104
|
+
object_=_response.json(),
|
|
1105
|
+
),
|
|
1106
|
+
),
|
|
1107
|
+
)
|
|
1108
|
+
_response_json = _response.json()
|
|
1109
|
+
except JSONDecodeError:
|
|
1110
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1111
|
+
except ValidationError as e:
|
|
1112
|
+
raise ParsingError(
|
|
1113
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
1114
|
+
)
|
|
1115
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1116
|
+
|
|
1117
|
+
async def delete(
|
|
1118
|
+
self, brand_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
1119
|
+
) -> AsyncHttpResponse[DeleteBrandsResponse]:
|
|
1120
|
+
"""
|
|
1121
|
+
Deletes a 10DLC Brand. Brands with active campaigns cannot be deleted.
|
|
1122
|
+
|
|
1123
|
+
Parameters
|
|
1124
|
+
----------
|
|
1125
|
+
brand_id : str
|
|
1126
|
+
The unique ID of the 10DLC Brand.
|
|
1127
|
+
|
|
1128
|
+
request_options : typing.Optional[RequestOptions]
|
|
1129
|
+
Request-specific configuration.
|
|
1130
|
+
|
|
1131
|
+
Returns
|
|
1132
|
+
-------
|
|
1133
|
+
AsyncHttpResponse[DeleteBrandsResponse]
|
|
1134
|
+
Returns a success confirmation. The 10DLC Brand is deleted.
|
|
1135
|
+
"""
|
|
1136
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
1137
|
+
f"v3/10dlc/brands/{encode_path_param(brand_id)}",
|
|
1138
|
+
method="DELETE",
|
|
1139
|
+
request_options=request_options,
|
|
1140
|
+
)
|
|
1141
|
+
try:
|
|
1142
|
+
if 200 <= _response.status_code < 300:
|
|
1143
|
+
_data = typing.cast(
|
|
1144
|
+
DeleteBrandsResponse,
|
|
1145
|
+
parse_obj_as(
|
|
1146
|
+
type_=DeleteBrandsResponse, # type: ignore
|
|
1147
|
+
object_=_response.json(),
|
|
1148
|
+
),
|
|
1149
|
+
)
|
|
1150
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
1151
|
+
if _response.status_code == 403:
|
|
1152
|
+
raise ForbiddenError(
|
|
1153
|
+
headers=dict(_response.headers),
|
|
1154
|
+
body=typing.cast(
|
|
1155
|
+
typing.Any,
|
|
1156
|
+
parse_obj_as(
|
|
1157
|
+
type_=typing.Any, # type: ignore
|
|
1158
|
+
object_=_response.json(),
|
|
1159
|
+
),
|
|
1160
|
+
),
|
|
1161
|
+
)
|
|
1162
|
+
if _response.status_code == 404:
|
|
1163
|
+
raise NotFoundError(
|
|
1164
|
+
headers=dict(_response.headers),
|
|
1165
|
+
body=typing.cast(
|
|
1166
|
+
typing.Any,
|
|
1167
|
+
parse_obj_as(
|
|
1168
|
+
type_=typing.Any, # type: ignore
|
|
1169
|
+
object_=_response.json(),
|
|
1170
|
+
),
|
|
1171
|
+
),
|
|
1172
|
+
)
|
|
1173
|
+
_response_json = _response.json()
|
|
1174
|
+
except JSONDecodeError:
|
|
1175
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1176
|
+
except ValidationError as e:
|
|
1177
|
+
raise ParsingError(
|
|
1178
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
1179
|
+
)
|
|
1180
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1181
|
+
|
|
1182
|
+
async def qualify_usecase(
|
|
1183
|
+
self,
|
|
1184
|
+
brand_id: str,
|
|
1185
|
+
use_case: QualifyUsecaseBrandsRequestUseCase,
|
|
1186
|
+
*,
|
|
1187
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1188
|
+
) -> AsyncHttpResponse[QualifyUsecaseBrandsResponse]:
|
|
1189
|
+
"""
|
|
1190
|
+
Returns the qualification results for a 10DLC Brand use case. Includes MNO-specific attributes, restrictions, and fees.
|
|
1191
|
+
|
|
1192
|
+
Parameters
|
|
1193
|
+
----------
|
|
1194
|
+
brand_id : str
|
|
1195
|
+
The unique ID of the 10DLC Brand.
|
|
1196
|
+
|
|
1197
|
+
use_case : QualifyUsecaseBrandsRequestUseCase
|
|
1198
|
+
Name of the use case to qualify the Brand for.
|
|
1199
|
+
|
|
1200
|
+
request_options : typing.Optional[RequestOptions]
|
|
1201
|
+
Request-specific configuration.
|
|
1202
|
+
|
|
1203
|
+
Returns
|
|
1204
|
+
-------
|
|
1205
|
+
AsyncHttpResponse[QualifyUsecaseBrandsResponse]
|
|
1206
|
+
Returns the use case qualification results for the Brand.
|
|
1207
|
+
"""
|
|
1208
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
1209
|
+
f"v3/10dlc/brands/{encode_path_param(brand_id)}/usecases/{encode_path_param(use_case)}",
|
|
1210
|
+
method="GET",
|
|
1211
|
+
request_options=request_options,
|
|
1212
|
+
)
|
|
1213
|
+
try:
|
|
1214
|
+
if 200 <= _response.status_code < 300:
|
|
1215
|
+
_data = typing.cast(
|
|
1216
|
+
QualifyUsecaseBrandsResponse,
|
|
1217
|
+
parse_obj_as(
|
|
1218
|
+
type_=QualifyUsecaseBrandsResponse, # type: ignore
|
|
1219
|
+
object_=_response.json(),
|
|
1220
|
+
),
|
|
1221
|
+
)
|
|
1222
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
1223
|
+
if _response.status_code == 403:
|
|
1224
|
+
raise ForbiddenError(
|
|
1225
|
+
headers=dict(_response.headers),
|
|
1226
|
+
body=typing.cast(
|
|
1227
|
+
typing.Any,
|
|
1228
|
+
parse_obj_as(
|
|
1229
|
+
type_=typing.Any, # type: ignore
|
|
1230
|
+
object_=_response.json(),
|
|
1231
|
+
),
|
|
1232
|
+
),
|
|
1233
|
+
)
|
|
1234
|
+
if _response.status_code == 404:
|
|
1235
|
+
raise NotFoundError(
|
|
1236
|
+
headers=dict(_response.headers),
|
|
1237
|
+
body=typing.cast(
|
|
1238
|
+
typing.Any,
|
|
1239
|
+
parse_obj_as(
|
|
1240
|
+
type_=typing.Any, # type: ignore
|
|
1241
|
+
object_=_response.json(),
|
|
1242
|
+
),
|
|
1243
|
+
),
|
|
1244
|
+
)
|
|
1245
|
+
if _response.status_code == 422:
|
|
1246
|
+
raise UnprocessableEntityError(
|
|
1247
|
+
headers=dict(_response.headers),
|
|
1248
|
+
body=typing.cast(
|
|
1249
|
+
typing.Any,
|
|
1250
|
+
parse_obj_as(
|
|
1251
|
+
type_=typing.Any, # type: ignore
|
|
1252
|
+
object_=_response.json(),
|
|
1253
|
+
),
|
|
1254
|
+
),
|
|
1255
|
+
)
|
|
1256
|
+
_response_json = _response.json()
|
|
1257
|
+
except JSONDecodeError:
|
|
1258
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1259
|
+
except ValidationError as e:
|
|
1260
|
+
raise ParsingError(
|
|
1261
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
|
|
1262
|
+
)
|
|
1263
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|