sentdm 0.26.0 → 0.28.0

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 (293) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +40 -0
  3. data/README.md +1 -27
  4. data/lib/sentdm/client.rb +71 -8
  5. data/lib/sentdm/internal/type/base_model.rb +5 -5
  6. data/lib/sentdm/models/contact_create_response.rb +249 -0
  7. data/lib/sentdm/models/contact_delete_params.rb +16 -2
  8. data/lib/sentdm/models/contact_list_response.rb +299 -16
  9. data/lib/sentdm/models/contact_retrieve_message_summary_response.rb +186 -0
  10. data/lib/sentdm/models/contact_retrieve_response.rb +249 -0
  11. data/lib/sentdm/models/contact_update_response.rb +249 -0
  12. data/lib/sentdm/models/conversation_list_messages_response.rb +436 -0
  13. data/lib/sentdm/models/conversation_list_response.rb +433 -0
  14. data/lib/sentdm/models/inbound_message_event.rb +52 -0
  15. data/lib/sentdm/models/inbound_message_event_payload.rb +81 -0
  16. data/lib/sentdm/models/me_retrieve_response.rb +242 -12
  17. data/lib/sentdm/models/message_event.rb +53 -0
  18. data/lib/sentdm/models/message_event_payload.rb +92 -0
  19. data/lib/sentdm/models/message_retrieve_activities_response.rb +165 -7
  20. data/lib/sentdm/models/message_retrieve_status_response.rb +74 -6
  21. data/lib/sentdm/models/message_send_response.rb +113 -28
  22. data/lib/sentdm/models/number_lookup_response.rb +74 -6
  23. data/lib/sentdm/models/profile_complete_response.rb +74 -6
  24. data/lib/sentdm/models/profile_create_params.rb +378 -26
  25. data/lib/sentdm/models/profile_create_response.rb +760 -0
  26. data/lib/sentdm/models/profile_delete_params.rb +16 -2
  27. data/lib/sentdm/models/profile_list_response.rb +825 -14
  28. data/lib/sentdm/models/profile_retrieve_response.rb +762 -0
  29. data/lib/sentdm/models/profile_update_params.rb +391 -24
  30. data/lib/sentdm/models/profile_update_response.rb +760 -0
  31. data/lib/sentdm/models/profiles/campaign_create_params.rb +156 -3
  32. data/lib/sentdm/models/profiles/campaign_create_response.rb +420 -0
  33. data/lib/sentdm/models/profiles/campaign_delete_params.rb +17 -2
  34. data/lib/sentdm/models/profiles/campaign_list_response.rb +421 -0
  35. data/lib/sentdm/models/profiles/campaign_update_params.rb +156 -3
  36. data/lib/sentdm/models/profiles/campaign_update_response.rb +420 -0
  37. data/lib/sentdm/models/template_create_response.rb +209 -0
  38. data/lib/sentdm/models/template_event.rb +52 -0
  39. data/lib/sentdm/models/template_event_payload.rb +88 -0
  40. data/lib/sentdm/models/template_list_params.rb +9 -2
  41. data/lib/sentdm/models/template_list_response.rb +262 -16
  42. data/lib/sentdm/models/template_retrieve_response.rb +209 -0
  43. data/lib/sentdm/models/template_update_response.rb +209 -0
  44. data/lib/sentdm/models/user_invite_response.rb +201 -0
  45. data/lib/sentdm/models/user_list_response.rb +259 -14
  46. data/lib/sentdm/models/user_remove_params.rb +16 -2
  47. data/lib/sentdm/models/user_retrieve_response.rb +201 -0
  48. data/lib/sentdm/models/user_update_role_response.rb +201 -0
  49. data/lib/sentdm/models/webhook_create_response.rb +229 -0
  50. data/lib/sentdm/models/webhook_list_event_types_response.rb +213 -13
  51. data/lib/sentdm/models/webhook_list_events_response.rb +207 -16
  52. data/lib/sentdm/models/webhook_list_response.rb +280 -15
  53. data/lib/sentdm/models/webhook_retrieve_response.rb +229 -0
  54. data/lib/sentdm/models/webhook_rotate_secret_params.rb +17 -2
  55. data/lib/sentdm/models/webhook_rotate_secret_response.rb +74 -6
  56. data/lib/sentdm/models/webhook_test_response.rb +74 -6
  57. data/lib/sentdm/models/webhook_toggle_status_response.rb +229 -0
  58. data/lib/sentdm/models/webhook_update_response.rb +229 -0
  59. data/lib/sentdm/models.rb +11 -51
  60. data/lib/sentdm/resources/contacts.rb +30 -13
  61. data/lib/sentdm/resources/conversations.rb +12 -4
  62. data/lib/sentdm/resources/me.rb +6 -1
  63. data/lib/sentdm/resources/messages.rb +17 -5
  64. data/lib/sentdm/resources/numbers.rb +6 -1
  65. data/lib/sentdm/resources/profiles/campaigns.rb +47 -9
  66. data/lib/sentdm/resources/profiles.rb +137 -61
  67. data/lib/sentdm/resources/templates.rb +14 -8
  68. data/lib/sentdm/resources/users.rb +15 -10
  69. data/lib/sentdm/resources/webhooks.rb +19 -9
  70. data/lib/sentdm/version.rb +1 -1
  71. data/lib/sentdm.rb +28 -32
  72. data/rbi/sentdm/client.rbi +71 -8
  73. data/rbi/sentdm/models/contact_create_response.rbi +407 -0
  74. data/rbi/sentdm/models/contact_delete_params.rbi +19 -2
  75. data/rbi/sentdm/models/contact_list_response.rbi +527 -21
  76. data/rbi/sentdm/models/contact_retrieve_message_summary_response.rbi +397 -0
  77. data/rbi/sentdm/models/contact_retrieve_response.rbi +409 -0
  78. data/rbi/sentdm/models/contact_update_response.rbi +407 -0
  79. data/rbi/sentdm/models/conversation_list_messages_response.rbi +843 -0
  80. data/rbi/sentdm/models/conversation_list_response.rbi +819 -0
  81. data/rbi/sentdm/models/inbound_message_event.rbi +88 -0
  82. data/rbi/sentdm/models/inbound_message_event_payload.rbi +122 -0
  83. data/rbi/sentdm/models/me_retrieve_response.rbi +367 -16
  84. data/rbi/sentdm/models/message_event.rbi +86 -0
  85. data/rbi/sentdm/models/message_event_payload.rbi +132 -0
  86. data/rbi/sentdm/models/message_retrieve_activities_response.rbi +335 -11
  87. data/rbi/sentdm/models/message_retrieve_status_response.rbi +148 -8
  88. data/rbi/sentdm/models/message_send_response.rbi +178 -32
  89. data/rbi/sentdm/models/number_lookup_response.rbi +135 -8
  90. data/rbi/sentdm/models/profile_complete_response.rbi +137 -8
  91. data/rbi/sentdm/models/profile_create_params.rbi +592 -42
  92. data/rbi/sentdm/models/profile_create_response.rbi +1226 -0
  93. data/rbi/sentdm/models/profile_delete_params.rbi +19 -2
  94. data/rbi/sentdm/models/profile_list_response.rbi +1366 -18
  95. data/rbi/sentdm/models/profile_retrieve_response.rbi +1230 -0
  96. data/rbi/sentdm/models/profile_update_params.rbi +610 -30
  97. data/rbi/sentdm/models/profile_update_response.rbi +1226 -0
  98. data/rbi/sentdm/models/profiles/campaign_create_params.rbi +218 -4
  99. data/rbi/sentdm/models/profiles/campaign_create_response.rbi +674 -0
  100. data/rbi/sentdm/models/profiles/campaign_delete_params.rbi +14 -1
  101. data/rbi/sentdm/models/profiles/campaign_list_response.rbi +667 -0
  102. data/rbi/sentdm/models/profiles/campaign_update_params.rbi +218 -4
  103. data/rbi/sentdm/models/profiles/campaign_update_response.rbi +674 -0
  104. data/rbi/sentdm/models/template_create_response.rbi +349 -0
  105. data/rbi/sentdm/models/template_event.rbi +84 -0
  106. data/rbi/sentdm/models/template_event_payload.rbi +131 -0
  107. data/rbi/sentdm/models/template_list_params.rbi +10 -2
  108. data/rbi/sentdm/models/template_list_response.rbi +469 -21
  109. data/rbi/sentdm/models/template_retrieve_response.rbi +355 -0
  110. data/rbi/sentdm/models/template_update_response.rbi +349 -0
  111. data/rbi/sentdm/models/user_invite_response.rbi +336 -0
  112. data/rbi/sentdm/models/user_list_response.rbi +463 -18
  113. data/rbi/sentdm/models/user_remove_params.rbi +19 -2
  114. data/rbi/sentdm/models/user_retrieve_response.rbi +336 -0
  115. data/rbi/sentdm/models/user_update_role_response.rbi +341 -0
  116. data/rbi/sentdm/models/webhook_create_response.rbi +361 -0
  117. data/rbi/sentdm/models/webhook_list_event_types_response.rbi +433 -16
  118. data/rbi/sentdm/models/webhook_list_events_response.rbi +379 -19
  119. data/rbi/sentdm/models/webhook_list_response.rbi +480 -19
  120. data/rbi/sentdm/models/webhook_retrieve_response.rbi +363 -0
  121. data/rbi/sentdm/models/webhook_rotate_secret_params.rbi +14 -1
  122. data/rbi/sentdm/models/webhook_rotate_secret_response.rbi +148 -8
  123. data/rbi/sentdm/models/webhook_test_response.rbi +135 -8
  124. data/rbi/sentdm/models/webhook_toggle_status_response.rbi +379 -0
  125. data/rbi/sentdm/models/webhook_update_response.rbi +361 -0
  126. data/rbi/sentdm/models.rbi +11 -53
  127. data/rbi/sentdm/resources/contacts.rbi +24 -9
  128. data/rbi/sentdm/resources/conversations.rbi +10 -2
  129. data/rbi/sentdm/resources/me.rbi +6 -1
  130. data/rbi/sentdm/resources/messages.rbi +17 -5
  131. data/rbi/sentdm/resources/numbers.rbi +6 -1
  132. data/rbi/sentdm/resources/profiles/campaigns.rbi +36 -6
  133. data/rbi/sentdm/resources/profiles.rbi +177 -68
  134. data/rbi/sentdm/resources/templates.rbi +15 -5
  135. data/rbi/sentdm/resources/users.rbi +12 -6
  136. data/rbi/sentdm/resources/webhooks.rbi +15 -5
  137. data/sig/sentdm/models/contact_create_response.rbs +216 -0
  138. data/sig/sentdm/models/contact_delete_params.rbs +10 -6
  139. data/sig/sentdm/models/contact_list_response.rbs +263 -20
  140. data/sig/sentdm/models/contact_retrieve_message_summary_response.rbs +182 -0
  141. data/sig/sentdm/models/contact_retrieve_response.rbs +216 -0
  142. data/sig/sentdm/models/contact_update_response.rbs +216 -0
  143. data/sig/sentdm/models/conversation_list_messages_response.rbs +404 -0
  144. data/sig/sentdm/models/conversation_list_response.rbs +404 -0
  145. data/sig/sentdm/models/inbound_message_event.rbs +39 -0
  146. data/sig/sentdm/models/inbound_message_event_payload.rbs +69 -0
  147. data/sig/sentdm/models/me_retrieve_response.rbs +176 -18
  148. data/sig/sentdm/models/message_event.rbs +39 -0
  149. data/sig/sentdm/models/message_event_payload.rbs +72 -0
  150. data/sig/sentdm/models/message_retrieve_activities_response.rbs +147 -12
  151. data/sig/sentdm/models/message_retrieve_status_response.rbs +71 -9
  152. data/sig/sentdm/models/message_send_response.rbs +71 -9
  153. data/sig/sentdm/models/number_lookup_response.rbs +71 -9
  154. data/sig/sentdm/models/profile_complete_response.rbs +71 -9
  155. data/sig/sentdm/models/profile_create_params.rbs +271 -24
  156. data/sig/sentdm/models/profile_create_response.rbs +559 -0
  157. data/sig/sentdm/models/profile_delete_params.rbs +10 -6
  158. data/sig/sentdm/models/profile_list_response.rbs +615 -15
  159. data/sig/sentdm/models/profile_retrieve_response.rbs +559 -0
  160. data/sig/sentdm/models/profile_update_params.rbs +263 -12
  161. data/sig/sentdm/models/profile_update_response.rbs +559 -0
  162. data/sig/sentdm/models/profiles/campaign_create_params.rbs +108 -4
  163. data/sig/sentdm/models/profiles/campaign_create_response.rbs +357 -0
  164. data/sig/sentdm/models/profiles/campaign_delete_params.rbs +15 -8
  165. data/sig/sentdm/models/profiles/campaign_list_response.rbs +357 -0
  166. data/sig/sentdm/models/profiles/campaign_update_params.rbs +108 -4
  167. data/sig/sentdm/models/profiles/campaign_update_response.rbs +357 -0
  168. data/sig/sentdm/models/template_create_response.rbs +182 -0
  169. data/sig/sentdm/models/template_event.rbs +39 -0
  170. data/sig/sentdm/models/template_event_payload.rbs +76 -0
  171. data/sig/sentdm/models/template_list_response.rbs +230 -19
  172. data/sig/sentdm/models/template_retrieve_response.rbs +182 -0
  173. data/sig/sentdm/models/template_update_response.rbs +182 -0
  174. data/sig/sentdm/models/user_invite_response.rbs +177 -0
  175. data/sig/sentdm/models/user_list_response.rbs +233 -15
  176. data/sig/sentdm/models/user_remove_params.rbs +10 -6
  177. data/sig/sentdm/models/user_retrieve_response.rbs +177 -0
  178. data/sig/sentdm/models/user_update_role_response.rbs +177 -0
  179. data/sig/sentdm/models/webhook_create_response.rbs +208 -0
  180. data/sig/sentdm/models/webhook_list_event_types_response.rbs +203 -15
  181. data/sig/sentdm/models/webhook_list_events_response.rbs +160 -19
  182. data/sig/sentdm/models/webhook_list_response.rbs +255 -20
  183. data/sig/sentdm/models/webhook_retrieve_response.rbs +208 -0
  184. data/sig/sentdm/models/webhook_rotate_secret_params.rbs +17 -8
  185. data/sig/sentdm/models/webhook_rotate_secret_response.rbs +71 -9
  186. data/sig/sentdm/models/webhook_test_response.rbs +71 -9
  187. data/sig/sentdm/models/webhook_toggle_status_response.rbs +208 -0
  188. data/sig/sentdm/models/webhook_update_response.rbs +208 -0
  189. data/sig/sentdm/models.rbs +11 -51
  190. data/sig/sentdm/resources/contacts.rbs +4 -4
  191. data/sig/sentdm/resources/conversations.rbs +2 -2
  192. data/sig/sentdm/resources/profiles/campaigns.rbs +5 -5
  193. data/sig/sentdm/resources/profiles.rbs +11 -11
  194. data/sig/sentdm/resources/templates.rbs +3 -3
  195. data/sig/sentdm/resources/users.rbs +3 -3
  196. data/sig/sentdm/resources/webhooks.rbs +4 -4
  197. metadata +86 -98
  198. data/lib/sentdm/models/api_meta.rb +0 -34
  199. data/lib/sentdm/models/api_response_of_contact.rb +0 -46
  200. data/lib/sentdm/models/api_response_of_contact_message_summary.rb +0 -43
  201. data/lib/sentdm/models/api_response_of_conversation_messages_list.rb +0 -43
  202. data/lib/sentdm/models/api_response_of_profile_detail.rb +0 -43
  203. data/lib/sentdm/models/api_response_of_user.rb +0 -43
  204. data/lib/sentdm/models/api_response_template.rb +0 -43
  205. data/lib/sentdm/models/api_response_webhook.rb +0 -43
  206. data/lib/sentdm/models/billing_contact_info.rb +0 -47
  207. data/lib/sentdm/models/brand_business_info.rb +0 -114
  208. data/lib/sentdm/models/brand_compliance_info.rb +0 -67
  209. data/lib/sentdm/models/brand_contact_info.rb +0 -58
  210. data/lib/sentdm/models/brands_brand_data.rb +0 -34
  211. data/lib/sentdm/models/contact_message_summary.rb +0 -76
  212. data/lib/sentdm/models/contact_response.rb +0 -126
  213. data/lib/sentdm/models/conversation_messages_list.rb +0 -245
  214. data/lib/sentdm/models/error_detail.rb +0 -42
  215. data/lib/sentdm/models/mutation_request.rb +0 -20
  216. data/lib/sentdm/models/pagination_meta.rb +0 -80
  217. data/lib/sentdm/models/payment_details.rb +0 -44
  218. data/lib/sentdm/models/profile_detail.rb +0 -597
  219. data/lib/sentdm/models/profile_settings.rb +0 -66
  220. data/lib/sentdm/models/profiles/api_response_of_brand_campaign.rb +0 -45
  221. data/lib/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rb +0 -45
  222. data/lib/sentdm/models/profiles/brand_campaign.rb +0 -247
  223. data/lib/sentdm/models/profiles/campaign_data.rb +0 -130
  224. data/lib/sentdm/models/profiles/campaign_use_case.rb +0 -71
  225. data/lib/sentdm/models/profiles/campaign_use_case_data.rb +0 -29
  226. data/lib/sentdm/models/template.rb +0 -90
  227. data/lib/sentdm/models/user_response.rb +0 -82
  228. data/lib/sentdm/models/webhook_event_type.rb +0 -45
  229. data/lib/sentdm/models/webhook_response.rb +0 -95
  230. data/rbi/sentdm/models/api_meta.rbi +0 -55
  231. data/rbi/sentdm/models/api_response_of_contact.rbi +0 -74
  232. data/rbi/sentdm/models/api_response_of_contact_message_summary.rbi +0 -79
  233. data/rbi/sentdm/models/api_response_of_conversation_messages_list.rbi +0 -79
  234. data/rbi/sentdm/models/api_response_of_profile_detail.rbi +0 -74
  235. data/rbi/sentdm/models/api_response_of_user.rbi +0 -74
  236. data/rbi/sentdm/models/api_response_template.rbi +0 -74
  237. data/rbi/sentdm/models/api_response_webhook.rbi +0 -74
  238. data/rbi/sentdm/models/billing_contact_info.rbi +0 -65
  239. data/rbi/sentdm/models/brand_business_info.rbi +0 -162
  240. data/rbi/sentdm/models/brand_compliance_info.rbi +0 -84
  241. data/rbi/sentdm/models/brand_contact_info.rbi +0 -78
  242. data/rbi/sentdm/models/brands_brand_data.rbi +0 -65
  243. data/rbi/sentdm/models/contact_message_summary.rbi +0 -144
  244. data/rbi/sentdm/models/contact_response.rbi +0 -183
  245. data/rbi/sentdm/models/conversation_messages_list.rbi +0 -419
  246. data/rbi/sentdm/models/error_detail.rbi +0 -66
  247. data/rbi/sentdm/models/mutation_request.rbi +0 -32
  248. data/rbi/sentdm/models/pagination_meta.rbi +0 -135
  249. data/rbi/sentdm/models/payment_details.rbi +0 -59
  250. data/rbi/sentdm/models/profile_detail.rbi +0 -866
  251. data/rbi/sentdm/models/profile_settings.rbi +0 -86
  252. data/rbi/sentdm/models/profiles/api_response_of_brand_campaign.rbi +0 -81
  253. data/rbi/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rbi +0 -76
  254. data/rbi/sentdm/models/profiles/brand_campaign.rbi +0 -299
  255. data/rbi/sentdm/models/profiles/campaign_data.rbi +0 -146
  256. data/rbi/sentdm/models/profiles/campaign_use_case.rbi +0 -110
  257. data/rbi/sentdm/models/profiles/campaign_use_case_data.rbi +0 -51
  258. data/rbi/sentdm/models/template.rbi +0 -129
  259. data/rbi/sentdm/models/user_response.rbi +0 -118
  260. data/rbi/sentdm/models/webhook_event_type.rbi +0 -74
  261. data/rbi/sentdm/models/webhook_response.rbi +0 -140
  262. data/sig/sentdm/models/api_meta.rbs +0 -27
  263. data/sig/sentdm/models/api_response_of_contact.rbs +0 -39
  264. data/sig/sentdm/models/api_response_of_contact_message_summary.rbs +0 -39
  265. data/sig/sentdm/models/api_response_of_conversation_messages_list.rbs +0 -39
  266. data/sig/sentdm/models/api_response_of_profile_detail.rbs +0 -39
  267. data/sig/sentdm/models/api_response_of_user.rbs +0 -39
  268. data/sig/sentdm/models/api_response_template.rbs +0 -39
  269. data/sig/sentdm/models/api_response_webhook.rbs +0 -39
  270. data/sig/sentdm/models/billing_contact_info.rbs +0 -30
  271. data/sig/sentdm/models/brand_business_info.rbs +0 -89
  272. data/sig/sentdm/models/brand_compliance_info.rbs +0 -50
  273. data/sig/sentdm/models/brand_contact_info.rbs +0 -45
  274. data/sig/sentdm/models/brands_brand_data.rbs +0 -30
  275. data/sig/sentdm/models/contact_message_summary.rbs +0 -84
  276. data/sig/sentdm/models/contact_response.rbs +0 -111
  277. data/sig/sentdm/models/conversation_messages_list.rbs +0 -240
  278. data/sig/sentdm/models/error_detail.rbs +0 -39
  279. data/sig/sentdm/models/mutation_request.rbs +0 -15
  280. data/sig/sentdm/models/pagination_meta.rbs +0 -67
  281. data/sig/sentdm/models/payment_details.rbs +0 -30
  282. data/sig/sentdm/models/profile_detail.rbs +0 -469
  283. data/sig/sentdm/models/profile_settings.rbs +0 -50
  284. data/sig/sentdm/models/profiles/api_response_of_brand_campaign.rbs +0 -41
  285. data/sig/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rbs +0 -41
  286. data/sig/sentdm/models/profiles/brand_campaign.rbs +0 -194
  287. data/sig/sentdm/models/profiles/campaign_data.rbs +0 -87
  288. data/sig/sentdm/models/profiles/campaign_use_case.rbs +0 -66
  289. data/sig/sentdm/models/profiles/campaign_use_case_data.rbs +0 -27
  290. data/sig/sentdm/models/template.rbs +0 -79
  291. data/sig/sentdm/models/user_response.rbs +0 -72
  292. data/sig/sentdm/models/webhook_event_type.rbs +0 -51
  293. data/sig/sentdm/models/webhook_response.rbs +0 -103
