trycourier 4.19.2 → 4.21.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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +19 -0
  3. data/lib/courier/client.rb +0 -4
  4. data/lib/courier/models/{bulk_run_job_params.rb → notification_duplicate_params.rb} +6 -6
  5. data/lib/courier/models/notification_template_summary.rb +22 -1
  6. data/lib/courier/models.rb +2 -14
  7. data/lib/courier/resources/notifications.rb +25 -0
  8. data/lib/courier/version.rb +1 -1
  9. data/lib/courier.rb +1 -11
  10. data/rbi/courier/client.rbi +0 -3
  11. data/rbi/courier/models/{bulk_retrieve_job_params.rbi → notification_duplicate_params.rbi} +9 -6
  12. data/rbi/courier/models/notification_template_summary.rbi +26 -0
  13. data/rbi/courier/models.rbi +2 -14
  14. data/rbi/courier/resources/notifications.rbi +19 -0
  15. data/sig/courier/client.rbs +0 -2
  16. data/sig/courier/models/notification_duplicate_params.rbs +20 -0
  17. data/sig/courier/models/notification_template_summary.rbs +14 -0
  18. data/sig/courier/models.rbs +2 -14
  19. data/sig/courier/resources/notifications.rbs +5 -0
  20. metadata +5 -35
  21. data/lib/courier/models/bulk_add_users_params.rb +0 -26
  22. data/lib/courier/models/bulk_create_job_params.rb +0 -29
  23. data/lib/courier/models/bulk_create_job_response.rb +0 -16
  24. data/lib/courier/models/bulk_list_users_params.rb +0 -33
  25. data/lib/courier/models/bulk_list_users_response.rb +0 -49
  26. data/lib/courier/models/bulk_retrieve_job_params.rb +0 -20
  27. data/lib/courier/models/bulk_retrieve_job_response.rb +0 -76
  28. data/lib/courier/models/inbound_bulk_message.rb +0 -91
  29. data/lib/courier/models/inbound_bulk_message_user.rb +0 -54
  30. data/lib/courier/resources/bulk.rb +0 -141
  31. data/rbi/courier/models/bulk_add_users_params.rbi +0 -43
  32. data/rbi/courier/models/bulk_create_job_params.rbi +0 -54
  33. data/rbi/courier/models/bulk_create_job_response.rbi +0 -26
  34. data/rbi/courier/models/bulk_list_users_params.rbi +0 -51
  35. data/rbi/courier/models/bulk_list_users_response.rbi +0 -125
  36. data/rbi/courier/models/bulk_retrieve_job_response.rbi +0 -157
  37. data/rbi/courier/models/bulk_run_job_params.rbi +0 -35
  38. data/rbi/courier/models/inbound_bulk_message.rbi +0 -124
  39. data/rbi/courier/models/inbound_bulk_message_user.rbi +0 -88
  40. data/rbi/courier/resources/bulk.rbi +0 -102
  41. data/sig/courier/models/bulk_add_users_params.rbs +0 -28
  42. data/sig/courier/models/bulk_create_job_params.rbs +0 -24
  43. data/sig/courier/models/bulk_create_job_response.rbs +0 -13
  44. data/sig/courier/models/bulk_list_users_params.rbs +0 -28
  45. data/sig/courier/models/bulk_list_users_response.rbs +0 -65
  46. data/sig/courier/models/bulk_retrieve_job_params.rbs +0 -23
  47. data/sig/courier/models/bulk_retrieve_job_response.rbs +0 -66
  48. data/sig/courier/models/bulk_run_job_params.rbs +0 -23
  49. data/sig/courier/models/inbound_bulk_message.rbs +0 -58
  50. data/sig/courier/models/inbound_bulk_message_user.rbs +0 -42
  51. data/sig/courier/resources/bulk.rbs +0 -34
