prelude-sdk 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +61 -0
  3. data/README.md +9 -9
  4. data/lib/prelude_sdk/client.rb +11 -0
  5. data/lib/prelude_sdk/internal/transport/pooled_net_requester.rb +13 -11
  6. data/lib/prelude_sdk/internal/util.rb +39 -3
  7. data/lib/prelude_sdk/models/lookup_lookup_params.rb +9 -1
  8. data/lib/prelude_sdk/models/notify_get_subscription_config_params.rb +20 -0
  9. data/lib/prelude_sdk/models/notify_get_subscription_config_response.rb +120 -0
  10. data/lib/prelude_sdk/models/notify_get_subscription_phone_number_params.rb +26 -0
  11. data/lib/prelude_sdk/models/notify_get_subscription_phone_number_response.rb +104 -0
  12. data/lib/prelude_sdk/models/notify_list_subscription_configs_params.rb +30 -0
  13. data/lib/prelude_sdk/models/notify_list_subscription_configs_response.rb +144 -0
  14. data/lib/prelude_sdk/models/notify_list_subscription_phone_number_events_params.rb +44 -0
  15. data/lib/prelude_sdk/models/notify_list_subscription_phone_number_events_response.rb +132 -0
  16. data/lib/prelude_sdk/models/notify_list_subscription_phone_numbers_params.rb +56 -0
  17. data/lib/prelude_sdk/models/notify_list_subscription_phone_numbers_response.rb +132 -0
  18. data/lib/prelude_sdk/models/notify_send_batch_params.rb +141 -0
  19. data/lib/prelude_sdk/models/notify_send_batch_response.rb +239 -0
  20. data/lib/prelude_sdk/models/notify_send_params.rb +149 -0
  21. data/lib/prelude_sdk/models/notify_send_response.rb +129 -0
  22. data/lib/prelude_sdk/models/transactional_send_params.rb +32 -1
  23. data/lib/prelude_sdk/models/verification_create_params.rb +35 -48
  24. data/lib/prelude_sdk/models/verification_create_response.rb +15 -0
  25. data/lib/prelude_sdk/models/verification_management_delete_phone_number_params.rb +8 -1
  26. data/lib/prelude_sdk/models/verification_management_list_phone_numbers_params.rb +7 -1
  27. data/lib/prelude_sdk/models/verification_management_set_phone_number_params.rb +8 -1
  28. data/lib/prelude_sdk/models/watch_predict_params.rb +16 -12
  29. data/lib/prelude_sdk/models/watch_predict_response.rb +51 -1
  30. data/lib/prelude_sdk/models/watch_send_feedbacks_params.rb +1 -128
  31. data/lib/prelude_sdk/models.rb +15 -0
  32. data/lib/prelude_sdk/resources/lookup.rb +4 -1
  33. data/lib/prelude_sdk/resources/notify.rb +255 -0
  34. data/lib/prelude_sdk/resources/transactional.rb +4 -1
  35. data/lib/prelude_sdk/resources/verification.rb +1 -0
  36. data/lib/prelude_sdk/resources/verification_management.rb +1 -0
  37. data/lib/prelude_sdk/resources/watch.rb +1 -0
  38. data/lib/prelude_sdk/version.rb +1 -1
  39. data/lib/prelude_sdk.rb +16 -0
  40. data/manifest.yaml +1 -0
  41. data/rbi/prelude_sdk/client.rbi +10 -0
  42. data/rbi/prelude_sdk/internal/util.rbi +21 -1
  43. data/rbi/prelude_sdk/models/lookup_lookup_params.rbi +8 -0
  44. data/rbi/prelude_sdk/models/notify_get_subscription_config_params.rbi +38 -0
  45. data/rbi/prelude_sdk/models/notify_get_subscription_config_response.rbi +224 -0
  46. data/rbi/prelude_sdk/models/notify_get_subscription_phone_number_params.rbi +46 -0
  47. data/rbi/prelude_sdk/models/notify_get_subscription_phone_number_response.rbi +199 -0
  48. data/rbi/prelude_sdk/models/notify_list_subscription_configs_params.rbi +60 -0
  49. data/rbi/prelude_sdk/models/notify_list_subscription_configs_response.rbi +286 -0
  50. data/rbi/prelude_sdk/models/notify_list_subscription_phone_number_events_params.rbi +72 -0
  51. data/rbi/prelude_sdk/models/notify_list_subscription_phone_number_events_response.rbi +259 -0
  52. data/rbi/prelude_sdk/models/notify_list_subscription_phone_numbers_params.rbi +125 -0
  53. data/rbi/prelude_sdk/models/notify_list_subscription_phone_numbers_response.rbi +259 -0
  54. data/rbi/prelude_sdk/models/notify_send_batch_params.rbi +241 -0
  55. data/rbi/prelude_sdk/models/notify_send_batch_response.rbi +440 -0
  56. data/rbi/prelude_sdk/models/notify_send_params.rbi +249 -0
  57. data/rbi/prelude_sdk/models/notify_send_response.rbi +203 -0
  58. data/rbi/prelude_sdk/models/transactional_send_params.rbi +50 -0
  59. data/rbi/prelude_sdk/models/verification_create_params.rbi +53 -93
  60. data/rbi/prelude_sdk/models/verification_create_response.rbi +26 -0
  61. data/rbi/prelude_sdk/models/verification_management_delete_phone_number_params.rbi +16 -1
  62. data/rbi/prelude_sdk/models/verification_management_list_phone_numbers_params.rbi +21 -4
  63. data/rbi/prelude_sdk/models/verification_management_set_phone_number_params.rbi +16 -1
  64. data/rbi/prelude_sdk/models/watch_predict_params.rbi +24 -16
  65. data/rbi/prelude_sdk/models/watch_predict_response.rbi +152 -3
  66. data/rbi/prelude_sdk/models/watch_send_feedbacks_params.rbi +3 -243
  67. data/rbi/prelude_sdk/models.rbi +19 -0
  68. data/rbi/prelude_sdk/resources/lookup.rbi +2 -0
  69. data/rbi/prelude_sdk/resources/notify.rbi +227 -0
  70. data/rbi/prelude_sdk/resources/transactional.rbi +5 -0
  71. data/rbi/prelude_sdk/resources/verification.rbi +1 -0
  72. data/rbi/prelude_sdk/resources/verification_management.rbi +1 -0
  73. data/rbi/prelude_sdk/resources/watch.rbi +1 -0
  74. data/sig/prelude_sdk/client.rbs +2 -0
  75. data/sig/prelude_sdk/internal/util.rbs +10 -0
  76. data/sig/prelude_sdk/models/lookup_lookup_params.rbs +8 -1
  77. data/sig/prelude_sdk/models/notify_get_subscription_config_params.rbs +23 -0
  78. data/sig/prelude_sdk/models/notify_get_subscription_config_response.rbs +95 -0
  79. data/sig/prelude_sdk/models/notify_get_subscription_phone_number_params.rbs +28 -0
  80. data/sig/prelude_sdk/models/notify_get_subscription_phone_number_response.rbs +71 -0
  81. data/sig/prelude_sdk/models/notify_list_subscription_configs_params.rbs +32 -0
  82. data/sig/prelude_sdk/models/notify_list_subscription_configs_response.rbs +119 -0
  83. data/sig/prelude_sdk/models/notify_list_subscription_phone_number_events_params.rbs +45 -0
  84. data/sig/prelude_sdk/models/notify_list_subscription_phone_number_events_response.rbs +95 -0
  85. data/sig/prelude_sdk/models/notify_list_subscription_phone_numbers_params.rbs +60 -0
  86. data/sig/prelude_sdk/models/notify_list_subscription_phone_numbers_response.rbs +95 -0
  87. data/sig/prelude_sdk/models/notify_send_batch_params.rbs +121 -0
  88. data/sig/prelude_sdk/models/notify_send_batch_response.rbs +214 -0
  89. data/sig/prelude_sdk/models/notify_send_params.rbs +121 -0
  90. data/sig/prelude_sdk/models/notify_send_response.rbs +100 -0
  91. data/sig/prelude_sdk/models/transactional_send_params.rbs +21 -0
  92. data/sig/prelude_sdk/models/verification_create_params.rbs +2 -21
  93. data/sig/prelude_sdk/models/verification_create_response.rbs +2 -1
  94. data/sig/prelude_sdk/models/verification_management_delete_phone_number_params.rbs +9 -1
  95. data/sig/prelude_sdk/models/verification_management_list_phone_numbers_params.rbs +14 -3
  96. data/sig/prelude_sdk/models/verification_management_set_phone_number_params.rbs +9 -1
  97. data/sig/prelude_sdk/models/watch_predict_response.rbs +41 -3
  98. data/sig/prelude_sdk/models/watch_send_feedbacks_params.rbs +3 -110
  99. data/sig/prelude_sdk/models.rbs +14 -0
  100. data/sig/prelude_sdk/resources/notify.rbs +70 -0
  101. data/sig/prelude_sdk/resources/transactional.rbs +1 -0
  102. metadata +61 -2