@@ -0,0 +1,361 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class WebhookUpdateResponse < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Sentdm::Models::WebhookUpdateResponse,
10
+ Sentdm::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # The response data (null if error)
15
+ sig { returns(T.nilable(Sentdm::Models::WebhookUpdateResponse::Data)) }
16
+ attr_reader :data
17
+
18
+ sig do
19
+ params(
20
+ data: T.nilable(Sentdm::Models::WebhookUpdateResponse::Data::OrHash)
21
+ ).void
22
+ end
23
+ attr_writer :data
24
+
25
+ # Error information
26
+ sig { returns(T.nilable(Sentdm::Models::WebhookUpdateResponse::Error)) }
27
+ attr_reader :error
28
+
29
+ sig do
30
+ params(
31
+ error: T.nilable(Sentdm::Models::WebhookUpdateResponse::Error::OrHash)
32
+ ).void
33
+ end
34
+ attr_writer :error
35
+
36
+ # Request and response metadata
37
+ sig { returns(T.nilable(Sentdm::Models::WebhookUpdateResponse::Meta)) }
38
+ attr_reader :meta
39
+
40
+ sig do
41
+ params(meta: Sentdm::Models::WebhookUpdateResponse::Meta::OrHash).void
42
+ end
43
+ attr_writer :meta
44
+
45
+ # Indicates whether the request was successful
46
+ sig { returns(T.nilable(T::Boolean)) }
47
+ attr_reader :success
48
+
49
+ sig { params(success: T::Boolean).void }
50
+ attr_writer :success
51
+
52
+ # Standard API response envelope for all v3 endpoints
53
+ sig do
54
+ params(
55
+ data: T.nilable(Sentdm::Models::WebhookUpdateResponse::Data::OrHash),
56
+ error:
57
+ T.nilable(Sentdm::Models::WebhookUpdateResponse::Error::OrHash),
58
+ meta: Sentdm::Models::WebhookUpdateResponse::Meta::OrHash,
59
+ success: T::Boolean
60
+ ).returns(T.attached_class)
61
+ end
62
+ def self.new(
63
+ # The response data (null if error)
64
+ data: nil,
65
+ # Error information
66
+ error: nil,
67
+ # Request and response metadata
68
+ meta: nil,
69
+ # Indicates whether the request was successful
70
+ success: nil
71
+ )
72
+ end
73
+
74
+ sig do
75
+ override.returns(
76
+ {
77
+ data: T.nilable(Sentdm::Models::WebhookUpdateResponse::Data),
78
+ error: T.nilable(Sentdm::Models::WebhookUpdateResponse::Error),
79
+ meta: Sentdm::Models::WebhookUpdateResponse::Meta,
80
+ success: T::Boolean
81
+ }
82
+ )
83
+ end
84
+ def to_hash
85
+ end
86
+
87
+ class Data < Sentdm::Internal::Type::BaseModel
88
+ OrHash =
89
+ T.type_alias do
90
+ T.any(
91
+ Sentdm::Models::WebhookUpdateResponse::Data,
92
+ Sentdm::Internal::AnyHash
93
+ )
94
+ end
95
+
96
+ sig { returns(T.nilable(String)) }
97
+ attr_reader :id
98
+
99
+ sig { params(id: String).void }
100
+ attr_writer :id
101
+
102
+ sig { returns(T.nilable(Integer)) }
103
+ attr_reader :consecutive_failures
104
+
105
+ sig { params(consecutive_failures: Integer).void }
106
+ attr_writer :consecutive_failures
107
+
108
+ sig { returns(T.nilable(Time)) }
109
+ attr_reader :created_at
110
+
111
+ sig { params(created_at: Time).void }
112
+ attr_writer :created_at
113
+
114
+ # Which customer owns this — the key's own, or the profile named in x-profile-id.
115
+ # Says whose resource this is, which the resource's own id does not.
116
+ sig { returns(T.nilable(String)) }
117
+ attr_reader :customer_id
118
+
119
+ sig { params(customer_id: String).void }
120
+ attr_writer :customer_id
121
+
122
+ sig { returns(T.nilable(String)) }
123
+ attr_reader :display_name
124
+
125
+ sig { params(display_name: String).void }
126
+ attr_writer :display_name
127
+
128
+ sig { returns(T.nilable(String)) }
129
+ attr_reader :endpoint_url
130
+
131
+ sig { params(endpoint_url: String).void }
132
+ attr_writer :endpoint_url
133
+
134
+ sig { returns(T.nilable(T::Hash[Symbol, T::Array[String]])) }
135
+ attr_accessor :event_filters
136
+
137
+ sig { returns(T.nilable(T::Array[String])) }
138
+ attr_reader :event_types
139
+
140
+ sig { params(event_types: T::Array[String]).void }
141
+ attr_writer :event_types
142
+
143
+ sig { returns(T.nilable(T::Boolean)) }
144
+ attr_reader :is_active
145
+
146
+ sig { params(is_active: T::Boolean).void }
147
+ attr_writer :is_active
148
+
149
+ sig { returns(T.nilable(Time)) }
150
+ attr_accessor :last_delivery_attempt_at
151
+
152
+ sig { returns(T.nilable(Time)) }
153
+ attr_accessor :last_successful_delivery_at
154
+
155
+ sig { returns(T.nilable(Integer)) }
156
+ attr_reader :retry_count
157
+
158
+ sig { params(retry_count: Integer).void }
159
+ attr_writer :retry_count
160
+
161
+ sig { returns(T.nilable(String)) }
162
+ attr_accessor :signing_secret
163
+
164
+ sig { returns(T.nilable(Integer)) }
165
+ attr_reader :timeout_seconds
166
+
167
+ sig { params(timeout_seconds: Integer).void }
168
+ attr_writer :timeout_seconds
169
+
170
+ sig { returns(T.nilable(Time)) }
171
+ attr_accessor :updated_at
172
+
173
+ # The response data (null if error)
174
+ sig do
175
+ params(
176
+ id: String,
177
+ consecutive_failures: Integer,
178
+ created_at: Time,
179
+ customer_id: String,
180
+ display_name: String,
181
+ endpoint_url: String,
182
+ event_filters: T.nilable(T::Hash[Symbol, T::Array[String]]),
183
+ event_types: T::Array[String],
184
+ is_active: T::Boolean,
185
+ last_delivery_attempt_at: T.nilable(Time),
186
+ last_successful_delivery_at: T.nilable(Time),
187
+ retry_count: Integer,
188
+ signing_secret: T.nilable(String),
189
+ timeout_seconds: Integer,
190
+ updated_at: T.nilable(Time)
191
+ ).returns(T.attached_class)
192
+ end
193
+ def self.new(
194
+ id: nil,
195
+ consecutive_failures: nil,
196
+ created_at: nil,
197
+ # Which customer owns this — the key's own, or the profile named in x-profile-id.
198
+ # Says whose resource this is, which the resource's own id does not.
199
+ customer_id: nil,
200
+ display_name: nil,
201
+ endpoint_url: nil,
202
+ event_filters: nil,
203
+ event_types: nil,
204
+ is_active: nil,
205
+ last_delivery_attempt_at: nil,
206
+ last_successful_delivery_at: nil,
207
+ retry_count: nil,
208
+ signing_secret: nil,
209
+ timeout_seconds: nil,
210
+ updated_at: nil
211
+ )
212
+ end
213
+
214
+ sig do
215
+ override.returns(
216
+ {
217
+ id: String,
218
+ consecutive_failures: Integer,
219
+ created_at: Time,
220
+ customer_id: String,
221
+ display_name: String,
222
+ endpoint_url: String,
223
+ event_filters: T.nilable(T::Hash[Symbol, T::Array[String]]),
224
+ event_types: T::Array[String],
225
+ is_active: T::Boolean,
226
+ last_delivery_attempt_at: T.nilable(Time),
227
+ last_successful_delivery_at: T.nilable(Time),
228
+ retry_count: Integer,
229
+ signing_secret: T.nilable(String),
230
+ timeout_seconds: Integer,
231
+ updated_at: T.nilable(Time)
232
+ }
233
+ )
234
+ end
235
+ def to_hash
236
+ end
237
+ end
238
+
239
+ class Error < Sentdm::Internal::Type::BaseModel
240
+ OrHash =
241
+ T.type_alias do
242
+ T.any(
243
+ Sentdm::Models::WebhookUpdateResponse::Error,
244
+ Sentdm::Internal::AnyHash
245
+ )
246
+ end
247
+
248
+ # Machine-readable error code (e.g., "RESOURCE_001")
249
+ sig { returns(T.nilable(String)) }
250
+ attr_reader :code
251
+
252
+ sig { params(code: String).void }
253
+ attr_writer :code
254
+
255
+ # Additional validation error details (field-level errors)
256
+ sig { returns(T.nilable(T::Hash[Symbol, T::Array[String]])) }
257
+ attr_accessor :details
258
+
259
+ # URL to documentation about this error
260
+ sig { returns(T.nilable(String)) }
261
+ attr_accessor :doc_url
262
+
263
+ # Human-readable error message
264
+ sig { returns(T.nilable(String)) }
265
+ attr_reader :message
266
+
267
+ sig { params(message: String).void }
268
+ attr_writer :message
269
+
270
+ # Error information
271
+ sig do
272
+ params(
273
+ code: String,
274
+ details: T.nilable(T::Hash[Symbol, T::Array[String]]),
275
+ doc_url: T.nilable(String),
276
+ message: String
277
+ ).returns(T.attached_class)
278
+ end
279
+ def self.new(
280
+ # Machine-readable error code (e.g., "RESOURCE_001")
281
+ code: nil,
282
+ # Additional validation error details (field-level errors)
283
+ details: nil,
284
+ # URL to documentation about this error
285
+ doc_url: nil,
286
+ # Human-readable error message
287
+ message: nil
288
+ )
289
+ end
290
+
291
+ sig do
292
+ override.returns(
293
+ {
294
+ code: String,
295
+ details: T.nilable(T::Hash[Symbol, T::Array[String]]),
296
+ doc_url: T.nilable(String),
297
+ message: String
298
+ }
299
+ )
300
+ end
301
+ def to_hash
302
+ end
303
+ end
304
+
305
+ class Meta < Sentdm::Internal::Type::BaseModel
306
+ OrHash =
307
+ T.type_alias do
308
+ T.any(
309
+ Sentdm::Models::WebhookUpdateResponse::Meta,
310
+ Sentdm::Internal::AnyHash
311
+ )
312
+ end
313
+
314
+ # Unique identifier for this request (for tracing and support)
315
+ sig { returns(T.nilable(String)) }
316
+ attr_reader :request_id
317
+
318
+ sig { params(request_id: String).void }
319
+ attr_writer :request_id
320
+
321
+ # Server timestamp when the response was generated
322
+ sig { returns(T.nilable(Time)) }
323
+ attr_reader :timestamp
324
+
325
+ sig { params(timestamp: Time).void }
326
+ attr_writer :timestamp
327
+
328
+ # API version used for this request
329
+ sig { returns(T.nilable(String)) }
330
+ attr_reader :version
331
+
332
+ sig { params(version: String).void }
333
+ attr_writer :version
334
+
335
+ # Request and response metadata
336
+ sig do
337
+ params(request_id: String, timestamp: Time, version: String).returns(
338
+ T.attached_class
339
+ )
340
+ end
341
+ def self.new(
342
+ # Unique identifier for this request (for tracing and support)
343
+ request_id: nil,
344
+ # Server timestamp when the response was generated
345
+ timestamp: nil,
346
+ # API version used for this request
347
+ version: nil
348
+ )
349
+ end
350
+
351
+ sig do
352
+ override.returns(
353
+ { request_id: String, timestamp: Time, version: String }
354
+ )
355
+ end
356
+ def to_hash
357
+ end
358
+ end
359
+ end
360
+ end
361
+ end
@@ -1,46 +1,14 @@
1
1
  # typed: strong
