sentdm 0.14.0 → 0.15.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6deb093a9f2c5d24bcdb01a4931610ac5a20888cd2a55cb2b6b716b11b6cd54a
4
- data.tar.gz: 213dc9cedf353c9c1eafa2cd7463415ad1cdad1e8d9438fa037672eebfe48912
3
+ metadata.gz: 4d991654f4a9e02eb0875ca96e4721e3442dae7bbec0ff4078333628cca5f7a1
4
+ data.tar.gz: 4d57c9c5beaa57188637bf293742f4d1575a7b43b7f28f54ffc694b661fc3a92
5
5
  SHA512:
6
- metadata.gz: 1d486ff5a4f521ad385c10fac04f27d1d55e94bc107b9639a3abae6ba9040d0b59b53f6a9e938198ab311df84c553ed0cf0721b2f832075a0dcc08a4df77b8f8
7
- data.tar.gz: dc5717d0ef6304ad6ce20564f5317a046f8c25274519fdb63d656abb2c736e87e5ce7539306aaa98a7e14fa2fa7486f2c3259d9514c226f17a475cf58fa3d8c9
6
+ metadata.gz: 95f4ddee5e276312271679177dcc209b42ce6c0270dacdf01f6eb5c6bf422b960f6df824e5dd313e67f176ab07a7612b05795ed4641dc3217f87916a931d8b53
7
+ data.tar.gz: 1d074dc2fd83b3cc8f9fe0e7c6f355248b3926d752d930482e3121174a401f720973c627ad0242d92c6ae6435695b799dc22726335cebc8c10ae8eadec2e8601
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.15.0 (2026-04-21)
4
+
5
+ Full Changelog: [v0.14.0...v0.15.0](https://github.com/sentdm/sent-dm-ruby/compare/v0.14.0...v0.15.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([766fd2a](https://github.com/sentdm/sent-dm-ruby/commit/766fd2ab76879a691e35141696b5ea2d2acbb3fc))
10
+
3
11
  ## 0.14.0 (2026-04-20)
4
12
 
5
13
  Full Changelog: [v0.13.1...v0.14.0](https://github.com/sentdm/sent-dm-ruby/compare/v0.13.1...v0.14.0)
data/README.md CHANGED
@@ -26,7 +26,7 @@ To use this gem, install via Bundler by adding the following to your application
26
26
  <!-- x-release-please-start-version -->
27
27
 
28
28
  ```ruby
29
- gem "sentdm", "~> 0.14.0"
29
+ gem "sentdm", "~> 0.15.0"
30
30
  ```
31
31
 
32
32
  <!-- x-release-please-end -->
@@ -15,6 +15,15 @@ module Sentdm
15
15
  # @return [String, nil]
16
16
  optional :available_channels, String
17
17
 
18
+ # @!attribute channel_consent
19
+ # Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in",
20
+ # "opted_out". All channels will have the same status because consent is global
21
+ # across channels. A STOP on any channel opts out of all channels; a START opts in
22
+ # to all.
23
+ #
24
+ # @return [Hash{Symbol=>String}, nil]
25
+ optional :channel_consent, Sentdm::Internal::Type::HashOf[String], nil?: true
26
+
18
27
  # @!attribute country_code
19
28
  # Country calling code (e.g., 1 for US/Canada)
20
29
  #
@@ -87,13 +96,18 @@ module Sentdm
87
96
  # @return [Time, nil]
88
97
  optional :updated_at, Time, nil?: true
89
98
 
90
- # @!method initialize(id: nil, available_channels: nil, country_code: nil, created_at: nil, default_channel: nil, format_e164: nil, format_international: nil, format_national: nil, format_rfc: nil, is_inherited: nil, opt_out: nil, phone_number: nil, region_code: nil, updated_at: nil)
99
+ # @!method initialize(id: nil, available_channels: nil, channel_consent: nil, country_code: nil, created_at: nil, default_channel: nil, format_e164: nil, format_international: nil, format_national: nil, format_rfc: nil, is_inherited: nil, opt_out: nil, phone_number: nil, region_code: nil, updated_at: nil)
100
+ # Some parameter documentations has been truncated, see
101
+ # {Sentdm::Models::ContactResponse} for more details.
102
+ #
91
103
  # Contact response for v3 API Uses snake_case for JSON property names
92
104
  #
93
105
  # @param id [String] Unique identifier for the contact
94
106
  #
95
107
  # @param available_channels [String] Comma-separated list of available messaging channels (e.g., "sms,whatsapp")
96
108
  #
109
+ # @param channel_consent [Hash{Symbol=>String}, nil] Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in", "opted_o
110
+ #
97
111
  # @param country_code [String] Country calling code (e.g., 1 for US/Canada)
98
112
  #
99
113
  # @param created_at [Time] When the contact was created
@@ -12,6 +12,17 @@ module Sentdm
12
12
  # @return [String]
13
13
  required :id, String
14
14
 
15
+ # @!attribute channel_consent
16
+ # Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in",
17
+ # "opted_out". All entries must have the same status — mixed values (e.g., sms:
18
+ # opted_out + whatsapp: opted_in) are rejected with 400. The provided status is
19
+ # applied to ALL channels regardless of which keys are specified, because consent
20
+ # is global across channels. When provided, takes precedence over the opt_out
21
+ # field.
22
+ #
23
+ # @return [Hash{Symbol=>String}, nil]
24
+ optional :channel_consent, Sentdm::Internal::Type::HashOf[String], nil?: true
25
+
15
26
  # @!attribute default_channel
16
27
  # Default messaging channel: "sms" or "whatsapp"
17
28
  #
@@ -41,12 +52,14 @@ module Sentdm
41
52
  # @return [String, nil]
42
53
  optional :x_profile_id, String
43
54
 
44
- # @!method initialize(id:, default_channel: nil, opt_out: nil, sandbox: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
55
+ # @!method initialize(id:, channel_consent: nil, default_channel: nil, opt_out: nil, sandbox: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
45
56
  # Some parameter documentations has been truncated, see
46
57
  # {Sentdm::Models::ContactUpdateParams} for more details.
47
58
  #
48
59
  # @param id [String]
49
60
  #
61
+ # @param channel_consent [Hash{Symbol=>String}, nil] Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in", "opted_o
62
+ #
50
63
  # @param default_channel [String, nil] Default messaging channel: "sms" or "whatsapp"
51
64
  #
52
65
  # @param opt_out [Boolean, nil] Whether the contact has opted out of messaging
@@ -71,6 +71,11 @@ module Sentdm
71
71
  # @return [String, nil]
72
72
  optional :customer_id, String
73
73
 
74
+ # @!attribute direction
75
+ #
76
+ # @return [String, nil]
77
+ optional :direction, String
78
+
74
79
  # @!attribute events
75
80
  #
76
81
  # @return [Array<Sentdm::Models::MessageRetrieveStatusResponse::Data::Event>, nil]
@@ -115,7 +120,7 @@ module Sentdm
115
120
  # @!attribute template_category
116
121
  #
117
122
  # @return [String, nil]
118
- optional :template_category, String
123
+ optional :template_category, String, nil?: true
119
124
 
120
125
  # @!attribute template_id
121
126
  #
@@ -125,9 +130,9 @@ module Sentdm
125
130
  # @!attribute template_name
126
131
  #
127
132
  # @return [String, nil]
128
- optional :template_name, String
133
+ optional :template_name, String, nil?: true
129
134
 
130
- # @!method initialize(id: nil, active_contact_price: nil, channel: nil, contact_id: nil, created_at: nil, customer_id: nil, events: nil, message_body: nil, phone: nil, phone_international: nil, price: nil, region_code: nil, status: nil, template_category: nil, template_id: nil, template_name: nil)
135
+ # @!method initialize(id: nil, active_contact_price: nil, channel: nil, contact_id: nil, created_at: nil, customer_id: nil, direction: nil, events: nil, message_body: nil, phone: nil, phone_international: nil, price: nil, region_code: nil, status: nil, template_category: nil, template_id: nil, template_name: nil)
131
136
  # Some parameter documentations has been truncated, see
132
137
  # {Sentdm::Models::MessageRetrieveStatusResponse::Data} for more details.
133
138
  #
@@ -145,6 +150,8 @@ module Sentdm
145
150
  #
146
151
  # @param customer_id [String]
147
152
  #
153
+ # @param direction [String]
154
+ #
148
155
  # @param events [Array<Sentdm::Models::MessageRetrieveStatusResponse::Data::Event>, nil]
149
156
  #
150
157
  # @param message_body [Sentdm::Models::MessageRetrieveStatusResponse::Data::MessageBody, nil] Structured message body format for database storage.
@@ -159,11 +166,11 @@ module Sentdm
159
166
  #
160
167
  # @param status [String]
161
168
  #
162
- # @param template_category [String]
169
+ # @param template_category [String, nil]
163
170
  #
164
171
  # @param template_id [String, nil]
165
172
  #
166
- # @param template_name [String]
173
+ # @param template_name [String, nil]
167
174
 
168
175
  class Event < Sentdm::Internal::Type::BaseModel
169
176
  # @!attribute description
@@ -73,10 +73,12 @@ module Sentdm
73
73
  # Updates a contact's default channel and/or opt-out status. Inherited contacts
74
74
  # cannot be updated.
75
75
  #
76
- # @overload update(id, default_channel: nil, opt_out: nil, sandbox: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
76
+ # @overload update(id, channel_consent: nil, default_channel: nil, opt_out: nil, sandbox: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
77
77
  #
78
78
  # @param id [String] Path param: Contact ID from route parameter
79
79
  #
80
+ # @param channel_consent [Hash{Symbol=>String}, nil] Body param: Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_i
81
+ #
80
82
  # @param default_channel [String, nil] Body param: Default messaging channel: "sms" or "whatsapp"
81
83
  #
82
84
  # @param opt_out [Boolean, nil] Body param: Whether the contact has opted out of messaging
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sentdm
4
- VERSION = "0.14.0"
4
+ VERSION = "0.15.0"
5
5
  end
@@ -22,6 +22,13 @@ module Sentdm
22
22
  sig { params(available_channels: String).void }
23
23
  attr_writer :available_channels
24
24
 
25
+ # Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in",
26
+ # "opted_out". All channels will have the same status because consent is global
27
+ # across channels. A STOP on any channel opts out of all channels; a START opts in
28
+ # to all.
29
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
30
+ attr_accessor :channel_consent
31
+
25
32
  # Country calling code (e.g., 1 for US/Canada)
26
33
  sig { returns(T.nilable(String)) }
27
34
  attr_reader :country_code
@@ -108,6 +115,7 @@ module Sentdm
108
115
  params(
109
116
  id: String,
110
117
  available_channels: String,
118
+ channel_consent: T.nilable(T::Hash[Symbol, String]),
111
119
  country_code: String,
112
120
  created_at: Time,
113
121
  default_channel: String,
@@ -127,6 +135,11 @@ module Sentdm
127
135
  id: nil,
128
136
  # Comma-separated list of available messaging channels (e.g., "sms,whatsapp")
129
137
  available_channels: nil,
138
+ # Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in",
139
+ # "opted_out". All channels will have the same status because consent is global
140
+ # across channels. A STOP on any channel opts out of all channels; a START opts in
141
+ # to all.
142
+ channel_consent: nil,
130
143
  # Country calling code (e.g., 1 for US/Canada)
131
144
  country_code: nil,
132
145
  # When the contact was created
@@ -159,6 +172,7 @@ module Sentdm
159
172
  {
160
173
  id: String,
161
174
  available_channels: String,
175
+ channel_consent: T.nilable(T::Hash[Symbol, String]),
162
176
  country_code: String,
163
177
  created_at: Time,
164
178
  default_channel: String,
@@ -14,6 +14,15 @@ module Sentdm
14
14
  sig { returns(String) }
15
15
  attr_accessor :id
16
16
 
17
+ # Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in",
18
+ # "opted_out". All entries must have the same status — mixed values (e.g., sms:
19
+ # opted_out + whatsapp: opted_in) are rejected with 400. The provided status is
20
+ # applied to ALL channels regardless of which keys are specified, because consent
21
+ # is global across channels. When provided, takes precedence over the opt_out
22
+ # field.
23
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
24
+ attr_accessor :channel_consent
25
+
17
26
  # Default messaging channel: "sms" or "whatsapp"
18
27
  sig { returns(T.nilable(String)) }
19
28
  attr_accessor :default_channel
@@ -45,6 +54,7 @@ module Sentdm
45
54
  sig do
46
55
  params(
47
56
  id: String,
57
+ channel_consent: T.nilable(T::Hash[Symbol, String]),
48
58
  default_channel: T.nilable(String),
49
59
  opt_out: T.nilable(T::Boolean),
50
60
  sandbox: T::Boolean,
@@ -55,6 +65,13 @@ module Sentdm
55
65
  end
56
66
  def self.new(
57
67
  id:,
68
+ # Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in",
69
+ # "opted_out". All entries must have the same status — mixed values (e.g., sms:
70
+ # opted_out + whatsapp: opted_in) are rejected with 400. The provided status is
71
+ # applied to ALL channels regardless of which keys are specified, because consent
72
+ # is global across channels. When provided, takes precedence over the opt_out
73
+ # field.
74
+ channel_consent: nil,
58
75
  # Default messaging channel: "sms" or "whatsapp"
59
76
  default_channel: nil,
60
77
  # Whether the contact has opted out of messaging
@@ -72,6 +89,7 @@ module Sentdm
72
89
  override.returns(
73
90
  {
74
91
  id: String,
92
+ channel_consent: T.nilable(T::Hash[Symbol, String]),
75
93
  default_channel: T.nilable(String),
76
94
  opt_out: T.nilable(T::Boolean),
77
95
  sandbox: T::Boolean,
@@ -128,6 +128,12 @@ module Sentdm
128
128
  sig { params(customer_id: String).void }
129
129
  attr_writer :customer_id
130
130
 
131
+ sig { returns(T.nilable(String)) }
132
+ attr_reader :direction
133
+
134
+ sig { params(direction: String).void }
135
+ attr_writer :direction
136
+
131
137
  sig do
132
138
  returns(
133
139
  T.nilable(
@@ -188,19 +194,13 @@ module Sentdm
188
194
  attr_writer :status
189
195
 
190
196
  sig { returns(T.nilable(String)) }
191
- attr_reader :template_category
192
-
193
- sig { params(template_category: String).void }
194
- attr_writer :template_category
197
+ attr_accessor :template_category
195
198
 
196
199
  sig { returns(T.nilable(String)) }
197
200
  attr_accessor :template_id
198
201
 
199
202
  sig { returns(T.nilable(String)) }
200
- attr_reader :template_name
201
-
202
- sig { params(template_name: String).void }
203
- attr_writer :template_name
203
+ attr_accessor :template_name
204
204
 
205
205
  # Message response for v3 API — same shape as v2 with snake_case JSON conventions
206
206
  sig do
@@ -211,6 +211,7 @@ module Sentdm
211
211
  contact_id: String,
212
212
  created_at: Time,
213
213
  customer_id: String,
214
+ direction: String,
214
215
  events:
215
216
  T.nilable(
216
217
  T::Array[
@@ -226,9 +227,9 @@ module Sentdm
226
227
  price: T.nilable(Float),
227
228
  region_code: String,
228
229
  status: String,
229
- template_category: String,
230
+ template_category: T.nilable(String),
230
231
  template_id: T.nilable(String),
231
- template_name: String
232
+ template_name: T.nilable(String)
232
233
  ).returns(T.attached_class)
233
234
  end
234
235
  def self.new(
@@ -238,6 +239,7 @@ module Sentdm
238
239
  contact_id: nil,
239
240
  created_at: nil,
240
241
  customer_id: nil,
242
+ direction: nil,
241
243
  events: nil,
242
244
  # Structured message body format for database storage. Preserves channel-specific
243
245
  # components (header, body, footer, buttons).
@@ -262,6 +264,7 @@ module Sentdm
262
264
  contact_id: String,
263
265
  created_at: Time,
264
266
  customer_id: String,
267
+ direction: String,
265
268
  events:
266
269
  T.nilable(
267
270
  T::Array[
@@ -277,9 +280,9 @@ module Sentdm
277
280
  price: T.nilable(Float),
278
281
  region_code: String,
279
282
  status: String,
280
- template_category: String,
283
+ template_category: T.nilable(String),
281
284
  template_id: T.nilable(String),
282
- template_name: String
285
+ template_name: T.nilable(String)
283
286
  }
284
287
  )
285
288
  end
@@ -58,6 +58,7 @@ module Sentdm
58
58
  sig do
59
59
  params(
60
60
  id: String,
61
+ channel_consent: T.nilable(T::Hash[Symbol, String]),
61
62
  default_channel: T.nilable(String),
62
63
  opt_out: T.nilable(T::Boolean),
63
64
  sandbox: T::Boolean,
@@ -69,6 +70,13 @@ module Sentdm
69
70
  def update(
70
71
  # Path param: Contact ID from route parameter
71
72
  id,
73
+ # Body param: Consent status by channel. Keys: "sms", "whatsapp". Values:
74
+ # "opted_in", "opted_out". All entries must have the same status — mixed values
75
+ # (e.g., sms: opted_out + whatsapp: opted_in) are rejected with 400. The provided
76
+ # status is applied to ALL channels regardless of which keys are specified,
77
+ # because consent is global across channels. When provided, takes precedence over
78
+ # the opt_out field.
79
+ channel_consent: nil,
72
80
  # Body param: Default messaging channel: "sms" or "whatsapp"
73
81
  default_channel: nil,
74
82
  # Body param: Whether the contact has opted out of messaging
@@ -4,6 +4,7 @@ module Sentdm
4
4
  {
5
5
  id: String,
6
6
  available_channels: String,
7
+ channel_consent: ::Hash[Symbol, String]?,
7
8
  country_code: String,
8
9
  created_at: Time,
9
10
  default_channel: String,
@@ -27,6 +28,8 @@ module Sentdm
27
28
 
28
29
  def available_channels=: (String) -> String
29
30
 
31
+ attr_accessor channel_consent: ::Hash[Symbol, String]?
32
+
30
33
  attr_reader country_code: String?
31
34
 
32
35
  def country_code=: (String) -> String
@@ -76,6 +79,7 @@ module Sentdm
76
79
  def initialize: (
77
80
  ?id: String,
78
81
  ?available_channels: String,
82
+ ?channel_consent: ::Hash[Symbol, String]?,
79
83
  ?country_code: String,
80
84
  ?created_at: Time,
81
85
  ?default_channel: String,
@@ -93,6 +97,7 @@ module Sentdm
93
97
  def to_hash: -> {
94
98
  id: String,
95
99
  available_channels: String,
100
+ channel_consent: ::Hash[Symbol, String]?,
96
101
  country_code: String,
97
102
  created_at: Time,
98
103
  default_channel: String,
@@ -3,6 +3,7 @@ module Sentdm
3
3
  type contact_update_params =
4
4
  {
5
5
  id: String,
6
+ channel_consent: ::Hash[Symbol, String]?,
6
7
  default_channel: String?,
7
8
  opt_out: bool?,
8
9
  sandbox: bool,
@@ -17,6 +18,8 @@ module Sentdm
17
18
 
18
19
  attr_accessor id: String
19
20
 
21
+ attr_accessor channel_consent: ::Hash[Symbol, String]?
22
+
20
23
  attr_accessor default_channel: String?
21
24
 
22
25
  attr_accessor opt_out: bool?
@@ -35,6 +38,7 @@ module Sentdm
35
38
 
36
39
  def initialize: (
37
40
  id: String,
41
+ ?channel_consent: ::Hash[Symbol, String]?,
38
42
  ?default_channel: String?,
39
43
  ?opt_out: bool?,
40
44
  ?sandbox: bool,
@@ -45,6 +49,7 @@ module Sentdm
45
49
 
46
50
  def to_hash: -> {
47
51
  id: String,
52
+ channel_consent: ::Hash[Symbol, String]?,
48
53
  default_channel: String?,
49
54
  opt_out: bool?,
50
55
  sandbox: bool,
@@ -43,6 +43,7 @@ module Sentdm
43
43
  contact_id: String,
44
44
  created_at: Time,
45
45
  customer_id: String,
46
+ direction: String,
46
47
  events: ::Array[Sentdm::Models::MessageRetrieveStatusResponse::Data::Event]?,
47
48
  message_body: Sentdm::Models::MessageRetrieveStatusResponse::Data::MessageBody?,
48
49
  phone: String,
@@ -50,9 +51,9 @@ module Sentdm
50
51
  price: Float?,
51
52
  region_code: String,
52
53
  status: String,
53
- template_category: String,
54
+ template_category: String?,
54
55
  template_id: String?,
55
- template_name: String
56
+ template_name: String?
56
57
  }
57
58
 
58
59
  class Data < Sentdm::Internal::Type::BaseModel
@@ -78,6 +79,10 @@ module Sentdm
78
79
 
79
80
  def customer_id=: (String) -> String
80
81
 
82
+ attr_reader direction: String?
83
+
84
+ def direction=: (String) -> String
85
+
81
86
  attr_accessor events: ::Array[Sentdm::Models::MessageRetrieveStatusResponse::Data::Event]?
82
87
 
83
88
  attr_accessor message_body: Sentdm::Models::MessageRetrieveStatusResponse::Data::MessageBody?
@@ -100,15 +105,11 @@ module Sentdm
100
105
 
101
106
  def status=: (String) -> String
102
107
 
103
- attr_reader template_category: String?
104
-
105
- def template_category=: (String) -> String
108
+ attr_accessor template_category: String?
106
109
 
107
110
  attr_accessor template_id: String?
108
111
 
109
- attr_reader template_name: String?
110
-
111
- def template_name=: (String) -> String
112
+ attr_accessor template_name: String?
112
113
 
113
114
  def initialize: (
114
115
  ?id: String,
@@ -117,6 +118,7 @@ module Sentdm
117
118
  ?contact_id: String,
118
119
  ?created_at: Time,
119
120
  ?customer_id: String,
121
+ ?direction: String,
120
122
  ?events: ::Array[Sentdm::Models::MessageRetrieveStatusResponse::Data::Event]?,
121
123
  ?message_body: Sentdm::Models::MessageRetrieveStatusResponse::Data::MessageBody?,
122
124
  ?phone: String,
@@ -124,9 +126,9 @@ module Sentdm
124
126
  ?price: Float?,
125
127
  ?region_code: String,
126
128
  ?status: String,
127
- ?template_category: String,
129
+ ?template_category: String?,
128
130
  ?template_id: String?,
129
- ?template_name: String
131
+ ?template_name: String?
130
132
  ) -> void
131
133
 
132
134
  def to_hash: -> {
@@ -136,6 +138,7 @@ module Sentdm
136
138
  contact_id: String,
137
139
  created_at: Time,
138
140
  customer_id: String,
141
+ direction: String,
139
142
  events: ::Array[Sentdm::Models::MessageRetrieveStatusResponse::Data::Event]?,
140
143
  message_body: Sentdm::Models::MessageRetrieveStatusResponse::Data::MessageBody?,
141
144
  phone: String,
@@ -143,9 +146,9 @@ module Sentdm
143
146
  price: Float?,
144
147
  region_code: String,
145
148
  status: String,
146
- template_category: String,
149
+ template_category: String?,
147
150
  template_id: String?,
148
- template_name: String
151
+ template_name: String?
149
152
  }
150
153
 
151
154
  type event = { description: String?, status: String, timestamp: Time }
@@ -17,6 +17,7 @@ module Sentdm
17
17
 
18
18
  def update: (
19
19
  String id,
20
+ ?channel_consent: ::Hash[Symbol, String]?,
20
21
  ?default_channel: String?,
21
22
  ?opt_out: bool?,
22
23
  ?sandbox: bool,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sentdm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sent
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-04-20 00:00:00.000000000 Z
11
+ date: 2026-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi