zavudev 0.6.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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +1 -1
  4. data/lib/zavudev/models/contact.rb +3 -153
  5. data/lib/zavudev/models/contact_channel.rb +155 -0
  6. data/lib/zavudev/models/senders/agent/agent_flow.rb +6 -101
  7. data/lib/zavudev/models/senders/agent/agent_tool.rb +3 -53
  8. data/lib/zavudev/models/senders/agent/flow_create_params.rb +6 -100
  9. data/lib/zavudev/models/senders/agent/flow_step.rb +61 -0
  10. data/lib/zavudev/models/senders/agent/flow_trigger.rb +51 -0
  11. data/lib/zavudev/models/senders/agent/flow_update_params.rb +6 -100
  12. data/lib/zavudev/models/senders/agent/tool_create_params.rb +3 -52
  13. data/lib/zavudev/models/senders/agent/tool_parameters.rb +58 -0
  14. data/lib/zavudev/models/senders/agent/tool_update_params.rb +3 -52
  15. data/lib/zavudev/models/template_create_params.rb +38 -1
  16. data/lib/zavudev/models.rb +2 -0
  17. data/lib/zavudev/resources/senders/agent/flows.rb +4 -4
  18. data/lib/zavudev/resources/senders/agent/tools.rb +2 -2
  19. data/lib/zavudev/resources/templates.rb +7 -1
  20. data/lib/zavudev/version.rb +1 -1
  21. data/lib/zavudev.rb +4 -0
  22. data/rbi/zavudev/models/contact.rbi +4 -235
  23. data/rbi/zavudev/models/contact_channel.rbi +231 -0
  24. data/rbi/zavudev/models/senders/agent/agent_flow.rbi +7 -233
  25. data/rbi/zavudev/models/senders/agent/agent_tool.rbi +4 -130
  26. data/rbi/zavudev/models/senders/agent/flow_create_params.rbi +7 -245
  27. data/rbi/zavudev/models/senders/agent/flow_step.rbi +115 -0
  28. data/rbi/zavudev/models/senders/agent/flow_trigger.rbi +108 -0
  29. data/rbi/zavudev/models/senders/agent/flow_update_params.rbi +8 -255
  30. data/rbi/zavudev/models/senders/agent/tool_create_params.rbi +4 -132
  31. data/rbi/zavudev/models/senders/agent/tool_parameters.rbi +124 -0
  32. data/rbi/zavudev/models/senders/agent/tool_update_params.rbi +4 -136
  33. data/rbi/zavudev/models/template_create_params.rbi +70 -0
  34. data/rbi/zavudev/models.rbi +2 -0
  35. data/rbi/zavudev/resources/senders/agent/flows.rbi +4 -12
  36. data/rbi/zavudev/resources/senders/agent/tools.rbi +2 -4
  37. data/rbi/zavudev/resources/templates.rbi +9 -0
  38. data/sig/zavudev/models/contact.rbs +6 -153
  39. data/sig/zavudev/models/contact_channel.rbs +150 -0
  40. data/sig/zavudev/models/senders/agent/agent_flow.rbs +8 -100
  41. data/sig/zavudev/models/senders/agent/agent_tool.rbs +4 -57
  42. data/sig/zavudev/models/senders/agent/flow_create_params.rbs +8 -100
  43. data/sig/zavudev/models/senders/agent/flow_step.rbs +55 -0
  44. data/sig/zavudev/models/senders/agent/flow_trigger.rbs +51 -0
  45. data/sig/zavudev/models/senders/agent/flow_update_params.rbs +12 -104
  46. data/sig/zavudev/models/senders/agent/tool_create_params.rbs +4 -57
  47. data/sig/zavudev/models/senders/agent/tool_parameters.rbs +60 -0
  48. data/sig/zavudev/models/senders/agent/tool_update_params.rbs +6 -59
  49. data/sig/zavudev/models/template_create_params.rbs +36 -0
  50. data/sig/zavudev/models.rbs +2 -0
  51. data/sig/zavudev/resources/senders/agent/flows.rbs +4 -4
  52. data/sig/zavudev/resources/senders/agent/tools.rbs +2 -2
  53. data/sig/zavudev/resources/templates.rbs +3 -0
  54. metadata +14 -2
