sentdm 0.28.0 → 0.30.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 (276) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +19 -0
  3. data/README.md +27 -1
  4. data/lib/sentdm/internal/type/base_model.rb +5 -5
  5. data/lib/sentdm/models/api_meta.rb +34 -0
  6. data/lib/sentdm/models/api_response_of_contact.rb +46 -0
  7. data/lib/sentdm/models/api_response_of_contact_message_summary.rb +43 -0
  8. data/lib/sentdm/models/api_response_of_conversation_messages_list.rb +43 -0
  9. data/lib/sentdm/models/api_response_of_profile_detail.rb +43 -0
  10. data/lib/sentdm/models/api_response_of_user.rb +43 -0
  11. data/lib/sentdm/models/api_response_template.rb +43 -0
  12. data/lib/sentdm/models/api_response_webhook.rb +43 -0
  13. data/lib/sentdm/models/billing_contact_info.rb +47 -0
  14. data/lib/sentdm/models/brand_business_info.rb +114 -0
  15. data/lib/sentdm/models/brand_compliance_info.rb +59 -0
  16. data/lib/sentdm/models/brand_contact_info.rb +58 -0
  17. data/lib/sentdm/models/brands_brand_data.rb +34 -0
  18. data/lib/sentdm/models/contact_delete_params.rb +2 -16
  19. data/lib/sentdm/models/contact_list_response.rb +12 -295
  20. data/lib/sentdm/models/contact_message_summary.rb +76 -0
  21. data/lib/sentdm/models/contact_response.rb +139 -0
  22. data/lib/sentdm/models/conversation_messages_list.rb +245 -0
  23. data/lib/sentdm/models/error_detail.rb +42 -0
  24. data/lib/sentdm/models/inbound_message_event_payload.rb +17 -17
  25. data/lib/sentdm/models/me_retrieve_response.rb +43 -243
  26. data/lib/sentdm/models/message_event_payload.rb +11 -11
  27. data/lib/sentdm/models/message_retrieve_activities_response.rb +9 -159
  28. data/lib/sentdm/models/message_retrieve_status_response.rb +6 -74
  29. data/lib/sentdm/models/message_send_response.rb +6 -74
  30. data/lib/sentdm/models/mutation_request.rb +20 -0
  31. data/lib/sentdm/models/number_lookup_response.rb +6 -74
  32. data/lib/sentdm/models/pagination_meta.rb +84 -0
  33. data/lib/sentdm/models/payment_details.rb +40 -0
  34. data/lib/sentdm/models/profile_complete_response.rb +6 -74
  35. data/lib/sentdm/models/profile_create_params.rb +9 -345
  36. data/lib/sentdm/models/profile_delete_params.rb +2 -16
  37. data/lib/sentdm/models/profile_detail.rb +650 -0
  38. data/lib/sentdm/models/profile_list_response.rb +12 -815
  39. data/lib/sentdm/models/profile_settings.rb +85 -0
  40. data/lib/sentdm/models/profile_update_params.rb +9 -345
  41. data/lib/sentdm/models/profiles/api_response_of_brand_campaign.rb +45 -0
  42. data/lib/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rb +45 -0
  43. data/lib/sentdm/models/profiles/brand_campaign.rb +247 -0
  44. data/lib/sentdm/models/profiles/campaign_create_params.rb +3 -156
  45. data/lib/sentdm/models/profiles/campaign_data.rb +136 -0
  46. data/lib/sentdm/models/profiles/campaign_delete_params.rb +2 -17
  47. data/lib/sentdm/models/profiles/campaign_update_params.rb +3 -156
  48. data/lib/sentdm/models/profiles/campaign_use_case.rb +71 -0
  49. data/lib/sentdm/models/profiles/campaign_use_case_data.rb +29 -0
  50. data/lib/sentdm/models/template.rb +102 -0
  51. data/lib/sentdm/models/template_event_payload.rb +18 -18
  52. data/lib/sentdm/models/template_list_response.rb +12 -258
  53. data/lib/sentdm/models/user_list_response.rb +12 -249
  54. data/lib/sentdm/models/user_remove_params.rb +2 -16
  55. data/lib/sentdm/models/user_response.rb +94 -0
  56. data/lib/sentdm/models/webhook_event_type.rb +45 -0
  57. data/lib/sentdm/models/webhook_list_event_types_response.rb +12 -203
  58. data/lib/sentdm/models/webhook_list_events_response.rb +9 -157
  59. data/lib/sentdm/models/webhook_list_response.rb +12 -276
  60. data/lib/sentdm/models/webhook_response.rb +120 -0
  61. data/lib/sentdm/models/webhook_rotate_secret_params.rb +2 -17
  62. data/lib/sentdm/models/webhook_rotate_secret_response.rb +6 -74
  63. data/lib/sentdm/models/webhook_test_response.rb +6 -74
  64. data/lib/sentdm/models.rb +52 -0
  65. data/lib/sentdm/resources/contacts.rb +8 -8
  66. data/lib/sentdm/resources/conversations.rb +4 -4
  67. data/lib/sentdm/resources/me.rb +11 -0
  68. data/lib/sentdm/resources/profiles/campaigns.rb +8 -8
  69. data/lib/sentdm/resources/profiles.rb +12 -12
  70. data/lib/sentdm/resources/templates.rb +6 -6
  71. data/lib/sentdm/resources/users.rb +6 -6
  72. data/lib/sentdm/resources/webhooks.rb +8 -8
  73. data/lib/sentdm/version.rb +1 -1
  74. data/lib/sentdm.rb +32 -22
  75. data/rbi/sentdm/models/api_meta.rbi +55 -0
  76. data/rbi/sentdm/models/api_response_of_contact.rbi +74 -0
  77. data/rbi/sentdm/models/api_response_of_contact_message_summary.rbi +79 -0
  78. data/rbi/sentdm/models/api_response_of_conversation_messages_list.rbi +79 -0
  79. data/rbi/sentdm/models/api_response_of_profile_detail.rbi +74 -0
  80. data/rbi/sentdm/models/api_response_of_user.rbi +74 -0
  81. data/rbi/sentdm/models/api_response_template.rbi +74 -0
  82. data/rbi/sentdm/models/api_response_webhook.rbi +74 -0
  83. data/rbi/sentdm/models/billing_contact_info.rbi +65 -0
  84. data/rbi/sentdm/models/brand_business_info.rbi +162 -0
  85. data/rbi/sentdm/models/brand_compliance_info.rbi +76 -0
  86. data/rbi/sentdm/models/brand_contact_info.rbi +78 -0
  87. data/rbi/sentdm/models/brands_brand_data.rbi +65 -0
  88. data/rbi/sentdm/models/contact_delete_params.rbi +2 -19
  89. data/rbi/sentdm/models/contact_list_response.rbi +16 -522
  90. data/rbi/sentdm/models/contact_message_summary.rbi +144 -0
  91. data/rbi/sentdm/models/contact_response.rbi +200 -0
  92. data/rbi/sentdm/models/conversation_messages_list.rbi +419 -0
  93. data/rbi/sentdm/models/error_detail.rbi +66 -0
  94. data/rbi/sentdm/models/inbound_message_event_payload.rbi +16 -22
  95. data/rbi/sentdm/models/me_retrieve_response.rbi +60 -367
  96. data/rbi/sentdm/models/message_event_payload.rbi +12 -15
  97. data/rbi/sentdm/models/message_retrieve_activities_response.rbi +12 -325
  98. data/rbi/sentdm/models/message_retrieve_status_response.rbi +8 -148
  99. data/rbi/sentdm/models/message_send_response.rbi +8 -135
  100. data/rbi/sentdm/models/mutation_request.rbi +32 -0
  101. data/rbi/sentdm/models/number_lookup_response.rbi +8 -135
  102. data/rbi/sentdm/models/pagination_meta.rbi +135 -0
  103. data/rbi/sentdm/models/payment_details.rbi +56 -0
  104. data/rbi/sentdm/models/profile_complete_response.rbi +8 -137
  105. data/rbi/sentdm/models/profile_create_params.rbi +12 -546
  106. data/rbi/sentdm/models/profile_delete_params.rbi +2 -19
  107. data/rbi/sentdm/models/profile_detail.rbi +918 -0
  108. data/rbi/sentdm/models/profile_list_response.rbi +16 -1347
  109. data/rbi/sentdm/models/profile_settings.rbi +102 -0
  110. data/rbi/sentdm/models/profile_update_params.rbi +12 -546
  111. data/rbi/sentdm/models/profiles/api_response_of_brand_campaign.rbi +81 -0
  112. data/rbi/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rbi +76 -0
  113. data/rbi/sentdm/models/profiles/brand_campaign.rbi +299 -0
  114. data/rbi/sentdm/models/profiles/campaign_create_params.rbi +4 -218
  115. data/rbi/sentdm/models/profiles/campaign_data.rbi +158 -0
  116. data/rbi/sentdm/models/profiles/campaign_delete_params.rbi +1 -14
  117. data/rbi/sentdm/models/profiles/campaign_update_params.rbi +4 -218
  118. data/rbi/sentdm/models/profiles/campaign_use_case.rbi +110 -0
  119. data/rbi/sentdm/models/profiles/campaign_use_case_data.rbi +51 -0
  120. data/rbi/sentdm/models/template.rbi +139 -0
  121. data/rbi/sentdm/models/template_event_payload.rbi +21 -27
  122. data/rbi/sentdm/models/template_list_response.rbi +16 -464
  123. data/rbi/sentdm/models/user_list_response.rbi +16 -444
  124. data/rbi/sentdm/models/user_remove_params.rbi +2 -19
  125. data/rbi/sentdm/models/user_response.rbi +131 -0
  126. data/rbi/sentdm/models/webhook_event_type.rbi +74 -0
  127. data/rbi/sentdm/models/webhook_list_event_types_response.rbi +16 -414
  128. data/rbi/sentdm/models/webhook_list_events_response.rbi +12 -314
  129. data/rbi/sentdm/models/webhook_list_response.rbi +16 -475
  130. data/rbi/sentdm/models/webhook_response.rbi +153 -0
  131. data/rbi/sentdm/models/webhook_rotate_secret_params.rbi +1 -14
  132. data/rbi/sentdm/models/webhook_rotate_secret_response.rbi +8 -148
  133. data/rbi/sentdm/models/webhook_test_response.rbi +8 -135
  134. data/rbi/sentdm/models.rbi +54 -0
  135. data/rbi/sentdm/resources/contacts.rbi +4 -4
  136. data/rbi/sentdm/resources/conversations.rbi +2 -2
  137. data/rbi/sentdm/resources/me.rbi +11 -0
  138. data/rbi/sentdm/resources/profiles/campaigns.rbi +5 -5
  139. data/rbi/sentdm/resources/profiles.rbi +9 -13
  140. data/rbi/sentdm/resources/templates.rbi +3 -3
  141. data/rbi/sentdm/resources/users.rbi +3 -3
  142. data/rbi/sentdm/resources/webhooks.rbi +4 -4
  143. data/sig/sentdm/models/api_meta.rbs +27 -0
  144. data/sig/sentdm/models/api_response_of_contact.rbs +39 -0
  145. data/sig/sentdm/models/api_response_of_contact_message_summary.rbs +39 -0
  146. data/sig/sentdm/models/api_response_of_conversation_messages_list.rbs +39 -0
  147. data/sig/sentdm/models/api_response_of_profile_detail.rbs +39 -0
  148. data/sig/sentdm/models/api_response_of_user.rbs +39 -0
  149. data/sig/sentdm/models/api_response_template.rbs +39 -0
  150. data/sig/sentdm/models/api_response_webhook.rbs +39 -0
  151. data/sig/sentdm/models/billing_contact_info.rbs +30 -0
  152. data/sig/sentdm/models/brand_business_info.rbs +89 -0
  153. data/sig/sentdm/models/brand_compliance_info.rbs +45 -0
  154. data/sig/sentdm/models/brand_contact_info.rbs +45 -0
  155. data/sig/sentdm/models/brands_brand_data.rbs +30 -0
  156. data/sig/sentdm/models/contact_delete_params.rbs +6 -10
  157. data/sig/sentdm/models/contact_list_response.rbs +20 -263
  158. data/sig/sentdm/models/contact_message_summary.rbs +84 -0
  159. data/sig/sentdm/models/contact_response.rbs +118 -0
  160. data/sig/sentdm/models/conversation_messages_list.rbs +240 -0
  161. data/sig/sentdm/models/error_detail.rbs +39 -0
  162. data/sig/sentdm/models/inbound_message_event_payload.rbs +10 -14
  163. data/sig/sentdm/models/me_retrieve_response.rbs +28 -176
  164. data/sig/sentdm/models/message_event_payload.rbs +5 -7
  165. data/sig/sentdm/models/message_retrieve_activities_response.rbs +14 -142
  166. data/sig/sentdm/models/message_retrieve_status_response.rbs +9 -71
  167. data/sig/sentdm/models/message_send_response.rbs +9 -71
  168. data/sig/sentdm/models/mutation_request.rbs +15 -0
  169. data/sig/sentdm/models/number_lookup_response.rbs +9 -71
  170. data/sig/sentdm/models/pagination_meta.rbs +67 -0
  171. data/sig/sentdm/models/payment_details.rbs +30 -0
  172. data/sig/sentdm/models/profile_complete_response.rbs +9 -71
  173. data/sig/sentdm/models/profile_create_params.rbs +12 -263
  174. data/sig/sentdm/models/profile_delete_params.rbs +6 -10
  175. data/sig/sentdm/models/profile_detail.rbs +461 -0
  176. data/sig/sentdm/models/profile_list_response.rbs +20 -606
  177. data/sig/sentdm/models/profile_settings.rbs +50 -0
  178. data/sig/sentdm/models/profile_update_params.rbs +12 -263
  179. data/sig/sentdm/models/profiles/api_response_of_brand_campaign.rbs +41 -0
  180. data/sig/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rbs +41 -0
  181. data/sig/sentdm/models/profiles/brand_campaign.rbs +194 -0
  182. data/sig/sentdm/models/profiles/campaign_create_params.rbs +4 -108
  183. data/sig/sentdm/models/profiles/campaign_data.rbs +87 -0
  184. data/sig/sentdm/models/profiles/campaign_delete_params.rbs +8 -15
  185. data/sig/sentdm/models/profiles/campaign_update_params.rbs +4 -108
  186. data/sig/sentdm/models/profiles/campaign_use_case.rbs +66 -0
  187. data/sig/sentdm/models/profiles/campaign_use_case_data.rbs +27 -0
  188. data/sig/sentdm/models/template.rbs +84 -0
  189. data/sig/sentdm/models/template_event_payload.rbs +13 -17
  190. data/sig/sentdm/models/template_list_response.rbs +19 -230
  191. data/sig/sentdm/models/user_list_response.rbs +20 -224
  192. data/sig/sentdm/models/user_remove_params.rbs +6 -10
  193. data/sig/sentdm/models/user_response.rbs +79 -0
  194. data/sig/sentdm/models/webhook_event_type.rbs +51 -0
  195. data/sig/sentdm/models/webhook_list_event_types_response.rbs +20 -196
  196. data/sig/sentdm/models/webhook_list_events_response.rbs +14 -142
  197. data/sig/sentdm/models/webhook_list_response.rbs +20 -255
  198. data/sig/sentdm/models/webhook_response.rbs +110 -0
  199. data/sig/sentdm/models/webhook_rotate_secret_params.rbs +8 -17
  200. data/sig/sentdm/models/webhook_rotate_secret_response.rbs +9 -71
  201. data/sig/sentdm/models/webhook_test_response.rbs +9 -71
  202. data/sig/sentdm/models.rbs +52 -0
  203. data/sig/sentdm/resources/contacts.rbs +4 -4
  204. data/sig/sentdm/resources/conversations.rbs +2 -2
  205. data/sig/sentdm/resources/profiles/campaigns.rbs +5 -5
  206. data/sig/sentdm/resources/profiles.rbs +9 -9
  207. data/sig/sentdm/resources/templates.rbs +3 -3
  208. data/sig/sentdm/resources/users.rbs +3 -3
  209. data/sig/sentdm/resources/webhooks.rbs +4 -4
  210. metadata +98 -68
  211. data/lib/sentdm/models/contact_create_response.rb +0 -249
  212. data/lib/sentdm/models/contact_retrieve_message_summary_response.rb +0 -186
  213. data/lib/sentdm/models/contact_retrieve_response.rb +0 -249
  214. data/lib/sentdm/models/contact_update_response.rb +0 -249
  215. data/lib/sentdm/models/conversation_list_messages_response.rb +0 -436
  216. data/lib/sentdm/models/conversation_list_response.rb +0 -433
  217. data/lib/sentdm/models/profile_create_response.rb +0 -760
  218. data/lib/sentdm/models/profile_retrieve_response.rb +0 -762
  219. data/lib/sentdm/models/profile_update_response.rb +0 -760
  220. data/lib/sentdm/models/profiles/campaign_create_response.rb +0 -420
  221. data/lib/sentdm/models/profiles/campaign_list_response.rb +0 -421
  222. data/lib/sentdm/models/profiles/campaign_update_response.rb +0 -420
  223. data/lib/sentdm/models/template_create_response.rb +0 -209
  224. data/lib/sentdm/models/template_retrieve_response.rb +0 -209
  225. data/lib/sentdm/models/template_update_response.rb +0 -209
  226. data/lib/sentdm/models/user_invite_response.rb +0 -201
  227. data/lib/sentdm/models/user_retrieve_response.rb +0 -201
  228. data/lib/sentdm/models/user_update_role_response.rb +0 -201
  229. data/lib/sentdm/models/webhook_create_response.rb +0 -229
  230. data/lib/sentdm/models/webhook_retrieve_response.rb +0 -229
  231. data/lib/sentdm/models/webhook_toggle_status_response.rb +0 -229
  232. data/lib/sentdm/models/webhook_update_response.rb +0 -229
  233. data/rbi/sentdm/models/contact_create_response.rbi +0 -407
  234. data/rbi/sentdm/models/contact_retrieve_message_summary_response.rbi +0 -397
  235. data/rbi/sentdm/models/contact_retrieve_response.rbi +0 -409
  236. data/rbi/sentdm/models/contact_update_response.rbi +0 -407
  237. data/rbi/sentdm/models/conversation_list_messages_response.rbi +0 -843
  238. data/rbi/sentdm/models/conversation_list_response.rbi +0 -819
  239. data/rbi/sentdm/models/profile_create_response.rbi +0 -1226
  240. data/rbi/sentdm/models/profile_retrieve_response.rbi +0 -1230
  241. data/rbi/sentdm/models/profile_update_response.rbi +0 -1226
  242. data/rbi/sentdm/models/profiles/campaign_create_response.rbi +0 -674
  243. data/rbi/sentdm/models/profiles/campaign_list_response.rbi +0 -667
  244. data/rbi/sentdm/models/profiles/campaign_update_response.rbi +0 -674
  245. data/rbi/sentdm/models/template_create_response.rbi +0 -349
  246. data/rbi/sentdm/models/template_retrieve_response.rbi +0 -355
  247. data/rbi/sentdm/models/template_update_response.rbi +0 -349
  248. data/rbi/sentdm/models/user_invite_response.rbi +0 -336
  249. data/rbi/sentdm/models/user_retrieve_response.rbi +0 -336
  250. data/rbi/sentdm/models/user_update_role_response.rbi +0 -341
  251. data/rbi/sentdm/models/webhook_create_response.rbi +0 -361
  252. data/rbi/sentdm/models/webhook_retrieve_response.rbi +0 -363
  253. data/rbi/sentdm/models/webhook_toggle_status_response.rbi +0 -379
  254. data/rbi/sentdm/models/webhook_update_response.rbi +0 -361
  255. data/sig/sentdm/models/contact_create_response.rbs +0 -216
  256. data/sig/sentdm/models/contact_retrieve_message_summary_response.rbs +0 -182
  257. data/sig/sentdm/models/contact_retrieve_response.rbs +0 -216
  258. data/sig/sentdm/models/contact_update_response.rbs +0 -216
  259. data/sig/sentdm/models/conversation_list_messages_response.rbs +0 -404
  260. data/sig/sentdm/models/conversation_list_response.rbs +0 -404
  261. data/sig/sentdm/models/profile_create_response.rbs +0 -559
  262. data/sig/sentdm/models/profile_retrieve_response.rbs +0 -559
  263. data/sig/sentdm/models/profile_update_response.rbs +0 -559
  264. data/sig/sentdm/models/profiles/campaign_create_response.rbs +0 -357
  265. data/sig/sentdm/models/profiles/campaign_list_response.rbs +0 -357
  266. data/sig/sentdm/models/profiles/campaign_update_response.rbs +0 -357
  267. data/sig/sentdm/models/template_create_response.rbs +0 -182
  268. data/sig/sentdm/models/template_retrieve_response.rbs +0 -182
  269. data/sig/sentdm/models/template_update_response.rbs +0 -182
  270. data/sig/sentdm/models/user_invite_response.rbs +0 -177
  271. data/sig/sentdm/models/user_retrieve_response.rbs +0 -177
  272. data/sig/sentdm/models/user_update_role_response.rbs +0 -177
  273. data/sig/sentdm/models/webhook_create_response.rbs +0 -208
  274. data/sig/sentdm/models/webhook_retrieve_response.rbs +0 -208
  275. data/sig/sentdm/models/webhook_toggle_status_response.rbs +0 -208
  276. data/sig/sentdm/models/webhook_update_response.rbs +0 -208
