zavudev 0.5.0 → 0.7.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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/README.md +1 -1
  4. data/lib/zavudev/internal/util.rb +3 -1
  5. data/lib/zavudev/models/contact.rb +3 -153
  6. data/lib/zavudev/models/contact_channel.rb +155 -0
  7. data/lib/zavudev/models/message_send_params.rb +4 -3
  8. data/lib/zavudev/models/senders/agent/agent_flow.rb +6 -101
  9. data/lib/zavudev/models/senders/agent/agent_tool.rb +3 -53
  10. data/lib/zavudev/models/senders/agent/flow_create_params.rb +6 -100
  11. data/lib/zavudev/models/senders/agent/flow_step.rb +61 -0
  12. data/lib/zavudev/models/senders/agent/flow_trigger.rb +51 -0
  13. data/lib/zavudev/models/senders/agent/flow_update_params.rb +6 -100
  14. data/lib/zavudev/models/senders/agent/tool_create_params.rb +3 -52
  15. data/lib/zavudev/models/senders/agent/tool_parameters.rb +58 -0
  16. data/lib/zavudev/models/senders/agent/tool_update_params.rb +3 -52
  17. data/lib/zavudev/models/template.rb +33 -5
  18. data/lib/zavudev/models/template_create_params.rb +64 -2
  19. data/lib/zavudev/models.rb +2 -0
  20. data/lib/zavudev/resources/messages.rb +1 -1
  21. data/lib/zavudev/resources/senders/agent/flows.rb +4 -4
  22. data/lib/zavudev/resources/senders/agent/tools.rb +2 -2
  23. data/lib/zavudev/resources/templates.rb +14 -2
  24. data/lib/zavudev/version.rb +1 -1
  25. data/lib/zavudev.rb +4 -0
  26. data/rbi/zavudev/models/contact.rbi +4 -235
  27. data/rbi/zavudev/models/contact_channel.rbi +231 -0
  28. data/rbi/zavudev/models/message_send_params.rbi +6 -4
  29. data/rbi/zavudev/models/senders/agent/agent_flow.rbi +7 -233
  30. data/rbi/zavudev/models/senders/agent/agent_tool.rbi +4 -130
  31. data/rbi/zavudev/models/senders/agent/flow_create_params.rbi +7 -245
  32. data/rbi/zavudev/models/senders/agent/flow_step.rbi +115 -0
  33. data/rbi/zavudev/models/senders/agent/flow_trigger.rbi +108 -0
  34. data/rbi/zavudev/models/senders/agent/flow_update_params.rbi +8 -255
  35. data/rbi/zavudev/models/senders/agent/tool_create_params.rbi +4 -132
  36. data/rbi/zavudev/models/senders/agent/tool_parameters.rbi +124 -0
  37. data/rbi/zavudev/models/senders/agent/tool_update_params.rbi +4 -136
  38. data/rbi/zavudev/models/template.rbi +39 -4
  39. data/rbi/zavudev/models/template_create_params.rbi +105 -0
  40. data/rbi/zavudev/models.rbi +2 -0
  41. data/rbi/zavudev/resources/messages.rbi +3 -3
  42. data/rbi/zavudev/resources/senders/agent/flows.rbi +4 -12
  43. data/rbi/zavudev/resources/senders/agent/tools.rbi +2 -4
  44. data/rbi/zavudev/resources/templates.rbi +19 -0
  45. data/sig/zavudev/models/contact.rbs +6 -153
  46. data/sig/zavudev/models/contact_channel.rbs +150 -0
  47. data/sig/zavudev/models/senders/agent/agent_flow.rbs +8 -100
  48. data/sig/zavudev/models/senders/agent/agent_tool.rbs +4 -57
  49. data/sig/zavudev/models/senders/agent/flow_create_params.rbs +8 -100
  50. data/sig/zavudev/models/senders/agent/flow_step.rbs +55 -0
  51. data/sig/zavudev/models/senders/agent/flow_trigger.rbs +51 -0
  52. data/sig/zavudev/models/senders/agent/flow_update_params.rbs +12 -104
  53. data/sig/zavudev/models/senders/agent/tool_create_params.rbs +4 -57
  54. data/sig/zavudev/models/senders/agent/tool_parameters.rbs +60 -0
  55. data/sig/zavudev/models/senders/agent/tool_update_params.rbs +6 -59
  56. data/sig/zavudev/models/template.rbs +21 -0
  57. data/sig/zavudev/models/template_create_params.rbs +57 -0
  58. data/sig/zavudev/models.rbs +2 -0
  59. data/sig/zavudev/resources/senders/agent/flows.rbs +4 -4
  60. data/sig/zavudev/resources/senders/agent/tools.rbs +2 -2
  61. data/sig/zavudev/resources/templates.rbs +6 -0
  62. metadata +14 -2