2
2
 
3
3
  module Sentdm
4
- APIMeta = Sentdm::Models::APIMeta
5
-
6
- APIResponseOfContact = Sentdm::Models::APIResponseOfContact
7
-
8
- APIResponseOfContactMessageSummary =
9
- Sentdm::Models::APIResponseOfContactMessageSummary
10
-
11
- APIResponseOfConversationMessagesList =
12
- Sentdm::Models::APIResponseOfConversationMessagesList
13
-
14
- APIResponseOfProfileDetail = Sentdm::Models::APIResponseOfProfileDetail
15
-
16
- APIResponseOfUser = Sentdm::Models::APIResponseOfUser
17
-
18
- APIResponseTemplate = Sentdm::Models::APIResponseTemplate
19
-
20
- APIResponseWebhook = Sentdm::Models::APIResponseWebhook
21
-
22
4
  AuthenticationConfig = Sentdm::Models::AuthenticationConfig
23
5
 
24
- BillingContactInfo = Sentdm::Models::BillingContactInfo
25
-
26
- BrandBusinessInfo = Sentdm::Models::BrandBusinessInfo
27
-
28
- BrandComplianceInfo = Sentdm::Models::BrandComplianceInfo
29
-
30
- BrandContactInfo = Sentdm::Models::BrandContactInfo
31
-
32
- BrandsBrandData = Sentdm::Models::BrandsBrandData
33
-
34
6
  ContactCreateParams = Sentdm::Models::ContactCreateParams
