knockapi 1.16.0 → 1.17.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 (80) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -0
  3. data/README.md +1 -1
  4. data/lib/knockapi/internal/transport/pooled_net_requester.rb +30 -24
  5. data/lib/knockapi/internal/util.rb +5 -5
  6. data/lib/knockapi/models/identify_user_request.rb +2 -2
  7. data/lib/knockapi/models/inline_identify_user_request.rb +2 -2
  8. data/lib/knockapi/models/inline_object_request.rb +2 -2
  9. data/lib/knockapi/models/message.rb +94 -3
  10. data/lib/knockapi/models/messages/batch_archive_response.rb +1 -1
  11. data/lib/knockapi/models/messages/batch_mark_as_interacted_response.rb +1 -1
  12. data/lib/knockapi/models/messages/batch_mark_as_read_response.rb +1 -1
  13. data/lib/knockapi/models/messages/batch_mark_as_seen_response.rb +1 -1
  14. data/lib/knockapi/models/messages/batch_mark_as_unread_response.rb +1 -1
  15. data/lib/knockapi/models/messages/batch_mark_as_unseen_response.rb +1 -1
  16. data/lib/knockapi/models/messages/batch_unarchive_response.rb +1 -1
  17. data/lib/knockapi/models/object_set_params.rb +2 -2
  18. data/lib/knockapi/models/objects/bulk_set_params.rb +2 -2
  19. data/lib/knockapi/models/recipients/channel_data.rb +133 -11
  20. data/lib/knockapi/models/recipients/channel_data_request.rb +36 -10
  21. data/lib/knockapi/models/recipients/inline_channel_data_request.rb +34 -8
  22. data/lib/knockapi/models/recipients/preference_set.rb +130 -3
  23. data/lib/knockapi/models/recipients/preference_set_request.rb +136 -3
  24. data/lib/knockapi/models/tenant_request.rb +2 -2
  25. data/lib/knockapi/models/tenant_set_params.rb +2 -2
  26. data/lib/knockapi/models/users/guide_get_channel_response.rb +270 -34
  27. data/lib/knockapi/resources/messages/batch.rb +7 -7
  28. data/lib/knockapi/resources/objects.rb +7 -3
  29. data/lib/knockapi/resources/tenants.rb +1 -1
  30. data/lib/knockapi/resources/users.rb +7 -3
  31. data/lib/knockapi/version.rb +1 -1
  32. data/lib/knockapi.rb +0 -2
  33. data/rbi/knockapi/models/identify_user_request.rbi +9 -9
  34. data/rbi/knockapi/models/inline_identify_user_request.rbi +9 -9
  35. data/rbi/knockapi/models/inline_object_request.rbi +9 -9
  36. data/rbi/knockapi/models/message.rbi +123 -2
  37. data/rbi/knockapi/models/messages/batch_archive_response.rbi +1 -1
  38. data/rbi/knockapi/models/messages/batch_mark_as_interacted_response.rbi +1 -1
  39. data/rbi/knockapi/models/messages/batch_mark_as_read_response.rbi +1 -1
  40. data/rbi/knockapi/models/messages/batch_mark_as_seen_response.rbi +1 -1
  41. data/rbi/knockapi/models/messages/batch_mark_as_unread_response.rbi +1 -1
  42. data/rbi/knockapi/models/messages/batch_mark_as_unseen_response.rbi +1 -1
  43. data/rbi/knockapi/models/messages/batch_unarchive_response.rbi +1 -1
  44. data/rbi/knockapi/models/object_set_params.rbi +12 -12
  45. data/rbi/knockapi/models/objects/bulk_set_params.rbi +9 -9
  46. data/rbi/knockapi/models/recipients/channel_data.rbi +250 -12
  47. data/rbi/knockapi/models/recipients/channel_data_request.rbi +68 -14
  48. data/rbi/knockapi/models/recipients/inline_channel_data_request.rbi +57 -5
  49. data/rbi/knockapi/models/recipients/preference_set.rbi +279 -0
  50. data/rbi/knockapi/models/recipients/preference_set_request.rbi +299 -0
  51. data/rbi/knockapi/models/tenant_request.rbi +9 -9
  52. data/rbi/knockapi/models/tenant_set_params.rbi +9 -9
  53. data/rbi/knockapi/models/users/guide_get_channel_response.rbi +532 -70
  54. data/rbi/knockapi/resources/messages/batch.rbi +7 -7
  55. data/rbi/knockapi/resources/objects.rbi +22 -6
  56. data/rbi/knockapi/resources/tenants.rbi +3 -3
  57. data/rbi/knockapi/resources/users.rbi +22 -6
  58. data/sig/knockapi/models/message.rbs +79 -0
  59. data/sig/knockapi/models/messages/batch_archive_response.rbs +1 -1
  60. data/sig/knockapi/models/messages/batch_mark_as_interacted_response.rbs +1 -2
  61. data/sig/knockapi/models/messages/batch_mark_as_read_response.rbs +1 -1
  62. data/sig/knockapi/models/messages/batch_mark_as_seen_response.rbs +1 -1
  63. data/sig/knockapi/models/messages/batch_mark_as_unread_response.rbs +1 -1
  64. data/sig/knockapi/models/messages/batch_mark_as_unseen_response.rbs +1 -1
  65. data/sig/knockapi/models/messages/batch_unarchive_response.rbs +1 -1
  66. data/sig/knockapi/models/recipients/channel_data.rbs +97 -7
  67. data/sig/knockapi/models/recipients/channel_data_request.rbs +27 -5
  68. data/sig/knockapi/models/recipients/inline_channel_data_request.rbs +27 -5
  69. data/sig/knockapi/models/recipients/preference_set.rbs +87 -0
  70. data/sig/knockapi/models/recipients/preference_set_request.rbs +87 -0
  71. data/sig/knockapi/models/users/guide_get_channel_response.rbs +294 -31
  72. data/sig/knockapi/resources/objects.rbs +2 -0
  73. data/sig/knockapi/resources/users.rbs +2 -0
  74. metadata +2 -8
  75. data/lib/knockapi/models/recipients/one_signal_channel_data.rb +0 -20
  76. data/lib/knockapi/models/recipients/push_channel_data.rb +0 -20
  77. data/rbi/knockapi/models/recipients/one_signal_channel_data.rbi +0 -33
  78. data/rbi/knockapi/models/recipients/push_channel_data.rbi +0 -33
  79. data/sig/knockapi/models/recipients/one_signal_channel_data.rbs +0 -15
  80. data/sig/knockapi/models/recipients/push_channel_data.rbs +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1630ae8acf4360fc75f33510c2fcb8423468a3d833430f516275c3c7a6730546