@@ -8,6 +8,7 @@ module Zavudev
8
8
  include Zavudev::Internal::Type::RequestParameters
9
9
 
10
10
  # @!attribute body
11
+ # Default template body. Used when no channel-specific body is set.
11
12
  #
12
13
  # @return [String]
13
14
  required :body, String
@@ -42,6 +43,42 @@ module Zavudev
42
43
  # @return [Integer, nil]
43
44
  optional :code_expiration_minutes, Integer, api_name: :codeExpirationMinutes
44
45
 
46
+ # @!attribute footer
47
+ # Footer text for the template.
48
+ #
49
+ # @return [String, nil]
50
+ optional :footer, String
51
+
52
+ # @!attribute header_content
53
+ # Header content (text string or media URL).
54
+ #
55
+ # @return [String, nil]
56
+ optional :header_content, String, api_name: :headerContent
57
+
58
+ # @!attribute header_type
59
+ # Type of header for the template.
60
+ #
61
+ # @return [Symbol, Zavudev::Models::TemplateCreateParams::HeaderType, nil]
62
+ optional :header_type, enum: -> { Zavudev::TemplateCreateParams::HeaderType }, api_name: :headerType
63
+
64
+ # @!attribute instagram_body
65
+ # Channel-specific body for Instagram. Falls back to `body` if not set.
66
+ #
67
+ # @return [String, nil]
68
+ optional :instagram_body, String, api_name: :instagramBody
69
+
70
+ # @!attribute sms_body
71
+ # Channel-specific body for SMS. Falls back to `body` if not set.
72
+ #
73
+ # @return [String, nil]
74
+ optional :sms_body, String, api_name: :smsBody
75
+
76
+ # @!attribute telegram_body
77
+ # Channel-specific body for Telegram. Falls back to `body` if not set.
78
+ #
79
+ # @return [String, nil]
80
+ optional :telegram_body, String, api_name: :telegramBody
81
+
45
82
  # @!attribute variables
46
83
  #
47
84
  # @return [Array<String>, nil]
@@ -53,8 +90,8 @@ module Zavudev
53
90
  # @return [Symbol, Zavudev::Models::WhatsappCategory, nil]
54
91
  optional :whatsapp_category, enum: -> { Zavudev::WhatsappCategory }, api_name: :whatsappCategory
55
92
 
56
- # @!method initialize(body:, language:, name:, add_security_recommendation: nil, buttons: nil, code_expiration_minutes: nil, variables: nil, whatsapp_category: nil, request_options: {})
57
- # @param body [String]
93
+ # @!method initialize(body:, language:, name:, add_security_recommendation: nil, buttons: nil, code_expiration_minutes: nil, footer: nil, header_content: nil, header_type: nil, instagram_body: nil, sms_body: nil, telegram_body: nil, variables: nil, whatsapp_category: nil, request_options: {})
94
+ # @param body [String] Default template body. Used when no channel-specific body is set.
58
95
  #
59
96
  # @param language [String]
60
97
  #
@@ -66,6 +103,18 @@ module Zavudev
66
103
  #
67
104
  # @param code_expiration_minutes [Integer] Code expiration time in minutes. Only for AUTHENTICATION templates.
68
105
  #
106
+ # @param footer [String] Footer text for the template.
107
+ #
108
+ # @param header_content [String] Header content (text string or media URL).
109
+ #
110
+ # @param header_type [Symbol, Zavudev::Models::TemplateCreateParams::HeaderType] Type of header for the template.
111
+ #
112
+ # @param instagram_body [String] Channel-specific body for Instagram. Falls back to `body` if not set.
113
+ #
114
+ # @param sms_body [String] Channel-specific body for SMS. Falls back to `body` if not set.
115
+ #
116
+ # @param telegram_body [String] Channel-specific body for Telegram. Falls back to `body` if not set.
117
+ #
69
118
  # @param variables [Array<String>]
70
119
  #
71
120
  # @param whatsapp_category [Symbol, Zavudev::Models::WhatsappCategory] WhatsApp template category.
