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.
Files changed (497) hide show
  1. wavix/__init__.py +801 -0
  2. wavix/_default_clients.py +32 -0
  3. wavix/api_keys/__init__.py +4 -0
  4. wavix/api_keys/client.py +764 -0
  5. wavix/api_keys/raw_client.py +1191 -0
  6. wavix/billing/__init__.py +41 -0
  7. wavix/billing/client.py +82 -0
  8. wavix/billing/invoices/__init__.py +34 -0
  9. wavix/billing/invoices/client.py +203 -0
  10. wavix/billing/invoices/raw_client.py +302 -0
  11. wavix/billing/invoices/types/__init__.py +34 -0
  12. wavix/billing/invoices/types/list_invoices_response.py +31 -0
  13. wavix/billing/raw_client.py +13 -0
  14. wavix/billing/transactions/__init__.py +34 -0
  15. wavix/billing/transactions/client.py +209 -0
  16. wavix/billing/transactions/raw_client.py +253 -0
  17. wavix/billing/transactions/types/__init__.py +34 -0
  18. wavix/billing/transactions/types/list_transactions_response.py +31 -0
  19. wavix/buy/__init__.py +61 -0
  20. wavix/buy/cities/__init__.py +34 -0
  21. wavix/buy/cities/client.py +134 -0
  22. wavix/buy/cities/raw_client.py +201 -0
  23. wavix/buy/cities/types/__init__.py +34 -0
  24. wavix/buy/cities/types/list_cities_response.py +23 -0
  25. wavix/buy/client.py +139 -0
  26. wavix/buy/countries/__init__.py +34 -0
  27. wavix/buy/countries/client.py +116 -0
  28. wavix/buy/countries/raw_client.py +144 -0
  29. wavix/buy/countries/types/__init__.py +34 -0
  30. wavix/buy/countries/types/list_countries_response.py +23 -0
  31. wavix/buy/numbers/__init__.py +34 -0
  32. wavix/buy/numbers/client.py +168 -0
  33. wavix/buy/numbers/raw_client.py +227 -0
  34. wavix/buy/numbers/types/__init__.py +34 -0
  35. wavix/buy/numbers/types/list_numbers_response.py +26 -0
  36. wavix/buy/raw_client.py +13 -0
  37. wavix/buy/region_cities/__init__.py +34 -0
  38. wavix/buy/region_cities/client.py +142 -0
  39. wavix/buy/region_cities/raw_client.py +207 -0
  40. wavix/buy/region_cities/types/__init__.py +34 -0
  41. wavix/buy/region_cities/types/list_region_cities_response.py +23 -0
  42. wavix/buy/regions/__init__.py +34 -0
  43. wavix/buy/regions/client.py +132 -0
  44. wavix/buy/regions/raw_client.py +222 -0
  45. wavix/buy/regions/types/__init__.py +34 -0
  46. wavix/buy/regions/types/list_regions_response.py +23 -0
  47. wavix/call_control/__init__.py +40 -0
  48. wavix/call_control/audio/__init__.py +4 -0
  49. wavix/call_control/audio/client.py +195 -0
  50. wavix/call_control/audio/raw_client.py +333 -0
  51. wavix/call_control/client.py +796 -0
  52. wavix/call_control/raw_client.py +1224 -0
  53. wavix/call_control/streams/__init__.py +4 -0
  54. wavix/call_control/streams/client.py +250 -0
  55. wavix/call_control/streams/raw_client.py +325 -0
  56. wavix/call_control/types/__init__.py +38 -0
  57. wavix/call_control/types/call_dtmf_collect_request_prompt.py +33 -0
  58. wavix/call_control/types/call_dtmf_collect_request_prompt_say.py +31 -0
  59. wavix/call_recording/__init__.py +4 -0
  60. wavix/call_recording/client.py +430 -0
  61. wavix/call_recording/raw_client.py +726 -0
  62. wavix/call_webhooks/__init__.py +37 -0
  63. wavix/call_webhooks/client.py +281 -0
  64. wavix/call_webhooks/raw_client.py +529 -0
  65. wavix/call_webhooks/types/__init__.py +38 -0
  66. wavix/call_webhooks/types/call_webhooks_create_request_event_type.py +5 -0
  67. wavix/call_webhooks/types/delete_call_webhooks_request_event_type.py +5 -0
  68. wavix/cart/__init__.py +38 -0
  69. wavix/cart/client.py +327 -0
  70. wavix/cart/raw_client.py +629 -0
  71. wavix/cart/types/__init__.py +40 -0
  72. wavix/cart/types/checkout_cart_response.py +22 -0
  73. wavix/cart/types/get_cart_response.py +29 -0
  74. wavix/cart/types/remove_cart_response.py +22 -0
  75. wavix/cdrs/__init__.py +39 -0
  76. wavix/cdrs/client.py +968 -0
  77. wavix/cdrs/raw_client.py +1176 -0
  78. wavix/cdrs/transcription/__init__.py +4 -0
  79. wavix/cdrs/transcription/client.py +112 -0
  80. wavix/cdrs/transcription/raw_client.py +156 -0
  81. wavix/cdrs/types/__init__.py +38 -0
  82. wavix/cdrs/types/cdr_search_request_disposition.py +5 -0
  83. wavix/cdrs/types/cdr_search_request_type.py +5 -0
  84. wavix/client.py +578 -0
  85. wavix/core/__init__.py +127 -0
  86. wavix/core/api_error.py +23 -0
  87. wavix/core/client_wrapper.py +119 -0
  88. wavix/core/datetime_utils.py +70 -0
  89. wavix/core/file.py +67 -0
  90. wavix/core/force_multipart.py +18 -0
  91. wavix/core/http_client.py +839 -0
  92. wavix/core/http_response.py +59 -0
  93. wavix/core/http_sse/__init__.py +42 -0
  94. wavix/core/http_sse/_api.py +170 -0
  95. wavix/core/http_sse/_decoders.py +61 -0
  96. wavix/core/http_sse/_exceptions.py +7 -0
  97. wavix/core/http_sse/_models.py +17 -0
  98. wavix/core/jsonable_encoder.py +120 -0
  99. wavix/core/logging.py +107 -0
  100. wavix/core/parse_error.py +36 -0
  101. wavix/core/pydantic_utilities.py +508 -0
  102. wavix/core/query_encoder.py +58 -0
  103. wavix/core/remove_none_from_dict.py +11 -0
  104. wavix/core/request_options.py +35 -0
  105. wavix/core/serialization.py +347 -0
  106. wavix/environment.py +7 -0
  107. wavix/errors/__init__.py +56 -0
  108. wavix/errors/bad_request_error.py +10 -0
  109. wavix/errors/forbidden_error.py +10 -0
  110. wavix/errors/not_found_error.py +10 -0
  111. wavix/errors/service_unavailable_error.py +11 -0
  112. wavix/errors/too_many_requests_error.py +11 -0
  113. wavix/errors/unauthorized_error.py +11 -0
  114. wavix/errors/unprocessable_entity_error.py +10 -0
  115. wavix/link_shortener/__init__.py +34 -0
  116. wavix/link_shortener/client.py +194 -0
  117. wavix/link_shortener/metrics/__init__.py +4 -0
  118. wavix/link_shortener/metrics/client.py +198 -0
  119. wavix/link_shortener/metrics/raw_client.py +218 -0
  120. wavix/link_shortener/raw_client.py +265 -0
  121. wavix/number_validator/__init__.py +35 -0
  122. wavix/number_validator/client.py +271 -0
  123. wavix/number_validator/raw_client.py +383 -0
  124. wavix/number_validator/results/__init__.py +4 -0
  125. wavix/number_validator/results/client.py +114 -0
  126. wavix/number_validator/results/raw_client.py +156 -0
  127. wavix/number_validator/types/__init__.py +34 -0
  128. wavix/number_validator/types/get_number_validator_response.py +112 -0
  129. wavix/numbers/__init__.py +39 -0
  130. wavix/numbers/client.py +689 -0
  131. wavix/numbers/papers/__init__.py +4 -0
  132. wavix/numbers/papers/client.py +155 -0
  133. wavix/numbers/papers/raw_client.py +208 -0
  134. wavix/numbers/raw_client.py +1000 -0
  135. wavix/numbers/types/__init__.py +38 -0
  136. wavix/numbers/types/bulk_update_numbers_response.py +23 -0
  137. wavix/numbers/types/delete_numbers_response.py +22 -0
  138. wavix/profile/__init__.py +41 -0
  139. wavix/profile/client.py +308 -0
  140. wavix/profile/config/__init__.py +34 -0
  141. wavix/profile/config/client.py +100 -0
  142. wavix/profile/config/raw_client.py +124 -0
  143. wavix/profile/config/types/__init__.py +34 -0
  144. wavix/profile/config/types/get_config_response.py +25 -0
  145. wavix/profile/raw_client.py +360 -0
  146. wavix/profile/types/__init__.py +38 -0
  147. wavix/profile/types/profile_update_request_company_info.py +48 -0
  148. wavix/profile/types/profile_update_request_company_info_industry.py +22 -0
  149. wavix/py.typed +0 -0
  150. wavix/sip_trunks/__init__.py +4 -0
  151. wavix/sip_trunks/client.py +927 -0
  152. wavix/sip_trunks/raw_client.py +1324 -0
  153. wavix/sms_and_mms/__init__.py +66 -0
  154. wavix/sms_and_mms/client.py +101 -0
  155. wavix/sms_and_mms/messages/__init__.py +49 -0
  156. wavix/sms_and_mms/messages/client.py +625 -0
  157. wavix/sms_and_mms/messages/raw_client.py +793 -0
  158. wavix/sms_and_mms/messages/types/__init__.py +47 -0
  159. wavix/sms_and_mms/messages/types/get_messages_response.py +97 -0
  160. wavix/sms_and_mms/messages/types/list_all_messages_request_message_type.py +5 -0
  161. wavix/sms_and_mms/messages/types/list_messages_request_message_type.py +5 -0
  162. wavix/sms_and_mms/messages/types/list_messages_response.py +26 -0
  163. wavix/sms_and_mms/opt_outs/__init__.py +34 -0
  164. wavix/sms_and_mms/opt_outs/client.py +277 -0
  165. wavix/sms_and_mms/opt_outs/raw_client.py +438 -0
  166. wavix/sms_and_mms/opt_outs/types/__init__.py +34 -0
  167. wavix/sms_and_mms/opt_outs/types/create_opt_outs_response.py +22 -0
  168. wavix/sms_and_mms/raw_client.py +13 -0
  169. wavix/sms_and_mms/sender_ids/__init__.py +38 -0
  170. wavix/sms_and_mms/sender_ids/client.py +391 -0
  171. wavix/sms_and_mms/sender_ids/raw_client.py +617 -0
  172. wavix/sms_and_mms/sender_ids/types/__init__.py +40 -0
  173. wavix/sms_and_mms/sender_ids/types/delete_sender_ids_response.py +22 -0
  174. wavix/sms_and_mms/sender_ids/types/sender_id_create_request_monthly_volume.py +7 -0
  175. wavix/sms_and_mms/sender_ids/types/sender_id_create_request_usecase.py +5 -0
  176. wavix/speech_analytics/__init__.py +52 -0
  177. wavix/speech_analytics/client.py +372 -0
  178. wavix/speech_analytics/file/__init__.py +4 -0
  179. wavix/speech_analytics/file/client.py +114 -0
  180. wavix/speech_analytics/file/raw_client.py +148 -0
  181. wavix/speech_analytics/raw_client.py +527 -0
  182. wavix/speech_analytics/types/__init__.py +47 -0
  183. wavix/speech_analytics/types/create_speech_analytics_response.py +32 -0
  184. wavix/speech_analytics/types/get_speech_analytics_response.py +77 -0
  185. wavix/speech_analytics/types/get_speech_analytics_response_language.py +5 -0
  186. wavix/speech_analytics/types/get_speech_analytics_response_status.py +5 -0
  187. wavix/sub_accounts/__init__.py +52 -0
  188. wavix/sub_accounts/client.py +442 -0
  189. wavix/sub_accounts/raw_client.py +775 -0
  190. wavix/sub_accounts/transactions/__init__.py +4 -0
  191. wavix/sub_accounts/transactions/client.py +198 -0
  192. wavix/sub_accounts/transactions/raw_client.py +265 -0
  193. wavix/sub_accounts/types/__init__.py +47 -0
  194. wavix/sub_accounts/types/list_sub_accounts_request_status.py +5 -0
  195. wavix/sub_accounts/types/sub_accounts_create_request_default_destinations.py +31 -0
  196. wavix/sub_accounts/types/sub_accounts_update_request_default_destinations.py +31 -0
  197. wavix/sub_accounts/types/sub_accounts_update_request_status.py +5 -0
  198. wavix/ten_dlc/__init__.py +167 -0
  199. wavix/ten_dlc/brand_appeals/__init__.py +34 -0
  200. wavix/ten_dlc/brand_appeals/client.py +244 -0
  201. wavix/ten_dlc/brand_appeals/raw_client.py +390 -0
  202. wavix/ten_dlc/brand_appeals/types/__init__.py +34 -0
  203. wavix/ten_dlc/brand_appeals/types/create_brand_appeals_response.py +22 -0
  204. wavix/ten_dlc/brand_evidence/__init__.py +37 -0
  205. wavix/ten_dlc/brand_evidence/client.py +365 -0
  206. wavix/ten_dlc/brand_evidence/raw_client.py +599 -0
  207. wavix/ten_dlc/brand_evidence/types/__init__.py +38 -0
  208. wavix/ten_dlc/brand_evidence/types/delete_brand_evidence_response.py +22 -0
  209. wavix/ten_dlc/brand_evidence/types/upload_brand_evidence_response.py +38 -0
  210. wavix/ten_dlc/brand_vetting_appeals/__init__.py +34 -0
  211. wavix/ten_dlc/brand_vetting_appeals/client.py +258 -0
  212. wavix/ten_dlc/brand_vetting_appeals/raw_client.py +381 -0
  213. wavix/ten_dlc/brand_vetting_appeals/types/__init__.py +36 -0
  214. wavix/ten_dlc/brand_vetting_appeals/types/create_brand_vetting_appeals_response.py +22 -0
  215. wavix/ten_dlc/brand_vettings/__init__.py +4 -0
  216. wavix/ten_dlc/brand_vettings/client.py +325 -0
  217. wavix/ten_dlc/brand_vettings/raw_client.py +518 -0
  218. wavix/ten_dlc/brands/__init__.py +85 -0
  219. wavix/ten_dlc/brands/client.py +870 -0
  220. wavix/ten_dlc/brands/raw_client.py +1263 -0
  221. wavix/ten_dlc/brands/types/__init__.py +83 -0
  222. wavix/ten_dlc/brands/types/create_brands_response.py +143 -0
  223. wavix/ten_dlc/brands/types/create_brands_response_entity_type.py +7 -0
  224. wavix/ten_dlc/brands/types/create_brands_response_status.py +7 -0
  225. wavix/ten_dlc/brands/types/delete_brands_response.py +22 -0
  226. wavix/ten_dlc/brands/types/get_brands_response.py +143 -0
  227. wavix/ten_dlc/brands/types/get_brands_response_entity_type.py +7 -0
  228. wavix/ten_dlc/brands/types/get_brands_response_status.py +7 -0
  229. wavix/ten_dlc/brands/types/list_brands_response.py +33 -0
  230. wavix/ten_dlc/brands/types/list_brands_response_pagination.py +41 -0
  231. wavix/ten_dlc/brands/types/qualify_usecase_brands_request_use_case.py +35 -0
  232. wavix/ten_dlc/brands/types/qualify_usecase_brands_response.py +33 -0
  233. wavix/ten_dlc/brands/types/ten_dlc_brand_update_request_entity_type.py +7 -0
  234. wavix/ten_dlc/brands/types/ten_dlc_brand_update_request_vertical.py +18 -0
  235. wavix/ten_dlc/brands/types/update_brands_response.py +143 -0
  236. wavix/ten_dlc/brands/types/update_brands_response_entity_type.py +7 -0
  237. wavix/ten_dlc/brands/types/update_brands_response_status.py +7 -0
  238. wavix/ten_dlc/campaign_numbers/__init__.py +38 -0
  239. wavix/ten_dlc/campaign_numbers/client.py +304 -0
  240. wavix/ten_dlc/campaign_numbers/raw_client.py +448 -0
  241. wavix/ten_dlc/campaign_numbers/types/__init__.py +40 -0
  242. wavix/ten_dlc/campaign_numbers/types/link_campaign_numbers_response.py +22 -0
  243. wavix/ten_dlc/campaign_numbers/types/list_campaign_numbers_response.py +33 -0
  244. wavix/ten_dlc/campaign_numbers/types/unlink_campaign_numbers_response.py +22 -0
  245. wavix/ten_dlc/campaigns/__init__.py +64 -0
  246. wavix/ten_dlc/campaigns/client.py +1493 -0
  247. wavix/ten_dlc/campaigns/raw_client.py +1840 -0
  248. wavix/ten_dlc/campaigns/types/__init__.py +62 -0
  249. wavix/ten_dlc/campaigns/types/create_campaigns_response.py +211 -0
  250. wavix/ten_dlc/campaigns/types/delete_campaigns_response.py +22 -0
  251. wavix/ten_dlc/campaigns/types/get_campaigns_response.py +211 -0
  252. wavix/ten_dlc/campaigns/types/list_by_brand_campaigns_response.py +33 -0
  253. wavix/ten_dlc/campaigns/types/list_by_brand_campaigns_response_pagination.py +41 -0
  254. wavix/ten_dlc/campaigns/types/list_campaigns_response.py +33 -0
  255. wavix/ten_dlc/campaigns/types/list_campaigns_response_pagination.py +41 -0
  256. wavix/ten_dlc/campaigns/types/ten_dlc_campaign_update_request_usecase.py +15 -0
  257. wavix/ten_dlc/campaigns/types/update_campaigns_response.py +211 -0
  258. wavix/ten_dlc/client.py +196 -0
  259. wavix/ten_dlc/raw_client.py +13 -0
  260. wavix/ten_dlc/subscriptions/__init__.py +37 -0
  261. wavix/ten_dlc/subscriptions/client.py +271 -0
  262. wavix/ten_dlc/subscriptions/raw_client.py +398 -0
  263. wavix/ten_dlc/subscriptions/types/__init__.py +38 -0
  264. wavix/ten_dlc/subscriptions/types/create_subscriptions_response.py +31 -0
  265. wavix/ten_dlc/subscriptions/types/delete_subscriptions_response.py +22 -0
  266. wavix/two_fa/__init__.py +56 -0
  267. wavix/two_fa/client.py +101 -0
  268. wavix/two_fa/events/__init__.py +4 -0
  269. wavix/two_fa/events/client.py +114 -0
  270. wavix/two_fa/events/raw_client.py +156 -0
  271. wavix/two_fa/raw_client.py +13 -0
  272. wavix/two_fa/sessions/__init__.py +4 -0
  273. wavix/two_fa/sessions/client.py +142 -0
  274. wavix/two_fa/sessions/raw_client.py +200 -0
  275. wavix/two_fa/verification/__init__.py +49 -0
  276. wavix/two_fa/verification/client.py +395 -0
  277. wavix/two_fa/verification/raw_client.py +664 -0
  278. wavix/two_fa/verification/types/__init__.py +47 -0
  279. wavix/two_fa/verification/types/check_verification_response.py +22 -0
  280. wavix/two_fa/verification/types/create_verification_response.py +51 -0
  281. wavix/two_fa/verification/types/resend_verification_response.py +38 -0
  282. wavix/two_fa/verification/types/two_factor_verification_resend_request_channel.py +5 -0
  283. wavix/types/__init__.py +637 -0
  284. wavix/types/account_error_response.py +31 -0
  285. wavix/types/account_limits.py +32 -0
  286. wavix/types/allowed_i_ps.py +7 -0
  287. wavix/types/allowed_i_ps_item.py +27 -0
  288. wavix/types/api_key.py +138 -0
  289. wavix/types/api_key_calls_scope_permission.py +30 -0
  290. wavix/types/api_key_calls_scope_permission_allow.py +5 -0
  291. wavix/types/api_key_scope_permission.py +30 -0
  292. wavix/types/api_key_scope_permission_allow.py +5 -0
  293. wavix/types/available_number.py +97 -0
  294. wavix/types/available_number_list_response.py +26 -0
  295. wavix/types/bad_request_error_body.py +27 -0
  296. wavix/types/billing_transaction_list_response.py +31 -0
  297. wavix/types/brand_status_updated_webhook.py +28 -0
  298. wavix/types/brand_status_updated_webhook_status.py +7 -0
  299. wavix/types/call.py +92 -0
  300. wavix/types/call_control_validation_error_response.py +34 -0
  301. wavix/types/call_create_response.py +92 -0
  302. wavix/types/call_create_response_event_type.py +18 -0
  303. wavix/types/call_direction.py +5 -0
  304. wavix/types/call_disposition.py +5 -0
  305. wavix/types/call_event_type.py +18 -0
  306. wavix/types/call_list_response.py +28 -0
  307. wavix/types/call_recording_list_response.py +28 -0
  308. wavix/types/call_response.py +24 -0
  309. wavix/types/call_status_webhook.py +70 -0
  310. wavix/types/call_status_webhook_direction.py +5 -0
  311. wavix/types/call_stream_channel.py +5 -0
  312. wavix/types/call_stream_response.py +27 -0
  313. wavix/types/call_stream_type.py +5 -0
  314. wavix/types/call_webhook.py +37 -0
  315. wavix/types/call_webhook_event_type.py +5 -0
  316. wavix/types/call_webhook_list_response.py +10 -0
  317. wavix/types/call_webhook_list_response_item.py +28 -0
  318. wavix/types/call_webhook_list_response_item_event_type.py +5 -0
  319. wavix/types/campaign_status_updated_webhook.py +41 -0
  320. wavix/types/campaign_status_updated_webhook_status.py +7 -0
  321. wavix/types/cart_response.py +29 -0
  322. wavix/types/cdr.py +97 -0
  323. wavix/types/cdr_list_response.py +26 -0
  324. wavix/types/cdr_response.py +104 -0
  325. wavix/types/cdr_transcription_completed_webhook.py +28 -0
  326. wavix/types/cdr_transcription_completed_webhook_status.py +5 -0
  327. wavix/types/cdr_transcription_response.py +74 -0
  328. wavix/types/cdr_transcription_search_response.py +26 -0
  329. wavix/types/cdr_with_transcription.py +97 -0
  330. wavix/types/city.py +32 -0
  331. wavix/types/city_list_response.py +23 -0
  332. wavix/types/country.py +32 -0
  333. wavix/types/country_has_no_regions_error_response.py +27 -0
  334. wavix/types/country_list_response.py +23 -0
  335. wavix/types/document_type.py +32 -0
  336. wavix/types/document_type_id.py +7 -0
  337. wavix/types/file_transcript_response.py +30 -0
  338. wavix/types/file_transcript_turn.py +46 -0
  339. wavix/types/file_transcription_completed_webhook.py +32 -0
  340. wavix/types/file_transcription_response.py +77 -0
  341. wavix/types/file_transcription_response_language.py +5 -0
  342. wavix/types/file_transcription_response_status.py +5 -0
  343. wavix/types/financial_transaction.py +57 -0
  344. wavix/types/forbidden_error_response.py +27 -0
  345. wavix/types/inbound_call_destination.py +53 -0
  346. wavix/types/inbound_call_transport.py +6 -0
  347. wavix/types/inbound_message.py +46 -0
  348. wavix/types/invalid_recording.py +31 -0
  349. wavix/types/invoice.py +42 -0
  350. wavix/types/invoice_list_response.py +31 -0
  351. wavix/types/list_brand_evidence_response.py +23 -0
  352. wavix/types/list_sessions_response_item.py +58 -0
  353. wavix/types/message.py +103 -0
  354. wavix/types/message_body.py +29 -0
  355. wavix/types/message_create_request.py +46 -0
  356. wavix/types/message_delivery_status.py +8 -0
  357. wavix/types/message_list_response.py +26 -0
  358. wavix/types/message_response.py +97 -0
  359. wavix/types/messages_delivery_report.py +81 -0
  360. wavix/types/not_found_error_body.py +27 -0
  361. wavix/types/not_found_error_response.py +27 -0
  362. wavix/types/number.py +160 -0
  363. wavix/types/number_destination.py +38 -0
  364. wavix/types/number_document.py +58 -0
  365. wavix/types/number_list_response.py +32 -0
  366. wavix/types/number_status_updated_webhook.py +38 -0
  367. wavix/types/number_status_updated_webhook_status.py +5 -0
  368. wavix/types/number_validator_create_bulk_response.py +10 -0
  369. wavix/types/number_validator_create_bulk_response_request_id.py +26 -0
  370. wavix/types/on_call_event_payload.py +34 -0
  371. wavix/types/on_call_event_payload_type.py +5 -0
  372. wavix/types/opt_out.py +27 -0
  373. wavix/types/opt_out_item.py +38 -0
  374. wavix/types/opt_outs_list_response.py +26 -0
  375. wavix/types/pagination.py +37 -0
  376. wavix/types/phone_lookup_details.py +32 -0
  377. wavix/types/phone_number_validation_type.py +5 -0
  378. wavix/types/phone_validation_batch_response.py +38 -0
  379. wavix/types/phone_validation_batch_result_response.py +41 -0
  380. wavix/types/phone_validation_response.py +112 -0
  381. wavix/types/phone_validation_result_response.py +115 -0
  382. wavix/types/profile_config_response.py +25 -0
  383. wavix/types/profile_response.py +79 -0
  384. wavix/types/profile_response_company_info.py +53 -0
  385. wavix/types/profile_response_company_info_country.py +31 -0
  386. wavix/types/profile_response_company_info_industry.py +22 -0
  387. wavix/types/profile_response_default_destinations_item.py +27 -0
  388. wavix/types/record_not_found_error_response.py +27 -0
  389. wavix/types/recording.py +57 -0
  390. wavix/types/recording_deleted_error_response.py +38 -0
  391. wavix/types/region.py +31 -0
  392. wavix/types/region_list_response.py +23 -0
  393. wavix/types/send_messages_response.py +100 -0
  394. wavix/types/sender_id.py +48 -0
  395. wavix/types/sender_id_details.py +44 -0
  396. wavix/types/sender_id_list_response.py +23 -0
  397. wavix/types/sender_id_response.py +48 -0
  398. wavix/types/sender_id_response_type.py +5 -0
  399. wavix/types/sender_id_type.py +5 -0
  400. wavix/types/short_link_metrics_item.py +69 -0
  401. wavix/types/short_link_metrics_response.py +26 -0
  402. wavix/types/short_link_response.py +22 -0
  403. wavix/types/sip_trunk_create_request.py +132 -0
  404. wavix/types/sip_trunk_create_request_allowed_ips_item.py +22 -0
  405. wavix/types/sip_trunk_create_request_host_request.py +26 -0
  406. wavix/types/sip_trunk_list_response.py +26 -0
  407. wavix/types/sip_trunk_response.py +145 -0
  408. wavix/types/sip_trunk_summary.py +114 -0
  409. wavix/types/sip_trunk_summary_host_request.py +31 -0
  410. wavix/types/sub_accounts_list_response.py +26 -0
  411. wavix/types/sub_accounts_transactions_list_response.py +30 -0
  412. wavix/types/sub_accounts_transactions_list_response_transactions_item.py +48 -0
  413. wavix/types/sub_organization_response.py +59 -0
  414. wavix/types/sub_organization_response_default_destinations.py +31 -0
  415. wavix/types/sub_organization_response_status.py +5 -0
  416. wavix/types/submit_file_transcription_response.py +32 -0
  417. wavix/types/success_response.py +22 -0
  418. wavix/types/tcr_error_message.py +27 -0
  419. wavix/types/tcr_feedback.py +23 -0
  420. wavix/types/tcr_feedback_category.py +47 -0
  421. wavix/types/ten_dlc_brand.py +143 -0
  422. wavix/types/ten_dlc_brand_appeal.py +54 -0
  423. wavix/types/ten_dlc_brand_appeal_create_request.py +36 -0
  424. wavix/types/ten_dlc_brand_appeal_outcome.py +38 -0
  425. wavix/types/ten_dlc_brand_appeal_outcome_feedback.py +27 -0
  426. wavix/types/ten_dlc_brand_appeal_outcome_vetting_status.py +7 -0
  427. wavix/types/ten_dlc_brand_create_request.py +8 -0
  428. wavix/types/ten_dlc_brand_create_request_entity_type.py +7 -0
  429. wavix/types/ten_dlc_brand_create_request_stock_exchange.py +26 -0
  430. wavix/types/ten_dlc_brand_create_request_stock_exchange_entity_type.py +7 -0
  431. wavix/types/ten_dlc_brand_create_request_vertical.py +18 -0
  432. wavix/types/ten_dlc_brand_create_request_zero.py +24 -0
  433. wavix/types/ten_dlc_brand_create_request_zero_entity_type.py +5 -0
  434. wavix/types/ten_dlc_brand_entity_type.py +7 -0
  435. wavix/types/ten_dlc_brand_evidence.py +38 -0
  436. wavix/types/ten_dlc_brand_identity_verification_status.py +7 -0
  437. wavix/types/ten_dlc_brand_list_response.py +33 -0
  438. wavix/types/ten_dlc_brand_list_response_pagination.py +41 -0
  439. wavix/types/ten_dlc_brand_qualification_result.py +33 -0
  440. wavix/types/ten_dlc_brand_status.py +7 -0
  441. wavix/types/ten_dlc_brand_vetting.py +71 -0
  442. wavix/types/ten_dlc_brand_vetting_appeal.py +78 -0
  443. wavix/types/ten_dlc_brand_vetting_appeal_appeal_outcome.py +37 -0
  444. wavix/types/ten_dlc_brand_vetting_appeal_appeal_outcome_feedback.py +26 -0
  445. wavix/types/ten_dlc_brand_vetting_appeal_outcome.py +33 -0
  446. wavix/types/ten_dlc_brand_vetting_appeal_outcome_feedback.py +26 -0
  447. wavix/types/ten_dlc_brand_vetting_appeal_outcome_reason.py +22 -0
  448. wavix/types/ten_dlc_campaign.py +211 -0
  449. wavix/types/ten_dlc_campaign_list_response.py +33 -0
  450. wavix/types/ten_dlc_campaign_list_response_pagination.py +41 -0
  451. wavix/types/ten_dlc_campaign_nudge_request.py +32 -0
  452. wavix/types/ten_dlc_campaign_number.py +27 -0
  453. wavix/types/ten_dlc_campaign_number_list_response.py +33 -0
  454. wavix/types/ten_dlc_event_subscription.py +31 -0
  455. wavix/types/ten_dlcmno_metadata.py +101 -0
  456. wavix/types/transaction_status.py +5 -0
  457. wavix/types/transaction_type.py +50 -0
  458. wavix/types/transcript_turn.py +46 -0
  459. wavix/types/transcription_filter.py +35 -0
  460. wavix/types/transcription_filter_agent.py +36 -0
  461. wavix/types/transcription_filter_any.py +36 -0
  462. wavix/types/transcription_filter_client.py +36 -0
  463. wavix/types/transcription_language.py +5 -0
  464. wavix/types/transcription_reference.py +29 -0
  465. wavix/types/transcription_status.py +5 -0
  466. wavix/types/tts_language.py +5 -0
  467. wavix/types/tts_voice_id.py +25 -0
  468. wavix/types/two_factor_verification_check_response.py +22 -0
  469. wavix/types/two_factor_verification_event.py +47 -0
  470. wavix/types/two_factor_verification_resend_response.py +38 -0
  471. wavix/types/two_factor_verification_response.py +51 -0
  472. wavix/types/unauthorized_error_response.py +32 -0
  473. wavix/types/unprocessable_entity_error_body.py +27 -0
  474. wavix/types/validation_error_response.py +27 -0
  475. wavix/types/voice_campaign_create_request.py +20 -0
  476. wavix/types/voice_campaign_response.py +41 -0
  477. wavix/types/voice_campaigns_create_response.py +20 -0
  478. wavix/types/voice_campaigns_create_response_voice_campaign.py +43 -0
  479. wavix/types/voice_campaigns_get_response.py +20 -0
  480. wavix/types/voice_campaigns_get_response_voice_campaign.py +43 -0
  481. wavix/types/web_rtc_token.py +43 -0
  482. wavix/types/web_rtc_token_response.py +44 -0
  483. wavix/types/web_rtc_tokens_list_response.py +30 -0
  484. wavix/version.py +3 -0
  485. wavix/voice_campaigns/__init__.py +4 -0
  486. wavix/voice_campaigns/client.py +197 -0
  487. wavix/voice_campaigns/raw_client.py +332 -0
  488. wavix/webrtc/__init__.py +34 -0
  489. wavix/webrtc/client.py +63 -0
  490. wavix/webrtc/raw_client.py +13 -0
  491. wavix/webrtc/tokens/__init__.py +4 -0
  492. wavix/webrtc/tokens/client.py +432 -0
  493. wavix/webrtc/tokens/raw_client.py +869 -0
  494. wavix_python_sdk-1.0.0.dist-info/LICENSE +21 -0
  495. wavix_python_sdk-1.0.0.dist-info/METADATA +339 -0
  496. wavix_python_sdk-1.0.0.dist-info/RECORD +497 -0
  497. wavix_python_sdk-1.0.0.dist-info/WHEEL +4 -0
