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
data/lib/sentdm.rb CHANGED
@@ -52,37 +52,29 @@ require_relative "sentdm/errors"
52
52
  require_relative "sentdm/internal/transport/base_client"
53
53
  require_relative "sentdm/internal/transport/pooled_net_requester"
54
54
  require_relative "sentdm/client"
55
- require_relative "sentdm/models/mutation_request"
56
- require_relative "sentdm/models/api_meta"
57
- require_relative "sentdm/models/api_response_of_contact"
58
- require_relative "sentdm/models/api_response_of_contact_message_summary"
59
- require_relative "sentdm/models/api_response_of_conversation_messages_list"
60
- require_relative "sentdm/models/api_response_of_profile_detail"
61
- require_relative "sentdm/models/api_response_of_user"
62
- require_relative "sentdm/models/api_response_template"
63
- require_relative "sentdm/models/api_response_webhook"
64
55
  require_relative "sentdm/models/authentication_config"
65
- require_relative "sentdm/models/billing_contact_info"
66
- require_relative "sentdm/models/brand_business_info"
67
- require_relative "sentdm/models/brand_compliance_info"
68
- require_relative "sentdm/models/brand_contact_info"
69
- require_relative "sentdm/models/brands_brand_data"
70
56
  require_relative "sentdm/models/contact_create_params"
57
+ require_relative "sentdm/models/contact_create_response"
71
58
  require_relative "sentdm/models/contact_delete_params"
72
59
  require_relative "sentdm/models/contact_list_params"
73
60
  require_relative "sentdm/models/contact_list_response"
74
- require_relative "sentdm/models/contact_message_summary"
75
- require_relative "sentdm/models/contact_response"
76
61
  require_relative "sentdm/models/contact_retrieve_message_summary_params"
62
+ require_relative "sentdm/models/contact_retrieve_message_summary_response"
77
63
  require_relative "sentdm/models/contact_retrieve_params"
64
+ require_relative "sentdm/models/contact_retrieve_response"
78
65
  require_relative "sentdm/models/contact_update_params"
66
+ require_relative "sentdm/models/contact_update_response"
79
67
  require_relative "sentdm/models/conversation_list_messages_params"
68
+ require_relative "sentdm/models/conversation_list_messages_response"
80
69
  require_relative "sentdm/models/conversation_list_params"
81
- require_relative "sentdm/models/conversation_messages_list"
70
+ require_relative "sentdm/models/conversation_list_response"
82
71
  require_relative "sentdm/models/destination_country"
83
- require_relative "sentdm/models/error_detail"
72
+ require_relative "sentdm/models/inbound_message_event"
73
+ require_relative "sentdm/models/inbound_message_event_payload"
84
74
  require_relative "sentdm/models/me_retrieve_params"
85
75
  require_relative "sentdm/models/me_retrieve_response"
76
+ require_relative "sentdm/models/message_event"
77
+ require_relative "sentdm/models/message_event_payload"
86
78
  require_relative "sentdm/models/message_retrieve_activities_params"
87
79
  require_relative "sentdm/models/message_retrieve_activities_response"
88
80
  require_relative "sentdm/models/message_retrieve_status_params"
@@ -91,70 +83,74 @@ require_relative "sentdm/models/message_send_params"
91
83
  require_relative "sentdm/models/message_send_response"
92
84
  require_relative "sentdm/models/number_lookup_params"
93
85
  require_relative "sentdm/models/number_lookup_response"
94
- require_relative "sentdm/models/pagination_meta"
95
- require_relative "sentdm/models/payment_details"
96
86
  require_relative "sentdm/models/profile_complete_params"
97
87
  require_relative "sentdm/models/profile_complete_response"
98
88
  require_relative "sentdm/models/profile_create_params"
89
+ require_relative "sentdm/models/profile_create_response"
99
90
  require_relative "sentdm/models/profile_delete_params"
