zavudev 0.4.1 → 0.5.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: a67ee8d3590fb08aa56bc514c9e512c86b8ab537f05bf4726503570a7a7fbaeb
4
- data.tar.gz: 2c7433987e5daae8f7f71cd86e4357f397e10646d60557dbba824d68cfb983ab
3
+ metadata.gz: b4ef6b1c38f382a0031988389835d7a923e031d506e14fe9f760ffa0e1b653f1
4
+ data.tar.gz: 461d663dc49c09fbb91bf15feaae55818f8cb5a259dc1e551d7d408781436996
5
5
  SHA512:
6
- metadata.gz: e5920c58720bf2bf4226a8c9a12888e190bce692626540c68d70eaf11c1f20d57f310d2233ea1ada6e92c0f0269871efe9b53e428d10c8bbe642905a667a1a5a
7
- data.tar.gz: ee6dbd0f683026d3a7c30478677e0566115b749f4d3a097bb21c0f926d94ca9efda9fac4e1413ad417b381667e83a6de346ea69fb9676564c3df0a5193e7249e
6
+ metadata.gz: 429315f63bb85c17c6e0be83a569fec22516f393ce234a6f763a4b83b099f8dc116e609dcebfd9034ea6f3034653c6a8e5d571fffcf6763ab30f68db78725d94
7
+ data.tar.gz: 7325d1f541ab42cdb0d40ecfbcc71b72f111cbb88747fb85344af03f49b5126ea0c554afae9379cb0bb0950055d330058cac51755088092c69b1dfcc0eeedccd
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.5.0 (2026-04-03)
4
+
5
+ Full Changelog: [v0.4.1...v0.5.0](https://github.com/zavudev/sdk-ruby/compare/v0.4.1...v0.5.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([c5b49ca](https://github.com/zavudev/sdk-ruby/commit/c5b49ca5d2bf7ad14c267aa0544d929bd6be0ede))
10
+ * **api:** api update ([e08767b](https://github.com/zavudev/sdk-ruby/commit/e08767b2a22bd0597697c7cfc1864e69b9064aed))
11
+
3
12
  ## 0.4.1 (2026-04-01)
4
13
 
5
14
  Full Changelog: [v0.4.0...v0.4.1](https://github.com/zavudev/sdk-ruby/compare/v0.4.0...v0.4.1)
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 "zavudev", "~> 0.4.1"
29
+ gem "zavudev", "~> 0.5.0"
30
30
  ```
31
31
 
32
32
  <!-- x-release-please-end -->
@@ -14,6 +14,13 @@ module Zavudev
14
14
  # @return [String]
15
15
  required :to, String
16
16
 
17
+ # @!attribute attachments
18
+ # Email attachments. Only supported when channel is 'email'. Maximum 40MB total
19
+ # size.
20
+ #
21
+ # @return [Array<Zavudev::Models::MessageSendParams::Attachment>, nil]
22
+ optional :attachments, -> { Zavudev::Internal::Type::ArrayOf[Zavudev::MessageSendParams::Attachment] }
23
+
17
24
  # @!attribute channel
18
25
  # Delivery channel. Use 'auto' for intelligent routing. If omitted with non-text
19
26
  # messageType, WhatsApp is used. For email recipients, defaults to 'email'.
@@ -89,12 +96,14 @@ module Zavudev
89
96
  # @return [String, nil]
90
97
  optional :zavu_sender, String
91
98
 
92
- # @!method initialize(to:, channel: nil, content: nil, fallback_enabled: nil, html_body: nil, idempotency_key: nil, message_type: nil, metadata: nil, reply_to: nil, subject: nil, text: nil, voice_language: nil, zavu_sender: nil, request_options: {})
99
+ # @!method initialize(to:, attachments: nil, channel: nil, content: nil, fallback_enabled: nil, html_body: nil, idempotency_key: nil, message_type: nil, metadata: nil, reply_to: nil, subject: nil, text: nil, voice_language: nil, zavu_sender: nil, request_options: {})
93
100
  # Some parameter documentations has been truncated, see
94
101
  # {Zavudev::Models::MessageSendParams} for more details.
95
102
  #
96
103
  # @param to [String] Recipient phone number in E.164 format, email address, or numeric chat ID (for T
97
104
  #
105
+ # @param attachments [Array<Zavudev::Models::MessageSendParams::Attachment>] Email attachments. Only supported when channel is 'email'. Maximum 40MB total si
106
+ #
98
107
  # @param channel [Symbol, Zavudev::Models::Channel] Delivery channel. Use 'auto' for intelligent routing. If omitted with non-text m
99
108
  #
100
109
  # @param content [Zavudev::Models::MessageContent] Additional content for non-text message types.
@@ -120,6 +129,55 @@ module Zavudev
120
129
  # @param zavu_sender [String]
121
130
  #
122
131
  # @param request_options [Zavudev::RequestOptions, Hash{Symbol=>Object}]
132
+
133
+ class Attachment < Zavudev::Internal::Type::BaseModel
134
+ # @!attribute filename
135
+ # Name of the attached file.
136
+ #
137
+ # @return [String]
138
+ required :filename, String
139
+
140
+ # @!attribute content
141
+ # Content of the attached file as a Base64-encoded string.
142
+ #
143
+ # @return [String, nil]
144
+ optional :content, String
145
+
146
+ # @!attribute content_id
147
+ # Content ID for inline images. Reference in HTML as
148
+ # `<img src="cid:your_content_id">`.
149
+ #
150
+ # @return [String, nil]
151
+ optional :content_id, String
152
+
153
+ # @!attribute content_type
154
+ # MIME type of the attachment. If not set, will be derived from the filename.
155
+ #
156
+ # @return [String, nil]
157
+ optional :content_type, String
158
+
159
+ # @!attribute path
160
+ # URL where the attachment file is hosted. The server will fetch the file.
161
+ #
162
+ # @return [String, nil]
163
+ optional :path, String
164
+
165
+ # @!method initialize(filename:, content: nil, content_id: nil, content_type: nil, path: nil)
166
+ # Some parameter documentations has been truncated, see
167
+ # {Zavudev::Models::MessageSendParams::Attachment} for more details.
168
+ #
169
+ # Email attachment. Provide either `content` (base64) or `path` (URL), not both.
170
+ #
171
+ # @param filename [String] Name of the attached file.
172
+ #
173
+ # @param content [String] Content of the attached file as a Base64-encoded string.
174
+ #
175
+ # @param content_id [String] Content ID for inline images. Reference in HTML as `<img src="cid:your_content_i
176
+ #
177
+ # @param content_type [String] MIME type of the attachment. If not set, will be derived from the filename.
178
+ #
179
+ # @param path [String] URL where the attachment file is hosted. The server will fetch the file.
180
+ end
123
181
  end
124
182
  end
125
183
  end
@@ -30,6 +30,11 @@ module Zavudev
30
30
  #
31
31
  # - `conversation.new`: New conversation started with a contact
32
32
  # - `template.status_changed`: WhatsApp template approval status changed
33
+ #
34
+ # **Partner events:**
35
+ #
36
+ # - `invitation.status_changed`: A partner invitation status changed (pending,
37
+ # in_progress, completed, cancelled)
33
38
  module WebhookEvent
34
39
  extend Zavudev::Internal::Type::Enum
35
40
 
@@ -43,6 +48,7 @@ module Zavudev
43
48
  BROADCAST_STATUS_CHANGED = :"broadcast.status_changed"
44
49
  CONVERSATION_NEW = :"conversation.new"
45
50
  TEMPLATE_STATUS_CHANGED = :"template.status_changed"
51
+ INVITATION_STATUS_CHANGED = :"invitation.status_changed"
46
52
 
47
53
  # @!method self.values
48
54
  # @return [Array<Symbol>]
@@ -107,10 +107,12 @@ module Zavudev
107
107
  # - Unverified accounts: 200 messages per channel per day
108
108
  # - Complete KYC verification to increase limits to 10,000/day
109
109
  #
110
- # @overload send_(to:, channel: nil, content: nil, fallback_enabled: nil, html_body: nil, idempotency_key: nil, message_type: nil, metadata: nil, reply_to: nil, subject: nil, text: nil, voice_language: nil, zavu_sender: nil, request_options: {})
110
+ # @overload send_(to:, attachments: nil, channel: nil, content: nil, fallback_enabled: nil, html_body: nil, idempotency_key: nil, message_type: nil, metadata: nil, reply_to: nil, subject: nil, text: nil, voice_language: nil, zavu_sender: nil, request_options: {})
111
111
  #
112
112
  # @param to [String] Body param: Recipient phone number in E.164 format, email address, or numeric ch
113
113
  #
114
+ # @param attachments [Array<Zavudev::Models::MessageSendParams::Attachment>] Body param: Email attachments. Only supported when channel is 'email'. Maximum 4
115
+ #
114
116
  # @param channel [Symbol, Zavudev::Models::Channel] Body param: Delivery channel. Use 'auto' for intelligent routing. If omitted wit
115
117
  #
116
118
  # @param content [Zavudev::Models::MessageContent] Body param: Additional content for non-text message types.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Zavudev
4
- VERSION = "0.4.1"
4
+ VERSION = "0.5.0"
5
5
  end
@@ -16,6 +16,20 @@ module Zavudev
16
16
  sig { returns(String) }
17
17
  attr_accessor :to
18
18
 
19
+ # Email attachments. Only supported when channel is 'email'. Maximum 40MB total
20
+ # size.
21
+ sig do
22
+ returns(T.nilable(T::Array[Zavudev::MessageSendParams::Attachment]))
23
+ end
24
+ attr_reader :attachments
25
+
26
+ sig do
27
+ params(
28
+ attachments: T::Array[Zavudev::MessageSendParams::Attachment::OrHash]
29
+ ).void
30
+ end
31
+ attr_writer :attachments
32
+
19
33
  # Delivery channel. Use 'auto' for intelligent routing. If omitted with non-text
20
34
  # messageType, WhatsApp is used. For email recipients, defaults to 'email'.
21
35
  sig { returns(T.nilable(Zavudev::Channel::OrSymbol)) }
@@ -106,6 +120,7 @@ module Zavudev
106
120
  sig do
107
121
  params(
108
122
  to: String,
123
+ attachments: T::Array[Zavudev::MessageSendParams::Attachment::OrHash],
109
124
  channel: Zavudev::Channel::OrSymbol,
110
125
  content: Zavudev::MessageContent::OrHash,
111
126
  fallback_enabled: T::Boolean,
@@ -125,6 +140,9 @@ module Zavudev
125
140
  # Recipient phone number in E.164 format, email address, or numeric chat ID (for
126
141
  # Telegram/Instagram).
127
142
  to:,
143
+ # Email attachments. Only supported when channel is 'email'. Maximum 40MB total
144
+ # size.
145
+ attachments: nil,
128
146
  # Delivery channel. Use 'auto' for intelligent routing. If omitted with non-text
129
147
  # messageType, WhatsApp is used. For email recipients, defaults to 'email'.
130
148
  channel: nil,
@@ -160,6 +178,7 @@ module Zavudev
160
178
  override.returns(
161
179
  {
162
180
  to: String,
181
+ attachments: T::Array[Zavudev::MessageSendParams::Attachment],
163
182
  channel: Zavudev::Channel::OrSymbol,
164
183
  content: Zavudev::MessageContent,
165
184
  fallback_enabled: T::Boolean,
@@ -178,6 +197,88 @@ module Zavudev
178
197
  end
179
198
  def to_hash
180
199
  end
200
+
201
+ class Attachment < Zavudev::Internal::Type::BaseModel
202
+ OrHash =
203
+ T.type_alias do
204
+ T.any(
205
+ Zavudev::MessageSendParams::Attachment,
206
+ Zavudev::Internal::AnyHash
207
+ )
208
+ end
209
+
210
+ # Name of the attached file.
211
+ sig { returns(String) }
212
+ attr_accessor :filename
213
+
214
+ # Content of the attached file as a Base64-encoded string.
215
+ sig { returns(T.nilable(String)) }
216
+ attr_reader :content
217
+
218
+ sig { params(content: String).void }
219
+ attr_writer :content
220
+
221
+ # Content ID for inline images. Reference in HTML as
222
+ # `<img src="cid:your_content_id">`.
223
+ sig { returns(T.nilable(String)) }
224
+ attr_reader :content_id
225
+
226
+ sig { params(content_id: String).void }
227
+ attr_writer :content_id
228
+
229
+ # MIME type of the attachment. If not set, will be derived from the filename.
230
+ sig { returns(T.nilable(String)) }
231
+ attr_reader :content_type
232
+
233
+ sig { params(content_type: String).void }
234
+ attr_writer :content_type
235
+
236
+ # URL where the attachment file is hosted. The server will fetch the file.
237
+ sig { returns(T.nilable(String)) }
238
+ attr_reader :path
239
+
240
+ sig { params(path: String).void }
241
+ attr_writer :path
242
+
243
+ # Email attachment. Provide either `content` (base64) or `path` (URL), not both.
244
+ sig do
245
+ params(
246
+ filename: String,
247
+ content: String,
248
+ content_id: String,
249
+ content_type: String,
250
+ path: String
251
+ ).returns(T.attached_class)
252
+ end
253
+ def self.new(
254
+ # Name of the attached file.
255
+ filename:,
256
+ # Content of the attached file as a Base64-encoded string.
257
+ content: nil,
258
+ # Content ID for inline images. Reference in HTML as
259
+ # `<img src="cid:your_content_id">`.
260
+ content_id: nil,
261
+ # MIME type of the attachment. If not set, will be derived from the filename.
262
+ content_type: nil,
263
+ # URL where the attachment file is hosted. The server will fetch the file.
264
+ path: nil
265
+ )
266
+ end
267
+
268
+ sig do
269
+ override.returns(
270
+ {
271
+ filename: String,
272
+ content: String,
273
+ content_id: String,
274
+ content_type: String,
275
+ path: String
276
+ }
277
+ )
278
+ end
279
+ def to_hash
280
+ end
281
+ end
181
282
  end
182
283
  end
183
284
  end
@@ -30,6 +30,11 @@ module Zavudev
30
30
  #
31
31
  # - `conversation.new`: New conversation started with a contact
32
32
  # - `template.status_changed`: WhatsApp template approval status changed
33
+ #
34
+ # **Partner events:**
35
+ #
36
+ # - `invitation.status_changed`: A partner invitation status changed (pending,
37
+ # in_progress, completed, cancelled)
33
38
  module WebhookEvent
34
39
  extend Zavudev::Internal::Type::Enum
35
40
 
@@ -54,6 +59,8 @@ module Zavudev
54
59
  T.let(:"conversation.new", Zavudev::WebhookEvent::TaggedSymbol)
55
60
  TEMPLATE_STATUS_CHANGED =
56
61
  T.let(:"template.status_changed", Zavudev::WebhookEvent::TaggedSymbol)
62
+ INVITATION_STATUS_CHANGED =
63
+ T.let(:"invitation.status_changed", Zavudev::WebhookEvent::TaggedSymbol)
57
64
 
58
65
  sig { override.returns(T::Array[Zavudev::WebhookEvent::TaggedSymbol]) }
59
66
  def self.values
@@ -77,6 +77,7 @@ module Zavudev
77
77
  sig do
78
78
  params(
79
79
  to: String,
80
+ attachments: T::Array[Zavudev::MessageSendParams::Attachment::OrHash],
80
81
  channel: Zavudev::Channel::OrSymbol,
81
82
  content: Zavudev::MessageContent::OrHash,
82
83
  fallback_enabled: T::Boolean,
@@ -96,6 +97,9 @@ module Zavudev
96
97
  # Body param: Recipient phone number in E.164 format, email address, or numeric
97
98
  # chat ID (for Telegram/Instagram).
98
99
  to:,
100
+ # Body param: Email attachments. Only supported when channel is 'email'. Maximum
101
+ # 40MB total size.
102
+ attachments: nil,
99
103
  # Body param: Delivery channel. Use 'auto' for intelligent routing. If omitted
100
104
  # with non-text messageType, WhatsApp is used. For email recipients, defaults to
101
105
  # 'email'.
@@ -3,6 +3,7 @@ module Zavudev
3
3
  type message_send_params =
4
4
  {
5
5
  to: String,
6
+ attachments: ::Array[Zavudev::MessageSendParams::Attachment],
6
7
  channel: Zavudev::Models::channel,
7
8
  content: Zavudev::MessageContent,
8
9
  fallback_enabled: bool,
@@ -24,6 +25,12 @@ module Zavudev
24
25
 
25
26
  attr_accessor to: String
26
27
 
28
+ attr_reader attachments: ::Array[Zavudev::MessageSendParams::Attachment]?
29
+
30
+ def attachments=: (
31
+ ::Array[Zavudev::MessageSendParams::Attachment]
32
+ ) -> ::Array[Zavudev::MessageSendParams::Attachment]
33
+
27
34
  attr_reader channel: Zavudev::Models::channel?
28
35
 
29
36
  def channel=: (Zavudev::Models::channel) -> Zavudev::Models::channel
@@ -76,6 +83,7 @@ module Zavudev
76
83
 
77
84
  def initialize: (
78
85
  to: String,
86
+ ?attachments: ::Array[Zavudev::MessageSendParams::Attachment],
79
87
  ?channel: Zavudev::Models::channel,
80
88
  ?content: Zavudev::MessageContent,
81
89
  ?fallback_enabled: bool,
@@ -93,6 +101,7 @@ module Zavudev
93
101
 
94
102
  def to_hash: -> {
95
103
  to: String,
104
+ attachments: ::Array[Zavudev::MessageSendParams::Attachment],
96
105
  channel: Zavudev::Models::channel,
97
106
  content: Zavudev::MessageContent,
98
107
  fallback_enabled: bool,
@@ -107,6 +116,51 @@ module Zavudev
107
116
  zavu_sender: String,
108
117
  request_options: Zavudev::RequestOptions
109
118
  }
119
+
120
+ type attachment =
121
+ {
122
+ filename: String,
123
+ content: String,
124
+ content_id: String,
125
+ content_type: String,
126
+ path: String
127
+ }
128
+
129
+ class Attachment < Zavudev::Internal::Type::BaseModel
130
+ attr_accessor filename: String
131
+
132
+ attr_reader content: String?
133
+
134
+ def content=: (String) -> String
135
+
136
+ attr_reader content_id: String?
137
+
138
+ def content_id=: (String) -> String
139
+
140
+ attr_reader content_type: String?
141
+
142
+ def content_type=: (String) -> String
143
+
144
+ attr_reader path: String?
145
+
146
+ def path=: (String) -> String
147
+
148
+ def initialize: (
149
+ filename: String,
150
+ ?content: String,
151
+ ?content_id: String,
152
+ ?content_type: String,
153
+ ?path: String
154
+ ) -> void
155
+
156
+ def to_hash: -> {
157
+ filename: String,
158
+ content: String,
159
+ content_id: String,
160
+ content_type: String,
161
+ path: String
162
+ }
163
+ end
110
164
  end
111
165
  end
112
166
  end
@@ -11,6 +11,7 @@ module Zavudev
11
11
  | :"broadcast.status_changed"
12
12
  | :"conversation.new"
13
13
  | :"template.status_changed"
14
+ | :"invitation.status_changed"
14
15
 
15
16
  module WebhookEvent
16
17
  extend Zavudev::Internal::Type::Enum
@@ -25,6 +26,7 @@ module Zavudev
25
26
  BROADCAST_STATUS_CHANGED: :"broadcast.status_changed"
26
27
  CONVERSATION_NEW: :"conversation.new"
27
28
  TEMPLATE_STATUS_CHANGED: :"template.status_changed"
29
+ INVITATION_STATUS_CHANGED: :"invitation.status_changed"
28
30
 
29
31
  def self?.values: -> ::Array[Zavudev::Models::webhook_event]
30
32
  end
@@ -24,6 +24,7 @@ module Zavudev
24
24
 
25
25
  def send_: (
26
26
  to: String,
27
+ ?attachments: ::Array[Zavudev::MessageSendParams::Attachment],
27
28
  ?channel: Zavudev::Models::channel,
28
29
  ?content: Zavudev::MessageContent,
29
30
  ?fallback_enabled: bool,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zavudev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zavudev