4
- data.tar.gz: 2eafc59334b1af87ca901007d2f2c8f2d917eebaa7ba47a9bb3513d4e8af870d
3
+ metadata.gz: fc785b0ad211db7b83b53f41e0049c338cb773c1e38939ae169b79d8f7c864c0
4
+ data.tar.gz: 6da67b0bb566b75e47f5f8e3df16f186d1be34d66a465e64849cad9f796da95d
5
5
  SHA512:
6
- metadata.gz: a9e0edc59e0d14876def76d371494014a4b4353947938247f011ffd853aaf05c5c05a214309ecb092e4783c03a5235d3b12c744f9ec20b27ae9c81bc4103ff50
7
- data.tar.gz: 49c8be1db5c6ce3e680c5768c1b9579148dc44151d68b49a28c0a162cd0261ae9c0f206388fc2d0fb1e884970a170a1b0f94ce03e0f4f7504afa86dff0b33f6a
6
+ metadata.gz: f8aa5dd11bb82eb2b81d6c2e359db5da4a97088f649d9808eccf6fd74d356ead63b919aedaa2b61bd339a958ade85deccf9965f20677b5d5646c38d9b9567169
7
+ data.tar.gz: 2d0532da30ba698de50465a59f46cd96ce75cd63be73807ee92124181ec5e03e48b804a1011f16cc43ff4cf6a08c285550bb7bcbd7db6b43f089121946e95f3a
data/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.17.0 (2025-10-24)
4
+
5
+ Full Changelog: [v1.16.0...v1.17.0](https://github.com/knocklabs/knock-ruby/compare/v1.16.0...v1.17.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([fd477b8](https://github.com/knocklabs/knock-ruby/commit/fd477b877f0a74c124a531a9f9b09e52905383b7))
10
+ * **api:** api update ([e47f831](https://github.com/knocklabs/knock-ruby/commit/e47f831b8ec05779d0003c27f701f9b0fd1c85b5))
11
+ * **api:** api update ([2b5808c](https://github.com/knocklabs/knock-ruby/commit/2b5808ccb42252fdebc45486d231aba4dfa9a7b7))
12
+ * **api:** api update ([99546b7](https://github.com/knocklabs/knock-ruby/commit/99546b73a6a6440e373059c1bdc71d48532af3fa))
13
+ * **api:** api update ([042c92a](https://github.com/knocklabs/knock-ruby/commit/042c92a80665539dfeda7c2b8de0acead59fcfb1))
14
+ * **api:** api update ([0f7fc4a](https://github.com/knocklabs/knock-ruby/commit/0f7fc4a35357d5cf6cb8394f0df9b60598d15e63))
15
+ * handle thread interrupts in the core HTTP client ([6161a77](https://github.com/knocklabs/knock-ruby/commit/6161a7749b9fa424f49758cebd3753d135a84095))
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * absolutely qualified uris should always override the default ([2bb6341](https://github.com/knocklabs/knock-ruby/commit/2bb63414bbf3b9d9b4b996cd75341a183a6aa792))
21
+ * should not reuse buffers for `IO.copy_stream` interop ([6464681](https://github.com/knocklabs/knock-ruby/commit/64646819574a19a1eb4969dc4abbc1d718ed7f4f))
22
+
23
+
24
+ ### Chores
25
+
26
+ * ignore linter error for tests having large collections ([20f8ea6](https://github.com/knocklabs/knock-ruby/commit/20f8ea6a8cae8b3463b48d48f4ad065df465cddb))
27
+ * simplify model references ([c126d85](https://github.com/knocklabs/knock-ruby/commit/c126d85300aa1ffe211fbc8e1c25eff4ca25ab7e))
28
+
3
29
  ## 1.16.0 (2025-10-07)
4
30
 
5
31
  Full Changelog: [v1.15.0...v1.16.0](https://github.com/knocklabs/knock-ruby/compare/v1.15.0...v1.16.0)
data/README.md CHANGED
@@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
17
17
  <!-- x-release-please-start-version -->
18
18
 
19
19
  ```ruby
20
- gem "knockapi", "~> 1.16.0"
20
+ gem "knockapi", "~> 1.17.0"
21
21
  ```
22
22
 
23
23
  <!-- x-release-please-end -->
@@ -128,40 +128,48 @@ module Knockapi
128
128
  url, deadline = request.fetch_values(:url, :deadline)
129
129
 
130
130
  req = nil
131
- eof = false
132
131
  finished = false
133
- closing = nil
134
132
 
135
133
  # rubocop:disable Metrics/BlockLength
136
134
  enum = Enumerator.new do |y|
137
135
  next if finished
138
136
 
139
137
  with_pool(url, deadline: deadline) do |conn|
140
- req, closing = self.class.build_request(request) do
141
- self.class.calibrate_socket_timeout(conn, deadline)
142
- end
143
-
144
- self.class.calibrate_socket_timeout(conn, deadline)
145
- unless conn.started?
146
- conn.keep_alive_timeout = self.class::KEEP_ALIVE_TIMEOUT
147
- conn.start
148
- end
138
+ eof = false
139
+ closing = nil
140
+ ::Thread.handle_interrupt(Object => :never) do
141
+ ::Thread.handle_interrupt(Object => :immediate) do
142
+ req, closing = self.class.build_request(request) do
143
+ self.class.calibrate_socket_timeout(conn, deadline)
144
+ end
149
145
 
150
- self.class.calibrate_socket_timeout(conn, deadline)
151
- conn.request(req) do |rsp|
152
- y << [req, rsp]
153
- break if finished
154
-
155
- rsp.read_body do |bytes|
156
- y << bytes.force_encoding(Encoding::BINARY)
157
- break if finished
146
+ self.class.calibrate_socket_timeout(conn, deadline)
147
+ unless conn.started?
148
+ conn.keep_alive_timeout = self.class::KEEP_ALIVE_TIMEOUT
149
+ conn.start
150
+ end
158
151
 
159
152
  self.class.calibrate_socket_timeout(conn, deadline)
153
+ conn.request(req) do |rsp|
154
+ y << [req, rsp]
155
+ break if finished
156
+
157
+ rsp.read_body do |bytes|
158
+ y << bytes.force_encoding(Encoding::BINARY)
159
+ break if finished
160
+
161
+ self.class.calibrate_socket_timeout(conn, deadline)
162
+ end
163
+ eof = true
164
+ end
165
+ end
166
+ ensure
167
+ begin
168
+ conn.finish if !eof && conn&.started?
169
+ ensure
170
+ closing&.call
160
171
  end
161
- eof = true
162
172
  end
163
- ensure
164
- conn.finish if !eof && conn&.started?
165
173
  end
166
174
  rescue Timeout::Error
167
175
  raise Knockapi::Errors::APITimeoutError.new(url: url, request: req)
@@ -174,8 +182,6 @@ module Knockapi
174
182
  body = Knockapi::Internal::Util.fused_enum(enum, external: true) do
175
183
  finished = true
176
184
  loop { enum.next }
177
- ensure
178
- closing&.call
179
185
  end
180
186
  [Integer(response.code), response, body]
181
187
  end
@@ -346,8 +346,9 @@ module Knockapi
346
346
  base_path, base_query = lhs.fetch_values(:path, :query)
347
347
  slashed = base_path.end_with?("/") ? base_path : "#{base_path}/"
348
348
 
349
- parsed_path, parsed_query = parse_uri(rhs.fetch(:path)).fetch_values(:path, :query)
350
- override = URI::Generic.build(**rhs.slice(:scheme, :host, :port), path: parsed_path)
349
+ merged = {**parse_uri(rhs.fetch(:path)), **rhs.except(:path, :query)}
350
+ parsed_path, parsed_query = merged.fetch_values(:path, :query)
351
+ override = URI::Generic.build(**merged.slice(:scheme, :host, :port), path: parsed_path)
351
352
 
352
353
  joined = URI.join(URI::Generic.build(lhs.except(:path, :query)), slashed, override)
353
354
  query = deep_merge(
@@ -473,10 +474,9 @@ module Knockapi
473
474
  # @return [Enumerable<String>]
474
475
  def writable_enum(&blk)
475
476
  Enumerator.new do |y|
476
- buf = String.new
477
477
  y.define_singleton_method(:write) do
478
- self << buf.replace(_1)
479
- buf.bytesize
478
+ self << _1.dup
479
+ _1.bytesize
480
480
  end
481
481
 
482
482
  blk.call(y)
@@ -12,7 +12,7 @@ module Knockapi
12
12
  # @!attribute channel_data
13
13
  # A request to set channel data for a type of channel inline.
14
14
  #
15
- # @return [Hash{Symbol=>Knockapi::Models::Recipients::PushChannelData, Knockapi::Models::Recipients::OneSignalChannelData, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwsSnsPushChannelData, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil]
15
+ # @return [Hash{Symbol=>Knockapi::Models::Recipients::InlineChannelDataRequestItem::PushChannelDataTokensOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwssnsPushChannelDataTargetArNsOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::OneSignalChannelDataPlayerIDsOnly, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil]
16
16
  optional :channel_data,
17
17
  -> {
18
18
  Knockapi::Internal::Type::HashOf[union: Knockapi::Recipients::InlineChannelDataRequestItem]
@@ -79,7 +79,7 @@ module Knockapi
79
79
  #
80
80
  # @param avatar [String, nil] A URL for the avatar of the user.
81
81
  #
82
- # @param channel_data [Hash{Symbol=>Knockapi::Models::Recipients::PushChannelData, Knockapi::Models::Recipients::OneSignalChannelData, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwsSnsPushChannelData, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil] A request to set channel data for a type of channel inline.
82
+ # @param channel_data [Hash{Symbol=>Knockapi::Models::Recipients::InlineChannelDataRequestItem::PushChannelDataTokensOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwssnsPushChannelDataTargetArNsOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::OneSignalChannelDataPlayerIDsOnly, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil] A request to set channel data for a type of channel inline.
83
83
  #
84
84
  # @param created_at [Time, nil] The creation date of the user from your system.
85
85
  #
@@ -18,7 +18,7 @@ module Knockapi
18
18
  # @!attribute channel_data
19
19
  # A request to set channel data for a type of channel inline.
20
20
  #
21
- # @return [Hash{Symbol=>Knockapi::Models::Recipients::PushChannelData, Knockapi::Models::Recipients::OneSignalChannelData, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwsSnsPushChannelData, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil]
21
+ # @return [Hash{Symbol=>Knockapi::Models::Recipients::InlineChannelDataRequestItem::PushChannelDataTokensOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwssnsPushChannelDataTargetArNsOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::OneSignalChannelDataPlayerIDsOnly, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil]
22
22
  optional :channel_data,
23
23
  -> {
24
24
  Knockapi::Internal::Type::HashOf[union: Knockapi::Recipients::InlineChannelDataRequestItem]
@@ -88,7 +88,7 @@ module Knockapi
88
88
  #
89
89
  # @param avatar [String, nil] A URL for the avatar of the user.
90
90
  #
91
- # @param channel_data [Hash{Symbol=>Knockapi::Models::Recipients::PushChannelData, Knockapi::Models::Recipients::OneSignalChannelData, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwsSnsPushChannelData, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil] A request to set channel data for a type of channel inline.
91
+ # @param channel_data [Hash{Symbol=>Knockapi::Models::Recipients::InlineChannelDataRequestItem::PushChannelDataTokensOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwssnsPushChannelDataTargetArNsOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::OneSignalChannelDataPlayerIDsOnly, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil] A request to set channel data for a type of channel inline.
92
92
  #
93
93
  # @param created_at [Time, nil] The creation date of the user from your system.
94
94
  #
@@ -18,7 +18,7 @@ module Knockapi
18
18
  # @!attribute channel_data
19
19
  # A request to set channel data for a type of channel inline.
20
20
  #
21
- # @return [Hash{Symbol=>Knockapi::Models::Recipients::PushChannelData, Knockapi::Models::Recipients::OneSignalChannelData, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwsSnsPushChannelData, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil]
21
+ # @return [Hash{Symbol=>Knockapi::Models::Recipients::InlineChannelDataRequestItem::PushChannelDataTokensOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwssnsPushChannelDataTargetArNsOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::OneSignalChannelDataPlayerIDsOnly, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil]
22
22
  optional :channel_data,
23
23
  -> {
24
24
  Knockapi::Internal::Type::HashOf[union: Knockapi::Recipients::InlineChannelDataRequestItem]
@@ -51,7 +51,7 @@ module Knockapi
51
51
  #
52
52
  # @param collection [String] The collection this object belongs to.
53
53
  #
54
- # @param channel_data [Hash{Symbol=>Knockapi::Models::Recipients::PushChannelData, Knockapi::Models::Recipients::OneSignalChannelData, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwsSnsPushChannelData, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil] A request to set channel data for a type of channel inline.
54
+ # @param channel_data [Hash{Symbol=>Knockapi::Models::Recipients::InlineChannelDataRequestItem::PushChannelDataTokensOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwssnsPushChannelDataTargetArNsOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::OneSignalChannelDataPlayerIDsOnly, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil] A request to set channel data for a type of channel inline.
55
55
  #
56
56
  # @param created_at [Time, nil] Timestamp when the resource was created.
57
57
  #
@@ -17,7 +17,9 @@ module Knockapi
17
17
  required :_typename, String, api_name: :__typename
18
18
 
19
19
  # @!attribute channel_id
20
- # The ID for the channel the message was sent through.
20
+ # @deprecated
21
+ #
22
+ # Deprecated, use channel.id instead.
21
23
  #
22
24
  # @return [String]
23
25
  required :channel_id, String
@@ -74,6 +76,12 @@ module Knockapi
74
76
  # @return [Time, nil]
75
77
  optional :archived_at, Time, nil?: true
76
78
 
79
+ # @!attribute channel
80
+ # A configured channel, which is a way to route messages to a provider.
81
+ #
82
+ # @return [Knockapi::Models::Message::Channel, nil]
83
+ optional :channel, -> { Knockapi::Message::Channel }
84
+
77
85
  # @!attribute clicked_at
78
86
  # Timestamp when the message was clicked.
79
87
  #
@@ -141,7 +149,7 @@ module Knockapi
141
149
  # @return [String, nil]
142
150
  optional :workflow, String, nil?: true
143
151
 
144
- # @!method initialize(id:, _typename:, channel_id:, engagement_statuses:, inserted_at:, recipient:, source:, status:, updated_at:, actors: nil, archived_at: nil, clicked_at: nil, data: nil, interacted_at: nil, link_clicked_at: nil, metadata: nil, read_at: nil, scheduled_at: nil, seen_at: nil, tenant: nil, workflow: nil)
152
+ # @!method initialize(id:, _typename:, channel_id:, engagement_statuses:, inserted_at:, recipient:, source:, status:, updated_at:, actors: nil, archived_at: nil, channel: nil, clicked_at: nil, data: nil, interacted_at: nil, link_clicked_at: nil, metadata: nil, read_at: nil, scheduled_at: nil, seen_at: nil, tenant: nil, workflow: nil)
145
153
  # Some parameter documentations has been truncated, see
146
154
  # {Knockapi::Models::Message} for more details.
147
155
  #
@@ -152,7 +160,7 @@ module Knockapi
152
160
  #
153
161
  # @param _typename [String] The typename of the schema.
154
162
  #
155
- # @param channel_id [String] The ID for the channel the message was sent through.
163
+ # @param channel_id [String] Deprecated, use channel.id instead.
156
164
  #
157
165
  # @param engagement_statuses [Array<Symbol, Knockapi::Models::Message::EngagementStatus>] A list of engagement statuses.
158
166
  #
@@ -170,6 +178,8 @@ module Knockapi
170
178
  #
171
179
  # @param archived_at [Time, nil] Timestamp when the message was archived.
172
180
  #
181
+ # @param channel [Knockapi::Models::Message::Channel] A configured channel, which is a way to route messages to a provider.
182
+ #
173
183
  # @param clicked_at [Time, nil] Timestamp when the message was clicked.
174
184
  #
175
185
  # @param data [Hash{Symbol=>Object}, nil] Data associated with the message’s workflow run. Includes the workflow trigger r
@@ -289,6 +299,87 @@ module Knockapi
289
299
  # @!method self.values
290
300
  # @return [Array<Symbol>]
291
301
  end
302
+
303
+ # @see Knockapi::Models::Message#channel
304
+ class Channel < Knockapi::Internal::Type::BaseModel
305
+ # @!attribute id
306
+ # The unique identifier for the channel.
307
+ #
308
+ # @return [String]
309
+ required :id, String
310
+
311
+ # @!attribute created_at
312
+ # The timestamp of when the channel was created.
313
+ #
314
+ # @return [Time]
315
+ required :created_at, Time
316
+
317
+ # @!attribute provider
318
+ # The ID of the provider that this channel uses to deliver messages.
319
+ #
320
+ # @return [String]
321
+ required :provider, String
322
+
323
+ # @!attribute type
324
+ # The type of channel, determining what kind of messages it can send.
325
+ #
326
+ # @return [Symbol, Knockapi::Models::Message::Channel::Type]
327
+ required :type, enum: -> { Knockapi::Message::Channel::Type }
328
+
329
+ # @!attribute updated_at
330
+ # The timestamp of when the channel was last updated.
331
+ #
332
+ # @return [Time]
333
+ required :updated_at, Time
334
+
335
+ # @!attribute key
336
+ # Unique identifier for the channel within a project (immutable once created).
337
+ #
338
+ # @return [String, nil]
339
+ optional :key, String, nil?: true
340
+
341
+ # @!attribute name
342
+ # The human-readable name of the channel.
343
+ #
344
+ # @return [String, nil]
345
+ optional :name, String, nil?: true
346
+
347
+ # @!method initialize(id:, created_at:, provider:, type:, updated_at:, key: nil, name: nil)
348
+ # A configured channel, which is a way to route messages to a provider.
349
+ #
350
+ # @param id [String] The unique identifier for the channel.
351
+ #
352
+ # @param created_at [Time] The timestamp of when the channel was created.
353
+ #
354
+ # @param provider [String] The ID of the provider that this channel uses to deliver messages.
355
+ #
356
+ # @param type [Symbol, Knockapi::Models::Message::Channel::Type] The type of channel, determining what kind of messages it can send.
357
+ #
358
+ # @param updated_at [Time] The timestamp of when the channel was last updated.
359
+ #
360
+ # @param key [String, nil] Unique identifier for the channel within a project (immutable once created).
361
+ #
362
+ # @param name [String, nil] The human-readable name of the channel.
363
+
364
+ # The type of channel, determining what kind of messages it can send.
365
+ #
366
+ # @see Knockapi::Models::Message::Channel#type
367
+ module Type
368
+ extend Knockapi::Internal::Type::Enum
369
+
370
+ EMAIL = :email
371
+ IN_APP = :in_app
372
+ IN_APP_FEED = :in_app_feed
373
+ IN_APP_GUIDE = :in_app_guide
374
+ SMS = :sms
375
+ PUSH = :push
376
+ CHAT = :chat
377
+ HTTP = :http
378
+
379
+ # @!method self.values
380
+ # @return [Array<Symbol>]
381
+ end
382
+ end
292
383
  end
293
384
  end
294
385
  end
@@ -4,7 +4,7 @@ module Knockapi
4
4
  module Models
5
5
  module Messages
6
6
  # @type [Knockapi::Internal::Type::Converter]
7
- BatchArchiveResponse = Knockapi::Internal::Type::ArrayOf[-> { Knockapi::Models::Message }]
7
+ BatchArchiveResponse = Knockapi::Internal::Type::ArrayOf[-> { Knockapi::Message }]
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Knockapi
4
4
  module Models
5
5
  module Messages
6
6
  # @type [Knockapi::Internal::Type::Converter]
7
- BatchMarkAsInteractedResponse = Knockapi::Internal::Type::ArrayOf[-> { Knockapi::Models::Message }]
7
+ BatchMarkAsInteractedResponse = Knockapi::Internal::Type::ArrayOf[-> { Knockapi::Message }]
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Knockapi
4
4
  module Models
5
5
  module Messages
6
6
  # @type [Knockapi::Internal::Type::Converter]
7
- BatchMarkAsReadResponse = Knockapi::Internal::Type::ArrayOf[-> { Knockapi::Models::Message }]
7
+ BatchMarkAsReadResponse = Knockapi::Internal::Type::ArrayOf[-> { Knockapi::Message }]
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Knockapi
4
4
  module Models
5
5
  module Messages
6
6
  # @type [Knockapi::Internal::Type::Converter]
7
- BatchMarkAsSeenResponse = Knockapi::Internal::Type::ArrayOf[-> { Knockapi::Models::Message }]
7
+ BatchMarkAsSeenResponse = Knockapi::Internal::Type::ArrayOf[-> { Knockapi::Message }]
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Knockapi
4
4
  module Models
5
5
  module Messages
6
6
  # @type [Knockapi::Internal::Type::Converter]
7
- BatchMarkAsUnreadResponse = Knockapi::Internal::Type::ArrayOf[-> { Knockapi::Models::Message }]
7
+ BatchMarkAsUnreadResponse = Knockapi::Internal::Type::ArrayOf[-> { Knockapi::Message }]
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Knockapi
4
4
  module Models
5
5
  module Messages
6
6
  # @type [Knockapi::Internal::Type::Converter]
7
- BatchMarkAsUnseenResponse = Knockapi::Internal::Type::ArrayOf[-> { Knockapi::Models::Message }]
7
+ BatchMarkAsUnseenResponse = Knockapi::Internal::Type::ArrayOf[-> { Knockapi::Message }]
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Knockapi
4
4
  module Models
5
5
  module Messages
6
6
  # @type [Knockapi::Internal::Type::Converter]
7
- BatchUnarchiveResponse = Knockapi::Internal::Type::ArrayOf[-> { Knockapi::Models::Message }]
7
+ BatchUnarchiveResponse = Knockapi::Internal::Type::ArrayOf[-> { Knockapi::Message }]
8
8
  end
9
9
  end
10
10
  end
@@ -10,7 +10,7 @@ module Knockapi
10
10
  # @!attribute channel_data
11
11
  # A request to set channel data for a type of channel inline.
12
12
  #
13
- # @return [Hash{Symbol=>Knockapi::Models::Recipients::PushChannelData, Knockapi::Models::Recipients::OneSignalChannelData, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwsSnsPushChannelData, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil]
13
+ # @return [Hash{Symbol=>Knockapi::Models::Recipients::InlineChannelDataRequestItem::PushChannelDataTokensOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwssnsPushChannelDataTargetArNsOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::OneSignalChannelDataPlayerIDsOnly, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil]
14
14
  optional :channel_data,
15
15
  -> { Knockapi::Internal::Type::HashOf[union: Knockapi::Recipients::InlineChannelDataRequestItem] }
16
16
 
@@ -42,7 +42,7 @@ module Knockapi
42
42
  # Some parameter documentations has been truncated, see
43
43
  # {Knockapi::Models::ObjectSetParams} for more details.
44
44
  #
45
- # @param channel_data [Hash{Symbol=>Knockapi::Models::Recipients::PushChannelData, Knockapi::Models::Recipients::OneSignalChannelData, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwsSnsPushChannelData, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}] A request to set channel data for a type of channel inline.
45
+ # @param channel_data [Hash{Symbol=>Knockapi::Models::Recipients::InlineChannelDataRequestItem::PushChannelDataTokensOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwssnsPushChannelDataTargetArNsOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::OneSignalChannelDataPlayerIDsOnly, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}] A request to set channel data for a type of channel inline.
46
46
  #
47
47
  # @param locale [String, nil] The locale of the object. Used for [message localization](/concepts/translations
48
48
  #
@@ -29,7 +29,7 @@ module Knockapi
29
29
  # @!attribute channel_data
30
30
  # A request to set channel data for a type of channel inline.
31
31
  #
32
- # @return [Hash{Symbol=>Knockapi::Models::Recipients::PushChannelData, Knockapi::Models::Recipients::OneSignalChannelData, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwsSnsPushChannelData, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil]
32
+ # @return [Hash{Symbol=>Knockapi::Models::Recipients::InlineChannelDataRequestItem::PushChannelDataTokensOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwssnsPushChannelDataTargetArNsOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::OneSignalChannelDataPlayerIDsOnly, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil]
33
33
  optional :channel_data,
34
34
  -> {
35
35
  Knockapi::Internal::Type::HashOf[union: Knockapi::Recipients::InlineChannelDataRequestItem]
@@ -60,7 +60,7 @@ module Knockapi
60
60
  #
61
61
  # @param id [String] Unique identifier for the object.
62
62
  #
63
- # @param channel_data [Hash{Symbol=>Knockapi::Models::Recipients::PushChannelData, Knockapi::Models::Recipients::OneSignalChannelData, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwsSnsPushChannelData, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil] A request to set channel data for a type of channel inline.
63
+ # @param channel_data [Hash{Symbol=>Knockapi::Models::Recipients::InlineChannelDataRequestItem::PushChannelDataTokensOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::AwssnsPushChannelDataTargetArNsOnly, Knockapi::Models::Recipients::InlineChannelDataRequestItem::OneSignalChannelDataPlayerIDsOnly, Knockapi::Models::Recipients::SlackChannelData, Knockapi::Models::Recipients::MsTeamsChannelData, Knockapi::Models::Recipients::DiscordChannelData}, nil] A request to set channel data for a type of channel inline.
64
64
  #
65
65
  # @param created_at [Time, nil] Timestamp when the resource was created.
66
66
  #