100
- require_relative "sentdm/models/profile_detail"
101
91
  require_relative "sentdm/models/profile_list_params"
102
92
  require_relative "sentdm/models/profile_list_response"
103
93
  require_relative "sentdm/models/profile_retrieve_params"
104
- require_relative "sentdm/models/profiles/api_response_of_brand_campaign"
105
- require_relative "sentdm/models/profiles/api_response_of_list_of_brand_campaign"
106
- require_relative "sentdm/models/profiles/brand_campaign"
94
+ require_relative "sentdm/models/profile_retrieve_response"
107
95
  require_relative "sentdm/models/profiles/campaign_create_params"
108
- require_relative "sentdm/models/profiles/campaign_data"
96
+ require_relative "sentdm/models/profiles/campaign_create_response"
109
97
  require_relative "sentdm/models/profiles/campaign_delete_params"
110
98
  require_relative "sentdm/models/profiles/campaign_list_params"
99
+ require_relative "sentdm/models/profiles/campaign_list_response"
111
100
  require_relative "sentdm/models/profiles/campaign_update_params"
112
- require_relative "sentdm/models/profiles/campaign_use_case"
113
- require_relative "sentdm/models/profiles/campaign_use_case_data"
101
+ require_relative "sentdm/models/profiles/campaign_update_response"
114
102
  require_relative "sentdm/models/profiles/messaging_use_case_us"
115
- require_relative "sentdm/models/profile_settings"
116
103
  require_relative "sentdm/models/profile_update_params"
104
+ require_relative "sentdm/models/profile_update_response"
117
105
  require_relative "sentdm/models/tcr_brand_relationship"
118
106
  require_relative "sentdm/models/tcr_vertical"
119
- require_relative "sentdm/models/template"
120
107
  require_relative "sentdm/models/template_body"
121
108
  require_relative "sentdm/models/template_body_content"
122
109
  require_relative "sentdm/models/template_button"
123
110
  require_relative "sentdm/models/template_button_props"
124
111
  require_relative "sentdm/models/template_create_params"
112
+ require_relative "sentdm/models/template_create_response"
125
113
  require_relative "sentdm/models/template_definition"
126
114
  require_relative "sentdm/models/template_delete_params"
115
+ require_relative "sentdm/models/template_event"
116
+ require_relative "sentdm/models/template_event_payload"
127
117
  require_relative "sentdm/models/template_footer"
128
118
  require_relative "sentdm/models/template_header"
129
119
  require_relative "sentdm/models/template_list_params"
130
120
  require_relative "sentdm/models/template_list_response"
131
121
  require_relative "sentdm/models/template_retrieve_params"
122
+ require_relative "sentdm/models/template_retrieve_response"
132
123
  require_relative "sentdm/models/template_update_params"
124
+ require_relative "sentdm/models/template_update_response"
133
125
  require_relative "sentdm/models/template_variable"
134
126
  require_relative "sentdm/models/user_invite_params"
127
+ require_relative "sentdm/models/user_invite_response"
135
128
  require_relative "sentdm/models/user_list_params"
136
129
  require_relative "sentdm/models/user_list_response"
137
130
  require_relative "sentdm/models/user_remove_params"
138
- require_relative "sentdm/models/user_response"
139
131
  require_relative "sentdm/models/user_retrieve_params"
132
+ require_relative "sentdm/models/user_retrieve_response"
140
133
  require_relative "sentdm/models/user_update_role_params"
134
+ require_relative "sentdm/models/user_update_role_response"
141
135
  require_relative "sentdm/models/webhook_create_params"
136
+ require_relative "sentdm/models/webhook_create_response"
142
137
  require_relative "sentdm/models/webhook_delete_params"
143
- require_relative "sentdm/models/webhook_event_type"
144
138
  require_relative "sentdm/models/webhook_list_events_params"
145
139
  require_relative "sentdm/models/webhook_list_events_response"
146
140
  require_relative "sentdm/models/webhook_list_event_types_params"
