sentdm 0.0.2

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 (188) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +11 -0
  4. data/README.md +240 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/sentdm/client.rb +115 -0
  7. data/lib/sentdm/errors.rb +228 -0
  8. data/lib/sentdm/file_part.rb +58 -0
  9. data/lib/sentdm/internal/transport/base_client.rb +573 -0
  10. data/lib/sentdm/internal/transport/pooled_net_requester.rb +210 -0
  11. data/lib/sentdm/internal/type/array_of.rb +168 -0
  12. data/lib/sentdm/internal/type/base_model.rb +531 -0
  13. data/lib/sentdm/internal/type/base_page.rb +55 -0
  14. data/lib/sentdm/internal/type/boolean.rb +77 -0
  15. data/lib/sentdm/internal/type/converter.rb +327 -0
  16. data/lib/sentdm/internal/type/enum.rb +131 -0
  17. data/lib/sentdm/internal/type/file_input.rb +111 -0
  18. data/lib/sentdm/internal/type/hash_of.rb +188 -0
  19. data/lib/sentdm/internal/type/request_parameters.rb +42 -0
  20. data/lib/sentdm/internal/type/union.rb +237 -0
  21. data/lib/sentdm/internal/type/unknown.rb +81 -0
  22. data/lib/sentdm/internal/util.rb +920 -0
  23. data/lib/sentdm/internal.rb +20 -0
  24. data/lib/sentdm/models/contact_list_item.rb +96 -0
  25. data/lib/sentdm/models/contact_list_params.rb +30 -0
  26. data/lib/sentdm/models/contact_list_response.rb +40 -0
  27. data/lib/sentdm/models/contact_retrieve_by_phone_params.rb +22 -0
  28. data/lib/sentdm/models/contact_retrieve_id_params.rb +22 -0
  29. data/lib/sentdm/models/message_retrieve_params.rb +14 -0
  30. data/lib/sentdm/models/message_retrieve_response.rb +227 -0
  31. data/lib/sentdm/models/message_send_quick_message_params.rb +34 -0
  32. data/lib/sentdm/models/message_send_to_contact_params.rb +46 -0
  33. data/lib/sentdm/models/message_send_to_phone_params.rb +47 -0
  34. data/lib/sentdm/models/number_lookup_retrieve_params.rb +20 -0
  35. data/lib/sentdm/models/number_lookup_retrieve_response.rb +83 -0
  36. data/lib/sentdm/models/organization_list_params.rb +14 -0
  37. data/lib/sentdm/models/organization_list_response.rb +57 -0
  38. data/lib/sentdm/models/organization_retrieve_profiles_params.rb +14 -0
  39. data/lib/sentdm/models/organization_retrieve_profiles_response.rb +22 -0
  40. data/lib/sentdm/models/organizations/customer_user.rb +96 -0
  41. data/lib/sentdm/models/organizations/user_delete_params.rb +22 -0
  42. data/lib/sentdm/models/organizations/user_invite_params.rb +40 -0
  43. data/lib/sentdm/models/organizations/user_list_params.rb +28 -0
  44. data/lib/sentdm/models/organizations/user_list_response.rb +36 -0
  45. data/lib/sentdm/models/organizations/user_retrieve_params.rb +22 -0
  46. data/lib/sentdm/models/organizations/user_update_role_params.rb +28 -0
  47. data/lib/sentdm/models/profile_summary.rb +45 -0
  48. data/lib/sentdm/models/template_body_content.rb +27 -0
  49. data/lib/sentdm/models/template_create_params.rb +53 -0
  50. data/lib/sentdm/models/template_definition.rb +310 -0
  51. data/lib/sentdm/models/template_delete_params.rb +14 -0
  52. data/lib/sentdm/models/template_list_params.rb +54 -0
  53. data/lib/sentdm/models/template_list_response.rb +40 -0
  54. data/lib/sentdm/models/template_response.rb +100 -0
  55. data/lib/sentdm/models/template_retrieve_params.rb +14 -0
  56. data/lib/sentdm/models/template_variable.rb +74 -0
  57. data/lib/sentdm/models.rb +83 -0
  58. data/lib/sentdm/request_options.rb +77 -0
  59. data/lib/sentdm/resources/contacts.rb +88 -0
  60. data/lib/sentdm/resources/messages.rb +130 -0
  61. data/lib/sentdm/resources/number_lookup.rb +37 -0
  62. data/lib/sentdm/resources/organizations/users.rb +150 -0
  63. data/lib/sentdm/resources/organizations.rb +58 -0
  64. data/lib/sentdm/resources/templates.rb +131 -0
  65. data/lib/sentdm/version.rb +5 -0
  66. data/lib/sentdm.rb +94 -0
  67. data/manifest.yaml +17 -0
  68. data/rbi/sentdm/client.rbi +80 -0
  69. data/rbi/sentdm/errors.rbi +205 -0
  70. data/rbi/sentdm/file_part.rbi +37 -0
  71. data/rbi/sentdm/internal/transport/base_client.rbi +297 -0
  72. data/rbi/sentdm/internal/transport/pooled_net_requester.rbi +82 -0
  73. data/rbi/sentdm/internal/type/array_of.rbi +104 -0
  74. data/rbi/sentdm/internal/type/base_model.rbi +299 -0
  75. data/rbi/sentdm/internal/type/base_page.rbi +42 -0
  76. data/rbi/sentdm/internal/type/boolean.rbi +58 -0
  77. data/rbi/sentdm/internal/type/converter.rbi +204 -0
  78. data/rbi/sentdm/internal/type/enum.rbi +82 -0
  79. data/rbi/sentdm/internal/type/file_input.rbi +59 -0
  80. data/rbi/sentdm/internal/type/hash_of.rbi +104 -0
  81. data/rbi/sentdm/internal/type/request_parameters.rbi +29 -0
  82. data/rbi/sentdm/internal/type/union.rbi +126 -0
  83. data/rbi/sentdm/internal/type/unknown.rbi +58 -0
  84. data/rbi/sentdm/internal/util.rbi +484 -0
  85. data/rbi/sentdm/internal.rbi +16 -0
  86. data/rbi/sentdm/models/contact_list_item.rbi +144 -0
  87. data/rbi/sentdm/models/contact_list_params.rbi +51 -0
  88. data/rbi/sentdm/models/contact_list_response.rbi +74 -0
  89. data/rbi/sentdm/models/contact_retrieve_by_phone_params.rbi +40 -0
  90. data/rbi/sentdm/models/contact_retrieve_id_params.rbi +40 -0
  91. data/rbi/sentdm/models/message_retrieve_params.rbi +27 -0
  92. data/rbi/sentdm/models/message_retrieve_response.rbi +376 -0
  93. data/rbi/sentdm/models/message_send_quick_message_params.rbi +56 -0
  94. data/rbi/sentdm/models/message_send_to_contact_params.rbi +63 -0
  95. data/rbi/sentdm/models/message_send_to_phone_params.rbi +65 -0
  96. data/rbi/sentdm/models/number_lookup_retrieve_params.rbi +35 -0
  97. data/rbi/sentdm/models/number_lookup_retrieve_response.rbi +132 -0
  98. data/rbi/sentdm/models/organization_list_params.rbi +27 -0
  99. data/rbi/sentdm/models/organization_list_response.rbi +131 -0
  100. data/rbi/sentdm/models/organization_retrieve_profiles_params.rbi +30 -0
  101. data/rbi/sentdm/models/organization_retrieve_profiles_response.rbi +47 -0
  102. data/rbi/sentdm/models/organizations/customer_user.rbi +129 -0
  103. data/rbi/sentdm/models/organizations/user_delete_params.rbi +40 -0
  104. data/rbi/sentdm/models/organizations/user_invite_params.rbi +73 -0
  105. data/rbi/sentdm/models/organizations/user_list_params.rbi +48 -0
  106. data/rbi/sentdm/models/organizations/user_list_response.rbi +71 -0
  107. data/rbi/sentdm/models/organizations/user_retrieve_params.rbi +40 -0
  108. data/rbi/sentdm/models/organizations/user_update_role_params.rbi +51 -0
  109. data/rbi/sentdm/models/profile_summary.rbi +74 -0
  110. data/rbi/sentdm/models/template_body_content.rbi +46 -0
  111. data/rbi/sentdm/models/template_create_params.rbi +81 -0
  112. data/rbi/sentdm/models/template_definition.rbi +497 -0
  113. data/rbi/sentdm/models/template_delete_params.rbi +27 -0
  114. data/rbi/sentdm/models/template_list_params.rbi +75 -0
  115. data/rbi/sentdm/models/template_list_response.rbi +74 -0
  116. data/rbi/sentdm/models/template_response.rbi +149 -0
  117. data/rbi/sentdm/models/template_retrieve_params.rbi +27 -0
  118. data/rbi/sentdm/models/template_variable.rbi +120 -0
  119. data/rbi/sentdm/models.rbi +46 -0
  120. data/rbi/sentdm/request_options.rbi +55 -0
  121. data/rbi/sentdm/resources/contacts.rbi +63 -0
  122. data/rbi/sentdm/resources/messages.rbi +97 -0
  123. data/rbi/sentdm/resources/number_lookup.rbi +24 -0
  124. data/rbi/sentdm/resources/organizations/users.rbi +95 -0
  125. data/rbi/sentdm/resources/organizations.rbi +37 -0
  126. data/rbi/sentdm/resources/templates.rbi +103 -0
  127. data/rbi/sentdm/version.rbi +5 -0
  128. data/sig/sentdm/client.rbs +41 -0
  129. data/sig/sentdm/errors.rbs +117 -0
  130. data/sig/sentdm/file_part.rbs +21 -0
  131. data/sig/sentdm/internal/transport/base_client.rbs +133 -0
  132. data/sig/sentdm/internal/transport/pooled_net_requester.rbs +48 -0
  133. data/sig/sentdm/internal/type/array_of.rbs +48 -0
  134. data/sig/sentdm/internal/type/base_model.rbs +102 -0
  135. data/sig/sentdm/internal/type/base_page.rbs +24 -0
  136. data/sig/sentdm/internal/type/boolean.rbs +26 -0
  137. data/sig/sentdm/internal/type/converter.rbs +79 -0
  138. data/sig/sentdm/internal/type/enum.rbs +32 -0
  139. data/sig/sentdm/internal/type/file_input.rbs +25 -0
  140. data/sig/sentdm/internal/type/hash_of.rbs +48 -0
  141. data/sig/sentdm/internal/type/request_parameters.rbs +17 -0
  142. data/sig/sentdm/internal/type/union.rbs +52 -0
  143. data/sig/sentdm/internal/type/unknown.rbs +26 -0
  144. data/sig/sentdm/internal/util.rbs +185 -0
  145. data/sig/sentdm/internal.rbs +9 -0
  146. data/sig/sentdm/models/contact_list_item.rbs +85 -0
  147. data/sig/sentdm/models/contact_list_params.rbs +28 -0
  148. data/sig/sentdm/models/contact_list_response.rbs +52 -0
  149. data/sig/sentdm/models/contact_retrieve_by_phone_params.rbs +23 -0
  150. data/sig/sentdm/models/contact_retrieve_id_params.rbs +20 -0
  151. data/sig/sentdm/models/message_retrieve_params.rbs +15 -0
  152. data/sig/sentdm/models/message_retrieve_response.rbs +188 -0
  153. data/sig/sentdm/models/message_send_quick_message_params.rbs +28 -0
  154. data/sig/sentdm/models/message_send_to_contact_params.rbs +36 -0
  155. data/sig/sentdm/models/message_send_to_phone_params.rbs +36 -0
  156. data/sig/sentdm/models/number_lookup_retrieve_params.rbs +23 -0
  157. data/sig/sentdm/models/number_lookup_retrieve_response.rbs +78 -0
  158. data/sig/sentdm/models/organization_list_params.rbs +15 -0
  159. data/sig/sentdm/models/organization_list_response.rbs +76 -0
  160. data/sig/sentdm/models/organization_retrieve_profiles_params.rbs +15 -0
  161. data/sig/sentdm/models/organization_retrieve_profiles_response.rbs +28 -0
  162. data/sig/sentdm/models/organizations/customer_user.rbs +91 -0
  163. data/sig/sentdm/models/organizations/user_delete_params.rbs +25 -0
  164. data/sig/sentdm/models/organizations/user_invite_params.rbs +44 -0
  165. data/sig/sentdm/models/organizations/user_list_params.rbs +30 -0
  166. data/sig/sentdm/models/organizations/user_list_response.rbs +47 -0
  167. data/sig/sentdm/models/organizations/user_retrieve_params.rbs +25 -0
  168. data/sig/sentdm/models/organizations/user_update_role_params.rbs +32 -0
  169. data/sig/sentdm/models/profile_summary.rbs +51 -0
  170. data/sig/sentdm/models/template_body_content.rbs +32 -0
  171. data/sig/sentdm/models/template_create_params.rbs +43 -0
  172. data/sig/sentdm/models/template_definition.rbs +258 -0
  173. data/sig/sentdm/models/template_delete_params.rbs +15 -0
  174. data/sig/sentdm/models/template_list_params.rbs +46 -0
  175. data/sig/sentdm/models/template_list_response.rbs +52 -0
  176. data/sig/sentdm/models/template_response.rbs +92 -0
  177. data/sig/sentdm/models/template_retrieve_params.rbs +15 -0
  178. data/sig/sentdm/models/template_variable.rbs +87 -0
  179. data/sig/sentdm/models.rbs +43 -0
  180. data/sig/sentdm/request_options.rbs +34 -0
  181. data/sig/sentdm/resources/contacts.rbs +23 -0
  182. data/sig/sentdm/resources/messages.rbs +32 -0
  183. data/sig/sentdm/resources/number_lookup.rbs +12 -0
  184. data/sig/sentdm/resources/organizations/users.rbs +44 -0
  185. data/sig/sentdm/resources/organizations.rbs +18 -0
  186. data/sig/sentdm/resources/templates.rbs +31 -0
  187. data/sig/sentdm/version.rbs +3 -0
  188. metadata +259 -0
