trycourier 6.4.3 → 6.5.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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/README.md +1 -1
  4. data/lib/courier/models/elemental_channel_node.rb +13 -1
  5. data/lib/courier/models/elemental_node_non_channel.rb +188 -0
  6. data/lib/courier/models/email_footer.rb +114 -7
  7. data/lib/courier/models/notification_template_update_request.rb +6 -3
  8. data/lib/courier/models/users/token_add_single_params.rb +13 -5
  9. data/lib/courier/models/users/token_update_params.rb +30 -4
  10. data/lib/courier/models/users/user_token.rb +13 -5
  11. data/lib/courier/models.rb +2 -0
  12. data/lib/courier/resources/journeys/templates.rb +7 -0
  13. data/lib/courier/resources/notifications.rb +10 -0
  14. data/lib/courier/resources/tenants/templates.rb +10 -0
  15. data/lib/courier/resources/users/tokens.rb +1 -1
  16. data/lib/courier/version.rb +1 -1
  17. data/lib/courier.rb +1 -0
  18. data/rbi/courier/models/elemental_channel_node.rbi +54 -0
  19. data/rbi/courier/models/elemental_node_non_channel.rbi +561 -0
  20. data/rbi/courier/models/email_footer.rbi +229 -7
  21. data/rbi/courier/models/notification_template_update_request.rbi +6 -3
  22. data/rbi/courier/models/users/token_add_single_params.rbi +18 -6
  23. data/rbi/courier/models/users/token_update_params.rbi +59 -7
  24. data/rbi/courier/models/users/user_token.rbi +18 -6
  25. data/rbi/courier/models.rbi +2 -0
  26. data/rbi/courier/resources/journeys/templates.rbi +7 -0
  27. data/rbi/courier/resources/notifications.rbi +10 -0
  28. data/rbi/courier/resources/tenants/templates.rbi +10 -0
  29. data/rbi/courier/resources/users/tokens.rbi +6 -2
  30. data/sig/courier/models/elemental_channel_node.rbs +9 -0
  31. data/sig/courier/models/elemental_node_non_channel.rbs +221 -0
  32. data/sig/courier/models/email_footer.rbs +107 -5
  33. data/sig/courier/models/users/token_update_params.rbs +27 -4
  34. data/sig/courier/models.rbs +2 -0
  35. metadata +5 -2
@@ -16,6 +16,28 @@ module Courier
16
16
  sig { params(channel: String).void }
17
17
  attr_writer :channel
18
18
 
19
+ # An array of elements to apply to the channel. If `raw` has not been specified,
20
+ # `elements` is `required`. Channel elements cannot nest, so these are any node
21
+ # except another channel block.
22
+ sig do
23
+ returns(
24
+ T.nilable(
25
+ T::Array[
26
+ T.any(
27
+ Courier::ElementalNodeNonChannel::UnionMember0,
28
+ Courier::ElementalNodeNonChannel::UnionMember1,
29
+ Courier::ElementalNodeNonChannel::UnionMember2,
30
+ Courier::ElementalNodeNonChannel::UnionMember3,
31
+ Courier::ElementalNodeNonChannel::UnionMember4,
32
+ Courier::ElementalNodeNonChannel::UnionMember5,
33
+ Courier::ElementalNodeNonChannel::UnionMember6
34
+ )
35
+ ]
36
+ )
37
+ )
38
+ end
39
+ attr_accessor :elements
40
+
19
41
  # Email only. Document-level base font size (CSS px, e.g. `16px`) for body content
20
42
  # — text, quote, list and action button labels. Heading styles (`h1`/`h2`/`h3`)
21
43
  # and `subtext` keep their preset sizes.
@@ -50,6 +72,20 @@ module Courier
50
72
  sig do