@@ -40,17 +40,12 @@ module Zavudev
40
40
  sig { params(name: String).void }
41
41
  attr_writer :name
42
42
 
43
- sig do
44
- returns(
45
- T.nilable(Zavudev::Senders::Agent::ToolUpdateParams::Parameters)
46
- )
47
- end
43
+ sig { returns(T.nilable(Zavudev::Senders::Agent::ToolParameters)) }
48
44
  attr_reader :parameters
49
45
 
50
46
  sig do
51
47
  params(
52
- parameters:
53
- Zavudev::Senders::Agent::ToolUpdateParams::Parameters::OrHash
48
+ parameters: Zavudev::Senders::Agent::ToolParameters::OrHash
54
49
  ).void
55
50
  end
56
51
  attr_writer :parameters
@@ -71,8 +66,7 @@ module Zavudev
71
66
  description: String,
72
67
  enabled: T::Boolean,
73
68
  name: String,
74
- parameters:
75
- Zavudev::Senders::Agent::ToolUpdateParams::Parameters::OrHash,
69
+ parameters: Zavudev::Senders::Agent::ToolParameters::OrHash,
76
70
  webhook_secret: T.nilable(String),
77
71
  webhook_url: String,
78
72
  request_options: Zavudev::RequestOptions::OrHash
@@ -99,8 +93,7 @@ module Zavudev
99
93
  description: String,
100
94
  enabled: T::Boolean,
101
95
  name: String,
102
- parameters:
103
- Zavudev::Senders::Agent::ToolUpdateParams::Parameters,
96
+ parameters: Zavudev::Senders::Agent::ToolParameters,
104
97
  webhook_secret: T.nilable(String),
105
98
  webhook_url: String,
106
99
  request_options: Zavudev::RequestOptions
@@ -109,131 +102,6 @@ module Zavudev
109
102
  end
110
103
  def to_hash
111
104
  end
112
-
113
- class Parameters < Zavudev::Internal::Type::BaseModel
114
- OrHash =
115
- T.type_alias do
116
- T.any(
117
- Zavudev::Senders::Agent::ToolUpdateParams::Parameters,
118
- Zavudev::Internal::AnyHash
119
- )
120
- end
121
-
122
- sig do
123
- returns(
124
- T::Hash[
125
- Symbol,
126
- Zavudev::Senders::Agent::ToolUpdateParams::Parameters::Property
127
- ]
128
- )
129
- end
130
- attr_accessor :properties
131
-
132
- sig { returns(T::Array[String]) }
133
- attr_accessor :required
134
-
135
- sig do
136
- returns(
137
- Zavudev::Senders::Agent::ToolUpdateParams::Parameters::Type::OrSymbol
138
- )
139
- end
140
- attr_accessor :type
141
-
142
- sig do
143
- params(
144
- properties:
145
- T::Hash[
146
- Symbol,
147
- Zavudev::Senders::Agent::ToolUpdateParams::Parameters::Property::OrHash
148
- ],
149
- required: T::Array[String],
150
- type:
151
- Zavudev::Senders::Agent::ToolUpdateParams::Parameters::Type::OrSymbol
152
- ).returns(T.attached_class)
153
- end
154
- def self.new(properties:, required:, type:)
155
- end
156
-
157
- sig do
158
- override.returns(
159
- {
160
- properties:
161
- T::Hash[
162
- Symbol,
163
- Zavudev::Senders::Agent::ToolUpdateParams::Parameters::Property
164
- ],
165
- required: T::Array[String],
166
- type:
167
- Zavudev::Senders::Agent::ToolUpdateParams::Parameters::Type::OrSymbol
168
- }
169
- )
170
- end
171
- def to_hash
172
- end
173
-
174
- class Property < Zavudev::Internal::Type::BaseModel
175
- OrHash =
176
- T.type_alias do
177
- T.any(
178
- Zavudev::Senders::Agent::ToolUpdateParams::Parameters::Property,
179
- Zavudev::Internal::AnyHash
180
- )
181
- end
182
-
183
- sig { returns(T.nilable(String)) }
184
- attr_reader :description
185
-
186
- sig { params(description: String).void }
187
- attr_writer :description
188
-
189
- sig { returns(T.nilable(String)) }
190
- attr_reader :type
191
-
192
- sig { params(type: String).void }
193
- attr_writer :type
194
-
195
- sig do
196
- params(description: String, type: String).returns(
197
- T.attached_class
198
- )
199
- end
200
- def self.new(description: nil, type: nil)
201
- end
202
-
203
- sig { override.returns({ description: String, type: String }) }
204
- def to_hash
205
- end
206
- end
207
-
208
- module Type
209
- extend Zavudev::Internal::Type::Enum
210
-
211
- TaggedSymbol =
212
- T.type_alias do
213
- T.all(
214
- Symbol,
215
- Zavudev::Senders::Agent::ToolUpdateParams::Parameters::Type
216
- )
217
- end
218
- OrSymbol = T.type_alias { T.any(Symbol, String) }
219
-
220
- OBJECT =
221
- T.let(
222
- :object,
223
- Zavudev::Senders::Agent::ToolUpdateParams::Parameters::Type::TaggedSymbol
224
- )
225
-
226
- sig do
227
- override.returns(
228
- T::Array[
229
- Zavudev::Senders::Agent::ToolUpdateParams::Parameters::Type::TaggedSymbol
230
- ]
231
- )
232
- end
233
- def self.values
234
- end
235
- end
236
- end
237
105
  end