35
7
 
36
8
  ContactDeleteParams = Sentdm::Models::ContactDeleteParams
37
9
 
38
10
  ContactListParams = Sentdm::Models::ContactListParams
39
11
 
40
- ContactMessageSummary = Sentdm::Models::ContactMessageSummary
41
-
42
- ContactResponse = Sentdm::Models::ContactResponse
43
-
44
12
  ContactRetrieveMessageSummaryParams =
45
13
  Sentdm::Models::ContactRetrieveMessageSummaryParams
46
14
 
@@ -53,14 +21,18 @@ module Sentdm
53
21
 
54
22
  ConversationListParams = Sentdm::Models::ConversationListParams
55
23
 
56
- ConversationMessagesList = Sentdm::Models::ConversationMessagesList
57
-
58
24
  DestinationCountry = Sentdm::Models::DestinationCountry
59
25
 
60
- ErrorDetail = Sentdm::Models::ErrorDetail
26
+ InboundMessageEvent = Sentdm::Models::InboundMessageEvent
27
+
28
+ InboundMessageEventPayload = Sentdm::Models::InboundMessageEventPayload
61
29
 
62
30
  MeRetrieveParams = Sentdm::Models::MeRetrieveParams
63
31
 
32
+ MessageEvent = Sentdm::Models::MessageEvent
33
+
34
+ MessageEventPayload = Sentdm::Models::MessageEventPayload
35
+
64
36
  MessageRetrieveActivitiesParams =