@@ -0,0 +1,125 @@
1
+ # typed: strong
2
+
3
+ module PreludeSDK
4
+ module Models
5
+ class NotifyListSubscriptionPhoneNumbersParams < PreludeSDK::Internal::Type::BaseModel
6
+ extend PreludeSDK::Internal::Type::RequestParameters::Converter
7
+ include PreludeSDK::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ PreludeSDK::NotifyListSubscriptionPhoneNumbersParams,
13
+ PreludeSDK::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ sig { returns(String) }
18
+ attr_accessor :config_id
19
+
20
+ # Pagination cursor from the previous response
21
+ sig { returns(T.nilable(String)) }
22
+ attr_reader :cursor
23
+
24
+ sig { params(cursor: String).void }
25
+ attr_writer :cursor
26
+
27
+ # Maximum number of phone numbers to return per page
28
+ sig { returns(T.nilable(Integer)) }
29
+ attr_reader :limit
30
+
31
+ sig { params(limit: Integer).void }
32
+ attr_writer :limit
33
+
34
+ # Filter by subscription state
35
+ sig do
36
+ returns(
37
+ T.nilable(
38
+ PreludeSDK::NotifyListSubscriptionPhoneNumbersParams::State::OrSymbol
39
+ )
40
+ )
41
+ end
42
+ attr_reader :state
43
+
44
+ sig do
45
+ params(
46
+ state:
47
+ PreludeSDK::NotifyListSubscriptionPhoneNumbersParams::State::OrSymbol
48
+ ).void
49
+ end
50
+ attr_writer :state
51
+
52
+ sig do
53
+ params(
54
+ config_id: String,
55
+ cursor: String,
56
+ limit: Integer,
57
+ state:
58
+ PreludeSDK::NotifyListSubscriptionPhoneNumbersParams::State::OrSymbol,
59
+ request_options: PreludeSDK::RequestOptions::OrHash
60
+ ).returns(T.attached_class)
61
+ end
62
+ def self.new(
63
+ config_id:,
64
+ # Pagination cursor from the previous response
65
+ cursor: nil,
66
+ # Maximum number of phone numbers to return per page
67
+ limit: nil,
68
+ # Filter by subscription state
69
+ state: nil,
70
+ request_options: {}
71
+ )
72
+ end
73
+
74
+ sig do
75
+ override.returns(
76
+ {
77
+ config_id: String,
78
+ cursor: String,
79
+ limit: Integer,
80
+ state:
81
+ PreludeSDK::NotifyListSubscriptionPhoneNumbersParams::State::OrSymbol,
82
+ request_options: PreludeSDK::RequestOptions
83
+ }
84
+ )
85
+ end
86
+ def to_hash
87
+ end
88
+
89
+ # Filter by subscription state
90
+ module State
91
+ extend PreludeSDK::Internal::Type::Enum
92
+
93
+ TaggedSymbol =
94
+ T.type_alias do
95
+ T.all(
96
+ Symbol,
97
+ PreludeSDK::NotifyListSubscriptionPhoneNumbersParams::State
98
+ )
99
+ end
100
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
101
+
102
+ SUB =
103
+ T.let(
104
+ :SUB,
105
+ PreludeSDK::NotifyListSubscriptionPhoneNumbersParams::State::TaggedSymbol
106
+ )
107
+ UNSUB =
108
+ T.let(
109
+ :UNSUB,
110
+ PreludeSDK::NotifyListSubscriptionPhoneNumbersParams::State::TaggedSymbol
111
+ )
112
+
113
+ sig do
114
+ override.returns(
115
+ T::Array[
116
+ PreludeSDK::NotifyListSubscriptionPhoneNumbersParams::State::TaggedSymbol
117
+ ]
118
+ )
119
+ end
120
+ def self.values
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,259 @@
1
+ # typed: strong
2
+
3
+ module PreludeSDK
4
+ module Models
5
+ class NotifyListSubscriptionPhoneNumbersResponse < PreludeSDK::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse,
10
+ PreludeSDK::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # A list of phone numbers and their subscription statuses.
15
+ sig do
16
+ returns(
17
+ T::Array[
18
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber
19
+ ]
20
+ )
21
+ end
22
+ attr_accessor :phone_numbers
23
+
24
+ # Pagination cursor for the next page of results. Omitted if there are no more
25
+ # pages.
26
+ sig { returns(T.nilable(String)) }
27
+ attr_reader :next_cursor
28
+
29
+ sig { params(next_cursor: String).void }
30
+ attr_writer :next_cursor
31
+
32
+ sig do
33
+ params(
34
+ phone_numbers:
35
+ T::Array[
36
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::OrHash
37
+ ],
38
+ next_cursor: String
39
+ ).returns(T.attached_class)
40
+ end
41
+ def self.new(
42
+ # A list of phone numbers and their subscription statuses.
43
+ phone_numbers:,
44
+ # Pagination cursor for the next page of results. Omitted if there are no more
45
+ # pages.
46
+ next_cursor: nil
47
+ )
48
+ end
49
+
50
+ sig do
51
+ override.returns(
52
+ {
53
+ phone_numbers:
54
+ T::Array[
55
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber
56
+ ],
57
+ next_cursor: String
58
+ }
59
+ )
60
+ end
61
+ def to_hash
62
+ end
63
+
64
+ class PhoneNumber < PreludeSDK::Internal::Type::BaseModel
65
+ OrHash =
66
+ T.type_alias do
67
+ T.any(
68
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber,
69
+ PreludeSDK::Internal::AnyHash
70
+ )
71
+ end
72
+
73
+ # The subscription configuration ID.
74
+ sig { returns(String) }
75
+ attr_accessor :config_id
76
+
77
+ # The phone number in E.164 format.
78
+ sig { returns(String) }
79
+ attr_accessor :phone_number
80
+
81
+ # How the subscription state was changed:
82
+ #
83
+ # - `MO_KEYWORD` - User sent a keyword (STOP/START)
84
+ # - `API` - Changed via API
85
+ # - `CSV_IMPORT` - Imported from CSV
86
+ # - `CARRIER_DISCONNECT` - Automatically unsubscribed due to carrier disconnect
87
+ sig do
88
+ returns(
89
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::Source::TaggedSymbol
90
+ )
91
+ end
92
+ attr_accessor :source
93
+
94
+ # The subscription state:
95
+ #
96
+ # - `SUB` - Subscribed (user can receive marketing messages)
97
+ # - `UNSUB` - Unsubscribed (user has opted out)
98
+ sig do
99
+ returns(
100
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::State::TaggedSymbol
101
+ )
102
+ end
103
+ attr_accessor :state
104
+
105
+ # The date and time when the subscription status was last updated.
106
+ sig { returns(Time) }
107
+ attr_accessor :updated_at
108
+
109
+ # Additional context about the state change (e.g., the keyword that was sent).
110
+ sig { returns(T.nilable(String)) }
111
+ attr_reader :reason
112
+
113
+ sig { params(reason: String).void }
114
+ attr_writer :reason
115
+
116
+ sig do
117
+ params(
118
+ config_id: String,
119
+ phone_number: String,
120
+ source:
121
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::Source::OrSymbol,
122
+ state:
123
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::State::OrSymbol,
124
+ updated_at: Time,
125
+ reason: String
126
+ ).returns(T.attached_class)
127
+ end
128
+ def self.new(
129
+ # The subscription configuration ID.
130
+ config_id:,
131
+ # The phone number in E.164 format.
132
+ phone_number:,
133
+ # How the subscription state was changed:
134
+ #
135
+ # - `MO_KEYWORD` - User sent a keyword (STOP/START)
136
+ # - `API` - Changed via API
137
+ # - `CSV_IMPORT` - Imported from CSV
138
+ # - `CARRIER_DISCONNECT` - Automatically unsubscribed due to carrier disconnect
139
+ source:,
140
+ # The subscription state:
141
+ #
142
+ # - `SUB` - Subscribed (user can receive marketing messages)
143
+ # - `UNSUB` - Unsubscribed (user has opted out)
144
+ state:,
145
+ # The date and time when the subscription status was last updated.
146
+ updated_at:,
147
+ # Additional context about the state change (e.g., the keyword that was sent).
148
+ reason: nil
149
+ )
150
+ end
151
+
152
+ sig do
153
+ override.returns(
154
+ {
155
+ config_id: String,
156
+ phone_number: String,
157
+ source:
158
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::Source::TaggedSymbol,
159
+ state:
160
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::State::TaggedSymbol,
161
+ updated_at: Time,
162
+ reason: String
163
+ }
164
+ )
165
+ end
166
+ def to_hash
167
+ end
168
+
169
+ # How the subscription state was changed:
170
+ #
171
+ # - `MO_KEYWORD` - User sent a keyword (STOP/START)
172
+ # - `API` - Changed via API
173
+ # - `CSV_IMPORT` - Imported from CSV
174
+ # - `CARRIER_DISCONNECT` - Automatically unsubscribed due to carrier disconnect
175
+ module Source
176
+ extend PreludeSDK::Internal::Type::Enum
177
+
178
+ TaggedSymbol =
179
+ T.type_alias do
180
+ T.all(
181
+ Symbol,
182
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::Source
183
+ )
184
+ end
185
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
186
+
187
+ MO_KEYWORD =
188
+ T.let(
189
+ :MO_KEYWORD,
190
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::Source::TaggedSymbol
191
+ )
192
+ API =
193
+ T.let(
194
+ :API,
195
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::Source::TaggedSymbol
196
+ )
197
+ CSV_IMPORT =
198
+ T.let(
199
+ :CSV_IMPORT,
200
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::Source::TaggedSymbol
201
+ )
202
+ CARRIER_DISCONNECT =
203
+ T.let(
204
+ :CARRIER_DISCONNECT,
205
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::Source::TaggedSymbol
206
+ )
207
+
208
+ sig do
209
+ override.returns(
210
+ T::Array[
211
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::Source::TaggedSymbol
212
+ ]
213
+ )
214
+ end
215
+ def self.values
216
+ end
217
+ end
218
+
219
+ # The subscription state:
220
+ #
221
+ # - `SUB` - Subscribed (user can receive marketing messages)
222
+ # - `UNSUB` - Unsubscribed (user has opted out)
223
+ module State
224
+ extend PreludeSDK::Internal::Type::Enum
225
+
226
+ TaggedSymbol =
227
+ T.type_alias do
228
+ T.all(
229
+ Symbol,
230
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::State
231
+ )
232
+ end
233
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
234
+
235
+ SUB =
236
+ T.let(
237
+ :SUB,
238
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::State::TaggedSymbol
239
+ )
240
+ UNSUB =
241
+ T.let(
242
+ :UNSUB,
243
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::State::TaggedSymbol
244
+ )
245
+
246
+ sig do
247
+ override.returns(
248
+ T::Array[
249
+ PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse::PhoneNumber::State::TaggedSymbol
250
+ ]
251
+ )
252
+ end
253
+ def self.values
254
+ end
255
+ end
256
+ end
257
+ end
258
+ end
259
+ end
@@ -0,0 +1,241 @@
1
+ # typed: strong
2
+
3
+ module PreludeSDK
4
+ module Models
5
+ class NotifySendBatchParams < PreludeSDK::Internal::Type::BaseModel
6
+ extend PreludeSDK::Internal::Type::RequestParameters::Converter
7
+ include PreludeSDK::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ PreludeSDK::NotifySendBatchParams,
13
+ PreludeSDK::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # The template identifier configured by your Customer Success team.
18
+ sig { returns(String) }
19
+ attr_accessor :template_id
20
+
21
+ # The list of recipients' phone numbers in E.164 format.
22
+ sig { returns(T::Array[String]) }
23
+ attr_accessor :to
24
+
25
+ # The URL where webhooks will be sent for delivery events.
26
+ sig { returns(T.nilable(String)) }
27
+ attr_reader :callback_url
28
+
29
+ sig { params(callback_url: String).void }
30
+ attr_writer :callback_url
31
+
32
+ # A user-defined identifier to correlate this request with your internal systems.
33
+ sig { returns(T.nilable(String)) }
34
+ attr_reader :correlation_id
35
+
36
+ sig { params(correlation_id: String).void }
37
+ attr_writer :correlation_id
38
+
39
+ # A document to attach to the message. Only supported on WhatsApp templates that
40
+ # have a document header.
41
+ sig { returns(T.nilable(PreludeSDK::NotifySendBatchParams::Document)) }
42
+ attr_reader :document
43
+
44
+ sig do
45
+ params(
46
+ document: PreludeSDK::NotifySendBatchParams::Document::OrHash
47
+ ).void
48
+ end
49
+ attr_writer :document
50
+
51
+ # The message expiration date in RFC3339 format. Messages will not be sent after
52
+ # this time.
53
+ sig { returns(T.nilable(Time)) }
54
+ attr_reader :expires_at
55
+
56
+ sig { params(expires_at: Time).void }
57
+ attr_writer :expires_at
58
+
59
+ # The Sender ID. Must be approved for your account.
60
+ sig { returns(T.nilable(String)) }
61
+ attr_reader :from
62
+
63
+ sig { params(from: String).void }
64
+ attr_writer :from
65
+
66
+ # A BCP-47 formatted locale string.
67
+ sig { returns(T.nilable(String)) }
68
+ attr_reader :locale
69
+
70
+ sig { params(locale: String).void }
71
+ attr_writer :locale
72
+
73
+ # Preferred channel for delivery. If unavailable, automatic fallback applies.
74
+ sig do
75
+ returns(
76
+ T.nilable(
77
+ PreludeSDK::NotifySendBatchParams::PreferredChannel::OrSymbol
78
+ )
79
+ )
80
+ end
81
+ attr_reader :preferred_channel
82
+
83
+ sig do
84
+ params(
85
+ preferred_channel:
86
+ PreludeSDK::NotifySendBatchParams::PreferredChannel::OrSymbol
87
+ ).void
88
+ end
89
+ attr_writer :preferred_channel
90
+
91
+ # Schedule delivery in RFC3339 format. Marketing sends may be adjusted to comply
92
+ # with local time windows.
93
+ sig { returns(T.nilable(Time)) }
94
+ attr_reader :schedule_at
95
+
96
+ sig { params(schedule_at: Time).void }
97
+ attr_writer :schedule_at
98
+
99
+ # The variables to be replaced in the template.
100
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
101
+ attr_reader :variables
102
+
103
+ sig { params(variables: T::Hash[Symbol, String]).void }
104
+ attr_writer :variables
105
+
106
+ sig do
107
+ params(
108
+ template_id: String,
109
+ to: T::Array[String],
110
+ callback_url: String,
111
+ correlation_id: String,
112
+ document: PreludeSDK::NotifySendBatchParams::Document::OrHash,
113
+ expires_at: Time,
114
+ from: String,
115
+ locale: String,
116
+ preferred_channel:
117
+ PreludeSDK::NotifySendBatchParams::PreferredChannel::OrSymbol,
118
+ schedule_at: Time,
119
+ variables: T::Hash[Symbol, String],
120
+ request_options: PreludeSDK::RequestOptions::OrHash
121
+ ).returns(T.attached_class)
122
+ end
123
+ def self.new(
124
+ # The template identifier configured by your Customer Success team.
125
+ template_id:,
126
+ # The list of recipients' phone numbers in E.164 format.
127
+ to:,
128
+ # The URL where webhooks will be sent for delivery events.
129
+ callback_url: nil,
130
+ # A user-defined identifier to correlate this request with your internal systems.
131
+ correlation_id: nil,
132
+ # A document to attach to the message. Only supported on WhatsApp templates that
133
+ # have a document header.
134
+ document: nil,
135
+ # The message expiration date in RFC3339 format. Messages will not be sent after
136
+ # this time.
137
+ expires_at: nil,
138
+ # The Sender ID. Must be approved for your account.
139
+ from: nil,
140
+ # A BCP-47 formatted locale string.
141
+ locale: nil,
142
+ # Preferred channel for delivery. If unavailable, automatic fallback applies.
143
+ preferred_channel: nil,
144
+ # Schedule delivery in RFC3339 format. Marketing sends may be adjusted to comply
145
+ # with local time windows.
146
+ schedule_at: nil,
147
+ # The variables to be replaced in the template.
148
+ variables: nil,
149
+ request_options: {}
150
+ )
151
+ end
152
+
153
+ sig do
154
+ override.returns(
155
+ {
156
+ template_id: String,
157
+ to: T::Array[String],
158
+ callback_url: String,
159
+ correlation_id: String,
160
+ document: PreludeSDK::NotifySendBatchParams::Document,
161
+ expires_at: Time,
162
+ from: String,
163
+ locale: String,
164
+ preferred_channel:
165
+ PreludeSDK::NotifySendBatchParams::PreferredChannel::OrSymbol,
166
+ schedule_at: Time,
167
+ variables: T::Hash[Symbol, String],
168
+ request_options: PreludeSDK::RequestOptions
169
+ }
170
+ )
171
+ end
172
+ def to_hash
173
+ end
174
+
175
+ class Document < PreludeSDK::Internal::Type::BaseModel
176
+ OrHash =
177
+ T.type_alias do
178
+ T.any(
179
+ PreludeSDK::NotifySendBatchParams::Document,
180
+ PreludeSDK::Internal::AnyHash
181
+ )
182
+ end
183
+
184
+ # The filename to display for the document.
185
+ sig { returns(String) }
186
+ attr_accessor :filename
187
+
188
+ # The URL of the document to attach. Must be a valid HTTP or HTTPS URL.
189
+ sig { returns(String) }
190
+ attr_accessor :url
191
+
192
+ # A document to attach to the message. Only supported on WhatsApp templates that
193
+ # have a document header.
194
+ sig { params(filename: String, url: String).returns(T.attached_class) }
195
+ def self.new(
196
+ # The filename to display for the document.
197
+ filename:,
198
+ # The URL of the document to attach. Must be a valid HTTP or HTTPS URL.
199
+ url:
200
+ )
201
+ end
202
+
203
+ sig { override.returns({ filename: String, url: String }) }
204
+ def to_hash
205
+ end
206
+ end
207
+
208
+ # Preferred channel for delivery. If unavailable, automatic fallback applies.
209
+ module PreferredChannel
210
+ extend PreludeSDK::Internal::Type::Enum
211
+
212
+ TaggedSymbol =
213
+ T.type_alias do
214
+ T.all(Symbol, PreludeSDK::NotifySendBatchParams::PreferredChannel)
215
+ end
216
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
217
+
218
+ SMS =
219
+ T.let(
220
+ :sms,
221
+ PreludeSDK::NotifySendBatchParams::PreferredChannel::TaggedSymbol
222
+ )
223
+ WHATSAPP =
224
+ T.let(
225
+ :whatsapp,
226
+ PreludeSDK::NotifySendBatchParams::PreferredChannel::TaggedSymbol
227
+ )
228
+
229
+ sig do
230
+ override.returns(
231
+ T::Array[
232
+ PreludeSDK::NotifySendBatchParams::PreferredChannel::TaggedSymbol
233
+ ]
234
+ )
235
+ end
236
+ def self.values
237
+ end
238
+ end
239
+ end
240
+ end
241
+ end