238
106
  end
239
107
  end
@@ -48,6 +48,33 @@ module Zavudev
48
48
  sig { params(code_expiration_minutes: Integer).void }
49
49
  attr_writer :code_expiration_minutes
50
50
 
51
+ # Footer text for the template.
52
+ sig { returns(T.nilable(String)) }
53
+ attr_reader :footer
54
+
55
+ sig { params(footer: String).void }
56
+ attr_writer :footer
57
+
58
+ # Header content (text string or media URL).
59
+ sig { returns(T.nilable(String)) }
60
+ attr_reader :header_content
61
+
62
+ sig { params(header_content: String).void }
63
+ attr_writer :header_content
64
+
65
+ # Type of header for the template.
66
+ sig do
67
+ returns(T.nilable(Zavudev::TemplateCreateParams::HeaderType::OrSymbol))
68
+ end
69
+ attr_reader :header_type
70
+
71
+ sig do
72
+ params(
73
+ header_type: Zavudev::TemplateCreateParams::HeaderType::OrSymbol
74
+ ).void
75
+ end
76
+ attr_writer :header_type
77
+
51
78
  # Channel-specific body for Instagram. Falls back to `body` if not set.
52
79
  sig { returns(T.nilable(String)) }
53
80
  attr_reader :instagram_body
@@ -92,6 +119,9 @@ module Zavudev
92
119
  add_security_recommendation: T::Boolean,
93
120
  buttons: T::Array[Zavudev::TemplateCreateParams::Button::OrHash],
94
121
  code_expiration_minutes: Integer,
122
+ footer: String,
123
+ header_content: String,
124
+ header_type: Zavudev::TemplateCreateParams::HeaderType::OrSymbol,
95
125
  instagram_body: String,
96
126
  sms_body: String,
97
127
  telegram_body: String,
@@ -111,6 +141,12 @@ module Zavudev
111
141
  buttons: nil,
112
142
  # Code expiration time in minutes. Only for AUTHENTICATION templates.
113
143
  code_expiration_minutes: nil,
144
+ # Footer text for the template.
145
+ footer: nil,
146
+ # Header content (text string or media URL).
147
+ header_content: nil,
148
+ # Type of header for the template.
149
+ header_type: nil,
114
150
  # Channel-specific body for Instagram. Falls back to `body` if not set.
115
151
  instagram_body: nil,
116
152
  # Channel-specific body for SMS. Falls back to `body` if not set.
@@ -133,6 +169,9 @@ module Zavudev
133
169
  add_security_recommendation: T::Boolean,
134
170
  buttons: T::Array[Zavudev::TemplateCreateParams::Button],
135
171
  code_expiration_minutes: Integer,
172
+ footer: String,
173
+ header_content: String,
174
+ header_type: Zavudev::TemplateCreateParams::HeaderType::OrSymbol,
136
175
  instagram_body: String,
137
176
  sms_body: String,
138
177
  telegram_body: String,
@@ -319,6 +358,37 @@ module Zavudev
319
358
  end
320
359
  end