65
37
  Sentdm::Models::MessageRetrieveActivitiesParams
66
38
 
@@ -68,38 +40,26 @@ module Sentdm
68
40
 
69
41
  MessageSendParams = Sentdm::Models::MessageSendParams
70
42
 
71
- MutationRequest = Sentdm::Models::MutationRequest
72
-
73
43
  NumberLookupParams = Sentdm::Models::NumberLookupParams
74
44
 
75
- PaginationMeta = Sentdm::Models::PaginationMeta
76
-
77
- PaymentDetails = Sentdm::Models::PaymentDetails
78
-
79
45
  ProfileCompleteParams = Sentdm::Models::ProfileCompleteParams
80
46
 
81
47
  ProfileCreateParams = Sentdm::Models::ProfileCreateParams
82
48
 
83
49
  ProfileDeleteParams = Sentdm::Models::ProfileDeleteParams
84
50
 
85
- ProfileDetail = Sentdm::Models::ProfileDetail
86
-
87
51
  ProfileListParams = Sentdm::Models::ProfileListParams
88
52
 
89
53
  ProfileRetrieveParams = Sentdm::Models::ProfileRetrieveParams
90
54
 
91
55
  Profiles = Sentdm::Models::Profiles
92
56
 
93
- ProfileSettings = Sentdm::Models::ProfileSettings
94
-
95
57
  ProfileUpdateParams = Sentdm::Models::ProfileUpdateParams