@@ -0,0 +1,518 @@
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 ...errors.unprocessable_entity_error import UnprocessableEntityError
16
+ from ...types.ten_dlc_brand_vetting import TenDlcBrandVetting
17
+ from pydantic import ValidationError
18
+
19
+ # this is used as the default value for optional parameters
20
+ OMIT = typing.cast(typing.Any, ...)
21
+
22
+
23
+ class RawBrandVettingsClient:
24
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
25
+ self._client_wrapper = client_wrapper
26
+
27
+ def list(
28
+ self, brand_id: str, *, request_options: typing.Optional[RequestOptions] = None
29
+ ) -> HttpResponse[typing.List[TenDlcBrandVetting]]:
30
+ """
31
+ Returns the external vettings for the 10DLC Brand identified by `brand_id`.
32
+
33
+ Parameters
34
+ ----------
35
+ brand_id : str
36
+ The unique ID of the 10DLC Brand.
37
+
38
+ request_options : typing.Optional[RequestOptions]
39
+ Request-specific configuration.
40
+
41
+ Returns
42
+ -------
43
+ HttpResponse[typing.List[TenDlcBrandVetting]]
44
+ Returns the list of external vettings.
45
+ """
46
+ _response = self._client_wrapper.httpx_client.request(
47
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/vettings",
48
+ method="GET",
49
+ request_options=request_options,
50
+ )
51
+ try:
52
+ if 200 <= _response.status_code < 300:
53
+ _data = typing.cast(
54
+ typing.List[TenDlcBrandVetting],
55
+ parse_obj_as(
56
+ type_=typing.List[TenDlcBrandVetting], # type: ignore
57
+ object_=_response.json(),
58
+ ),
59
+ )
60
+ return HttpResponse(response=_response, data=_data)
61
+ if _response.status_code == 403:
62
+ raise ForbiddenError(
63
+ headers=dict(_response.headers),
64
+ body=typing.cast(
65
+ typing.Any,
66
+ parse_obj_as(
67
+ type_=typing.Any, # type: ignore
68
+ object_=_response.json(),
69
+ ),
70
+ ),
71
+ )
72
+ if _response.status_code == 404:
73
+ raise NotFoundError(
74
+ headers=dict(_response.headers),
75
+ body=typing.cast(
76
+ typing.Any,
77
+ parse_obj_as(
78
+ type_=typing.Any, # type: ignore
79
+ object_=_response.json(),
80
+ ),
81
+ ),
82
+ )
83
+ _response_json = _response.json()
84
+ except JSONDecodeError:
85
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
86
+ except ValidationError as e:
87
+ raise ParsingError(
88
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
89
+ )
90
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
91
+
92
+ def create(
93
+ self, brand_id: str, *, evp_id: str, vetting_class: str, request_options: typing.Optional[RequestOptions] = None
94
+ ) -> HttpResponse[TenDlcBrandVetting]:
95
+ """
96
+ Requests external vetting for a 10DLC Brand. Supported providers: `AEGIS`, `CV`, `WMC`. Supported classes: `STANDARD`, `ENHANCED`.
97
+
98
+ Parameters
99
+ ----------
100
+ brand_id : str
101
+ The unique ID of the 10DLC Brand.
102
+
103
+ evp_id : str
104
+ Code identifying the external vetting provider to perform the vetting.
105
+
106
+ vetting_class : str
107
+ Class of vetting to request, such as `STANDARD` or `ENHANCED`.
108
+
109
+ request_options : typing.Optional[RequestOptions]
110
+ Request-specific configuration.
111
+
112
+ Returns
113
+ -------
114
+ HttpResponse[TenDlcBrandVetting]
115
+ Returns the requested external vetting.
116
+ """
117
+ _response = self._client_wrapper.httpx_client.request(
118
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/vettings",
119
+ method="POST",
120
+ json={
121
+ "evp_id": evp_id,
122
+ "vetting_class": vetting_class,
123
+ },
124
+ headers={
125
+ "content-type": "application/json",
126
+ },
127
+ request_options=request_options,
128
+ omit=OMIT,
129
+ )
130
+ try:
131
+ if 200 <= _response.status_code < 300:
132
+ _data = typing.cast(
133
+ TenDlcBrandVetting,
134
+ parse_obj_as(
135
+ type_=TenDlcBrandVetting, # type: ignore
136
+ object_=_response.json(),
137
+ ),
138
+ )
139
+ return HttpResponse(response=_response, data=_data)
140
+ if _response.status_code == 403:
141
+ raise ForbiddenError(
142
+ headers=dict(_response.headers),
143
+ body=typing.cast(
144
+ typing.Any,
145
+ parse_obj_as(
146
+ type_=typing.Any, # type: ignore
147
+ object_=_response.json(),
148
+ ),
149
+ ),
150
+ )
151
+ if _response.status_code == 404:
152
+ raise NotFoundError(
153
+ headers=dict(_response.headers),
154
+ body=typing.cast(
155
+ typing.Any,
156
+ parse_obj_as(
157
+ type_=typing.Any, # type: ignore
158
+ object_=_response.json(),
159
+ ),
160
+ ),
161
+ )
162
+ _response_json = _response.json()
163
+ except JSONDecodeError:
164
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
165
+ except ValidationError as e:
166
+ raise ParsingError(
167
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
168
+ )
169
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
170
+
171
+ def import_(
172
+ self,
173
+ brand_id: str,
174
+ *,
175
+ evp_id: str,
176
+ vetting_id: str,
177
+ vetting_token: str,
178
+ request_options: typing.Optional[RequestOptions] = None,
179
+ ) -> HttpResponse[TenDlcBrandVetting]:
180
+ """
181
+ Imports an existing external vetting record into the 10DLC Brand identified by `brand_id`.
182
+
183
+ Parameters
184
+ ----------
185
+ brand_id : str
186
+ The unique ID of the 10DLC Brand.
187
+
188
+ evp_id : str
189
+ Code identifying the external vetting provider that issued the vetting.
190
+
191
+ vetting_id : str
192
+ Unique identifier of the vetting request to import.
193
+
194
+ vetting_token : str
195
+ Token issued by the vetting provider that uniquely identifies the vetting result to import.
196
+
197
+ request_options : typing.Optional[RequestOptions]
198
+ Request-specific configuration.
199
+
200
+ Returns
201
+ -------
202
+ HttpResponse[TenDlcBrandVetting]
203
+ Returns the imported external vetting.
204
+ """
205
+ _response = self._client_wrapper.httpx_client.request(
206
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/vettings",
207
+ method="PUT",
208
+ json={
209
+ "evp_id": evp_id,
210
+ "vetting_id": vetting_id,
211
+ "vetting_token": vetting_token,
212
+ },
213
+ headers={
214
+ "content-type": "application/json",
215
+ },
216
+ request_options=request_options,
217
+ omit=OMIT,
218
+ )
219
+ try:
220
+ if 200 <= _response.status_code < 300:
221
+ _data = typing.cast(
222
+ TenDlcBrandVetting,
223
+ parse_obj_as(
224
+ type_=TenDlcBrandVetting, # type: ignore
225
+ object_=_response.json(),
226
+ ),
227
+ )
228
+ return HttpResponse(response=_response, data=_data)
229
+ if _response.status_code == 403:
230
+ raise ForbiddenError(
231
+ headers=dict(_response.headers),
232
+ body=typing.cast(
233
+ typing.Any,
234
+ parse_obj_as(
235
+ type_=typing.Any, # type: ignore
236
+ object_=_response.json(),
237
+ ),
238
+ ),
239
+ )
240
+ if _response.status_code == 404:
241
+ raise NotFoundError(
242
+ headers=dict(_response.headers),
243
+ body=typing.cast(
244
+ typing.Any,
245
+ parse_obj_as(
246
+ type_=typing.Any, # type: ignore
247
+ object_=_response.json(),
248
+ ),
249
+ ),
250
+ )
251
+ if _response.status_code == 422:
252
+ raise UnprocessableEntityError(
253
+ headers=dict(_response.headers),
254
+ body=typing.cast(
255
+ typing.Any,
256
+ parse_obj_as(
257
+ type_=typing.Any, # type: ignore
258
+ object_=_response.json(),
259
+ ),
260
+ ),
261
+ )
262
+ _response_json = _response.json()
263
+ except JSONDecodeError:
264
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
265
+ except ValidationError as e:
266
+ raise ParsingError(
267
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
268
+ )
269
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
270
+
271
+
272
+ class AsyncRawBrandVettingsClient:
273
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
274
+ self._client_wrapper = client_wrapper
275
+
276
+ async def list(
277
+ self, brand_id: str, *, request_options: typing.Optional[RequestOptions] = None
278
+ ) -> AsyncHttpResponse[typing.List[TenDlcBrandVetting]]:
279
+ """
280
+ Returns the external vettings for the 10DLC Brand identified by `brand_id`.
281
+
282
+ Parameters
283
+ ----------
284
+ brand_id : str
285
+ The unique ID of the 10DLC Brand.
286
+
287
+ request_options : typing.Optional[RequestOptions]
288
+ Request-specific configuration.
289
+
290
+ Returns
291
+ -------
292
+ AsyncHttpResponse[typing.List[TenDlcBrandVetting]]
293
+ Returns the list of external vettings.
294
+ """
295
+ _response = await self._client_wrapper.httpx_client.request(
296
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/vettings",
297
+ method="GET",
298
+ request_options=request_options,
299
+ )
300
+ try:
301
+ if 200 <= _response.status_code < 300:
302
+ _data = typing.cast(
303
+ typing.List[TenDlcBrandVetting],
304
+ parse_obj_as(
305
+ type_=typing.List[TenDlcBrandVetting], # type: ignore
306
+ object_=_response.json(),
307
+ ),
308
+ )
309
+ return AsyncHttpResponse(response=_response, data=_data)
310
+ if _response.status_code == 403:
311
+ raise ForbiddenError(
312
+ headers=dict(_response.headers),
313
+ body=typing.cast(
314
+ typing.Any,
315
+ parse_obj_as(
316
+ type_=typing.Any, # type: ignore
317
+ object_=_response.json(),
318
+ ),
319
+ ),
320
+ )
321
+ if _response.status_code == 404:
322
+ raise NotFoundError(
323
+ headers=dict(_response.headers),
324
+ body=typing.cast(
325
+ typing.Any,
326
+ parse_obj_as(
327
+ type_=typing.Any, # type: ignore
328
+ object_=_response.json(),
329
+ ),
330
+ ),
331
+ )
332
+ _response_json = _response.json()
333
+ except JSONDecodeError:
334
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
335
+ except ValidationError as e:
336
+ raise ParsingError(
337
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
338
+ )
339
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
340
+
341
+ async def create(
342
+ self, brand_id: str, *, evp_id: str, vetting_class: str, request_options: typing.Optional[RequestOptions] = None
343
+ ) -> AsyncHttpResponse[TenDlcBrandVetting]:
344
+ """
345
+ Requests external vetting for a 10DLC Brand. Supported providers: `AEGIS`, `CV`, `WMC`. Supported classes: `STANDARD`, `ENHANCED`.
346
+
347
+ Parameters
348
+ ----------
349
+ brand_id : str
350
+ The unique ID of the 10DLC Brand.
351
+
352
+ evp_id : str
353
+ Code identifying the external vetting provider to perform the vetting.
354
+
355
+ vetting_class : str
356
+ Class of vetting to request, such as `STANDARD` or `ENHANCED`.
357
+
358
+ request_options : typing.Optional[RequestOptions]
359
+ Request-specific configuration.
360
+
361
+ Returns
362
+ -------
363
+ AsyncHttpResponse[TenDlcBrandVetting]
364
+ Returns the requested external vetting.
365
+ """
366
+ _response = await self._client_wrapper.httpx_client.request(
367
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/vettings",
368
+ method="POST",
369
+ json={
370
+ "evp_id": evp_id,
371
+ "vetting_class": vetting_class,
372
+ },
373
+ headers={
374
+ "content-type": "application/json",
375
+ },
376
+ request_options=request_options,
377
+ omit=OMIT,
378
+ )
379
+ try:
380
+ if 200 <= _response.status_code < 300:
381
+ _data = typing.cast(
382
+ TenDlcBrandVetting,
383
+ parse_obj_as(
384
+ type_=TenDlcBrandVetting, # type: ignore
385
+ object_=_response.json(),
386
+ ),
387
+ )
388
+ return AsyncHttpResponse(response=_response, data=_data)
389
+ if _response.status_code == 403:
390
+ raise ForbiddenError(
391
+ headers=dict(_response.headers),
392
+ body=typing.cast(
393
+ typing.Any,
394
+ parse_obj_as(
395
+ type_=typing.Any, # type: ignore
396
+ object_=_response.json(),
397
+ ),
398
+ ),
399
+ )
400
+ if _response.status_code == 404:
401
+ raise NotFoundError(
402
+ headers=dict(_response.headers),
403
+ body=typing.cast(
404
+ typing.Any,
405
+ parse_obj_as(
406
+ type_=typing.Any, # type: ignore
407
+ object_=_response.json(),
408
+ ),
409
+ ),
410
+ )
411
+ _response_json = _response.json()
412
+ except JSONDecodeError:
413
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
414
+ except ValidationError as e:
415
+ raise ParsingError(
416
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
417
+ )
418
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
419
+
420
+ async def import_(
421
+ self,
422
+ brand_id: str,
423
+ *,
424
+ evp_id: str,
425
+ vetting_id: str,
426
+ vetting_token: str,
427
+ request_options: typing.Optional[RequestOptions] = None,
428
+ ) -> AsyncHttpResponse[TenDlcBrandVetting]:
429
+ """
430
+ Imports an existing external vetting record into the 10DLC Brand identified by `brand_id`.
431
+
432
+ Parameters
433
+ ----------
434
+ brand_id : str
435
+ The unique ID of the 10DLC Brand.
436
+
437
+ evp_id : str
438
+ Code identifying the external vetting provider that issued the vetting.
439
+
440
+ vetting_id : str
441
+ Unique identifier of the vetting request to import.
442
+
443
+ vetting_token : str
444
+ Token issued by the vetting provider that uniquely identifies the vetting result to import.
445
+
446
+ request_options : typing.Optional[RequestOptions]
447
+ Request-specific configuration.
448
+
449
+ Returns
450
+ -------
451
+ AsyncHttpResponse[TenDlcBrandVetting]
452
+ Returns the imported external vetting.
453
+ """
454
+ _response = await self._client_wrapper.httpx_client.request(
455
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/vettings",
456
+ method="PUT",
457
+ json={
458
+ "evp_id": evp_id,
459
+ "vetting_id": vetting_id,
460
+ "vetting_token": vetting_token,
461
+ },
462
+ headers={
463
+ "content-type": "application/json",
464
+ },
465
+ request_options=request_options,
466
+ omit=OMIT,
467
+ )
468
+ try:
469
+ if 200 <= _response.status_code < 300:
470
+ _data = typing.cast(
471
+ TenDlcBrandVetting,
472
+ parse_obj_as(
473
+ type_=TenDlcBrandVetting, # type: ignore
474
+ object_=_response.json(),
475
+ ),
476
+ )
477
+ return AsyncHttpResponse(response=_response, data=_data)
478
+ if _response.status_code == 403:
479
+ raise ForbiddenError(
480
+ headers=dict(_response.headers),
481
+ body=typing.cast(
482
+ typing.Any,
483
+ parse_obj_as(
484
+ type_=typing.Any, # type: ignore
485
+ object_=_response.json(),
486
+ ),
487
+ ),
488
+ )
489
+ if _response.status_code == 404:
490
+ raise NotFoundError(
491
+ headers=dict(_response.headers),
492
+ body=typing.cast(
493
+ typing.Any,
494
+ parse_obj_as(
495
+ type_=typing.Any, # type: ignore
496
+ object_=_response.json(),
497
+ ),
498
+ ),
499
+ )
500
+ if _response.status_code == 422:
501
+ raise UnprocessableEntityError(
502
+ headers=dict(_response.headers),
503
+ body=typing.cast(
504
+ typing.Any,
505
+ parse_obj_as(
506
+ type_=typing.Any, # type: ignore
507
+ object_=_response.json(),
508
+ ),
509
+ ),
510
+ )
511
+ _response_json = _response.json()
512
+ except JSONDecodeError:
513
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
514
+ except ValidationError as e:
515
+ raise ParsingError(
516
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
517
+ )
518
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
@@ -0,0 +1,85 @@
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 .types import (
10
+ CreateBrandsResponse,
11
+ CreateBrandsResponseEntityType,
12
+ CreateBrandsResponseStatus,
13
+ DeleteBrandsResponse,
14
+ GetBrandsResponse,
15
+ GetBrandsResponseEntityType,
16
+ GetBrandsResponseStatus,
17
+ ListBrandsResponse,
18
+ ListBrandsResponsePagination,
19
+ QualifyUsecaseBrandsRequestUseCase,
20
+ QualifyUsecaseBrandsResponse,
21
+ TenDlcBrandUpdateRequestEntityType,
22
+ TenDlcBrandUpdateRequestVertical,
23
+ UpdateBrandsResponse,
24
+ UpdateBrandsResponseEntityType,
25
+ UpdateBrandsResponseStatus,
26
+ )
27
+ _dynamic_imports: typing.Dict[str, str] = {
28
+ "CreateBrandsResponse": ".types",
29
+ "CreateBrandsResponseEntityType": ".types",
30
+ "CreateBrandsResponseStatus": ".types",
31
+ "DeleteBrandsResponse": ".types",
32
+ "GetBrandsResponse": ".types",
33
+ "GetBrandsResponseEntityType": ".types",
34
+ "GetBrandsResponseStatus": ".types",
35
+ "ListBrandsResponse": ".types",
36
+ "ListBrandsResponsePagination": ".types",
37
+ "QualifyUsecaseBrandsRequestUseCase": ".types",
38
+ "QualifyUsecaseBrandsResponse": ".types",
39
+ "TenDlcBrandUpdateRequestEntityType": ".types",
40
+ "TenDlcBrandUpdateRequestVertical": ".types",
41
+ "UpdateBrandsResponse": ".types",
42
+ "UpdateBrandsResponseEntityType": ".types",
43
+ "UpdateBrandsResponseStatus": ".types",
44
+ }
45
+
46
+
47
+ def __getattr__(attr_name: str) -> typing.Any:
48
+ module_name = _dynamic_imports.get(attr_name)
49
+ if module_name is None:
50
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
51
+ try:
52
+ module = import_module(module_name, __package__)
53
+ if module_name == f".{attr_name}":
54
+ return module
55
+ else:
56
+ return getattr(module, attr_name)
57
+ except ImportError as e:
58
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
59
+ except AttributeError as e:
60
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
61
+
62
+
63
+ def __dir__():
64
+ lazy_attrs = list(_dynamic_imports.keys())
65
+ return sorted(lazy_attrs)
66
+
67
+
68
+ __all__ = [
69
+ "CreateBrandsResponse",
70
+ "CreateBrandsResponseEntityType",
71
+ "CreateBrandsResponseStatus",
72
+ "DeleteBrandsResponse",
73
+ "GetBrandsResponse",
74
+ "GetBrandsResponseEntityType",
75
+ "GetBrandsResponseStatus",
76
+ "ListBrandsResponse",
77
+ "ListBrandsResponsePagination",
78
+ "QualifyUsecaseBrandsRequestUseCase",
79
+ "QualifyUsecaseBrandsResponse",
80
+ "TenDlcBrandUpdateRequestEntityType",
81
+ "TenDlcBrandUpdateRequestVertical",
82
+ "UpdateBrandsResponse",
83
+ "UpdateBrandsResponseEntityType",
84
+ "UpdateBrandsResponseStatus",
85
+ ]