147
141
  require_relative "sentdm/models/webhook_list_event_types_response"
148
142
  require_relative "sentdm/models/webhook_list_params"
149
143
  require_relative "sentdm/models/webhook_list_response"
150
- require_relative "sentdm/models/webhook_response"
151
144
  require_relative "sentdm/models/webhook_retrieve_params"
145
+ require_relative "sentdm/models/webhook_retrieve_response"
152
146
  require_relative "sentdm/models/webhook_rotate_secret_params"
153
147
  require_relative "sentdm/models/webhook_rotate_secret_response"
154
148
  require_relative "sentdm/models/webhook_test_params"
155
149
  require_relative "sentdm/models/webhook_test_response"
156
150
  require_relative "sentdm/models/webhook_toggle_status_params"
151
+ require_relative "sentdm/models/webhook_toggle_status_response"
157
152
  require_relative "sentdm/models/webhook_update_params"
153
+ require_relative "sentdm/models/webhook_update_response"
158
154
  require_relative "sentdm/models"
159
155
  require_relative "sentdm/resources/contacts"
160
156
  require_relative "sentdm/resources/conversations"
@@ -15,38 +15,101 @@ module Sentdm
15
15
  sig { returns(String) }
16
16
  attr_reader :api_key
17
17
 
18
- # Configure webhook endpoints for real-time event delivery
18
+ # Delivery reports and inbound messages, pushed to you.
19
+ #
20
+ # Subscribe an endpoint to the event types you care about —
21
+ # `GET /v3/webhooks/event-types` lists them — and we POST each one as it happens,
22
+ # retrying on failure. Polling `GET /v3/messages/{id}` works and does not scale.
23
+ #
24
+ # **Verify the signature.** Every delivery is signed with your endpoint's secret;
25
+ # an unverified endpoint is one anybody can post to. `rotate-secret` replaces it,
26
+ # `test` sends a specimen event, and `GET /v3/webhooks/{id}/events` shows what we
27
+ # tried to deliver and what your endpoint answered — which is the first place to
28
+ # look when something appears to be missing.
19
29
  sig { returns(Sentdm::Resources::Webhooks) }
20
30
  attr_reader :webhooks
21
31
 
22
- # Invite, update, and manage organization users and roles
32
+ # The people who can sign in to your organization, and what each may do.
33
+ #
34
+ # Users are dashboard access and nothing else — they do not send, and removing one
35
+ # does not affect traffic. An API key is not a user: it belongs to the
36
+ # organization or to a sender profile, so revoking a person's access leaves your
37
+ # integration running.
23
38
  sig { returns(Sentdm::Resources::Users) }
24
39
  attr_reader :users
25
40
 
26
- # Manage message templates with variable substitution
41
+ # Reusable message bodies with named variables.
42
+ #
43
+ # A template is substituted at send time from the values you pass, so the copy
44
+ # lives here rather than in your application. WhatsApp templates additionally need
45
+ # Meta's approval before they can be sent, and a template's channel status reports
46
+ # where that stands — an approved SMS template and an unapproved WhatsApp one are
47
+ # the same template in two states.
27
48
  sig { returns(Sentdm::Resources::Templates) }
28
49
  attr_reader :templates
29
50
 
30
- # Manage organization profiles
51
+ # **Deprecated use Sender Profiles.**
52
+ #
53
+ # The original profile resource, kept because it has live callers. It still works,
54
+ # and its replacement is `/v3/sender-profiles`, which takes the identity and the
55
+ # campaign in one call instead of across three.
56
+ #
57
+ # New integrations should not start here.
31
58
  sig { returns(Sentdm::Resources::Profiles) }
32
59
  attr_reader :profiles
33
60
 