96
58
 
97
59
  TcrBrandRelationship = Sentdm::Models::TcrBrandRelationship
98
60
 
99
61
  TcrVertical = Sentdm::Models::TcrVertical
100
62
 
101
- Template = Sentdm::Models::Template
102
-
103
63
  TemplateBody = Sentdm::Models::TemplateBody
104
64
 
105
65
  TemplateBodyContent = Sentdm::Models::TemplateBodyContent
@@ -114,6 +74,10 @@ module Sentdm
114
74
 
115
75
  TemplateDeleteParams = Sentdm::Models::TemplateDeleteParams
116
76
 
77
+ TemplateEvent = Sentdm::Models::TemplateEvent
78
+
79
+ TemplateEventPayload = Sentdm::Models::TemplateEventPayload
80
+
117
81
  TemplateFooter = Sentdm::Models::TemplateFooter
118
82
 
119
83
  TemplateHeader = Sentdm::Models::TemplateHeader
@@ -132,8 +96,6 @@ module Sentdm
132
96
 
133
97
  UserRemoveParams = Sentdm::Models::UserRemoveParams
134
98
 
135
- UserResponse = Sentdm::Models::UserResponse
136
-
137
99
  UserRetrieveParams = Sentdm::Models::UserRetrieveParams
138
100
 