51
73
  params(
52
74
  channel: String,
75
+ elements:
76
+ T.nilable(
77
+ T::Array[
78
+ T.any(
79
+ Courier::ElementalNodeNonChannel::UnionMember0::OrHash,
80
+ Courier::ElementalNodeNonChannel::UnionMember1::OrHash,
81
+ Courier::ElementalNodeNonChannel::UnionMember2::OrHash,
82
+ Courier::ElementalNodeNonChannel::UnionMember3::OrHash,
83
+ Courier::ElementalNodeNonChannel::UnionMember4::OrHash,
84
+ Courier::ElementalNodeNonChannel::UnionMember5::OrHash,
85
+ Courier::ElementalNodeNonChannel::UnionMember6::OrHash
86
+ )
87
+ ]
88
+ ),
53
89
  font_size: T.nilable(String),
54
90
  line_height: T.nilable(String),
55
91
  padding: T.nilable(String),
@@ -60,6 +96,10 @@ module Courier
60
96
  # The channel the contents of this element should be applied to. Can be `email`,
61
97
  # `push`, `direct_message`, `sms` or a provider such as slack
62
98
  channel: nil,
99
+ # An array of elements to apply to the channel. If `raw` has not been specified,
100
+ # `elements` is `required`. Channel elements cannot nest, so these are any node
101
+ # except another channel block.
102
+ elements: nil,
63
103
  # Email only. Document-level base font size (CSS px, e.g. `16px`) for body content
64
104
  # — text, quote, list and action button labels. Heading styles (`h1`/`h2`/`h3`)
65
105
  # and `subtext` keep their preset sizes.
@@ -80,6 +120,20 @@ module Courier
80
120
  override.returns(
81
121
  {
82
122
  channel: String,
123
+ elements:
124
+ T.nilable(
125
+ T::Array[
126
+ T.any(
127
+ Courier::ElementalNodeNonChannel::UnionMember0,
128
+ Courier::ElementalNodeNonChannel::UnionMember1,
129
+ Courier::ElementalNodeNonChannel::UnionMember2,
130
+ Courier::ElementalNodeNonChannel::UnionMember3,
131
+ Courier::ElementalNodeNonChannel::UnionMember4,
132
+ Courier::ElementalNodeNonChannel::UnionMember5,
133
+ Courier::ElementalNodeNonChannel::UnionMember6
134
+ )
135
+ ]
136
+ ),
83
137
  font_size: T.nilable(String),
84
138
  line_height: T.nilable(String),
85
139
  padding: T.nilable(String),
@@ -0,0 +1,561 @@
1
+ # typed: strong
2
+
3
+ module Courier
4
+ module Models
5
+ # Any Elemental node except a channel block. Channel elements are only valid as
6
+ # top-level elements, so the `elements` nested inside one can never be another
7
+ # channel. Keeping this union channel-free also keeps the schema acyclic; a
8
+ # recursive `$ref` here breaks the generated Python models.
9
+ module ElementalNodeNonChannel
10
+ extend Courier::Internal::Type::Union
11
+
12
+ Variants =
13
+ T.type_alias do
14
+ T.any(
15
+ Courier::ElementalNodeNonChannel::UnionMember0,
16
+ Courier::ElementalNodeNonChannel::UnionMember1,
17
+ Courier::ElementalNodeNonChannel::UnionMember2,
18
+ Courier::ElementalNodeNonChannel::UnionMember3,
19
+ Courier::ElementalNodeNonChannel::UnionMember4,
20
+ Courier::ElementalNodeNonChannel::UnionMember5,
21
+ Courier::ElementalNodeNonChannel::UnionMember6
22
+ )
23
+ end
24
+
25
+ class UnionMember0 < Courier::Models::ElementalTextNode
26
+ OrHash =
27
+ T.type_alias do
28
+ T.any(
29
+ Courier::ElementalNodeNonChannel::UnionMember0,
30
+ Courier::Internal::AnyHash
31
+ )
32
+ end
33
+
34
+ sig do
35
+ returns(
36
+ T.nilable(
37
+ Courier::ElementalNodeNonChannel::UnionMember0::Type::OrSymbol
38
+ )
39
+ )
40
+ end
41
+ attr_reader :type
42
+
43
+ sig do
44
+ params(
45
+ type: Courier::ElementalNodeNonChannel::UnionMember0::Type::OrSymbol
46
+ ).void
47
+ end
48
+ attr_writer :type
49
+
50
+ # Represents a body of text to be rendered inside of the notification.
51
+ sig do
52
+ params(
53
+ type: Courier::ElementalNodeNonChannel::UnionMember0::Type::OrSymbol
54
+ ).returns(T.attached_class)
55
+ end
56
+ def self.new(type: nil)
57
+ end
58
+
59
+ sig do
60
+ override.returns(
61
+ {
62
+ type:
63
+ Courier::ElementalNodeNonChannel::UnionMember0::Type::OrSymbol
64
+ }
65
+ )
66
+ end
67
+ def to_hash
68
+ end
69
+
70
+ module Type
71
+ extend Courier::Internal::Type::Enum
72
+
73
+ TaggedSymbol =
74
+ T.type_alias do
75
+ T.all(
76
+ Symbol,
77
+ Courier::ElementalNodeNonChannel::UnionMember0::Type
78
+ )
79
+ end
80
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
81
+
82
+ TEXT =
83
+ T.let(
84
+ :text,
85
+ Courier::ElementalNodeNonChannel::UnionMember0::Type::TaggedSymbol
86
+ )
87
+
88
+ sig do
89
+ override.returns(
90
+ T::Array[
91
+ Courier::ElementalNodeNonChannel::UnionMember0::Type::TaggedSymbol
92
+ ]
93
+ )
94
+ end
95
+ def self.values
96
+ end
97
+ end
98
+ end
99
+
100
+ class UnionMember1 < Courier::Models::ElementalMetaNode
101
+ OrHash =
102
+ T.type_alias do
103
+ T.any(
104
+ Courier::ElementalNodeNonChannel::UnionMember1,
105
+ Courier::Internal::AnyHash
106
+ )
107
+ end
108
+
109
+ sig do
110
+ returns(
111
+ T.nilable(
112
+ Courier::ElementalNodeNonChannel::UnionMember1::Type::OrSymbol
113
+ )
114
+ )
115
+ end
116
+ attr_reader :type
117
+
118
+ sig do
119
+ params(
120
+ type: Courier::ElementalNodeNonChannel::UnionMember1::Type::OrSymbol
121
+ ).void
122
+ end
123
+ attr_writer :type
124
+
125
+ # The meta element contains information describing the notification that may be
126
+ # used by a particular channel or provider. One important field is the title field
127
+ # which will be used as the title for channels that support it.
128
+ sig do
129
+ params(
130
+ type: Courier::ElementalNodeNonChannel::UnionMember1::Type::OrSymbol
131
+ ).returns(T.attached_class)
132
+ end
133
+ def self.new(type: nil)
134
+ end
135
+
136
+ sig do
137
+ override.returns(
138
+ {
139
+ type:
140
+ Courier::ElementalNodeNonChannel::UnionMember1::Type::OrSymbol
141
+ }
142
+ )
143
+ end
144
+ def to_hash
145
+ end
146
+
147
+ module Type
148
+ extend Courier::Internal::Type::Enum
149
+
150
+ TaggedSymbol =
151
+ T.type_alias do
152
+ T.all(
153
+ Symbol,
154
+ Courier::ElementalNodeNonChannel::UnionMember1::Type
155
+ )
156
+ end
157
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
158
+
159
+ META =
160
+ T.let(
161
+ :meta,
162
+ Courier::ElementalNodeNonChannel::UnionMember1::Type::TaggedSymbol
163
+ )
164
+
165
+ sig do
166
+ override.returns(
167
+ T::Array[
168
+ Courier::ElementalNodeNonChannel::UnionMember1::Type::TaggedSymbol
169
+ ]
170
+ )
171
+ end
172
+ def self.values
173
+ end
174
+ end
175
+ end
176
+
177
+ class UnionMember2 < Courier::Models::ElementalImageNode
178
+ OrHash =
179
+ T.type_alias do
180
+ T.any(
181
+ Courier::ElementalNodeNonChannel::UnionMember2,
182
+ Courier::Internal::AnyHash
183
+ )
184
+ end
185
+
186
+ sig do
187
+ returns(
188
+ T.nilable(
189
+ Courier::ElementalNodeNonChannel::UnionMember2::Type::OrSymbol
190
+ )
191
+ )
192
+ end
193
+ attr_reader :type
194
+
195
+ sig do
196
+ params(
197
+ type: Courier::ElementalNodeNonChannel::UnionMember2::Type::OrSymbol
198
+ ).void
199
+ end
200
+ attr_writer :type
201
+
202
+ # Used to embed an image into the notification.
203
+ sig do
204
+ params(
205
+ type: Courier::ElementalNodeNonChannel::UnionMember2::Type::OrSymbol
206
+ ).returns(T.attached_class)
207
+ end
208
+ def self.new(type: nil)
209
+ end
210
+
211
+ sig do
212
+ override.returns(
213
+ {
214
+ type:
215
+ Courier::ElementalNodeNonChannel::UnionMember2::Type::OrSymbol
216
+ }
217
+ )
218
+ end
219
+ def to_hash
220
+ end
221
+
222
+ module Type
223
+ extend Courier::Internal::Type::Enum
224
+
225
+ TaggedSymbol =
226
+ T.type_alias do
227
+ T.all(
228
+ Symbol,
229
+ Courier::ElementalNodeNonChannel::UnionMember2::Type
230
+ )
231
+ end
232
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
233
+
234
+ IMAGE =
235
+ T.let(
236
+ :image,
237
+ Courier::ElementalNodeNonChannel::UnionMember2::Type::TaggedSymbol
238
+ )
239
+
240
+ sig do
241
+ override.returns(
242
+ T::Array[
243
+ Courier::ElementalNodeNonChannel::UnionMember2::Type::TaggedSymbol
244
+ ]
245
+ )
246
+ end
247
+ def self.values
248
+ end
249
+ end
250
+ end
251
+
252
+ class UnionMember3 < Courier::Models::ElementalActionNode
253
+ OrHash =
254
+ T.type_alias do
255
+ T.any(
256
+ Courier::ElementalNodeNonChannel::UnionMember3,
257
+ Courier::Internal::AnyHash
258
+ )
259
+ end
260
+
261
+ sig do
262
+ returns(
263
+ T.nilable(
264
+ Courier::ElementalNodeNonChannel::UnionMember3::Type::OrSymbol
265
+ )
266
+ )
267
+ end
268
+ attr_reader :type
269
+
270
+ sig do
271
+ params(
272
+ type: Courier::ElementalNodeNonChannel::UnionMember3::Type::OrSymbol
273
+ ).void
274
+ end
275
+ attr_writer :type
276
+
277
+ # Allows the user to execute an action. Can be a button or a link.
278
+ sig do
279
+ params(
280
+ type: Courier::ElementalNodeNonChannel::UnionMember3::Type::OrSymbol
281
+ ).returns(T.attached_class)
282
+ end
283
+ def self.new(type: nil)
284
+ end
285
+
286
+ sig do
287
+ override.returns(
288
+ {
289
+ type:
290
+ Courier::ElementalNodeNonChannel::UnionMember3::Type::OrSymbol
291
+ }
292
+ )
293
+ end
294
+ def to_hash
295
+ end
296
+
297
+ module Type
298
+ extend Courier::Internal::Type::Enum
299
+
300
+ TaggedSymbol =
301
+ T.type_alias do
302
+ T.all(
303
+ Symbol,
304
+ Courier::ElementalNodeNonChannel::UnionMember3::Type
305
+ )
306
+ end
307
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
308
+
309
+ ACTION =
310
+ T.let(
311
+ :action,
312
+ Courier::ElementalNodeNonChannel::UnionMember3::Type::TaggedSymbol
313
+ )
314
+
315
+ sig do
316
+ override.returns(
317
+ T::Array[
318
+ Courier::ElementalNodeNonChannel::UnionMember3::Type::TaggedSymbol
319
+ ]
320
+ )
321
+ end
322
+ def self.values
323
+ end
324
+ end
325
+ end
326
+
327
+ class UnionMember4 < Courier::Models::ElementalDividerNode
328
+ OrHash =
329
+ T.type_alias do
330
+ T.any(
331
+ Courier::ElementalNodeNonChannel::UnionMember4,
332
+ Courier::Internal::AnyHash
333
+ )
334
+ end
335
+
336
+ sig do
337
+ returns(
338
+ T.nilable(
339
+ Courier::ElementalNodeNonChannel::UnionMember4::Type::OrSymbol
340
+ )
341
+ )
342
+ end
343
+ attr_reader :type
344
+
345
+ sig do
346
+ params(
347
+ type: Courier::ElementalNodeNonChannel::UnionMember4::Type::OrSymbol
348
+ ).void
349
+ end
350
+ attr_writer :type
351
+
352
+ # Renders a dividing line between elements.
353
+ sig do
354
+ params(
355
+ type: Courier::ElementalNodeNonChannel::UnionMember4::Type::OrSymbol
356
+ ).returns(T.attached_class)
357
+ end
358
+ def self.new(type: nil)
359
+ end
360
+
361
+ sig do
362
+ override.returns(
363
+ {
364
+ type:
365
+ Courier::ElementalNodeNonChannel::UnionMember4::Type::OrSymbol
366
+ }
367
+ )
368
+ end
369
+ def to_hash
370
+ end
371
+
372
+ module Type
373
+ extend Courier::Internal::Type::Enum
374
+
375
+ TaggedSymbol =
376
+ T.type_alias do
377
+ T.all(
378
+ Symbol,
379
+ Courier::ElementalNodeNonChannel::UnionMember4::Type
380
+ )
381
+ end
382
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
383
+
384
+ DIVIDER =
385
+ T.let(
386
+ :divider,
387
+ Courier::ElementalNodeNonChannel::UnionMember4::Type::TaggedSymbol
388
+ )
389
+
390
+ sig do
391
+ override.returns(
392
+ T::Array[
393
+ Courier::ElementalNodeNonChannel::UnionMember4::Type::TaggedSymbol
394
+ ]
395
+ )
396
+ end
397
+ def self.values
398
+ end
399
+ end
400
+ end
401
+
402
+ class UnionMember5 < Courier::Models::ElementalQuoteNode
403
+ OrHash =
404
+ T.type_alias do
405
+ T.any(
406
+ Courier::ElementalNodeNonChannel::UnionMember5,
407
+ Courier::Internal::AnyHash
408
+ )
409
+ end
410
+
411
+ sig do
412
+ returns(
413
+ T.nilable(
414
+ Courier::ElementalNodeNonChannel::UnionMember5::Type::OrSymbol
415
+ )
416
+ )
417
+ end
418
+ attr_reader :type
419
+
420
+ sig do
421
+ params(
422
+ type: Courier::ElementalNodeNonChannel::UnionMember5::Type::OrSymbol
423
+ ).void
424
+ end
425
+ attr_writer :type
426
+
427
+ # Renders a quote block.
428
+ sig do
429
+ params(
430
+ type: Courier::ElementalNodeNonChannel::UnionMember5::Type::OrSymbol
431
+ ).returns(T.attached_class)
432
+ end
433
+ def self.new(type: nil)
434
+ end
435
+
436
+ sig do
437
+ override.returns(
438
+ {
439
+ type:
440
+ Courier::ElementalNodeNonChannel::UnionMember5::Type::OrSymbol
441
+ }
442
+ )
443
+ end
444
+ def to_hash
445
+ end
446
+
447
+ module Type
448
+ extend Courier::Internal::Type::Enum
449
+
450
+ TaggedSymbol =
451
+ T.type_alias do
452
+ T.all(
453
+ Symbol,
454
+ Courier::ElementalNodeNonChannel::UnionMember5::Type
455
+ )
456
+ end
457
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
458
+
459
+ QUOTE =
460
+ T.let(
461
+ :quote,
462
+ Courier::ElementalNodeNonChannel::UnionMember5::Type::TaggedSymbol
463
+ )
464
+
465
+ sig do
466
+ override.returns(
467
+ T::Array[
468
+ Courier::ElementalNodeNonChannel::UnionMember5::Type::TaggedSymbol
469
+ ]
470
+ )
471
+ end
472
+ def self.values
473
+ end
474
+ end
475
+ end
476
+
477
+ class UnionMember6 < Courier::Models::ElementalHTMLNode
478
+ OrHash =
479
+ T.type_alias do
480
+ T.any(
481
+ Courier::ElementalNodeNonChannel::UnionMember6,
482
+ Courier::Internal::AnyHash
483
+ )
484
+ end
485
+
486
+ sig do
487
+ returns(
488
+ T.nilable(
489
+ Courier::ElementalNodeNonChannel::UnionMember6::Type::OrSymbol
490
+ )
491
+ )
492
+ end
493
+ attr_reader :type
494
+
495
+ sig do
496
+ params(
497
+ type: Courier::ElementalNodeNonChannel::UnionMember6::Type::OrSymbol
498
+ ).void
499
+ end
500
+ attr_writer :type
501
+
502
+ # Raw HTML string inside an Elemental document. When rendering a message, this
503
+ # node is turned into output only for the email channel; for other channels it
504
+ # produces no blocks.
505
+ sig do
506
+ params(
507
+ type: Courier::ElementalNodeNonChannel::UnionMember6::Type::OrSymbol
508
+ ).returns(T.attached_class)
509
+ end
510
+ def self.new(type: nil)
511
+ end
512
+
513
+ sig do
514
+ override.returns(
515
+ {
516
+ type:
517
+ Courier::ElementalNodeNonChannel::UnionMember6::Type::OrSymbol
518
+ }
519
+ )
520
+ end
521
+ def to_hash
522
+ end
523
+
524
+ module Type
525
+ extend Courier::Internal::Type::Enum
526
+
527
+ TaggedSymbol =
528
+ T.type_alias do
529
+ T.all(
530
+ Symbol,
531
+ Courier::ElementalNodeNonChannel::UnionMember6::Type
532
+ )
533
+ end
534
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
535
+
536
+ HTML =
537
+ T.let(
538
+ :html,
539
+ Courier::ElementalNodeNonChannel::UnionMember6::Type::TaggedSymbol
540
+ )
541
+
542
+ sig do
543
+ override.returns(
544
+ T::Array[
545
+ Courier::ElementalNodeNonChannel::UnionMember6::Type::TaggedSymbol
546
+ ]
547
+ )
548
+ end
549
+ def self.values
550
+ end
551
+ end
552
+ end
553
+
554
+ sig do
555
+ override.returns(T::Array[Courier::ElementalNodeNonChannel::Variants])
556
+ end
557
+ def self.variants
558
+ end
559
+ end
560
+ end
561
+ end