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,440 @@
1
+ # typed: strong
2
+
3
+ module PreludeSDK
4
+ module Models
5
+ class NotifySendBatchResponse < PreludeSDK::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ PreludeSDK::Models::NotifySendBatchResponse,
10
+ PreludeSDK::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # Number of failed sends.
15
+ sig { returns(Integer) }
16
+ attr_accessor :error_count
17
+
18
+ # The per-recipient result of the bulk send.
19
+ sig do
20
+ returns(T::Array[PreludeSDK::Models::NotifySendBatchResponse::Result])
21
+ end
22
+ attr_accessor :results
23
+
24
+ # Number of successful sends.
25
+ sig { returns(Integer) }
26
+ attr_accessor :success_count
27
+
28
+ # Total number of recipients.
29
+ sig { returns(Integer) }
30
+ attr_accessor :total_count
31
+
32
+ # The callback URL used for this bulk request, if any.
33
+ sig { returns(T.nilable(String)) }
34
+ attr_reader :callback_url
35
+
36
+ sig { params(callback_url: String).void }
37
+ attr_writer :callback_url
38
+
39
+ # A string that identifies this specific request.
40
+ sig { returns(T.nilable(String)) }
41
+ attr_reader :request_id
42
+
43
+ sig { params(request_id: String).void }
44
+ attr_writer :request_id
45
+
46
+ # The template identifier used for this bulk request.
47
+ sig { returns(T.nilable(String)) }
48
+ attr_reader :template_id
49
+
50
+ sig { params(template_id: String).void }
51
+ attr_writer :template_id
52
+
53
+ # The variables used for this bulk request.
54
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
55
+ attr_reader :variables
56
+
57
+ sig { params(variables: T::Hash[Symbol, String]).void }
58
+ attr_writer :variables
59
+
60
+ sig do
61
+ params(
62
+ error_count: Integer,
63
+ results:
64
+ T::Array[
65
+ PreludeSDK::Models::NotifySendBatchResponse::Result::OrHash
66
+ ],
67
+ success_count: Integer,
68
+ total_count: Integer,
69
+ callback_url: String,
70
+ request_id: String,
71
+ template_id: String,
72
+ variables: T::Hash[Symbol, String]
73
+ ).returns(T.attached_class)
74
+ end
75
+ def self.new(
76
+ # Number of failed sends.
77
+ error_count:,
78
+ # The per-recipient result of the bulk send.
79
+ results:,
80
+ # Number of successful sends.
81
+ success_count:,
82
+ # Total number of recipients.
83
+ total_count:,
84
+ # The callback URL used for this bulk request, if any.
85
+ callback_url: nil,
86
+ # A string that identifies this specific request.
87
+ request_id: nil,
88
+ # The template identifier used for this bulk request.
89
+ template_id: nil,
90
+ # The variables used for this bulk request.
91
+ variables: nil
92
+ )
93
+ end
94
+
95
+ sig do
96
+ override.returns(
97
+ {
98
+ error_count: Integer,
99
+ results:
100
+ T::Array[PreludeSDK::Models::NotifySendBatchResponse::Result],
101
+ success_count: Integer,
102
+ total_count: Integer,
103
+ callback_url: String,
104
+ request_id: String,
105
+ template_id: String,
106
+ variables: T::Hash[Symbol, String]
107
+ }
108
+ )
109
+ end
110
+ def to_hash
111
+ end
112
+
113
+ class Result < PreludeSDK::Internal::Type::BaseModel
114
+ OrHash =
115
+ T.type_alias do
116
+ T.any(
117
+ PreludeSDK::Models::NotifySendBatchResponse::Result,
118
+ PreludeSDK::Internal::AnyHash
119
+ )
120
+ end
121
+
122
+ # The recipient's phone number in E.164 format.
123
+ sig { returns(String) }
124
+ attr_accessor :phone_number
125
+
126
+ # Whether the message was accepted for delivery.
127
+ sig { returns(T::Boolean) }
128
+ attr_accessor :success
129
+
130
+ # Present only if success is false.
131
+ sig do
132
+ returns(
133
+ T.nilable(
134
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Error
135
+ )
136
+ )
137
+ end
138
+ attr_reader :error
139
+
140
+ sig do
141
+ params(
142
+ error:
143
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Error::OrHash
144
+ ).void
145
+ end
146
+ attr_writer :error
147
+
148
+ # Present only if success is true.
149
+ sig do
150
+ returns(
151
+ T.nilable(
152
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Message
153
+ )
154
+ )
155
+ end
156
+ attr_reader :message
157
+
158
+ sig do
159
+ params(
160
+ message:
161
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Message::OrHash
162
+ ).void
163
+ end
164
+ attr_writer :message
165
+
166
+ sig do
167
+ params(
168
+ phone_number: String,
169
+ success: T::Boolean,
170
+ error:
171
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Error::OrHash,
172
+ message:
173
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Message::OrHash
174
+ ).returns(T.attached_class)
175
+ end
176
+ def self.new(
177
+ # The recipient's phone number in E.164 format.
178
+ phone_number:,
179
+ # Whether the message was accepted for delivery.
180
+ success:,
181
+ # Present only if success is false.
182
+ error: nil,
183
+ # Present only if success is true.
184
+ message: nil
185
+ )
186
+ end
187
+
188
+ sig do
189
+ override.returns(
190
+ {
191
+ phone_number: String,
192
+ success: T::Boolean,
193
+ error: PreludeSDK::Models::NotifySendBatchResponse::Result::Error,
194
+ message:
195
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Message
196
+ }
197
+ )
198
+ end
199
+ def to_hash
200
+ end
201
+
202
+ class Error < PreludeSDK::Internal::Type::BaseModel
203
+ OrHash =
204
+ T.type_alias do
205
+ T.any(
206
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Error,
207
+ PreludeSDK::Internal::AnyHash
208
+ )
209
+ end
210
+
211
+ # The error code.
212
+ sig { returns(T.nilable(String)) }
213
+ attr_reader :code
214
+
215
+ sig { params(code: String).void }
216
+ attr_writer :code
217
+
218
+ # A human-readable error message.
219
+ sig { returns(T.nilable(String)) }
220
+ attr_reader :message
221
+
222
+ sig { params(message: String).void }
223
+ attr_writer :message
224
+
225
+ # Present only if success is false.
226
+ sig do
227
+ params(code: String, message: String).returns(T.attached_class)
228
+ end
229
+ def self.new(
230
+ # The error code.
231
+ code: nil,
232
+ # A human-readable error message.
233
+ message: nil
234
+ )
235
+ end
236
+
237
+ sig { override.returns({ code: String, message: String }) }
238
+ def to_hash
239
+ end
240
+ end
241
+
242
+ class Message < PreludeSDK::Internal::Type::BaseModel
243
+ OrHash =
244
+ T.type_alias do
245
+ T.any(
246
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Message,
247
+ PreludeSDK::Internal::AnyHash
248
+ )
249
+ end
250
+
251
+ # The message identifier.
252
+ sig { returns(T.nilable(String)) }
253
+ attr_reader :id
254
+
255
+ sig { params(id: String).void }
256
+ attr_writer :id
257
+
258
+ # The correlation identifier for the message.
259
+ sig { returns(T.nilable(String)) }
260
+ attr_reader :correlation_id
261
+
262
+ sig { params(correlation_id: String).void }
263
+ attr_writer :correlation_id
264
+
265
+ # The message creation date in RFC3339 format.
266
+ sig { returns(T.nilable(Time)) }
267
+ attr_reader :created_at
268
+
269
+ sig { params(created_at: Time).void }
270
+ attr_writer :created_at
271
+
272
+ # The SMS encoding type based on message content. GSM-7 supports standard
273
+ # characters (up to 160 chars per segment), while UCS-2 supports Unicode including
274
+ # emoji (up to 70 chars per segment). Only present for SMS messages.
275
+ sig do
276
+ returns(
277
+ T.nilable(
278
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Message::Encoding::TaggedSymbol
279
+ )
280
+ )
281
+ end
282
+ attr_reader :encoding
283
+
284
+ sig do
285
+ params(
286
+ encoding:
287
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Message::Encoding::OrSymbol
288
+ ).void
289
+ end
290
+ attr_writer :encoding
291
+
292
+ # The estimated number of SMS segments for this message. This value is not
293
+ # contractual; the actual segment count will be determined after the SMS is sent
294
+ # by the provider. Only present for SMS messages.
295
+ sig { returns(T.nilable(Integer)) }
296
+ attr_reader :estimated_segment_count
297
+
298
+ sig { params(estimated_segment_count: Integer).void }
299
+ attr_writer :estimated_segment_count
300
+
301
+ # The message expiration date in RFC3339 format.
302
+ sig { returns(T.nilable(Time)) }
303
+ attr_reader :expires_at
304
+
305
+ sig { params(expires_at: Time).void }
306
+ attr_writer :expires_at
307
+
308
+ # The Sender ID used for this message.
309
+ sig { returns(T.nilable(String)) }
310
+ attr_reader :from
311
+
312
+ sig { params(from: String).void }
313
+ attr_writer :from
314
+
315
+ # The locale used for the message, if any.
316
+ sig { returns(T.nilable(String)) }
317
+ attr_reader :locale
318
+
319
+ sig { params(locale: String).void }
320
+ attr_writer :locale
321
+
322
+ # When the message will actually be sent in RFC3339 format with timezone offset.
323
+ sig { returns(T.nilable(Time)) }
324
+ attr_reader :schedule_at
325
+
326
+ sig { params(schedule_at: Time).void }
327
+ attr_writer :schedule_at
328
+
329
+ # The recipient's phone number in E.164 format.
330
+ sig { returns(T.nilable(String)) }
331
+ attr_reader :to
332
+
333
+ sig { params(to: String).void }
334
+ attr_writer :to
335
+
336
+ # Present only if success is true.
337
+ sig do
338
+ params(
339
+ id: String,
340
+ correlation_id: String,
341
+ created_at: Time,
342
+ encoding:
343
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Message::Encoding::OrSymbol,
344
+ estimated_segment_count: Integer,
345
+ expires_at: Time,
346
+ from: String,
347
+ locale: String,
348
+ schedule_at: Time,
349
+ to: String
350
+ ).returns(T.attached_class)
351
+ end
352
+ def self.new(
353
+ # The message identifier.
354
+ id: nil,
355
+ # The correlation identifier for the message.
356
+ correlation_id: nil,
357
+ # The message creation date in RFC3339 format.
358
+ created_at: nil,
359
+ # The SMS encoding type based on message content. GSM-7 supports standard
360
+ # characters (up to 160 chars per segment), while UCS-2 supports Unicode including
361
+ # emoji (up to 70 chars per segment). Only present for SMS messages.
362
+ encoding: nil,
363
+ # The estimated number of SMS segments for this message. This value is not
364
+ # contractual; the actual segment count will be determined after the SMS is sent
365
+ # by the provider. Only present for SMS messages.
366
+ estimated_segment_count: nil,
367
+ # The message expiration date in RFC3339 format.
368
+ expires_at: nil,
369
+ # The Sender ID used for this message.
370
+ from: nil,
371
+ # The locale used for the message, if any.
372
+ locale: nil,
373
+ # When the message will actually be sent in RFC3339 format with timezone offset.
374
+ schedule_at: nil,
375
+ # The recipient's phone number in E.164 format.
376
+ to: nil
377
+ )
378
+ end
379
+
380
+ sig do
381
+ override.returns(
382
+ {
383
+ id: String,
384
+ correlation_id: String,
385
+ created_at: Time,
386
+ encoding:
387
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Message::Encoding::TaggedSymbol,
388
+ estimated_segment_count: Integer,
389
+ expires_at: Time,
390
+ from: String,
391
+ locale: String,
392
+ schedule_at: Time,
393
+ to: String
394
+ }
395
+ )
396
+ end
397
+ def to_hash
398
+ end
399
+
400
+ # The SMS encoding type based on message content. GSM-7 supports standard
401
+ # characters (up to 160 chars per segment), while UCS-2 supports Unicode including
402
+ # emoji (up to 70 chars per segment). Only present for SMS messages.
403
+ module Encoding
404
+ extend PreludeSDK::Internal::Type::Enum
405
+
406
+ TaggedSymbol =
407
+ T.type_alias do
408
+ T.all(
409
+ Symbol,
410
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Message::Encoding
411
+ )
412
+ end
413
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
414
+
415
+ GSM_7 =
416
+ T.let(
417
+ :"GSM-7",
418
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Message::Encoding::TaggedSymbol
419
+ )
420
+ UCS_2 =
421
+ T.let(
422
+ :"UCS-2",
423
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Message::Encoding::TaggedSymbol
424
+ )
425
+
426
+ sig do
427
+ override.returns(
428
+ T::Array[
429
+ PreludeSDK::Models::NotifySendBatchResponse::Result::Message::Encoding::TaggedSymbol
430
+ ]
431
+ )
432
+ end
433
+ def self.values
434
+ end
435
+ end
436
+ end
437
+ end
438
+ end
439
+ end
440
+ end
@@ -0,0 +1,249 @@
1
+ # typed: strong
2
+
3
+ module PreludeSDK
4
+ module Models
5
+ class NotifySendParams < 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(PreludeSDK::NotifySendParams, PreludeSDK::Internal::AnyHash)
12
+ end
13
+
14
+ # The template identifier configured by your Customer Success team.
15
+ sig { returns(String) }
16
+ attr_accessor :template_id
17
+
18
+ # The recipient's phone number in E.164 format.
19
+ sig { returns(String) }
20
+ attr_accessor :to
21
+
22
+ # The URL where webhooks will be sent for message delivery events.
23
+ sig { returns(T.nilable(String)) }
24
+ attr_reader :callback_url
25
+
26
+ sig { params(callback_url: String).void }
27
+ attr_writer :callback_url
28
+
29
+ # A user-defined identifier to correlate this message with your internal systems.
30
+ # It is returned in the response and any webhook events that refer to this
31
+ # message.
32
+ sig { returns(T.nilable(String)) }
33
+ attr_reader :correlation_id
34
+
35
+ sig { params(correlation_id: String).void }
36
+ attr_writer :correlation_id
37
+
38
+ # A document to attach to the message. Only supported on WhatsApp templates that
39
+ # have a document header.
40
+ sig { returns(T.nilable(PreludeSDK::NotifySendParams::Document)) }
41
+ attr_reader :document
42
+
43
+ sig do
44
+ params(document: PreludeSDK::NotifySendParams::Document::OrHash).void
45
+ end
46
+ attr_writer :document
47
+
48
+ # The message expiration date in RFC3339 format. The message will not be sent if
49
+ # this time is reached.
50
+ sig { returns(T.nilable(Time)) }
51
+ attr_reader :expires_at
52
+
53
+ sig { params(expires_at: Time).void }
54
+ attr_writer :expires_at
55
+
56
+ # The Sender ID. Must be approved for your account.
57
+ sig { returns(T.nilable(String)) }
58
+ attr_reader :from
59
+
60
+ sig { params(from: String).void }
61
+ attr_writer :from
62
+
63
+ # A BCP-47 formatted locale string with the language the text message will be sent
64
+ # to. If there's no locale set, the language will be determined by the country
65
+ # code of the phone number. If the language specified doesn't exist, the default
66
+ # set on the template will be used.
67
+ sig { returns(T.nilable(String)) }
68
+ attr_reader :locale
69
+
70
+ sig { params(locale: String).void }
71
+ attr_writer :locale
72
+
73
+ # The preferred channel to be used in priority for message delivery. If the
74
+ # channel is unavailable, the system will fallback to other available channels.
75
+ sig do
76
+ returns(
77
+ T.nilable(PreludeSDK::NotifySendParams::PreferredChannel::OrSymbol)
78
+ )
79
+ end
80
+ attr_reader :preferred_channel
81
+
82
+ sig do
83
+ params(
84
+ preferred_channel:
85
+ PreludeSDK::NotifySendParams::PreferredChannel::OrSymbol
86
+ ).void
87
+ end
88
+ attr_writer :preferred_channel
89
+
90
+ # Schedule the message for future delivery in RFC3339 format. Marketing messages
91
+ # can be scheduled up to 90 days in advance and will be automatically adjusted for
92
+ # compliance with local time window restrictions.
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: String,
110
+ callback_url: String,
111
+ correlation_id: String,
112
+ document: PreludeSDK::NotifySendParams::Document::OrHash,
113
+ expires_at: Time,
114
+ from: String,
115
+ locale: String,
116
+ preferred_channel:
117
+ PreludeSDK::NotifySendParams::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 recipient's phone number in E.164 format.
127
+ to:,
128
+ # The URL where webhooks will be sent for message delivery events.
129
+ callback_url: nil,
130
+ # A user-defined identifier to correlate this message with your internal systems.
131
+ # It is returned in the response and any webhook events that refer to this
132
+ # message.
133
+ correlation_id: nil,
134
+ # A document to attach to the message. Only supported on WhatsApp templates that
135
+ # have a document header.
136
+ document: nil,
137
+ # The message expiration date in RFC3339 format. The message will not be sent if
138
+ # this time is reached.
139
+ expires_at: nil,
140
+ # The Sender ID. Must be approved for your account.
141
+ from: nil,
142
+ # A BCP-47 formatted locale string with the language the text message will be sent
143
+ # to. If there's no locale set, the language will be determined by the country
144
+ # code of the phone number. If the language specified doesn't exist, the default
145
+ # set on the template will be used.
146
+ locale: nil,
147
+ # The preferred channel to be used in priority for message delivery. If the
148
+ # channel is unavailable, the system will fallback to other available channels.
149
+ preferred_channel: nil,
150
+ # Schedule the message for future delivery in RFC3339 format. Marketing messages
151
+ # can be scheduled up to 90 days in advance and will be automatically adjusted for
152
+ # compliance with local time window restrictions.
153
+ schedule_at: nil,
154
+ # The variables to be replaced in the template.
155
+ variables: nil,
156
+ request_options: {}
157
+ )
158
+ end
159
+
160
+ sig do
161
+ override.returns(
162
+ {
163
+ template_id: String,
164
+ to: String,
165
+ callback_url: String,
166
+ correlation_id: String,
167
+ document: PreludeSDK::NotifySendParams::Document,
168
+ expires_at: Time,
169
+ from: String,
170
+ locale: String,
171
+ preferred_channel:
172
+ PreludeSDK::NotifySendParams::PreferredChannel::OrSymbol,
173
+ schedule_at: Time,
174
+ variables: T::Hash[Symbol, String],
175
+ request_options: PreludeSDK::RequestOptions
176
+ }
177
+ )
178
+ end
179
+ def to_hash
180
+ end
181
+
182
+ class Document < PreludeSDK::Internal::Type::BaseModel
183
+ OrHash =
184
+ T.type_alias do
185
+ T.any(
186
+ PreludeSDK::NotifySendParams::Document,
187
+ PreludeSDK::Internal::AnyHash
188
+ )
189
+ end
190
+
191
+ # The filename to display for the document.
192
+ sig { returns(String) }
193
+ attr_accessor :filename
194
+
195
+ # The URL of the document to attach. Must be a valid HTTP or HTTPS URL.
196
+ sig { returns(String) }
197
+ attr_accessor :url
198
+
199
+ # A document to attach to the message. Only supported on WhatsApp templates that
200
+ # have a document header.
201
+ sig { params(filename: String, url: String).returns(T.attached_class) }
202
+ def self.new(
203
+ # The filename to display for the document.
204
+ filename:,
205
+ # The URL of the document to attach. Must be a valid HTTP or HTTPS URL.
206
+ url:
207
+ )
208
+ end
209
+
210
+ sig { override.returns({ filename: String, url: String }) }
211
+ def to_hash
212
+ end
213
+ end
214
+
215
+ # The preferred channel to be used in priority for message delivery. If the
216
+ # channel is unavailable, the system will fallback to other available channels.
217
+ module PreferredChannel
218
+ extend PreludeSDK::Internal::Type::Enum
219
+
220
+ TaggedSymbol =
221
+ T.type_alias do
222
+ T.all(Symbol, PreludeSDK::NotifySendParams::PreferredChannel)
223
+ end
224
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
225
+
226
+ SMS =
227
+ T.let(
228
+ :sms,
229
+ PreludeSDK::NotifySendParams::PreferredChannel::TaggedSymbol
230
+ )
231
+ WHATSAPP =
232
+ T.let(
233
+ :whatsapp,
234
+ PreludeSDK::NotifySendParams::PreferredChannel::TaggedSymbol
235
+ )
236
+
237
+ sig do
238
+ override.returns(
239
+ T::Array[
240
+ PreludeSDK::NotifySendParams::PreferredChannel::TaggedSymbol
241
+ ]
242
+ )
243
+ end
244
+ def self.values
245
+ end
246
+ end
247
+ end
248
+ end
249
+ end