@@ -0,0 +1,419 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class ConversationMessagesList < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::ConversationMessagesList, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ # The messages on this page.
12
+ sig do
13
+ returns(T.nilable(T::Array[Sentdm::ConversationMessagesList::Message]))
14
+ end
15
+ attr_reader :messages
16
+
17
+ sig do
18
+ params(
19
+ messages: T::Array[Sentdm::ConversationMessagesList::Message::OrHash]
20
+ ).void
21
+ end
22
+ attr_writer :messages
23
+
24
+ # Pagination metadata for list responses
25
+ sig { returns(T.nilable(Sentdm::PaginationMeta)) }
26
+ attr_reader :pagination
27
+
28
+ sig { params(pagination: Sentdm::PaginationMeta::OrHash).void }
29
+ attr_writer :pagination
30
+
31
+ # A paginated list of messages — used by both conversation read endpoints.
32
+ sig do
33
+ params(
34
+ messages: T::Array[Sentdm::ConversationMessagesList::Message::OrHash],
35
+ pagination: Sentdm::PaginationMeta::OrHash
36
+ ).returns(T.attached_class)
37
+ end
38
+ def self.new(
39
+ # The messages on this page.
40
+ messages: nil,
41
+ # Pagination metadata for list responses
42
+ pagination: nil
43
+ )
44
+ end
45
+
46
+ sig do
47
+ override.returns(
48
+ {
49
+ messages: T::Array[Sentdm::ConversationMessagesList::Message],
50
+ pagination: Sentdm::PaginationMeta
51
+ }
52
+ )
53
+ end
54
+ def to_hash
55
+ end
56
+
57
+ class Message < Sentdm::Internal::Type::BaseModel
58
+ OrHash =
59
+ T.type_alias do
60
+ T.any(
61
+ Sentdm::ConversationMessagesList::Message,
62
+ Sentdm::Internal::AnyHash
63
+ )
64
+ end
65
+
66
+ sig { returns(T.nilable(String)) }
67
+ attr_reader :id
68
+
69
+ sig { params(id: String).void }
70
+ attr_writer :id
71
+
72
+ sig { returns(T.nilable(Float)) }
73
+ attr_accessor :active_contact_price
74
+
75
+ sig { returns(T.nilable(String)) }
76
+ attr_reader :channel
77
+
78
+ sig { params(channel: String).void }
79
+ attr_writer :channel
80
+
81
+ sig { returns(T.nilable(String)) }
82
+ attr_reader :contact_id
83
+
84
+ sig { params(contact_id: String).void }
85
+ attr_writer :contact_id
86
+
87
+ sig { returns(T.nilable(Time)) }
88
+ attr_reader :created_at
89
+
90
+ sig { params(created_at: Time).void }
91
+ attr_writer :created_at
92
+
93
+ sig { returns(T.nilable(String)) }
94
+ attr_reader :customer_id
95
+
96
+ sig { params(customer_id: String).void }
97
+ attr_writer :customer_id
98
+
99
+ sig { returns(T.nilable(String)) }
100
+ attr_reader :direction
101
+
102
+ sig { params(direction: String).void }
103
+ attr_writer :direction
104
+
105
+ sig do
106
+ returns(
107
+ T.nilable(
108
+ T::Array[Sentdm::ConversationMessagesList::Message::Event]
109
+ )
110
+ )
111
+ end
112
+ attr_accessor :events
113
+
114
+ # Structured message body format for database storage. Preserves channel-specific
115
+ # components (header, body, footer, buttons).
116
+ sig do
117
+ returns(
118
+ T.nilable(Sentdm::ConversationMessagesList::Message::MessageBody)
119
+ )
120
+ end
121
+ attr_reader :message_body
122
+
123
+ sig do
124
+ params(
125
+ message_body:
126
+ T.nilable(
127
+ Sentdm::ConversationMessagesList::Message::MessageBody::OrHash
128
+ )
129
+ ).void
130
+ end
131
+ attr_writer :message_body
132
+
133
+ sig { returns(T.nilable(String)) }
134
+ attr_reader :phone
135
+
136
+ sig { params(phone: String).void }
137
+ attr_writer :phone
138
+
139
+ sig { returns(T.nilable(String)) }
140
+ attr_reader :phone_international
141
+
142
+ sig { params(phone_international: String).void }
143
+ attr_writer :phone_international
144
+
145
+ sig { returns(T.nilable(Float)) }
146
+ attr_accessor :price
147
+
148
+ sig { returns(T.nilable(String)) }
149
+ attr_reader :region_code
150
+
151
+ sig { params(region_code: String).void }
152
+ attr_writer :region_code
153
+
154
+ sig { returns(T.nilable(String)) }
155
+ attr_reader :status
156
+
157
+ sig { params(status: String).void }
158
+ attr_writer :status
159
+
160
+ sig { returns(T.nilable(String)) }
161
+ attr_accessor :template_category
162
+
163
+ sig { returns(T.nilable(String)) }
164
+ attr_accessor :template_id
165
+
166
+ sig { returns(T.nilable(String)) }
167
+ attr_accessor :template_name
168
+
169
+ # Message response for v3 API — same shape as v2 with snake_case JSON conventions
170
+ sig do
171
+ params(
172
+ id: String,
173
+ active_contact_price: T.nilable(Float),
174
+ channel: String,
175
+ contact_id: String,
176
+ created_at: Time,
177
+ customer_id: String,
178
+ direction: String,
179
+ events:
180
+ T.nilable(
181
+ T::Array[
182
+ Sentdm::ConversationMessagesList::Message::Event::OrHash
183
+ ]
184
+ ),
185
+ message_body:
186
+ T.nilable(
187
+ Sentdm::ConversationMessagesList::Message::MessageBody::OrHash
188
+ ),
189
+ phone: String,
190
+ phone_international: String,
191
+ price: T.nilable(Float),
192
+ region_code: String,
193
+ status: String,
194
+ template_category: T.nilable(String),
195
+ template_id: T.nilable(String),
196
+ template_name: T.nilable(String)
197
+ ).returns(T.attached_class)
198
+ end
199
+ def self.new(
200
+ id: nil,
201
+ active_contact_price: nil,
202
+ channel: nil,
203
+ contact_id: nil,
204
+ created_at: nil,
205
+ customer_id: nil,
206
+ direction: nil,
207
+ events: nil,
208
+ # Structured message body format for database storage. Preserves channel-specific
209
+ # components (header, body, footer, buttons).
210
+ message_body: nil,
211
+ phone: nil,
212
+ phone_international: nil,
213
+ price: nil,
214
+ region_code: nil,
215
+ status: nil,
216
+ template_category: nil,
217
+ template_id: nil,
218
+ template_name: nil
219
+ )
220
+ end
221
+
222
+ sig do
223
+ override.returns(
224
+ {
225
+ id: String,
226
+ active_contact_price: T.nilable(Float),
227
+ channel: String,
228
+ contact_id: String,
229
+ created_at: Time,
230
+ customer_id: String,
231
+ direction: String,
232
+ events:
233
+ T.nilable(
234
+ T::Array[Sentdm::ConversationMessagesList::Message::Event]
235
+ ),
236
+ message_body:
237
+ T.nilable(
238
+ Sentdm::ConversationMessagesList::Message::MessageBody
239
+ ),
240
+ phone: String,
241
+ phone_international: String,
242
+ price: T.nilable(Float),
243
+ region_code: String,
244
+ status: String,
245
+ template_category: T.nilable(String),
246
+ template_id: T.nilable(String),
247
+ template_name: T.nilable(String)
248
+ }
249
+ )
250
+ end
251
+ def to_hash
252
+ end
253
+
254
+ class Event < Sentdm::Internal::Type::BaseModel
255
+ OrHash =
256
+ T.type_alias do
257
+ T.any(
258
+ Sentdm::ConversationMessagesList::Message::Event,
259
+ Sentdm::Internal::AnyHash
260
+ )
261
+ end
262
+
263
+ sig { returns(String) }
264
+ attr_accessor :status
265
+
266
+ sig { returns(Time) }
267
+ attr_accessor :timestamp
268
+
269
+ sig { returns(T.nilable(String)) }
270
+ attr_accessor :description
271
+
272
+ # Represents a status change event in a message's lifecycle (v3)
273
+ sig do
274
+ params(
275
+ status: String,
276
+ timestamp: Time,
277
+ description: T.nilable(String)
278
+ ).returns(T.attached_class)
279
+ end
280
+ def self.new(status:, timestamp:, description: nil)
281
+ end
282
+
283
+ sig do
284
+ override.returns(
285
+ {
286
+ status: String,
287
+ timestamp: Time,
288
+ description: T.nilable(String)
289
+ }
290
+ )
291
+ end
292
+ def to_hash
293
+ end
294
+ end
295
+
296
+ class MessageBody < Sentdm::Internal::Type::BaseModel
297
+ OrHash =
298
+ T.type_alias do
299
+ T.any(
300
+ Sentdm::ConversationMessagesList::Message::MessageBody,
301
+ Sentdm::Internal::AnyHash
302
+ )
303
+ end
304
+
305
+ sig do
306
+ returns(
307
+ T.nilable(
308
+ T::Array[
309
+ Sentdm::ConversationMessagesList::Message::MessageBody::Button
310
+ ]
311
+ )
312
+ )
313
+ end
314
+ attr_accessor :buttons
315
+
316
+ sig { returns(T.nilable(String)) }
317
+ attr_reader :content
318
+
319
+ sig { params(content: String).void }
320
+ attr_writer :content
321
+
322
+ sig { returns(T.nilable(String)) }
323
+ attr_accessor :footer
324
+
325
+ sig { returns(T.nilable(String)) }
326
+ attr_accessor :header
327
+
328
+ # Structured message body format for database storage. Preserves channel-specific
329
+ # components (header, body, footer, buttons).
330
+ sig do
331
+ params(
332
+ buttons:
333
+ T.nilable(
334
+ T::Array[
335
+ Sentdm::ConversationMessagesList::Message::MessageBody::Button::OrHash
336
+ ]
337
+ ),
338
+ content: String,
339
+ footer: T.nilable(String),
340
+ header: T.nilable(String)
341
+ ).returns(T.attached_class)
342
+ end
343
+ def self.new(buttons: nil, content: nil, footer: nil, header: nil)
344
+ end
345
+
346
+ sig do
347
+ override.returns(
348
+ {
349
+ buttons:
350
+ T.nilable(
351
+ T::Array[
352
+ Sentdm::ConversationMessagesList::Message::MessageBody::Button
353
+ ]
354
+ ),
355
+ content: String,
356
+ footer: T.nilable(String),
357
+ header: T.nilable(String)
358
+ }
359
+ )
360
+ end
361
+ def to_hash
362
+ end
363
+
364
+ class Button < Sentdm::Internal::Type::BaseModel
365
+ OrHash =
366
+ T.type_alias do
367
+ T.any(
368
+ Sentdm::ConversationMessagesList::Message::MessageBody::Button,
369
+ Sentdm::Internal::AnyHash
370
+ )
371
+ end
372
+
373
+ sig { returns(T.nilable(String)) }
374
+ attr_accessor :postback_data
375
+
376
+ sig { returns(T.nilable(String)) }
377
+ attr_accessor :text
378
+
379
+ sig { returns(T.nilable(String)) }
380
+ attr_reader :type
381
+
382
+ sig { params(type: String).void }
383
+ attr_writer :type
384
+
385
+ sig { returns(T.nilable(String)) }
386
+ attr_reader :value
387
+
388
+ sig { params(value: String).void }
389
+ attr_writer :value
390
+
391
+ sig do
392
+ params(
393
+ postback_data: T.nilable(String),
394
+ text: T.nilable(String),
395
+ type: String,
396
+ value: String
397
+ ).returns(T.attached_class)
398
+ end
399
+ def self.new(postback_data: nil, text: nil, type: nil, value: nil)
400
+ end
401
+
402
+ sig do
403
+ override.returns(
404
+ {
405
+ postback_data: T.nilable(String),
406
+ text: T.nilable(String),
407
+ type: String,
408
+ value: String
409
+ }
410
+ )
411
+ end
412
+ def to_hash
413
+ end
414
+ end
415
+ end
416
+ end
417
+ end
418
+ end
419
+ end
@@ -0,0 +1,66 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class ErrorDetail < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias { T.any(Sentdm::ErrorDetail, Sentdm::Internal::AnyHash) }
8
+
9
+ # Machine-readable error code (e.g., "RESOURCE_001")
10
+ sig { returns(T.nilable(String)) }
11
+ attr_reader :code
12
+
13
+ sig { params(code: String).void }
14
+ attr_writer :code
15
+
16
+ # Additional validation error details (field-level errors)
17
+ sig { returns(T.nilable(T::Hash[Symbol, T::Array[String]])) }
18
+ attr_accessor :details
19
+
20
+ # URL to documentation about this error
21
+ sig { returns(T.nilable(String)) }
22
+ attr_accessor :doc_url
23
+
24
+ # Human-readable error message
25
+ sig { returns(T.nilable(String)) }
26
+ attr_reader :message
27
+
28
+ sig { params(message: String).void }
29
+ attr_writer :message
30
+
31
+ # Error information
32
+ sig do
33
+ params(
34
+ code: String,
35
+ details: T.nilable(T::Hash[Symbol, T::Array[String]]),
36
+ doc_url: T.nilable(String),
37
+ message: String
38
+ ).returns(T.attached_class)
39
+ end
40
+ def self.new(
41
+ # Machine-readable error code (e.g., "RESOURCE_001")
42
+ code: nil,
43
+ # Additional validation error details (field-level errors)
44
+ details: nil,
45
+ # URL to documentation about this error
46
+ doc_url: nil,
47
+ # Human-readable error message
48
+ message: nil
49
+ )
50
+ end
51
+
52
+ sig do
53
+ override.returns(
54
+ {
55
+ code: String,
56
+ details: T.nilable(T::Hash[Symbol, T::Array[String]]),
57
+ doc_url: T.nilable(String),
58
+ message: String
59
+ }
60
+ )
61
+ end
62
+ def to_hash
63
+ end
64
+ end
65
+ end
66
+ end
@@ -8,6 +8,14 @@ module Sentdm
8
8
  T.any(Sentdm::InboundMessageEventPayload, Sentdm::Internal::AnyHash)
9
9
  end
10
10
 
11
+ # The contact's number in E.164 format, meaning the number the message came from.
12
+ sig { returns(String) }
13
+ attr_accessor :inbound_number
14
+
15
+ # When the message was received, in UTC (yyyy-MM-ddTHH:mm:ssZ).
16
+ sig { returns(String) }
17
+ attr_accessor :received_at
18
+
11
19
  # The account the message belongs to.
12
20
  sig { returns(T.nilable(String)) }
13
21
  attr_reader :account_id
@@ -22,13 +30,6 @@ module Sentdm
22
30
  sig { params(channel: String).void }
23
31
  attr_writer :channel
24
32
 
25
- # The contact's number in E.164 format, meaning the number the message came from.
26
- sig { returns(T.nilable(String)) }
27
- attr_reader :inbound_number
28
-
29
- sig { params(inbound_number: String).void }
30
- attr_writer :inbound_number
31
-
32
33
  # The inbound message.
33
34
  sig { returns(T.nilable(String)) }
34
35
  attr_reader :message_id
@@ -43,13 +44,6 @@ module Sentdm
43
44
  sig { params(outbound_number: String).void }
44
45
  attr_writer :outbound_number
45
46
 
46
- # When the message was received, in UTC (yyyy-MM-ddTHH:mm:ssZ).
47
- sig { returns(T.nilable(String)) }
48
- attr_reader :received_at
49
-
50
- sig { params(received_at: String).void }
51
- attr_writer :received_at
52
-
53
47
  # The message body. Sent as null when the inbound message carried no text, for