@@ -157,6 +206,19 @@ module Zavudev
157
206
  # @return [Array<Symbol>]
158
207
  end
159
208
  end
209
+
210
+ # Type of header for the template.
211
+ module HeaderType
212
+ extend Zavudev::Internal::Type::Enum
213
+
214
+ TEXT = :text
215
+ IMAGE = :image
216
+ VIDEO = :video
217
+ DOCUMENT = :document
218
+
219
+ # @!method self.values
220
+ # @return [Array<Symbol>]
221
+ end
160
222
  end
161
223
  end
162
224
  end
@@ -93,6 +93,8 @@ module Zavudev
93
93
 
94
94
  Contact = Zavudev::Models::Contact
95
95
 
96
+ ContactChannel = Zavudev::Models::ContactChannel
97
+
96
98
  ContactListParams = Zavudev::Models::ContactListParams
97
99
 
98
100
  ContactRetrieveByPhoneParams = Zavudev::Models::ContactRetrieveByPhoneParams
@@ -113,7 +113,7 @@ module Zavudev
113
113
  #
114
114
  # @param attachments [Array<Zavudev::Models::MessageSendParams::Attachment>] Body param: Email attachments. Only supported when channel is 'email'. Maximum 4
115
115
  #
116
- # @param channel [Symbol, Zavudev::Models::Channel] Body param: Delivery channel. Use 'auto' for intelligent routing. If omitted wit
116
+ # @param channel [Symbol, Zavudev::Models::Channel] Body param: Delivery channel. Use 'auto' for intelligent routing. If omitted, ch
117
117
  #
118
118
  # @param content [Zavudev::Models::MessageContent] Body param: Additional content for non-text message types.
119
119
  #
@@ -11,8 +11,8 @@ module Zavudev
11
11
  #
12
12
  # @param sender_id [String]
13
13
  # @param name [String]
14
- # @param steps [Array<Zavudev::Models::Senders::Agent::FlowCreateParams::Step>]
15
- # @param trigger [Zavudev::Models::Senders::Agent::FlowCreateParams::Trigger]
14
+ # @param steps [Array<Zavudev::Models::Senders::Agent::FlowStep>]
15
+ # @param trigger [Zavudev::Models::Senders::Agent::FlowTrigger]
16
16
  # @param description [String]
17
17
  # @param enabled [Boolean]
18
18
  # @param priority [Integer]
@@ -73,9 +73,9 @@ module Zavudev
73
73
  #
74
74
  # @param priority [Integer] Body param
75
75
  #
76
- # @param steps [Array<Zavudev::Models::Senders::Agent::FlowUpdateParams::Step>] Body param
76
+ # @param steps [Array<Zavudev::Models::Senders::Agent::FlowStep>] Body param
77
77
  #
78
- # @param trigger [Zavudev::Models::Senders::Agent::FlowUpdateParams::Trigger] Body param
78
+ # @param trigger [Zavudev::Models::Senders::Agent::FlowTrigger] Body param
79
79
  #
80
80
  # @param request_options [Zavudev::RequestOptions, Hash{Symbol=>Object}, nil]
81
81
  #
@@ -15,7 +15,7 @@ module Zavudev
15
15
  #
16
16
  # @param name [String]
17
17
  #
18
- # @param parameters [Zavudev::Models::Senders::Agent::ToolCreateParams::Parameters]
18
+ # @param parameters [Zavudev::Models::Senders::Agent::ToolParameters]
19
19
  #
20
20
  # @param webhook_url [String] Must be HTTPS.
21
21
  #
@@ -78,7 +78,7 @@ module Zavudev
78
78
  #
79
79
  # @param name [String] Body param
80
80
  #
81
- # @param parameters [Zavudev::Models::Senders::Agent::ToolUpdateParams::Parameters] Body param
81
+ # @param parameters [Zavudev::Models::Senders::Agent::ToolParameters] Body param
82
82
  #
83
83
  # @param webhook_secret [String, nil] Body param
84
84
  #
@@ -6,9 +6,9 @@ module Zavudev
6
6
  # Create a WhatsApp message template. Note: Templates must be approved by Meta
7
7
  # before use.
8
8
  #