34
- # Manage and lookup phone numbers
61
+ # What a phone number actually is, before you send to it.
62
+ #
63
+ # A lookup returns the number's country, line type and carrier, which is what
64
+ # decides whether it is reachable on a channel and what it costs. Worth doing on
65
+ # import rather than on send: a landline in a contact list is a message that can
66
+ # never be delivered.
35
67
  sig { returns(Sentdm::Resources::Numbers) }
36
68
  attr_reader :numbers
37
69
 
38
- # Send and track SMS and WhatsApp messages
70
+ # Send a message and follow what happened to it.
71
+ #
72
+ # One endpoint sends on any channel: pass `channel: "sent"` and we pick between
73
+ # SMS, WhatsApp and RCS per recipient using your routing rules, or name a channel
74
+ # to pin it. A send is accepted asynchronously — `POST /v3/messages` returns an
75
+ # id, and delivery is reported through `GET /v3/messages/{id}`, its activities, or
76
+ # a webhook.
77
+ #
78
+ # **A message needs a sender.** What you can send, where, and at what cost is
79
+ # decided by the markets under **Channels** — so a recipient in a country you hold
80
+ # no sender for is refused here rather than queued.
39
81
  sig { returns(Sentdm::Resources::Messages) }
40
82
  attr_reader :messages
41
83
 
42
- # Create, update, and manage customer contact lists
84
+ # The people you message, and their channel identities.
85
+ #
86
+ # A contact holds one identity per channel — a phone number, a WhatsApp number —
87
+ # so routing can choose between them for the same person. Opt-out is recorded
88
+ # against the contact and honoured on every send, whichever channel it came
89
+ # through.
90
+ #
91
+ # `GET /v3/contacts/{id}/message-summary` is the per-contact view of what you have
92
+ # sent and what happened to it.
43
93
  sig { returns(Sentdm::Resources::Contacts) }
44
94
  attr_reader :contacts
45
95
 
96
+ # Inbound and outbound messages, grouped by the person they are with.
97
+ #
98
+ # A conversation is the thread for one contact across every channel — a reply by
99
+ # SMS and one by WhatsApp belong to the same conversation, because they are the
100
+ # same person talking to you.
101
+ #
102
+ # Read-only. Sending is **Messages**; a reply arrives here and through your
103
+ # webhooks.
46
104
  sig { returns(Sentdm::Resources::Conversations) }
47
105
  attr_reader :conversations
48
106
 
49
- # Retrieve account details
107
+ # Who the current key is.
108
+ #
109
+ # `GET /v3/me` answers with the account the key authenticates as, which is the
110
+ # quickest way to tell a live key from a test one, an organization key from a
111
+ # sender profile's, and to confirm `x-profile-id` resolved to the profile you
112
+ # meant.
50
113
  sig { returns(Sentdm::Resources::Me) }
51
114
  attr_reader :me
52
115
 
