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,764 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
+ from ..core.request_options import RequestOptions
7
+ from ..types.api_key import ApiKey
8
+ from ..types.api_key_calls_scope_permission import ApiKeyCallsScopePermission
9
+ from ..types.api_key_scope_permission import ApiKeyScopePermission
10
+ from ..types.success_response import SuccessResponse
11
+ from .raw_client import AsyncRawApiKeysClient, RawApiKeysClient
12
+
13
+ # this is used as the default value for optional parameters
14
+ OMIT = typing.cast(typing.Any, ...)
15
+
16
+
17
+ class ApiKeysClient:
18
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
19
+ self._raw_client = RawApiKeysClient(client_wrapper=client_wrapper)
20
+
21
+ @property
22
+ def with_raw_response(self) -> RawApiKeysClient:
23
+ """
24
+ Retrieves a raw implementation of this client that returns raw responses.
25
+
26
+ Returns
27
+ -------
28
+ RawApiKeysClient
29
+ """
30
+ return self._raw_client
31
+
32
+ def list(
33
+ self, *, label: typing.Optional[str] = None, request_options: typing.Optional[RequestOptions] = None
34
+ ) -> typing.List[ApiKey]:
35
+ """
36
+ Returns the API keys belonging to the authenticated account.
37
+
38
+ Parameters
39
+ ----------
40
+ label : typing.Optional[str]
41
+ Filters API keys by `label`. Matches partial values.
42
+
43
+ request_options : typing.Optional[RequestOptions]
44
+ Request-specific configuration.
45
+
46
+ Returns
47
+ -------
48
+ typing.List[ApiKey]
49
+ Returns the list of API keys.
50
+
51
+ Examples
52
+ --------
53
+ from wavix import Wavix
54
+
55
+ client = Wavix(
56
+ token="YOUR_TOKEN",
57
+ )
58
+ client.api_keys.list(
59
+ label="production",
60
+ )
61
+ """
62
+ _response = self._raw_client.list(label=label, request_options=request_options)
63
+ return _response.data
64
+
65
+ def create(
66
+ self,
67
+ *,
68
+ label: str,
69
+ active: typing.Optional[bool] = OMIT,
70
+ restricted: typing.Optional[bool] = OMIT,
71
+ permitted_ips: typing.Optional[typing.Sequence[str]] = OMIT,
72
+ scopes_enabled: typing.Optional[bool] = OMIT,
73
+ numbers: typing.Optional[ApiKeyScopePermission] = OMIT,
74
+ trunks: typing.Optional[ApiKeyScopePermission] = OMIT,
75
+ calls: typing.Optional[ApiKeyCallsScopePermission] = OMIT,
76
+ messages: typing.Optional[ApiKeyScopePermission] = OMIT,
77
+ recordings: typing.Optional[ApiKeyScopePermission] = OMIT,
78
+ campaigns: typing.Optional[ApiKeyScopePermission] = OMIT,
79
+ two_fa: typing.Optional[ApiKeyScopePermission] = OMIT,
80
+ validator: typing.Optional[ApiKeyScopePermission] = OMIT,
81
+ webhooks: typing.Optional[ApiKeyScopePermission] = OMIT,
82
+ embeddable: typing.Optional[ApiKeyScopePermission] = OMIT,
83
+ billing: typing.Optional[ApiKeyScopePermission] = OMIT,
84
+ account: typing.Optional[ApiKeyScopePermission] = OMIT,
85
+ subaccounts: typing.Optional[ApiKeyScopePermission] = OMIT,
86
+ request_options: typing.Optional[RequestOptions] = None,
87
+ ) -> ApiKey:
88
+ """
89
+ Creates an API key for the authenticated account. Restrict access by listing permitted IP addresses in `permitted_ips`.
90
+
91
+ Parameters
92
+ ----------
93
+ label : str
94
+ API key label.
95
+
96
+ active : typing.Optional[bool]
97
+ Indicates whether the API key should be activated upon creation.
98
+
99
+ restricted : typing.Optional[bool]
100
+ Indicates whether to restrict API key access by IP address. When enabled, only requests from IP addresses listed in `permitted_ips` are allowed.
101
+
102
+ permitted_ips : typing.Optional[typing.Sequence[str]]
103
+ List of permitted IP addresses for this API key. Each must be a valid IPv4 address. Required when `restricted` is true.
104
+
105
+ scopes_enabled : typing.Optional[bool]
106
+ When `true`, scope fields below are enforced. When `false` (default), the
107
+ key has full access. Omitted scope fields default to `{ allow: none }`,
108
+ so with `scopes_enabled: true` and no scopes set the key has no access.
109
+
110
+ numbers : typing.Optional[ApiKeyScopePermission]
111
+ View, buy, release, and configure phone numbers, browse inventory, and manage the cart.
112
+
113
+ trunks : typing.Optional[ApiKeyScopePermission]
114
+ View, create, update, and delete SIP trunks and their settings.
115
+
116
+ calls : typing.Optional[ApiKeyCallsScopePermission]
117
+ Access call records and active calls, and control live call actions such as starting, answering, ending, audio playback, DTMF, streaming, and transcription requests.
118
+
119
+ messages : typing.Optional[ApiKeyScopePermission]
120
+ Access message history and Sender IDs, send messages, manage opt-outs, and create or delete Sender IDs.
121
+
122
+ recordings : typing.Optional[ApiKeyScopePermission]
123
+ List, download, and delete call recordings.
124
+
125
+ campaigns : typing.Optional[ApiKeyScopePermission]
126
+ View campaign analytics and Sender ID or Brand status, schedule bulk voice or SMS campaigns, register Brands, and create short links.
127
+
128
+ two_fa : typing.Optional[ApiKeyScopePermission]
129
+ View 2FA service details and verification logs, trigger OTPs by voice or SMS, and validate verification codes.
130
+
131
+ validator : typing.Optional[ApiKeyScopePermission]
132
+ View number validation results and trigger single or bulk validation or HLR lookup requests.
133
+
134
+ webhooks : typing.Optional[ApiKeyScopePermission]
135
+ List, create, and delete webhooks.
136
+
137
+ embeddable : typing.Optional[ApiKeyScopePermission]
138
+ Manage widget tokens, including listing, viewing, creating, updating, and deleting them.
139
+
140
+ billing : typing.Optional[ApiKeyScopePermission]
141
+ Access statements, balance, payment methods, usage reports, and billing settings, including payment method updates.
142
+
143
+ account : typing.Optional[ApiKeyScopePermission]
144
+ View and update account profile information and timezone.
145
+
146
+ subaccounts : typing.Optional[ApiKeyScopePermission]
147
+ Manage subaccounts: list and view them, create, update, and suspend them.
148
+
149
+ request_options : typing.Optional[RequestOptions]
150
+ Request-specific configuration.
151
+
152
+ Returns
153
+ -------
154
+ ApiKey
155
+ Returns the created API key.
156
+
157
+ Examples
158
+ --------
159
+ from wavix import ApiKeyCallsScopePermission, ApiKeyScopePermission, Wavix
160
+
161
+ client = Wavix(
162
+ token="YOUR_TOKEN",
163
+ )
164
+ client.api_keys.create(
165
+ label="Production API Key",
166
+ active=True,
167
+ restricted=True,
168
+ permitted_ips=["192.168.1.1", "10.0.0.1"],
169
+ scopes_enabled=True,
170
+ numbers=ApiKeyScopePermission(
171
+ allow="read",
172
+ ),
173
+ calls=ApiKeyCallsScopePermission(
174
+ allow="read",
175
+ ),
176
+ messages=ApiKeyScopePermission(
177
+ allow="write",
178
+ ),
179
+ two_fa=ApiKeyScopePermission(
180
+ allow="write",
181
+ ),
182
+ billing=ApiKeyScopePermission(
183
+ allow="read",
184
+ ),
185
+ )
186
+ """
187
+ _response = self._raw_client.create(
188
+ label=label,
189
+ active=active,
190
+ restricted=restricted,
191
+ permitted_ips=permitted_ips,
192
+ scopes_enabled=scopes_enabled,
193
+ numbers=numbers,
194
+ trunks=trunks,
195
+ calls=calls,
196
+ messages=messages,
197
+ recordings=recordings,
198
+ campaigns=campaigns,
199
+ two_fa=two_fa,
200
+ validator=validator,
201
+ webhooks=webhooks,
202
+ embeddable=embeddable,
203
+ billing=billing,
204
+ account=account,
205
+ subaccounts=subaccounts,
206
+ request_options=request_options,
207
+ )
208
+ return _response.data
209
+
210
+ def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> SuccessResponse:
211
+ """
212
+ Deletes the API key identified by `id`. Deletion is permanent and revokes the key immediately.
213
+
214
+ Parameters
215
+ ----------
216
+ id : int
217
+ The unique ID of the API key.
218
+
219
+ request_options : typing.Optional[RequestOptions]
220
+ Request-specific configuration.
221
+
222
+ Returns
223
+ -------
224
+ SuccessResponse
225
+ Returns a success confirmation. The API key is revoked.
226
+
227
+ Examples
228
+ --------
229
+ from wavix import Wavix
230
+
231
+ client = Wavix(
232
+ token="YOUR_TOKEN",
233
+ )
234
+ client.api_keys.delete(
235
+ id=1,
236
+ )
237
+ """
238
+ _response = self._raw_client.delete(id, request_options=request_options)
239
+ return _response.data
240
+
241
+ def update(
242
+ self,
243
+ id: int,
244
+ *,
245
+ active: typing.Optional[bool] = OMIT,
246
+ restricted: typing.Optional[bool] = OMIT,
247
+ scopes_enabled: typing.Optional[bool] = OMIT,
248
+ permitted_ips: typing.Optional[typing.Sequence[str]] = OMIT,
249
+ label: typing.Optional[str] = OMIT,
250
+ numbers: typing.Optional[ApiKeyScopePermission] = OMIT,
251
+ trunks: typing.Optional[ApiKeyScopePermission] = OMIT,
252
+ calls: typing.Optional[ApiKeyCallsScopePermission] = OMIT,
253
+ messages: typing.Optional[ApiKeyScopePermission] = OMIT,
254
+ recordings: typing.Optional[ApiKeyScopePermission] = OMIT,
255
+ campaigns: typing.Optional[ApiKeyScopePermission] = OMIT,
256
+ two_fa: typing.Optional[ApiKeyScopePermission] = OMIT,
257
+ validator: typing.Optional[ApiKeyScopePermission] = OMIT,
258
+ webhooks: typing.Optional[ApiKeyScopePermission] = OMIT,
259
+ embeddable: typing.Optional[ApiKeyScopePermission] = OMIT,
260
+ billing: typing.Optional[ApiKeyScopePermission] = OMIT,
261
+ account: typing.Optional[ApiKeyScopePermission] = OMIT,
262
+ subaccounts: typing.Optional[ApiKeyScopePermission] = OMIT,
263
+ request_options: typing.Optional[RequestOptions] = None,
264
+ ) -> ApiKey:
265
+ """
266
+ Updates an API key identified by `id`. Only the provided fields are changed.
267
+
268
+ Parameters
269
+ ----------
270
+ id : int
271
+ The unique ID of the API key.
272
+
273
+ active : typing.Optional[bool]
274
+ Indicates whether the API key is active.
275
+
276
+ restricted : typing.Optional[bool]
277
+ Indicates whether the API key is restricted to the listed permitted IPs.
278
+
279
+ scopes_enabled : typing.Optional[bool]
280
+ Indicates whether per-resource scope permissions are enforced for the API key.
281
+
282
+ permitted_ips : typing.Optional[typing.Sequence[str]]
283
+ IP addresses allowed to use the API key when restriction is enabled.
284
+
285
+ label : typing.Optional[str]
286
+ Human-readable label for the API key.
287
+
288
+ numbers : typing.Optional[ApiKeyScopePermission]
289
+ View, buy, release, and configure phone numbers, browse inventory, and manage the cart.
290
+
291
+ trunks : typing.Optional[ApiKeyScopePermission]
292
+ View, create, update, and delete SIP trunks and their settings.
293
+
294
+ calls : typing.Optional[ApiKeyCallsScopePermission]
295
+ Access call records and active calls, and control live call actions such as starting, answering, ending, audio playback, DTMF, streaming, and transcription requests.
296
+
297
+ messages : typing.Optional[ApiKeyScopePermission]
298
+ Access message history and Sender IDs, send messages, manage opt-outs, and create or delete Sender IDs.
299
+
300
+ recordings : typing.Optional[ApiKeyScopePermission]
301
+ List, download, and delete call recordings.
302
+
303
+ campaigns : typing.Optional[ApiKeyScopePermission]
304
+ View campaign analytics and Sender ID or Brand status, schedule bulk voice or SMS campaigns, register Brands, and create short links.
305
+
306
+ two_fa : typing.Optional[ApiKeyScopePermission]
307
+ View 2FA service details and verification logs, trigger OTPs by voice or SMS, and validate verification codes.
308
+
309
+ validator : typing.Optional[ApiKeyScopePermission]
310
+ View number validation results and trigger single or bulk validation or HLR lookup requests.
311
+
312
+ webhooks : typing.Optional[ApiKeyScopePermission]
313
+ List, create, and delete webhooks.
314
+
315
+ embeddable : typing.Optional[ApiKeyScopePermission]
316
+ Manage widget tokens, including listing, viewing, creating, updating, and deleting them.
317
+
318
+ billing : typing.Optional[ApiKeyScopePermission]
319
+ Access statements, balance, payment methods, usage reports, and billing settings, including payment method updates.
320
+
321
+ account : typing.Optional[ApiKeyScopePermission]
322
+ View and update account profile information and timezone.
323
+
324
+ subaccounts : typing.Optional[ApiKeyScopePermission]
325
+ Manage subaccounts: list and view them, create, update, and suspend them.
326
+
327
+ request_options : typing.Optional[RequestOptions]
328
+ Request-specific configuration.
329
+
330
+ Returns
331
+ -------
332
+ ApiKey
333
+ Returns the updated API key.
334
+
335
+ Examples
336
+ --------
337
+ from wavix import Wavix
338
+
339
+ client = Wavix(
340
+ token="YOUR_TOKEN",
341
+ )
342
+ client.api_keys.update(
343
+ id=1,
344
+ active=True,
345
+ restricted=True,
346
+ scopes_enabled=True,
347
+ permitted_ips=["192.168.1.1", "10.0.0.1"],
348
+ label="Production API Key",
349
+ )
350
+ """
351
+ _response = self._raw_client.update(
352
+ id,
353
+ active=active,
354
+ restricted=restricted,
355
+ scopes_enabled=scopes_enabled,
356
+ permitted_ips=permitted_ips,
357
+ label=label,
358
+ numbers=numbers,
359
+ trunks=trunks,
360
+ calls=calls,
361
+ messages=messages,
362
+ recordings=recordings,
363
+ campaigns=campaigns,
364
+ two_fa=two_fa,
365
+ validator=validator,
366
+ webhooks=webhooks,
367
+ embeddable=embeddable,
368
+ billing=billing,
369
+ account=account,
370
+ subaccounts=subaccounts,
371
+ request_options=request_options,
372
+ )
373
+ return _response.data
374
+
375
+
376
+ class AsyncApiKeysClient:
377
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
378
+ self._raw_client = AsyncRawApiKeysClient(client_wrapper=client_wrapper)
379
+
380
+ @property
381
+ def with_raw_response(self) -> AsyncRawApiKeysClient:
382
+ """
383
+ Retrieves a raw implementation of this client that returns raw responses.
384
+
385
+ Returns
386
+ -------
387
+ AsyncRawApiKeysClient
388
+ """
389
+ return self._raw_client
390
+
391
+ async def list(
392
+ self, *, label: typing.Optional[str] = None, request_options: typing.Optional[RequestOptions] = None
393
+ ) -> typing.List[ApiKey]:
394
+ """
395
+ Returns the API keys belonging to the authenticated account.
396
+
397
+ Parameters
398
+ ----------
399
+ label : typing.Optional[str]
400
+ Filters API keys by `label`. Matches partial values.
401
+
402
+ request_options : typing.Optional[RequestOptions]
403
+ Request-specific configuration.
404
+
405
+ Returns
406
+ -------
407
+ typing.List[ApiKey]
408
+ Returns the list of API keys.
409
+
410
+ Examples
411
+ --------
412
+ import asyncio
413
+
414
+ from wavix import AsyncWavix
415
+
416
+ client = AsyncWavix(
417
+ token="YOUR_TOKEN",
418
+ )
419
+
420
+
421
+ async def main() -> None:
422
+ await client.api_keys.list(
423
+ label="production",
424
+ )
425
+
426
+
427
+ asyncio.run(main())
428
+ """
429
+ _response = await self._raw_client.list(label=label, request_options=request_options)
430
+ return _response.data
431
+
432
+ async def create(
433
+ self,
434
+ *,
435
+ label: str,
436
+ active: typing.Optional[bool] = OMIT,
437
+ restricted: typing.Optional[bool] = OMIT,
438
+ permitted_ips: typing.Optional[typing.Sequence[str]] = OMIT,
439
+ scopes_enabled: typing.Optional[bool] = OMIT,
440
+ numbers: typing.Optional[ApiKeyScopePermission] = OMIT,
441
+ trunks: typing.Optional[ApiKeyScopePermission] = OMIT,
442
+ calls: typing.Optional[ApiKeyCallsScopePermission] = OMIT,
443
+ messages: typing.Optional[ApiKeyScopePermission] = OMIT,
444
+ recordings: typing.Optional[ApiKeyScopePermission] = OMIT,
445
+ campaigns: typing.Optional[ApiKeyScopePermission] = OMIT,
446
+ two_fa: typing.Optional[ApiKeyScopePermission] = OMIT,
447
+ validator: typing.Optional[ApiKeyScopePermission] = OMIT,
448
+ webhooks: typing.Optional[ApiKeyScopePermission] = OMIT,
449
+ embeddable: typing.Optional[ApiKeyScopePermission] = OMIT,
450
+ billing: typing.Optional[ApiKeyScopePermission] = OMIT,
451
+ account: typing.Optional[ApiKeyScopePermission] = OMIT,
452
+ subaccounts: typing.Optional[ApiKeyScopePermission] = OMIT,
453
+ request_options: typing.Optional[RequestOptions] = None,
454
+ ) -> ApiKey:
455
+ """
456
+ Creates an API key for the authenticated account. Restrict access by listing permitted IP addresses in `permitted_ips`.
457
+
458
+ Parameters
459
+ ----------
460
+ label : str
461
+ API key label.
462
+
463
+ active : typing.Optional[bool]
464
+ Indicates whether the API key should be activated upon creation.
465
+
466
+ restricted : typing.Optional[bool]
467
+ Indicates whether to restrict API key access by IP address. When enabled, only requests from IP addresses listed in `permitted_ips` are allowed.
468
+
469
+ permitted_ips : typing.Optional[typing.Sequence[str]]
470
+ List of permitted IP addresses for this API key. Each must be a valid IPv4 address. Required when `restricted` is true.
471
+
472
+ scopes_enabled : typing.Optional[bool]
473
+ When `true`, scope fields below are enforced. When `false` (default), the
474
+ key has full access. Omitted scope fields default to `{ allow: none }`,
475
+ so with `scopes_enabled: true` and no scopes set the key has no access.
476
+
477
+ numbers : typing.Optional[ApiKeyScopePermission]
478
+ View, buy, release, and configure phone numbers, browse inventory, and manage the cart.
479
+
480
+ trunks : typing.Optional[ApiKeyScopePermission]
481
+ View, create, update, and delete SIP trunks and their settings.
482
+
483
+ calls : typing.Optional[ApiKeyCallsScopePermission]
484
+ Access call records and active calls, and control live call actions such as starting, answering, ending, audio playback, DTMF, streaming, and transcription requests.
485
+
486
+ messages : typing.Optional[ApiKeyScopePermission]
487
+ Access message history and Sender IDs, send messages, manage opt-outs, and create or delete Sender IDs.
488
+
489
+ recordings : typing.Optional[ApiKeyScopePermission]
490
+ List, download, and delete call recordings.
491
+
492
+ campaigns : typing.Optional[ApiKeyScopePermission]
493
+ View campaign analytics and Sender ID or Brand status, schedule bulk voice or SMS campaigns, register Brands, and create short links.
494
+
495
+ two_fa : typing.Optional[ApiKeyScopePermission]
496
+ View 2FA service details and verification logs, trigger OTPs by voice or SMS, and validate verification codes.
497
+
498
+ validator : typing.Optional[ApiKeyScopePermission]
499
+ View number validation results and trigger single or bulk validation or HLR lookup requests.
500
+
501
+ webhooks : typing.Optional[ApiKeyScopePermission]
502
+ List, create, and delete webhooks.
503
+
504
+ embeddable : typing.Optional[ApiKeyScopePermission]
505
+ Manage widget tokens, including listing, viewing, creating, updating, and deleting them.
506
+
507
+ billing : typing.Optional[ApiKeyScopePermission]
508
+ Access statements, balance, payment methods, usage reports, and billing settings, including payment method updates.
509
+
510
+ account : typing.Optional[ApiKeyScopePermission]
511
+ View and update account profile information and timezone.
512
+
513
+ subaccounts : typing.Optional[ApiKeyScopePermission]
514
+ Manage subaccounts: list and view them, create, update, and suspend them.
515
+
516
+ request_options : typing.Optional[RequestOptions]
517
+ Request-specific configuration.
518
+
519
+ Returns
520
+ -------
521
+ ApiKey
522
+ Returns the created API key.
523
+
524
+ Examples
525
+ --------
526
+ import asyncio
527
+
528
+ from wavix import ApiKeyCallsScopePermission, ApiKeyScopePermission, AsyncWavix
529
+
530
+ client = AsyncWavix(
531
+ token="YOUR_TOKEN",
532
+ )
533
+
534
+
535
+ async def main() -> None:
536
+ await client.api_keys.create(
537
+ label="Production API Key",
538
+ active=True,
539
+ restricted=True,
540
+ permitted_ips=["192.168.1.1", "10.0.0.1"],
541
+ scopes_enabled=True,
542
+ numbers=ApiKeyScopePermission(
543
+ allow="read",
544
+ ),
545
+ calls=ApiKeyCallsScopePermission(
546
+ allow="read",
547
+ ),
548
+ messages=ApiKeyScopePermission(
549
+ allow="write",
550
+ ),
551
+ two_fa=ApiKeyScopePermission(
552
+ allow="write",
553
+ ),
554
+ billing=ApiKeyScopePermission(
555
+ allow="read",
556
+ ),
557
+ )
558
+
559
+
560
+ asyncio.run(main())
561
+ """
562
+ _response = await self._raw_client.create(
563
+ label=label,
564
+ active=active,
565
+ restricted=restricted,
566
+ permitted_ips=permitted_ips,
567
+ scopes_enabled=scopes_enabled,
568
+ numbers=numbers,
569
+ trunks=trunks,
570
+ calls=calls,
571
+ messages=messages,
572
+ recordings=recordings,
573
+ campaigns=campaigns,
574
+ two_fa=two_fa,
575
+ validator=validator,
576
+ webhooks=webhooks,
577
+ embeddable=embeddable,
578
+ billing=billing,
579
+ account=account,
580
+ subaccounts=subaccounts,
581
+ request_options=request_options,
582
+ )
583
+ return _response.data
584
+
585
+ async def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> SuccessResponse:
586
+ """
587
+ Deletes the API key identified by `id`. Deletion is permanent and revokes the key immediately.
588
+
589
+ Parameters
590
+ ----------
591
+ id : int
592
+ The unique ID of the API key.
593
+
594
+ request_options : typing.Optional[RequestOptions]
595
+ Request-specific configuration.
596
+
597
+ Returns
598
+ -------
599
+ SuccessResponse
600
+ Returns a success confirmation. The API key is revoked.
601
+
602
+ Examples
603
+ --------
604
+ import asyncio
605
+
606
+ from wavix import AsyncWavix
607
+
608
+ client = AsyncWavix(
609
+ token="YOUR_TOKEN",
610
+ )
611
+
612
+
613
+ async def main() -> None:
614
+ await client.api_keys.delete(
615
+ id=1,
616
+ )
617
+
618
+
619
+ asyncio.run(main())
620
+ """
621
+ _response = await self._raw_client.delete(id, request_options=request_options)
622
+ return _response.data
623
+
624
+ async def update(
625
+ self,
626
+ id: int,
627
+ *,
628
+ active: typing.Optional[bool] = OMIT,
629
+ restricted: typing.Optional[bool] = OMIT,
630
+ scopes_enabled: typing.Optional[bool] = OMIT,
631
+ permitted_ips: typing.Optional[typing.Sequence[str]] = OMIT,
632
+ label: typing.Optional[str] = OMIT,
633
+ numbers: typing.Optional[ApiKeyScopePermission] = OMIT,
634
+ trunks: typing.Optional[ApiKeyScopePermission] = OMIT,
635
+ calls: typing.Optional[ApiKeyCallsScopePermission] = OMIT,
636
+ messages: typing.Optional[ApiKeyScopePermission] = OMIT,
637
+ recordings: typing.Optional[ApiKeyScopePermission] = OMIT,
638
+ campaigns: typing.Optional[ApiKeyScopePermission] = OMIT,
639
+ two_fa: typing.Optional[ApiKeyScopePermission] = OMIT,
640
+ validator: typing.Optional[ApiKeyScopePermission] = OMIT,
641
+ webhooks: typing.Optional[ApiKeyScopePermission] = OMIT,
642
+ embeddable: typing.Optional[ApiKeyScopePermission] = OMIT,
643
+ billing: typing.Optional[ApiKeyScopePermission] = OMIT,
644
+ account: typing.Optional[ApiKeyScopePermission] = OMIT,
645
+ subaccounts: typing.Optional[ApiKeyScopePermission] = OMIT,
646
+ request_options: typing.Optional[RequestOptions] = None,
647
+ ) -> ApiKey:
648
+ """
649
+ Updates an API key identified by `id`. Only the provided fields are changed.
650
+
651
+ Parameters
652
+ ----------
653
+ id : int
654
+ The unique ID of the API key.
655
+
656
+ active : typing.Optional[bool]
657
+ Indicates whether the API key is active.
658
+
659
+ restricted : typing.Optional[bool]
660
+ Indicates whether the API key is restricted to the listed permitted IPs.
661
+
662
+ scopes_enabled : typing.Optional[bool]
663
+ Indicates whether per-resource scope permissions are enforced for the API key.
664
+
665
+ permitted_ips : typing.Optional[typing.Sequence[str]]
666
+ IP addresses allowed to use the API key when restriction is enabled.
667
+
668
+ label : typing.Optional[str]
669
+ Human-readable label for the API key.
670
+
671
+ numbers : typing.Optional[ApiKeyScopePermission]
672
+ View, buy, release, and configure phone numbers, browse inventory, and manage the cart.
673
+
674
+ trunks : typing.Optional[ApiKeyScopePermission]
675
+ View, create, update, and delete SIP trunks and their settings.
676
+
677
+ calls : typing.Optional[ApiKeyCallsScopePermission]
678
+ Access call records and active calls, and control live call actions such as starting, answering, ending, audio playback, DTMF, streaming, and transcription requests.
679
+
680
+ messages : typing.Optional[ApiKeyScopePermission]
681
+ Access message history and Sender IDs, send messages, manage opt-outs, and create or delete Sender IDs.
682
+
683
+ recordings : typing.Optional[ApiKeyScopePermission]
684
+ List, download, and delete call recordings.
685
+
686
+ campaigns : typing.Optional[ApiKeyScopePermission]
687
+ View campaign analytics and Sender ID or Brand status, schedule bulk voice or SMS campaigns, register Brands, and create short links.
688
+
689
+ two_fa : typing.Optional[ApiKeyScopePermission]
690
+ View 2FA service details and verification logs, trigger OTPs by voice or SMS, and validate verification codes.
691
+
692
+ validator : typing.Optional[ApiKeyScopePermission]
693
+ View number validation results and trigger single or bulk validation or HLR lookup requests.
694
+
695
+ webhooks : typing.Optional[ApiKeyScopePermission]
696
+ List, create, and delete webhooks.
697
+
698
+ embeddable : typing.Optional[ApiKeyScopePermission]
699
+ Manage widget tokens, including listing, viewing, creating, updating, and deleting them.
700
+
701
+ billing : typing.Optional[ApiKeyScopePermission]
702
+ Access statements, balance, payment methods, usage reports, and billing settings, including payment method updates.
703
+
704
+ account : typing.Optional[ApiKeyScopePermission]
705
+ View and update account profile information and timezone.
706
+
707
+ subaccounts : typing.Optional[ApiKeyScopePermission]
708
+ Manage subaccounts: list and view them, create, update, and suspend them.
709
+
710
+ request_options : typing.Optional[RequestOptions]
711
+ Request-specific configuration.
712
+
713
+ Returns
714
+ -------
715
+ ApiKey
716
+ Returns the updated API key.
717
+
718
+ Examples
719
+ --------
720
+ import asyncio
721
+
722
+ from wavix import AsyncWavix
723
+
724
+ client = AsyncWavix(
725
+ token="YOUR_TOKEN",
726
+ )
727
+
728
+
729
+ async def main() -> None:
730
+ await client.api_keys.update(
731
+ id=1,
732
+ active=True,
733
+ restricted=True,
734
+ scopes_enabled=True,
735
+ permitted_ips=["192.168.1.1", "10.0.0.1"],
736
+ label="Production API Key",
737
+ )
738
+
739
+
740
+ asyncio.run(main())
741
+ """
742
+ _response = await self._raw_client.update(
743
+ id,
744
+ active=active,
745
+ restricted=restricted,
746
+ scopes_enabled=scopes_enabled,
747
+ permitted_ips=permitted_ips,
748
+ label=label,
749
+ numbers=numbers,
750
+ trunks=trunks,
751
+ calls=calls,
752
+ messages=messages,
753
+ recordings=recordings,
754
+ campaigns=campaigns,
755
+ two_fa=two_fa,
756
+ validator=validator,
757
+ webhooks=webhooks,
758
+ embeddable=embeddable,
759
+ billing=billing,
760
+ account=account,
761
+ subaccounts=subaccounts,
762
+ request_options=request_options,
763
+ )
764
+ return _response.data