321
360
  end
361
+
362
+ # Type of header for the template.
363
+ module HeaderType
364
+ extend Zavudev::Internal::Type::Enum
365
+
366
+ TaggedSymbol =
367
+ T.type_alias do
368
+ T.all(Symbol, Zavudev::TemplateCreateParams::HeaderType)
369
+ end
370
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
371
+
372
+ TEXT =
373
+ T.let(:text, Zavudev::TemplateCreateParams::HeaderType::TaggedSymbol)
374
+ IMAGE =
375
+ T.let(:image, Zavudev::TemplateCreateParams::HeaderType::TaggedSymbol)
376
+ VIDEO =
377
+ T.let(:video, Zavudev::TemplateCreateParams::HeaderType::TaggedSymbol)
378
+ DOCUMENT =
379
+ T.let(
380
+ :document,
381
+ Zavudev::TemplateCreateParams::HeaderType::TaggedSymbol
382
+ )
383
+
384
+ sig do
385
+ override.returns(
386
+ T::Array[Zavudev::TemplateCreateParams::HeaderType::TaggedSymbol]
387
+ )
388
+ end
389
+ def self.values
390
+ end
391
+ end
322
392
  end
323
393
  end
324
394
  end
@@ -55,6 +55,8 @@ module Zavudev
55
55
 
56
56
  Contact = Zavudev::Models::Contact
57
57
 
58
+ ContactChannel = Zavudev::Models::ContactChannel
59
+
58
60
  ContactListParams = Zavudev::Models::ContactListParams
59
61
 
60
62
  ContactRetrieveByPhoneParams = Zavudev::Models::ContactRetrieveByPhoneParams
@@ -10,12 +10,8 @@ module Zavudev
10
10
  params(
11
11
  sender_id: String,
12
12
  name: String,
13
- steps:
14
- T::Array[
15
- Zavudev::Senders::Agent::FlowCreateParams::Step::OrHash
16
- ],
17
- trigger:
18
- Zavudev::Senders::Agent::FlowCreateParams::Trigger::OrHash,
13
+ steps: T::Array[Zavudev::Senders::Agent::FlowStep::OrHash],
14
+ trigger: Zavudev::Senders::Agent::FlowTrigger::OrHash,
19
15
  description: String,
20
16
  enabled: T::Boolean,
21
17
  priority: Integer,
@@ -54,12 +50,8 @@ module Zavudev
54
50
  enabled: T::Boolean,
55
51
  name: String,
56
52
  priority: Integer,
57
- steps:
58
- T::Array[
59
- Zavudev::Senders::Agent::FlowUpdateParams::Step::OrHash
60
- ],
61
- trigger:
62
- Zavudev::Senders::Agent::FlowUpdateParams::Trigger::OrHash,
53
+ steps: T::Array[Zavudev::Senders::Agent::FlowStep::OrHash],
54
+ trigger: Zavudev::Senders::Agent::FlowTrigger::OrHash,
63
55
  request_options: Zavudev::RequestOptions::OrHash
64
56
  ).returns(Zavudev::Models::Senders::Agent::FlowUpdateResponse)
65
57
  end
@@ -11,8 +11,7 @@ module Zavudev
11
11
  sender_id: String,
12
12
  description: String,
13
13
  name: String,
14
- parameters:
15
- Zavudev::Senders::Agent::ToolCreateParams::Parameters::OrHash,
14
+ parameters: Zavudev::Senders::Agent::ToolParameters::OrHash,
16
15
  webhook_url: String,
17
16
  enabled: T::Boolean,
18
17
  webhook_secret: String,
@@ -52,8 +51,7 @@ module Zavudev
52
51
  description: String,
53
52
  enabled: T::Boolean,
54
53
  name: String,
55
- parameters:
56
- Zavudev::Senders::Agent::ToolUpdateParams::Parameters::OrHash,
54
+ parameters: Zavudev::Senders::Agent::ToolParameters::OrHash,
57
55
  webhook_secret: T.nilable(String),
58
56
  webhook_url: String,
59
57
  request_options: Zavudev::RequestOptions::OrHash
@@ -13,6 +13,9 @@ module Zavudev
13
13
  add_security_recommendation: T::Boolean,
14
14
  buttons: T::Array[Zavudev::TemplateCreateParams::Button::OrHash],
