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