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,252 @@
|
|
|
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
|
+
# Grupos do WhatsApp: info, participantes, convite, prévia e pedidos de entrada — `client.groups`.
|
|
8
|
+
class Groups < Base
|
|
9
|
+
# List the number's groups. `GET /groups`
|
|
10
|
+
#
|
|
11
|
+
# @param instance_id [String] (query) Instance ID (UUID).
|
|
12
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
13
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
14
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
15
|
+
def list_groups(instance_id:, timeout: nil)
|
|
16
|
+
query = {
|
|
17
|
+
"instance_id" => instance_id
|
|
18
|
+
}
|
|
19
|
+
request("GET", "/groups", query: query, timeout: timeout)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Create a group. `POST /groups`
|
|
23
|
+
#
|
|
24
|
+
# @param instance_id [String] (query) Instance ID (UUID).
|
|
25
|
+
# @param name [String] (corpo)
|
|
26
|
+
# @param participants [Array<String>, nil] (corpo)
|
|
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 create_group(instance_id:, name:, participants: UNSET, idempotency_key: nil, timeout: nil)
|
|
32
|
+
query = {
|
|
33
|
+
"instance_id" => instance_id
|
|
34
|
+
}
|
|
35
|
+
payload = compact(
|
|
36
|
+
"name" => name,
|
|
37
|
+
"participants" => participants
|
|
38
|
+
)
|
|
39
|
+
request("POST",
|
|
40
|
+
"/groups",
|
|
41
|
+
query: query,
|
|
42
|
+
body: payload,
|
|
43
|
+
idempotency_key: idempotency_key,
|
|
44
|
+
timeout: timeout)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Join a group via invite link. `POST /groups/join`
|
|
48
|
+
#
|
|
49
|
+
# @param instance_id [String] (query) Instance ID (UUID).
|
|
50
|
+
# @param code [String] (corpo)
|
|
51
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
52
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
53
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
54
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
55
|
+
def join_group(instance_id:, code:, idempotency_key: nil, timeout: nil)
|
|
56
|
+
query = {
|
|
57
|
+
"instance_id" => instance_id
|
|
58
|
+
}
|
|
59
|
+
payload = compact(
|
|
60
|
+
"code" => code
|
|
61
|
+
)
|
|
62
|
+
request("POST",
|
|
63
|
+
"/groups/join",
|
|
64
|
+
query: query,
|
|
65
|
+
body: payload,
|
|
66
|
+
idempotency_key: idempotency_key,
|
|
67
|
+
timeout: timeout)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Preview a group from an invite link without joining. `POST /groups/join/preview`
|
|
71
|
+
#
|
|
72
|
+
# @param instance_id [String] (query) Instance ID (UUID).
|
|
73
|
+
# @param code [String] (corpo) Invite code or full https://chat.whatsapp.com/… link.
|
|
74
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
75
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
76
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
77
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
78
|
+
def preview_group_invite(instance_id:, code:, idempotency_key: nil, timeout: nil)
|
|
79
|
+
query = {
|
|
80
|
+
"instance_id" => instance_id
|
|
81
|
+
}
|
|
82
|
+
payload = compact(
|
|
83
|
+
"code" => code
|
|
84
|
+
)
|
|
85
|
+
request("POST",
|
|
86
|
+
"/groups/join/preview",
|
|
87
|
+
query: query,
|
|
88
|
+
body: payload,
|
|
89
|
+
idempotency_key: idempotency_key,
|
|
90
|
+
timeout: timeout)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Group info. `GET /groups/{jid}`
|
|
94
|
+
#
|
|
95
|
+
# @param jid [String] Group JID (…@g.us).
|
|
96
|
+
# @param instance_id [String] (query) Instance ID (UUID).
|
|
97
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
98
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
99
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
100
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
101
|
+
def get_group(jid, instance_id:, timeout: nil)
|
|
102
|
+
query = {
|
|
103
|
+
"instance_id" => instance_id
|
|
104
|
+
}
|
|
105
|
+
request("GET", "/groups/#{segment(jid, "jid")}", query: query, timeout: timeout)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Update the group name/topic/settings. `PATCH /groups/{jid}`
|
|
109
|
+
#
|
|
110
|
+
# @param jid [String] Group JID (…@g.us).
|
|
111
|
+
# @param instance_id [String] (query) Instance ID (UUID).
|
|
112
|
+
# @param name [String, nil] (corpo)
|
|
113
|
+
# @param topic [String, nil] (corpo)
|
|
114
|
+
# @param announce [Boolean, nil] (corpo)
|
|
115
|
+
# @param locked [Boolean, nil] (corpo)
|
|
116
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
117
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
118
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
119
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
120
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
121
|
+
def update_group(jid, instance_id:, name: UNSET, topic: UNSET, announce: UNSET,
|
|
122
|
+
locked: UNSET, idempotency_key: nil, timeout: nil)
|
|
123
|
+
query = {
|
|
124
|
+
"instance_id" => instance_id
|
|
125
|
+
}
|
|
126
|
+
payload = compact(
|
|
127
|
+
"name" => name,
|
|
128
|
+
"topic" => topic,
|
|
129
|
+
"announce" => announce,
|
|
130
|
+
"locked" => locked
|
|
131
|
+
)
|
|
132
|
+
request("PATCH",
|
|
133
|
+
"/groups/#{segment(jid, "jid")}",
|
|
134
|
+
query: query,
|
|
135
|
+
body: payload,
|
|
136
|
+
idempotency_key: idempotency_key,
|
|
137
|
+
timeout: timeout)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Add/remove/promote/demote participants. `POST /groups/{jid}/participants`
|
|
141
|
+
#
|
|
142
|
+
# @param jid [String] Group JID (…@g.us).
|
|
143
|
+
# @param instance_id [String] (query) Instance ID (UUID).
|
|
144
|
+
# @param action [String] (corpo)
|
|
145
|
+
# @param participants [Array<String>] (corpo)
|
|
146
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
147
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
148
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
149
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
150
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
151
|
+
def update_group_participants(jid, instance_id:, action:, participants:,
|
|
152
|
+
idempotency_key: nil, timeout: nil)
|
|
153
|
+
query = {
|
|
154
|
+
"instance_id" => instance_id
|
|
155
|
+
}
|
|
156
|
+
payload = compact(
|
|
157
|
+
"action" => action,
|
|
158
|
+
"participants" => participants
|
|
159
|
+
)
|
|
160
|
+
request("POST",
|
|
161
|
+
"/groups/#{segment(jid, "jid")}/participants",
|
|
162
|
+
query: query,
|
|
163
|
+
body: payload,
|
|
164
|
+
idempotency_key: idempotency_key,
|
|
165
|
+
timeout: timeout)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
# Invite link (optional reset). `GET /groups/{jid}/invite`
|
|
169
|
+
#
|
|
170
|
+
# @param jid [String] Group JID (…@g.us).
|
|
171
|
+
# @param instance_id [String] (query) Instance ID (UUID).
|
|
172
|
+
# @param reset [Boolean, nil] (query)
|
|
173
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
174
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
175
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
176
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
177
|
+
def group_invite_link(jid, instance_id:, reset: nil, timeout: nil)
|
|
178
|
+
query = {
|
|
179
|
+
"instance_id" => instance_id,
|
|
180
|
+
"reset" => reset
|
|
181
|
+
}
|
|
182
|
+
request("GET", "/groups/#{segment(jid, "jid")}/invite", query: query, timeout: timeout)
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
# Leave the group. `POST /groups/{jid}/leave`
|
|
186
|
+
#
|
|
187
|
+
# @param jid [String] Group JID (…@g.us).
|
|
188
|
+
# @param instance_id [String] (query) Instance ID (UUID).
|
|
189
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
190
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
191
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
192
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
193
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
194
|
+
def leave_group(jid, instance_id:, idempotency_key: nil, timeout: nil)
|
|
195
|
+
query = {
|
|
196
|
+
"instance_id" => instance_id
|
|
197
|
+
}
|
|
198
|
+
request("POST",
|
|
199
|
+
"/groups/#{segment(jid, "jid")}/leave",
|
|
200
|
+
query: query,
|
|
201
|
+
idempotency_key: idempotency_key,
|
|
202
|
+
timeout: timeout)
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
# List pending join requests. `GET /groups/{jid}/join-requests`
|
|
206
|
+
#
|
|
207
|
+
# @param jid [String] Group JID (…@g.us).
|
|
208
|
+
# @param instance_id [String] (query) Instance ID (UUID).
|
|
209
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
210
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
211
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
212
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
213
|
+
def list_join_requests(jid, instance_id:, timeout: nil)
|
|
214
|
+
query = {
|
|
215
|
+
"instance_id" => instance_id
|
|
216
|
+
}
|
|
217
|
+
request("GET",
|
|
218
|
+
"/groups/#{segment(jid, "jid")}/join-requests",
|
|
219
|
+
query: query,
|
|
220
|
+
timeout: timeout)
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
# Approve/reject join requests. `POST /groups/{jid}/join-requests`
|
|
224
|
+
#
|
|
225
|
+
# @param jid [String] Group JID (…@g.us).
|
|
226
|
+
# @param instance_id [String] (query) Instance ID (UUID).
|
|
227
|
+
# @param participants [Array<String>] (corpo)
|
|
228
|
+
# @param approve [Boolean] (corpo)
|
|
229
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
230
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
231
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
232
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
233
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
234
|
+
def update_join_requests(jid, instance_id:, participants:, approve:, idempotency_key: nil,
|
|
235
|
+
timeout: nil)
|
|
236
|
+
query = {
|
|
237
|
+
"instance_id" => instance_id
|
|
238
|
+
}
|
|
239
|
+
payload = compact(
|
|
240
|
+
"participants" => participants,
|
|
241
|
+
"approve" => approve
|
|
242
|
+
)
|
|
243
|
+
request("POST",
|
|
244
|
+
"/groups/#{segment(jid, "jid")}/join-requests",
|
|
245
|
+
query: query,
|
|
246
|
+
body: payload,
|
|
247
|
+
idempotency_key: idempotency_key,
|
|
248
|
+
timeout: timeout)
|
|
249
|
+
end
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
end
|
|
@@ -0,0 +1,287 @@
|
|
|
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
|
+
# Números (instâncias): conexão, QR, sessão, proxy, filtros de entrada e conta oficial — `client.instances`.
|
|
8
|
+
class Instances < Base
|
|
9
|
+
# Set the inbound filters (broadcast/status/groups). `PATCH /instances/{id}/inbound-filters`
|
|
10
|
+
#
|
|
11
|
+
# @param id [String] Instance ID (UUID).
|
|
12
|
+
# @param ignore_broadcast [Boolean, nil] (corpo)
|
|
13
|
+
# @param ignore_status [Boolean, nil] (corpo)
|
|
14
|
+
# @param ignore_groups [Boolean, nil] (corpo)
|
|
15
|
+
# @param group_allowlist [Array<String>, nil] (corpo)
|
|
16
|
+
# @param group_denylist [Array<String>, nil] (corpo)
|
|
17
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
18
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
19
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
20
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
21
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
22
|
+
def set_inbound_filters(id, ignore_broadcast: UNSET, ignore_status: UNSET,
|
|
23
|
+
ignore_groups: UNSET, group_allowlist: UNSET, group_denylist: UNSET,
|
|
24
|
+
idempotency_key: nil, timeout: nil)
|
|
25
|
+
payload = compact(
|
|
26
|
+
"ignore_broadcast" => ignore_broadcast,
|
|
27
|
+
"ignore_status" => ignore_status,
|
|
28
|
+
"ignore_groups" => ignore_groups,
|
|
29
|
+
"group_allowlist" => group_allowlist,
|
|
30
|
+
"group_denylist" => group_denylist
|
|
31
|
+
)
|
|
32
|
+
request("PATCH",
|
|
33
|
+
"/instances/#{segment(id, "id")}/inbound-filters",
|
|
34
|
+
body: payload,
|
|
35
|
+
idempotency_key: idempotency_key,
|
|
36
|
+
timeout: timeout)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# List the tenant's instances (numbers). `GET /instances`
|
|
40
|
+
#
|
|
41
|
+
# @param project_id [String, nil] (query) Scope the numbers by project: a project id, or `all`
|
|
42
|
+
# for every number in the account. Omit to use the active project (X-Project-Id).
|
|
43
|
+
# @param archived [String, nil] (query) `1` lists the ARCHIVED numbers of the active project
|
|
44
|
+
# instead of the active ones.
|
|
45
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
46
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
47
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
48
|
+
def list_instances(project_id: nil, archived: nil, timeout: nil)
|
|
49
|
+
query = {
|
|
50
|
+
"project_id" => project_id,
|
|
51
|
+
"archived" => archived
|
|
52
|
+
}
|
|
53
|
+
request("GET", "/instances", query: query, timeout: timeout)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Create an instance (number). `POST /instances`
|
|
57
|
+
#
|
|
58
|
+
# @param phone [String] (corpo)
|
|
59
|
+
# @param nickname [String, nil] (corpo)
|
|
60
|
+
# @param proxy_url [String, nil] (corpo)
|
|
61
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
62
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
63
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
64
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
65
|
+
def create_instance(phone:, nickname: UNSET, proxy_url: UNSET, idempotency_key: nil,
|
|
66
|
+
timeout: nil)
|
|
67
|
+
payload = compact(
|
|
68
|
+
"phone" => phone,
|
|
69
|
+
"nickname" => nickname,
|
|
70
|
+
"proxy_url" => proxy_url
|
|
71
|
+
)
|
|
72
|
+
request("POST",
|
|
73
|
+
"/instances",
|
|
74
|
+
body: payload,
|
|
75
|
+
idempotency_key: idempotency_key,
|
|
76
|
+
timeout: timeout)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Get an instance. `GET /instances/{id}`
|
|
80
|
+
#
|
|
81
|
+
# @param id [String] Instance ID (UUID).
|
|
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 get_instance(id, timeout: nil)
|
|
87
|
+
request("GET", "/instances/#{segment(id, "id")}", timeout: timeout)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Remove an instance (ends the session). `DELETE /instances/{id}`
|
|
91
|
+
#
|
|
92
|
+
# Refused for numbers with message history (409 has_history) — archive them instead.
|
|
93
|
+
#
|
|
94
|
+
# @param id [String] Instance ID (UUID).
|
|
95
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
96
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
97
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
98
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
99
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
100
|
+
def delete_instance(id, idempotency_key: nil, timeout: nil)
|
|
101
|
+
request("DELETE",
|
|
102
|
+
"/instances/#{segment(id, "id")}",
|
|
103
|
+
idempotency_key: idempotency_key,
|
|
104
|
+
timeout: timeout)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Connect the instance via QR or pairing code. `POST /instances/{id}/connect`
|
|
108
|
+
#
|
|
109
|
+
# @param id [String] Instance ID (UUID).
|
|
110
|
+
# @param method [String, nil] (query) `qr` (default) returns a QR; `code` returns an 8-character
|
|
111
|
+
# code.
|
|
112
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
113
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
114
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
115
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
116
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
117
|
+
def connect_instance(id, method: nil, idempotency_key: nil, timeout: nil)
|
|
118
|
+
query = {
|
|
119
|
+
"method" => method
|
|
120
|
+
}
|
|
121
|
+
request("POST",
|
|
122
|
+
"/instances/#{segment(id, "id")}/connect",
|
|
123
|
+
query: query,
|
|
124
|
+
idempotency_key: idempotency_key,
|
|
125
|
+
timeout: timeout)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Disconnect (reconnectable). `POST /instances/{id}/disconnect`
|
|
129
|
+
#
|
|
130
|
+
# @param id [String] Instance ID (UUID).
|
|
131
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
132
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
133
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
134
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
135
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
136
|
+
def disconnect_instance(id, idempotency_key: nil, timeout: nil)
|
|
137
|
+
request("POST",
|
|
138
|
+
"/instances/#{segment(id, "id")}/disconnect",
|
|
139
|
+
idempotency_key: idempotency_key,
|
|
140
|
+
timeout: timeout)
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# Logout (requires a new QR afterwards). `POST /instances/{id}/logout`
|
|
144
|
+
#
|
|
145
|
+
# @param id [String] Instance ID (UUID).
|
|
146
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
147
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
148
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
149
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
150
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
151
|
+
def logout_instance(id, idempotency_key: nil, timeout: nil)
|
|
152
|
+
request("POST",
|
|
153
|
+
"/instances/#{segment(id, "id")}/logout",
|
|
154
|
+
idempotency_key: idempotency_key,
|
|
155
|
+
timeout: timeout)
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
# Wipe the paired device and force a clean re-pairing. `POST /instances/{id}/clear-session`
|
|
159
|
+
#
|
|
160
|
+
# Deletes the stored WhatsApp device credential for this number, not just its reference. Use it
|
|
161
|
+
# when `connect` will not produce a QR code, or when pairing is stuck in an inconsistent state —
|
|
162
|
+
# a plain `logout` leaves the old device behind. The next `connect` pairs from scratch.
|
|
163
|
+
# Destructive and irreversible: the number goes offline and must be paired again by scanning a
|
|
164
|
+
# QR code. It is idempotent and safe to retry.
|
|
165
|
+
#
|
|
166
|
+
# @param id [String] Instance ID (UUID).
|
|
167
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
168
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
169
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
170
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
171
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
172
|
+
def clear_instance_session(id, idempotency_key: nil, timeout: nil)
|
|
173
|
+
request("POST",
|
|
174
|
+
"/instances/#{segment(id, "id")}/clear-session",
|
|
175
|
+
idempotency_key: idempotency_key,
|
|
176
|
+
timeout: timeout)
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
# Archive (deactivate) a number, keeping its history. `POST /instances/{id}/archive`
|
|
180
|
+
#
|
|
181
|
+
# Ends the live session (best effort) and takes the number out of the active list, rotation and
|
|
182
|
+
# reconnect. History is preserved; reactivate with `/unarchive`. Use this instead of DELETE for
|
|
183
|
+
# numbers with message history.
|
|
184
|
+
#
|
|
185
|
+
# @param id [String] Instance ID (UUID).
|
|
186
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
187
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
188
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
189
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
190
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
191
|
+
def archive_instance(id, idempotency_key: nil, timeout: nil)
|
|
192
|
+
request("POST",
|
|
193
|
+
"/instances/#{segment(id, "id")}/archive",
|
|
194
|
+
idempotency_key: idempotency_key,
|
|
195
|
+
timeout: timeout)
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
# Reactivate an archived number (comes back disconnected). `POST /instances/{id}/unarchive`
|
|
199
|
+
#
|
|
200
|
+
# @param id [String] Instance ID (UUID).
|
|
201
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
202
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
203
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
204
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
205
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
206
|
+
def unarchive_instance(id, idempotency_key: nil, timeout: nil)
|
|
207
|
+
request("POST",
|
|
208
|
+
"/instances/#{segment(id, "id")}/unarchive",
|
|
209
|
+
idempotency_key: idempotency_key,
|
|
210
|
+
timeout: timeout)
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
# The WhatsApp Business (Cloud API) account connected to the project. `GET /official/account`
|
|
214
|
+
#
|
|
215
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
216
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
217
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
218
|
+
def get_official_account(timeout: nil)
|
|
219
|
+
request("GET", "/official/account", timeout: timeout)
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
# Connect a WhatsApp Business account to the project (manual credentials). `POST
|
|
223
|
+
# /official/account`
|
|
224
|
+
#
|
|
225
|
+
# Manual connection with credentials (support fallback for the Embedded Signup). The access
|
|
226
|
+
# token is stored encrypted and never returned.
|
|
227
|
+
#
|
|
228
|
+
# @param waba_id [String] (corpo)
|
|
229
|
+
# @param phone_number_id [String] (corpo)
|
|
230
|
+
# @param access_token [String] (corpo)
|
|
231
|
+
# @param display_number [String, nil] (corpo)
|
|
232
|
+
# @param verified_name [String, nil] (corpo)
|
|
233
|
+
# @param status [String, nil] (corpo) Initial status. Omit for PENDENTE.
|
|
234
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
235
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
236
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
237
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
238
|
+
def connect_official_account(waba_id:, phone_number_id:, access_token:,
|
|
239
|
+
display_number: UNSET, verified_name: UNSET, status: UNSET,
|
|
240
|
+
idempotency_key: nil, timeout: nil)
|
|
241
|
+
payload = compact(
|
|
242
|
+
"waba_id" => waba_id,
|
|
243
|
+
"phone_number_id" => phone_number_id,
|
|
244
|
+
"access_token" => access_token,
|
|
245
|
+
"display_number" => display_number,
|
|
246
|
+
"verified_name" => verified_name,
|
|
247
|
+
"status" => status
|
|
248
|
+
)
|
|
249
|
+
request("POST",
|
|
250
|
+
"/official/account",
|
|
251
|
+
body: payload,
|
|
252
|
+
idempotency_key: idempotency_key,
|
|
253
|
+
timeout: timeout)
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
# Disconnect the project's WhatsApp Business account. `DELETE /official/account`
|
|
257
|
+
#
|
|
258
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
259
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
260
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
261
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
262
|
+
def disconnect_official_account(idempotency_key: nil, timeout: nil)
|
|
263
|
+
request("DELETE", "/official/account", idempotency_key: idempotency_key, timeout: timeout)
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
# Set the instance proxy (network / IP isolation). `PATCH /instances/{id}/proxy`
|
|
267
|
+
#
|
|
268
|
+
# @param id [String] Instance ID (UUID).
|
|
269
|
+
# @param proxy_url [String] (corpo) Proxy URL (empty removes it).
|
|
270
|
+
# @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
|
|
271
|
+
# @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
|
|
272
|
+
# @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
|
|
273
|
+
# @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
|
|
274
|
+
# @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
|
|
275
|
+
def set_instance_proxy(id, proxy_url:, idempotency_key: nil, timeout: nil)
|
|
276
|
+
payload = compact(
|
|
277
|
+
"proxy_url" => proxy_url
|
|
278
|
+
)
|
|
279
|
+
request("PATCH",
|
|
280
|
+
"/instances/#{segment(id, "id")}/proxy",
|
|
281
|
+
body: payload,
|
|
282
|
+
idempotency_key: idempotency_key,
|
|
283
|
+
timeout: timeout)
|
|
284
|
+
end
|
|
285
|
+
end
|
|
286
|
+
end
|
|
287
|
+
end
|