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,689 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from __future__ import annotations
4
+
5
+ import typing
6
+
7
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
+ from ..core.request_options import RequestOptions
9
+ from ..types.number import Number
10
+ from ..types.number_destination import NumberDestination
11
+ from ..types.number_list_response import NumberListResponse
12
+ from .raw_client import AsyncRawNumbersClient, RawNumbersClient
13
+ from .types.bulk_update_numbers_response import BulkUpdateNumbersResponse
14
+ from .types.delete_numbers_response import DeleteNumbersResponse
15
+
16
+ if typing.TYPE_CHECKING:
17
+ from .papers.client import AsyncPapersClient, PapersClient
18
+ # this is used as the default value for optional parameters
19
+ OMIT = typing.cast(typing.Any, ...)
20
+
21
+
22
+ class NumbersClient:
23
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
24
+ self._raw_client = RawNumbersClient(client_wrapper=client_wrapper)
25
+ self._client_wrapper = client_wrapper
26
+ self._papers: typing.Optional[PapersClient] = None
27
+
28
+ @property
29
+ def with_raw_response(self) -> RawNumbersClient:
30
+ """
31
+ Retrieves a raw implementation of this client that returns raw responses.
32
+
33
+ Returns
34
+ -------
35
+ RawNumbersClient
36
+ """
37
+ return self._raw_client
38
+
39
+ def list(
40
+ self,
41
+ *,
42
+ city_id: typing.Optional[int] = None,
43
+ search: typing.Optional[str] = None,
44
+ label: typing.Optional[str] = None,
45
+ label_present: typing.Optional[bool] = None,
46
+ page: typing.Optional[int] = None,
47
+ per_page: typing.Optional[int] = None,
48
+ request_options: typing.Optional[RequestOptions] = None,
49
+ ) -> NumberListResponse:
50
+ """
51
+ Returns a paginated list of the phone numbers owned by the authenticated account.
52
+
53
+ Parameters
54
+ ----------
55
+ city_id : typing.Optional[int]
56
+ Filters numbers by the ID of their city or rate center.
57
+
58
+ search : typing.Optional[str]
59
+ Filters numbers by a full or partial phone number.
60
+
61
+ label : typing.Optional[str]
62
+ Filters numbers by `label`.
63
+
64
+ label_present : typing.Optional[bool]
65
+ When `true`, returns only numbers that have a label; when `false`, only numbers without one.
66
+
67
+ page : typing.Optional[int]
68
+ Page number to retrieve. Default `1`.
69
+
70
+ per_page : typing.Optional[int]
71
+ Number of records to return per page. Default `25`.
72
+
73
+ request_options : typing.Optional[RequestOptions]
74
+ Request-specific configuration.
75
+
76
+ Returns
77
+ -------
78
+ NumberListResponse
79
+ Returns a paginated list of phone numbers.
80
+
81
+ Examples
82
+ --------
83
+ from wavix import Wavix
84
+
85
+ client = Wavix(
86
+ token="YOUR_TOKEN",
87
+ )
88
+ client.numbers.list(
89
+ city_id=123,
90
+ search="256537",
91
+ label="ALEX",
92
+ label_present=True,
93
+ page=2,
94
+ per_page=50,
95
+ )
96
+ """
97
+ _response = self._raw_client.list(
98
+ city_id=city_id,
99
+ search=search,
100
+ label=label,
101
+ label_present=label_present,
102
+ page=page,
103
+ per_page=per_page,
104
+ request_options=request_options,
105
+ )
106
+ return _response.data
107
+
108
+ def delete(
109
+ self,
110
+ *,
111
+ ids: typing.Optional[typing.Union[int, typing.Sequence[int]]] = None,
112
+ dids: typing.Optional[str] = None,
113
+ request_options: typing.Optional[RequestOptions] = None,
114
+ ) -> DeleteNumbersResponse:
115
+ """
116
+ Releases the listed phone numbers back to stock. Selection accepts either `ids` (record IDs) or `dids` (phone numbers), but not both.
117
+
118
+ Parameters
119
+ ----------
120
+ ids : typing.Optional[typing.Union[int, typing.Sequence[int]]]
121
+ Record IDs of the phone numbers to release. Mutually exclusive with `dids`.
122
+
123
+ dids : typing.Optional[str]
124
+ Comma-separated phone numbers to release. Mutually exclusive with `ids`.
125
+
126
+ request_options : typing.Optional[RequestOptions]
127
+ Request-specific configuration.
128
+
129
+ Returns
130
+ -------
131
+ DeleteNumbersResponse
132
+ Returns a success confirmation. The numbers are released back to stock.
133
+
134
+ Examples
135
+ --------
136
+ from wavix import Wavix
137
+
138
+ client = Wavix(
139
+ token="YOUR_TOKEN",
140
+ )
141
+ client.numbers.delete(
142
+ dids="47832123321,47832123324,478321233215",
143
+ )
144
+ """
145
+ _response = self._raw_client.delete(ids=ids, dids=dids, request_options=request_options)
146
+ return _response.data
147
+
148
+ def bulk_update(
149
+ self,
150
+ *,
151
+ ids: typing.Sequence[int],
152
+ sms_enabled: typing.Optional[bool] = OMIT,
153
+ destinations: typing.Optional[typing.Sequence[NumberDestination]] = OMIT,
154
+ sms_relay_url: typing.Optional[str] = OMIT,
155
+ call_recording_enabled: typing.Optional[bool] = OMIT,
156
+ transcription_enabled: typing.Optional[bool] = OMIT,
157
+ transcription_threshold: typing.Optional[int] = OMIT,
158
+ call_status_url: typing.Optional[str] = OMIT,
159
+ request_options: typing.Optional[RequestOptions] = None,
160
+ ) -> BulkUpdateNumbersResponse:
161
+ """
162
+ Applies the same changes to every listed phone number. Only the provided fields are changed. Destination and SMS callback changes are applied asynchronously and may not be reflected in the response immediately.
163
+
164
+ Parameters
165
+ ----------
166
+ ids : typing.Sequence[int]
167
+ Numbers (by ID) to apply the patch to. The same patch is
168
+ applied to every listed number.
169
+
170
+ sms_enabled : typing.Optional[bool]
171
+ Indicates whether SMS is enabled for the phone numbers.
172
+
173
+ destinations : typing.Optional[typing.Sequence[NumberDestination]]
174
+ Inbound call routing destinations for the phone numbers.
175
+
176
+ sms_relay_url : typing.Optional[str]
177
+ Callback URL for inbound messages.
178
+
179
+ call_recording_enabled : typing.Optional[bool]
180
+ Indicates whether call recording is enabled.
181
+
182
+ transcription_enabled : typing.Optional[bool]
183
+ Indicates whether call transcription is enabled.
184
+
185
+ transcription_threshold : typing.Optional[int]
186
+ Minimum call duration in seconds before transcription runs.
187
+
188
+ call_status_url : typing.Optional[str]
189
+ Callback URL for call status updates.
190
+
191
+ request_options : typing.Optional[RequestOptions]
192
+ Request-specific configuration.
193
+
194
+ Returns
195
+ -------
196
+ BulkUpdateNumbersResponse
197
+ Returns the updated phone numbers.
198
+
199
+ Examples
200
+ --------
201
+ from wavix import Wavix
202
+
203
+ client = Wavix(
204
+ token="YOUR_TOKEN",
205
+ )
206
+ client.numbers.bulk_update(
207
+ ids=[123, 456],
208
+ )
209
+ """
210
+ _response = self._raw_client.bulk_update(
211
+ ids=ids,
212
+ sms_enabled=sms_enabled,
213
+ destinations=destinations,
214
+ sms_relay_url=sms_relay_url,
215
+ call_recording_enabled=call_recording_enabled,
216
+ transcription_enabled=transcription_enabled,
217
+ transcription_threshold=transcription_threshold,
218
+ call_status_url=call_status_url,
219
+ request_options=request_options,
220
+ )
221
+ return _response.data
222
+
223
+ def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> Number:
224
+ """
225
+ Returns the phone number identified by `id`, including its destinations, documents, and feature settings.
226
+
227
+ Parameters
228
+ ----------
229
+ id : int
230
+ The unique ID of the phone number.
231
+
232
+ request_options : typing.Optional[RequestOptions]
233
+ Request-specific configuration.
234
+
235
+ Returns
236
+ -------
237
+ Number
238
+ Returns the phone number.
239
+
240
+ Examples
241
+ --------
242
+ from wavix import Wavix
243
+
244
+ client = Wavix(
245
+ token="YOUR_TOKEN",
246
+ )
247
+ client.numbers.get(
248
+ id=123,
249
+ )
250
+ """
251
+ _response = self._raw_client.get(id, request_options=request_options)
252
+ return _response.data
253
+
254
+ def update(
255
+ self,
256
+ id: int,
257
+ *,
258
+ sms_enabled: typing.Optional[bool] = OMIT,
259
+ destinations: typing.Optional[typing.Sequence[NumberDestination]] = OMIT,
260
+ sms_relay_url: typing.Optional[str] = OMIT,
261
+ call_recording_enabled: typing.Optional[bool] = OMIT,
262
+ transcription_enabled: typing.Optional[bool] = OMIT,
263
+ transcription_threshold: typing.Optional[int] = OMIT,
264
+ call_status_url: typing.Optional[str] = OMIT,
265
+ request_options: typing.Optional[RequestOptions] = None,
266
+ ) -> Number:
267
+ """
268
+ Updates the phone number identified by `id`. Only the provided fields are changed.
269
+
270
+ Parameters
271
+ ----------
272
+ id : int
273
+ The unique ID of the phone number.
274
+
275
+ sms_enabled : typing.Optional[bool]
276
+ Indicates whether SMS is enabled for the phone number.
277
+
278
+ destinations : typing.Optional[typing.Sequence[NumberDestination]]
279
+ Inbound call routing destinations for the phone number.
280
+
281
+ sms_relay_url : typing.Optional[str]
282
+ Callback URL for inbound messages.
283
+
284
+ call_recording_enabled : typing.Optional[bool]
285
+ Indicates whether call recording is enabled.
286
+
287
+ transcription_enabled : typing.Optional[bool]
288
+ Indicates whether call transcription is enabled.
289
+
290
+ transcription_threshold : typing.Optional[int]
291
+ Minimum call duration in seconds before transcription runs.
292
+
293
+ call_status_url : typing.Optional[str]
294
+ Callback URL for call status updates.
295
+
296
+ request_options : typing.Optional[RequestOptions]
297
+ Request-specific configuration.
298
+
299
+ Returns
300
+ -------
301
+ Number
302
+ Returns the updated phone number.
303
+
304
+ Examples
305
+ --------
306
+ from wavix import Wavix
307
+
308
+ client = Wavix(
309
+ token="YOUR_TOKEN",
310
+ )
311
+ client.numbers.update(
312
+ id=123,
313
+ )
314
+ """
315
+ _response = self._raw_client.update(
316
+ id,
317
+ sms_enabled=sms_enabled,
318
+ destinations=destinations,
319
+ sms_relay_url=sms_relay_url,
320
+ call_recording_enabled=call_recording_enabled,
321
+ transcription_enabled=transcription_enabled,
322
+ transcription_threshold=transcription_threshold,
323
+ call_status_url=call_status_url,
324
+ request_options=request_options,
325
+ )
326
+ return _response.data
327
+
328
+ @property
329
+ def papers(self):
330
+ if self._papers is None:
331
+ from .papers.client import PapersClient # noqa: E402
332
+
333
+ self._papers = PapersClient(client_wrapper=self._client_wrapper)
334
+ return self._papers
335
+
336
+
337
+ class AsyncNumbersClient:
338
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
339
+ self._raw_client = AsyncRawNumbersClient(client_wrapper=client_wrapper)
340
+ self._client_wrapper = client_wrapper
341
+ self._papers: typing.Optional[AsyncPapersClient] = None
342
+
343
+ @property
344
+ def with_raw_response(self) -> AsyncRawNumbersClient:
345
+ """
346
+ Retrieves a raw implementation of this client that returns raw responses.
347
+
348
+ Returns
349
+ -------
350
+ AsyncRawNumbersClient
351
+ """
352
+ return self._raw_client
353
+
354
+ async def list(
355
+ self,
356
+ *,
357
+ city_id: typing.Optional[int] = None,
358
+ search: typing.Optional[str] = None,
359
+ label: typing.Optional[str] = None,
360
+ label_present: typing.Optional[bool] = None,
361
+ page: typing.Optional[int] = None,
362
+ per_page: typing.Optional[int] = None,
363
+ request_options: typing.Optional[RequestOptions] = None,
364
+ ) -> NumberListResponse:
365
+ """
366
+ Returns a paginated list of the phone numbers owned by the authenticated account.
367
+
368
+ Parameters
369
+ ----------
370
+ city_id : typing.Optional[int]
371
+ Filters numbers by the ID of their city or rate center.
372
+
373
+ search : typing.Optional[str]
374
+ Filters numbers by a full or partial phone number.
375
+
376
+ label : typing.Optional[str]
377
+ Filters numbers by `label`.
378
+
379
+ label_present : typing.Optional[bool]
380
+ When `true`, returns only numbers that have a label; when `false`, only numbers without one.
381
+
382
+ page : typing.Optional[int]
383
+ Page number to retrieve. Default `1`.
384
+
385
+ per_page : typing.Optional[int]
386
+ Number of records to return per page. Default `25`.
387
+
388
+ request_options : typing.Optional[RequestOptions]
389
+ Request-specific configuration.
390
+
391
+ Returns
392
+ -------
393
+ NumberListResponse
394
+ Returns a paginated list of phone numbers.
395
+
396
+ Examples
397
+ --------
398
+ import asyncio
399
+
400
+ from wavix import AsyncWavix
401
+
402
+ client = AsyncWavix(
403
+ token="YOUR_TOKEN",
404
+ )
405
+
406
+
407
+ async def main() -> None:
408
+ await client.numbers.list(
409
+ city_id=123,
410
+ search="256537",
411
+ label="ALEX",
412
+ label_present=True,
413
+ page=2,
414
+ per_page=50,
415
+ )
416
+
417
+
418
+ asyncio.run(main())
419
+ """
420
+ _response = await self._raw_client.list(
421
+ city_id=city_id,
422
+ search=search,
423
+ label=label,
424
+ label_present=label_present,
425
+ page=page,
426
+ per_page=per_page,
427
+ request_options=request_options,
428
+ )
429
+ return _response.data
430
+
431
+ async def delete(
432
+ self,
433
+ *,
434
+ ids: typing.Optional[typing.Union[int, typing.Sequence[int]]] = None,
435
+ dids: typing.Optional[str] = None,
436
+ request_options: typing.Optional[RequestOptions] = None,
437
+ ) -> DeleteNumbersResponse:
438
+ """
439
+ Releases the listed phone numbers back to stock. Selection accepts either `ids` (record IDs) or `dids` (phone numbers), but not both.
440
+
441
+ Parameters
442
+ ----------
443
+ ids : typing.Optional[typing.Union[int, typing.Sequence[int]]]
444
+ Record IDs of the phone numbers to release. Mutually exclusive with `dids`.
445
+
446
+ dids : typing.Optional[str]
447
+ Comma-separated phone numbers to release. Mutually exclusive with `ids`.
448
+
449
+ request_options : typing.Optional[RequestOptions]
450
+ Request-specific configuration.
451
+
452
+ Returns
453
+ -------
454
+ DeleteNumbersResponse
455
+ Returns a success confirmation. The numbers are released back to stock.
456
+
457
+ Examples
458
+ --------
459
+ import asyncio
460
+
461
+ from wavix import AsyncWavix
462
+
463
+ client = AsyncWavix(
464
+ token="YOUR_TOKEN",
465
+ )
466
+
467
+
468
+ async def main() -> None:
469
+ await client.numbers.delete(
470
+ dids="47832123321,47832123324,478321233215",
471
+ )
472
+
473
+
474
+ asyncio.run(main())
475
+ """
476
+ _response = await self._raw_client.delete(ids=ids, dids=dids, request_options=request_options)
477
+ return _response.data
478
+
479
+ async def bulk_update(
480
+ self,
481
+ *,
482
+ ids: typing.Sequence[int],
483
+ sms_enabled: typing.Optional[bool] = OMIT,
484
+ destinations: typing.Optional[typing.Sequence[NumberDestination]] = OMIT,
485
+ sms_relay_url: typing.Optional[str] = OMIT,
486
+ call_recording_enabled: typing.Optional[bool] = OMIT,
487
+ transcription_enabled: typing.Optional[bool] = OMIT,
488
+ transcription_threshold: typing.Optional[int] = OMIT,
489
+ call_status_url: typing.Optional[str] = OMIT,
490
+ request_options: typing.Optional[RequestOptions] = None,
491
+ ) -> BulkUpdateNumbersResponse:
492
+ """
493
+ Applies the same changes to every listed phone number. Only the provided fields are changed. Destination and SMS callback changes are applied asynchronously and may not be reflected in the response immediately.
494
+
495
+ Parameters
496
+ ----------
497
+ ids : typing.Sequence[int]
498
+ Numbers (by ID) to apply the patch to. The same patch is
499
+ applied to every listed number.
500
+
501
+ sms_enabled : typing.Optional[bool]
502
+ Indicates whether SMS is enabled for the phone numbers.
503
+
504
+ destinations : typing.Optional[typing.Sequence[NumberDestination]]
505
+ Inbound call routing destinations for the phone numbers.
506
+
507
+ sms_relay_url : typing.Optional[str]
508
+ Callback URL for inbound messages.
509
+
510
+ call_recording_enabled : typing.Optional[bool]
511
+ Indicates whether call recording is enabled.
512
+
513
+ transcription_enabled : typing.Optional[bool]
514
+ Indicates whether call transcription is enabled.
515
+
516
+ transcription_threshold : typing.Optional[int]
517
+ Minimum call duration in seconds before transcription runs.
518
+
519
+ call_status_url : typing.Optional[str]
520
+ Callback URL for call status updates.
521
+
522
+ request_options : typing.Optional[RequestOptions]
523
+ Request-specific configuration.
524
+
525
+ Returns
526
+ -------
527
+ BulkUpdateNumbersResponse
528
+ Returns the updated phone numbers.
529
+
530
+ Examples
531
+ --------
532
+ import asyncio
533
+
534
+ from wavix import AsyncWavix
535
+
536
+ client = AsyncWavix(
537
+ token="YOUR_TOKEN",
538
+ )
539
+
540
+
541
+ async def main() -> None:
542
+ await client.numbers.bulk_update(
543
+ ids=[123, 456],
544
+ )
545
+
546
+
547
+ asyncio.run(main())
548
+ """
549
+ _response = await self._raw_client.bulk_update(
550
+ ids=ids,
551
+ sms_enabled=sms_enabled,
552
+ destinations=destinations,
553
+ sms_relay_url=sms_relay_url,
554
+ call_recording_enabled=call_recording_enabled,
555
+ transcription_enabled=transcription_enabled,
556
+ transcription_threshold=transcription_threshold,
557
+ call_status_url=call_status_url,
558
+ request_options=request_options,
559
+ )
560
+ return _response.data
561
+
562
+ async def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> Number:
563
+ """
564
+ Returns the phone number identified by `id`, including its destinations, documents, and feature settings.
565
+
566
+ Parameters
567
+ ----------
568
+ id : int
569
+ The unique ID of the phone number.
570
+
571
+ request_options : typing.Optional[RequestOptions]
572
+ Request-specific configuration.
573
+
574
+ Returns
575
+ -------
576
+ Number
577
+ Returns the phone number.
578
+
579
+ Examples
580
+ --------
581
+ import asyncio
582
+
583
+ from wavix import AsyncWavix
584
+
585
+ client = AsyncWavix(
586
+ token="YOUR_TOKEN",
587
+ )
588
+
589
+
590
+ async def main() -> None:
591
+ await client.numbers.get(
592
+ id=123,
593
+ )
594
+
595
+
596
+ asyncio.run(main())
597
+ """
598
+ _response = await self._raw_client.get(id, request_options=request_options)
599
+ return _response.data
600
+
601
+ async def update(
602
+ self,
603
+ id: int,
604
+ *,
605
+ sms_enabled: typing.Optional[bool] = OMIT,
606
+ destinations: typing.Optional[typing.Sequence[NumberDestination]] = OMIT,
607
+ sms_relay_url: typing.Optional[str] = OMIT,
608
+ call_recording_enabled: typing.Optional[bool] = OMIT,
609
+ transcription_enabled: typing.Optional[bool] = OMIT,
610
+ transcription_threshold: typing.Optional[int] = OMIT,
611
+ call_status_url: typing.Optional[str] = OMIT,
612
+ request_options: typing.Optional[RequestOptions] = None,
613
+ ) -> Number:
614
+ """
615
+ Updates the phone number identified by `id`. Only the provided fields are changed.
616
+
617
+ Parameters
618
+ ----------
619
+ id : int
620
+ The unique ID of the phone number.
621
+
622
+ sms_enabled : typing.Optional[bool]
623
+ Indicates whether SMS is enabled for the phone number.
624
+
625
+ destinations : typing.Optional[typing.Sequence[NumberDestination]]
626
+ Inbound call routing destinations for the phone number.
627
+
628
+ sms_relay_url : typing.Optional[str]
629
+ Callback URL for inbound messages.
630
+
631
+ call_recording_enabled : typing.Optional[bool]
632
+ Indicates whether call recording is enabled.
633
+
634
+ transcription_enabled : typing.Optional[bool]
635
+ Indicates whether call transcription is enabled.
636
+
637
+ transcription_threshold : typing.Optional[int]
638
+ Minimum call duration in seconds before transcription runs.
639
+
640
+ call_status_url : typing.Optional[str]
641
+ Callback URL for call status updates.
642
+
643
+ request_options : typing.Optional[RequestOptions]
644
+ Request-specific configuration.
645
+
646
+ Returns
647
+ -------
648
+ Number
649
+ Returns the updated phone number.
650
+
651
+ Examples
652
+ --------
653
+ import asyncio
654
+
655
+ from wavix import AsyncWavix
656
+
657
+ client = AsyncWavix(
658
+ token="YOUR_TOKEN",
659
+ )
660
+
661
+
662
+ async def main() -> None:
663
+ await client.numbers.update(
664
+ id=123,
665
+ )
666
+
667
+
668
+ asyncio.run(main())
669
+ """
670
+ _response = await self._raw_client.update(
671
+ id,
672
+ sms_enabled=sms_enabled,
673
+ destinations=destinations,
674
+ sms_relay_url=sms_relay_url,
675
+ call_recording_enabled=call_recording_enabled,
676
+ transcription_enabled=transcription_enabled,
677
+ transcription_threshold=transcription_threshold,
678
+ call_status_url=call_status_url,
679
+ request_options=request_options,
680
+ )
681
+ return _response.data
682
+
683
+ @property
684
+ def papers(self):
685
+ if self._papers is None:
686
+ from .papers.client import AsyncPapersClient # noqa: E402
687
+
688
+ self._papers = AsyncPapersClient(client_wrapper=self._client_wrapper)
689
+ return self._papers
@@ -0,0 +1,4 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+