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,211 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class UpdateCampaignsResponse(UniversalBaseModel):
10
+ """
11
+ Represents a 10DLC campaign registered under a Brand. A Campaign defines the messaging use case, opt-in and opt-out flows, and the phone numbers permitted to send its traffic.
12
+ """
13
+
14
+ affiliate_marketing: bool = pydantic.Field()
15
+ """
16
+ Indicates whether the Campaign is used for affiliate marketing.
17
+ """
18
+
19
+ age_gated: bool = pydantic.Field()
20
+ """
21
+ Indicates whether the Campaign messages contain age-gated content.
22
+ """
23
+
24
+ auto_renewal: bool = pydantic.Field()
25
+ """
26
+ Indicates whether the Campaign should be automatically renewed.
27
+ """
28
+
29
+ last_bill_date: typing.Optional[str] = pydantic.Field(default=None)
30
+ """
31
+ Date and time the Campaign was last billed in ISO 8601 format. `null` if the Campaign has never been billed.
32
+ """
33
+
34
+ next_bill_date: typing.Optional[str] = pydantic.Field(default=None)
35
+ """
36
+ Date and time the Campaign will be billed next in ISO 8601 format. `null` if the next billing date is not scheduled.
37
+ """
38
+
39
+ direct_lending: bool = pydantic.Field()
40
+ """
41
+ Indicates whether the Campaign messages contain direct lending content.
42
+ """
43
+
44
+ embedded_links: bool = pydantic.Field()
45
+ """
46
+ Indicates whether the Campaign messages contain embedded links.
47
+ """
48
+
49
+ embedded_phones: bool = pydantic.Field()
50
+ """
51
+ Indicates whether the Campaign messages contain embedded phone numbers.
52
+ """
53
+
54
+ embedded_link_sample: typing.Optional[str] = pydantic.Field(default=None)
55
+ """
56
+ Sample of an embedded link used in Campaign messages.
57
+ """
58
+
59
+ brand_id: str = pydantic.Field()
60
+ """
61
+ Unique identifier of the Brand that owns the Campaign.
62
+ """
63
+
64
+ campaign_id: str = pydantic.Field()
65
+ """
66
+ Unique identifier of the Campaign assigned by the registry.
67
+ """
68
+
69
+ description: typing.Optional[str] = pydantic.Field(default=None)
70
+ """
71
+ Description of the Campaign and its messaging purpose.
72
+ """
73
+
74
+ optin_workflow: typing.Optional[str] = pydantic.Field(default=None)
75
+ """
76
+ Description of the workflow through which subscribers opt in to the Campaign.
77
+ """
78
+
79
+ feedback: typing.Optional[str] = pydantic.Field(default=None)
80
+ """
81
+ Feedback from the registry explaining the current `status`.
82
+ """
83
+
84
+ help: bool = pydantic.Field()
85
+ """
86
+ Indicates whether the campaign includes a help system (for example, keyword: HELP, INFO).
87
+ """
88
+
89
+ help_keywords: str = pydantic.Field()
90
+ """
91
+ Comma-separated list of help keywords. Keywords are case-insensitive.
92
+ """
93
+
94
+ help_message: typing.Optional[str] = pydantic.Field(default=None)
95
+ """
96
+ Help message sent upon receiving a help keyword.
97
+ """
98
+
99
+ optin: bool = pydantic.Field()
100
+ """
101
+ Indicates whether the Campaign requires subscriber opt-in.
102
+ """
103
+
104
+ optin_keywords: str = pydantic.Field()
105
+ """
106
+ Comma-separated list of opt-in keywords. Keywords are case-insensitive.
107
+ """
108
+
109
+ optin_message: typing.Optional[str] = pydantic.Field(default=None)
110
+ """
111
+ Opt-in message sent upon receiving an opt-in keyword.
112
+ """
113
+
114
+ optout: bool = pydantic.Field()
115
+ """
116
+ Indicates whether the campaign includes an opt-out system (for example, keyword: STOP, QUIT).
117
+ """
118
+
119
+ optout_keywords: str = pydantic.Field()
120
+ """
121
+ Comma-separated list of opt-out keywords. Keywords are case-insensitive.
122
+ """
123
+
124
+ optout_message: typing.Optional[str] = pydantic.Field(default=None)
125
+ """
126
+ Opt-out message sent upon receiving an opt-out keyword.
127
+ """
128
+
129
+ name: str = pydantic.Field()
130
+ """
131
+ Display name of the Campaign.
132
+ """
133
+
134
+ created_at: str = pydantic.Field()
135
+ """
136
+ Timestamp when the Campaign was created, in ISO 8601 format.
137
+ """
138
+
139
+ sample1: typing.Optional[str] = pydantic.Field(default=None)
140
+ """
141
+ Sample message demonstrating the content sent through the Campaign.
142
+ """
143
+
144
+ sample2: typing.Optional[str] = pydantic.Field(default=None)
145
+ """
146
+ Sample message demonstrating the content sent through the Campaign.
147
+ """
148
+
149
+ sample3: typing.Optional[str] = pydantic.Field(default=None)
150
+ """
151
+ Sample message demonstrating the content sent through the Campaign.
152
+ """
153
+
154
+ sample4: typing.Optional[str] = pydantic.Field(default=None)
155
+ """
156
+ Sample message demonstrating the content sent through the Campaign.
157
+ """
158
+
159
+ sample5: typing.Optional[str] = pydantic.Field(default=None)
160
+ """
161
+ Sample message demonstrating the content sent through the Campaign.
162
+ """
163
+
164
+ updated_at: str = pydantic.Field()
165
+ """
166
+ Timestamp when the Campaign was last updated, in ISO 8601 format.
167
+ """
168
+
169
+ mock: bool = pydantic.Field()
170
+ """
171
+ Indicates whether the Campaign is a mock campaign used for testing. Mock campaigns cannot send production traffic.
172
+ """
173
+
174
+ usecase: str = pydantic.Field()
175
+ """
176
+ Registered use case for the Campaign, such as `2FA` or `MARKETING`.
177
+ """
178
+
179
+ monthly_fee: str = pydantic.Field()
180
+ """
181
+ Recurring monthly fee charged for the Campaign, as a decimal string.
182
+ """
183
+
184
+ privacy_policy: typing.Optional[str] = pydantic.Field(default=None)
185
+ """
186
+ Privacy policy URL.
187
+ """
188
+
189
+ terms_conditions: typing.Optional[str] = pydantic.Field(default=None)
190
+ """
191
+ Terms and conditions URL.
192
+ """
193
+
194
+ status: str = pydantic.Field()
195
+ """
196
+ Current registration status of the Campaign, such as `APPROVED` or `PENDING`.
197
+ """
198
+
199
+ phone_numbers: typing.List[str] = pydantic.Field()
200
+ """
201
+ Phone numbers assigned to the Campaign, in E.164 format.
202
+ """
203
+
204
+ if IS_PYDANTIC_V2:
205
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
206
+ else:
207
+
208
+ class Config:
209
+ frozen = True
210
+ smart_union = True
211
+ extra = pydantic.Extra.allow
@@ -0,0 +1,196 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from __future__ import annotations
4
+
5
+ import typing
6
+
7
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
+ from .raw_client import AsyncRawTenDlcClient, RawTenDlcClient
9
+
10
+ if typing.TYPE_CHECKING:
11
+ from .brand_appeals.client import AsyncBrandAppealsClient, BrandAppealsClient
12
+ from .brand_evidence.client import AsyncBrandEvidenceClient, BrandEvidenceClient
13
+ from .brand_vetting_appeals.client import AsyncBrandVettingAppealsClient, BrandVettingAppealsClient
14
+ from .brand_vettings.client import AsyncBrandVettingsClient, BrandVettingsClient
15
+ from .brands.client import AsyncBrandsClient, BrandsClient
16
+ from .campaign_numbers.client import AsyncCampaignNumbersClient, CampaignNumbersClient
17
+ from .campaigns.client import AsyncCampaignsClient, CampaignsClient
18
+ from .subscriptions.client import AsyncSubscriptionsClient, SubscriptionsClient
19
+
20
+
21
+ class TenDlcClient:
22
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
23
+ self._raw_client = RawTenDlcClient(client_wrapper=client_wrapper)
24
+ self._client_wrapper = client_wrapper
25
+ self._brands: typing.Optional[BrandsClient] = None
26
+ self._brand_appeals: typing.Optional[BrandAppealsClient] = None
27
+ self._brand_evidence: typing.Optional[BrandEvidenceClient] = None
28
+ self._brand_vettings: typing.Optional[BrandVettingsClient] = None
29
+ self._brand_vetting_appeals: typing.Optional[BrandVettingAppealsClient] = None
30
+ self._campaigns: typing.Optional[CampaignsClient] = None
31
+ self._subscriptions: typing.Optional[SubscriptionsClient] = None
32
+ self._campaign_numbers: typing.Optional[CampaignNumbersClient] = None
33
+
34
+ @property
35
+ def with_raw_response(self) -> RawTenDlcClient:
36
+ """
37
+ Retrieves a raw implementation of this client that returns raw responses.
38
+
39
+ Returns
40
+ -------
41
+ RawTenDlcClient
42
+ """
43
+ return self._raw_client
44
+
45
+ @property
46
+ def brands(self):
47
+ if self._brands is None:
48
+ from .brands.client import BrandsClient # noqa: E402
49
+
50
+ self._brands = BrandsClient(client_wrapper=self._client_wrapper)
51
+ return self._brands
52
+
53
+ @property
54
+ def brand_appeals(self):
55
+ if self._brand_appeals is None:
56
+ from .brand_appeals.client import BrandAppealsClient # noqa: E402
57
+
58
+ self._brand_appeals = BrandAppealsClient(client_wrapper=self._client_wrapper)
59
+ return self._brand_appeals
60
+
61
+ @property
62
+ def brand_evidence(self):
63
+ if self._brand_evidence is None:
64
+ from .brand_evidence.client import BrandEvidenceClient # noqa: E402
65
+
66
+ self._brand_evidence = BrandEvidenceClient(client_wrapper=self._client_wrapper)
67
+ return self._brand_evidence
68
+
69
+ @property
70
+ def brand_vettings(self):
71
+ if self._brand_vettings is None:
72
+ from .brand_vettings.client import BrandVettingsClient # noqa: E402
73
+
74
+ self._brand_vettings = BrandVettingsClient(client_wrapper=self._client_wrapper)
75
+ return self._brand_vettings
76
+
77
+ @property
78
+ def brand_vetting_appeals(self):
79
+ if self._brand_vetting_appeals is None:
80
+ from .brand_vetting_appeals.client import BrandVettingAppealsClient # noqa: E402
81
+
82
+ self._brand_vetting_appeals = BrandVettingAppealsClient(client_wrapper=self._client_wrapper)
83
+ return self._brand_vetting_appeals
84
+
85
+ @property
86
+ def campaigns(self):
87
+ if self._campaigns is None:
88
+ from .campaigns.client import CampaignsClient # noqa: E402
89
+
90
+ self._campaigns = CampaignsClient(client_wrapper=self._client_wrapper)
91
+ return self._campaigns
92
+
93
+ @property
94
+ def subscriptions(self):
95
+ if self._subscriptions is None:
96
+ from .subscriptions.client import SubscriptionsClient # noqa: E402
97
+
98
+ self._subscriptions = SubscriptionsClient(client_wrapper=self._client_wrapper)
99
+ return self._subscriptions
100
+
101
+ @property
102
+ def campaign_numbers(self):
103
+ if self._campaign_numbers is None:
104
+ from .campaign_numbers.client import CampaignNumbersClient # noqa: E402
105
+
106
+ self._campaign_numbers = CampaignNumbersClient(client_wrapper=self._client_wrapper)
107
+ return self._campaign_numbers
108
+
109
+
110
+ class AsyncTenDlcClient:
111
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
112
+ self._raw_client = AsyncRawTenDlcClient(client_wrapper=client_wrapper)
113
+ self._client_wrapper = client_wrapper
114
+ self._brands: typing.Optional[AsyncBrandsClient] = None
115
+ self._brand_appeals: typing.Optional[AsyncBrandAppealsClient] = None
116
+ self._brand_evidence: typing.Optional[AsyncBrandEvidenceClient] = None
117
+ self._brand_vettings: typing.Optional[AsyncBrandVettingsClient] = None
118
+ self._brand_vetting_appeals: typing.Optional[AsyncBrandVettingAppealsClient] = None
119
+ self._campaigns: typing.Optional[AsyncCampaignsClient] = None
120
+ self._subscriptions: typing.Optional[AsyncSubscriptionsClient] = None
121
+ self._campaign_numbers: typing.Optional[AsyncCampaignNumbersClient] = None
122
+
123
+ @property
124
+ def with_raw_response(self) -> AsyncRawTenDlcClient:
125
+ """
126
+ Retrieves a raw implementation of this client that returns raw responses.
127
+
128
+ Returns
129
+ -------
130
+ AsyncRawTenDlcClient
131
+ """
132
+ return self._raw_client
133
+
134
+ @property
135
+ def brands(self):
136
+ if self._brands is None:
137
+ from .brands.client import AsyncBrandsClient # noqa: E402
138
+
139
+ self._brands = AsyncBrandsClient(client_wrapper=self._client_wrapper)
140
+ return self._brands
141
+
142
+ @property
143
+ def brand_appeals(self):
144
+ if self._brand_appeals is None:
145
+ from .brand_appeals.client import AsyncBrandAppealsClient # noqa: E402
146
+
147
+ self._brand_appeals = AsyncBrandAppealsClient(client_wrapper=self._client_wrapper)
148
+ return self._brand_appeals
149
+
150
+ @property
151
+ def brand_evidence(self):
152
+ if self._brand_evidence is None:
153
+ from .brand_evidence.client import AsyncBrandEvidenceClient # noqa: E402
154
+
155
+ self._brand_evidence = AsyncBrandEvidenceClient(client_wrapper=self._client_wrapper)
156
+ return self._brand_evidence
157
+
158
+ @property
159
+ def brand_vettings(self):
160
+ if self._brand_vettings is None:
161
+ from .brand_vettings.client import AsyncBrandVettingsClient # noqa: E402
162
+
163
+ self._brand_vettings = AsyncBrandVettingsClient(client_wrapper=self._client_wrapper)
164
+ return self._brand_vettings
165
+
166
+ @property
167
+ def brand_vetting_appeals(self):
168
+ if self._brand_vetting_appeals is None:
169
+ from .brand_vetting_appeals.client import AsyncBrandVettingAppealsClient # noqa: E402
170
+
171
+ self._brand_vetting_appeals = AsyncBrandVettingAppealsClient(client_wrapper=self._client_wrapper)
172
+ return self._brand_vetting_appeals
173
+
174
+ @property
175
+ def campaigns(self):
176
+ if self._campaigns is None:
177
+ from .campaigns.client import AsyncCampaignsClient # noqa: E402
178
+
179
+ self._campaigns = AsyncCampaignsClient(client_wrapper=self._client_wrapper)
180
+ return self._campaigns
181
+
182
+ @property
183
+ def subscriptions(self):
184
+ if self._subscriptions is None:
185
+ from .subscriptions.client import AsyncSubscriptionsClient # noqa: E402
186
+
187
+ self._subscriptions = AsyncSubscriptionsClient(client_wrapper=self._client_wrapper)
188
+ return self._subscriptions
189
+
190
+ @property
191
+ def campaign_numbers(self):
192
+ if self._campaign_numbers is None:
193
+ from .campaign_numbers.client import AsyncCampaignNumbersClient # noqa: E402
194
+
195
+ self._campaign_numbers = AsyncCampaignNumbersClient(client_wrapper=self._client_wrapper)
196
+ return self._campaign_numbers
@@ -0,0 +1,13 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
4
+
5
+
6
+ class RawTenDlcClient:
7
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
8
+ self._client_wrapper = client_wrapper
9
+
10
+
11
+ class AsyncRawTenDlcClient:
12
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
13
+ self._client_wrapper = client_wrapper
@@ -0,0 +1,37 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ import typing
6
+ from importlib import import_module
7
+
8
+ if typing.TYPE_CHECKING:
9
+ from .types import CreateSubscriptionsResponse, DeleteSubscriptionsResponse
10
+ _dynamic_imports: typing.Dict[str, str] = {
11
+ "CreateSubscriptionsResponse": ".types",
12
+ "DeleteSubscriptionsResponse": ".types",
13
+ }
14
+
15
+
16
+ def __getattr__(attr_name: str) -> typing.Any:
17
+ module_name = _dynamic_imports.get(attr_name)
18
+ if module_name is None:
19
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
20
+ try:
21
+ module = import_module(module_name, __package__)
22
+ if module_name == f".{attr_name}":
23
+ return module
24
+ else:
25
+ return getattr(module, attr_name)
26
+ except ImportError as e:
27
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
28
+ except AttributeError as e:
29
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
30
+
31
+
32
+ def __dir__():
33
+ lazy_attrs = list(_dynamic_imports.keys())
34
+ return sorted(lazy_attrs)
35
+
36
+
37
+ __all__ = ["CreateSubscriptionsResponse", "DeleteSubscriptionsResponse"]