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.
- checksums.yaml +7 -0
- data/.ignore +2 -0
- data/CHANGELOG.md +11 -0
- data/README.md +240 -0
- data/SECURITY.md +27 -0
- data/lib/sentdm/client.rb +115 -0
- data/lib/sentdm/errors.rb +228 -0
- data/lib/sentdm/file_part.rb +58 -0
- data/lib/sentdm/internal/transport/base_client.rb +573 -0
- data/lib/sentdm/internal/transport/pooled_net_requester.rb +210 -0
- data/lib/sentdm/internal/type/array_of.rb +168 -0
- data/lib/sentdm/internal/type/base_model.rb +531 -0
- data/lib/sentdm/internal/type/base_page.rb +55 -0
- data/lib/sentdm/internal/type/boolean.rb +77 -0
- data/lib/sentdm/internal/type/converter.rb +327 -0
- data/lib/sentdm/internal/type/enum.rb +131 -0
- data/lib/sentdm/internal/type/file_input.rb +111 -0
- data/lib/sentdm/internal/type/hash_of.rb +188 -0
- data/lib/sentdm/internal/type/request_parameters.rb +42 -0
- data/lib/sentdm/internal/type/union.rb +237 -0
- data/lib/sentdm/internal/type/unknown.rb +81 -0
- data/lib/sentdm/internal/util.rb +920 -0
- data/lib/sentdm/internal.rb +20 -0
- data/lib/sentdm/models/contact_list_item.rb +96 -0
- data/lib/sentdm/models/contact_list_params.rb +30 -0
- data/lib/sentdm/models/contact_list_response.rb +40 -0
- data/lib/sentdm/models/contact_retrieve_by_phone_params.rb +22 -0
- data/lib/sentdm/models/contact_retrieve_id_params.rb +22 -0
- data/lib/sentdm/models/message_retrieve_params.rb +14 -0
- data/lib/sentdm/models/message_retrieve_response.rb +227 -0
- data/lib/sentdm/models/message_send_quick_message_params.rb +34 -0
- data/lib/sentdm/models/message_send_to_contact_params.rb +46 -0
- data/lib/sentdm/models/message_send_to_phone_params.rb +47 -0
- data/lib/sentdm/models/number_lookup_retrieve_params.rb +20 -0
- data/lib/sentdm/models/number_lookup_retrieve_response.rb +83 -0
- data/lib/sentdm/models/organization_list_params.rb +14 -0
- data/lib/sentdm/models/organization_list_response.rb +57 -0
- data/lib/sentdm/models/organization_retrieve_profiles_params.rb +14 -0
- data/lib/sentdm/models/organization_retrieve_profiles_response.rb +22 -0
- data/lib/sentdm/models/organizations/customer_user.rb +96 -0
- data/lib/sentdm/models/organizations/user_delete_params.rb +22 -0
- data/lib/sentdm/models/organizations/user_invite_params.rb +40 -0
- data/lib/sentdm/models/organizations/user_list_params.rb +28 -0
- data/lib/sentdm/models/organizations/user_list_response.rb +36 -0
- data/lib/sentdm/models/organizations/user_retrieve_params.rb +22 -0
- data/lib/sentdm/models/organizations/user_update_role_params.rb +28 -0
- data/lib/sentdm/models/profile_summary.rb +45 -0
- data/lib/sentdm/models/template_body_content.rb +27 -0
- data/lib/sentdm/models/template_create_params.rb +53 -0
- data/lib/sentdm/models/template_definition.rb +310 -0
- data/lib/sentdm/models/template_delete_params.rb +14 -0
- data/lib/sentdm/models/template_list_params.rb +54 -0
- data/lib/sentdm/models/template_list_response.rb +40 -0
- data/lib/sentdm/models/template_response.rb +100 -0
- data/lib/sentdm/models/template_retrieve_params.rb +14 -0
- data/lib/sentdm/models/template_variable.rb +74 -0
- data/lib/sentdm/models.rb +83 -0
- data/lib/sentdm/request_options.rb +77 -0
- data/lib/sentdm/resources/contacts.rb +88 -0
- data/lib/sentdm/resources/messages.rb +130 -0
- data/lib/sentdm/resources/number_lookup.rb +37 -0
- data/lib/sentdm/resources/organizations/users.rb +150 -0
- data/lib/sentdm/resources/organizations.rb +58 -0
- data/lib/sentdm/resources/templates.rb +131 -0
- data/lib/sentdm/version.rb +5 -0
- data/lib/sentdm.rb +94 -0
- data/manifest.yaml +17 -0
- data/rbi/sentdm/client.rbi +80 -0
- data/rbi/sentdm/errors.rbi +205 -0
- data/rbi/sentdm/file_part.rbi +37 -0
- data/rbi/sentdm/internal/transport/base_client.rbi +297 -0
- data/rbi/sentdm/internal/transport/pooled_net_requester.rbi +82 -0
- data/rbi/sentdm/internal/type/array_of.rbi +104 -0
- data/rbi/sentdm/internal/type/base_model.rbi +299 -0
- data/rbi/sentdm/internal/type/base_page.rbi +42 -0
- data/rbi/sentdm/internal/type/boolean.rbi +58 -0
- data/rbi/sentdm/internal/type/converter.rbi +204 -0
- data/rbi/sentdm/internal/type/enum.rbi +82 -0
- data/rbi/sentdm/internal/type/file_input.rbi +59 -0
- data/rbi/sentdm/internal/type/hash_of.rbi +104 -0
- data/rbi/sentdm/internal/type/request_parameters.rbi +29 -0
- data/rbi/sentdm/internal/type/union.rbi +126 -0
- data/rbi/sentdm/internal/type/unknown.rbi +58 -0
- data/rbi/sentdm/internal/util.rbi +484 -0
- data/rbi/sentdm/internal.rbi +16 -0
- data/rbi/sentdm/models/contact_list_item.rbi +144 -0
- data/rbi/sentdm/models/contact_list_params.rbi +51 -0
- data/rbi/sentdm/models/contact_list_response.rbi +74 -0
- data/rbi/sentdm/models/contact_retrieve_by_phone_params.rbi +40 -0
- data/rbi/sentdm/models/contact_retrieve_id_params.rbi +40 -0
- data/rbi/sentdm/models/message_retrieve_params.rbi +27 -0
- data/rbi/sentdm/models/message_retrieve_response.rbi +376 -0
- data/rbi/sentdm/models/message_send_quick_message_params.rbi +56 -0
- data/rbi/sentdm/models/message_send_to_contact_params.rbi +63 -0
- data/rbi/sentdm/models/message_send_to_phone_params.rbi +65 -0
- data/rbi/sentdm/models/number_lookup_retrieve_params.rbi +35 -0
- data/rbi/sentdm/models/number_lookup_retrieve_response.rbi +132 -0
- data/rbi/sentdm/models/organization_list_params.rbi +27 -0
- data/rbi/sentdm/models/organization_list_response.rbi +131 -0
- data/rbi/sentdm/models/organization_retrieve_profiles_params.rbi +30 -0
- data/rbi/sentdm/models/organization_retrieve_profiles_response.rbi +47 -0
- data/rbi/sentdm/models/organizations/customer_user.rbi +129 -0
- data/rbi/sentdm/models/organizations/user_delete_params.rbi +40 -0
- data/rbi/sentdm/models/organizations/user_invite_params.rbi +73 -0
- data/rbi/sentdm/models/organizations/user_list_params.rbi +48 -0
- data/rbi/sentdm/models/organizations/user_list_response.rbi +71 -0
- data/rbi/sentdm/models/organizations/user_retrieve_params.rbi +40 -0
- data/rbi/sentdm/models/organizations/user_update_role_params.rbi +51 -0
- data/rbi/sentdm/models/profile_summary.rbi +74 -0
- data/rbi/sentdm/models/template_body_content.rbi +46 -0
- data/rbi/sentdm/models/template_create_params.rbi +81 -0
- data/rbi/sentdm/models/template_definition.rbi +497 -0
- data/rbi/sentdm/models/template_delete_params.rbi +27 -0
- data/rbi/sentdm/models/template_list_params.rbi +75 -0
- data/rbi/sentdm/models/template_list_response.rbi +74 -0
- data/rbi/sentdm/models/template_response.rbi +149 -0
- data/rbi/sentdm/models/template_retrieve_params.rbi +27 -0
- data/rbi/sentdm/models/template_variable.rbi +120 -0
- data/rbi/sentdm/models.rbi +46 -0
- data/rbi/sentdm/request_options.rbi +55 -0
- data/rbi/sentdm/resources/contacts.rbi +63 -0
- data/rbi/sentdm/resources/messages.rbi +97 -0
- data/rbi/sentdm/resources/number_lookup.rbi +24 -0
- data/rbi/sentdm/resources/organizations/users.rbi +95 -0
- data/rbi/sentdm/resources/organizations.rbi +37 -0
- data/rbi/sentdm/resources/templates.rbi +103 -0
- data/rbi/sentdm/version.rbi +5 -0
- data/sig/sentdm/client.rbs +41 -0
- data/sig/sentdm/errors.rbs +117 -0
- data/sig/sentdm/file_part.rbs +21 -0
- data/sig/sentdm/internal/transport/base_client.rbs +133 -0
- data/sig/sentdm/internal/transport/pooled_net_requester.rbs +48 -0
- data/sig/sentdm/internal/type/array_of.rbs +48 -0
- data/sig/sentdm/internal/type/base_model.rbs +102 -0
- data/sig/sentdm/internal/type/base_page.rbs +24 -0
- data/sig/sentdm/internal/type/boolean.rbs +26 -0
- data/sig/sentdm/internal/type/converter.rbs +79 -0
- data/sig/sentdm/internal/type/enum.rbs +32 -0
- data/sig/sentdm/internal/type/file_input.rbs +25 -0
- data/sig/sentdm/internal/type/hash_of.rbs +48 -0
- data/sig/sentdm/internal/type/request_parameters.rbs +17 -0
- data/sig/sentdm/internal/type/union.rbs +52 -0
- data/sig/sentdm/internal/type/unknown.rbs +26 -0
- data/sig/sentdm/internal/util.rbs +185 -0
- data/sig/sentdm/internal.rbs +9 -0
- data/sig/sentdm/models/contact_list_item.rbs +85 -0
- data/sig/sentdm/models/contact_list_params.rbs +28 -0
- data/sig/sentdm/models/contact_list_response.rbs +52 -0
- data/sig/sentdm/models/contact_retrieve_by_phone_params.rbs +23 -0
- data/sig/sentdm/models/contact_retrieve_id_params.rbs +20 -0
- data/sig/sentdm/models/message_retrieve_params.rbs +15 -0
- data/sig/sentdm/models/message_retrieve_response.rbs +188 -0
- data/sig/sentdm/models/message_send_quick_message_params.rbs +28 -0
- data/sig/sentdm/models/message_send_to_contact_params.rbs +36 -0
- data/sig/sentdm/models/message_send_to_phone_params.rbs +36 -0
- data/sig/sentdm/models/number_lookup_retrieve_params.rbs +23 -0
- data/sig/sentdm/models/number_lookup_retrieve_response.rbs +78 -0
- data/sig/sentdm/models/organization_list_params.rbs +15 -0
- data/sig/sentdm/models/organization_list_response.rbs +76 -0
- data/sig/sentdm/models/organization_retrieve_profiles_params.rbs +15 -0
- data/sig/sentdm/models/organization_retrieve_profiles_response.rbs +28 -0
- data/sig/sentdm/models/organizations/customer_user.rbs +91 -0
- data/sig/sentdm/models/organizations/user_delete_params.rbs +25 -0
- data/sig/sentdm/models/organizations/user_invite_params.rbs +44 -0
- data/sig/sentdm/models/organizations/user_list_params.rbs +30 -0
- data/sig/sentdm/models/organizations/user_list_response.rbs +47 -0
- data/sig/sentdm/models/organizations/user_retrieve_params.rbs +25 -0
- data/sig/sentdm/models/organizations/user_update_role_params.rbs +32 -0
- data/sig/sentdm/models/profile_summary.rbs +51 -0
- data/sig/sentdm/models/template_body_content.rbs +32 -0
- data/sig/sentdm/models/template_create_params.rbs +43 -0
- data/sig/sentdm/models/template_definition.rbs +258 -0
- data/sig/sentdm/models/template_delete_params.rbs +15 -0
- data/sig/sentdm/models/template_list_params.rbs +46 -0
- data/sig/sentdm/models/template_list_response.rbs +52 -0
- data/sig/sentdm/models/template_response.rbs +92 -0
- data/sig/sentdm/models/template_retrieve_params.rbs +15 -0
- data/sig/sentdm/models/template_variable.rbs +87 -0
- data/sig/sentdm/models.rbs +43 -0
- data/sig/sentdm/request_options.rbs +34 -0
- data/sig/sentdm/resources/contacts.rbs +23 -0
- data/sig/sentdm/resources/messages.rbs +32 -0
- data/sig/sentdm/resources/number_lookup.rbs +12 -0
- data/sig/sentdm/resources/organizations/users.rbs +44 -0
- data/sig/sentdm/resources/organizations.rbs +18 -0
- data/sig/sentdm/resources/templates.rbs +31 -0
- data/sig/sentdm/version.rbs +3 -0
- 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
|