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
wavix/cdrs/client.py ADDED
@@ -0,0 +1,968 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from __future__ import annotations
4
+
5
+ import datetime as dt
6
+ import typing
7
+
8
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
9
+ from ..core.request_options import RequestOptions
10
+ from ..types.call_disposition import CallDisposition
11
+ from ..types.cdr_list_response import CdrListResponse
12
+ from ..types.cdr_response import CdrResponse
13
+ from ..types.cdr_transcription_response import CdrTranscriptionResponse
14
+ from ..types.cdr_transcription_search_response import CdrTranscriptionSearchResponse
15
+ from ..types.success_response import SuccessResponse
16
+ from ..types.transcription_filter import TranscriptionFilter
17
+ from ..types.transcription_language import TranscriptionLanguage
18
+ from .raw_client import AsyncRawCdrsClient, RawCdrsClient
19
+ from .types.cdr_search_request_disposition import CdrSearchRequestDisposition
20
+ from .types.cdr_search_request_type import CdrSearchRequestType
21
+
22
+ if typing.TYPE_CHECKING:
23
+ from .transcription.client import AsyncTranscriptionClient, TranscriptionClient
24
+ # this is used as the default value for optional parameters
25
+ OMIT = typing.cast(typing.Any, ...)
26
+
27
+
28
+ class CdrsClient:
29
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
30
+ self._raw_client = RawCdrsClient(client_wrapper=client_wrapper)
31
+ self._client_wrapper = client_wrapper
32
+ self._transcription: typing.Optional[TranscriptionClient] = None
33
+
34
+ @property
35
+ def with_raw_response(self) -> RawCdrsClient:
36
+ """
37
+ Retrieves a raw implementation of this client that returns raw responses.
38
+
39
+ Returns
40
+ -------
41
+ RawCdrsClient
42
+ """
43
+ return self._raw_client
44
+
45
+ def list(
46
+ self,
47
+ *,
48
+ from_: dt.date,
49
+ to: dt.date,
50
+ type: str,
51
+ disposition: typing.Optional[CallDisposition] = None,
52
+ from_search: typing.Optional[str] = None,
53
+ to_search: typing.Optional[str] = None,
54
+ sip_trunk: typing.Optional[str] = None,
55
+ uuid_: typing.Optional[str] = None,
56
+ page: typing.Optional[int] = None,
57
+ per_page: typing.Optional[int] = None,
58
+ request_options: typing.Optional[RequestOptions] = None,
59
+ ) -> CdrListResponse:
60
+ """
61
+ Returns a paginated list of call detail records for the authenticated account, within the requested date range.
62
+
63
+ Parameters
64
+ ----------
65
+ from_ : dt.date
66
+ Start of the date range to query, in `YYYY-MM-DD` format. Inclusive.
67
+
68
+ to : dt.date
69
+ End of the date range to query, in `YYYY-MM-DD` format. Inclusive.
70
+
71
+ type : str
72
+ Filters CDRs by call direction. One of `placed` (outbound calls dialed by the account) or `received` (inbound calls answered by the account).
73
+
74
+ disposition : typing.Optional[CallDisposition]
75
+ Filters CDRs by call disposition. One of `answered` (the called party answered), `busy` (the called party was busy), `rejected` (the call was declined), `failed` (the call could not be routed), or `all` (no disposition filter).
76
+
77
+ from_search : typing.Optional[str]
78
+ Filters CDRs by originating phone number. Accepts a full or partial number.
79
+
80
+ to_search : typing.Optional[str]
81
+ Filters CDRs by destination phone number. Accepts a full or partial number.
82
+
83
+ sip_trunk : typing.Optional[str]
84
+ Filters outbound CDRs by SIP trunk login. Ignored for inbound calls.
85
+
86
+ uuid_ : typing.Optional[str]
87
+ Filters CDRs by the unique call ID.
88
+
89
+ page : typing.Optional[int]
90
+ Page number to retrieve. Default `1`.
91
+
92
+ per_page : typing.Optional[int]
93
+ Number of records to return per page. Default `25`.
94
+
95
+ request_options : typing.Optional[RequestOptions]
96
+ Request-specific configuration.
97
+
98
+ Returns
99
+ -------
100
+ CdrListResponse
101
+ Returns a paginated list of CDRs.
102
+
103
+ Examples
104
+ --------
105
+ import datetime
106
+
107
+ from wavix import Wavix
108
+
109
+ client = Wavix(
110
+ token="YOUR_TOKEN",
111
+ )
112
+ client.cdrs.list(
113
+ from_=datetime.date.fromisoformat(
114
+ "2023-01-01",
115
+ ),
116
+ to=datetime.date.fromisoformat(
117
+ "2023-09-01",
118
+ ),
119
+ type="received",
120
+ from_search="13524815863",
121
+ to_search="12565378257",
122
+ sip_trunk="12321",
123
+ uuid_="99df5ffd-962a-410f-bcce-d08f1f7f328c",
124
+ page=1,
125
+ per_page=25,
126
+ )
127
+ """
128
+ _response = self._raw_client.list(
129
+ from_=from_,
130
+ to=to,
131
+ type=type,
132
+ disposition=disposition,
133
+ from_search=from_search,
134
+ to_search=to_search,
135
+ sip_trunk=sip_trunk,
136
+ uuid_=uuid_,
137
+ page=page,
138
+ per_page=per_page,
139
+ request_options=request_options,
140
+ )
141
+ return _response.data
142
+
143
+ def search(
144
+ self,
145
+ *,
146
+ type: CdrSearchRequestType,
147
+ from_: dt.date,
148
+ to: dt.date,
149
+ page: int,
150
+ per_page: int,
151
+ from_search: typing.Optional[str] = OMIT,
152
+ to_search: typing.Optional[str] = OMIT,
153
+ sip_trunk: typing.Optional[str] = OMIT,
154
+ min_duration: typing.Optional[int] = OMIT,
155
+ transcription: typing.Optional[TranscriptionFilter] = OMIT,
156
+ uuid_: typing.Optional[str] = OMIT,
157
+ disposition: typing.Optional[CdrSearchRequestDisposition] = OMIT,
158
+ request_options: typing.Optional[RequestOptions] = None,
159
+ ) -> CdrTranscriptionSearchResponse:
160
+ """
161
+ Searches call transcriptions for the given keywords or phrases and returns the matching CDRs with their transcriptions.
162
+
163
+ Parameters
164
+ ----------
165
+ type : CdrSearchRequestType
166
+ Filters by call type. One of `placed` (outbound calls dialed by the account) or `received` (inbound calls answered by the account).
167
+
168
+ from_ : dt.date
169
+ Start date for call search in `YYYY-MM-DD` format.
170
+
171
+ to : dt.date
172
+ End date for call search in `YYYY-MM-DD` format.
173
+
174
+ page : int
175
+ Page number to retrieve.
176
+
177
+ per_page : int
178
+ Number of records per page.
179
+
180
+ from_search : typing.Optional[str]
181
+ Originating phone number to filter results. Accepts full or partial number.
182
+
183
+ to_search : typing.Optional[str]
184
+ Destination phone number to filter results. Accepts full or partial number.
185
+
186
+ sip_trunk : typing.Optional[str]
187
+ SIP trunk login to filter outbound calls. Ignored for inbound calls.
188
+
189
+ min_duration : typing.Optional[int]
190
+ Minimum call duration in seconds.
191
+
192
+ transcription : typing.Optional[TranscriptionFilter]
193
+
194
+ uuid_ : typing.Optional[str]
195
+ Call ID.
196
+
197
+ disposition : typing.Optional[CdrSearchRequestDisposition]
198
+ Call disposition to filter results. If omitted, returns only answered
199
+ calls. Allowed values: `answered`, `busy`, `rejected`,
200
+ `failed`, `all`. Use `all` to return calls
201
+ regardless of their disposition.
202
+
203
+ request_options : typing.Optional[RequestOptions]
204
+ Request-specific configuration.
205
+
206
+ Returns
207
+ -------
208
+ CdrTranscriptionSearchResponse
209
+ Returns a paginated list of matching CDRs with their transcriptions.
210
+
211
+ Examples
212
+ --------
213
+ import datetime
214
+
215
+ from wavix import Wavix
216
+
217
+ client = Wavix(
218
+ token="YOUR_TOKEN",
219
+ )
220
+ client.cdrs.search(
221
+ type="placed",
222
+ from_=datetime.date.fromisoformat(
223
+ "2023-08-01",
224
+ ),
225
+ to=datetime.date.fromisoformat(
226
+ "2023-08-31",
227
+ ),
228
+ page=1,
229
+ per_page=50,
230
+ )
231
+ """
232
+ _response = self._raw_client.search(
233
+ type=type,
234
+ from_=from_,
235
+ to=to,
236
+ page=page,
237
+ per_page=per_page,
238
+ from_search=from_search,
239
+ to_search=to_search,
240
+ sip_trunk=sip_trunk,
241
+ min_duration=min_duration,
242
+ transcription=transcription,
243
+ uuid_=uuid_,
244
+ disposition=disposition,
245
+ request_options=request_options,
246
+ )
247
+ return _response.data
248
+
249
+ def retranscribe(
250
+ self,
251
+ call_id: str,
252
+ *,
253
+ language: typing.Optional[TranscriptionLanguage] = OMIT,
254
+ webhook_url: typing.Optional[str] = OMIT,
255
+ request_options: typing.Optional[RequestOptions] = None,
256
+ ) -> SuccessResponse:
257
+ """
258
+ Transcribes the recording of the call identified by `call_id`. Transcription is asynchronous; poll the transcription endpoint for the result.
259
+
260
+ Parameters
261
+ ----------
262
+ call_id : str
263
+ The unique ID of the call.
264
+
265
+ language : typing.Optional[TranscriptionLanguage]
266
+
267
+ webhook_url : typing.Optional[str]
268
+ Webhook URL to receive status updates.
269
+
270
+ request_options : typing.Optional[RequestOptions]
271
+ Request-specific configuration.
272
+
273
+ Returns
274
+ -------
275
+ SuccessResponse
276
+ Returns a success confirmation. Transcription is queued.
277
+
278
+ Examples
279
+ --------
280
+ from wavix import Wavix
281
+
282
+ client = Wavix(
283
+ token="YOUR_TOKEN",
284
+ )
285
+ client.cdrs.retranscribe(
286
+ call_id="bbaa37bf-430a-46da-ade3-c248e407016",
287
+ )
288
+ """
289
+ _response = self._raw_client.retranscribe(
290
+ call_id, language=language, webhook_url=webhook_url, request_options=request_options
291
+ )
292
+ return _response.data
293
+
294
+ def transcriptions(
295
+ self, call_id: str, *, request_options: typing.Optional[RequestOptions] = None
296
+ ) -> CdrTranscriptionResponse:
297
+ """
298
+ Returns the transcription of the recorded call identified by `call_id`. Alias of the `transcription` endpoint.
299
+
300
+ Parameters
301
+ ----------
302
+ call_id : str
303
+ The unique ID of the call.
304
+
305
+ request_options : typing.Optional[RequestOptions]
306
+ Request-specific configuration.
307
+
308
+ Returns
309
+ -------
310
+ CdrTranscriptionResponse
311
+ Returns the call transcription.
312
+
313
+ Examples
314
+ --------
315
+ from wavix import Wavix
316
+
317
+ client = Wavix(
318
+ token="YOUR_TOKEN",
319
+ )
320
+ client.cdrs.transcriptions(
321
+ call_id="bbaa37bf-430a-46da-ade3-c248e407016",
322
+ )
323
+ """
324
+ _response = self._raw_client.transcriptions(call_id, request_options=request_options)
325
+ return _response.data
326
+
327
+ def get(
328
+ self,
329
+ call_id: str,
330
+ *,
331
+ show_transcription: typing.Optional[bool] = None,
332
+ request_options: typing.Optional[RequestOptions] = None,
333
+ ) -> CdrResponse:
334
+ """
335
+ Returns the call detail record for the call identified by `call_id`.
336
+
337
+ Parameters
338
+ ----------
339
+ call_id : str
340
+ The unique ID of the call.
341
+
342
+ show_transcription : typing.Optional[bool]
343
+ When `true`, includes the call transcription in the response.
344
+
345
+ request_options : typing.Optional[RequestOptions]
346
+ Request-specific configuration.
347
+
348
+ Returns
349
+ -------
350
+ CdrResponse
351
+ Returns the CDR.
352
+
353
+ Examples
354
+ --------
355
+ from wavix import Wavix
356
+
357
+ client = Wavix(
358
+ token="YOUR_TOKEN",
359
+ )
360
+ client.cdrs.get(
361
+ call_id="aa566501-c591-4a8b-b3b9-cc1295398b72",
362
+ show_transcription=True,
363
+ )
364
+ """
365
+ _response = self._raw_client.get(
366
+ call_id, show_transcription=show_transcription, request_options=request_options
367
+ )
368
+ return _response.data
369
+
370
+ def list_all(
371
+ self,
372
+ *,
373
+ from_: dt.date,
374
+ to: dt.date,
375
+ type: str,
376
+ disposition: typing.Optional[CallDisposition] = None,
377
+ from_search: typing.Optional[str] = None,
378
+ to_search: typing.Optional[str] = None,
379
+ sip_trunk: typing.Optional[str] = None,
380
+ uuid_: typing.Optional[str] = None,
381
+ page: typing.Optional[int] = None,
382
+ per_page: typing.Optional[int] = None,
383
+ request_options: typing.Optional[RequestOptions] = None,
384
+ ) -> str:
385
+ """
386
+ Streams matching call detail records as newline-delimited JSON (NDJSON), one record per line, for bulk export.
387
+
388
+ Parameters
389
+ ----------
390
+ from_ : dt.date
391
+ Start of the date range to query, in `YYYY-MM-DD` format. Inclusive.
392
+
393
+ to : dt.date
394
+ End of the date range to query, in `YYYY-MM-DD` format. Inclusive.
395
+
396
+ type : str
397
+ Filters CDRs by call direction. One of `placed` (outbound calls dialed by the account) or `received` (inbound calls answered by the account).
398
+
399
+ disposition : typing.Optional[CallDisposition]
400
+ Filters CDRs by call disposition. One of `answered` (the called party answered), `busy` (the called party was busy), `rejected` (the call was declined), `failed` (the call could not be routed), or `all` (no disposition filter).
401
+
402
+ from_search : typing.Optional[str]
403
+ Filters CDRs by originating phone number. Accepts a full or partial number.
404
+
405
+ to_search : typing.Optional[str]
406
+ Filters CDRs by destination phone number. Accepts a full or partial number.
407
+
408
+ sip_trunk : typing.Optional[str]
409
+ Filters outbound CDRs by SIP trunk login. Ignored for inbound calls.
410
+
411
+ uuid_ : typing.Optional[str]
412
+ Filters CDRs by the unique call ID.
413
+
414
+ page : typing.Optional[int]
415
+ Page number to retrieve. Default `1`.
416
+
417
+ per_page : typing.Optional[int]
418
+ Number of records to return per page. Default `25`.
419
+
420
+ request_options : typing.Optional[RequestOptions]
421
+ Request-specific configuration.
422
+
423
+ Returns
424
+ -------
425
+ str
426
+ Returns an NDJSON stream of CDRs, one record per line.
427
+
428
+ Examples
429
+ --------
430
+ import datetime
431
+
432
+ from wavix import Wavix
433
+
434
+ client = Wavix(
435
+ token="YOUR_TOKEN",
436
+ )
437
+ client.cdrs.list_all(
438
+ from_=datetime.date.fromisoformat(
439
+ "2023-01-01",
440
+ ),
441
+ to=datetime.date.fromisoformat(
442
+ "2023-09-01",
443
+ ),
444
+ type="received",
445
+ from_search="13524815863",
446
+ to_search="12565378257",
447
+ sip_trunk="12321",
448
+ uuid_="99df5ffd-962a-410f-bcce-d08f1f7f328c",
449
+ page=1,
450
+ per_page=25,
451
+ )
452
+ """
453
+ _response = self._raw_client.list_all(
454
+ from_=from_,
455
+ to=to,
456
+ type=type,
457
+ disposition=disposition,
458
+ from_search=from_search,
459
+ to_search=to_search,
460
+ sip_trunk=sip_trunk,
461
+ uuid_=uuid_,
462
+ page=page,
463
+ per_page=per_page,
464
+ request_options=request_options,
465
+ )
466
+ return _response.data
467
+
468
+ @property
469
+ def transcription(self):
470
+ if self._transcription is None:
471
+ from .transcription.client import TranscriptionClient # noqa: E402
472
+
473
+ self._transcription = TranscriptionClient(client_wrapper=self._client_wrapper)
474
+ return self._transcription
475
+
476
+
477
+ class AsyncCdrsClient:
478
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
479
+ self._raw_client = AsyncRawCdrsClient(client_wrapper=client_wrapper)
480
+ self._client_wrapper = client_wrapper
481
+ self._transcription: typing.Optional[AsyncTranscriptionClient] = None
482
+
483
+ @property
484
+ def with_raw_response(self) -> AsyncRawCdrsClient:
485
+ """
486
+ Retrieves a raw implementation of this client that returns raw responses.
487
+
488
+ Returns
489
+ -------
490
+ AsyncRawCdrsClient
491
+ """
492
+ return self._raw_client
493
+
494
+ async def list(
495
+ self,
496
+ *,
497
+ from_: dt.date,
498
+ to: dt.date,
499
+ type: str,
500
+ disposition: typing.Optional[CallDisposition] = None,
501
+ from_search: typing.Optional[str] = None,
502
+ to_search: typing.Optional[str] = None,
503
+ sip_trunk: typing.Optional[str] = None,
504
+ uuid_: typing.Optional[str] = None,
505
+ page: typing.Optional[int] = None,
506
+ per_page: typing.Optional[int] = None,
507
+ request_options: typing.Optional[RequestOptions] = None,
508
+ ) -> CdrListResponse:
509
+ """
510
+ Returns a paginated list of call detail records for the authenticated account, within the requested date range.
511
+
512
+ Parameters
513
+ ----------
514
+ from_ : dt.date
515
+ Start of the date range to query, in `YYYY-MM-DD` format. Inclusive.
516
+
517
+ to : dt.date
518
+ End of the date range to query, in `YYYY-MM-DD` format. Inclusive.
519
+
520
+ type : str
521
+ Filters CDRs by call direction. One of `placed` (outbound calls dialed by the account) or `received` (inbound calls answered by the account).
522
+
523
+ disposition : typing.Optional[CallDisposition]
524
+ Filters CDRs by call disposition. One of `answered` (the called party answered), `busy` (the called party was busy), `rejected` (the call was declined), `failed` (the call could not be routed), or `all` (no disposition filter).
525
+
526
+ from_search : typing.Optional[str]
527
+ Filters CDRs by originating phone number. Accepts a full or partial number.
528
+
529
+ to_search : typing.Optional[str]
530
+ Filters CDRs by destination phone number. Accepts a full or partial number.
531
+
532
+ sip_trunk : typing.Optional[str]
533
+ Filters outbound CDRs by SIP trunk login. Ignored for inbound calls.
534
+
535
+ uuid_ : typing.Optional[str]
536
+ Filters CDRs by the unique call ID.
537
+
538
+ page : typing.Optional[int]
539
+ Page number to retrieve. Default `1`.
540
+
541
+ per_page : typing.Optional[int]
542
+ Number of records to return per page. Default `25`.
543
+
544
+ request_options : typing.Optional[RequestOptions]
545
+ Request-specific configuration.
546
+
547
+ Returns
548
+ -------
549
+ CdrListResponse
550
+ Returns a paginated list of CDRs.
551
+
552
+ Examples
553
+ --------
554
+ import asyncio
555
+ import datetime
556
+
557
+ from wavix import AsyncWavix
558
+
559
+ client = AsyncWavix(
560
+ token="YOUR_TOKEN",
561
+ )
562
+
563
+
564
+ async def main() -> None:
565
+ await client.cdrs.list(
566
+ from_=datetime.date.fromisoformat(
567
+ "2023-01-01",
568
+ ),
569
+ to=datetime.date.fromisoformat(
570
+ "2023-09-01",
571
+ ),
572
+ type="received",
573
+ from_search="13524815863",
574
+ to_search="12565378257",
575
+ sip_trunk="12321",
576
+ uuid_="99df5ffd-962a-410f-bcce-d08f1f7f328c",
577
+ page=1,
578
+ per_page=25,
579
+ )
580
+
581
+
582
+ asyncio.run(main())
583
+ """
584
+ _response = await self._raw_client.list(
585
+ from_=from_,
586
+ to=to,
587
+ type=type,
588
+ disposition=disposition,
589
+ from_search=from_search,
590
+ to_search=to_search,
591
+ sip_trunk=sip_trunk,
592
+ uuid_=uuid_,
593
+ page=page,
594
+ per_page=per_page,
595
+ request_options=request_options,
596
+ )
597
+ return _response.data
598
+
599
+ async def search(
600
+ self,
601
+ *,
602
+ type: CdrSearchRequestType,
603
+ from_: dt.date,
604
+ to: dt.date,
605
+ page: int,
606
+ per_page: int,
607
+ from_search: typing.Optional[str] = OMIT,
608
+ to_search: typing.Optional[str] = OMIT,
609
+ sip_trunk: typing.Optional[str] = OMIT,
610
+ min_duration: typing.Optional[int] = OMIT,
611
+ transcription: typing.Optional[TranscriptionFilter] = OMIT,
612
+ uuid_: typing.Optional[str] = OMIT,
613
+ disposition: typing.Optional[CdrSearchRequestDisposition] = OMIT,
614
+ request_options: typing.Optional[RequestOptions] = None,
615
+ ) -> CdrTranscriptionSearchResponse:
616
+ """
617
+ Searches call transcriptions for the given keywords or phrases and returns the matching CDRs with their transcriptions.
618
+
619
+ Parameters
620
+ ----------
621
+ type : CdrSearchRequestType
622
+ Filters by call type. One of `placed` (outbound calls dialed by the account) or `received` (inbound calls answered by the account).
623
+
624
+ from_ : dt.date
625
+ Start date for call search in `YYYY-MM-DD` format.
626
+
627
+ to : dt.date
628
+ End date for call search in `YYYY-MM-DD` format.
629
+
630
+ page : int
631
+ Page number to retrieve.
632
+
633
+ per_page : int
634
+ Number of records per page.
635
+
636
+ from_search : typing.Optional[str]
637
+ Originating phone number to filter results. Accepts full or partial number.
638
+
639
+ to_search : typing.Optional[str]
640
+ Destination phone number to filter results. Accepts full or partial number.
641
+
642
+ sip_trunk : typing.Optional[str]
643
+ SIP trunk login to filter outbound calls. Ignored for inbound calls.
644
+
645
+ min_duration : typing.Optional[int]
646
+ Minimum call duration in seconds.
647
+
648
+ transcription : typing.Optional[TranscriptionFilter]
649
+
650
+ uuid_ : typing.Optional[str]
651
+ Call ID.
652
+
653
+ disposition : typing.Optional[CdrSearchRequestDisposition]
654
+ Call disposition to filter results. If omitted, returns only answered
655
+ calls. Allowed values: `answered`, `busy`, `rejected`,
656
+ `failed`, `all`. Use `all` to return calls
657
+ regardless of their disposition.
658
+
659
+ request_options : typing.Optional[RequestOptions]
660
+ Request-specific configuration.
661
+
662
+ Returns
663
+ -------
664
+ CdrTranscriptionSearchResponse
665
+ Returns a paginated list of matching CDRs with their transcriptions.
666
+
667
+ Examples
668
+ --------
669
+ import asyncio
670
+ import datetime
671
+
672
+ from wavix import AsyncWavix
673
+
674
+ client = AsyncWavix(
675
+ token="YOUR_TOKEN",
676
+ )
677
+
678
+
679
+ async def main() -> None:
680
+ await client.cdrs.search(
681
+ type="placed",
682
+ from_=datetime.date.fromisoformat(
683
+ "2023-08-01",
684
+ ),
685
+ to=datetime.date.fromisoformat(
686
+ "2023-08-31",
687
+ ),
688
+ page=1,
689
+ per_page=50,
690
+ )
691
+
692
+
693
+ asyncio.run(main())
694
+ """
695
+ _response = await self._raw_client.search(
696
+ type=type,
697
+ from_=from_,
698
+ to=to,
699
+ page=page,
700
+ per_page=per_page,
701
+ from_search=from_search,
702
+ to_search=to_search,
703
+ sip_trunk=sip_trunk,
704
+ min_duration=min_duration,
705
+ transcription=transcription,
706
+ uuid_=uuid_,
707
+ disposition=disposition,
708
+ request_options=request_options,
709
+ )
710
+ return _response.data
711
+
712
+ async def retranscribe(
713
+ self,
714
+ call_id: str,
715
+ *,
716
+ language: typing.Optional[TranscriptionLanguage] = OMIT,
717
+ webhook_url: typing.Optional[str] = OMIT,
718
+ request_options: typing.Optional[RequestOptions] = None,
719
+ ) -> SuccessResponse:
720
+ """
721
+ Transcribes the recording of the call identified by `call_id`. Transcription is asynchronous; poll the transcription endpoint for the result.
722
+
723
+ Parameters
724
+ ----------
725
+ call_id : str
726
+ The unique ID of the call.
727
+
728
+ language : typing.Optional[TranscriptionLanguage]
729
+
730
+ webhook_url : typing.Optional[str]
731
+ Webhook URL to receive status updates.
732
+
733
+ request_options : typing.Optional[RequestOptions]
734
+ Request-specific configuration.
735
+
736
+ Returns
737
+ -------
738
+ SuccessResponse
739
+ Returns a success confirmation. Transcription is queued.
740
+
741
+ Examples
742
+ --------
743
+ import asyncio
744
+
745
+ from wavix import AsyncWavix
746
+
747
+ client = AsyncWavix(
748
+ token="YOUR_TOKEN",
749
+ )
750
+
751
+
752
+ async def main() -> None:
753
+ await client.cdrs.retranscribe(
754
+ call_id="bbaa37bf-430a-46da-ade3-c248e407016",
755
+ )
756
+
757
+
758
+ asyncio.run(main())
759
+ """
760
+ _response = await self._raw_client.retranscribe(
761
+ call_id, language=language, webhook_url=webhook_url, request_options=request_options
762
+ )
763
+ return _response.data
764
+
765
+ async def transcriptions(
766
+ self, call_id: str, *, request_options: typing.Optional[RequestOptions] = None
767
+ ) -> CdrTranscriptionResponse:
768
+ """
769
+ Returns the transcription of the recorded call identified by `call_id`. Alias of the `transcription` endpoint.
770
+
771
+ Parameters
772
+ ----------
773
+ call_id : str
774
+ The unique ID of the call.
775
+
776
+ request_options : typing.Optional[RequestOptions]
777
+ Request-specific configuration.
778
+
779
+ Returns
780
+ -------
781
+ CdrTranscriptionResponse
782
+ Returns the call transcription.
783
+
784
+ Examples
785
+ --------
786
+ import asyncio
787
+
788
+ from wavix import AsyncWavix
789
+
790
+ client = AsyncWavix(
791
+ token="YOUR_TOKEN",
792
+ )
793
+
794
+
795
+ async def main() -> None:
796
+ await client.cdrs.transcriptions(
797
+ call_id="bbaa37bf-430a-46da-ade3-c248e407016",
798
+ )
799
+
800
+
801
+ asyncio.run(main())
802
+ """
803
+ _response = await self._raw_client.transcriptions(call_id, request_options=request_options)
804
+ return _response.data
805
+
806
+ async def get(
807
+ self,
808
+ call_id: str,
809
+ *,
810
+ show_transcription: typing.Optional[bool] = None,
811
+ request_options: typing.Optional[RequestOptions] = None,
812
+ ) -> CdrResponse:
813
+ """
814
+ Returns the call detail record for the call identified by `call_id`.
815
+
816
+ Parameters
817
+ ----------
818
+ call_id : str
819
+ The unique ID of the call.
820
+
821
+ show_transcription : typing.Optional[bool]
822
+ When `true`, includes the call transcription in the response.
823
+
824
+ request_options : typing.Optional[RequestOptions]
825
+ Request-specific configuration.
826
+
827
+ Returns
828
+ -------
829
+ CdrResponse
830
+ Returns the CDR.
831
+
832
+ Examples
833
+ --------
834
+ import asyncio
835
+
836
+ from wavix import AsyncWavix
837
+
838
+ client = AsyncWavix(
839
+ token="YOUR_TOKEN",
840
+ )
841
+
842
+
843
+ async def main() -> None:
844
+ await client.cdrs.get(
845
+ call_id="aa566501-c591-4a8b-b3b9-cc1295398b72",
846
+ show_transcription=True,
847
+ )
848
+
849
+
850
+ asyncio.run(main())
851
+ """
852
+ _response = await self._raw_client.get(
853
+ call_id, show_transcription=show_transcription, request_options=request_options
854
+ )
855
+ return _response.data
856
+
857
+ async def list_all(
858
+ self,
859
+ *,
860
+ from_: dt.date,
861
+ to: dt.date,
862
+ type: str,
863
+ disposition: typing.Optional[CallDisposition] = None,
864
+ from_search: typing.Optional[str] = None,
865
+ to_search: typing.Optional[str] = None,
866
+ sip_trunk: typing.Optional[str] = None,
867
+ uuid_: typing.Optional[str] = None,
868
+ page: typing.Optional[int] = None,
869
+ per_page: typing.Optional[int] = None,
870
+ request_options: typing.Optional[RequestOptions] = None,
871
+ ) -> str:
872
+ """
873
+ Streams matching call detail records as newline-delimited JSON (NDJSON), one record per line, for bulk export.
874
+
875
+ Parameters
876
+ ----------
877
+ from_ : dt.date
878
+ Start of the date range to query, in `YYYY-MM-DD` format. Inclusive.
879
+
880
+ to : dt.date
881
+ End of the date range to query, in `YYYY-MM-DD` format. Inclusive.
882
+
883
+ type : str
884
+ Filters CDRs by call direction. One of `placed` (outbound calls dialed by the account) or `received` (inbound calls answered by the account).
885
+
886
+ disposition : typing.Optional[CallDisposition]
887
+ Filters CDRs by call disposition. One of `answered` (the called party answered), `busy` (the called party was busy), `rejected` (the call was declined), `failed` (the call could not be routed), or `all` (no disposition filter).
888
+
889
+ from_search : typing.Optional[str]
890
+ Filters CDRs by originating phone number. Accepts a full or partial number.
891
+
892
+ to_search : typing.Optional[str]
893
+ Filters CDRs by destination phone number. Accepts a full or partial number.
894
+
895
+ sip_trunk : typing.Optional[str]
896
+ Filters outbound CDRs by SIP trunk login. Ignored for inbound calls.
897
+
898
+ uuid_ : typing.Optional[str]
899
+ Filters CDRs by the unique call ID.
900
+
901
+ page : typing.Optional[int]
902
+ Page number to retrieve. Default `1`.
903
+
904
+ per_page : typing.Optional[int]
905
+ Number of records to return per page. Default `25`.
906
+
907
+ request_options : typing.Optional[RequestOptions]
908
+ Request-specific configuration.
909
+
910
+ Returns
911
+ -------
912
+ str
913
+ Returns an NDJSON stream of CDRs, one record per line.
914
+
915
+ Examples
916
+ --------
917
+ import asyncio
918
+ import datetime
919
+
920
+ from wavix import AsyncWavix
921
+
922
+ client = AsyncWavix(
923
+ token="YOUR_TOKEN",
924
+ )
925
+
926
+
927
+ async def main() -> None:
928
+ await client.cdrs.list_all(
929
+ from_=datetime.date.fromisoformat(
930
+ "2023-01-01",
931
+ ),
932
+ to=datetime.date.fromisoformat(
933
+ "2023-09-01",
934
+ ),
935
+ type="received",
936
+ from_search="13524815863",
937
+ to_search="12565378257",
938
+ sip_trunk="12321",
939
+ uuid_="99df5ffd-962a-410f-bcce-d08f1f7f328c",
940
+ page=1,
941
+ per_page=25,
942
+ )
943
+
944
+
945
+ asyncio.run(main())
946
+ """
947
+ _response = await self._raw_client.list_all(
948
+ from_=from_,
949
+ to=to,
950
+ type=type,
951
+ disposition=disposition,
952
+ from_search=from_search,
953
+ to_search=to_search,
954
+ sip_trunk=sip_trunk,
955
+ uuid_=uuid_,
956
+ page=page,
957
+ per_page=per_page,
958
+ request_options=request_options,
959
+ )
960
+ return _response.data
961
+
962
+ @property
963
+ def transcription(self):
964
+ if self._transcription is None:
965
+ from .transcription.client import AsyncTranscriptionClient # noqa: E402
966
+
967
+ self._transcription = AsyncTranscriptionClient(client_wrapper=self._client_wrapper)
968
+ return self._transcription