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,62 @@
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 .create_campaigns_response import CreateCampaignsResponse
10
+ from .delete_campaigns_response import DeleteCampaignsResponse
11
+ from .get_campaigns_response import GetCampaignsResponse
12
+ from .list_by_brand_campaigns_response import ListByBrandCampaignsResponse
13
+ from .list_by_brand_campaigns_response_pagination import ListByBrandCampaignsResponsePagination
14
+ from .list_campaigns_response import ListCampaignsResponse
15
+ from .list_campaigns_response_pagination import ListCampaignsResponsePagination
16
+ from .ten_dlc_campaign_update_request_usecase import TenDlcCampaignUpdateRequestUsecase
17
+ from .update_campaigns_response import UpdateCampaignsResponse
18
+ _dynamic_imports: typing.Dict[str, str] = {
19
+ "CreateCampaignsResponse": ".create_campaigns_response",
20
+ "DeleteCampaignsResponse": ".delete_campaigns_response",
21
+ "GetCampaignsResponse": ".get_campaigns_response",
22
+ "ListByBrandCampaignsResponse": ".list_by_brand_campaigns_response",
23
+ "ListByBrandCampaignsResponsePagination": ".list_by_brand_campaigns_response_pagination",
24
+ "ListCampaignsResponse": ".list_campaigns_response",
25
+ "ListCampaignsResponsePagination": ".list_campaigns_response_pagination",
26
+ "TenDlcCampaignUpdateRequestUsecase": ".ten_dlc_campaign_update_request_usecase",
27
+ "UpdateCampaignsResponse": ".update_campaigns_response",
28
+ }
29
+
30
+
31
+ def __getattr__(attr_name: str) -> typing.Any:
32
+ module_name = _dynamic_imports.get(attr_name)
33
+ if module_name is None:
34
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
35
+ try:
36
+ module = import_module(module_name, __package__)
37
+ if module_name == f".{attr_name}":
38
+ return module
39
+ else:
40
+ return getattr(module, attr_name)
41
+ except ImportError as e:
42
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
43
+ except AttributeError as e:
44
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
45
+
46
+
47
+ def __dir__():
48
+ lazy_attrs = list(_dynamic_imports.keys())
49
+ return sorted(lazy_attrs)
50
+
51
+
52
+ __all__ = [
53
+ "CreateCampaignsResponse",
54
+ "DeleteCampaignsResponse",
55
+ "GetCampaignsResponse",
56
+ "ListByBrandCampaignsResponse",
57
+ "ListByBrandCampaignsResponsePagination",
58
+ "ListCampaignsResponse",
59
+ "ListCampaignsResponsePagination",
60
+ "TenDlcCampaignUpdateRequestUsecase",
61
+ "UpdateCampaignsResponse",
62
+ ]
@@ -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 CreateCampaignsResponse(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,22 @@
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 DeleteCampaignsResponse(UniversalBaseModel):
10
+ success: bool = pydantic.Field()
11
+ """
12
+ Indicates whether the request was successful.
13
+ """
14
+
15
+ if IS_PYDANTIC_V2:
16
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
17
+ else:
18
+
19
+ class Config:
20
+ frozen = True
21
+ smart_union = True
22
+ extra = pydantic.Extra.allow
@@ -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 GetCampaignsResponse(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,33 @@
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
+ from ....types.ten_dlc_campaign import TenDlcCampaign
8
+ from .list_by_brand_campaigns_response_pagination import ListByBrandCampaignsResponsePagination
9
+
10
+
11
+ class ListByBrandCampaignsResponse(UniversalBaseModel):
12
+ """
13
+ Paginated list of 10DLC Campaigns.
14
+ """
15
+
16
+ items: typing.List[TenDlcCampaign] = pydantic.Field()
17
+ """
18
+ 10DLC Campaigns on the current page that match the filter criteria.
19
+ """
20
+
21
+ pagination: ListByBrandCampaignsResponsePagination = pydantic.Field()
22
+ """
23
+ Pagination metadata for the result set.
24
+ """
25
+
26
+ if IS_PYDANTIC_V2:
27
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
28
+ else:
29
+
30
+ class Config:
31
+ frozen = True
32
+ smart_union = True
33
+ extra = pydantic.Extra.allow
@@ -0,0 +1,41 @@
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 ListByBrandCampaignsResponsePagination(UniversalBaseModel):
10
+ """
11
+ Pagination metadata for the result set.
12
+ """
13
+
14
+ current_page: int = pydantic.Field()
15
+ """
16
+ Current page number.
17
+ """
18
+
19
+ per_page: int = pydantic.Field()
20
+ """
21
+ Number of records per page.
22
+ """
23
+
24
+ total: int = pydantic.Field()
25
+ """
26
+ Total number of records.
27
+ """
28
+
29
+ total_pages: int = pydantic.Field()
30
+ """
31
+ Total number of pages.
32
+ """
33
+
34
+ if IS_PYDANTIC_V2:
35
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
36
+ else:
37
+
38
+ class Config:
39
+ frozen = True
40
+ smart_union = True
41
+ extra = pydantic.Extra.allow
@@ -0,0 +1,33 @@
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
+ from ....types.ten_dlc_campaign import TenDlcCampaign
8
+ from .list_campaigns_response_pagination import ListCampaignsResponsePagination
9
+
10
+
11
+ class ListCampaignsResponse(UniversalBaseModel):
12
+ """
13
+ Paginated list of 10DLC Campaigns.
14
+ """
15
+
16
+ items: typing.List[TenDlcCampaign] = pydantic.Field()
17
+ """
18
+ 10DLC Campaigns on the current page that match the filter criteria.
19
+ """
20
+
21
+ pagination: ListCampaignsResponsePagination = pydantic.Field()
22
+ """
23
+ Pagination metadata for the result set.
24
+ """
25
+
26
+ if IS_PYDANTIC_V2:
27
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
28
+ else:
29
+
30
+ class Config:
31
+ frozen = True
32
+ smart_union = True
33
+ extra = pydantic.Extra.allow
@@ -0,0 +1,41 @@
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 ListCampaignsResponsePagination(UniversalBaseModel):
10
+ """
11
+ Pagination metadata for the result set.
12
+ """
13
+
14
+ current_page: int = pydantic.Field()
15
+ """
16
+ Current page number.
17
+ """
18
+
19
+ per_page: int = pydantic.Field()
20
+ """
21
+ Number of records per page.
22
+ """
23
+
24
+ total: int = pydantic.Field()
25
+ """
26
+ Total number of records.
27
+ """
28
+
29
+ total_pages: int = pydantic.Field()
30
+ """
31
+ Total number of pages.
32
+ """
33
+
34
+ if IS_PYDANTIC_V2:
35
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
36
+ else:
37
+
38
+ class Config:
39
+ frozen = True
40
+ smart_union = True
41
+ extra = pydantic.Extra.allow
@@ -0,0 +1,15 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ TenDlcCampaignUpdateRequestUsecase = typing.Union[
6
+ typing.Literal[
7
+ "CUSTOMER_CARE",
8
+ "MARKETING",
9
+ "ACCOUNT_NOTIFICATION",
10
+ "FRAUD_ALERT",
11
+ "PUBLIC_SERVICE_ANNOUNCEMENT",
12
+ "SECURITY_ALERT",
13
+ ],
14
+ typing.Any,
15
+ ]