54
48
  # example a media-only message. The field is always present, so read it and check
55
49
  # for null rather than checking whether the key exists.
@@ -68,29 +62,29 @@ module Sentdm
68
62
  # numbers.
69
63
  sig do
70
64
  params(
65
+ inbound_number: String,
66
+ received_at: String,
71
67
  account_id: String,
72
68
  channel: String,
73
- inbound_number: String,
74
69
  message_id: String,
75
70
  outbound_number: String,
76
- received_at: String,
77
71
  text: T.nilable(String),
78
72
  updated_at: String
79
73
  ).returns(T.attached_class)
80
74
  end
81
75
  def self.new(
76
+ # The contact's number in E.164 format, meaning the number the message came from.
77
+ inbound_number:,
78
+ # When the message was received, in UTC (yyyy-MM-ddTHH:mm:ssZ).
79
+ received_at:,
82
80
  # The account the message belongs to.
83
81
  account_id: nil,
84
82
  # The channel the message arrived on, for example sms or whatsapp.
85
83
  channel: nil,
86
- # The contact's number in E.164 format, meaning the number the message came from.
87
- inbound_number: nil,
88
84
  # The inbound message.
89
85
  message_id: nil,
90
86
  # Your number in E.164 format, meaning the number the message was addressed to.
91
87
  outbound_number: nil,
92
- # When the message was received, in UTC (yyyy-MM-ddTHH:mm:ssZ).
93
- received_at: nil,
94
88
  # The message body. Sent as null when the inbound message carried no text, for
95
89
  # example a media-only message. The field is always present, so read it and check
96
90
  # for null rather than checking whether the key exists.
@@ -104,12 +98,12 @@ module Sentdm
104
98
  sig do
105
99
  override.returns(
106
100
  {
101
+ inbound_number: String,
102
+ received_at: String,
107
103
  account_id: String,
108
104
  channel: String,
109
- inbound_number: String,
110
105
  message_id: String,
111
106
  outbound_number: String,
112
- received_at: String,
113
107
  text: T.nilable(String),
114
108
  updated_at: String
115
109
  }