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,927 @@
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.sip_trunk_create_request_allowed_ips_item import SipTrunkCreateRequestAllowedIpsItem
8
+ from ..types.sip_trunk_create_request_host_request import SipTrunkCreateRequestHostRequest
9
+ from ..types.sip_trunk_list_response import SipTrunkListResponse
10
+ from ..types.sip_trunk_response import SipTrunkResponse
11
+ from ..types.success_response import SuccessResponse
12
+ from .raw_client import AsyncRawSipTrunksClient, RawSipTrunksClient
13
+
14
+ # this is used as the default value for optional parameters
15
+ OMIT = typing.cast(typing.Any, ...)
16
+
17
+
18
+ class SipTrunksClient:
19
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
20
+ self._raw_client = RawSipTrunksClient(client_wrapper=client_wrapper)
21
+
22
+ @property
23
+ def with_raw_response(self) -> RawSipTrunksClient:
24
+ """
25
+ Retrieves a raw implementation of this client that returns raw responses.
26
+
27
+ Returns
28
+ -------
29
+ RawSipTrunksClient
30
+ """
31
+ return self._raw_client
32
+
33
+ def list(
34
+ self,
35
+ *,
36
+ page: typing.Optional[int] = None,
37
+ per_page: typing.Optional[int] = None,
38
+ request_options: typing.Optional[RequestOptions] = None,
39
+ ) -> SipTrunkListResponse:
40
+ """
41
+ Returns a paginated list of SIP trunks for the authenticated account.
42
+
43
+ Parameters
44
+ ----------
45
+ page : typing.Optional[int]
46
+ Page number to retrieve. Default `1`.
47
+
48
+ per_page : typing.Optional[int]
49
+ Number of records to return per page. Default `25`.
50
+
51
+ request_options : typing.Optional[RequestOptions]
52
+ Request-specific configuration.
53
+
54
+ Returns
55
+ -------
56
+ SipTrunkListResponse
57
+ Returns a paginated list of SIP trunks.
58
+
59
+ Examples
60
+ --------
61
+ from wavix import Wavix
62
+
63
+ client = Wavix(
64
+ token="YOUR_TOKEN",
65
+ )
66
+ client.sip_trunks.list()
67
+ """
68
+ _response = self._raw_client.list(page=page, per_page=per_page, request_options=request_options)
69
+ return _response.data
70
+
71
+ def create(
72
+ self,
73
+ *,
74
+ label: str,
75
+ password: str,
76
+ callerid: str,
77
+ ip_restrict: bool,
78
+ didinfo_enabled: bool,
79
+ call_restrict: bool,
80
+ cost_limit: bool,
81
+ channels_restrict: bool,
82
+ rewrite_enabled: bool,
83
+ transcription_enabled: bool,
84
+ transcription_threshold: int,
85
+ host_request: typing.Optional[SipTrunkCreateRequestHostRequest] = OMIT,
86
+ multiple_numbers: typing.Optional[bool] = OMIT,
87
+ allowed_ips: typing.Optional[typing.Sequence[SipTrunkCreateRequestAllowedIpsItem]] = OMIT,
88
+ call_limit: typing.Optional[int] = OMIT,
89
+ max_call_cost: typing.Optional[float] = OMIT,
90
+ max_channels: typing.Optional[int] = OMIT,
91
+ rewrite_prefix: typing.Optional[str] = OMIT,
92
+ rewrite_cond: typing.Optional[str] = OMIT,
93
+ call_recording_enabled: typing.Optional[bool] = OMIT,
94
+ machine_detection_enabled: typing.Optional[bool] = OMIT,
95
+ encrypted_media: typing.Optional[bool] = OMIT,
96
+ request_options: typing.Optional[RequestOptions] = None,
97
+ ) -> SipTrunkResponse:
98
+ """
99
+ Creates a SIP trunk for routing inbound and outbound calls. Returns the trunk with its generated `access_token`.
100
+
101
+ Parameters
102
+ ----------
103
+ label : str
104
+ User-defined name of the SIP trunk
105
+
106
+ password : str
107
+ Password set for the SIP trunk. A strong password helps keep the trunk secure.
108
+
109
+ callerid : str
110
+ Caller ID associated with the SIP trunk. Must be an active or verified number on the account.
111
+
112
+ ip_restrict : bool
113
+ Indicates whether SIP trunk registration is allowed from only specific public static IP addresses. When set to `true`, the `allowed_ips` parameter must be provided.
114
+
115
+ didinfo_enabled : bool
116
+ Indicates whether inbound calls include dialed number information in the `To` header of SIP INVITE requests
117
+
118
+ call_restrict : bool
119
+ Indicates whether a maximum call duration limit is enforced for the SIP trunk
120
+
121
+ cost_limit : bool
122
+ Indicates if the max cost limit for an outbound call limit is activated for the SIP trunk.
123
+
124
+ channels_restrict : bool
125
+ Indicates whether a limit on the number of concurrent outbound calls is enforced for the SIP trunk
126
+
127
+ rewrite_enabled : bool
128
+ Indicates whether a custom dial plan is activated for the SIP trunk
129
+
130
+ transcription_enabled : bool
131
+ Indicates whether automatic call transcription is enabled for the SIP trunk.
132
+ Available for `Flex Pro` customers only.
133
+
134
+ transcription_threshold : int
135
+ Transcriptions will be generated for calls that meet or exceed the specified minimal call duration threshold, in seconds.
136
+ Available for `Flex Pro` customers only.
137
+
138
+ host_request : typing.Optional[SipTrunkCreateRequestHostRequest]
139
+ For SIP trunks with IP authentication, includes the SIP endpoint public static IP address and the status of the authentication request. Wavix authenticates all SIP traffic originating from this IP address.
140
+
141
+ multiple_numbers : typing.Optional[bool]
142
+ Indicates whether any active or verified phone number on the account can be used as the Caller ID for the SIP trunk.
143
+
144
+ allowed_ips : typing.Optional[typing.Sequence[SipTrunkCreateRequestAllowedIpsItem]]
145
+ A list of public static IP addresses allowed to register with the SIP trunk
146
+
147
+ call_limit : typing.Optional[int]
148
+ Maximum call duration for the SIP trunk, in seconds. Must not exceed the maximum duration set for the account. Ignored when `call_restrict` is `false`.
149
+
150
+ max_call_cost : typing.Optional[float]
151
+ Maximum cost for an outbound call, in USD
152
+
153
+ max_channels : typing.Optional[int]
154
+ Maximum number of concurrent outbound calls for the SIP trunk. Must not exceed the outbound channel capacity set for the account. Ignored when `channels_restrict` is `false`.
155
+
156
+ rewrite_prefix : typing.Optional[str]
157
+ Digits to automatically prepend to each dialed phone number
158
+
159
+ rewrite_cond : typing.Optional[str]
160
+ Number of leading digits to automatically remove from each dialed phone number
161
+
162
+ call_recording_enabled : typing.Optional[bool]
163
+ Indicates whether outbound call recording is enabled for the SIP trunk
164
+
165
+ machine_detection_enabled : typing.Optional[bool]
166
+ Indicates whether automatic voicemail detection is enabled for the SIP trunk.
167
+ Available for `Flex Pro` customers only.
168
+
169
+ encrypted_media : typing.Optional[bool]
170
+ Indicates whether SRTP media encryption is enabled for the SIP trunk.
171
+
172
+ request_options : typing.Optional[RequestOptions]
173
+ Request-specific configuration.
174
+
175
+ Returns
176
+ -------
177
+ SipTrunkResponse
178
+ Returns the created SIP trunk.
179
+
180
+ Examples
181
+ --------
182
+ from wavix import Wavix
183
+
184
+ client = Wavix(
185
+ token="YOUR_TOKEN",
186
+ )
187
+ client.sip_trunks.create(
188
+ label="My trunk",
189
+ password="4r=h;EaCB85QNtr2",
190
+ callerid="13132847320",
191
+ ip_restrict=False,
192
+ didinfo_enabled=True,
193
+ call_restrict=True,
194
+ cost_limit=True,
195
+ channels_restrict=False,
196
+ rewrite_enabled=True,
197
+ transcription_enabled=True,
198
+ transcription_threshold=10,
199
+ )
200
+ """
201
+ _response = self._raw_client.create(
202
+ label=label,
203
+ password=password,
204
+ callerid=callerid,
205
+ ip_restrict=ip_restrict,
206
+ didinfo_enabled=didinfo_enabled,
207
+ call_restrict=call_restrict,
208
+ cost_limit=cost_limit,
209
+ channels_restrict=channels_restrict,
210
+ rewrite_enabled=rewrite_enabled,
211
+ transcription_enabled=transcription_enabled,
212
+ transcription_threshold=transcription_threshold,
213
+ host_request=host_request,
214
+ multiple_numbers=multiple_numbers,
215
+ allowed_ips=allowed_ips,
216
+ call_limit=call_limit,
217
+ max_call_cost=max_call_cost,
218
+ max_channels=max_channels,
219
+ rewrite_prefix=rewrite_prefix,
220
+ rewrite_cond=rewrite_cond,
221
+ call_recording_enabled=call_recording_enabled,
222
+ machine_detection_enabled=machine_detection_enabled,
223
+ encrypted_media=encrypted_media,
224
+ request_options=request_options,
225
+ )
226
+ return _response.data
227
+
228
+ def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> SipTrunkResponse:
229
+ """
230
+ Returns the SIP trunk identified by `id`.
231
+
232
+ Parameters
233
+ ----------
234
+ id : int
235
+ The unique ID of the SIP trunk.
236
+
237
+ request_options : typing.Optional[RequestOptions]
238
+ Request-specific configuration.
239
+
240
+ Returns
241
+ -------
242
+ SipTrunkResponse
243
+ Returns the SIP trunk.
244
+
245
+ Examples
246
+ --------
247
+ from wavix import Wavix
248
+
249
+ client = Wavix(
250
+ token="YOUR_TOKEN",
251
+ )
252
+ client.sip_trunks.get(
253
+ id=3107,
254
+ )
255
+ """
256
+ _response = self._raw_client.get(id, request_options=request_options)
257
+ return _response.data
258
+
259
+ def update(
260
+ self,
261
+ id: int,
262
+ *,
263
+ label: str,
264
+ password: str,
265
+ callerid: str,
266
+ ip_restrict: bool,
267
+ didinfo_enabled: bool,
268
+ call_restrict: bool,
269
+ cost_limit: bool,
270
+ channels_restrict: bool,
271
+ rewrite_enabled: bool,
272
+ transcription_enabled: bool,
273
+ transcription_threshold: int,
274
+ host_request: typing.Optional[SipTrunkCreateRequestHostRequest] = OMIT,
275
+ multiple_numbers: typing.Optional[bool] = OMIT,
276
+ allowed_ips: typing.Optional[typing.Sequence[SipTrunkCreateRequestAllowedIpsItem]] = OMIT,
277
+ call_limit: typing.Optional[int] = OMIT,
278
+ max_call_cost: typing.Optional[float] = OMIT,
279
+ max_channels: typing.Optional[int] = OMIT,
280
+ rewrite_prefix: typing.Optional[str] = OMIT,
281
+ rewrite_cond: typing.Optional[str] = OMIT,
282
+ call_recording_enabled: typing.Optional[bool] = OMIT,
283
+ machine_detection_enabled: typing.Optional[bool] = OMIT,
284
+ encrypted_media: typing.Optional[bool] = OMIT,
285
+ request_options: typing.Optional[RequestOptions] = None,
286
+ ) -> SipTrunkResponse:
287
+ """
288
+ Replaces the configuration of the SIP trunk identified by `id`. Omitted fields revert to their defaults.
289
+
290
+ Parameters
291
+ ----------
292
+ id : int
293
+ The unique ID of the SIP trunk.
294
+
295
+ label : str
296
+ User-defined name of the SIP trunk
297
+
298
+ password : str
299
+ Password set for the SIP trunk. A strong password helps keep the trunk secure.
300
+
301
+ callerid : str
302
+ Caller ID associated with the SIP trunk. Must be an active or verified number on the account.
303
+
304
+ ip_restrict : bool
305
+ Indicates whether SIP trunk registration is allowed from only specific public static IP addresses. When set to `true`, the `allowed_ips` parameter must be provided.
306
+
307
+ didinfo_enabled : bool
308
+ Indicates whether inbound calls include dialed number information in the `To` header of SIP INVITE requests
309
+
310
+ call_restrict : bool
311
+ Indicates whether a maximum call duration limit is enforced for the SIP trunk
312
+
313
+ cost_limit : bool
314
+ Indicates if the max cost limit for an outbound call limit is activated for the SIP trunk.
315
+
316
+ channels_restrict : bool
317
+ Indicates whether a limit on the number of concurrent outbound calls is enforced for the SIP trunk
318
+
319
+ rewrite_enabled : bool
320
+ Indicates whether a custom dial plan is activated for the SIP trunk
321
+
322
+ transcription_enabled : bool
323
+ Indicates whether automatic call transcription is enabled for the SIP trunk.
324
+ Available for `Flex Pro` customers only.
325
+
326
+ transcription_threshold : int
327
+ Transcriptions will be generated for calls that meet or exceed the specified minimal call duration threshold, in seconds.
328
+ Available for `Flex Pro` customers only.
329
+
330
+ host_request : typing.Optional[SipTrunkCreateRequestHostRequest]
331
+ For SIP trunks with IP authentication, includes the SIP endpoint public static IP address and the status of the authentication request. Wavix authenticates all SIP traffic originating from this IP address.
332
+
333
+ multiple_numbers : typing.Optional[bool]
334
+ Indicates whether any active or verified phone number on the account can be used as the Caller ID for the SIP trunk.
335
+
336
+ allowed_ips : typing.Optional[typing.Sequence[SipTrunkCreateRequestAllowedIpsItem]]
337
+ A list of public static IP addresses allowed to register with the SIP trunk
338
+
339
+ call_limit : typing.Optional[int]
340
+ Maximum call duration for the SIP trunk, in seconds. Must not exceed the maximum duration set for the account. Ignored when `call_restrict` is `false`.
341
+
342
+ max_call_cost : typing.Optional[float]
343
+ Maximum cost for an outbound call, in USD
344
+
345
+ max_channels : typing.Optional[int]
346
+ Maximum number of concurrent outbound calls for the SIP trunk. Must not exceed the outbound channel capacity set for the account. Ignored when `channels_restrict` is `false`.
347
+
348
+ rewrite_prefix : typing.Optional[str]
349
+ Digits to automatically prepend to each dialed phone number
350
+
351
+ rewrite_cond : typing.Optional[str]
352
+ Number of leading digits to automatically remove from each dialed phone number
353
+
354
+ call_recording_enabled : typing.Optional[bool]
355
+ Indicates whether outbound call recording is enabled for the SIP trunk
356
+
357
+ machine_detection_enabled : typing.Optional[bool]
358
+ Indicates whether automatic voicemail detection is enabled for the SIP trunk.
359
+ Available for `Flex Pro` customers only.
360
+
361
+ encrypted_media : typing.Optional[bool]
362
+ Indicates whether SRTP media encryption is enabled for the SIP trunk.
363
+
364
+ request_options : typing.Optional[RequestOptions]
365
+ Request-specific configuration.
366
+
367
+ Returns
368
+ -------
369
+ SipTrunkResponse
370
+ Returns the updated SIP trunk.
371
+
372
+ Examples
373
+ --------
374
+ from wavix import Wavix
375
+
376
+ client = Wavix(
377
+ token="YOUR_TOKEN",
378
+ )
379
+ client.sip_trunks.update(
380
+ id=3107,
381
+ label="My trunk",
382
+ password="4r=h;EaCB85QNtr2",
383
+ callerid="13132847320",
384
+ ip_restrict=False,
385
+ didinfo_enabled=True,
386
+ call_restrict=True,
387
+ cost_limit=True,
388
+ channels_restrict=False,
389
+ rewrite_enabled=True,
390
+ transcription_enabled=True,
391
+ transcription_threshold=10,
392
+ )
393
+ """
394
+ _response = self._raw_client.update(
395
+ id,
396
+ label=label,
397
+ password=password,
398
+ callerid=callerid,
399
+ ip_restrict=ip_restrict,
400
+ didinfo_enabled=didinfo_enabled,
401
+ call_restrict=call_restrict,
402
+ cost_limit=cost_limit,
403
+ channels_restrict=channels_restrict,
404
+ rewrite_enabled=rewrite_enabled,
405
+ transcription_enabled=transcription_enabled,
406
+ transcription_threshold=transcription_threshold,
407
+ host_request=host_request,
408
+ multiple_numbers=multiple_numbers,
409
+ allowed_ips=allowed_ips,
410
+ call_limit=call_limit,
411
+ max_call_cost=max_call_cost,
412
+ max_channels=max_channels,
413
+ rewrite_prefix=rewrite_prefix,
414
+ rewrite_cond=rewrite_cond,
415
+ call_recording_enabled=call_recording_enabled,
416
+ machine_detection_enabled=machine_detection_enabled,
417
+ encrypted_media=encrypted_media,
418
+ request_options=request_options,
419
+ )
420
+ return _response.data
421
+
422
+ def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> SuccessResponse:
423
+ """
424
+ Deletes the SIP trunk identified by `id`. Deletion is permanent and stops call routing through the trunk.
425
+
426
+ Parameters
427
+ ----------
428
+ id : int
429
+ The unique ID of the SIP trunk.
430
+
431
+ request_options : typing.Optional[RequestOptions]
432
+ Request-specific configuration.
433
+
434
+ Returns
435
+ -------
436
+ SuccessResponse
437
+ Returns a success confirmation. The SIP trunk is deleted.
438
+
439
+ Examples
440
+ --------
441
+ from wavix import Wavix
442
+
443
+ client = Wavix(
444
+ token="YOUR_TOKEN",
445
+ )
446
+ client.sip_trunks.delete(
447
+ id=3107,
448
+ )
449
+ """
450
+ _response = self._raw_client.delete(id, request_options=request_options)
451
+ return _response.data
452
+
453
+
454
+ class AsyncSipTrunksClient:
455
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
456
+ self._raw_client = AsyncRawSipTrunksClient(client_wrapper=client_wrapper)
457
+
458
+ @property
459
+ def with_raw_response(self) -> AsyncRawSipTrunksClient:
460
+ """
461
+ Retrieves a raw implementation of this client that returns raw responses.
462
+
463
+ Returns
464
+ -------
465
+ AsyncRawSipTrunksClient
466
+ """
467
+ return self._raw_client
468
+
469
+ async def list(
470
+ self,
471
+ *,
472
+ page: typing.Optional[int] = None,
473
+ per_page: typing.Optional[int] = None,
474
+ request_options: typing.Optional[RequestOptions] = None,
475
+ ) -> SipTrunkListResponse:
476
+ """
477
+ Returns a paginated list of SIP trunks for the authenticated account.
478
+
479
+ Parameters
480
+ ----------
481
+ page : typing.Optional[int]
482
+ Page number to retrieve. Default `1`.
483
+
484
+ per_page : typing.Optional[int]
485
+ Number of records to return per page. Default `25`.
486
+
487
+ request_options : typing.Optional[RequestOptions]
488
+ Request-specific configuration.
489
+
490
+ Returns
491
+ -------
492
+ SipTrunkListResponse
493
+ Returns a paginated list of SIP trunks.
494
+
495
+ Examples
496
+ --------
497
+ import asyncio
498
+
499
+ from wavix import AsyncWavix
500
+
501
+ client = AsyncWavix(
502
+ token="YOUR_TOKEN",
503
+ )
504
+
505
+
506
+ async def main() -> None:
507
+ await client.sip_trunks.list()
508
+
509
+
510
+ asyncio.run(main())
511
+ """
512
+ _response = await self._raw_client.list(page=page, per_page=per_page, request_options=request_options)
513
+ return _response.data
514
+
515
+ async def create(
516
+ self,
517
+ *,
518
+ label: str,
519
+ password: str,
520
+ callerid: str,
521
+ ip_restrict: bool,
522
+ didinfo_enabled: bool,
523
+ call_restrict: bool,
524
+ cost_limit: bool,
525
+ channels_restrict: bool,
526
+ rewrite_enabled: bool,
527
+ transcription_enabled: bool,
528
+ transcription_threshold: int,
529
+ host_request: typing.Optional[SipTrunkCreateRequestHostRequest] = OMIT,
530
+ multiple_numbers: typing.Optional[bool] = OMIT,
531
+ allowed_ips: typing.Optional[typing.Sequence[SipTrunkCreateRequestAllowedIpsItem]] = OMIT,
532
+ call_limit: typing.Optional[int] = OMIT,
533
+ max_call_cost: typing.Optional[float] = OMIT,
534
+ max_channels: typing.Optional[int] = OMIT,
535
+ rewrite_prefix: typing.Optional[str] = OMIT,
536
+ rewrite_cond: typing.Optional[str] = OMIT,
537
+ call_recording_enabled: typing.Optional[bool] = OMIT,
538
+ machine_detection_enabled: typing.Optional[bool] = OMIT,
539
+ encrypted_media: typing.Optional[bool] = OMIT,
540
+ request_options: typing.Optional[RequestOptions] = None,
541
+ ) -> SipTrunkResponse:
542
+ """
543
+ Creates a SIP trunk for routing inbound and outbound calls. Returns the trunk with its generated `access_token`.
544
+
545
+ Parameters
546
+ ----------
547
+ label : str
548
+ User-defined name of the SIP trunk
549
+
550
+ password : str
551
+ Password set for the SIP trunk. A strong password helps keep the trunk secure.
552
+
553
+ callerid : str
554
+ Caller ID associated with the SIP trunk. Must be an active or verified number on the account.
555
+
556
+ ip_restrict : bool
557
+ Indicates whether SIP trunk registration is allowed from only specific public static IP addresses. When set to `true`, the `allowed_ips` parameter must be provided.
558
+
559
+ didinfo_enabled : bool
560
+ Indicates whether inbound calls include dialed number information in the `To` header of SIP INVITE requests
561
+
562
+ call_restrict : bool
563
+ Indicates whether a maximum call duration limit is enforced for the SIP trunk
564
+
565
+ cost_limit : bool
566
+ Indicates if the max cost limit for an outbound call limit is activated for the SIP trunk.
567
+
568
+ channels_restrict : bool
569
+ Indicates whether a limit on the number of concurrent outbound calls is enforced for the SIP trunk
570
+
571
+ rewrite_enabled : bool
572
+ Indicates whether a custom dial plan is activated for the SIP trunk
573
+
574
+ transcription_enabled : bool
575
+ Indicates whether automatic call transcription is enabled for the SIP trunk.
576
+ Available for `Flex Pro` customers only.
577
+
578
+ transcription_threshold : int
579
+ Transcriptions will be generated for calls that meet or exceed the specified minimal call duration threshold, in seconds.
580
+ Available for `Flex Pro` customers only.
581
+
582
+ host_request : typing.Optional[SipTrunkCreateRequestHostRequest]
583
+ For SIP trunks with IP authentication, includes the SIP endpoint public static IP address and the status of the authentication request. Wavix authenticates all SIP traffic originating from this IP address.
584
+
585
+ multiple_numbers : typing.Optional[bool]
586
+ Indicates whether any active or verified phone number on the account can be used as the Caller ID for the SIP trunk.
587
+
588
+ allowed_ips : typing.Optional[typing.Sequence[SipTrunkCreateRequestAllowedIpsItem]]
589
+ A list of public static IP addresses allowed to register with the SIP trunk
590
+
591
+ call_limit : typing.Optional[int]
592
+ Maximum call duration for the SIP trunk, in seconds. Must not exceed the maximum duration set for the account. Ignored when `call_restrict` is `false`.
593
+
594
+ max_call_cost : typing.Optional[float]
595
+ Maximum cost for an outbound call, in USD
596
+
597
+ max_channels : typing.Optional[int]
598
+ Maximum number of concurrent outbound calls for the SIP trunk. Must not exceed the outbound channel capacity set for the account. Ignored when `channels_restrict` is `false`.
599
+
600
+ rewrite_prefix : typing.Optional[str]
601
+ Digits to automatically prepend to each dialed phone number
602
+
603
+ rewrite_cond : typing.Optional[str]
604
+ Number of leading digits to automatically remove from each dialed phone number
605
+
606
+ call_recording_enabled : typing.Optional[bool]
607
+ Indicates whether outbound call recording is enabled for the SIP trunk
608
+
609
+ machine_detection_enabled : typing.Optional[bool]
610
+ Indicates whether automatic voicemail detection is enabled for the SIP trunk.
611
+ Available for `Flex Pro` customers only.
612
+
613
+ encrypted_media : typing.Optional[bool]
614
+ Indicates whether SRTP media encryption is enabled for the SIP trunk.
615
+
616
+ request_options : typing.Optional[RequestOptions]
617
+ Request-specific configuration.
618
+
619
+ Returns
620
+ -------
621
+ SipTrunkResponse
622
+ Returns the created SIP trunk.
623
+
624
+ Examples
625
+ --------
626
+ import asyncio
627
+
628
+ from wavix import AsyncWavix
629
+
630
+ client = AsyncWavix(
631
+ token="YOUR_TOKEN",
632
+ )
633
+
634
+
635
+ async def main() -> None:
636
+ await client.sip_trunks.create(
637
+ label="My trunk",
638
+ password="4r=h;EaCB85QNtr2",
639
+ callerid="13132847320",
640
+ ip_restrict=False,
641
+ didinfo_enabled=True,
642
+ call_restrict=True,
643
+ cost_limit=True,
644
+ channels_restrict=False,
645
+ rewrite_enabled=True,
646
+ transcription_enabled=True,
647
+ transcription_threshold=10,
648
+ )
649
+
650
+
651
+ asyncio.run(main())
652
+ """
653
+ _response = await self._raw_client.create(
654
+ label=label,
655
+ password=password,
656
+ callerid=callerid,
657
+ ip_restrict=ip_restrict,
658
+ didinfo_enabled=didinfo_enabled,
659
+ call_restrict=call_restrict,
660
+ cost_limit=cost_limit,
661
+ channels_restrict=channels_restrict,
662
+ rewrite_enabled=rewrite_enabled,
663
+ transcription_enabled=transcription_enabled,
664
+ transcription_threshold=transcription_threshold,
665
+ host_request=host_request,
666
+ multiple_numbers=multiple_numbers,
667
+ allowed_ips=allowed_ips,
668
+ call_limit=call_limit,
669
+ max_call_cost=max_call_cost,
670
+ max_channels=max_channels,
671
+ rewrite_prefix=rewrite_prefix,
672
+ rewrite_cond=rewrite_cond,
673
+ call_recording_enabled=call_recording_enabled,
674
+ machine_detection_enabled=machine_detection_enabled,
675
+ encrypted_media=encrypted_media,
676
+ request_options=request_options,
677
+ )
678
+ return _response.data
679
+
680
+ async def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> SipTrunkResponse:
681
+ """
682
+ Returns the SIP trunk identified by `id`.
683
+
684
+ Parameters
685
+ ----------
686
+ id : int
687
+ The unique ID of the SIP trunk.
688
+
689
+ request_options : typing.Optional[RequestOptions]
690
+ Request-specific configuration.
691
+
692
+ Returns
693
+ -------
694
+ SipTrunkResponse
695
+ Returns the SIP trunk.
696
+
697
+ Examples
698
+ --------
699
+ import asyncio
700
+
701
+ from wavix import AsyncWavix
702
+
703
+ client = AsyncWavix(
704
+ token="YOUR_TOKEN",
705
+ )
706
+
707
+
708
+ async def main() -> None:
709
+ await client.sip_trunks.get(
710
+ id=3107,
711
+ )
712
+
713
+
714
+ asyncio.run(main())
715
+ """
716
+ _response = await self._raw_client.get(id, request_options=request_options)
717
+ return _response.data
718
+
719
+ async def update(
720
+ self,
721
+ id: int,
722
+ *,
723
+ label: str,
724
+ password: str,
725
+ callerid: str,
726
+ ip_restrict: bool,
727
+ didinfo_enabled: bool,
728
+ call_restrict: bool,
729
+ cost_limit: bool,
730
+ channels_restrict: bool,
731
+ rewrite_enabled: bool,
732
+ transcription_enabled: bool,
733
+ transcription_threshold: int,
734
+ host_request: typing.Optional[SipTrunkCreateRequestHostRequest] = OMIT,
735
+ multiple_numbers: typing.Optional[bool] = OMIT,
736
+ allowed_ips: typing.Optional[typing.Sequence[SipTrunkCreateRequestAllowedIpsItem]] = OMIT,
737
+ call_limit: typing.Optional[int] = OMIT,
738
+ max_call_cost: typing.Optional[float] = OMIT,
739
+ max_channels: typing.Optional[int] = OMIT,
740
+ rewrite_prefix: typing.Optional[str] = OMIT,
741
+ rewrite_cond: typing.Optional[str] = OMIT,
742
+ call_recording_enabled: typing.Optional[bool] = OMIT,
743
+ machine_detection_enabled: typing.Optional[bool] = OMIT,
744
+ encrypted_media: typing.Optional[bool] = OMIT,
745
+ request_options: typing.Optional[RequestOptions] = None,
746
+ ) -> SipTrunkResponse:
747
+ """
748
+ Replaces the configuration of the SIP trunk identified by `id`. Omitted fields revert to their defaults.
749
+
750
+ Parameters
751
+ ----------
752
+ id : int
753
+ The unique ID of the SIP trunk.
754
+
755
+ label : str
756
+ User-defined name of the SIP trunk
757
+
758
+ password : str
759
+ Password set for the SIP trunk. A strong password helps keep the trunk secure.
760
+
761
+ callerid : str
762
+ Caller ID associated with the SIP trunk. Must be an active or verified number on the account.
763
+
764
+ ip_restrict : bool
765
+ Indicates whether SIP trunk registration is allowed from only specific public static IP addresses. When set to `true`, the `allowed_ips` parameter must be provided.
766
+
767
+ didinfo_enabled : bool
768
+ Indicates whether inbound calls include dialed number information in the `To` header of SIP INVITE requests
769
+
770
+ call_restrict : bool
771
+ Indicates whether a maximum call duration limit is enforced for the SIP trunk
772
+
773
+ cost_limit : bool
774
+ Indicates if the max cost limit for an outbound call limit is activated for the SIP trunk.
775
+
776
+ channels_restrict : bool
777
+ Indicates whether a limit on the number of concurrent outbound calls is enforced for the SIP trunk
778
+
779
+ rewrite_enabled : bool
780
+ Indicates whether a custom dial plan is activated for the SIP trunk
781
+
782
+ transcription_enabled : bool
783
+ Indicates whether automatic call transcription is enabled for the SIP trunk.
784
+ Available for `Flex Pro` customers only.
785
+
786
+ transcription_threshold : int
787
+ Transcriptions will be generated for calls that meet or exceed the specified minimal call duration threshold, in seconds.
788
+ Available for `Flex Pro` customers only.
789
+
790
+ host_request : typing.Optional[SipTrunkCreateRequestHostRequest]
791
+ For SIP trunks with IP authentication, includes the SIP endpoint public static IP address and the status of the authentication request. Wavix authenticates all SIP traffic originating from this IP address.
792
+
793
+ multiple_numbers : typing.Optional[bool]
794
+ Indicates whether any active or verified phone number on the account can be used as the Caller ID for the SIP trunk.
795
+
796
+ allowed_ips : typing.Optional[typing.Sequence[SipTrunkCreateRequestAllowedIpsItem]]
797
+ A list of public static IP addresses allowed to register with the SIP trunk
798
+
799
+ call_limit : typing.Optional[int]
800
+ Maximum call duration for the SIP trunk, in seconds. Must not exceed the maximum duration set for the account. Ignored when `call_restrict` is `false`.
801
+
802
+ max_call_cost : typing.Optional[float]
803
+ Maximum cost for an outbound call, in USD
804
+
805
+ max_channels : typing.Optional[int]
806
+ Maximum number of concurrent outbound calls for the SIP trunk. Must not exceed the outbound channel capacity set for the account. Ignored when `channels_restrict` is `false`.
807
+
808
+ rewrite_prefix : typing.Optional[str]
809
+ Digits to automatically prepend to each dialed phone number
810
+
811
+ rewrite_cond : typing.Optional[str]
812
+ Number of leading digits to automatically remove from each dialed phone number
813
+
814
+ call_recording_enabled : typing.Optional[bool]
815
+ Indicates whether outbound call recording is enabled for the SIP trunk
816
+
817
+ machine_detection_enabled : typing.Optional[bool]
818
+ Indicates whether automatic voicemail detection is enabled for the SIP trunk.
819
+ Available for `Flex Pro` customers only.
820
+
821
+ encrypted_media : typing.Optional[bool]
822
+ Indicates whether SRTP media encryption is enabled for the SIP trunk.
823
+
824
+ request_options : typing.Optional[RequestOptions]
825
+ Request-specific configuration.
826
+
827
+ Returns
828
+ -------
829
+ SipTrunkResponse
830
+ Returns the updated SIP trunk.
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.sip_trunks.update(
845
+ id=3107,
846
+ label="My trunk",
847
+ password="4r=h;EaCB85QNtr2",
848
+ callerid="13132847320",
849
+ ip_restrict=False,
850
+ didinfo_enabled=True,
851
+ call_restrict=True,
852
+ cost_limit=True,
853
+ channels_restrict=False,
854
+ rewrite_enabled=True,
855
+ transcription_enabled=True,
856
+ transcription_threshold=10,
857
+ )
858
+
859
+
860
+ asyncio.run(main())
861
+ """
862
+ _response = await self._raw_client.update(
863
+ id,
864
+ label=label,
865
+ password=password,
866
+ callerid=callerid,
867
+ ip_restrict=ip_restrict,
868
+ didinfo_enabled=didinfo_enabled,
869
+ call_restrict=call_restrict,
870
+ cost_limit=cost_limit,
871
+ channels_restrict=channels_restrict,
872
+ rewrite_enabled=rewrite_enabled,
873
+ transcription_enabled=transcription_enabled,
874
+ transcription_threshold=transcription_threshold,
875
+ host_request=host_request,
876
+ multiple_numbers=multiple_numbers,
877
+ allowed_ips=allowed_ips,
878
+ call_limit=call_limit,
879
+ max_call_cost=max_call_cost,
880
+ max_channels=max_channels,
881
+ rewrite_prefix=rewrite_prefix,
882
+ rewrite_cond=rewrite_cond,
883
+ call_recording_enabled=call_recording_enabled,
884
+ machine_detection_enabled=machine_detection_enabled,
885
+ encrypted_media=encrypted_media,
886
+ request_options=request_options,
887
+ )
888
+ return _response.data
889
+
890
+ async def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> SuccessResponse:
891
+ """
892
+ Deletes the SIP trunk identified by `id`. Deletion is permanent and stops call routing through the trunk.
893
+
894
+ Parameters
895
+ ----------
896
+ id : int
897
+ The unique ID of the SIP trunk.
898
+
899
+ request_options : typing.Optional[RequestOptions]
900
+ Request-specific configuration.
901
+
902
+ Returns
903
+ -------
904
+ SuccessResponse
905
+ Returns a success confirmation. The SIP trunk is deleted.
906
+
907
+ Examples
908
+ --------
909
+ import asyncio
910
+
911
+ from wavix import AsyncWavix
912
+
913
+ client = AsyncWavix(
914
+ token="YOUR_TOKEN",
915
+ )
916
+
917
+
918
+ async def main() -> None:
919
+ await client.sip_trunks.delete(
920
+ id=3107,
921
+ )
922
+
923
+
924
+ asyncio.run(main())
925
+ """
926
+ _response = await self._raw_client.delete(id, request_options=request_options)
927
+ return _response.data