9
- # @overload create(body:, language:, name:, add_security_recommendation: nil, buttons: nil, code_expiration_minutes: nil, variables: nil, whatsapp_category: nil, request_options: {})
9
+ # @overload create(body:, language:, name:, add_security_recommendation: nil, buttons: nil, code_expiration_minutes: nil, footer: nil, header_content: nil, header_type: nil, instagram_body: nil, sms_body: nil, telegram_body: nil, variables: nil, whatsapp_category: nil, request_options: {})
10
10
  #
11
- # @param body [String]
11
+ # @param body [String] Default template body. Used when no channel-specific body is set.
12
12
  #
13
13
  # @param language [String]
14
14
  #
@@ -20,6 +20,18 @@ module Zavudev
20
20
  #
21
21
  # @param code_expiration_minutes [Integer] Code expiration time in minutes. Only for AUTHENTICATION templates.
22
22
  #
23
+ # @param footer [String] Footer text for the template.
24
+ #
25
+ # @param header_content [String] Header content (text string or media URL).
26
+ #
27
+ # @param header_type [Symbol, Zavudev::Models::TemplateCreateParams::HeaderType] Type of header for the template.
28
+ #
29
+ # @param instagram_body [String] Channel-specific body for Instagram. Falls back to `body` if not set.
30
+ #
31
+ # @param sms_body [String] Channel-specific body for SMS. Falls back to `body` if not set.
32
+ #
33
+ # @param telegram_body [String] Channel-specific body for Telegram. Falls back to `body` if not set.
34
+ #
23
35
  # @param variables [Array<String>]
24
36
  #
25
37
  # @param whatsapp_category [Symbol, Zavudev::Models::WhatsappCategory] WhatsApp template category.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Zavudev
4
- VERSION = "0.5.0"
4
+ VERSION = "0.7.0"
5
5
  end
data/lib/zavudev.rb CHANGED
@@ -91,6 +91,7 @@ require_relative "zavudev/models/broadcast_update_params"
91
91
  require_relative "zavudev/models/broadcast_update_response"
92
92
  require_relative "zavudev/models/channel"
93
93
  require_relative "zavudev/models/contact"
94
+ require_relative "zavudev/models/contact_channel"
94
95
  require_relative "zavudev/models/contact_list_params"
95
96
  require_relative "zavudev/models/contact_retrieve_by_phone_params"
96
97
  require_relative "zavudev/models/contact_retrieve_params"
@@ -158,6 +159,8 @@ require_relative "zavudev/models/senders/agent/flow_duplicate_response"
158
159
  require_relative "zavudev/models/senders/agent/flow_list_params"
159
160
  require_relative "zavudev/models/senders/agent/flow_retrieve_params"
160
161
  require_relative "zavudev/models/senders/agent/flow_retrieve_response"
162
+ require_relative "zavudev/models/senders/agent/flow_step"
163
+ require_relative "zavudev/models/senders/agent/flow_trigger"
161
164
  require_relative "zavudev/models/senders/agent/flow_update_params"
162
165
  require_relative "zavudev/models/senders/agent/flow_update_response"
163
166
  require_relative "zavudev/models/senders/agent/knowledge_base_create_params"
@@ -176,6 +179,7 @@ require_relative "zavudev/models/senders/agent/tool_create_params"
176
179
  require_relative "zavudev/models/senders/agent/tool_create_response"
177
180
  require_relative "zavudev/models/senders/agent/tool_delete_params"
178
181
  require_relative "zavudev/models/senders/agent/tool_list_params"
182
+ require_relative "zavudev/models/senders/agent/tool_parameters"
179
183
  require_relative "zavudev/models/senders/agent/tool_retrieve_params"
180
184
  require_relative "zavudev/models/senders/agent/tool_retrieve_response"
181
185
  require_relative "zavudev/models/senders/agent/tool_test_params"
@@ -24,10 +24,10 @@ module Zavudev
24
24
  attr_accessor :verified
25
25
 
26
26
  # All communication channels for this contact.
27
- sig { returns(T.nilable(T::Array[Zavudev::Contact::Channel])) }
27
+ sig { returns(T.nilable(T::Array[Zavudev::ContactChannel])) }
28
28
  attr_reader :channels
29
29
 
30
- sig { params(channels: T::Array[Zavudev::Contact::Channel::OrHash]).void }
30
+ sig { params(channels: T::Array[Zavudev::ContactChannel::OrHash]).void }
31
31
  attr_writer :channels
32
32
 
33
33
  sig { returns(T.nilable(String)) }
