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,448 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from json.decoder import JSONDecodeError
5
+
6
+ from ...core.api_error import ApiError
7
+ from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
+ from ...core.http_response import AsyncHttpResponse, HttpResponse
9
+ from ...core.jsonable_encoder import encode_path_param
10
+ from ...core.parse_error import ParsingError
11
+ from ...core.pydantic_utilities import parse_obj_as
12
+ from ...core.request_options import RequestOptions
13
+ from ...errors.forbidden_error import ForbiddenError
14
+ from ...errors.not_found_error import NotFoundError
15
+ from .types.link_campaign_numbers_response import LinkCampaignNumbersResponse
16
+ from .types.list_campaign_numbers_response import ListCampaignNumbersResponse
17
+ from .types.unlink_campaign_numbers_response import UnlinkCampaignNumbersResponse
18
+ from pydantic import ValidationError
19
+
20
+
21
+ class RawCampaignNumbersClient:
22
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
23
+ self._client_wrapper = client_wrapper
24
+
25
+ def link(
26
+ self, brand_id: str, campaign_id: str, number: str, *, request_options: typing.Optional[RequestOptions] = None
27
+ ) -> HttpResponse[LinkCampaignNumbersResponse]:
28
+ """
29
+ Links a phone number to a 10DLC Campaign. Wavix automatically creates a Sender ID once the number is approved.
30
+
31
+ Parameters
32
+ ----------
33
+ brand_id : str
34
+ The unique ID of the 10DLC Brand.
35
+
36
+ campaign_id : str
37
+ The unique ID of the 10DLC Campaign.
38
+
39
+ number : str
40
+ The phone number to link to the Campaign, in E.164 format.
41
+
42
+ request_options : typing.Optional[RequestOptions]
43
+ Request-specific configuration.
44
+
45
+ Returns
46
+ -------
47
+ HttpResponse[LinkCampaignNumbersResponse]
48
+ Returns a success confirmation. The phone number is linked to the Campaign.
49
+ """
50
+ _response = self._client_wrapper.httpx_client.request(
51
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/campaigns/{encode_path_param(campaign_id)}/numbers/{encode_path_param(number)}",
52
+ method="POST",
53
+ request_options=request_options,
54
+ )
55
+ try:
56
+ if 200 <= _response.status_code < 300:
57
+ _data = typing.cast(
58
+ LinkCampaignNumbersResponse,
59
+ parse_obj_as(
60
+ type_=LinkCampaignNumbersResponse, # type: ignore
61
+ object_=_response.json(),
62
+ ),
63
+ )
64
+ return HttpResponse(response=_response, data=_data)
65
+ if _response.status_code == 403:
66
+ raise ForbiddenError(
67
+ headers=dict(_response.headers),
68
+ body=typing.cast(
69
+ typing.Any,
70
+ parse_obj_as(
71
+ type_=typing.Any, # type: ignore
72
+ object_=_response.json(),
73
+ ),
74
+ ),
75
+ )
76
+ if _response.status_code == 404:
77
+ raise NotFoundError(
78
+ headers=dict(_response.headers),
79
+ body=typing.cast(
80
+ typing.Any,
81
+ parse_obj_as(
82
+ type_=typing.Any, # type: ignore
83
+ object_=_response.json(),
84
+ ),
85
+ ),
86
+ )
87
+ _response_json = _response.json()
88
+ except JSONDecodeError:
89
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
90
+ except ValidationError as e:
91
+ raise ParsingError(
92
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
93
+ )
94
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
95
+
96
+ def unlink(
97
+ self, brand_id: str, campaign_id: str, number: str, *, request_options: typing.Optional[RequestOptions] = None
98
+ ) -> HttpResponse[UnlinkCampaignNumbersResponse]:
99
+ """
100
+ Unlinks a phone number from a 10DLC Campaign. The associated Sender ID is also deleted.
101
+
102
+ Parameters
103
+ ----------
104
+ brand_id : str
105
+ The unique ID of the 10DLC Brand.
106
+
107
+ campaign_id : str
108
+ The unique ID of the 10DLC Campaign.
109
+
110
+ number : str
111
+ The phone number to unlink from the Campaign, in E.164 format.
112
+
113
+ request_options : typing.Optional[RequestOptions]
114
+ Request-specific configuration.
115
+
116
+ Returns
117
+ -------
118
+ HttpResponse[UnlinkCampaignNumbersResponse]
119
+ Returns a success confirmation. The phone number is unlinked from the Campaign.
120
+ """
121
+ _response = self._client_wrapper.httpx_client.request(
122
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/campaigns/{encode_path_param(campaign_id)}/numbers/{encode_path_param(number)}",
123
+ method="DELETE",
124
+ request_options=request_options,
125
+ )
126
+ try:
127
+ if 200 <= _response.status_code < 300:
128
+ _data = typing.cast(
129
+ UnlinkCampaignNumbersResponse,
130
+ parse_obj_as(
131
+ type_=UnlinkCampaignNumbersResponse, # type: ignore
132
+ object_=_response.json(),
133
+ ),
134
+ )
135
+ return HttpResponse(response=_response, data=_data)
136
+ if _response.status_code == 403:
137
+ raise ForbiddenError(
138
+ headers=dict(_response.headers),
139
+ body=typing.cast(
140
+ typing.Any,
141
+ parse_obj_as(
142
+ type_=typing.Any, # type: ignore
143
+ object_=_response.json(),
144
+ ),
145
+ ),
146
+ )
147
+ if _response.status_code == 404:
148
+ raise NotFoundError(
149
+ headers=dict(_response.headers),
150
+ body=typing.cast(
151
+ typing.Any,
152
+ parse_obj_as(
153
+ type_=typing.Any, # type: ignore
154
+ object_=_response.json(),
155
+ ),
156
+ ),
157
+ )
158
+ _response_json = _response.json()
159
+ except JSONDecodeError:
160
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
161
+ except ValidationError as e:
162
+ raise ParsingError(
163
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
164
+ )
165
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
166
+
167
+ def list(
168
+ self, brand_id: str, campaign_id: str, *, request_options: typing.Optional[RequestOptions] = None
169
+ ) -> HttpResponse[ListCampaignNumbersResponse]:
170
+ """
171
+ Returns the phone numbers linked to the 10DLC Campaign identified by `campaign_id`.
172
+
173
+ Parameters
174
+ ----------
175
+ brand_id : str
176
+ The unique ID of the 10DLC Brand.
177
+
178
+ campaign_id : str
179
+ The unique ID of the 10DLC Campaign.
180
+
181
+ request_options : typing.Optional[RequestOptions]
182
+ Request-specific configuration.
183
+
184
+ Returns
185
+ -------
186
+ HttpResponse[ListCampaignNumbersResponse]
187
+ Returns the phone numbers linked to the Campaign.
188
+ """
189
+ _response = self._client_wrapper.httpx_client.request(
190
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/campaigns/{encode_path_param(campaign_id)}/numbers",
191
+ method="GET",
192
+ request_options=request_options,
193
+ )
194
+ try:
195
+ if 200 <= _response.status_code < 300:
196
+ _data = typing.cast(
197
+ ListCampaignNumbersResponse,
198
+ parse_obj_as(
199
+ type_=ListCampaignNumbersResponse, # type: ignore
200
+ object_=_response.json(),
201
+ ),
202
+ )
203
+ return HttpResponse(response=_response, data=_data)
204
+ if _response.status_code == 403:
205
+ raise ForbiddenError(
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 == 404:
216
+ raise NotFoundError(
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
+
236
+ class AsyncRawCampaignNumbersClient:
237
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
238
+ self._client_wrapper = client_wrapper
239
+
240
+ async def link(
241
+ self, brand_id: str, campaign_id: str, number: str, *, request_options: typing.Optional[RequestOptions] = None
242
+ ) -> AsyncHttpResponse[LinkCampaignNumbersResponse]:
243
+ """
244
+ Links a phone number to a 10DLC Campaign. Wavix automatically creates a Sender ID once the number is approved.
245
+
246
+ Parameters
247
+ ----------
248
+ brand_id : str
249
+ The unique ID of the 10DLC Brand.
250
+
251
+ campaign_id : str
252
+ The unique ID of the 10DLC Campaign.
253
+
254
+ number : str
255
+ The phone number to link to the Campaign, in E.164 format.
256
+
257
+ request_options : typing.Optional[RequestOptions]
258
+ Request-specific configuration.
259
+
260
+ Returns
261
+ -------
262
+ AsyncHttpResponse[LinkCampaignNumbersResponse]
263
+ Returns a success confirmation. The phone number is linked to the Campaign.
264
+ """
265
+ _response = await self._client_wrapper.httpx_client.request(
266
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/campaigns/{encode_path_param(campaign_id)}/numbers/{encode_path_param(number)}",
267
+ method="POST",
268
+ request_options=request_options,
269
+ )
270
+ try:
271
+ if 200 <= _response.status_code < 300:
272
+ _data = typing.cast(
273
+ LinkCampaignNumbersResponse,
274
+ parse_obj_as(
275
+ type_=LinkCampaignNumbersResponse, # type: ignore
276
+ object_=_response.json(),
277
+ ),
278
+ )
279
+ return AsyncHttpResponse(response=_response, data=_data)
280
+ if _response.status_code == 403:
281
+ raise ForbiddenError(
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
+ if _response.status_code == 404:
292
+ raise NotFoundError(
293
+ headers=dict(_response.headers),
294
+ body=typing.cast(
295
+ typing.Any,
296
+ parse_obj_as(
297
+ type_=typing.Any, # type: ignore
298
+ object_=_response.json(),
299
+ ),
300
+ ),
301
+ )
302
+ _response_json = _response.json()
303
+ except JSONDecodeError:
304
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
305
+ except ValidationError as e:
306
+ raise ParsingError(
307
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
308
+ )
309
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
310
+
311
+ async def unlink(
312
+ self, brand_id: str, campaign_id: str, number: str, *, request_options: typing.Optional[RequestOptions] = None
313
+ ) -> AsyncHttpResponse[UnlinkCampaignNumbersResponse]:
314
+ """
315
+ Unlinks a phone number from a 10DLC Campaign. The associated Sender ID is also deleted.
316
+
317
+ Parameters
318
+ ----------
319
+ brand_id : str
320
+ The unique ID of the 10DLC Brand.
321
+
322
+ campaign_id : str
323
+ The unique ID of the 10DLC Campaign.
324
+
325
+ number : str
326
+ The phone number to unlink from the Campaign, in E.164 format.
327
+
328
+ request_options : typing.Optional[RequestOptions]
329
+ Request-specific configuration.
330
+
331
+ Returns
332
+ -------
333
+ AsyncHttpResponse[UnlinkCampaignNumbersResponse]
334
+ Returns a success confirmation. The phone number is unlinked from the Campaign.
335
+ """
336
+ _response = await self._client_wrapper.httpx_client.request(
337
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/campaigns/{encode_path_param(campaign_id)}/numbers/{encode_path_param(number)}",
338
+ method="DELETE",
339
+ request_options=request_options,
340
+ )
341
+ try:
342
+ if 200 <= _response.status_code < 300:
343
+ _data = typing.cast(
344
+ UnlinkCampaignNumbersResponse,
345
+ parse_obj_as(
346
+ type_=UnlinkCampaignNumbersResponse, # type: ignore
347
+ object_=_response.json(),
348
+ ),
349
+ )
350
+ return AsyncHttpResponse(response=_response, data=_data)
351
+ if _response.status_code == 403:
352
+ raise ForbiddenError(
353
+ headers=dict(_response.headers),
354
+ body=typing.cast(
355
+ typing.Any,
356
+ parse_obj_as(
357
+ type_=typing.Any, # type: ignore
358
+ object_=_response.json(),
359
+ ),
360
+ ),
361
+ )
362
+ if _response.status_code == 404:
363
+ raise NotFoundError(
364
+ headers=dict(_response.headers),
365
+ body=typing.cast(
366
+ typing.Any,
367
+ parse_obj_as(
368
+ type_=typing.Any, # type: ignore
369
+ object_=_response.json(),
370
+ ),
371
+ ),
372
+ )
373
+ _response_json = _response.json()
374
+ except JSONDecodeError:
375
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
376
+ except ValidationError as e:
377
+ raise ParsingError(
378
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
379
+ )
380
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
381
+
382
+ async def list(
383
+ self, brand_id: str, campaign_id: str, *, request_options: typing.Optional[RequestOptions] = None
384
+ ) -> AsyncHttpResponse[ListCampaignNumbersResponse]:
385
+ """
386
+ Returns the phone numbers linked to the 10DLC Campaign identified by `campaign_id`.
387
+
388
+ Parameters
389
+ ----------
390
+ brand_id : str
391
+ The unique ID of the 10DLC Brand.
392
+
393
+ campaign_id : str
394
+ The unique ID of the 10DLC Campaign.
395
+
396
+ request_options : typing.Optional[RequestOptions]
397
+ Request-specific configuration.
398
+
399
+ Returns
400
+ -------
401
+ AsyncHttpResponse[ListCampaignNumbersResponse]
402
+ Returns the phone numbers linked to the Campaign.
403
+ """
404
+ _response = await self._client_wrapper.httpx_client.request(
405
+ f"v3/10dlc/brands/{encode_path_param(brand_id)}/campaigns/{encode_path_param(campaign_id)}/numbers",
406
+ method="GET",
407
+ request_options=request_options,
408
+ )
409
+ try:
410
+ if 200 <= _response.status_code < 300:
411
+ _data = typing.cast(
412
+ ListCampaignNumbersResponse,
413
+ parse_obj_as(
414
+ type_=ListCampaignNumbersResponse, # type: ignore
415
+ object_=_response.json(),
416
+ ),
417
+ )
418
+ return AsyncHttpResponse(response=_response, data=_data)
419
+ if _response.status_code == 403:
420
+ raise ForbiddenError(
421
+ headers=dict(_response.headers),
422
+ body=typing.cast(
423
+ typing.Any,
424
+ parse_obj_as(
425
+ type_=typing.Any, # type: ignore
426
+ object_=_response.json(),
427
+ ),
428
+ ),
429
+ )
430
+ if _response.status_code == 404:
431
+ raise NotFoundError(
432
+ headers=dict(_response.headers),
433
+ body=typing.cast(
434
+ typing.Any,
435
+ parse_obj_as(
436
+ type_=typing.Any, # type: ignore
437
+ object_=_response.json(),
438
+ ),
439
+ ),
440
+ )
441
+ _response_json = _response.json()
442
+ except JSONDecodeError:
443
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
444
+ except ValidationError as e:
445
+ raise ParsingError(
446
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
447
+ )
448
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
@@ -0,0 +1,40 @@
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 .link_campaign_numbers_response import LinkCampaignNumbersResponse
10
+ from .list_campaign_numbers_response import ListCampaignNumbersResponse
11
+ from .unlink_campaign_numbers_response import UnlinkCampaignNumbersResponse
12
+ _dynamic_imports: typing.Dict[str, str] = {
13
+ "LinkCampaignNumbersResponse": ".link_campaign_numbers_response",
14
+ "ListCampaignNumbersResponse": ".list_campaign_numbers_response",
15
+ "UnlinkCampaignNumbersResponse": ".unlink_campaign_numbers_response",
16
+ }
17
+
18
+
19
+ def __getattr__(attr_name: str) -> typing.Any:
20
+ module_name = _dynamic_imports.get(attr_name)
21
+ if module_name is None:
22
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
23
+ try:
24
+ module = import_module(module_name, __package__)
25
+ if module_name == f".{attr_name}":
26
+ return module
27
+ else:
28
+ return getattr(module, attr_name)
29
+ except ImportError as e:
30
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
31
+ except AttributeError as e:
32
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
33
+
34
+
35
+ def __dir__():
36
+ lazy_attrs = list(_dynamic_imports.keys())
37
+ return sorted(lazy_attrs)
38
+
39
+
40
+ __all__ = ["LinkCampaignNumbersResponse", "ListCampaignNumbersResponse", "UnlinkCampaignNumbersResponse"]
@@ -0,0 +1,22 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class LinkCampaignNumbersResponse(UniversalBaseModel):
10
+ success: bool = pydantic.Field()
11
+ """
12
+ Indicates whether the request was successful.
13
+ """
14
+
15
+ if IS_PYDANTIC_V2:
16
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
17
+ else:
18
+
19
+ class Config:
20
+ frozen = True
21
+ smart_union = True
22
+ extra = pydantic.Extra.allow
@@ -0,0 +1,33 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from ....types.ten_dlc_campaign_number import TenDlcCampaignNumber
8
+
9
+
10
+ class ListCampaignNumbersResponse(UniversalBaseModel):
11
+ brand_id: str = pydantic.Field()
12
+ """
13
+ Unique identifier of the 10DLC Brand that owns the Campaign.
14
+ """
15
+
16
+ campaign_id: str = pydantic.Field()
17
+ """
18
+ Unique identifier of the 10DLC Campaign the numbers belong to.
19
+ """
20
+
21
+ numbers: typing.List[TenDlcCampaignNumber] = pydantic.Field()
22
+ """
23
+ Phone numbers assigned to the Campaign, with their provisioning status.
24
+ """
25
+
26
+ if IS_PYDANTIC_V2:
27
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
28
+ else:
29
+
30
+ class Config:
31
+ frozen = True
32
+ smart_union = True
33
+ extra = pydantic.Extra.allow
@@ -0,0 +1,22 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class UnlinkCampaignNumbersResponse(UniversalBaseModel):
10
+ success: bool = pydantic.Field()
11
+ """
12
+ Indicates whether the request was successful.
13
+ """
14
+
15
+ if IS_PYDANTIC_V2:
16
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
17
+ else:
18
+
19
+ class Config:
20
+ frozen = True
21
+ smart_union = True
22
+ extra = pydantic.Extra.allow
@@ -0,0 +1,64 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ import typing
6
+ from importlib import import_module
7
+
8
+ if typing.TYPE_CHECKING:
9
+ from .types import (
10
+ CreateCampaignsResponse,
11
+ DeleteCampaignsResponse,
12
+ GetCampaignsResponse,
13
+ ListByBrandCampaignsResponse,
14
+ ListByBrandCampaignsResponsePagination,
15
+ ListCampaignsResponse,
16
+ ListCampaignsResponsePagination,
17
+ TenDlcCampaignUpdateRequestUsecase,
18
+ UpdateCampaignsResponse,
19
+ )
20
+ _dynamic_imports: typing.Dict[str, str] = {
21
+ "CreateCampaignsResponse": ".types",
22
+ "DeleteCampaignsResponse": ".types",
23
+ "GetCampaignsResponse": ".types",
24
+ "ListByBrandCampaignsResponse": ".types",
25
+ "ListByBrandCampaignsResponsePagination": ".types",
26
+ "ListCampaignsResponse": ".types",
27
+ "ListCampaignsResponsePagination": ".types",
28
+ "TenDlcCampaignUpdateRequestUsecase": ".types",
29
+ "UpdateCampaignsResponse": ".types",
30
+ }
31
+
32
+
33
+ def __getattr__(attr_name: str) -> typing.Any:
34
+ module_name = _dynamic_imports.get(attr_name)
35
+ if module_name is None:
36
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
37
+ try:
38
+ module = import_module(module_name, __package__)
39
+ if module_name == f".{attr_name}":
40
+ return module
41
+ else:
42
+ return getattr(module, attr_name)
43
+ except ImportError as e:
44
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
45
+ except AttributeError as e:
46
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
47
+
48
+
49
+ def __dir__():
50
+ lazy_attrs = list(_dynamic_imports.keys())
51
+ return sorted(lazy_attrs)
52
+
53
+
54
+ __all__ = [
55
+ "CreateCampaignsResponse",
56
+ "DeleteCampaignsResponse",
57
+ "GetCampaignsResponse",
58
+ "ListByBrandCampaignsResponse",
59
+ "ListByBrandCampaignsResponsePagination",
60
+ "ListCampaignsResponse",
61
+ "ListCampaignsResponsePagination",
62
+ "TenDlcCampaignUpdateRequestUsecase",
63
+ "UpdateCampaignsResponse",
64
+ ]