@@ -0,0 +1,407 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class ContactCreateResponse < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Sentdm::Models::ContactCreateResponse,
10
+ Sentdm::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # Contact response for v3 API Uses snake_case for JSON property names
15
+ sig { returns(T.nilable(Sentdm::Models::ContactCreateResponse::Data)) }
16
+ attr_reader :data
17
+
18
+ sig do
19
+ params(
20
+ data: T.nilable(Sentdm::Models::ContactCreateResponse::Data::OrHash)
21
+ ).void
22
+ end
23
+ attr_writer :data
24
+
25
+ # Error information
26
+ sig { returns(T.nilable(Sentdm::Models::ContactCreateResponse::Error)) }
27
+ attr_reader :error
28
+
29
+ sig do
30
+ params(
31
+ error: T.nilable(Sentdm::Models::ContactCreateResponse::Error::OrHash)
32
+ ).void
33
+ end
34
+ attr_writer :error
35
+
36
+ # Request and response metadata
37
+ sig { returns(T.nilable(Sentdm::Models::ContactCreateResponse::Meta)) }
38
+ attr_reader :meta
39
+
40
+ sig do
41
+ params(meta: Sentdm::Models::ContactCreateResponse::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::ContactCreateResponse::Data::OrHash),
56
+ error:
57
+ T.nilable(Sentdm::Models::ContactCreateResponse::Error::OrHash),
58
+ meta: Sentdm::Models::ContactCreateResponse::Meta::OrHash,
59
+ success: T::Boolean
60
+ ).returns(T.attached_class)
61
+ end
62
+ def self.new(
63
+ # Contact response for v3 API Uses snake_case for JSON property names
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::ContactCreateResponse::Data),
78
+ error: T.nilable(Sentdm::Models::ContactCreateResponse::Error),
79
+ meta: Sentdm::Models::ContactCreateResponse::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::ContactCreateResponse::Data,
92
+ Sentdm::Internal::AnyHash
93
+ )
94
+ end
95
+
96
+ # Unique identifier for the contact
97
+ sig { returns(T.nilable(String)) }
98
+ attr_reader :id
99
+
100
+ sig { params(id: String).void }
101
+ attr_writer :id
102
+
103
+ # Comma-separated list of available messaging channels (e.g., "sms,whatsapp")
104
+ sig { returns(T.nilable(String)) }
105
+ attr_reader :available_channels
106
+
107
+ sig { params(available_channels: String).void }
108
+ attr_writer :available_channels
109
+
110
+ # Country calling code (e.g., 1 for US/Canada)
111
+ sig { returns(T.nilable(String)) }
112
+ attr_reader :country_code
113
+
114
+ sig { params(country_code: String).void }
115
+ attr_writer :country_code
116
+
117
+ # When the contact was created
118
+ sig { returns(T.nilable(Time)) }
119
+ attr_reader :created_at
120
+
121
+ sig { params(created_at: Time).void }
122
+ attr_writer :created_at
123
+
124
+ # Which customer owns this — the key's own, or the profile named in x-profile-id.
125
+ # Says whose resource this is, which the resource's own id does not.
126
+ sig { returns(T.nilable(String)) }
127
+ attr_reader :customer_id
128
+
129
+ sig { params(customer_id: String).void }
130
+ attr_writer :customer_id
131
+
132
+ # Default messaging channel to use (e.g., "sms" or "whatsapp")
133
+ sig { returns(T.nilable(String)) }
134
+ attr_reader :default_channel
135
+
136
+ sig { params(default_channel: String).void }
137
+ attr_writer :default_channel
138
+
139
+ # Phone number in E.164 format (e.g., +1234567890)
140
+ sig { returns(T.nilable(String)) }
141
+ attr_reader :format_e164
142
+
143
+ sig { params(format_e164: String).void }
144
+ attr_writer :format_e164
145
+
146
+ # Phone number in international format (e.g., +1 234-567-890)
147
+ sig { returns(T.nilable(String)) }
148
+ attr_reader :format_international
149
+
150
+ sig { params(format_international: String).void }
151
+ attr_writer :format_international
152
+
153
+ # Phone number in national format (e.g., (234) 567-890)
154
+ sig { returns(T.nilable(String)) }
155
+ attr_reader :format_national
156
+
157
+ sig { params(format_national: String).void }
158
+ attr_writer :format_national
159
+
160
+ # Phone number in RFC 3966 format (e.g., tel:+1-234-567-890)
161
+ sig { returns(T.nilable(String)) }
162
+ attr_reader :format_rfc
163
+
164
+ sig { params(format_rfc: String).void }
165
+ attr_writer :format_rfc
166
+
167
+ # Always false. Contacts are no longer shared or inherited between sender profiles
168
+ # — a profile sees only the contacts it owns. Retained so existing v3 clients
169
+ # reading is_inherited keep deserializing; it carries no information.
170
+ sig { returns(T.nilable(T::Boolean)) }
171
+ attr_reader :is_inherited
172
+
173
+ sig { params(is_inherited: T::Boolean).void }
174
+ attr_writer :is_inherited
175
+
176
+ # Whether the contact has opted out of messaging. Single source of truth — opt-out
177
+ # is per-contact, not per-channel.
178
+ sig { returns(T.nilable(T::Boolean)) }
179
+ attr_reader :opt_out
180
+
181
+ sig { params(opt_out: T::Boolean).void }
182
+ attr_writer :opt_out
183
+
184
+ # Phone number in original format
185
+ sig { returns(T.nilable(String)) }
186
+ attr_reader :phone_number
187
+
188
+ sig { params(phone_number: String).void }
189
+ attr_writer :phone_number
190
+
191
+ # ISO 3166-1 alpha-2 country code (e.g., US, CA, GB)
192
+ sig { returns(T.nilable(String)) }
193
+ attr_reader :region_code
194
+
195
+ sig { params(region_code: String).void }
196
+ attr_writer :region_code
197
+
198
+ # When the contact was last updated
199
+ sig { returns(T.nilable(Time)) }
200
+ attr_accessor :updated_at
201
+
202
+ # Contact response for v3 API Uses snake_case for JSON property names
203
+ sig do
204
+ params(
205
+ id: String,
206
+ available_channels: String,
207
+ country_code: String,
208
+ created_at: Time,
209
+ customer_id: String,
210
+ default_channel: String,
211
+ format_e164: String,
212
+ format_international: String,
213
+ format_national: String,
214
+ format_rfc: String,
215
+ is_inherited: T::Boolean,
216
+ opt_out: T::Boolean,
217
+ phone_number: String,
218
+ region_code: String,
219
+ updated_at: T.nilable(Time)
220
+ ).returns(T.attached_class)
221
+ end
222
+ def self.new(
223
+ # Unique identifier for the contact
224
+ id: nil,
225
+ # Comma-separated list of available messaging channels (e.g., "sms,whatsapp")
226
+ available_channels: nil,
227
+ # Country calling code (e.g., 1 for US/Canada)
228
+ country_code: nil,
229
+ # When the contact was created
230
+ created_at: nil,
231
+ # Which customer owns this — the key's own, or the profile named in x-profile-id.
232
+ # Says whose resource this is, which the resource's own id does not.
233
+ customer_id: nil,
234
+ # Default messaging channel to use (e.g., "sms" or "whatsapp")
235
+ default_channel: nil,
236
+ # Phone number in E.164 format (e.g., +1234567890)
237
+ format_e164: nil,
238
+ # Phone number in international format (e.g., +1 234-567-890)
239
+ format_international: nil,
240
+ # Phone number in national format (e.g., (234) 567-890)
241
+ format_national: nil,
242
+ # Phone number in RFC 3966 format (e.g., tel:+1-234-567-890)
243
+ format_rfc: nil,
244
+ # Always false. Contacts are no longer shared or inherited between sender profiles
245
+ # — a profile sees only the contacts it owns. Retained so existing v3 clients
246
+ # reading is_inherited keep deserializing; it carries no information.
247
+ is_inherited: nil,
248
+ # Whether the contact has opted out of messaging. Single source of truth — opt-out
249
+ # is per-contact, not per-channel.
250
+ opt_out: nil,
251
+ # Phone number in original format
252
+ phone_number: nil,
253
+ # ISO 3166-1 alpha-2 country code (e.g., US, CA, GB)
254
+ region_code: nil,
255
+ # When the contact was last updated
256
+ updated_at: nil
257
+ )
258
+ end
259
+
260
+ sig do
261
+ override.returns(
262
+ {
263
+ id: String,
264
+ available_channels: String,
265
+ country_code: String,
266
+ created_at: Time,
267
+ customer_id: String,
268
+ default_channel: String,
269
+ format_e164: String,
270
+ format_international: String,
271
+ format_national: String,
272
+ format_rfc: String,
273
+ is_inherited: T::Boolean,
274
+ opt_out: T::Boolean,
275
+ phone_number: String,
276
+ region_code: String,
277
+ updated_at: T.nilable(Time)
278
+ }
279
+ )
280
+ end
281
+ def to_hash
282
+ end
283
+ end
284
+
285
+ class Error < Sentdm::Internal::Type::BaseModel
286
+ OrHash =
287
+ T.type_alias do
288
+ T.any(
289
+ Sentdm::Models::ContactCreateResponse::Error,
290
+ Sentdm::Internal::AnyHash
291
+ )
292
+ end
293
+
294
+ # Machine-readable error code (e.g., "RESOURCE_001")
295
+ sig { returns(T.nilable(String)) }
296
+ attr_reader :code
297
+
298
+ sig { params(code: String).void }
299
+ attr_writer :code
300
+
301
+ # Additional validation error details (field-level errors)
302
+ sig { returns(T.nilable(T::Hash[Symbol, T::Array[String]])) }
303
+ attr_accessor :details
304
+
305
+ # URL to documentation about this error
306
+ sig { returns(T.nilable(String)) }
307
+ attr_accessor :doc_url
308
+
309
+ # Human-readable error message
310
+ sig { returns(T.nilable(String)) }
311
+ attr_reader :message
312
+
313
+ sig { params(message: String).void }
314
+ attr_writer :message
315
+
316
+ # Error information
317
+ sig do
318
+ params(
319
+ code: String,
320
+ details: T.nilable(T::Hash[Symbol, T::Array[String]]),
321
+ doc_url: T.nilable(String),
322
+ message: String
323
+ ).returns(T.attached_class)
324
+ end
325
+ def self.new(
326
+ # Machine-readable error code (e.g., "RESOURCE_001")
327
+ code: nil,
328
+ # Additional validation error details (field-level errors)
329
+ details: nil,
330
+ # URL to documentation about this error
331
+ doc_url: nil,
332
+ # Human-readable error message
333
+ message: nil
334
+ )
335
+ end
336
+
337
+ sig do
338
+ override.returns(
339
+ {
340
+ code: String,
341
+ details: T.nilable(T::Hash[Symbol, T::Array[String]]),
342
+ doc_url: T.nilable(String),
343
+ message: String
344
+ }
345
+ )
346
+ end
347
+ def to_hash
348
+ end
349
+ end
350
+
351
+ class Meta < Sentdm::Internal::Type::BaseModel
352
+ OrHash =
353
+ T.type_alias do
354
+ T.any(
355
+ Sentdm::Models::ContactCreateResponse::Meta,
356
+ Sentdm::Internal::AnyHash
357
+ )
358
+ end
359
+
360
+ # Unique identifier for this request (for tracing and support)
361
+ sig { returns(T.nilable(String)) }
362
+ attr_reader :request_id
363
+
364
+ sig { params(request_id: String).void }
365
+ attr_writer :request_id
366
+
367
+ # Server timestamp when the response was generated
368
+ sig { returns(T.nilable(Time)) }
369
+ attr_reader :timestamp
370
+
371
+ sig { params(timestamp: Time).void }
372
+ attr_writer :timestamp
373
+
374
+ # API version used for this request
375
+ sig { returns(T.nilable(String)) }
376
+ attr_reader :version
377
+
378
+ sig { params(version: String).void }
379
+ attr_writer :version
380
+
381
+ # Request and response metadata
382
+ sig do
383
+ params(request_id: String, timestamp: Time, version: String).returns(
384
+ T.attached_class
385
+ )
386
+ end
387
+ def self.new(
388
+ # Unique identifier for this request (for tracing and support)
389
+ request_id: nil,
390
+ # Server timestamp when the response was generated
391
+ timestamp: nil,
392
+ # API version used for this request
393
+ version: nil
394
+ )
395
+ end
396
+
397
+ sig do
398
+ override.returns(
399
+ { request_id: String, timestamp: Time, version: String }
400
+ )
401
+ end
402
+ def to_hash
403
+ end
404
+ end
405
+ end
406
+ end
407
+ end