@@ -1,43 +0,0 @@
1
- # typed: strong
2
-
3
- module Courier
4
- module Models
5
- class BulkAddUsersParams < Courier::Internal::Type::BaseModel
6
- extend Courier::Internal::Type::RequestParameters::Converter
7
- include Courier::Internal::Type::RequestParameters
8
-
9
- OrHash =
10
- T.type_alias do
11
- T.any(Courier::BulkAddUsersParams, Courier::Internal::AnyHash)
12
- end
13
-
14
- sig { returns(String) }
15
- attr_accessor :job_id
16
-
17
- sig { returns(T::Array[Courier::InboundBulkMessageUser]) }
18
- attr_accessor :users
19
-
20
- sig do
21
- params(
22
- job_id: String,
23
- users: T::Array[Courier::InboundBulkMessageUser::OrHash],
24
- request_options: Courier::RequestOptions::OrHash
25
- ).returns(T.attached_class)
26
- end
27
- def self.new(job_id:, users:, request_options: {})
28
- end
29
-
30
- sig do
31
- override.returns(
32
- {
33
- job_id: String,
34
- users: T::Array[Courier::InboundBulkMessageUser],
35
- request_options: Courier::RequestOptions
36
- }
37
- )
38
- end
39
- def to_hash
40
- end
41
- end
42
- end
43
- end
@@ -1,54 +0,0 @@
1
- # typed: strong
2
-
3
- module Courier
4
- module Models
5
- class BulkCreateJobParams < Courier::Internal::Type::BaseModel
6
- extend Courier::Internal::Type::RequestParameters::Converter
7
- include Courier::Internal::Type::RequestParameters
8
-
9
- OrHash =
10
- T.type_alias do
11
- T.any(Courier::BulkCreateJobParams, Courier::Internal::AnyHash)
12
- end
13
-
14
- # Bulk message definition. Supports two formats:
15
- #
16
- # - V1 format: Requires `event` field (event ID or notification ID)
17
- # - V2 format: Optionally use `template` (notification ID) or `content` (Elemental
18
- # content) in addition to `event`
19
- sig { returns(Courier::InboundBulkMessage) }
20
- attr_reader :message
21
-
22
- sig { params(message: Courier::InboundBulkMessage::OrHash).void }
23
- attr_writer :message
24
-
25
- sig do
26
- params(
27
- message: Courier::InboundBulkMessage::OrHash,
28
- request_options: Courier::RequestOptions::OrHash
29
- ).returns(T.attached_class)
30
- end
31
- def self.new(
32
- # Bulk message definition. Supports two formats:
33
- #
34
- # - V1 format: Requires `event` field (event ID or notification ID)
35
- # - V2 format: Optionally use `template` (notification ID) or `content` (Elemental
36
- # content) in addition to `event`
37
- message:,
38
- request_options: {}
39
- )
40
- end
41
-
42
- sig do
43
- override.returns(
44
- {
45
- message: Courier::InboundBulkMessage,
46
- request_options: Courier::RequestOptions
47
- }
48
- )
49
- end
50
- def to_hash
51
- end
52
- end
53
- end
54
- end
@@ -1,26 +0,0 @@
1
- # typed: strong
2
-
3
- module Courier
4
- module Models
5
- class BulkCreateJobResponse < Courier::Internal::Type::BaseModel
6
- OrHash =
7
- T.type_alias do
8
- T.any(
9
- Courier::Models::BulkCreateJobResponse,
10
- Courier::Internal::AnyHash
11
- )
12
- end
13
-
14
- sig { returns(String) }
15
- attr_accessor :job_id
16
-
17
- sig { params(job_id: String).returns(T.attached_class) }
18
- def self.new(job_id:)
19
- end
20
-
21
- sig { override.returns({ job_id: String }) }
22
- def to_hash
23
- end
24
- end
25
- end
26
- end
@@ -1,51 +0,0 @@
1
- # typed: strong
2
-
3
- module Courier
4
- module Models
5
- class BulkListUsersParams < Courier::Internal::Type::BaseModel
6
- extend Courier::Internal::Type::RequestParameters::Converter
7
- include Courier::Internal::Type::RequestParameters
8
-
9
- OrHash =
10
- T.type_alias do
11
- T.any(Courier::BulkListUsersParams, Courier::Internal::AnyHash)
12
- end
13
-
14
- sig { returns(String) }
15
- attr_accessor :job_id
16
-
17
- # A unique identifier that allows for fetching the next set of users added to the
18
- # bulk job
19
- sig { returns(T.nilable(String)) }
20
- attr_accessor :cursor
21
-
22
- sig do
23
- params(
24
- job_id: String,
25
- cursor: T.nilable(String),
26
- request_options: Courier::RequestOptions::OrHash
27
- ).returns(T.attached_class)
28
- end
29
- def self.new(
30
- job_id:,
31
- # A unique identifier that allows for fetching the next set of users added to the
32
- # bulk job
33
- cursor: nil,
34
- request_options: {}
35
- )
36
- end
37
-
38
- sig do
39
- override.returns(
40
- {
41
- job_id: String,
42
- cursor: T.nilable(String),
43
- request_options: Courier::RequestOptions
44
- }
45
- )
46
- end
47
- def to_hash
48
- end
49
- end
50
- end
51
- end
@@ -1,125 +0,0 @@
1
- # typed: strong
2
-
3
- module Courier
4
- module Models
5
- class BulkListUsersResponse < Courier::Internal::Type::BaseModel
6
- OrHash =
7
- T.type_alias do
8
- T.any(
9
- Courier::Models::BulkListUsersResponse,
10
- Courier::Internal::AnyHash
11
- )
12
- end
13
-
14
- sig { returns(T::Array[Courier::Models::BulkListUsersResponse::Item]) }
15
- attr_accessor :items
16
-
17
- sig { returns(Courier::Paging) }
18
- attr_reader :paging
19
-
20
- sig { params(paging: Courier::Paging::OrHash).void }
21
- attr_writer :paging
22
-
23
- sig do
24
- params(
25
- items: T::Array[Courier::Models::BulkListUsersResponse::Item::OrHash],
26
- paging: Courier::Paging::OrHash
27
- ).returns(T.attached_class)
28
- end
29
- def self.new(items:, paging:)
30
- end
31
-
32
- sig do
33
- override.returns(
34
- {
35
- items: T::Array[Courier::Models::BulkListUsersResponse::Item],
36
- paging: Courier::Paging
37
- }
38
- )
39
- end
40
- def to_hash
41
- end
42
-
43
- class Item < Courier::Models::InboundBulkMessageUser
44
- OrHash =
45
- T.type_alias do
46
- T.any(
47
- Courier::Models::BulkListUsersResponse::Item,
48
- Courier::Internal::AnyHash
49
- )
50
- end
51
-
52
- sig do
53
- returns(
54
- Courier::Models::BulkListUsersResponse::Item::Status::TaggedSymbol
55
- )
56
- end
57
- attr_accessor :status
58
-
59
- sig { returns(T.nilable(String)) }
60
- attr_accessor :message_id
61
-
62
- sig do
63
- params(
64
- status:
65
- Courier::Models::BulkListUsersResponse::Item::Status::OrSymbol,
66
- message_id: T.nilable(String)
67
- ).returns(T.attached_class)
68
- end
69
- def self.new(status:, message_id: nil)
70
- end
71
-
72
- sig do
73
- override.returns(
74
- {
75
- status:
76
- Courier::Models::BulkListUsersResponse::Item::Status::TaggedSymbol,
77
- message_id: T.nilable(String)
78
- }
79
- )
80
- end
81
- def to_hash
82
- end
83
-
84
- module Status
85
- extend Courier::Internal::Type::Enum
86
-
87
- TaggedSymbol =
88
- T.type_alias do
89
- T.all(
90
- Symbol,
91
- Courier::Models::BulkListUsersResponse::Item::Status
92
- )
93
- end
94
- OrSymbol = T.type_alias { T.any(Symbol, String) }
95
-
96
- PENDING =
97
- T.let(
98
- :PENDING,
99
- Courier::Models::BulkListUsersResponse::Item::Status::TaggedSymbol
100
- )
101
- ENQUEUED =
102
- T.let(
103
- :ENQUEUED,
104
- Courier::Models::BulkListUsersResponse::Item::Status::TaggedSymbol
105
- )
106
- ERROR =
107
- T.let(
108
- :ERROR,
109
- Courier::Models::BulkListUsersResponse::Item::Status::TaggedSymbol
110
- )
111
-
112
- sig do
113
- override.returns(
114
- T::Array[
115
- Courier::Models::BulkListUsersResponse::Item::Status::TaggedSymbol
116
- ]
117
- )
118
- end
119
- def self.values
120
- end
121
- end
122
- end
123
- end
124
- end
125
- end
@@ -1,157 +0,0 @@
1
- # typed: strong
2
-
3
- module Courier
4
- module Models
5
- class BulkRetrieveJobResponse < Courier::Internal::Type::BaseModel
6
- OrHash =
7
- T.type_alias do
8
- T.any(
9
- Courier::Models::BulkRetrieveJobResponse,
10
- Courier::Internal::AnyHash
11
- )
12
- end
13
-
14
- sig { returns(Courier::Models::BulkRetrieveJobResponse::Job) }
15
- attr_reader :job
16
-
17
- sig do
18
- params(job: Courier::Models::BulkRetrieveJobResponse::Job::OrHash).void
19
- end
20
- attr_writer :job
21
-
22
- sig do
23
- params(
24
- job: Courier::Models::BulkRetrieveJobResponse::Job::OrHash
25
- ).returns(T.attached_class)
26
- end
27
- def self.new(job:)
28
- end
29
-
30
- sig do
31
- override.returns({ job: Courier::Models::BulkRetrieveJobResponse::Job })
32
- end
33
- def to_hash
34
- end
35
-
36
- class Job < Courier::Internal::Type::BaseModel
37
- OrHash =
38
- T.type_alias do
39
- T.any(
40
- Courier::Models::BulkRetrieveJobResponse::Job,
41
- Courier::Internal::AnyHash
42
- )
43
- end
44
-
45
- # Bulk message definition. Supports two formats:
46
- #
47
- # - V1 format: Requires `event` field (event ID or notification ID)
48
- # - V2 format: Optionally use `template` (notification ID) or `content` (Elemental
49
- # content) in addition to `event`
50
- sig { returns(Courier::InboundBulkMessage) }
51
- attr_reader :definition
52
-
53
- sig { params(definition: Courier::InboundBulkMessage::OrHash).void }
54
- attr_writer :definition
55
-
56
- sig { returns(Integer) }
57
- attr_accessor :enqueued
58
-
59
- sig { returns(Integer) }
60
- attr_accessor :failures
61
-
62
- sig { returns(Integer) }
63
- attr_accessor :received
64
-
65
- sig do
66
- returns(
67
- Courier::Models::BulkRetrieveJobResponse::Job::Status::TaggedSymbol
68
- )
69
- end
70
- attr_accessor :status
71
-
72
- sig do
73
- params(
74
- definition: Courier::InboundBulkMessage::OrHash,
75
- enqueued: Integer,
76
- failures: Integer,
77
- received: Integer,
78
- status:
79
- Courier::Models::BulkRetrieveJobResponse::Job::Status::OrSymbol
80
- ).returns(T.attached_class)
81
- end
82
- def self.new(
83
- # Bulk message definition. Supports two formats:
84
- #
85
- # - V1 format: Requires `event` field (event ID or notification ID)
86
- # - V2 format: Optionally use `template` (notification ID) or `content` (Elemental
87
- # content) in addition to `event`
88
- definition:,
89
- enqueued:,
90
- failures:,
91
- received:,
92
- status:
93
- )
94
- end
95
-
96
- sig do
97
- override.returns(
98
- {
99
- definition: Courier::InboundBulkMessage,
100
- enqueued: Integer,
101
- failures: Integer,
102
- received: Integer,
103
- status:
104
- Courier::Models::BulkRetrieveJobResponse::Job::Status::TaggedSymbol
105
- }
106
- )
107
- end
108
- def to_hash
109
- end
110
-
111
- module Status
112
- extend Courier::Internal::Type::Enum
113
-
114
- TaggedSymbol =
115
- T.type_alias do
116
- T.all(
117
- Symbol,
118
- Courier::Models::BulkRetrieveJobResponse::Job::Status
119
- )
120
- end
121
- OrSymbol = T.type_alias { T.any(Symbol, String) }
122
-
123
- CREATED =
124
- T.let(
125
- :CREATED,
126
- Courier::Models::BulkRetrieveJobResponse::Job::Status::TaggedSymbol
127
- )
128
- PROCESSING =
129
- T.let(
130
- :PROCESSING,
131
- Courier::Models::BulkRetrieveJobResponse::Job::Status::TaggedSymbol
132
- )
133
- COMPLETED =
134
- T.let(
135
- :COMPLETED,
136
- Courier::Models::BulkRetrieveJobResponse::Job::Status::TaggedSymbol
137
- )
138
- ERROR =
139
- T.let(
140
- :ERROR,
141
- Courier::Models::BulkRetrieveJobResponse::Job::Status::TaggedSymbol
142
- )
143
-
144
- sig do
145
- override.returns(
146
- T::Array[
147
- Courier::Models::BulkRetrieveJobResponse::Job::Status::TaggedSymbol
148
- ]
149
- )
150
- end
151
- def self.values
152
- end
153
- end
154
- end
155
- end
156
- end
157
- end
@@ -1,35 +0,0 @@
1
- # typed: strong
2
-
3
- module Courier
4
- module Models
5
- class BulkRunJobParams < Courier::Internal::Type::BaseModel
6
- extend Courier::Internal::Type::RequestParameters::Converter
7
- include Courier::Internal::Type::RequestParameters
8
-
9
- OrHash =
10
- T.type_alias do
11
- T.any(Courier::BulkRunJobParams, Courier::Internal::AnyHash)
12
- end
13
-
14
- sig { returns(String) }
15
- attr_accessor :job_id
16
-
17
- sig do
18
- params(
19
- job_id: String,
20
- request_options: Courier::RequestOptions::OrHash
21
- ).returns(T.attached_class)
22
- end
23
- def self.new(job_id:, request_options: {})
24
- end
25
-
26
- sig do
27
- override.returns(
28
- { job_id: String, request_options: Courier::RequestOptions }
29
- )
30
- end
31
- def to_hash
32
- end
33
- end
34
- end
35
- end
@@ -1,124 +0,0 @@
1
- # typed: strong
2
-
3
- module Courier
4
- module Models
5
- class InboundBulkMessage < Courier::Internal::Type::BaseModel
6
- OrHash =
7
- T.type_alias do
8
- T.any(Courier::InboundBulkMessage, Courier::Internal::AnyHash)
9
- end
10
-
11
- # Event ID or Notification ID (required). Can be either a Notification ID (e.g.,
12
- # "FRH3QXM9E34W4RKP7MRC8NZ1T8V8") or a custom Event ID (e.g., "welcome-email")
13
- # mapped to a notification.
14
- sig { returns(String) }
15
- attr_accessor :event
16
-
17
- sig { returns(T.nilable(String)) }
18
- attr_accessor :brand
19
-
20
- # Elemental content (optional, for V2 format). When provided, this will be used
21
- # instead of the notification associated with the `event` field.
22
- sig do
23
- returns(
24
- T.nilable(
25
- T.any(Courier::ElementalContentSugar, Courier::ElementalContent)
26
- )
27
- )
28
- end
29
- attr_accessor :content
30
-
31
- sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
32
- attr_accessor :data
33
-
34
- sig { returns(T.nilable(T::Hash[Symbol, T::Hash[Symbol, T.anything]])) }
35
- attr_accessor :locale
36
-
37
- sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
38
- attr_accessor :override
39
-
40
- # Notification ID or template ID (optional, for V2 format). When provided, this
41
- # will be used instead of the notification associated with the `event` field.
42
- sig { returns(T.nilable(String)) }
43
- attr_accessor :template
44
-
45
- # Bulk message definition. Supports two formats:
46
- #
47
- # - V1 format: Requires `event` field (event ID or notification ID)
48
- # - V2 format: Optionally use `template` (notification ID) or `content` (Elemental
49
- # content) in addition to `event`
50
- sig do
51
- params(
52
- event: String,
53
- brand: T.nilable(String),
54
- content:
55
- T.nilable(
56
- T.any(
57
- Courier::ElementalContentSugar::OrHash,
58
- Courier::ElementalContent::OrHash
59
- )
60
- ),
61
- data: T.nilable(T::Hash[Symbol, T.anything]),
62
- locale: T.nilable(T::Hash[Symbol, T::Hash[Symbol, T.anything]]),
63
- override: T.nilable(T::Hash[Symbol, T.anything]),
64
- template: T.nilable(String)
65
- ).returns(T.attached_class)
66
- end
67
- def self.new(
68
- # Event ID or Notification ID (required). Can be either a Notification ID (e.g.,
69
- # "FRH3QXM9E34W4RKP7MRC8NZ1T8V8") or a custom Event ID (e.g., "welcome-email")
70
- # mapped to a notification.
71
- event:,
72
- brand: nil,
73
- # Elemental content (optional, for V2 format). When provided, this will be used
74
- # instead of the notification associated with the `event` field.
75
- content: nil,
76
- data: nil,
77
- locale: nil,
78
- override: nil,
79
- # Notification ID or template ID (optional, for V2 format). When provided, this
80
- # will be used instead of the notification associated with the `event` field.
81
- template: nil
82
- )
83
- end
84
-
85
- sig do
86
- override.returns(
87
- {
88
- event: String,
89
- brand: T.nilable(String),
90
- content:
91
- T.nilable(
92
- T.any(Courier::ElementalContentSugar, Courier::ElementalContent)
93
- ),
94
- data: T.nilable(T::Hash[Symbol, T.anything]),
95
- locale: T.nilable(T::Hash[Symbol, T::Hash[Symbol, T.anything]]),
96
- override: T.nilable(T::Hash[Symbol, T.anything]),
97
- template: T.nilable(String)
98
- }
99
- )
100
- end
101
- def to_hash
102
- end
103
-
104
- # Elemental content (optional, for V2 format). When provided, this will be used
105
- # instead of the notification associated with the `event` field.
106
- module Content
107
- extend Courier::Internal::Type::Union
108
-
109
- Variants =
110
- T.type_alias do
111
- T.any(Courier::ElementalContentSugar, Courier::ElementalContent)
112
- end
113
-
114
- sig do
115
- override.returns(
116
- T::Array[Courier::InboundBulkMessage::Content::Variants]
117
- )
118
- end
119
- def self.variants
120
- end
121
- end
122
- end
123
- end
124
- end
@@ -1,88 +0,0 @@
1
- # typed: strong
2
-
3
- module Courier
4
- module Models
5
- class InboundBulkMessageUser < Courier::Internal::Type::BaseModel
6
- OrHash =
7
- T.type_alias do
8
- T.any(Courier::InboundBulkMessageUser, Courier::Internal::AnyHash)
9
- end
10
-
11
- # User-specific data that will be merged with message.data
12
- sig { returns(T.nilable(T.anything)) }
13
- attr_reader :data
14
-
15
- sig { params(data: T.anything).void }
16
- attr_writer :data
17
-
18
- sig { returns(T.nilable(Courier::RecipientPreferences)) }
19
- attr_reader :preferences
20
-
21
- sig do
22
- params(
23
- preferences: T.nilable(Courier::RecipientPreferences::OrHash)
24
- ).void
25
- end
26
- attr_writer :preferences
27
-
28
- # User profile information. For email-based bulk jobs, `profile.email` is required
29
- # for provider routing to determine if the message can be delivered. The email
30
- # address should be provided here rather than in `to.email`.
31
- sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
32
- attr_accessor :profile
33
-
34
- # User ID (legacy field, use profile or to.user_id instead)
35
- sig { returns(T.nilable(String)) }
36
- attr_accessor :recipient
37
-
38
- # Optional recipient information. Note: For email provider routing, use
39
- # `profile.email` instead of `to.email`. The `to` field is primarily used for
40
- # recipient identification and data merging.
41
- sig { returns(T.nilable(Courier::UserRecipient)) }
42
- attr_reader :to
43
-
44
- sig { params(to: T.nilable(Courier::UserRecipient::OrHash)).void }
45
- attr_writer :to
46
-
47
- sig do
48
- params(
49
- data: T.anything,
50
- preferences: T.nilable(Courier::RecipientPreferences::OrHash),
51
- profile: T.nilable(T::Hash[Symbol, T.anything]),
52
- recipient: T.nilable(String),
53
- to: T.nilable(Courier::UserRecipient::OrHash)
54
- ).returns(T.attached_class)
55
- end
56
- def self.new(
57
- # User-specific data that will be merged with message.data
58
- data: nil,
59
- preferences: nil,
60
- # User profile information. For email-based bulk jobs, `profile.email` is required
61
- # for provider routing to determine if the message can be delivered. The email
62
- # address should be provided here rather than in `to.email`.
63
- profile: nil,
64
- # User ID (legacy field, use profile or to.user_id instead)
65
- recipient: nil,
66
- # Optional recipient information. Note: For email provider routing, use
67
- # `profile.email` instead of `to.email`. The `to` field is primarily used for
68
- # recipient identification and data merging.
69
- to: nil
70
- )
71
- end
72
-
73
- sig do
74
- override.returns(
75
- {
76
- data: T.anything,
77
- preferences: T.nilable(Courier::RecipientPreferences),
78
- profile: T.nilable(T::Hash[Symbol, T.anything]),
79
- recipient: T.nilable(String),
80
- to: T.nilable(Courier::UserRecipient)
81
- }
82
- )
83
- end
84
- def to_hash
85
- end
86
- end
87
- end
88
- end