15
15
  code_expiration_minutes: Integer,
16
+ footer: String,
17
+ header_content: String,
18
+ header_type: Zavudev::TemplateCreateParams::HeaderType::OrSymbol,
16
19
  instagram_body: String,
17
20
  sms_body: String,
18
21
  telegram_body: String,
@@ -32,6 +35,12 @@ module Zavudev
32
35
  buttons: nil,
33
36
  # Code expiration time in minutes. Only for AUTHENTICATION templates.
34
37
  code_expiration_minutes: nil,
38
+ # Footer text for the template.
39
+ footer: nil,
40
+ # Header content (text string or media URL).
41
+ header_content: nil,
42
+ # Type of header for the template.
43
+ header_type: nil,
35
44
  # Channel-specific body for Instagram. Falls back to `body` if not set.
36
45
  instagram_body: nil,
37
46
  # Channel-specific body for SMS. Falls back to `body` if not set.
@@ -7,7 +7,7 @@ module Zavudev
7
7
  created_at: Time,
8
8
  metadata: ::Hash[Symbol, String],
9
9
  verified: bool,
10
- channels: ::Array[Zavudev::Contact::Channel],
10
+ channels: ::Array[Zavudev::ContactChannel],
11
11
  country_code: String,
12
12
  default_channel: Zavudev::Models::Contact::default_channel,
13
13
  display_name: String,
@@ -30,11 +30,11 @@ module Zavudev
30
30
 
31
31
  attr_accessor verified: bool
32
32
 
33
- attr_reader channels: ::Array[Zavudev::Contact::Channel]?
33
+ attr_reader channels: ::Array[Zavudev::ContactChannel]?
34
34
 
35
35
  def channels=: (
36
- ::Array[Zavudev::Contact::Channel]
37
- ) -> ::Array[Zavudev::Contact::Channel]
36
+ ::Array[Zavudev::ContactChannel]
37
+ ) -> ::Array[Zavudev::ContactChannel]
38
38
 
39
39
  attr_reader country_code: String?
40
40
 
@@ -78,7 +78,7 @@ module Zavudev
78
78
  created_at: Time,
79
79
  metadata: ::Hash[Symbol, String],
80
80
  verified: bool,
81
- ?channels: ::Array[Zavudev::Contact::Channel],
81
+ ?channels: ::Array[Zavudev::ContactChannel],
82
82
  ?country_code: String,
83
83
  ?default_channel: Zavudev::Models::Contact::default_channel,
84
84
  ?display_name: String,
@@ -96,7 +96,7 @@ module Zavudev
96
96
  created_at: Time,
97
97
  metadata: ::Hash[Symbol, String],
98
98
  verified: bool,
99
- channels: ::Array[Zavudev::Contact::Channel],
99
+ channels: ::Array[Zavudev::ContactChannel],
100
100
  country_code: String,
101
101
  default_channel: Zavudev::Models::Contact::default_channel,
102
102
  display_name: String,
@@ -108,153 +108,6 @@ module Zavudev
108
108
  updated_at: Time
109
109
  }
110
110
 
