bzapper 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.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +323 -0
- data/lib/bzapper/client.rb +122 -0
- data/lib/bzapper/codec.rb +112 -0
- data/lib/bzapper/errors.rb +126 -0
- data/lib/bzapper/resources/accounts.rb +394 -0
- data/lib/bzapper/resources/advanced.rb +388 -0
- data/lib/bzapper/resources/advisories.rb +39 -0
- data/lib/bzapper/resources/base.rb +56 -0
- data/lib/bzapper/resources/billing.rb +177 -0
- data/lib/bzapper/resources/campaigns.rb +273 -0
- data/lib/bzapper/resources/connect.rb +35 -0
- data/lib/bzapper/resources/contacts.rb +481 -0
- data/lib/bzapper/resources/conversations.rb +47 -0
- data/lib/bzapper/resources/groups.rb +252 -0
- data/lib/bzapper/resources/instances.rb +287 -0
- data/lib/bzapper/resources/messages.rb +920 -0
- data/lib/bzapper/resources/partner.rb +134 -0
- data/lib/bzapper/resources/pools.rb +69 -0
- data/lib/bzapper/resources/scheduling.rb +38 -0
- data/lib/bzapper/resources/system.rb +21 -0
- data/lib/bzapper/resources/usage.rb +42 -0
- data/lib/bzapper/resources/webhooks.rb +147 -0
- data/lib/bzapper/resources.rb +100 -0
- data/lib/bzapper/transport.rb +248 -0
- data/lib/bzapper/unset.rb +27 -0
- data/lib/bzapper/upload.rb +61 -0
- data/lib/bzapper/version.rb +7 -0
- data/lib/bzapper/webhook.rb +194 -0
- data/lib/bzapper.rb +30 -0
- metadata +74 -0
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# GERADO por script/generate.rb a partir de packages/sdk/openapi.yaml — não edite à mão.
|
|
4
|
+
|
|
5
|
+
module Bzapper
|
|
6
|
+
module Resources
|
|
7
|
+
# Recursos avançados: editar/apagar/encaminhar, perfil, privacidade, chats, etiquetas, bloqueio e chamadas — `client.advanced`.
|
|
8
|
+
class Advanced < Base
|
|
9
|
+
# Edit the text of a sent message. `PATCH /messages/{id}`
|
|
10
|
+
#
|
|
11
|
+
# @param id [String] Instance ID (UUID).
|
|
12
|
+
# @param text [String] (corpo)
|
|
13
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
14
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
15
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
16
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
17
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
18
|
+
def edit_message(id, text:, idempotency_key: nil, timeout: nil)
|
|
19
|
+
payload = compact(
|
|
20
|
+
"text" => text
|
|
21
|
+
)
|
|
22
|
+
request("PATCH",
|
|
23
|
+
"/messages/#{segment(id, "id")}",
|
|
24
|
+
body: payload,
|
|
25
|
+
idempotency_key: idempotency_key,
|
|
26
|
+
timeout: timeout)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Revoke a message (delete for everyone). `DELETE /messages/{id}`
|
|
30
|
+
#
|
|
31
|
+
# @param id [String] Instance ID (UUID).
|
|
32
|
+
# @param for_everyone [Boolean, nil] (query)
|
|
33
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
34
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
35
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
36
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
37
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
38
|
+
def revoke_message(id, for_everyone: nil, idempotency_key: nil, timeout: nil)
|
|
39
|
+
query = {
|
|
40
|
+
"for_everyone" => for_everyone
|
|
41
|
+
}
|
|
42
|
+
request("DELETE",
|
|
43
|
+
"/messages/#{segment(id, "id")}",
|
|
44
|
+
query: query,
|
|
45
|
+
idempotency_key: idempotency_key,
|
|
46
|
+
timeout: timeout)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Forward a message (experimental). `POST /messages/forward`
|
|
50
|
+
#
|
|
51
|
+
# @param instance_id [String] (corpo)
|
|
52
|
+
# @param to [String] (corpo)
|
|
53
|
+
# @param from_chat [String] (corpo)
|
|
54
|
+
# @param wa_message_id [String] (corpo)
|
|
55
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
56
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
57
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
58
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
59
|
+
def forward_message(instance_id:, to:, from_chat:, wa_message_id:, idempotency_key: nil,
|
|
60
|
+
timeout: nil)
|
|
61
|
+
payload = compact(
|
|
62
|
+
"instance_id" => instance_id,
|
|
63
|
+
"to" => to,
|
|
64
|
+
"from_chat" => from_chat,
|
|
65
|
+
"wa_message_id" => wa_message_id
|
|
66
|
+
)
|
|
67
|
+
request("POST",
|
|
68
|
+
"/messages/forward",
|
|
69
|
+
body: payload,
|
|
70
|
+
idempotency_key: idempotency_key,
|
|
71
|
+
timeout: timeout)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Number profile (white-label) — status (ok), name/photo (experimental). `PATCH
|
|
75
|
+
# /instances/{id}/profile`
|
|
76
|
+
#
|
|
77
|
+
# @param id [String] Instance ID (UUID).
|
|
78
|
+
# @param display_name [String, nil] (corpo)
|
|
79
|
+
# @param status_message [String, nil] (corpo)
|
|
80
|
+
# @param picture [String, nil] (corpo) Photo in base64.
|
|
81
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
82
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
83
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
84
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
85
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
86
|
+
def set_profile(id, display_name: UNSET, status_message: UNSET, picture: UNSET,
|
|
87
|
+
idempotency_key: nil, timeout: nil)
|
|
88
|
+
payload = compact(
|
|
89
|
+
"display_name" => display_name,
|
|
90
|
+
"status_message" => status_message,
|
|
91
|
+
"picture" => picture
|
|
92
|
+
)
|
|
93
|
+
request("PATCH",
|
|
94
|
+
"/instances/#{segment(id, "id")}/profile",
|
|
95
|
+
body: payload,
|
|
96
|
+
idempotency_key: idempotency_key,
|
|
97
|
+
timeout: timeout)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Set a privacy setting. `PATCH /instances/{id}/privacy`
|
|
101
|
+
#
|
|
102
|
+
# @param id [String] Instance ID (UUID).
|
|
103
|
+
# @param setting [String] (corpo)
|
|
104
|
+
# @param value [String] (corpo)
|
|
105
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
106
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
107
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
108
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
109
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
110
|
+
def set_privacy(id, setting:, value:, idempotency_key: nil, timeout: nil)
|
|
111
|
+
payload = compact(
|
|
112
|
+
"setting" => setting,
|
|
113
|
+
"value" => value
|
|
114
|
+
)
|
|
115
|
+
request("PATCH",
|
|
116
|
+
"/instances/#{segment(id, "id")}/privacy",
|
|
117
|
+
body: payload,
|
|
118
|
+
idempotency_key: idempotency_key,
|
|
119
|
+
timeout: timeout)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# Archive/unarchive a chat. `POST /chats/{jid}/archive`
|
|
123
|
+
#
|
|
124
|
+
# @param jid [String] Group JID (…@g.us).
|
|
125
|
+
# @param instance_id [String] (corpo)
|
|
126
|
+
# @param on [Boolean] (corpo)
|
|
127
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
128
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
129
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
130
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
131
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
132
|
+
def archive_chat(jid, instance_id:, on:, idempotency_key: nil, timeout: nil)
|
|
133
|
+
payload = compact(
|
|
134
|
+
"instance_id" => instance_id,
|
|
135
|
+
"on" => on
|
|
136
|
+
)
|
|
137
|
+
request("POST",
|
|
138
|
+
"/chats/#{segment(jid, "jid")}/archive",
|
|
139
|
+
body: payload,
|
|
140
|
+
idempotency_key: idempotency_key,
|
|
141
|
+
timeout: timeout)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# Pin/unpin a chat. `POST /chats/{jid}/pin`
|
|
145
|
+
#
|
|
146
|
+
# @param jid [String] Group JID (…@g.us).
|
|
147
|
+
# @param instance_id [String] (corpo)
|
|
148
|
+
# @param on [Boolean] (corpo)
|
|
149
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
150
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
151
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
152
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
153
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
154
|
+
def pin_chat(jid, instance_id:, on:, idempotency_key: nil, timeout: nil)
|
|
155
|
+
payload = compact(
|
|
156
|
+
"instance_id" => instance_id,
|
|
157
|
+
"on" => on
|
|
158
|
+
)
|
|
159
|
+
request("POST",
|
|
160
|
+
"/chats/#{segment(jid, "jid")}/pin",
|
|
161
|
+
body: payload,
|
|
162
|
+
idempotency_key: idempotency_key,
|
|
163
|
+
timeout: timeout)
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# Mark a chat read/unread. `POST /chats/{jid}/read`
|
|
167
|
+
#
|
|
168
|
+
# @param jid [String] Group JID (…@g.us).
|
|
169
|
+
# @param instance_id [String] (corpo)
|
|
170
|
+
# @param on [Boolean] (corpo)
|
|
171
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
172
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
173
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
174
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
175
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
176
|
+
def mark_chat(jid, instance_id:, on:, idempotency_key: nil, timeout: nil)
|
|
177
|
+
payload = compact(
|
|
178
|
+
"instance_id" => instance_id,
|
|
179
|
+
"on" => on
|
|
180
|
+
)
|
|
181
|
+
request("POST",
|
|
182
|
+
"/chats/#{segment(jid, "jid")}/read",
|
|
183
|
+
body: payload,
|
|
184
|
+
idempotency_key: idempotency_key,
|
|
185
|
+
timeout: timeout)
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
# Mute/unmute a chat. `POST /chats/{jid}/mute`
|
|
189
|
+
#
|
|
190
|
+
# @param jid [String] Group JID (…@g.us).
|
|
191
|
+
# @param instance_id [String] (corpo)
|
|
192
|
+
# @param on [Boolean] (corpo)
|
|
193
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
194
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
195
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
196
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
197
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
198
|
+
def mute_chat(jid, instance_id:, on:, idempotency_key: nil, timeout: nil)
|
|
199
|
+
payload = compact(
|
|
200
|
+
"instance_id" => instance_id,
|
|
201
|
+
"on" => on
|
|
202
|
+
)
|
|
203
|
+
request("POST",
|
|
204
|
+
"/chats/#{segment(jid, "jid")}/mute",
|
|
205
|
+
body: payload,
|
|
206
|
+
idempotency_key: idempotency_key,
|
|
207
|
+
timeout: timeout)
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
# Apply/remove a label on a chat (experimental). `POST /chats/{jid}/labels`
|
|
211
|
+
#
|
|
212
|
+
# @param jid [String] Group JID (…@g.us).
|
|
213
|
+
# @param instance_id [String] (corpo)
|
|
214
|
+
# @param label_id [String] (corpo)
|
|
215
|
+
# @param apply [Boolean, nil] (corpo) true = apply, false = remove.
|
|
216
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
217
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
218
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
219
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
220
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
221
|
+
def apply_chat_label(jid, instance_id:, label_id:, apply: UNSET, idempotency_key: nil,
|
|
222
|
+
timeout: nil)
|
|
223
|
+
payload = compact(
|
|
224
|
+
"instance_id" => instance_id,
|
|
225
|
+
"label_id" => label_id,
|
|
226
|
+
"apply" => apply
|
|
227
|
+
)
|
|
228
|
+
request("POST",
|
|
229
|
+
"/chats/#{segment(jid, "jid")}/labels",
|
|
230
|
+
body: payload,
|
|
231
|
+
idempotency_key: idempotency_key,
|
|
232
|
+
timeout: timeout)
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
# List the number's labels (experimental). `GET /labels`
|
|
236
|
+
#
|
|
237
|
+
# @param instance_id [String] (query) Instance ID (UUID).
|
|
238
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
239
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
240
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
241
|
+
def list_labels(instance_id:, timeout: nil)
|
|
242
|
+
query = {
|
|
243
|
+
"instance_id" => instance_id
|
|
244
|
+
}
|
|
245
|
+
request("GET", "/labels", query: query, timeout: timeout)
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
# Create a label (experimental). `POST /labels`
|
|
249
|
+
#
|
|
250
|
+
# @param instance_id [String] (corpo)
|
|
251
|
+
# @param name [String] (corpo)
|
|
252
|
+
# @param color [String, nil] (corpo)
|
|
253
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
254
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
255
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
256
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
257
|
+
def create_label(instance_id:, name:, color: UNSET, idempotency_key: nil, timeout: nil)
|
|
258
|
+
payload = compact(
|
|
259
|
+
"instance_id" => instance_id,
|
|
260
|
+
"name" => name,
|
|
261
|
+
"color" => color
|
|
262
|
+
)
|
|
263
|
+
request("POST",
|
|
264
|
+
"/labels",
|
|
265
|
+
body: payload,
|
|
266
|
+
idempotency_key: idempotency_key,
|
|
267
|
+
timeout: timeout)
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
# Delete a label (experimental). `DELETE /labels/{id}`
|
|
271
|
+
#
|
|
272
|
+
# @param id [String] Label ID.
|
|
273
|
+
# @param instance_id [String] (query) Instance ID (UUID).
|
|
274
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
275
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
276
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
277
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
278
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
279
|
+
def delete_label(id, instance_id:, idempotency_key: nil, timeout: nil)
|
|
280
|
+
query = {
|
|
281
|
+
"instance_id" => instance_id
|
|
282
|
+
}
|
|
283
|
+
request("DELETE",
|
|
284
|
+
"/labels/#{segment(id, "id")}",
|
|
285
|
+
query: query,
|
|
286
|
+
idempotency_key: idempotency_key,
|
|
287
|
+
timeout: timeout)
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
# Block a contact. `POST /contacts/{jid}/block`
|
|
291
|
+
#
|
|
292
|
+
# @param jid [String] Group JID (…@g.us).
|
|
293
|
+
# @param instance_id [String] (corpo)
|
|
294
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
295
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
296
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
297
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
298
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
299
|
+
def block_contact(jid, instance_id:, idempotency_key: nil, timeout: nil)
|
|
300
|
+
payload = compact(
|
|
301
|
+
"instance_id" => instance_id
|
|
302
|
+
)
|
|
303
|
+
request("POST",
|
|
304
|
+
"/contacts/#{segment(jid, "jid")}/block",
|
|
305
|
+
body: payload,
|
|
306
|
+
idempotency_key: idempotency_key,
|
|
307
|
+
timeout: timeout)
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
# Unblock a contact. `POST /contacts/{jid}/unblock`
|
|
311
|
+
#
|
|
312
|
+
# @param jid [String] Group JID (…@g.us).
|
|
313
|
+
# @param instance_id [String] (corpo)
|
|
314
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
315
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
316
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
317
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
318
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
319
|
+
def unblock_contact(jid, instance_id:, idempotency_key: nil, timeout: nil)
|
|
320
|
+
payload = compact(
|
|
321
|
+
"instance_id" => instance_id
|
|
322
|
+
)
|
|
323
|
+
request("POST",
|
|
324
|
+
"/contacts/#{segment(jid, "jid")}/unblock",
|
|
325
|
+
body: payload,
|
|
326
|
+
idempotency_key: idempotency_key,
|
|
327
|
+
timeout: timeout)
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
# List blocked contacts. `GET /blocklist`
|
|
331
|
+
#
|
|
332
|
+
# @param instance_id [String] (query) Instance ID (UUID).
|
|
333
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
334
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
335
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
336
|
+
def get_blocklist(instance_id:, timeout: nil)
|
|
337
|
+
query = {
|
|
338
|
+
"instance_id" => instance_id
|
|
339
|
+
}
|
|
340
|
+
request("GET", "/blocklist", query: query, timeout: timeout)
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
# Reject a call. `POST /calls/reject`
|
|
344
|
+
#
|
|
345
|
+
# @param instance_id [String] (corpo)
|
|
346
|
+
# @param call_from [String] (corpo)
|
|
347
|
+
# @param call_id [String] (corpo)
|
|
348
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
349
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
350
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
351
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
352
|
+
def reject_call(instance_id:, call_from:, call_id:, idempotency_key: nil, timeout: nil)
|
|
353
|
+
payload = compact(
|
|
354
|
+
"instance_id" => instance_id,
|
|
355
|
+
"call_from" => call_from,
|
|
356
|
+
"call_id" => call_id
|
|
357
|
+
)
|
|
358
|
+
request("POST",
|
|
359
|
+
"/calls/reject",
|
|
360
|
+
body: payload,
|
|
361
|
+
idempotency_key: idempotency_key,
|
|
362
|
+
timeout: timeout)
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
# Start a call (experimental). `POST /calls/offer`
|
|
366
|
+
#
|
|
367
|
+
# @param instance_id [String] (corpo)
|
|
368
|
+
# @param to [String] (corpo)
|
|
369
|
+
# @param video [Boolean, nil] (corpo)
|
|
370
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
371
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
372
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
373
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
374
|
+
def offer_call(instance_id:, to:, video: UNSET, idempotency_key: nil, timeout: nil)
|
|
375
|
+
payload = compact(
|
|
376
|
+
"instance_id" => instance_id,
|
|
377
|
+
"to" => to,
|
|
378
|
+
"video" => video
|
|
379
|
+
)
|
|
380
|
+
request("POST",
|
|
381
|
+
"/calls/offer",
|
|
382
|
+
body: payload,
|
|
383
|
+
idempotency_key: idempotency_key,
|
|
384
|
+
timeout: timeout)
|
|
385
|
+
end
|
|
386
|
+
end
|
|
387
|
+
end
|
|
388
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# GERADO por script/generate.rb a partir de packages/sdk/openapi.yaml — não edite à mão.
|
|
4
|
+
|
|
5
|
+
module Bzapper
|
|
6
|
+
module Resources
|
|
7
|
+
# Avisos "atualize sua integração" — `client.advisories`.
|
|
8
|
+
class Advisories < Base
|
|
9
|
+
# List pending integration advisories. `GET /advisories`
|
|
10
|
+
#
|
|
11
|
+
# Advisories that affect THIS account and have not been dismissed. Use `action` — it states
|
|
12
|
+
# exactly what to do. Automate with the `advisory.published` webhook.
|
|
13
|
+
#
|
|
14
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
15
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
16
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
17
|
+
def list_advisories(timeout: nil)
|
|
18
|
+
request("GET", "/advisories", timeout: timeout)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Dismiss an advisory. `POST /advisories/{id}/read`
|
|
22
|
+
#
|
|
23
|
+
# Marks the advisory as handled; it stops being returned by `GET /advisories`.
|
|
24
|
+
#
|
|
25
|
+
# @param id [String] parâmetro de caminho
|
|
26
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
27
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
28
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
29
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
30
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
31
|
+
def mark_advisory_read(id, idempotency_key: nil, timeout: nil)
|
|
32
|
+
request("POST",
|
|
33
|
+
"/advisories/#{segment(id, "id")}/read",
|
|
34
|
+
idempotency_key: idempotency_key,
|
|
35
|
+
timeout: timeout)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bzapper
|
|
4
|
+
# Recursos da API (um por tag da spec): `client.messages`, `client.instances`,
|
|
5
|
+
# `client.groups`, `client.contacts`, `client.campaigns`, `client.webhooks`…
|
|
6
|
+
#
|
|
7
|
+
# Convenções (iguais em todos os métodos, gerados de `openapi.yaml`):
|
|
8
|
+
#
|
|
9
|
+
# * Nome do método = `operationId` em snake_case (`sendText` → `send_text`).
|
|
10
|
+
# * Parâmetros de caminho são posicionais; query e corpo são keyword args.
|
|
11
|
+
# * Obrigatórios da spec não têm padrão (faltou → `ArgumentError` do Ruby).
|
|
12
|
+
# * Campos de corpo opcionais têm padrão {Bzapper::UNSET} — não informado = não enviado.
|
|
13
|
+
# `nil` explícito vai como `null` (limpa o campo num PATCH).
|
|
14
|
+
# * Filtros de query com `nil` são omitidos; listas vão como CSV; `Time` vira ISO 8601 UTC.
|
|
15
|
+
# * Toda chamada aceita `timeout:` (segundos, por tentativa); as escritas aceitam
|
|
16
|
+
# `idempotency_key:` (senão a SDK gera uma e a repete nas novas tentativas).
|
|
17
|
+
# * O retorno é o JSON inteiro da resposta (`Hash`/`Array` com chaves **string**; `{"data"
|
|
18
|
+
# => [...]}` NÃO é desembrulhado, para preservar paginação/metadados). 204 → `nil`.
|
|
19
|
+
module Resources
|
|
20
|
+
# Encanamento comum de {Base} e {Bzapper::PartnerClient}.
|
|
21
|
+
# @api private
|
|
22
|
+
module Requests
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def request(method, path, query: nil, body: nil, multipart: nil, idempotency_key: nil, timeout: nil)
|
|
26
|
+
@transport.request(method, path, query: query, body: body, multipart: multipart,
|
|
27
|
+
idempotency_key: idempotency_key, timeout: timeout)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def segment(value, name)
|
|
31
|
+
Codec.path_segment(value, name)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def compact(fields)
|
|
35
|
+
Codec.compact(fields)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def upload(field, file, filename, content_type)
|
|
39
|
+
Upload.new(field, file, filename: filename, content_type: content_type)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @api private
|
|
44
|
+
class Base
|
|
45
|
+
include Requests
|
|
46
|
+
|
|
47
|
+
def initialize(transport)
|
|
48
|
+
@transport = transport
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def inspect
|
|
52
|
+
"#<#{self.class.name}>"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# GERADO por script/generate.rb a partir de packages/sdk/openapi.yaml — não edite à mão.
|
|
4
|
+
|
|
5
|
+
module Bzapper
|
|
6
|
+
module Resources
|
|
7
|
+
# Cobrança: plano, assinatura, add-ons, faturas e preços — `client.billing`.
|
|
8
|
+
class Billing < Base
|
|
9
|
+
# Effective account limits (plan + add-ons + usage). `GET /me/entitlements`
|
|
10
|
+
#
|
|
11
|
+
# Returns the resolved entitlement of the authenticated account: its effective plan, limits,
|
|
12
|
+
# contracted add-ons, free allowances per pillar and period usage. This is what the UI uses for
|
|
13
|
+
# the usage meter.
|
|
14
|
+
#
|
|
15
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
16
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
17
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
18
|
+
def get_my_entitlements(timeout: nil)
|
|
19
|
+
request("GET", "/me/entitlements", timeout: timeout)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Put the Pro plan in the cart (pending until the cart is paid). `POST /me/plan/upgrade`
|
|
23
|
+
#
|
|
24
|
+
# Does not charge nor activate anything: Pro goes into the cart together with any add-ons, and
|
|
25
|
+
# is activated when the cart is paid (`POST /me/addons/cart/checkout`).
|
|
26
|
+
#
|
|
27
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
28
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
29
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
30
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
31
|
+
def upgrade_plan(idempotency_key: nil, timeout: nil)
|
|
32
|
+
request("POST", "/me/plan/upgrade", idempotency_key: idempotency_key, timeout: timeout)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Cancel Pro at the end of the current cycle. `POST /me/plan/cancel`
|
|
36
|
+
#
|
|
37
|
+
# Pro stays active until renewal, then the account drops to Free.
|
|
38
|
+
#
|
|
39
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
40
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
41
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
42
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
43
|
+
def cancel_plan(idempotency_key: nil, timeout: nil)
|
|
44
|
+
request("POST", "/me/plan/cancel", idempotency_key: idempotency_key, timeout: timeout)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Undo a scheduled Pro cancellation. `POST /me/plan/uncancel`
|
|
48
|
+
#
|
|
49
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
50
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
51
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
52
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
53
|
+
def uncancel_plan(idempotency_key: nil, timeout: nil)
|
|
54
|
+
request("POST", "/me/plan/uncancel", idempotency_key: idempotency_key, timeout: timeout)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Plan/subscription state (null on Free). `GET /me/subscription`
|
|
58
|
+
#
|
|
59
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
60
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
61
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
62
|
+
def get_my_subscription(timeout: nil)
|
|
63
|
+
request("GET", "/me/subscription", timeout: timeout)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Add (+) or remove (−) add-ons in the cart. `POST /me/addons`
|
|
67
|
+
#
|
|
68
|
+
# A positive `delta` adds to the cart (charged only when the cart is paid); a negative one
|
|
69
|
+
# reduces the cart or the active quantity. Requires Pro (409 not_pro).
|
|
70
|
+
#
|
|
71
|
+
# @param kind [String] (corpo) Quantity add-ons: number, project, storage_gb, retention_block
|
|
72
|
+
# (+30 days). Feature toggles (0/1): campaigns, schedule_year.
|
|
73
|
+
# @param delta [Integer] (corpo) Non-zero. > 0 adds to the cart; < 0 reduces the cart/active
|
|
74
|
+
# quantity.
|
|
75
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
76
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
77
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
78
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
79
|
+
def change_addon(kind:, delta:, idempotency_key: nil, timeout: nil)
|
|
80
|
+
payload = compact(
|
|
81
|
+
"kind" => kind,
|
|
82
|
+
"delta" => delta
|
|
83
|
+
)
|
|
84
|
+
request("POST",
|
|
85
|
+
"/me/addons",
|
|
86
|
+
body: payload,
|
|
87
|
+
idempotency_key: idempotency_key,
|
|
88
|
+
timeout: timeout)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Cart state (pending Pro/add-ons + prorated total). `GET /me/addons/cart`
|
|
92
|
+
#
|
|
93
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
94
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
95
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
96
|
+
def get_addon_cart(timeout: nil)
|
|
97
|
+
request("GET", "/me/addons/cart", timeout: timeout)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Empty the cart. `DELETE /me/addons/cart`
|
|
101
|
+
#
|
|
102
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
103
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
104
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
105
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
106
|
+
def clear_addon_cart(idempotency_key: nil, timeout: nil)
|
|
107
|
+
request("DELETE", "/me/addons/cart", idempotency_key: idempotency_key, timeout: timeout)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Pay the cart (creates the invoice and opens the in-app payment). `POST
|
|
111
|
+
# /me/addons/cart/checkout`
|
|
112
|
+
#
|
|
113
|
+
# Returns the Stripe `client_secret` for Stripe Elements plus the invoice id. With `save_card:
|
|
114
|
+
# true`, the card is kept for recurring charges once the invoice is paid.
|
|
115
|
+
#
|
|
116
|
+
# @param save_card [Boolean, nil] (corpo)
|
|
117
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
118
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
119
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
120
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
121
|
+
def checkout_addon_cart(save_card: UNSET, idempotency_key: nil, timeout: nil)
|
|
122
|
+
payload = compact(
|
|
123
|
+
"save_card" => save_card
|
|
124
|
+
)
|
|
125
|
+
request("POST",
|
|
126
|
+
"/me/addons/cart/checkout",
|
|
127
|
+
body: payload,
|
|
128
|
+
idempotency_key: idempotency_key,
|
|
129
|
+
timeout: timeout)
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# The account's invoices (latest 24, newest first). `GET /me/invoices`
|
|
133
|
+
#
|
|
134
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
135
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
136
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
137
|
+
def list_my_invoices(timeout: nil)
|
|
138
|
+
request("GET", "/me/invoices", timeout: timeout)
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# Reopen the in-app payment of an open invoice. `POST /me/invoices/{id}/pay`
|
|
142
|
+
#
|
|
143
|
+
# @param id [String] Invoice ID.
|
|
144
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
145
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
146
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
147
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
148
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
149
|
+
def pay_invoice(id, idempotency_key: nil, timeout: nil)
|
|
150
|
+
request("POST",
|
|
151
|
+
"/me/invoices/#{segment(id, "id")}/pay",
|
|
152
|
+
idempotency_key: idempotency_key,
|
|
153
|
+
timeout: timeout)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
# Stripe publishable key for the front-end checkout. `GET /billing/config`
|
|
157
|
+
#
|
|
158
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
159
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
160
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
161
|
+
def get_billing_config(timeout: nil)
|
|
162
|
+
request("GET", "/billing/config", timeout: timeout)
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Public rate card per currency (plans, add-ons, free allowances). `GET /pricing`
|
|
166
|
+
#
|
|
167
|
+
# Public (no authentication). Cached for 5 minutes.
|
|
168
|
+
#
|
|
169
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
170
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
171
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
172
|
+
def get_pricing(timeout: nil)
|
|
173
|
+
request("GET", "/pricing", timeout: timeout)
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
end
|