@@ -0,0 +1,74 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class ContactListResponse < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::Models::ContactListResponse, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(T.nilable(T::Array[Sentdm::ContactListItem])) }
12
+ attr_reader :items
13
+
14
+ sig { params(items: T::Array[Sentdm::ContactListItem::OrHash]).void }
15
+ attr_writer :items
16
+
17
+ sig { returns(T.nilable(Integer)) }
18
+ attr_reader :page
19
+
20
+ sig { params(page: Integer).void }
21
+ attr_writer :page
22
+
23
+ sig { returns(T.nilable(Integer)) }
24
+ attr_reader :page_size
25
+
26
+ sig { params(page_size: Integer).void }
27
+ attr_writer :page_size
28
+
29
+ sig { returns(T.nilable(Integer)) }
30
+ attr_reader :total_count
31
+
32
+ sig { params(total_count: Integer).void }
33
+ attr_writer :total_count
34
+
35
+ sig { returns(T.nilable(Integer)) }
36
+ attr_reader :total_pages
37
+
38
+ sig { params(total_pages: Integer).void }
39
+ attr_writer :total_pages
40
+
41
+ sig do
42
+ params(
43
+ items: T::Array[Sentdm::ContactListItem::OrHash],
44
+ page: Integer,
45
+ page_size: Integer,
46
+ total_count: Integer,
47
+ total_pages: Integer
48
+ ).returns(T.attached_class)
49
+ end
50
+ def self.new(
51
+ items: nil,
52
+ page: nil,
53
+ page_size: nil,
54
+ total_count: nil,
55
+ total_pages: nil
56
+ )
57
+ end
58
+
59
+ sig do
60
+ override.returns(
61
+ {
62
+ items: T::Array[Sentdm::ContactListItem],
63
+ page: Integer,
64
+ page_size: Integer,
65
+ total_count: Integer,
66
+ total_pages: Integer
67
+ }
68
+ )
69
+ end
70
+ def to_hash
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,40 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class ContactRetrieveByPhoneParams < Sentdm::Internal::Type::BaseModel
6
+ extend Sentdm::Internal::Type::RequestParameters::Converter
7
+ include Sentdm::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(Sentdm::ContactRetrieveByPhoneParams, Sentdm::Internal::AnyHash)
12
+ end
13
+
14
+ # The phone number in international format (e.g., +1234567890)
15
+ sig { returns(String) }
16
+ attr_accessor :phone_number
17
+
18
+ sig do
19
+ params(
20
+ phone_number: String,
21
+ request_options: Sentdm::RequestOptions::OrHash
22
+ ).returns(T.attached_class)
23
+ end
24
+ def self.new(
25
+ # The phone number in international format (e.g., +1234567890)
26
+ phone_number:,
27
+ request_options: {}
28
+ )
29
+ end
30
+
31
+ sig do
32
+ override.returns(
33
+ { phone_number: String, request_options: Sentdm::RequestOptions }
34
+ )
35
+ end
36
+ def to_hash
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,40 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class ContactRetrieveIDParams < Sentdm::Internal::Type::BaseModel
6
+ extend Sentdm::Internal::Type::RequestParameters::Converter
7
+ include Sentdm::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(Sentdm::ContactRetrieveIDParams, Sentdm::Internal::AnyHash)
12
+ end
13
+
14
+ # The unique identifier (GUID) of the resource to retrieve
15
+ sig { returns(String) }
16
+ attr_accessor :id
17
+
18
+ sig do
19
+ params(
20
+ id: String,
21
+ request_options: Sentdm::RequestOptions::OrHash
22
+ ).returns(T.attached_class)
23
+ end
24
+ def self.new(
25
+ # The unique identifier (GUID) of the resource to retrieve
26
+ id:,
27
+ request_options: {}
28
+ )
29
+ end
30
+
31
+ sig do
32
+ override.returns(
33
+ { id: String, request_options: Sentdm::RequestOptions }
34
+ )
35
+ end
36
+ def to_hash
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,27 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class MessageRetrieveParams < Sentdm::Internal::Type::BaseModel
6
+ extend Sentdm::Internal::Type::RequestParameters::Converter
7
+ include Sentdm::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(Sentdm::MessageRetrieveParams, Sentdm::Internal::AnyHash)
12
+ end
13
+
14
+ sig do
15
+ params(request_options: Sentdm::RequestOptions::OrHash).returns(
16
+ T.attached_class
17
+ )
18
+ end
19
+ def self.new(request_options: {})
20
+ end
21
+
22
+ sig { override.returns({ request_options: Sentdm::RequestOptions }) }
23
+ def to_hash
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,376 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class MessageRetrieveResponse < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Sentdm::Models::MessageRetrieveResponse,
10
+ Sentdm::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # The unique identifier of the message
15
+ sig { returns(T.nilable(String)) }
16
+ attr_reader :id
17
+
18
+ sig { params(id: String).void }
19
+ attr_writer :id
20
+
21
+ # The messaging channel used (e.g., SMS, WhatsApp)
22
+ sig { returns(T.nilable(String)) }
23
+ attr_reader :channel
24
+
25
+ sig { params(channel: String).void }
26
+ attr_writer :channel
27
+
28
+ # The unique identifier of the contact who received the message
29
+ sig { returns(T.nilable(String)) }
30
+ attr_reader :contact_id
31
+
32
+ sig { params(contact_id: String).void }
33
+ attr_writer :contact_id
34
+
35
+ # The final price charged for sending this message
36
+ sig { returns(T.nilable(Float)) }
37
+ attr_accessor :corrected_price
38
+
39
+ # The date and time when the message was created
40
+ sig { returns(T.nilable(Time)) }
41
+ attr_reader :created_at
42
+
43
+ sig { params(created_at: Time).void }
44
+ attr_writer :created_at
45
+
46
+ # The unique identifier of the customer who sent the message
47
+ sig { returns(T.nilable(String)) }
48
+ attr_reader :customer_id
49
+
50
+ sig { params(customer_id: String).void }
51
+ attr_writer :customer_id
52
+
53
+ # A chronological list of status change events for this message. Each event
54
+ # includes a status and timestamp, following industry standards (Twilio, SendGrid,
55
+ # Mailgun). Events are ordered chronologically from oldest to newest.
56
+ sig do
57
+ returns(
58
+ T.nilable(T::Array[Sentdm::Models::MessageRetrieveResponse::Event])
59
+ )
60
+ end
61
+ attr_accessor :events
62
+
63
+ # The message body content with variables substituted
64
+ sig do
65
+ returns(T.nilable(Sentdm::Models::MessageRetrieveResponse::MessageBody))
66
+ end
67
+ attr_reader :message_body
68
+
69
+ sig do
70
+ params(
71
+ message_body:
72
+ T.nilable(
73
+ Sentdm::Models::MessageRetrieveResponse::MessageBody::OrHash
74
+ )
75
+ ).void
76
+ end
77
+ attr_writer :message_body
78
+
79
+ # The phone number of the recipient (E.164 format)
80
+ sig { returns(T.nilable(String)) }
81
+ attr_reader :phone_number
82
+
83
+ sig { params(phone_number: String).void }
84
+ attr_writer :phone_number
85
+
86
+ # The phone number in international format
87
+ sig { returns(T.nilable(String)) }
88
+ attr_reader :phone_number_international
89
+
90
+ sig { params(phone_number_international: String).void }
91
+ attr_writer :phone_number_international
92
+
93
+ # The region code of the phone number (e.g., US, GB, DE)
94
+ sig { returns(T.nilable(String)) }
95
+ attr_reader :region_code
96
+
97
+ sig { params(region_code: String).void }
98
+ attr_writer :region_code
99
+
100
+ # The delivery status of the message (e.g., sent, delivered, failed, read)
101
+ sig { returns(T.nilable(String)) }
102
+ attr_reader :status
103
+
104
+ sig { params(status: String).void }
105
+ attr_writer :status
106
+
107
+ # The category of the template (e.g., MARKETING, UTILITY, AUTHENTICATION)
108
+ sig { returns(T.nilable(String)) }
109
+ attr_reader :template_category
110
+
111
+ sig { params(template_category: String).void }
112
+ attr_writer :template_category
113
+
114
+ # The unique identifier of the template used for this message (null if no template
115
+ # was used)
116
+ sig { returns(T.nilable(String)) }
117
+ attr_accessor :template_id
118
+
119
+ # The display name of the template
120
+ sig { returns(T.nilable(String)) }
121
+ attr_reader :template_name
122
+
123
+ sig { params(template_name: String).void }
124
+ attr_writer :template_name
125
+
126
+ # Represents a sent message with comprehensive delivery and template information
127
+ # (v2)
128
+ sig do
129
+ params(
130
+ id: String,
131
+ channel: String,
132
+ contact_id: String,
133
+ corrected_price: T.nilable(Float),
134
+ created_at: Time,
135
+ customer_id: String,
136
+ events:
137
+ T.nilable(
138
+ T::Array[Sentdm::Models::MessageRetrieveResponse::Event::OrHash]
139
+ ),
140
+ message_body:
141
+ T.nilable(
142
+ Sentdm::Models::MessageRetrieveResponse::MessageBody::OrHash
143
+ ),
144
+ phone_number: String,
145
+ phone_number_international: String,
146
+ region_code: String,
147
+ status: String,
148
+ template_category: String,
149
+ template_id: T.nilable(String),
150
+ template_name: String
151
+ ).returns(T.attached_class)
152
+ end
153
+ def self.new(
154
+ # The unique identifier of the message
155
+ id: nil,
156
+ # The messaging channel used (e.g., SMS, WhatsApp)
157
+ channel: nil,
158
+ # The unique identifier of the contact who received the message
159
+ contact_id: nil,
160
+ # The final price charged for sending this message
161
+ corrected_price: nil,
162
+ # The date and time when the message was created
163
+ created_at: nil,
164
+ # The unique identifier of the customer who sent the message
165
+ customer_id: nil,
166
+ # A chronological list of status change events for this message. Each event
167
+ # includes a status and timestamp, following industry standards (Twilio, SendGrid,
168
+ # Mailgun). Events are ordered chronologically from oldest to newest.
169
+ events: nil,
170
+ # The message body content with variables substituted
171
+ message_body: nil,
172
+ # The phone number of the recipient (E.164 format)
173
+ phone_number: nil,
174
+ # The phone number in international format
175
+ phone_number_international: nil,
176
+ # The region code of the phone number (e.g., US, GB, DE)
177
+ region_code: nil,
178
+ # The delivery status of the message (e.g., sent, delivered, failed, read)
179
+ status: nil,
180
+ # The category of the template (e.g., MARKETING, UTILITY, AUTHENTICATION)
181
+ template_category: nil,
182
+ # The unique identifier of the template used for this message (null if no template
183
+ # was used)
184
+ template_id: nil,
185
+ # The display name of the template
186
+ template_name: nil
187
+ )
188
+ end
189
+
190
+ sig do
191
+ override.returns(
192
+ {
193
+ id: String,
194
+ channel: String,
195
+ contact_id: String,
196
+ corrected_price: T.nilable(Float),
197
+ created_at: Time,
198
+ customer_id: String,
199
+ events:
200
+ T.nilable(
201
+ T::Array[Sentdm::Models::MessageRetrieveResponse::Event]
202
+ ),
203
+ message_body:
204
+ T.nilable(Sentdm::Models::MessageRetrieveResponse::MessageBody),
205
+ phone_number: String,
206
+ phone_number_international: String,
207
+ region_code: String,
208
+ status: String,
209
+ template_category: String,
210
+ template_id: T.nilable(String),
211
+ template_name: String
212
+ }
213
+ )
214
+ end
215
+ def to_hash
216
+ end
217
+
218
+ class Event < Sentdm::Internal::Type::BaseModel
219
+ OrHash =
220
+ T.type_alias do
221
+ T.any(
222
+ Sentdm::Models::MessageRetrieveResponse::Event,
223
+ Sentdm::Internal::AnyHash
224
+ )
225
+ end
226
+
227
+ # Optional human-readable description of the event Useful for error messages or
228
+ # additional context
229
+ sig { returns(T.nilable(String)) }
230
+ attr_accessor :description
231
+
232
+ # The status of the message at this point in time Examples: "queued", "sent",
233
+ # "delivered", "read", "failed"
234
+ sig { returns(T.nilable(String)) }
235
+ attr_reader :status
236
+
237
+ sig { params(status: String).void }
238
+ attr_writer :status
239
+
240
+ # When this status change occurred (ISO 8601 format)
241
+ sig { returns(T.nilable(Time)) }
242
+ attr_reader :timestamp
243
+
244
+ sig { params(timestamp: Time).void }
245
+ attr_writer :timestamp
246
+
247
+ # Represents a status change event in a message's lifecycle Follows industry
248
+ # standards (Twilio, SendGrid, Mailgun pattern)
249
+ sig do
250
+ params(
251
+ description: T.nilable(String),
252
+ status: String,
253
+ timestamp: Time
254
+ ).returns(T.attached_class)
255
+ end
256
+ def self.new(
257
+ # Optional human-readable description of the event Useful for error messages or
258
+ # additional context
259
+ description: nil,
260
+ # The status of the message at this point in time Examples: "queued", "sent",
261
+ # "delivered", "read", "failed"
262
+ status: nil,
263
+ # When this status change occurred (ISO 8601 format)
264
+ timestamp: nil
265
+ )
266
+ end
267
+
268
+ sig do
269
+ override.returns(
270
+ { description: T.nilable(String), status: String, timestamp: Time }
271
+ )
272
+ end
273
+ def to_hash
274
+ end
275
+ end
276
+
277
+ class MessageBody < Sentdm::Internal::Type::BaseModel
278
+ OrHash =
279
+ T.type_alias do
280
+ T.any(
281
+ Sentdm::Models::MessageRetrieveResponse::MessageBody,
282
+ Sentdm::Internal::AnyHash
283
+ )
284
+ end
285
+
286
+ sig do
287
+ returns(
288
+ T.nilable(
289
+ T::Array[
290
+ Sentdm::Models::MessageRetrieveResponse::MessageBody::Button
291
+ ]
292
+ )
293
+ )
294
+ end
295
+ attr_accessor :buttons
296
+
297
+ sig { returns(T.nilable(String)) }
298
+ attr_reader :content
299
+
300
+ sig { params(content: String).void }
301
+ attr_writer :content
302
+
303
+ sig { returns(T.nilable(String)) }
304
+ attr_accessor :footer
305
+
306
+ sig { returns(T.nilable(String)) }
307
+ attr_accessor :header
308
+
309
+ # The message body content with variables substituted
310
+ sig do
311
+ params(
312
+ buttons:
313
+ T.nilable(
314
+ T::Array[
315
+ Sentdm::Models::MessageRetrieveResponse::MessageBody::Button::OrHash
316
+ ]
317
+ ),
318
+ content: String,
319
+ footer: T.nilable(String),
320
+ header: T.nilable(String)
321
+ ).returns(T.attached_class)
322
+ end
323
+ def self.new(buttons: nil, content: nil, footer: nil, header: nil)
324
+ end
325
+
326
+ sig do
327
+ override.returns(
328
+ {
329
+ buttons:
330
+ T.nilable(
331
+ T::Array[
332
+ Sentdm::Models::MessageRetrieveResponse::MessageBody::Button
333
+ ]
334
+ ),
335
+ content: String,
336
+ footer: T.nilable(String),
337
+ header: T.nilable(String)
338
+ }
339
+ )
340
+ end
341
+ def to_hash
342
+ end
343
+
344
+ class Button < Sentdm::Internal::Type::BaseModel
345
+ OrHash =
346
+ T.type_alias do
347
+ T.any(
348
+ Sentdm::Models::MessageRetrieveResponse::MessageBody::Button,
349
+ Sentdm::Internal::AnyHash
350
+ )
351
+ end
352
+
353
+ sig { returns(T.nilable(String)) }
354
+ attr_reader :type
355
+
356
+ sig { params(type: String).void }
357
+ attr_writer :type
358
+
359
+ sig { returns(T.nilable(String)) }
360
+ attr_reader :value
361
+
362
+ sig { params(value: String).void }
363
+ attr_writer :value
364
+
365
+ sig { params(type: String, value: String).returns(T.attached_class) }
366
+ def self.new(type: nil, value: nil)
367
+ end
368
+
369
+ sig { override.returns({ type: String, value: String }) }
370
+ def to_hash
371
+ end
372
+ end
373
+ end
374
+ end
375
+ end
376
+ end
@@ -0,0 +1,56 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class MessageSendQuickMessageParams < Sentdm::Internal::Type::BaseModel
6
+ extend Sentdm::Internal::Type::RequestParameters::Converter
7
+ include Sentdm::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ Sentdm::MessageSendQuickMessageParams,
13
+ Sentdm::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # The custom message content to include in the template
18
+ sig { returns(String) }
19
+ attr_accessor :custom_message
20
+
21
+ # The phone number to send the message to, in international format (e.g.,
22
+ # +1234567890)
23
+ sig { returns(String) }
24
+ attr_accessor :phone_number
25
+
26
+ sig do
27
+ params(
28
+ custom_message: String,
29
+ phone_number: String,
30
+ request_options: Sentdm::RequestOptions::OrHash
31
+ ).returns(T.attached_class)
32
+ end
33
+ def self.new(
34
+ # The custom message content to include in the template
35
+ custom_message:,
36
+ # The phone number to send the message to, in international format (e.g.,
37
+ # +1234567890)
38
+ phone_number:,
39
+ request_options: {}
40
+ )
41
+ end
42
+
43
+ sig do
44
+ override.returns(
45
+ {
46
+ custom_message: String,
47
+ phone_number: String,
48
+ request_options: Sentdm::RequestOptions
49
+ }
50
+ )
51
+ end
52
+ def to_hash
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,63 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class MessageSendToContactParams < Sentdm::Internal::Type::BaseModel
6
+ extend Sentdm::Internal::Type::RequestParameters::Converter
7
+ include Sentdm::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(Sentdm::MessageSendToContactParams, Sentdm::Internal::AnyHash)
12
+ end
13
+
14
+ # The unique identifier of the contact to send the message to
15
+ sig { returns(String) }
16
+ attr_accessor :contact_id
17
+
18
+ # The unique identifier of the template to use for the message
19
+ sig { returns(String) }
20
+ attr_accessor :template_id
21
+
22
+ # Optional key-value pairs of template variables to replace in the template body.
23
+ # For example, if your template contains "Hello {{name}}", you would provide {
24
+ # "name": "John Doe" }
25
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
26
+ attr_accessor :template_variables
27
+
28
+ sig do
29
+ params(
30
+ contact_id: String,
31
+ template_id: String,
32
+ template_variables: T.nilable(T::Hash[Symbol, String]),
33
+ request_options: Sentdm::RequestOptions::OrHash
34
+ ).returns(T.attached_class)
35
+ end
36
+ def self.new(
37
+ # The unique identifier of the contact to send the message to
38
+ contact_id:,
39
+ # The unique identifier of the template to use for the message
40
+ template_id:,
41
+ # Optional key-value pairs of template variables to replace in the template body.
42
+ # For example, if your template contains "Hello {{name}}", you would provide {
43
+ # "name": "John Doe" }
44
+ template_variables: nil,
45
+ request_options: {}
46
+ )
47
+ end
48
+
49
+ sig do
50
+ override.returns(
51
+ {
52
+ contact_id: String,
53
+ template_id: String,
54
+ template_variables: T.nilable(T::Hash[Symbol, String]),
55
+ request_options: Sentdm::RequestOptions
56
+ }
57
+ )
58
+ end
59
+ def to_hash
60
+ end
61
+ end
62
+ end
63
+ end