111
- type channel =
112
- {
113
- id: String,
114
- channel: Zavudev::Models::Contact::Channel::channel,
115
- created_at: Time,
116
- identifier: String,
117
- is_primary: bool,
118
- verified: bool,
119
- country_code: String,
120
- label: String,
121
- last_inbound_at: Time,
122
- metadata: ::Hash[Symbol, String],
123
- metrics: Zavudev::Contact::Channel::Metrics,
124
- updated_at: Time
125
- }
126
-
127
- class Channel < Zavudev::Internal::Type::BaseModel
128
- attr_accessor id: String
129
-
130
- attr_accessor channel: Zavudev::Models::Contact::Channel::channel
131
-
132
- attr_accessor created_at: Time
133
-
134
- attr_accessor identifier: String
135
-
136
- attr_accessor is_primary: bool
137
-
138
- attr_accessor verified: bool
139
-
140
- attr_reader country_code: String?
141
-
142
- def country_code=: (String) -> String
143
-
144
- attr_reader label: String?
145
-
146
- def label=: (String) -> String
147
-
148
- attr_reader last_inbound_at: Time?
149
-
150
- def last_inbound_at=: (Time) -> Time
151
-
152
- attr_reader metadata: ::Hash[Symbol, String]?
153
-
154
- def metadata=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String]
155
-
156
- attr_reader metrics: Zavudev::Contact::Channel::Metrics?
157
-
158
- def metrics=: (
159
- Zavudev::Contact::Channel::Metrics
160
- ) -> Zavudev::Contact::Channel::Metrics
161
-
162
- attr_reader updated_at: Time?
163
-
164
- def updated_at=: (Time) -> Time
165
-
166
- def initialize: (
167
- id: String,
168
- channel: Zavudev::Models::Contact::Channel::channel,
169
- created_at: Time,
170
- identifier: String,
171
- is_primary: bool,
172
- verified: bool,
173
- ?country_code: String,
174
- ?label: String,
175
- ?last_inbound_at: Time,
176
- ?metadata: ::Hash[Symbol, String],
177
- ?metrics: Zavudev::Contact::Channel::Metrics,
178
- ?updated_at: Time
179
- ) -> void
180
-
181
- def to_hash: -> {
182
- id: String,
183
- channel: Zavudev::Models::Contact::Channel::channel,
184
- created_at: Time,
185
- identifier: String,
186
- is_primary: bool,
187
- verified: bool,
188
- country_code: String,
189
- label: String,
190
- last_inbound_at: Time,
191
- metadata: ::Hash[Symbol, String],
192
- metrics: Zavudev::Contact::Channel::Metrics,
193
- updated_at: Time
194
- }
195
-
196
- type channel = :sms | :whatsapp | :email | :telegram | :voice
197
-
198
- module Channel
199
- extend Zavudev::Internal::Type::Enum
200
-
201
- SMS: :sms
202
- WHATSAPP: :whatsapp
203
- EMAIL: :email
204
- TELEGRAM: :telegram
205
- VOICE: :voice
206
-
207
- def self?.values: -> ::Array[Zavudev::Models::Contact::Channel::channel]
208
- end
209
-
210
- type metrics =
211
- {
212
- avg_delivery_time_ms: Float,
213
- failure_count: Integer,
214
- last_success_at: Time,
215
- success_count: Integer,
216
- total_attempts: Integer
217
- }
218
-
219
- class Metrics < Zavudev::Internal::Type::BaseModel
220
- attr_reader avg_delivery_time_ms: Float?
221
-
222
- def avg_delivery_time_ms=: (Float) -> Float
223
-
224
- attr_reader failure_count: Integer?
225
-
226
- def failure_count=: (Integer) -> Integer
227
-
228
- attr_reader last_success_at: Time?
229
-
230
- def last_success_at=: (Time) -> Time
231
-
232
- attr_reader success_count: Integer?
233
-
234
- def success_count=: (Integer) -> Integer
235
-
236
- attr_reader total_attempts: Integer?
237
-
238
- def total_attempts=: (Integer) -> Integer
239
-
240
- def initialize: (
241
- ?avg_delivery_time_ms: Float,
242
- ?failure_count: Integer,
243
- ?last_success_at: Time,
244
- ?success_count: Integer,
245
- ?total_attempts: Integer
246
- ) -> void
247
-
248
- def to_hash: -> {
249
- avg_delivery_time_ms: Float,
250
- failure_count: Integer,
251
- last_success_at: Time,
252
- success_count: Integer,
253
- total_attempts: Integer
254
- }
255
- end
256
- end
257
-
258
111
  type default_channel =
259
112
  :sms | :whatsapp | :telegram | :email | :instagram | :voice
260
113
 
