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,1493 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
7
+ from ...core.request_options import RequestOptions
8
+ from ...types.success_response import SuccessResponse
9
+ from .raw_client import AsyncRawCampaignsClient, RawCampaignsClient
10
+ from .types.create_campaigns_response import CreateCampaignsResponse
11
+ from .types.delete_campaigns_response import DeleteCampaignsResponse
12
+ from .types.get_campaigns_response import GetCampaignsResponse
13
+ from .types.list_by_brand_campaigns_response import ListByBrandCampaignsResponse
14
+ from .types.list_campaigns_response import ListCampaignsResponse
15
+ from .types.ten_dlc_campaign_update_request_usecase import TenDlcCampaignUpdateRequestUsecase
16
+ from .types.update_campaigns_response import UpdateCampaignsResponse
17
+
18
+ # this is used as the default value for optional parameters
19
+ OMIT = typing.cast(typing.Any, ...)
20
+
21
+
22
+ class CampaignsClient:
23
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
24
+ self._raw_client = RawCampaignsClient(client_wrapper=client_wrapper)
25
+
26
+ @property
27
+ def with_raw_response(self) -> RawCampaignsClient:
28
+ """
29
+ Retrieves a raw implementation of this client that returns raw responses.
30
+
31
+ Returns
32
+ -------
33
+ RawCampaignsClient
34
+ """
35
+ return self._raw_client
36
+
37
+ def list(
38
+ self,
39
+ *,
40
+ name: typing.Optional[str] = None,
41
+ usecase: typing.Optional[str] = None,
42
+ status: typing.Optional[str] = None,
43
+ mock: typing.Optional[bool] = None,
44
+ created_before: typing.Optional[dt.date] = None,
45
+ created_after: typing.Optional[dt.date] = None,
46
+ page: typing.Optional[int] = None,
47
+ per_page: typing.Optional[int] = None,
48
+ request_options: typing.Optional[RequestOptions] = None,
49
+ ) -> ListCampaignsResponse:
50
+ """
51
+ Returns a paginated list of 10DLC Campaigns for the authenticated account, filtered by date, status, and use case.
52
+
53
+ Parameters
54
+ ----------
55
+ name : typing.Optional[str]
56
+ Filters Campaigns by name. Matches partial values.
57
+
58
+ usecase : typing.Optional[str]
59
+ Filters Campaigns by use case.
60
+
61
+ status : typing.Optional[str]
62
+ Filters Campaigns by status.
63
+
64
+ mock : typing.Optional[bool]
65
+ When `true`, returns only mock Campaigns used for testing. Default `false`.
66
+
67
+ created_before : typing.Optional[dt.date]
68
+ Returns Campaigns created on or before this date, in `YYYY-MM-DD` format.
69
+
70
+ created_after : typing.Optional[dt.date]
71
+ Returns Campaigns created on or after this date, in `YYYY-MM-DD` format.
72
+
73
+ page : typing.Optional[int]
74
+ Page number to retrieve. Default `1`.
75
+
76
+ per_page : typing.Optional[int]
77
+ Number of records to return per page. Default `25`.
78
+
79
+ request_options : typing.Optional[RequestOptions]
80
+ Request-specific configuration.
81
+
82
+ Returns
83
+ -------
84
+ ListCampaignsResponse
85
+ Returns a paginated list of 10DLC Campaigns.
86
+
87
+ Examples
88
+ --------
89
+ import datetime
90
+
91
+ from wavix import Wavix
92
+
93
+ client = Wavix(
94
+ token="YOUR_TOKEN",
95
+ )
96
+ client.ten_dlc.campaigns.list(
97
+ name="Name",
98
+ usecase="2FA",
99
+ status="APPROVED",
100
+ mock=True,
101
+ created_before=datetime.date.fromisoformat(
102
+ "2024-08-22",
103
+ ),
104
+ created_after=datetime.date.fromisoformat(
105
+ "2024-08-22",
106
+ ),
107
+ page=1,
108
+ per_page=25,
109
+ )
110
+ """
111
+ _response = self._raw_client.list(
112
+ name=name,
113
+ usecase=usecase,
114
+ status=status,
115
+ mock=mock,
116
+ created_before=created_before,
117
+ created_after=created_after,
118
+ page=page,
119
+ per_page=per_page,
120
+ request_options=request_options,
121
+ )
122
+ return _response.data
123
+
124
+ def list_by_brand(
125
+ self,
126
+ brand_id: str,
127
+ *,
128
+ name: typing.Optional[str] = None,
129
+ usecase: typing.Optional[str] = None,
130
+ status: typing.Optional[str] = None,
131
+ mock: typing.Optional[bool] = None,
132
+ created_before: typing.Optional[dt.date] = None,
133
+ created_after: typing.Optional[dt.date] = None,
134
+ page: typing.Optional[int] = None,
135
+ per_page: typing.Optional[int] = None,
136
+ request_options: typing.Optional[RequestOptions] = None,
137
+ ) -> ListByBrandCampaignsResponse:
138
+ """
139
+ Returns a paginated list of 10DLC Campaigns associated with the 10DLC Brand identified by `brand_id`.
140
+
141
+ Parameters
142
+ ----------
143
+ brand_id : str
144
+ The unique ID of the 10DLC Brand.
145
+
146
+ name : typing.Optional[str]
147
+ Filters Campaigns by name. Matches partial values.
148
+
149
+ usecase : typing.Optional[str]
150
+ Filters Campaigns by use case.
151
+
152
+ status : typing.Optional[str]
153
+ Filters Campaigns by status.
154
+
155
+ mock : typing.Optional[bool]
156
+ When `true`, returns only mock Campaigns used for testing. Default `false`.
157
+
158
+ created_before : typing.Optional[dt.date]
159
+ Returns Campaigns created on or before this date, in `YYYY-MM-DD` format.
160
+
161
+ created_after : typing.Optional[dt.date]
162
+ Returns Campaigns created on or after this date, in `YYYY-MM-DD` format.
163
+
164
+ page : typing.Optional[int]
165
+ Page number to retrieve. Default `1`.
166
+
167
+ per_page : typing.Optional[int]
168
+ Number of records to return per page. Default `25`.
169
+
170
+ request_options : typing.Optional[RequestOptions]
171
+ Request-specific configuration.
172
+
173
+ Returns
174
+ -------
175
+ ListByBrandCampaignsResponse
176
+ Returns a paginated list of 10DLC Campaigns.
177
+
178
+ Examples
179
+ --------
180
+ import datetime
181
+
182
+ from wavix import Wavix
183
+
184
+ client = Wavix(
185
+ token="YOUR_TOKEN",
186
+ )
187
+ client.ten_dlc.campaigns.list_by_brand(
188
+ brand_id="BM20QP9",
189
+ name="Name",
190
+ usecase="2FA",
191
+ status="APPROVED",
192
+ mock=True,
193
+ created_before=datetime.date.fromisoformat(
194
+ "2024-08-22",
195
+ ),
196
+ created_after=datetime.date.fromisoformat(
197
+ "2024-08-22",
198
+ ),
199
+ page=1,
200
+ per_page=25,
201
+ )
202
+ """
203
+ _response = self._raw_client.list_by_brand(
204
+ brand_id,
205
+ name=name,
206
+ usecase=usecase,
207
+ status=status,
208
+ mock=mock,
209
+ created_before=created_before,
210
+ created_after=created_after,
211
+ page=page,
212
+ per_page=per_page,
213
+ request_options=request_options,
214
+ )
215
+ return _response.data
216
+
217
+ def create(
218
+ self,
219
+ brand_id: str,
220
+ *,
221
+ affiliate_marketing: bool,
222
+ age_gated: bool,
223
+ auto_renewal: bool,
224
+ direct_lending: bool,
225
+ embedded_links: bool,
226
+ description: str,
227
+ optin_workflow: str,
228
+ help: bool,
229
+ help_keywords: str,
230
+ help_message: str,
231
+ optin: bool,
232
+ optin_keywords: str,
233
+ optin_message: str,
234
+ optout: bool,
235
+ optout_keywords: str,
236
+ optout_message: str,
237
+ name: str,
238
+ sample1: str,
239
+ mock: bool,
240
+ usecase: str,
241
+ terms_conditions: str,
242
+ embedded_phones: typing.Optional[bool] = OMIT,
243
+ embedded_link_sample: typing.Optional[str] = OMIT,
244
+ sample2: typing.Optional[str] = OMIT,
245
+ sample3: typing.Optional[str] = OMIT,
246
+ sample4: typing.Optional[str] = OMIT,
247
+ sample5: typing.Optional[str] = OMIT,
248
+ privacy_policy: typing.Optional[str] = OMIT,
249
+ request_options: typing.Optional[RequestOptions] = None,
250
+ ) -> CreateCampaignsResponse:
251
+ """
252
+ Registers a 10DLC Campaign under the 10DLC Brand identified by `brand_id`. The Brand must have a verified identity status.
253
+
254
+ Parameters
255
+ ----------
256
+ brand_id : str
257
+ The unique ID of the 10DLC Brand.
258
+
259
+ affiliate_marketing : bool
260
+ Indicates whether the Campaign is used for affiliate marketing.
261
+
262
+ age_gated : bool
263
+ Indicates whether the Campaign messages contain age-gated content.
264
+
265
+ auto_renewal : bool
266
+ Indicates whether the Campaign is automatically renewed at the end of each billing period.
267
+
268
+ direct_lending : bool
269
+ Indicates whether the Campaign messages contain direct lending content.
270
+
271
+ embedded_links : bool
272
+ Indicates whether the Campaign messages contain embedded links.
273
+
274
+ description : str
275
+ Description of the Campaign and its messaging purpose.
276
+
277
+ optin_workflow : str
278
+ Description of the workflow through which subscribers opt in to the Campaign.
279
+
280
+ help : bool
281
+ Indicates whether the Campaign provides a help system that subscribers can trigger with a keyword such as HELP or INFO.
282
+
283
+ help_keywords : str
284
+ Comma-separated list of help keywords. Keywords are case-insensitive.
285
+
286
+ help_message : str
287
+ Acknowledgement sent when a subscriber texts a help keyword.
288
+
289
+ optin : bool
290
+ Indicates whether the Campaign requires subscribers to opt in before receiving messages.
291
+
292
+ optin_keywords : str
293
+ Comma-separated list of opt-in keywords. Keywords are case-insensitive.
294
+
295
+ optin_message : str
296
+ Acknowledgement sent when a subscriber texts an opt-in keyword.
297
+
298
+ optout : bool
299
+ Indicates whether the Campaign provides an opt-out system that subscribers can trigger with a keyword such as STOP or QUIT.
300
+
301
+ optout_keywords : str
302
+ Comma-separated list of opt-out keywords. Keywords are case-insensitive.
303
+
304
+ optout_message : str
305
+ Acknowledgement sent when a subscriber texts an opt-out keyword.
306
+
307
+ name : str
308
+ Display name of the Campaign.
309
+
310
+ sample1 : str
311
+ Sample message demonstrating the content sent through the Campaign.
312
+
313
+ mock : bool
314
+ Indicates whether the Campaign is a mock campaign used for testing. Mock campaigns cannot send production traffic.
315
+
316
+ usecase : str
317
+ Registered use case for the Campaign, such as `2FA` or `MARKETING`.
318
+
319
+ terms_conditions : str
320
+ URL of the Campaign terms and conditions.
321
+
322
+ embedded_phones : typing.Optional[bool]
323
+ Indicates whether the Campaign messages contain embedded phone numbers.
324
+
325
+ embedded_link_sample : typing.Optional[str]
326
+ Sample of an embedded link used in Campaign messages.
327
+
328
+ sample2 : typing.Optional[str]
329
+ Sample message demonstrating the content sent through the Campaign.
330
+
331
+ sample3 : typing.Optional[str]
332
+ Sample message demonstrating the content sent through the Campaign.
333
+
334
+ sample4 : typing.Optional[str]
335
+ Sample message demonstrating the content sent through the Campaign.
336
+
337
+ sample5 : typing.Optional[str]
338
+ Sample message demonstrating the content sent through the Campaign.
339
+
340
+ privacy_policy : typing.Optional[str]
341
+ URL of the Campaign privacy policy.
342
+
343
+ request_options : typing.Optional[RequestOptions]
344
+ Request-specific configuration.
345
+
346
+ Returns
347
+ -------
348
+ CreateCampaignsResponse
349
+ Returns the registered 10DLC Campaign.
350
+
351
+ Examples
352
+ --------
353
+ from wavix import Wavix
354
+
355
+ client = Wavix(
356
+ token="YOUR_TOKEN",
357
+ )
358
+ client.ten_dlc.campaigns.create(
359
+ brand_id="BM20QP9",
360
+ affiliate_marketing=False,
361
+ age_gated=False,
362
+ auto_renewal=False,
363
+ direct_lending=False,
364
+ embedded_links=False,
365
+ embedded_phones=False,
366
+ embedded_link_sample="https://site.com/verify",
367
+ description="Our campaign aims to …",
368
+ optin_workflow="Our SMS ...",
369
+ help=True,
370
+ help_keywords="help",
371
+ help_message="For help, please visit www.site.com. To opt-out, reply STOP.",
372
+ optin=True,
373
+ optin_keywords="begin,start",
374
+ optin_message="You are now opted-in for help please reply HELP, to stop please reply STOP",
375
+ optout=True,
376
+ optout_keywords="stop,quit,unsubscribe",
377
+ optout_message="You are now opted out and will receive no further messages",
378
+ name="My first campaign",
379
+ sample1="Your verification code is XXXXXX",
380
+ sample2="XXXX is your verification code",
381
+ sample3="Your code is XXXXXX, valid for 10 minutes",
382
+ sample4="Use code XXXXXX to confirm your login",
383
+ sample5="XXXXXX is your one-time passcode",
384
+ mock=False,
385
+ usecase="2FA",
386
+ privacy_policy="https://site.com/privacy-policy",
387
+ terms_conditions="https://site.com/terms-and-conditions",
388
+ )
389
+ """
390
+ _response = self._raw_client.create(
391
+ brand_id,
392
+ affiliate_marketing=affiliate_marketing,
393
+ age_gated=age_gated,
394
+ auto_renewal=auto_renewal,
395
+ direct_lending=direct_lending,
396
+ embedded_links=embedded_links,
397
+ description=description,
398
+ optin_workflow=optin_workflow,
399
+ help=help,
400
+ help_keywords=help_keywords,
401
+ help_message=help_message,
402
+ optin=optin,
403
+ optin_keywords=optin_keywords,
404
+ optin_message=optin_message,
405
+ optout=optout,
406
+ optout_keywords=optout_keywords,
407
+ optout_message=optout_message,
408
+ name=name,
409
+ sample1=sample1,
410
+ mock=mock,
411
+ usecase=usecase,
412
+ terms_conditions=terms_conditions,
413
+ embedded_phones=embedded_phones,
414
+ embedded_link_sample=embedded_link_sample,
415
+ sample2=sample2,
416
+ sample3=sample3,
417
+ sample4=sample4,
418
+ sample5=sample5,
419
+ privacy_policy=privacy_policy,
420
+ request_options=request_options,
421
+ )
422
+ return _response.data
423
+
424
+ def get(
425
+ self, brand_id: str, campaign_id: str, *, request_options: typing.Optional[RequestOptions] = None
426
+ ) -> GetCampaignsResponse:
427
+ """
428
+ Returns the 10DLC Campaign identified by `campaign_id` under the Brand identified by `brand_id`.
429
+
430
+ Parameters
431
+ ----------
432
+ brand_id : str
433
+ The unique ID of the 10DLC Brand.
434
+
435
+ campaign_id : str
436
+ The unique ID of the 10DLC Campaign.
437
+
438
+ request_options : typing.Optional[RequestOptions]
439
+ Request-specific configuration.
440
+
441
+ Returns
442
+ -------
443
+ GetCampaignsResponse
444
+ Returns the 10DLC Campaign.
445
+
446
+ Examples
447
+ --------
448
+ from wavix import Wavix
449
+
450
+ client = Wavix(
451
+ token="YOUR_TOKEN",
452
+ )
453
+ client.ten_dlc.campaigns.get(
454
+ brand_id="BM20QP9",
455
+ campaign_id="CKLCK95",
456
+ )
457
+ """
458
+ _response = self._raw_client.get(brand_id, campaign_id, request_options=request_options)
459
+ return _response.data
460
+
461
+ def update(
462
+ self,
463
+ brand_id: str,
464
+ campaign_id: str,
465
+ *,
466
+ name: typing.Optional[str] = OMIT,
467
+ usecase: typing.Optional[TenDlcCampaignUpdateRequestUsecase] = OMIT,
468
+ description: typing.Optional[str] = OMIT,
469
+ embedded_links: typing.Optional[bool] = OMIT,
470
+ embedded_phones: typing.Optional[bool] = OMIT,
471
+ age_gated: typing.Optional[bool] = OMIT,
472
+ direct_lending: typing.Optional[bool] = OMIT,
473
+ optin: typing.Optional[bool] = OMIT,
474
+ optout: typing.Optional[bool] = OMIT,
475
+ help: typing.Optional[bool] = OMIT,
476
+ sample1: typing.Optional[str] = OMIT,
477
+ sample2: typing.Optional[str] = OMIT,
478
+ sample3: typing.Optional[str] = OMIT,
479
+ sample4: typing.Optional[str] = OMIT,
480
+ sample5: typing.Optional[str] = OMIT,
481
+ optin_workflow: typing.Optional[str] = OMIT,
482
+ help_message: typing.Optional[str] = OMIT,
483
+ optin_message: typing.Optional[str] = OMIT,
484
+ optout_message: typing.Optional[str] = OMIT,
485
+ auto_renewal: typing.Optional[bool] = OMIT,
486
+ optin_keywords: typing.Optional[str] = OMIT,
487
+ help_keywords: typing.Optional[str] = OMIT,
488
+ optout_keywords: typing.Optional[str] = OMIT,
489
+ terms_conditions: typing.Optional[str] = OMIT,
490
+ privacy_policy: typing.Optional[str] = OMIT,
491
+ embedded_link_sample: typing.Optional[str] = OMIT,
492
+ request_options: typing.Optional[RequestOptions] = None,
493
+ ) -> UpdateCampaignsResponse:
494
+ """
495
+ Updates the 10DLC Campaign identified by `campaign_id`. Only the provided fields are changed.
496
+
497
+ Parameters
498
+ ----------
499
+ brand_id : str
500
+ The unique ID of the 10DLC Brand.
501
+
502
+ campaign_id : str
503
+ The unique ID of the 10DLC Campaign.
504
+
505
+ name : typing.Optional[str]
506
+ Display name of the Campaign.
507
+
508
+ usecase : typing.Optional[TenDlcCampaignUpdateRequestUsecase]
509
+ Registered use case for the Campaign. One of `CUSTOMER_CARE` (customer support messaging), `MARKETING` (promotional content), `ACCOUNT_NOTIFICATION` (account-related alerts), `FRAUD_ALERT` (fraud and suspicious-activity warnings), `PUBLIC_SERVICE_ANNOUNCEMENT` (public-interest notices), or `SECURITY_ALERT` (security-related warnings).
510
+
511
+ description : typing.Optional[str]
512
+ Description of the Campaign and its messaging purpose.
513
+
514
+ embedded_links : typing.Optional[bool]
515
+ Indicates whether the Campaign messages contain embedded links.
516
+
517
+ embedded_phones : typing.Optional[bool]
518
+ Indicates whether the Campaign messages contain embedded phone numbers.
519
+
520
+ age_gated : typing.Optional[bool]
521
+ Indicates whether the Campaign messages contain age-gated content.
522
+
523
+ direct_lending : typing.Optional[bool]
524
+ Indicates whether the Campaign messages contain direct lending content.
525
+
526
+ optin : typing.Optional[bool]
527
+ Indicates whether the Campaign requires subscribers to opt in before receiving messages.
528
+
529
+ optout : typing.Optional[bool]
530
+ Indicates whether the Campaign provides an opt-out system that subscribers can trigger with a keyword.
531
+
532
+ help : typing.Optional[bool]
533
+ Indicates whether the Campaign provides a help system that subscribers can trigger with a keyword.
534
+
535
+ sample1 : typing.Optional[str]
536
+ Sample message demonstrating the content sent through the Campaign.
537
+
538
+ sample2 : typing.Optional[str]
539
+ Sample message demonstrating the content sent through the Campaign.
540
+
541
+ sample3 : typing.Optional[str]
542
+ Sample message demonstrating the content sent through the Campaign.
543
+
544
+ sample4 : typing.Optional[str]
545
+ Sample message demonstrating the content sent through the Campaign.
546
+
547
+ sample5 : typing.Optional[str]
548
+ Sample message demonstrating the content sent through the Campaign.
549
+
550
+ optin_workflow : typing.Optional[str]
551
+ Description of the workflow through which subscribers opt in to the Campaign.
552
+
553
+ help_message : typing.Optional[str]
554
+ Acknowledgement sent when a subscriber texts a help keyword.
555
+
556
+ optin_message : typing.Optional[str]
557
+ Acknowledgement sent when a subscriber texts an opt-in keyword.
558
+
559
+ optout_message : typing.Optional[str]
560
+ Acknowledgement sent when a subscriber texts an opt-out keyword.
561
+
562
+ auto_renewal : typing.Optional[bool]
563
+ Indicates whether the Campaign is automatically renewed at the end of each billing period.
564
+
565
+ optin_keywords : typing.Optional[str]
566
+ Comma-separated list of opt-in keywords. Keywords are case-insensitive.
567
+
568
+ help_keywords : typing.Optional[str]
569
+ Comma-separated list of help keywords. Keywords are case-insensitive.
570
+
571
+ optout_keywords : typing.Optional[str]
572
+ Comma-separated list of opt-out keywords. Keywords are case-insensitive.
573
+
574
+ terms_conditions : typing.Optional[str]
575
+ URL of the Campaign terms and conditions.
576
+
577
+ privacy_policy : typing.Optional[str]
578
+ URL of the Campaign privacy policy.
579
+
580
+ embedded_link_sample : typing.Optional[str]
581
+ Sample of an embedded link used in Campaign messages.
582
+
583
+ request_options : typing.Optional[RequestOptions]
584
+ Request-specific configuration.
585
+
586
+ Returns
587
+ -------
588
+ UpdateCampaignsResponse
589
+ Returns the updated 10DLC Campaign.
590
+
591
+ Examples
592
+ --------
593
+ from wavix import Wavix
594
+
595
+ client = Wavix(
596
+ token="YOUR_TOKEN",
597
+ )
598
+ client.ten_dlc.campaigns.update(
599
+ brand_id="BM20QP9",
600
+ campaign_id="CKLCK95",
601
+ )
602
+ """
603
+ _response = self._raw_client.update(
604
+ brand_id,
605
+ campaign_id,
606
+ name=name,
607
+ usecase=usecase,
608
+ description=description,
609
+ embedded_links=embedded_links,
610
+ embedded_phones=embedded_phones,
611
+ age_gated=age_gated,
612
+ direct_lending=direct_lending,
613
+ optin=optin,
614
+ optout=optout,
615
+ help=help,
616
+ sample1=sample1,
617
+ sample2=sample2,
618
+ sample3=sample3,
619
+ sample4=sample4,
620
+ sample5=sample5,
621
+ optin_workflow=optin_workflow,
622
+ help_message=help_message,
623
+ optin_message=optin_message,
624
+ optout_message=optout_message,
625
+ auto_renewal=auto_renewal,
626
+ optin_keywords=optin_keywords,
627
+ help_keywords=help_keywords,
628
+ optout_keywords=optout_keywords,
629
+ terms_conditions=terms_conditions,
630
+ privacy_policy=privacy_policy,
631
+ embedded_link_sample=embedded_link_sample,
632
+ request_options=request_options,
633
+ )
634
+ return _response.data
635
+
636
+ def delete(
637
+ self, brand_id: str, campaign_id: str, *, request_options: typing.Optional[RequestOptions] = None
638
+ ) -> DeleteCampaignsResponse:
639
+ """
640
+ Deletes a 10DLC Campaign. Associated phone numbers cannot be used as Sender IDs once the Campaign is deleted.
641
+
642
+ Parameters
643
+ ----------
644
+ brand_id : str
645
+ The unique ID of the 10DLC Brand.
646
+
647
+ campaign_id : str
648
+ The unique ID of the 10DLC Campaign.
649
+
650
+ request_options : typing.Optional[RequestOptions]
651
+ Request-specific configuration.
652
+
653
+ Returns
654
+ -------
655
+ DeleteCampaignsResponse
656
+ Returns a success confirmation. The 10DLC Campaign is deleted.
657
+
658
+ Examples
659
+ --------
660
+ from wavix import Wavix
661
+
662
+ client = Wavix(
663
+ token="YOUR_TOKEN",
664
+ )
665
+ client.ten_dlc.campaigns.delete(
666
+ brand_id="BM20QP9",
667
+ campaign_id="CKLCK95",
668
+ )
669
+ """
670
+ _response = self._raw_client.delete(brand_id, campaign_id, request_options=request_options)
671
+ return _response.data
672
+
673
+ def nudge(
674
+ self,
675
+ brand_id: str,
676
+ campaign_id: str,
677
+ *,
678
+ nudge_intent: str,
679
+ description: str,
680
+ request_options: typing.Optional[RequestOptions] = None,
681
+ ) -> SuccessResponse:
682
+ """
683
+ Requests action on a pending or rejected 10DLC Campaign. Use `nudge_intent` to specify the action:
684
+ - `REVIEW`: Request review for a pending Campaign. - `APPEAL_REJECTION`: Appeal a rejected Campaign.
685
+ Note:
686
+ - The Campaign must be at least 72 hours old.
687
+ - Only one nudge request per Campaign is allowed every 24 hours.
688
+
689
+ Parameters
690
+ ----------
691
+ brand_id : str
692
+ The unique ID of the 10DLC Brand.
693
+
694
+ campaign_id : str
695
+ The unique ID of the 10DLC Campaign.
696
+
697
+ nudge_intent : str
698
+ Nudge intent. Allowed values: `REVIEW`, `APPEAL_REJECTION`.
699
+ Use `nudge_intent` to specify the action: - `REVIEW`: Request review for a pending Campaign. - `APPEAL_REJECTION`: Appeal a rejected Campaign.
700
+
701
+ description : str
702
+ Description of the nudge request.
703
+
704
+ request_options : typing.Optional[RequestOptions]
705
+ Request-specific configuration.
706
+
707
+ Returns
708
+ -------
709
+ SuccessResponse
710
+ Returns a success confirmation. The nudge request is submitted.
711
+
712
+ Examples
713
+ --------
714
+ from wavix import Wavix
715
+
716
+ client = Wavix(
717
+ token="YOUR_TOKEN",
718
+ )
719
+ client.ten_dlc.campaigns.nudge(
720
+ brand_id="B9FXYNH",
721
+ campaign_id="CSJ4TV0",
722
+ nudge_intent="REVIEW",
723
+ description="Please review the campaign.",
724
+ )
725
+ """
726
+ _response = self._raw_client.nudge(
727
+ brand_id, campaign_id, nudge_intent=nudge_intent, description=description, request_options=request_options
728
+ )
729
+ return _response.data
730
+
731
+
732
+ class AsyncCampaignsClient:
733
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
734
+ self._raw_client = AsyncRawCampaignsClient(client_wrapper=client_wrapper)
735
+
736
+ @property
737
+ def with_raw_response(self) -> AsyncRawCampaignsClient:
738
+ """
739
+ Retrieves a raw implementation of this client that returns raw responses.
740
+
741
+ Returns
742
+ -------
743
+ AsyncRawCampaignsClient
744
+ """
745
+ return self._raw_client
746
+
747
+ async def list(
748
+ self,
749
+ *,
750
+ name: typing.Optional[str] = None,
751
+ usecase: typing.Optional[str] = None,
752
+ status: typing.Optional[str] = None,
753
+ mock: typing.Optional[bool] = None,
754
+ created_before: typing.Optional[dt.date] = None,
755
+ created_after: typing.Optional[dt.date] = None,
756
+ page: typing.Optional[int] = None,
757
+ per_page: typing.Optional[int] = None,
758
+ request_options: typing.Optional[RequestOptions] = None,
759
+ ) -> ListCampaignsResponse:
760
+ """
761
+ Returns a paginated list of 10DLC Campaigns for the authenticated account, filtered by date, status, and use case.
762
+
763
+ Parameters
764
+ ----------
765
+ name : typing.Optional[str]
766
+ Filters Campaigns by name. Matches partial values.
767
+
768
+ usecase : typing.Optional[str]
769
+ Filters Campaigns by use case.
770
+
771
+ status : typing.Optional[str]
772
+ Filters Campaigns by status.
773
+
774
+ mock : typing.Optional[bool]
775
+ When `true`, returns only mock Campaigns used for testing. Default `false`.
776
+
777
+ created_before : typing.Optional[dt.date]
778
+ Returns Campaigns created on or before this date, in `YYYY-MM-DD` format.
779
+
780
+ created_after : typing.Optional[dt.date]
781
+ Returns Campaigns created on or after this date, in `YYYY-MM-DD` format.
782
+
783
+ page : typing.Optional[int]
784
+ Page number to retrieve. Default `1`.
785
+
786
+ per_page : typing.Optional[int]
787
+ Number of records to return per page. Default `25`.
788
+
789
+ request_options : typing.Optional[RequestOptions]
790
+ Request-specific configuration.
791
+
792
+ Returns
793
+ -------
794
+ ListCampaignsResponse
795
+ Returns a paginated list of 10DLC Campaigns.
796
+
797
+ Examples
798
+ --------
799
+ import asyncio
800
+ import datetime
801
+
802
+ from wavix import AsyncWavix
803
+
804
+ client = AsyncWavix(
805
+ token="YOUR_TOKEN",
806
+ )
807
+
808
+
809
+ async def main() -> None:
810
+ await client.ten_dlc.campaigns.list(
811
+ name="Name",
812
+ usecase="2FA",
813
+ status="APPROVED",
814
+ mock=True,
815
+ created_before=datetime.date.fromisoformat(
816
+ "2024-08-22",
817
+ ),
818
+ created_after=datetime.date.fromisoformat(
819
+ "2024-08-22",
820
+ ),
821
+ page=1,
822
+ per_page=25,
823
+ )
824
+
825
+
826
+ asyncio.run(main())
827
+ """
828
+ _response = await self._raw_client.list(
829
+ name=name,
830
+ usecase=usecase,
831
+ status=status,
832
+ mock=mock,
833
+ created_before=created_before,
834
+ created_after=created_after,
835
+ page=page,
836
+ per_page=per_page,
837
+ request_options=request_options,
838
+ )
839
+ return _response.data
840
+
841
+ async def list_by_brand(
842
+ self,
843
+ brand_id: str,
844
+ *,
845
+ name: typing.Optional[str] = None,
846
+ usecase: typing.Optional[str] = None,
847
+ status: typing.Optional[str] = None,
848
+ mock: typing.Optional[bool] = None,
849
+ created_before: typing.Optional[dt.date] = None,
850
+ created_after: typing.Optional[dt.date] = None,
851
+ page: typing.Optional[int] = None,
852
+ per_page: typing.Optional[int] = None,
853
+ request_options: typing.Optional[RequestOptions] = None,
854
+ ) -> ListByBrandCampaignsResponse:
855
+ """
856
+ Returns a paginated list of 10DLC Campaigns associated with the 10DLC Brand identified by `brand_id`.
857
+
858
+ Parameters
859
+ ----------
860
+ brand_id : str
861
+ The unique ID of the 10DLC Brand.
862
+
863
+ name : typing.Optional[str]
864
+ Filters Campaigns by name. Matches partial values.
865
+
866
+ usecase : typing.Optional[str]
867
+ Filters Campaigns by use case.
868
+
869
+ status : typing.Optional[str]
870
+ Filters Campaigns by status.
871
+
872
+ mock : typing.Optional[bool]
873
+ When `true`, returns only mock Campaigns used for testing. Default `false`.
874
+
875
+ created_before : typing.Optional[dt.date]
876
+ Returns Campaigns created on or before this date, in `YYYY-MM-DD` format.
877
+
878
+ created_after : typing.Optional[dt.date]
879
+ Returns Campaigns created on or after this date, in `YYYY-MM-DD` format.
880
+
881
+ page : typing.Optional[int]
882
+ Page number to retrieve. Default `1`.
883
+
884
+ per_page : typing.Optional[int]
885
+ Number of records to return per page. Default `25`.
886
+
887
+ request_options : typing.Optional[RequestOptions]
888
+ Request-specific configuration.
889
+
890
+ Returns
891
+ -------
892
+ ListByBrandCampaignsResponse
893
+ Returns a paginated list of 10DLC Campaigns.
894
+
895
+ Examples
896
+ --------
897
+ import asyncio
898
+ import datetime
899
+
900
+ from wavix import AsyncWavix
901
+
902
+ client = AsyncWavix(
903
+ token="YOUR_TOKEN",
904
+ )
905
+
906
+
907
+ async def main() -> None:
908
+ await client.ten_dlc.campaigns.list_by_brand(
909
+ brand_id="BM20QP9",
910
+ name="Name",
911
+ usecase="2FA",
912
+ status="APPROVED",
913
+ mock=True,
914
+ created_before=datetime.date.fromisoformat(
915
+ "2024-08-22",
916
+ ),
917
+ created_after=datetime.date.fromisoformat(
918
+ "2024-08-22",
919
+ ),
920
+ page=1,
921
+ per_page=25,
922
+ )
923
+
924
+
925
+ asyncio.run(main())
926
+ """
927
+ _response = await self._raw_client.list_by_brand(
928
+ brand_id,
929
+ name=name,
930
+ usecase=usecase,
931
+ status=status,
932
+ mock=mock,
933
+ created_before=created_before,
934
+ created_after=created_after,
935
+ page=page,
936
+ per_page=per_page,
937
+ request_options=request_options,
938
+ )
939
+ return _response.data
940
+
941
+ async def create(
942
+ self,
943
+ brand_id: str,
944
+ *,
945
+ affiliate_marketing: bool,
946
+ age_gated: bool,
947
+ auto_renewal: bool,
948
+ direct_lending: bool,
949
+ embedded_links: bool,
950
+ description: str,
951
+ optin_workflow: str,
952
+ help: bool,
953
+ help_keywords: str,
954
+ help_message: str,
955
+ optin: bool,
956
+ optin_keywords: str,
957
+ optin_message: str,
958
+ optout: bool,
959
+ optout_keywords: str,
960
+ optout_message: str,
961
+ name: str,
962
+ sample1: str,
963
+ mock: bool,
964
+ usecase: str,
965
+ terms_conditions: str,
966
+ embedded_phones: typing.Optional[bool] = OMIT,
967
+ embedded_link_sample: typing.Optional[str] = OMIT,
968
+ sample2: typing.Optional[str] = OMIT,
969
+ sample3: typing.Optional[str] = OMIT,
970
+ sample4: typing.Optional[str] = OMIT,
971
+ sample5: typing.Optional[str] = OMIT,
972
+ privacy_policy: typing.Optional[str] = OMIT,
973
+ request_options: typing.Optional[RequestOptions] = None,
974
+ ) -> CreateCampaignsResponse:
975
+ """
976
+ Registers a 10DLC Campaign under the 10DLC Brand identified by `brand_id`. The Brand must have a verified identity status.
977
+
978
+ Parameters
979
+ ----------
980
+ brand_id : str
981
+ The unique ID of the 10DLC Brand.
982
+
983
+ affiliate_marketing : bool
984
+ Indicates whether the Campaign is used for affiliate marketing.
985
+
986
+ age_gated : bool
987
+ Indicates whether the Campaign messages contain age-gated content.
988
+
989
+ auto_renewal : bool
990
+ Indicates whether the Campaign is automatically renewed at the end of each billing period.
991
+
992
+ direct_lending : bool
993
+ Indicates whether the Campaign messages contain direct lending content.
994
+
995
+ embedded_links : bool
996
+ Indicates whether the Campaign messages contain embedded links.
997
+
998
+ description : str
999
+ Description of the Campaign and its messaging purpose.
1000
+
1001
+ optin_workflow : str
1002
+ Description of the workflow through which subscribers opt in to the Campaign.
1003
+
1004
+ help : bool
1005
+ Indicates whether the Campaign provides a help system that subscribers can trigger with a keyword such as HELP or INFO.
1006
+
1007
+ help_keywords : str
1008
+ Comma-separated list of help keywords. Keywords are case-insensitive.
1009
+
1010
+ help_message : str
1011
+ Acknowledgement sent when a subscriber texts a help keyword.
1012
+
1013
+ optin : bool
1014
+ Indicates whether the Campaign requires subscribers to opt in before receiving messages.
1015
+
1016
+ optin_keywords : str
1017
+ Comma-separated list of opt-in keywords. Keywords are case-insensitive.
1018
+
1019
+ optin_message : str
1020
+ Acknowledgement sent when a subscriber texts an opt-in keyword.
1021
+
1022
+ optout : bool
1023
+ Indicates whether the Campaign provides an opt-out system that subscribers can trigger with a keyword such as STOP or QUIT.
1024
+
1025
+ optout_keywords : str
1026
+ Comma-separated list of opt-out keywords. Keywords are case-insensitive.
1027
+
1028
+ optout_message : str
1029
+ Acknowledgement sent when a subscriber texts an opt-out keyword.
1030
+
1031
+ name : str
1032
+ Display name of the Campaign.
1033
+
1034
+ sample1 : str
1035
+ Sample message demonstrating the content sent through the Campaign.
1036
+
1037
+ mock : bool
1038
+ Indicates whether the Campaign is a mock campaign used for testing. Mock campaigns cannot send production traffic.
1039
+
1040
+ usecase : str
1041
+ Registered use case for the Campaign, such as `2FA` or `MARKETING`.
1042
+
1043
+ terms_conditions : str
1044
+ URL of the Campaign terms and conditions.
1045
+
1046
+ embedded_phones : typing.Optional[bool]
1047
+ Indicates whether the Campaign messages contain embedded phone numbers.
1048
+
1049
+ embedded_link_sample : typing.Optional[str]
1050
+ Sample of an embedded link used in Campaign messages.
1051
+
1052
+ sample2 : typing.Optional[str]
1053
+ Sample message demonstrating the content sent through the Campaign.
1054
+
1055
+ sample3 : typing.Optional[str]
1056
+ Sample message demonstrating the content sent through the Campaign.
1057
+
1058
+ sample4 : typing.Optional[str]
1059
+ Sample message demonstrating the content sent through the Campaign.
1060
+
1061
+ sample5 : typing.Optional[str]
1062
+ Sample message demonstrating the content sent through the Campaign.
1063
+
1064
+ privacy_policy : typing.Optional[str]
1065
+ URL of the Campaign privacy policy.
1066
+
1067
+ request_options : typing.Optional[RequestOptions]
1068
+ Request-specific configuration.
1069
+
1070
+ Returns
1071
+ -------
1072
+ CreateCampaignsResponse
1073
+ Returns the registered 10DLC Campaign.
1074
+
1075
+ Examples
1076
+ --------
1077
+ import asyncio
1078
+
1079
+ from wavix import AsyncWavix
1080
+
1081
+ client = AsyncWavix(
1082
+ token="YOUR_TOKEN",
1083
+ )
1084
+
1085
+
1086
+ async def main() -> None:
1087
+ await client.ten_dlc.campaigns.create(
1088
+ brand_id="BM20QP9",
1089
+ affiliate_marketing=False,
1090
+ age_gated=False,
1091
+ auto_renewal=False,
1092
+ direct_lending=False,
1093
+ embedded_links=False,
1094
+ embedded_phones=False,
1095
+ embedded_link_sample="https://site.com/verify",
1096
+ description="Our campaign aims to …",
1097
+ optin_workflow="Our SMS ...",
1098
+ help=True,
1099
+ help_keywords="help",
1100
+ help_message="For help, please visit www.site.com. To opt-out, reply STOP.",
1101
+ optin=True,
1102
+ optin_keywords="begin,start",
1103
+ optin_message="You are now opted-in for help please reply HELP, to stop please reply STOP",
1104
+ optout=True,
1105
+ optout_keywords="stop,quit,unsubscribe",
1106
+ optout_message="You are now opted out and will receive no further messages",
1107
+ name="My first campaign",
1108
+ sample1="Your verification code is XXXXXX",
1109
+ sample2="XXXX is your verification code",
1110
+ sample3="Your code is XXXXXX, valid for 10 minutes",
1111
+ sample4="Use code XXXXXX to confirm your login",
1112
+ sample5="XXXXXX is your one-time passcode",
1113
+ mock=False,
1114
+ usecase="2FA",
1115
+ privacy_policy="https://site.com/privacy-policy",
1116
+ terms_conditions="https://site.com/terms-and-conditions",
1117
+ )
1118
+
1119
+
1120
+ asyncio.run(main())
1121
+ """
1122
+ _response = await self._raw_client.create(
1123
+ brand_id,
1124
+ affiliate_marketing=affiliate_marketing,
1125
+ age_gated=age_gated,
1126
+ auto_renewal=auto_renewal,
1127
+ direct_lending=direct_lending,
1128
+ embedded_links=embedded_links,
1129
+ description=description,
1130
+ optin_workflow=optin_workflow,
1131
+ help=help,
1132
+ help_keywords=help_keywords,
1133
+ help_message=help_message,
1134
+ optin=optin,
1135
+ optin_keywords=optin_keywords,
1136
+ optin_message=optin_message,
1137
+ optout=optout,
1138
+ optout_keywords=optout_keywords,
1139
+ optout_message=optout_message,
1140
+ name=name,
1141
+ sample1=sample1,
1142
+ mock=mock,
1143
+ usecase=usecase,
1144
+ terms_conditions=terms_conditions,
1145
+ embedded_phones=embedded_phones,
1146
+ embedded_link_sample=embedded_link_sample,
1147
+ sample2=sample2,
1148
+ sample3=sample3,
1149
+ sample4=sample4,
1150
+ sample5=sample5,
1151
+ privacy_policy=privacy_policy,
1152
+ request_options=request_options,
1153
+ )
1154
+ return _response.data
1155
+
1156
+ async def get(
1157
+ self, brand_id: str, campaign_id: str, *, request_options: typing.Optional[RequestOptions] = None
1158
+ ) -> GetCampaignsResponse:
1159
+ """
1160
+ Returns the 10DLC Campaign identified by `campaign_id` under the Brand identified by `brand_id`.
1161
+
1162
+ Parameters
1163
+ ----------
1164
+ brand_id : str
1165
+ The unique ID of the 10DLC Brand.
1166
+
1167
+ campaign_id : str
1168
+ The unique ID of the 10DLC Campaign.
1169
+
1170
+ request_options : typing.Optional[RequestOptions]
1171
+ Request-specific configuration.
1172
+
1173
+ Returns
1174
+ -------
1175
+ GetCampaignsResponse
1176
+ Returns the 10DLC Campaign.
1177
+
1178
+ Examples
1179
+ --------
1180
+ import asyncio
1181
+
1182
+ from wavix import AsyncWavix
1183
+
1184
+ client = AsyncWavix(
1185
+ token="YOUR_TOKEN",
1186
+ )
1187
+
1188
+
1189
+ async def main() -> None:
1190
+ await client.ten_dlc.campaigns.get(
1191
+ brand_id="BM20QP9",
1192
+ campaign_id="CKLCK95",
1193
+ )
1194
+
1195
+
1196
+ asyncio.run(main())
1197
+ """
1198
+ _response = await self._raw_client.get(brand_id, campaign_id, request_options=request_options)
1199
+ return _response.data
1200
+
1201
+ async def update(
1202
+ self,
1203
+ brand_id: str,
1204
+ campaign_id: str,
1205
+ *,
1206
+ name: typing.Optional[str] = OMIT,
1207
+ usecase: typing.Optional[TenDlcCampaignUpdateRequestUsecase] = OMIT,
1208
+ description: typing.Optional[str] = OMIT,
1209
+ embedded_links: typing.Optional[bool] = OMIT,
1210
+ embedded_phones: typing.Optional[bool] = OMIT,
1211
+ age_gated: typing.Optional[bool] = OMIT,
1212
+ direct_lending: typing.Optional[bool] = OMIT,
1213
+ optin: typing.Optional[bool] = OMIT,
1214
+ optout: typing.Optional[bool] = OMIT,
1215
+ help: typing.Optional[bool] = OMIT,
1216
+ sample1: typing.Optional[str] = OMIT,
1217
+ sample2: typing.Optional[str] = OMIT,
1218
+ sample3: typing.Optional[str] = OMIT,
1219
+ sample4: typing.Optional[str] = OMIT,
1220
+ sample5: typing.Optional[str] = OMIT,
1221
+ optin_workflow: typing.Optional[str] = OMIT,
1222
+ help_message: typing.Optional[str] = OMIT,
1223
+ optin_message: typing.Optional[str] = OMIT,
1224
+ optout_message: typing.Optional[str] = OMIT,
1225
+ auto_renewal: typing.Optional[bool] = OMIT,
1226
+ optin_keywords: typing.Optional[str] = OMIT,
1227
+ help_keywords: typing.Optional[str] = OMIT,
1228
+ optout_keywords: typing.Optional[str] = OMIT,
1229
+ terms_conditions: typing.Optional[str] = OMIT,
1230
+ privacy_policy: typing.Optional[str] = OMIT,
1231
+ embedded_link_sample: typing.Optional[str] = OMIT,
1232
+ request_options: typing.Optional[RequestOptions] = None,
1233
+ ) -> UpdateCampaignsResponse:
1234
+ """
1235
+ Updates the 10DLC Campaign identified by `campaign_id`. Only the provided fields are changed.
1236
+
1237
+ Parameters
1238
+ ----------
1239
+ brand_id : str
1240
+ The unique ID of the 10DLC Brand.
1241
+
1242
+ campaign_id : str
1243
+ The unique ID of the 10DLC Campaign.
1244
+
1245
+ name : typing.Optional[str]
1246
+ Display name of the Campaign.
1247
+
1248
+ usecase : typing.Optional[TenDlcCampaignUpdateRequestUsecase]
1249
+ Registered use case for the Campaign. One of `CUSTOMER_CARE` (customer support messaging), `MARKETING` (promotional content), `ACCOUNT_NOTIFICATION` (account-related alerts), `FRAUD_ALERT` (fraud and suspicious-activity warnings), `PUBLIC_SERVICE_ANNOUNCEMENT` (public-interest notices), or `SECURITY_ALERT` (security-related warnings).
1250
+
1251
+ description : typing.Optional[str]
1252
+ Description of the Campaign and its messaging purpose.
1253
+
1254
+ embedded_links : typing.Optional[bool]
1255
+ Indicates whether the Campaign messages contain embedded links.
1256
+
1257
+ embedded_phones : typing.Optional[bool]
1258
+ Indicates whether the Campaign messages contain embedded phone numbers.
1259
+
1260
+ age_gated : typing.Optional[bool]
1261
+ Indicates whether the Campaign messages contain age-gated content.
1262
+
1263
+ direct_lending : typing.Optional[bool]
1264
+ Indicates whether the Campaign messages contain direct lending content.
1265
+
1266
+ optin : typing.Optional[bool]
1267
+ Indicates whether the Campaign requires subscribers to opt in before receiving messages.
1268
+
1269
+ optout : typing.Optional[bool]
1270
+ Indicates whether the Campaign provides an opt-out system that subscribers can trigger with a keyword.
1271
+
1272
+ help : typing.Optional[bool]
1273
+ Indicates whether the Campaign provides a help system that subscribers can trigger with a keyword.
1274
+
1275
+ sample1 : typing.Optional[str]
1276
+ Sample message demonstrating the content sent through the Campaign.
1277
+
1278
+ sample2 : typing.Optional[str]
1279
+ Sample message demonstrating the content sent through the Campaign.
1280
+
1281
+ sample3 : typing.Optional[str]
1282
+ Sample message demonstrating the content sent through the Campaign.
1283
+
1284
+ sample4 : typing.Optional[str]
1285
+ Sample message demonstrating the content sent through the Campaign.
1286
+
1287
+ sample5 : typing.Optional[str]
1288
+ Sample message demonstrating the content sent through the Campaign.
1289
+
1290
+ optin_workflow : typing.Optional[str]
1291
+ Description of the workflow through which subscribers opt in to the Campaign.
1292
+
1293
+ help_message : typing.Optional[str]
1294
+ Acknowledgement sent when a subscriber texts a help keyword.
1295
+
1296
+ optin_message : typing.Optional[str]
1297
+ Acknowledgement sent when a subscriber texts an opt-in keyword.
1298
+
1299
+ optout_message : typing.Optional[str]
1300
+ Acknowledgement sent when a subscriber texts an opt-out keyword.
1301
+
1302
+ auto_renewal : typing.Optional[bool]
1303
+ Indicates whether the Campaign is automatically renewed at the end of each billing period.
1304
+
1305
+ optin_keywords : typing.Optional[str]
1306
+ Comma-separated list of opt-in keywords. Keywords are case-insensitive.
1307
+
1308
+ help_keywords : typing.Optional[str]
1309
+ Comma-separated list of help keywords. Keywords are case-insensitive.
1310
+
1311
+ optout_keywords : typing.Optional[str]
1312
+ Comma-separated list of opt-out keywords. Keywords are case-insensitive.
1313
+
1314
+ terms_conditions : typing.Optional[str]
1315
+ URL of the Campaign terms and conditions.
1316
+
1317
+ privacy_policy : typing.Optional[str]
1318
+ URL of the Campaign privacy policy.
1319
+
1320
+ embedded_link_sample : typing.Optional[str]
1321
+ Sample of an embedded link used in Campaign messages.
1322
+
1323
+ request_options : typing.Optional[RequestOptions]
1324
+ Request-specific configuration.
1325
+
1326
+ Returns
1327
+ -------
1328
+ UpdateCampaignsResponse
1329
+ Returns the updated 10DLC Campaign.
1330
+
1331
+ Examples
1332
+ --------
1333
+ import asyncio
1334
+
1335
+ from wavix import AsyncWavix
1336
+
1337
+ client = AsyncWavix(
1338
+ token="YOUR_TOKEN",
1339
+ )
1340
+
1341
+
1342
+ async def main() -> None:
1343
+ await client.ten_dlc.campaigns.update(
1344
+ brand_id="BM20QP9",
1345
+ campaign_id="CKLCK95",
1346
+ )
1347
+
1348
+
1349
+ asyncio.run(main())
1350
+ """
1351
+ _response = await self._raw_client.update(
1352
+ brand_id,
1353
+ campaign_id,
1354
+ name=name,
1355
+ usecase=usecase,
1356
+ description=description,
1357
+ embedded_links=embedded_links,
1358
+ embedded_phones=embedded_phones,
1359
+ age_gated=age_gated,
1360
+ direct_lending=direct_lending,
1361
+ optin=optin,
1362
+ optout=optout,
1363
+ help=help,
1364
+ sample1=sample1,
1365
+ sample2=sample2,
1366
+ sample3=sample3,
1367
+ sample4=sample4,
1368
+ sample5=sample5,
1369
+ optin_workflow=optin_workflow,
1370
+ help_message=help_message,
1371
+ optin_message=optin_message,
1372
+ optout_message=optout_message,
1373
+ auto_renewal=auto_renewal,
1374
+ optin_keywords=optin_keywords,
1375
+ help_keywords=help_keywords,
1376
+ optout_keywords=optout_keywords,
1377
+ terms_conditions=terms_conditions,
1378
+ privacy_policy=privacy_policy,
1379
+ embedded_link_sample=embedded_link_sample,
1380
+ request_options=request_options,
1381
+ )
1382
+ return _response.data
1383
+
1384
+ async def delete(
1385
+ self, brand_id: str, campaign_id: str, *, request_options: typing.Optional[RequestOptions] = None
1386
+ ) -> DeleteCampaignsResponse:
1387
+ """
1388
+ Deletes a 10DLC Campaign. Associated phone numbers cannot be used as Sender IDs once the Campaign is deleted.
1389
+
1390
+ Parameters
1391
+ ----------
1392
+ brand_id : str
1393
+ The unique ID of the 10DLC Brand.
1394
+
1395
+ campaign_id : str
1396
+ The unique ID of the 10DLC Campaign.
1397
+
1398
+ request_options : typing.Optional[RequestOptions]
1399
+ Request-specific configuration.
1400
+
1401
+ Returns
1402
+ -------
1403
+ DeleteCampaignsResponse
1404
+ Returns a success confirmation. The 10DLC Campaign is deleted.
1405
+
1406
+ Examples
1407
+ --------
1408
+ import asyncio
1409
+
1410
+ from wavix import AsyncWavix
1411
+
1412
+ client = AsyncWavix(
1413
+ token="YOUR_TOKEN",
1414
+ )
1415
+
1416
+
1417
+ async def main() -> None:
1418
+ await client.ten_dlc.campaigns.delete(
1419
+ brand_id="BM20QP9",
1420
+ campaign_id="CKLCK95",
1421
+ )
1422
+
1423
+
1424
+ asyncio.run(main())
1425
+ """
1426
+ _response = await self._raw_client.delete(brand_id, campaign_id, request_options=request_options)
1427
+ return _response.data
1428
+
1429
+ async def nudge(
1430
+ self,
1431
+ brand_id: str,
1432
+ campaign_id: str,
1433
+ *,
1434
+ nudge_intent: str,
1435
+ description: str,
1436
+ request_options: typing.Optional[RequestOptions] = None,
1437
+ ) -> SuccessResponse:
1438
+ """
1439
+ Requests action on a pending or rejected 10DLC Campaign. Use `nudge_intent` to specify the action:
1440
+ - `REVIEW`: Request review for a pending Campaign. - `APPEAL_REJECTION`: Appeal a rejected Campaign.
1441
+ Note:
1442
+ - The Campaign must be at least 72 hours old.
1443
+ - Only one nudge request per Campaign is allowed every 24 hours.
1444
+
1445
+ Parameters
1446
+ ----------
1447
+ brand_id : str
1448
+ The unique ID of the 10DLC Brand.
1449
+
1450
+ campaign_id : str
1451
+ The unique ID of the 10DLC Campaign.
1452
+
1453
+ nudge_intent : str
1454
+ Nudge intent. Allowed values: `REVIEW`, `APPEAL_REJECTION`.
1455
+ Use `nudge_intent` to specify the action: - `REVIEW`: Request review for a pending Campaign. - `APPEAL_REJECTION`: Appeal a rejected Campaign.
1456
+
1457
+ description : str
1458
+ Description of the nudge request.
1459
+
1460
+ request_options : typing.Optional[RequestOptions]
1461
+ Request-specific configuration.
1462
+
1463
+ Returns
1464
+ -------
1465
+ SuccessResponse
1466
+ Returns a success confirmation. The nudge request is submitted.
1467
+
1468
+ Examples
1469
+ --------
1470
+ import asyncio
1471
+
1472
+ from wavix import AsyncWavix
1473
+
1474
+ client = AsyncWavix(
1475
+ token="YOUR_TOKEN",
1476
+ )
1477
+
1478
+
1479
+ async def main() -> None:
1480
+ await client.ten_dlc.campaigns.nudge(
1481
+ brand_id="B9FXYNH",
1482
+ campaign_id="CSJ4TV0",
1483
+ nudge_intent="REVIEW",
1484
+ description="Please review the campaign.",
1485
+ )
1486
+
1487
+
1488
+ asyncio.run(main())
1489
+ """
1490
+ _response = await self._raw_client.nudge(
1491
+ brand_id, campaign_id, nudge_intent=nudge_intent, description=description, request_options=request_options
1492
+ )
1493
+ return _response.data