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,34 @@
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 CreateBrandVettingAppealsResponse
10
+ _dynamic_imports: typing.Dict[str, str] = {"CreateBrandVettingAppealsResponse": ".types"}
11
+
12
+
13
+ def __getattr__(attr_name: str) -> typing.Any:
14
+ module_name = _dynamic_imports.get(attr_name)
15
+ if module_name is None:
16
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
17
+ try:
18
+ module = import_module(module_name, __package__)
19
+ if module_name == f".{attr_name}":
20
+ return module
21
+ else:
22
+ return getattr(module, attr_name)
23
+ except ImportError as e:
24
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
25
+ except AttributeError as e:
26
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
27
+
28
+
29
+ def __dir__():
30
+ lazy_attrs = list(_dynamic_imports.keys())
31
+ return sorted(lazy_attrs)
32
+
33
+
34
+ __all__ = ["CreateBrandVettingAppealsResponse"]
@@ -0,0 +1,258 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
+ from ...core.request_options import RequestOptions
7
+ from ...types.ten_dlc_brand_vetting_appeal import TenDlcBrandVettingAppeal
8
+ from .raw_client import AsyncRawBrandVettingAppealsClient, RawBrandVettingAppealsClient
9
+ from .types.create_brand_vetting_appeals_response import CreateBrandVettingAppealsResponse
10
+
11
+ # this is used as the default value for optional parameters
12
+ OMIT = typing.cast(typing.Any, ...)
13
+
14
+
15
+ class BrandVettingAppealsClient:
16
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
17
+ self._raw_client = RawBrandVettingAppealsClient(client_wrapper=client_wrapper)
18
+
19
+ @property
20
+ def with_raw_response(self) -> RawBrandVettingAppealsClient:
21
+ """
22
+ Retrieves a raw implementation of this client that returns raw responses.
23
+
24
+ Returns
25
+ -------
26
+ RawBrandVettingAppealsClient
27
+ """
28
+ return self._raw_client
29
+
30
+ def list(
31
+ self, brand_id: str, *, request_options: typing.Optional[RequestOptions] = None
32
+ ) -> typing.List[TenDlcBrandVettingAppeal]:
33
+ """
34
+ Returns the external vetting appeals for the 10DLC Brand identified by `brand_id`.
35
+
36
+ Parameters
37
+ ----------
38
+ brand_id : str
39
+ The unique ID of the 10DLC Brand.
40
+
41
+ request_options : typing.Optional[RequestOptions]
42
+ Request-specific configuration.
43
+
44
+ Returns
45
+ -------
46
+ typing.List[TenDlcBrandVettingAppeal]
47
+ Returns the list of external vetting appeals.
48
+
49
+ Examples
50
+ --------
51
+ from wavix import Wavix
52
+
53
+ client = Wavix(
54
+ token="YOUR_TOKEN",
55
+ )
56
+ client.ten_dlc.brand_vetting_appeals.list(
57
+ brand_id="BMQFB7X",
58
+ )
59
+ """
60
+ _response = self._raw_client.list(brand_id, request_options=request_options)
61
+ return _response.data
62
+
63
+ def create(
64
+ self,
65
+ brand_id: str,
66
+ *,
67
+ appeal_categories: typing.Sequence[str],
68
+ evidence: typing.Sequence[str],
69
+ explanation: typing.Optional[str] = OMIT,
70
+ evp_id: typing.Optional[str] = OMIT,
71
+ vetting_id: typing.Optional[str] = OMIT,
72
+ request_options: typing.Optional[RequestOptions] = None,
73
+ ) -> CreateBrandVettingAppealsResponse:
74
+ """
75
+ Submits an appeal for an external vetting of the 10DLC Brand identified by `brand_id`.
76
+
77
+ Parameters
78
+ ----------
79
+ brand_id : str
80
+ The unique ID of the 10DLC Brand.
81
+
82
+ appeal_categories : typing.Sequence[str]
83
+ List of appeal categories. Allowed values: `VERIFY_TAX_ID`, `VERIFY_NON_PROFIT`, `VERIFY_GOVERNMENT`, `LOW_SCORE`.
84
+
85
+ evidence : typing.Sequence[str]
86
+ List of evidence IDs associated with the appeal.
87
+
88
+ explanation : typing.Optional[str]
89
+ Appeal comment or justification.
90
+
91
+ evp_id : typing.Optional[str]
92
+ EVP ID.
93
+
94
+ vetting_id : typing.Optional[str]
95
+ Vetting ID.
96
+
97
+ request_options : typing.Optional[RequestOptions]
98
+ Request-specific configuration.
99
+
100
+ Returns
101
+ -------
102
+ CreateBrandVettingAppealsResponse
103
+ Returns the submitted appeal.
104
+
105
+ Examples
106
+ --------
107
+ from wavix import Wavix
108
+
109
+ client = Wavix(
110
+ token="YOUR_TOKEN",
111
+ )
112
+ client.ten_dlc.brand_vetting_appeals.create(
113
+ brand_id="B6AI7PA",
114
+ appeal_categories=["VERIFY_TAX_ID"],
115
+ evidence=["855dff49-c097-4645-3983-08dcb9856232"],
116
+ )
117
+ """
118
+ _response = self._raw_client.create(
119
+ brand_id,
120
+ appeal_categories=appeal_categories,
121
+ evidence=evidence,
122
+ explanation=explanation,
123
+ evp_id=evp_id,
124
+ vetting_id=vetting_id,
125
+ request_options=request_options,
126
+ )
127
+ return _response.data
128
+
129
+
130
+ class AsyncBrandVettingAppealsClient:
131
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
132
+ self._raw_client = AsyncRawBrandVettingAppealsClient(client_wrapper=client_wrapper)
133
+
134
+ @property
135
+ def with_raw_response(self) -> AsyncRawBrandVettingAppealsClient:
136
+ """
137
+ Retrieves a raw implementation of this client that returns raw responses.
138
+
139
+ Returns
140
+ -------
141
+ AsyncRawBrandVettingAppealsClient
142
+ """
143
+ return self._raw_client
144
+
145
+ async def list(
146
+ self, brand_id: str, *, request_options: typing.Optional[RequestOptions] = None
147
+ ) -> typing.List[TenDlcBrandVettingAppeal]:
148
+ """
149
+ Returns the external vetting appeals for the 10DLC Brand identified by `brand_id`.
150
+
151
+ Parameters
152
+ ----------
153
+ brand_id : str
154
+ The unique ID of the 10DLC Brand.
155
+
156
+ request_options : typing.Optional[RequestOptions]
157
+ Request-specific configuration.
158
+
159
+ Returns
160
+ -------
161
+ typing.List[TenDlcBrandVettingAppeal]
162
+ Returns the list of external vetting appeals.
163
+
164
+ Examples
165
+ --------
166
+ import asyncio
167
+
168
+ from wavix import AsyncWavix
169
+
170
+ client = AsyncWavix(
171
+ token="YOUR_TOKEN",
172
+ )
173
+
174
+
175
+ async def main() -> None:
176
+ await client.ten_dlc.brand_vetting_appeals.list(
177
+ brand_id="BMQFB7X",
178
+ )
179
+
180
+
181
+ asyncio.run(main())
182
+ """
183
+ _response = await self._raw_client.list(brand_id, request_options=request_options)
184
+ return _response.data
185
+
186
+ async def create(
187
+ self,
188
+ brand_id: str,
189
+ *,
190
+ appeal_categories: typing.Sequence[str],
191
+ evidence: typing.Sequence[str],
192
+ explanation: typing.Optional[str] = OMIT,
193
+ evp_id: typing.Optional[str] = OMIT,
194
+ vetting_id: typing.Optional[str] = OMIT,
195
+ request_options: typing.Optional[RequestOptions] = None,
196
+ ) -> CreateBrandVettingAppealsResponse:
197
+ """
198
+ Submits an appeal for an external vetting of the 10DLC Brand identified by `brand_id`.
199
+
200
+ Parameters
201
+ ----------
202
+ brand_id : str
203
+ The unique ID of the 10DLC Brand.
204
+
205
+ appeal_categories : typing.Sequence[str]
206
+ List of appeal categories. Allowed values: `VERIFY_TAX_ID`, `VERIFY_NON_PROFIT`, `VERIFY_GOVERNMENT`, `LOW_SCORE`.
207
+
208
+ evidence : typing.Sequence[str]
209
+ List of evidence IDs associated with the appeal.
210
+
211
+ explanation : typing.Optional[str]
212
+ Appeal comment or justification.
213
+
214
+ evp_id : typing.Optional[str]
215
+ EVP ID.
216
+
217
+ vetting_id : typing.Optional[str]
218
+ Vetting ID.
219
+
220
+ request_options : typing.Optional[RequestOptions]
221
+ Request-specific configuration.
222
+
223
+ Returns
224
+ -------
225
+ CreateBrandVettingAppealsResponse
226
+ Returns the submitted appeal.
227
+
228
+ Examples
229
+ --------
230
+ import asyncio
231
+
232
+ from wavix import AsyncWavix
233
+
234
+ client = AsyncWavix(
235
+ token="YOUR_TOKEN",
236
+ )
237
+
238
+
239
+ async def main() -> None:
240
+ await client.ten_dlc.brand_vetting_appeals.create(
241
+ brand_id="B6AI7PA",
242
+ appeal_categories=["VERIFY_TAX_ID"],
243
+ evidence=["855dff49-c097-4645-3983-08dcb9856232"],
244
+ )
245
+
246
+
247
+ asyncio.run(main())
248
+ """
249
+ _response = await self._raw_client.create(
250
+ brand_id,
251
+ appeal_categories=appeal_categories,
252
+ evidence=evidence,
253
+ explanation=explanation,
254
+ evp_id=evp_id,
255
+ vetting_id=vetting_id,
256
+ request_options=request_options,
257
+ )
258
+ return _response.data
@@ -0,0 +1,381 @@
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_appeal import TenDlcBrandVettingAppeal
17
+ from .types.create_brand_vetting_appeals_response import CreateBrandVettingAppealsResponse
18
+ from pydantic import ValidationError
19
+
20
+ # this is used as the default value for optional parameters
21
+ OMIT = typing.cast(typing.Any, ...)
22
+
23
+
24
+ class RawBrandVettingAppealsClient:
25
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
26
+ self._client_wrapper = client_wrapper
27
+
28
+ def list(
29
+ self, brand_id: str, *, request_options: typing.Optional[RequestOptions] = None
30
+ ) -> HttpResponse[typing.List[TenDlcBrandVettingAppeal]]:
31
+ """
32
+ Returns the external vetting appeals for the 10DLC Brand identified by `brand_id`.
33
+
34
+ Parameters
35
+ ----------
36
+ brand_id : str
37
+ The unique ID of the 10DLC Brand.
38
+
39
+ request_options : typing.Optional[RequestOptions]
40
+ Request-specific configuration.
41
+
42
+ Returns
43
+ -------
44
+ HttpResponse[typing.List[TenDlcBrandVettingAppeal]]
45
+ Returns the list of external vetting appeals.
46
+ """
47
+ _response = self._client_wrapper.httpx_client.request(
48
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/vettings/appeals",
49
+ method="GET",
50
+ request_options=request_options,
51
+ )
52
+ try:
53
+ if 200 <= _response.status_code < 300:
54
+ _data = typing.cast(
55
+ typing.List[TenDlcBrandVettingAppeal],
56
+ parse_obj_as(
57
+ type_=typing.List[TenDlcBrandVettingAppeal], # type: ignore
58
+ object_=_response.json(),
59
+ ),
60
+ )
61
+ return HttpResponse(response=_response, data=_data)
62
+ if _response.status_code == 403:
63
+ raise ForbiddenError(
64
+ headers=dict(_response.headers),
65
+ body=typing.cast(
66
+ typing.Any,
67
+ parse_obj_as(
68
+ type_=typing.Any, # type: ignore
69
+ object_=_response.json(),
70
+ ),
71
+ ),
72
+ )
73
+ if _response.status_code == 404:
74
+ raise NotFoundError(
75
+ headers=dict(_response.headers),
76
+ body=typing.cast(
77
+ typing.Any,
78
+ parse_obj_as(
79
+ type_=typing.Any, # type: ignore
80
+ object_=_response.json(),
81
+ ),
82
+ ),
83
+ )
84
+ _response_json = _response.json()
85
+ except JSONDecodeError:
86
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
87
+ except ValidationError as e:
88
+ raise ParsingError(
89
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
90
+ )
91
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
92
+
93
+ def create(
94
+ self,
95
+ brand_id: str,
96
+ *,
97
+ appeal_categories: typing.Sequence[str],
98
+ evidence: typing.Sequence[str],
99
+ explanation: typing.Optional[str] = OMIT,
100
+ evp_id: typing.Optional[str] = OMIT,
101
+ vetting_id: typing.Optional[str] = OMIT,
102
+ request_options: typing.Optional[RequestOptions] = None,
103
+ ) -> HttpResponse[CreateBrandVettingAppealsResponse]:
104
+ """
105
+ Submits an appeal for an external vetting of the 10DLC Brand identified by `brand_id`.
106
+
107
+ Parameters
108
+ ----------
109
+ brand_id : str
110
+ The unique ID of the 10DLC Brand.
111
+
112
+ appeal_categories : typing.Sequence[str]
113
+ List of appeal categories. Allowed values: `VERIFY_TAX_ID`, `VERIFY_NON_PROFIT`, `VERIFY_GOVERNMENT`, `LOW_SCORE`.
114
+
115
+ evidence : typing.Sequence[str]
116
+ List of evidence IDs associated with the appeal.
117
+
118
+ explanation : typing.Optional[str]
119
+ Appeal comment or justification.
120
+
121
+ evp_id : typing.Optional[str]
122
+ EVP ID.
123
+
124
+ vetting_id : typing.Optional[str]
125
+ Vetting ID.
126
+
127
+ request_options : typing.Optional[RequestOptions]
128
+ Request-specific configuration.
129
+
130
+ Returns
131
+ -------
132
+ HttpResponse[CreateBrandVettingAppealsResponse]
133
+ Returns the submitted appeal.
134
+ """
135
+ _response = self._client_wrapper.httpx_client.request(
136
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/vettings/appeals",
137
+ method="POST",
138
+ json={
139
+ "appeal_categories": appeal_categories,
140
+ "evidence": evidence,
141
+ "explanation": explanation,
142
+ "evp_id": evp_id,
143
+ "vetting_id": vetting_id,
144
+ },
145
+ headers={
146
+ "content-type": "application/json",
147
+ },
148
+ request_options=request_options,
149
+ omit=OMIT,
150
+ )
151
+ try:
152
+ if 200 <= _response.status_code < 300:
153
+ _data = typing.cast(
154
+ CreateBrandVettingAppealsResponse,
155
+ parse_obj_as(
156
+ type_=CreateBrandVettingAppealsResponse, # type: ignore
157
+ object_=_response.json(),
158
+ ),
159
+ )
160
+ return HttpResponse(response=_response, data=_data)
161
+ if _response.status_code == 403:
162
+ raise ForbiddenError(
163
+ headers=dict(_response.headers),
164
+ body=typing.cast(
165
+ typing.Any,
166
+ parse_obj_as(
167
+ type_=typing.Any, # type: ignore
168
+ object_=_response.json(),
169
+ ),
170
+ ),
171
+ )
172
+ if _response.status_code == 404:
173
+ raise NotFoundError(
174
+ headers=dict(_response.headers),
175
+ body=typing.cast(
176
+ typing.Any,
177
+ parse_obj_as(
178
+ type_=typing.Any, # type: ignore
179
+ object_=_response.json(),
180
+ ),
181
+ ),
182
+ )
183
+ if _response.status_code == 422:
184
+ raise UnprocessableEntityError(
185
+ headers=dict(_response.headers),
186
+ body=typing.cast(
187
+ typing.Any,
188
+ parse_obj_as(
189
+ type_=typing.Any, # type: ignore
190
+ object_=_response.json(),
191
+ ),
192
+ ),
193
+ )
194
+ _response_json = _response.json()
195
+ except JSONDecodeError:
196
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
197
+ except ValidationError as e:
198
+ raise ParsingError(
199
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
200
+ )
201
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
202
+
203
+
204
+ class AsyncRawBrandVettingAppealsClient:
205
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
206
+ self._client_wrapper = client_wrapper
207
+
208
+ async def list(
209
+ self, brand_id: str, *, request_options: typing.Optional[RequestOptions] = None
210
+ ) -> AsyncHttpResponse[typing.List[TenDlcBrandVettingAppeal]]:
211
+ """
212
+ Returns the external vetting appeals for the 10DLC Brand identified by `brand_id`.
213
+
214
+ Parameters
215
+ ----------
216
+ brand_id : str
217
+ The unique ID of the 10DLC Brand.
218
+
219
+ request_options : typing.Optional[RequestOptions]
220
+ Request-specific configuration.
221
+
222
+ Returns
223
+ -------
224
+ AsyncHttpResponse[typing.List[TenDlcBrandVettingAppeal]]
225
+ Returns the list of external vetting appeals.
226
+ """
227
+ _response = await self._client_wrapper.httpx_client.request(
228
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/vettings/appeals",
229
+ method="GET",
230
+ request_options=request_options,
231
+ )
232
+ try:
233
+ if 200 <= _response.status_code < 300:
234
+ _data = typing.cast(
235
+ typing.List[TenDlcBrandVettingAppeal],
236
+ parse_obj_as(
237
+ type_=typing.List[TenDlcBrandVettingAppeal], # type: ignore
238
+ object_=_response.json(),
239
+ ),
240
+ )
241
+ return AsyncHttpResponse(response=_response, data=_data)
242
+ if _response.status_code == 403:
243
+ raise ForbiddenError(
244
+ headers=dict(_response.headers),
245
+ body=typing.cast(
246
+ typing.Any,
247
+ parse_obj_as(
248
+ type_=typing.Any, # type: ignore
249
+ object_=_response.json(),
250
+ ),
251
+ ),
252
+ )
253
+ if _response.status_code == 404:
254
+ raise NotFoundError(
255
+ headers=dict(_response.headers),
256
+ body=typing.cast(
257
+ typing.Any,
258
+ parse_obj_as(
259
+ type_=typing.Any, # type: ignore
260
+ object_=_response.json(),
261
+ ),
262
+ ),
263
+ )
264
+ _response_json = _response.json()
265
+ except JSONDecodeError:
266
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
267
+ except ValidationError as e:
268
+ raise ParsingError(
269
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
270
+ )
271
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
272
+
273
+ async def create(
274
+ self,
275
+ brand_id: str,
276
+ *,
277
+ appeal_categories: typing.Sequence[str],
278
+ evidence: typing.Sequence[str],
279
+ explanation: typing.Optional[str] = OMIT,
280
+ evp_id: typing.Optional[str] = OMIT,
281
+ vetting_id: typing.Optional[str] = OMIT,
282
+ request_options: typing.Optional[RequestOptions] = None,
283
+ ) -> AsyncHttpResponse[CreateBrandVettingAppealsResponse]:
284
+ """
285
+ Submits an appeal for an external vetting of the 10DLC Brand identified by `brand_id`.
286
+
287
+ Parameters
288
+ ----------
289
+ brand_id : str
290
+ The unique ID of the 10DLC Brand.
291
+
292
+ appeal_categories : typing.Sequence[str]
293
+ List of appeal categories. Allowed values: `VERIFY_TAX_ID`, `VERIFY_NON_PROFIT`, `VERIFY_GOVERNMENT`, `LOW_SCORE`.
294
+
295
+ evidence : typing.Sequence[str]
296
+ List of evidence IDs associated with the appeal.
297
+
298
+ explanation : typing.Optional[str]
299
+ Appeal comment or justification.
300
+
301
+ evp_id : typing.Optional[str]
302
+ EVP ID.
303
+
304
+ vetting_id : typing.Optional[str]
305
+ Vetting ID.
306
+
307
+ request_options : typing.Optional[RequestOptions]
308
+ Request-specific configuration.
309
+
310
+ Returns
311
+ -------
312
+ AsyncHttpResponse[CreateBrandVettingAppealsResponse]
313
+ Returns the submitted appeal.
314
+ """
315
+ _response = await self._client_wrapper.httpx_client.request(
316
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/vettings/appeals",
317
+ method="POST",
318
+ json={
319
+ "appeal_categories": appeal_categories,
320
+ "evidence": evidence,
321
+ "explanation": explanation,
322
+ "evp_id": evp_id,
323
+ "vetting_id": vetting_id,
324
+ },
325
+ headers={
326
+ "content-type": "application/json",
327
+ },
328
+ request_options=request_options,
329
+ omit=OMIT,
330
+ )
331
+ try:
332
+ if 200 <= _response.status_code < 300:
333
+ _data = typing.cast(
334
+ CreateBrandVettingAppealsResponse,
335
+ parse_obj_as(
336
+ type_=CreateBrandVettingAppealsResponse, # type: ignore
337
+ object_=_response.json(),
338
+ ),
339
+ )
340
+ return AsyncHttpResponse(response=_response, data=_data)
341
+ if _response.status_code == 403:
342
+ raise ForbiddenError(
343
+ headers=dict(_response.headers),
344
+ body=typing.cast(
345
+ typing.Any,
346
+ parse_obj_as(
347
+ type_=typing.Any, # type: ignore
348
+ object_=_response.json(),
349
+ ),
350
+ ),
351
+ )
352
+ if _response.status_code == 404:
353
+ raise NotFoundError(
354
+ headers=dict(_response.headers),
355
+ body=typing.cast(
356
+ typing.Any,
357
+ parse_obj_as(
358
+ type_=typing.Any, # type: ignore
359
+ object_=_response.json(),
360
+ ),
361
+ ),
362
+ )
363
+ if _response.status_code == 422:
364
+ raise UnprocessableEntityError(
365
+ headers=dict(_response.headers),
366
+ body=typing.cast(
367
+ typing.Any,
368
+ parse_obj_as(
369
+ type_=typing.Any, # type: ignore
370
+ object_=_response.json(),
371
+ ),
372
+ ),
373
+ )
374
+ _response_json = _response.json()
375
+ except JSONDecodeError:
376
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
377
+ except ValidationError as e:
378
+ raise ParsingError(
379
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
380
+ )
381
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)