139
101
  UserUpdateRoleParams = Sentdm::Models::UserUpdateRoleParams
@@ -142,16 +104,12 @@ module Sentdm
142
104
 
143
105
  WebhookDeleteParams = Sentdm::Models::WebhookDeleteParams
144
106
 
145
- WebhookEventType = Sentdm::Models::WebhookEventType
146
-
147
107
  WebhookListEventsParams = Sentdm::Models::WebhookListEventsParams
148
108
 
149
109
  WebhookListEventTypesParams = Sentdm::Models::WebhookListEventTypesParams
150
110
 
151
111
  WebhookListParams = Sentdm::Models::WebhookListParams
152
112
 
153
- WebhookResponse = Sentdm::Models::WebhookResponse
154
-
155
113
  WebhookRetrieveParams = Sentdm::Models::WebhookRetrieveParams
156
114
 
157
115
  WebhookRotateSecretParams = Sentdm::Models::WebhookRotateSecretParams
@@ -2,7 +2,15 @@
2
2
 
3
3
  module Sentdm
4
4
  module Resources
5
- # Create, update, and manage customer contact lists
5
+ # The people you message, and their channel identities.
6
+ #
7
+ # A contact holds one identity per channel — a phone number, a WhatsApp number —
8
+ # so routing can choose between them for the same person. Opt-out is recorded
9
+ # against the contact and honoured on every send, whichever channel it came
10
+ # through.
11
+ #
12
+ # `GET /v3/contacts/{id}/message-summary` is the per-contact view of what you have
13
+ # sent and what happened to it.
6
14
  class Contacts
7
15
  # Creates a new contact by phone number and associates it with the authenticated
8
16
  # customer.
@@ -13,7 +21,7 @@ module Sentdm
13
21
  idempotency_key: String,
14
22
  x_profile_id: String,
15
23
  request_options: Sentdm::RequestOptions::OrHash
16
- ).returns(Sentdm::APIResponseOfContact)
24
+ ).returns(Sentdm::Models::ContactCreateResponse)
17
25
  end
18
26
  def create(
19
27
  # Body param: Phone number of the contact to create
@@ -41,7 +49,7 @@ module Sentdm
41
49
  id: String,
42
50
  x_profile_id: String,
43
51
  request_options: Sentdm::RequestOptions::OrHash
44
- ).returns(Sentdm::APIResponseOfContact)
52
+ ).returns(Sentdm::Models::ContactRetrieveResponse)
45
53
  end
46
54
  def retrieve(
47
55
  # Contact ID from route parameter
@@ -53,8 +61,7 @@ module Sentdm
53
61
  )
54
62
  end
55
63
 
56
- # Updates a contact's default channel and/or opt-out status. Inherited contacts
57
- # cannot be updated.
64
+ # Updates a contact's default channel and/or opt-out status.
58
65
  sig do
59
66
  params(
60
67
  id: String,
@@ -64,7 +71,7 @@ module Sentdm
64
71
  idempotency_key: String,
65
72
  x_profile_id: String,
66
73
  request_options: Sentdm::RequestOptions::OrHash
67
- ).returns(Sentdm::APIResponseOfContact)
74
+ ).returns(Sentdm::Models::ContactUpdateResponse)
68
75
  end
