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,497 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class TemplateDefinition < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::TemplateDefinition, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ # Required template body with content for different channels (multi-channel,
12
+ # SMS-specific, or WhatsApp-specific)
13
+ sig { returns(Sentdm::TemplateDefinition::Body) }
14
+ attr_reader :body
15
+
16
+ sig { params(body: Sentdm::TemplateDefinition::Body::OrHash).void }
17
+ attr_writer :body
18
+
19
+ # Configuration specific to AUTHENTICATION category templates (optional)
20
+ sig do
21
+ returns(T.nilable(Sentdm::TemplateDefinition::AuthenticationConfig))
22
+ end
23
+ attr_reader :authentication_config
24
+
25
+ sig do
26
+ params(
27
+ authentication_config:
28
+ T.nilable(Sentdm::TemplateDefinition::AuthenticationConfig::OrHash)
29
+ ).void
30
+ end
31
+ attr_writer :authentication_config
32
+
33
+ # Optional list of interactive buttons (e.g., quick replies, URLs, phone numbers)
34
+ sig { returns(T.nilable(T::Array[Sentdm::TemplateDefinition::Button])) }
35
+ attr_accessor :buttons
36
+
37
+ # The version of the template definition format
38
+ sig { returns(T.nilable(String)) }
39
+ attr_accessor :definition_version
40
+
41
+ # Optional template footer with optional variables
42
+ sig { returns(T.nilable(Sentdm::TemplateDefinition::Footer)) }
43
+ attr_reader :footer
44
+
45
+ sig do
46
+ params(
47
+ footer: T.nilable(Sentdm::TemplateDefinition::Footer::OrHash)
48
+ ).void
49
+ end
50
+ attr_writer :footer
51
+
52
+ # Optional template header with optional variables
53
+ sig { returns(T.nilable(Sentdm::TemplateDefinition::Header)) }
54
+ attr_reader :header
55
+
56
+ sig do
57
+ params(
58
+ header: T.nilable(Sentdm::TemplateDefinition::Header::OrHash)
59
+ ).void
60
+ end
61
+ attr_writer :header
62
+
63
+ # Complete definition of a message template including header, body, footer, and
64
+ # buttons
65
+ sig do
66
+ params(
67
+ body: Sentdm::TemplateDefinition::Body::OrHash,
68
+ authentication_config:
69
+ T.nilable(Sentdm::TemplateDefinition::AuthenticationConfig::OrHash),
70
+ buttons:
71
+ T.nilable(T::Array[Sentdm::TemplateDefinition::Button::OrHash]),
72
+ definition_version: T.nilable(String),
73
+ footer: T.nilable(Sentdm::TemplateDefinition::Footer::OrHash),
74
+ header: T.nilable(Sentdm::TemplateDefinition::Header::OrHash)
75
+ ).returns(T.attached_class)
76
+ end
77
+ def self.new(
78
+ # Required template body with content for different channels (multi-channel,
79
+ # SMS-specific, or WhatsApp-specific)
80
+ body:,
81
+ # Configuration specific to AUTHENTICATION category templates (optional)
82
+ authentication_config: nil,
83
+ # Optional list of interactive buttons (e.g., quick replies, URLs, phone numbers)
84
+ buttons: nil,
85
+ # The version of the template definition format
86
+ definition_version: nil,
87
+ # Optional template footer with optional variables
88
+ footer: nil,
89
+ # Optional template header with optional variables
90
+ header: nil
91
+ )
92
+ end
93
+
94
+ sig do
95
+ override.returns(
96
+ {
97
+ body: Sentdm::TemplateDefinition::Body,
98
+ authentication_config:
99
+ T.nilable(Sentdm::TemplateDefinition::AuthenticationConfig),
100
+ buttons: T.nilable(T::Array[Sentdm::TemplateDefinition::Button]),
101
+ definition_version: T.nilable(String),
102
+ footer: T.nilable(Sentdm::TemplateDefinition::Footer),
103
+ header: T.nilable(Sentdm::TemplateDefinition::Header)
104
+ }
105
+ )
106
+ end
107
+ def to_hash
108
+ end
109
+
110
+ class Body < Sentdm::Internal::Type::BaseModel
111
+ OrHash =
112
+ T.type_alias do
113
+ T.any(Sentdm::TemplateDefinition::Body, Sentdm::Internal::AnyHash)
114
+ end
115
+
116
+ # Content that will be used for all channels (SMS and WhatsApp) unless
117
+ # channel-specific content is provided
118
+ sig { returns(T.nilable(Sentdm::TemplateBodyContent)) }
119
+ attr_reader :multi_channel
120
+
121
+ sig do
122
+ params(
123
+ multi_channel: T.nilable(Sentdm::TemplateBodyContent::OrHash)
124
+ ).void
125
+ end
126
+ attr_writer :multi_channel
127
+
128
+ # SMS-specific content that overrides multi-channel content for SMS messages
129
+ sig { returns(T.nilable(Sentdm::TemplateBodyContent)) }
130
+ attr_reader :sms
131
+
132
+ sig { params(sms: T.nilable(Sentdm::TemplateBodyContent::OrHash)).void }
133
+ attr_writer :sms
134
+
135
+ # WhatsApp-specific content that overrides multi-channel content for WhatsApp
136
+ # messages
137
+ sig { returns(T.nilable(Sentdm::TemplateBodyContent)) }
138
+ attr_reader :whatsapp
139
+
140
+ sig do
141
+ params(whatsapp: T.nilable(Sentdm::TemplateBodyContent::OrHash)).void
142
+ end
143
+ attr_writer :whatsapp
144
+
145
+ # Required template body with content for different channels (multi-channel,
146
+ # SMS-specific, or WhatsApp-specific)
147
+ sig do
148
+ params(
149
+ multi_channel: T.nilable(Sentdm::TemplateBodyContent::OrHash),
150
+ sms: T.nilable(Sentdm::TemplateBodyContent::OrHash),
151
+ whatsapp: T.nilable(Sentdm::TemplateBodyContent::OrHash)
152
+ ).returns(T.attached_class)
153
+ end
154
+ def self.new(
155
+ # Content that will be used for all channels (SMS and WhatsApp) unless
156
+ # channel-specific content is provided
157
+ multi_channel: nil,
158
+ # SMS-specific content that overrides multi-channel content for SMS messages
159
+ sms: nil,
160
+ # WhatsApp-specific content that overrides multi-channel content for WhatsApp
161
+ # messages
162
+ whatsapp: nil
163
+ )
164
+ end
165
+
166
+ sig do
167
+ override.returns(
168
+ {
169
+ multi_channel: T.nilable(Sentdm::TemplateBodyContent),
170
+ sms: T.nilable(Sentdm::TemplateBodyContent),
171
+ whatsapp: T.nilable(Sentdm::TemplateBodyContent)
172
+ }
173
+ )
174
+ end
175
+ def to_hash
176
+ end
177
+ end
178
+
179
+ class AuthenticationConfig < Sentdm::Internal::Type::BaseModel
180
+ OrHash =
181
+ T.type_alias do
182
+ T.any(
183
+ Sentdm::TemplateDefinition::AuthenticationConfig,
184
+ Sentdm::Internal::AnyHash
185
+ )
186
+ end
187
+
188
+ # Whether to add the security recommendation text: "For your security, do not
189
+ # share this code."
190
+ sig { returns(T.nilable(T::Boolean)) }
191
+ attr_reader :add_security_recommendation
192
+
193
+ sig { params(add_security_recommendation: T::Boolean).void }
194
+ attr_writer :add_security_recommendation
195
+
196
+ # Code expiration time in minutes (1-90). If set, adds footer: "This code expires
197
+ # in X minutes."
198
+ sig { returns(T.nilable(Integer)) }
199
+ attr_accessor :code_expiration_minutes
200
+
201
+ # Configuration specific to AUTHENTICATION category templates (optional)
202
+ sig do
203
+ params(
204
+ add_security_recommendation: T::Boolean,
205
+ code_expiration_minutes: T.nilable(Integer)
206
+ ).returns(T.attached_class)
207
+ end
208
+ def self.new(
209
+ # Whether to add the security recommendation text: "For your security, do not
210
+ # share this code."
211
+ add_security_recommendation: nil,
212
+ # Code expiration time in minutes (1-90). If set, adds footer: "This code expires
213
+ # in X minutes."
214
+ code_expiration_minutes: nil
215
+ )
216
+ end
217
+
218
+ sig do
219
+ override.returns(
220
+ {
221
+ add_security_recommendation: T::Boolean,
222
+ code_expiration_minutes: T.nilable(Integer)
223
+ }
224
+ )
225
+ end
226
+ def to_hash
227
+ end
228
+ end
229
+
230
+ class Button < Sentdm::Internal::Type::BaseModel
231
+ OrHash =
232
+ T.type_alias do
233
+ T.any(Sentdm::TemplateDefinition::Button, Sentdm::Internal::AnyHash)
234
+ end
235
+
236
+ # The unique identifier of the button (1-based index)
237
+ sig { returns(T.nilable(Integer)) }
238
+ attr_reader :id
239
+
240
+ sig { params(id: Integer).void }
241
+ attr_writer :id
242
+
243
+ # Properties specific to the button type
244
+ sig { returns(T.nilable(Sentdm::TemplateDefinition::Button::Props)) }
245
+ attr_reader :props
246
+
247
+ sig do
248
+ params(props: Sentdm::TemplateDefinition::Button::Props::OrHash).void
249
+ end
250
+ attr_writer :props
251
+
252
+ # The type of button (e.g., QUICK_REPLY, URL, PHONE_NUMBER, VOICE_CALL, COPY_CODE)
253
+ sig { returns(T.nilable(String)) }
254
+ attr_reader :type
255
+
256
+ sig { params(type: String).void }
257
+ attr_writer :type
258
+
259
+ # Interactive button in a message template
260
+ sig do
261
+ params(
262
+ id: Integer,
263
+ props: Sentdm::TemplateDefinition::Button::Props::OrHash,
264
+ type: String
265
+ ).returns(T.attached_class)
266
+ end
267
+ def self.new(
268
+ # The unique identifier of the button (1-based index)
269
+ id: nil,
270
+ # Properties specific to the button type
271
+ props: nil,
272
+ # The type of button (e.g., QUICK_REPLY, URL, PHONE_NUMBER, VOICE_CALL, COPY_CODE)
273
+ type: nil
274
+ )
275
+ end
276
+
277
+ sig do
278
+ override.returns(
279
+ {
280
+ id: Integer,
281
+ props: Sentdm::TemplateDefinition::Button::Props,
282
+ type: String
283
+ }
284
+ )
285
+ end
286
+ def to_hash
287
+ end
288
+
289
+ class Props < Sentdm::Internal::Type::BaseModel
290
+ OrHash =
291
+ T.type_alias do
292
+ T.any(
293
+ Sentdm::TemplateDefinition::Button::Props,
294
+ Sentdm::Internal::AnyHash
295
+ )
296
+ end
297
+
298
+ sig { returns(T.nilable(Integer)) }
299
+ attr_accessor :active_for
300
+
301
+ sig { returns(T.nilable(String)) }
302
+ attr_accessor :autofill_text
303
+
304
+ sig { returns(T.nilable(String)) }
305
+ attr_accessor :country_code
306
+
307
+ sig { returns(T.nilable(String)) }
308
+ attr_accessor :offer_code
309
+
310
+ sig { returns(T.nilable(String)) }
311
+ attr_accessor :otp_type
312
+
313
+ sig { returns(T.nilable(String)) }
314
+ attr_accessor :package_name
315
+
316
+ sig { returns(T.nilable(String)) }
317
+ attr_accessor :phone_number
318
+
319
+ sig { returns(T.nilable(String)) }
320
+ attr_accessor :quick_reply_type
321
+
322
+ sig { returns(T.nilable(String)) }
323
+ attr_accessor :signature_hash
324
+
325
+ sig { returns(T.nilable(String)) }
326
+ attr_accessor :text
327
+
328
+ sig { returns(T.nilable(String)) }
329
+ attr_accessor :url
330
+
331
+ sig { returns(T.nilable(String)) }
332
+ attr_accessor :url_type
333
+
334
+ # Properties specific to the button type
335
+ sig do
336
+ params(
337
+ active_for: T.nilable(Integer),
338
+ autofill_text: T.nilable(String),
339
+ country_code: T.nilable(String),
340
+ offer_code: T.nilable(String),
341
+ otp_type: T.nilable(String),
342
+ package_name: T.nilable(String),
343
+ phone_number: T.nilable(String),
344
+ quick_reply_type: T.nilable(String),
345
+ signature_hash: T.nilable(String),
346
+ text: T.nilable(String),
347
+ url: T.nilable(String),
348
+ url_type: T.nilable(String)
349
+ ).returns(T.attached_class)
350
+ end
351
+ def self.new(
352
+ active_for: nil,
353
+ autofill_text: nil,
354
+ country_code: nil,
355
+ offer_code: nil,
356
+ otp_type: nil,
357
+ package_name: nil,
358
+ phone_number: nil,
359
+ quick_reply_type: nil,
360
+ signature_hash: nil,
361
+ text: nil,
362
+ url: nil,
363
+ url_type: nil
364
+ )
365
+ end
366
+
367
+ sig do
368
+ override.returns(
369
+ {
370
+ active_for: T.nilable(Integer),
371
+ autofill_text: T.nilable(String),
372
+ country_code: T.nilable(String),
373
+ offer_code: T.nilable(String),
374
+ otp_type: T.nilable(String),
375
+ package_name: T.nilable(String),
376
+ phone_number: T.nilable(String),
377
+ quick_reply_type: T.nilable(String),
378
+ signature_hash: T.nilable(String),
379
+ text: T.nilable(String),
380
+ url: T.nilable(String),
381
+ url_type: T.nilable(String)
382
+ }
383
+ )
384
+ end
385
+ def to_hash
386
+ end
387
+ end
388
+ end
389
+
390
+ class Footer < Sentdm::Internal::Type::BaseModel
391
+ OrHash =
392
+ T.type_alias do
393
+ T.any(Sentdm::TemplateDefinition::Footer, Sentdm::Internal::AnyHash)
394
+ end
395
+
396
+ # The footer template text with optional variable placeholders
397
+ sig { returns(T.nilable(String)) }
398
+ attr_reader :template
399
+
400
+ sig { params(template: String).void }
401
+ attr_writer :template
402
+
403
+ # The type of footer (typically "text")
404
+ sig { returns(T.nilable(String)) }
405
+ attr_accessor :type
406
+
407
+ # List of variables used in the footer template
408
+ sig { returns(T.nilable(T::Array[Sentdm::TemplateVariable])) }
409
+ attr_accessor :variables
410
+
411
+ # Optional template footer with optional variables
412
+ sig do
413
+ params(
414
+ template: String,
415
+ type: T.nilable(String),
416
+ variables: T.nilable(T::Array[Sentdm::TemplateVariable::OrHash])
417
+ ).returns(T.attached_class)
418
+ end
419
+ def self.new(
420
+ # The footer template text with optional variable placeholders
421
+ template: nil,
422
+ # The type of footer (typically "text")
423
+ type: nil,
424
+ # List of variables used in the footer template
425
+ variables: nil
426
+ )
427
+ end
428
+
429
+ sig do
430
+ override.returns(
431
+ {
432
+ template: String,
433
+ type: T.nilable(String),
434
+ variables: T.nilable(T::Array[Sentdm::TemplateVariable])
435
+ }
436
+ )
437
+ end
438
+ def to_hash
439
+ end
440
+ end
441
+
442
+ class Header < Sentdm::Internal::Type::BaseModel
443
+ OrHash =
444
+ T.type_alias do
445
+ T.any(Sentdm::TemplateDefinition::Header, Sentdm::Internal::AnyHash)
446
+ end
447
+
448
+ # The header template text with optional variable placeholders (e.g., "Welcome to
449
+ # {{0:variable}}")
450
+ sig { returns(T.nilable(String)) }
451
+ attr_reader :template
452
+
453
+ sig { params(template: String).void }
454
+ attr_writer :template
455
+
456
+ # The type of header (e.g., "text", "image", "video", "document")
457
+ sig { returns(T.nilable(String)) }
458
+ attr_accessor :type
459
+
460
+ # List of variables used in the header template
461
+ sig { returns(T.nilable(T::Array[Sentdm::TemplateVariable])) }
462
+ attr_accessor :variables
463
+
464
+ # Optional template header with optional variables
465
+ sig do
466
+ params(
467
+ template: String,
468
+ type: T.nilable(String),
469
+ variables: T.nilable(T::Array[Sentdm::TemplateVariable::OrHash])
470
+ ).returns(T.attached_class)
471
+ end
472
+ def self.new(
473
+ # The header template text with optional variable placeholders (e.g., "Welcome to
474
+ # {{0:variable}}")
475
+ template: nil,
476
+ # The type of header (e.g., "text", "image", "video", "document")
477
+ type: nil,
478
+ # List of variables used in the header template
479
+ variables: nil
480
+ )
481
+ end
482
+
483
+ sig do
484
+ override.returns(
485
+ {
486
+ template: String,
487
+ type: T.nilable(String),
488
+ variables: T.nilable(T::Array[Sentdm::TemplateVariable])
489
+ }
490
+ )
491
+ end
492
+ def to_hash
493
+ end
494
+ end
495
+ end
496
+ end
497
+ end
@@ -0,0 +1,27 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class TemplateDeleteParams < 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::TemplateDeleteParams, 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,75 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class TemplateListParams < 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::TemplateListParams, Sentdm::Internal::AnyHash)
12
+ end
13
+
14
+ # The page number (zero-indexed). Default is 0.
15
+ sig { returns(Integer) }
16
+ attr_accessor :page
17
+
18
+ # The number of items per page (1-1000). Default is 100.
19
+ sig { returns(Integer) }
20
+ attr_accessor :page_size
21
+
22
+ # Optional filter by template category (e.g., MARKETING, UTILITY, AUTHENTICATION)
23
+ sig { returns(T.nilable(String)) }
24
+ attr_accessor :category
25
+
26
+ # Optional search term to filter templates by name or content
27
+ sig { returns(T.nilable(String)) }
28
+ attr_accessor :search
29
+
30
+ # Optional filter by template status (e.g., APPROVED, PENDING, REJECTED, DRAFT)
31
+ sig { returns(T.nilable(String)) }
32
+ attr_accessor :status
33
+
34
+ sig do
35
+ params(
36
+ page: Integer,
37
+ page_size: Integer,
38
+ category: T.nilable(String),
39
+ search: T.nilable(String),
40
+ status: T.nilable(String),
41
+ request_options: Sentdm::RequestOptions::OrHash
42
+ ).returns(T.attached_class)
43
+ end
44
+ def self.new(
45
+ # The page number (zero-indexed). Default is 0.
46
+ page:,
47
+ # The number of items per page (1-1000). Default is 100.
48
+ page_size:,
49
+ # Optional filter by template category (e.g., MARKETING, UTILITY, AUTHENTICATION)
50
+ category: nil,
51
+ # Optional search term to filter templates by name or content
52
+ search: nil,
53
+ # Optional filter by template status (e.g., APPROVED, PENDING, REJECTED, DRAFT)
54
+ status: nil,
55
+ request_options: {}
56
+ )
57
+ end
58
+
59
+ sig do
60
+ override.returns(
61
+ {
62
+ page: Integer,
63
+ page_size: Integer,
64
+ category: T.nilable(String),
65
+ search: T.nilable(String),
66
+ status: T.nilable(String),
67
+ request_options: Sentdm::RequestOptions
68
+ }
69
+ )
70
+ end
71
+ def to_hash
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,74 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class TemplateListResponse < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::Models::TemplateListResponse, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(T.nilable(T::Array[Sentdm::TemplateResponse])) }
12
+ attr_reader :items
13
+
14
+ sig { params(items: T::Array[Sentdm::TemplateResponse::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::TemplateResponse::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::TemplateResponse],
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