@@ -0,0 +1,150 @@
1
+ module Zavudev
2
+ module Models
3
+ type contact_channel =
4
+ {
5
+ id: String,
6
+ channel: Zavudev::Models::ContactChannel::channel,
7
+ created_at: Time,
8
+ identifier: String,
9
+ is_primary: bool,
10
+ verified: bool,
11
+ country_code: String,
12
+ label: String,
13
+ last_inbound_at: Time,
14
+ metadata: ::Hash[Symbol, String],
15
+ metrics: Zavudev::ContactChannel::Metrics,
16
+ updated_at: Time
17
+ }
18
+
19
+ class ContactChannel < Zavudev::Internal::Type::BaseModel
20
+ attr_accessor id: String
21
+
22
+ attr_accessor channel: Zavudev::Models::ContactChannel::channel
23
+
24
+ attr_accessor created_at: Time
25
+
26
+ attr_accessor identifier: String
27
+
28
+ attr_accessor is_primary: bool
29
+
30
+ attr_accessor verified: bool
31
+
32
+ attr_reader country_code: String?
33
+
34
+ def country_code=: (String) -> String
35
+
36
+ attr_reader label: String?
37
+
38
+ def label=: (String) -> String
39
+
40
+ attr_reader last_inbound_at: Time?
41
+
42
+ def last_inbound_at=: (Time) -> Time
43
+
44
+ attr_reader metadata: ::Hash[Symbol, String]?
45
+
46
+ def metadata=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String]
47
+
48
+ attr_reader metrics: Zavudev::ContactChannel::Metrics?
49
+
50
+ def metrics=: (
51
+ Zavudev::ContactChannel::Metrics
52
+ ) -> Zavudev::ContactChannel::Metrics
53
+
54
+ attr_reader updated_at: Time?
55
+
56
+ def updated_at=: (Time) -> Time
57
+
58
+ def initialize: (
59
+ id: String,
60
+ channel: Zavudev::Models::ContactChannel::channel,
61
+ created_at: Time,
62
+ identifier: String,
63
+ is_primary: bool,
64
+ verified: bool,
65
+ ?country_code: String,
66
+ ?label: String,
67
+ ?last_inbound_at: Time,
68
+ ?metadata: ::Hash[Symbol, String],
69
+ ?metrics: Zavudev::ContactChannel::Metrics,
70
+ ?updated_at: Time
71
+ ) -> void
72
+
73
+ def to_hash: -> {
74
+ id: String,
75
+ channel: Zavudev::Models::ContactChannel::channel,
76
+ created_at: Time,
77
+ identifier: String,
78
+ is_primary: bool,
79
+ verified: bool,
80
+ country_code: String,
81
+ label: String,
82
+ last_inbound_at: Time,
83
+ metadata: ::Hash[Symbol, String],
84
+ metrics: Zavudev::ContactChannel::Metrics,
85
+ updated_at: Time
86
+ }
87
+
88
+ type channel = :sms | :whatsapp | :email | :telegram | :voice
89
+
90
+ module Channel
91
+ extend Zavudev::Internal::Type::Enum
92
+
93
+ SMS: :sms
94
+ WHATSAPP: :whatsapp
95
+ EMAIL: :email
96
+ TELEGRAM: :telegram
97
+ VOICE: :voice
98
+
99
+ def self?.values: -> ::Array[Zavudev::Models::ContactChannel::channel]
100
+ end
101
+
102
+ type metrics =
103
+ {
104
+ avg_delivery_time_ms: Float,
105
+ failure_count: Integer,
106
+ last_success_at: Time,
107
+ success_count: Integer,
108
+ total_attempts: Integer
109
+ }
110
+
111
+ class Metrics < Zavudev::Internal::Type::BaseModel
112
+ attr_reader avg_delivery_time_ms: Float?
113
+
114
+ def avg_delivery_time_ms=: (Float) -> Float
115
+
116
+ attr_reader failure_count: Integer?
117
+
118
+ def failure_count=: (Integer) -> Integer
119
+
120
+ attr_reader last_success_at: Time?
121
+
122
+ def last_success_at=: (Time) -> Time
123
+
124
+ attr_reader success_count: Integer?
125
+
126
+ def success_count=: (Integer) -> Integer
127
+
128
+ attr_reader total_attempts: Integer?
129
+
130
+ def total_attempts=: (Integer) -> Integer
131
+
132
+ def initialize: (
133
+ ?avg_delivery_time_ms: Float,
134
+ ?failure_count: Integer,
135
+ ?last_success_at: Time,
136
+ ?success_count: Integer,
137
+ ?total_attempts: Integer
138
+ ) -> void
139
+
140
+ def to_hash: -> {
141
+ avg_delivery_time_ms: Float,
142
+ failure_count: Integer,
143
+ last_success_at: Time,
144
+ success_count: Integer,
145
+ total_attempts: Integer
146
+ }
147
+ end
148
+ end
149
+ end
150
+ end