69
76
  def update(
70
77
  # Path param: Contact ID from route parameter
@@ -121,8 +128,16 @@ module Sentdm
121
128
  )
122
129
  end
123
130
 
124
- # Dissociates a contact from the authenticated customer. Inherited contacts cannot
125
- # be deleted.
131
+ # **Deprecated.** Use `PATCH /v3/contacts/{id}` with `{"opt_out": true}` instead,
132
+ # and expect this to be removed in a future release. It still behaves exactly as
133
+ # before, so nothing needs to change today.
134
+ #
135
+ # Opting a contact out stops every send to them, which is what deleting one was
136
+ # mostly used for — and it keeps the record of who they were and that they asked.
137
+ # A delete discards the consent history along with the contact, which is the part
138
+ # you need if anyone ever asks why you stopped, or why you started again.
139
+ #
140
+ # Dissociates a contact from the authenticated customer.
126
141
  sig do
127
142
  params(
128
143
  id: String,
@@ -154,7 +169,7 @@ module Sentdm
154
169
  contact_id: String,
155
170
  x_profile_id: String,
156
171
  request_options: Sentdm::RequestOptions::OrHash
157
- ).returns(Sentdm::APIResponseOfContactMessageSummary)
172
+ ).returns(Sentdm::Models::ContactRetrieveMessageSummaryResponse)
158
173
  end
159
174
  def retrieve_message_summary(
160
175
  contact_id,
@@ -2,6 +2,14 @@
2
2
 
3
3
  module Sentdm
4
4
  module Resources
5
+ # Inbound and outbound messages, grouped by the person they are with.
6
+ #
7
+ # A conversation is the thread for one contact across every channel — a reply by
8
+ # SMS and one by WhatsApp belong to the same conversation, because they are the
9
+ # same person talking to you.
10
+ #
11
+ # Read-only. Sending is **Messages**; a reply arrives here and through your
12
+ # webhooks.
5
13
  class Conversations
6
14
  # Retrieves a paginated list of the authenticated customer's messages across all
7
15
  # conversations, ordered by created date (most recent first).
@@ -11,7 +19,7 @@ module Sentdm
11
19
  page_size: Integer,
12
20
  x_profile_id: String,
13
21
  request_options: Sentdm::RequestOptions::OrHash
14
- ).returns(Sentdm::APIResponseOfConversationMessagesList)
22
+ ).returns(Sentdm::Models::ConversationListResponse)
15
23
  end
16
24
  def list(
17
25
  # Query param
@@ -35,7 +43,7 @@ module Sentdm
35
43
  page_size: Integer,
36
44
  x_profile_id: String,
37
45
  request_options: Sentdm::RequestOptions::OrHash
38
- ).returns(Sentdm::APIResponseOfConversationMessagesList)
46
+ ).returns(Sentdm::Models::ConversationListMessagesResponse)
39
47
  end
40
48
  def list_messages(
41
49
  # Path param: Conversation id from the route.
@@ -2,7 +2,12 @@
2
2
 
3
3
  module Sentdm
4
4
  module Resources
5
- # Retrieve account details
5
+ # Who the current key is.
6
+ #
7
+ # `GET /v3/me` answers with the account the key authenticates as, which is the
8
+ # quickest way to tell a live key from a test one, an organization key from a
9
+ # sender profile's, and to confirm `x-profile-id` resolved to the profile you
10
+ # meant.
6
11
  class Me
7
12
  # Returns the account associated with the provided API key. The response includes
8
13
  # account identity, contact information, messaging channel configuration, and —
@@ -2,7 +2,17 @@
2
2
 
3
3
  module Sentdm
4
4
  module Resources
5
- # Send and track SMS and WhatsApp messages
5
+ # Send a message and follow what happened to it.
6
+ #
7
+ # One endpoint sends on any channel: pass `channel: "sent"` and we pick between
8
+ # SMS, WhatsApp and RCS per recipient using your routing rules, or name a channel
9
+ # to pin it. A send is accepted asynchronously — `POST /v3/messages` returns an
10
+ # id, and delivery is reported through `GET /v3/messages/{id}`, its activities, or
11
+ # a webhook.
12
+ #
13
+ # **A message needs a sender.** What you can send, where, and at what cost is
14
+ # decided by the markets under **Channels** — so a recipient in a country you hold
15
+ # no sender for is refused here rather than queued.
6
16
  class Messages
7
17
  # Retrieves the activity log for a specific message. Activities track the message
8
18
  # lifecycle including acceptance, processing, sending, delivery, and any errors.
@@ -46,10 +56,12 @@ module Sentdm
46
56
  # multi-channel broadcast — when multiple channels are specified (e.g. ["sms",
47
57
  # "whatsapp"]), a separate message is created for each (recipient, channel) pair.
48
58
  # Returns immediately with per-recipient message IDs for async tracking via
49
- # webhooks or the GET /messages/{id} endpoint. Account-level preconditions such as
50
- # insufficient balance do not reject the request: the send is accepted with 202
51
- # and the affected messages are reported as BLOCKED on GET /messages/{id} and the
52
- # message status webhook.
59
+ # webhooks or the GET /messages/{id} endpoint. Sends gated before any delivery
60
+ # attempt do not reject the request an account-level precondition such as
61
+ # insufficient balance, a template not approved for sending, or free-form content
62
+ # with no open conversation with the contact. The send is accepted with 202 and
63
+ # the affected messages are reported as BLOCKED on GET /messages/{id} and the
64
+ # message.blocked webhook.
53
65
  sig do
54
66
  params(
55
67
  channel: T.nilable(T::Array[String]),
@@ -2,7 +2,12 @@
2
2
 
3
3
  module Sentdm
4
4
  module Resources
5
- # Manage and lookup phone numbers
5
+ # What a phone number actually is, before you send to it.
6
+ #
7
+ # A lookup returns the number's country, line type and carrier, which is what
8
+ # decides whether it is reachable on a channel and what it costs. Worth doing on
9
+ # import rather than on send: a landline in a contact list is a message that can
10
+ # never be delivered.
6
11
  class Numbers
7
12
  # Retrieves detailed information about a phone number including carrier, line
8
13
  # type, porting status, and VoIP detection. Uses the customer's messaging provider