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.
@@ -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