@@ -97,7 +97,7 @@ module Zavudev
97
97
  created_at: Time,
98
98
  metadata: T::Hash[Symbol, String],
99
99
  verified: T::Boolean,
100
- channels: T::Array[Zavudev::Contact::Channel::OrHash],
100
+ channels: T::Array[Zavudev::ContactChannel::OrHash],
101
101
  country_code: String,
102
102
  default_channel: Zavudev::Contact::DefaultChannel::OrSymbol,
103
103
  display_name: String,
@@ -146,7 +146,7 @@ module Zavudev
146
146
  created_at: Time,
147
147
  metadata: T::Hash[Symbol, String],
148
148
  verified: T::Boolean,
149
- channels: T::Array[Zavudev::Contact::Channel],
149
+ channels: T::Array[Zavudev::ContactChannel],
150
150
  country_code: String,
151
151
  default_channel: Zavudev::Contact::DefaultChannel::TaggedSymbol,
152
152
  display_name: String,
@@ -162,237 +162,6 @@ module Zavudev
162
162
  def to_hash
163
163
  end
164
164
 
165
- class Channel < Zavudev::Internal::Type::BaseModel
166
- OrHash =
167
- T.type_alias do
168
- T.any(Zavudev::Contact::Channel, Zavudev::Internal::AnyHash)
169
- end
170
-
171
- sig { returns(String) }
172
- attr_accessor :id
173
-
174
- # Channel type.
175
- sig { returns(Zavudev::Contact::Channel::Channel::TaggedSymbol) }
176
- attr_accessor :channel
177
-
178
- sig { returns(Time) }
179
- attr_accessor :created_at
180
-
181
- # Channel identifier (phone number or email address).
182
- sig { returns(String) }
183
- attr_accessor :identifier
184
-
185
- # Whether this is the primary channel for its type.
186
- sig { returns(T::Boolean) }
187
- attr_accessor :is_primary
188
-
189
- # Whether this channel has been verified.
190
- sig { returns(T::Boolean) }
191
- attr_accessor :verified
192
-
193
- # ISO country code for phone numbers.
194
- sig { returns(T.nilable(String)) }
195
- attr_reader :country_code
196
-
197
- sig { params(country_code: String).void }
198
- attr_writer :country_code
199
-
200
- # Optional label for the channel.
201
- sig { returns(T.nilable(String)) }
202
- attr_reader :label
203
-
204
- sig { params(label: String).void }
205
- attr_writer :label
206
-
207
- # Last time a message was received on this channel.
208
- sig { returns(T.nilable(Time)) }
209
- attr_reader :last_inbound_at
210
-
211
- sig { params(last_inbound_at: Time).void }
212
- attr_writer :last_inbound_at
213
-
214
- sig { returns(T.nilable(T::Hash[Symbol, String])) }
215
- attr_reader :metadata
216
-
217
- sig { params(metadata: T::Hash[Symbol, String]).void }
218
- attr_writer :metadata
219
-
220
- # Delivery metrics for this channel.
221
- sig { returns(T.nilable(Zavudev::Contact::Channel::Metrics)) }
222
- attr_reader :metrics
223
-
224
- sig { params(metrics: Zavudev::Contact::Channel::Metrics::OrHash).void }
225
- attr_writer :metrics
226
-
227
- sig { returns(T.nilable(Time)) }
228
- attr_reader :updated_at
229
-
230
- sig { params(updated_at: Time).void }
231
- attr_writer :updated_at
232
-
233
- # A communication channel for a contact.
234
- sig do
235
- params(
236
- id: String,
237
- channel: Zavudev::Contact::Channel::Channel::OrSymbol,
238
- created_at: Time,
239
- identifier: String,
240
- is_primary: T::Boolean,
241
- verified: T::Boolean,
242
- country_code: String,
243
- label: String,
244
- last_inbound_at: Time,
245
- metadata: T::Hash[Symbol, String],
246
- metrics: Zavudev::Contact::Channel::Metrics::OrHash,
247
- updated_at: Time
248
- ).returns(T.attached_class)
249
- end
250
- def self.new(
251
- id:,
252
- # Channel type.
253
- channel:,
254
- created_at:,
255
- # Channel identifier (phone number or email address).
256
- identifier:,
257
- # Whether this is the primary channel for its type.
258
- is_primary:,
259
- # Whether this channel has been verified.
260
- verified:,
261
- # ISO country code for phone numbers.
262
- country_code: nil,
263
- # Optional label for the channel.
264
- label: nil,
265
- # Last time a message was received on this channel.
266
- last_inbound_at: nil,
267
- metadata: nil,
268
- # Delivery metrics for this channel.
269
- metrics: nil,
270
- updated_at: nil
271
- )
272
- end
273
-
274
- sig do
275
- override.returns(
276
- {
277
- id: String,
278
- channel: Zavudev::Contact::Channel::Channel::TaggedSymbol,
279
- created_at: Time,
280
- identifier: String,
281
- is_primary: T::Boolean,
282
- verified: T::Boolean,
283
- country_code: String,
284
- label: String,
285
- last_inbound_at: Time,
286
- metadata: T::Hash[Symbol, String],
287
- metrics: Zavudev::Contact::Channel::Metrics,
288
- updated_at: Time
289
- }
290
- )
291
- end
292
- def to_hash
293
- end
294
-
295
- # Channel type.
296
- module Channel
297
- extend Zavudev::Internal::Type::Enum
298
-
299
- TaggedSymbol =
300
- T.type_alias { T.all(Symbol, Zavudev::Contact::Channel::Channel) }
301
- OrSymbol = T.type_alias { T.any(Symbol, String) }
302
-
303
- SMS = T.let(:sms, Zavudev::Contact::Channel::Channel::TaggedSymbol)
304
- WHATSAPP =
305
- T.let(:whatsapp, Zavudev::Contact::Channel::Channel::TaggedSymbol)
306
- EMAIL =
307
- T.let(:email, Zavudev::Contact::Channel::Channel::TaggedSymbol)
308
- TELEGRAM =
309
- T.let(:telegram, Zavudev::Contact::Channel::Channel::TaggedSymbol)
310
- VOICE =
311
- T.let(:voice, Zavudev::Contact::Channel::Channel::TaggedSymbol)
312
-
313
- sig do
314
- override.returns(
315
- T::Array[Zavudev::Contact::Channel::Channel::TaggedSymbol]
316
- )
317
- end
318
- def self.values
319
- end
320
- end
321
-
322
- class Metrics < Zavudev::Internal::Type::BaseModel
323
- OrHash =
324
- T.type_alias do
325
- T.any(
326
- Zavudev::Contact::Channel::Metrics,
327
- Zavudev::Internal::AnyHash
328
- )
329
- end
330
-
331
- sig { returns(T.nilable(Float)) }
332
- attr_reader :avg_delivery_time_ms
333
-
334
- sig { params(avg_delivery_time_ms: Float).void }
335
- attr_writer :avg_delivery_time_ms
336
-
337
- sig { returns(T.nilable(Integer)) }
338
- attr_reader :failure_count
339
-
340
- sig { params(failure_count: Integer).void }
341
- attr_writer :failure_count
342
-
343
- sig { returns(T.nilable(Time)) }
344
- attr_reader :last_success_at
345
-
346
- sig { params(last_success_at: Time).void }
347
- attr_writer :last_success_at
348
-
349
- sig { returns(T.nilable(Integer)) }
350
- attr_reader :success_count
351
-
352
- sig { params(success_count: Integer).void }
353
- attr_writer :success_count
354
-
355
- sig { returns(T.nilable(Integer)) }
356
- attr_reader :total_attempts
357
-
358
- sig { params(total_attempts: Integer).void }
359
- attr_writer :total_attempts
360
-
361
- # Delivery metrics for this channel.
362
- sig do
363
- params(
364
- avg_delivery_time_ms: Float,
365
- failure_count: Integer,
366
- last_success_at: Time,
367
- success_count: Integer,
368
- total_attempts: Integer
369
- ).returns(T.attached_class)
370
- end
371
- def self.new(
372
- avg_delivery_time_ms: nil,
373
- failure_count: nil,
374
- last_success_at: nil,
375
- success_count: nil,
376
- total_attempts: nil
377
- )
378
- end
379
-
380
- sig do
381
- override.returns(
382
- {
383
- avg_delivery_time_ms: Float,
384
- failure_count: Integer,
385
- last_success_at: Time,
386
- success_count: Integer,
387
- total_attempts: Integer
388
- }
389
- )
390
- end
391
- def to_hash
392
- end
393
- end
394
- end
395
-
396
165
  # Preferred channel for this contact.
397
166
  module DefaultChannel
398
167
  extend Zavudev::Internal::Type::Enum