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,273 @@
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
+ # Campanhas: estimativa, destinatários, simulação e controle — `client.campaigns`.
8
+ class Campaigns < Base
9
+ # List campaigns. `GET /campaigns`
10
+ #
11
+ # @param limit [Integer, nil] (query) Max items.
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_campaigns(limit: nil, timeout: nil)
16
+ query = {
17
+ "limit" => limit
18
+ }
19
+ request("GET", "/campaigns", query: query, timeout: timeout)
20
+ end
21
+
22
+ # Create a campaign. `POST /campaigns`
23
+ #
24
+ # Requires the Pro plan and the Campaigns add-on.
25
+ #
26
+ # @param name [String, nil] (corpo)
27
+ # @param pool_id [String, nil] (corpo) Restrict to a pool (else all project numbers).
28
+ # @param pacing_profile [String, nil] (corpo)
29
+ # @param start_at [Time, String, nil] (corpo) Future start = scheduled campaign.
30
+ # @param variations [Array<Hash>] (corpo)
31
+ # @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
32
+ # @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
33
+ # @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
34
+ # @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
35
+ def create_campaign(variations:, name: UNSET, pool_id: UNSET, pacing_profile: UNSET,
36
+ start_at: UNSET, idempotency_key: nil, timeout: nil)
37
+ payload = compact(
38
+ "name" => name,
39
+ "pool_id" => pool_id,
40
+ "pacing_profile" => pacing_profile,
41
+ "start_at" => start_at,
42
+ "variations" => variations
43
+ )
44
+ request("POST",
45
+ "/campaigns",
46
+ body: payload,
47
+ idempotency_key: idempotency_key,
48
+ timeout: timeout)
49
+ end
50
+
51
+ # Estimate send duration (live). `GET /campaigns/estimate`
52
+ #
53
+ # Given a recipient count and pacing, returns eligible numbers and the estimated duration —
54
+ # powers the builder's real-time panel. No campaign needed.
55
+ #
56
+ # @param recipients [Integer, nil] (query) Number of recipients.
57
+ # @param pacing [String, nil] (query)
58
+ # @param pool_id [String, nil] (query)
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 estimate_campaign(recipients: nil, pacing: nil, pool_id: nil, timeout: nil)
63
+ query = {
64
+ "recipients" => recipients,
65
+ "pacing" => pacing,
66
+ "pool_id" => pool_id
67
+ }
68
+ request("GET", "/campaigns/estimate", query: query, timeout: timeout)
69
+ end
70
+
71
+ # Per-number campaign eligibility (connection + warm-up). `GET /campaigns/eligibility`
72
+ #
73
+ # Same engine the dispatcher uses: which numbers can send campaigns now, the account's anti-ban
74
+ # policy (warm-up days, minimum numbers) and whether a campaign can be started.
75
+ #
76
+ # @param pool_id [String, nil] (query) Restrict to a pool.
77
+ # @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
78
+ # @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
79
+ # @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
80
+ def get_campaign_eligibility(pool_id: nil, timeout: nil)
81
+ query = {
82
+ "pool_id" => pool_id
83
+ }
84
+ request("GET", "/campaigns/eligibility", query: query, timeout: timeout)
85
+ end
86
+
87
+ # Upload the header image. `POST /campaigns/media`
88
+ #
89
+ # Uploads a header image (PNG/JPEG/WebP, up to 5 MB) and returns a public URL to use as the
90
+ # variation media.
91
+ #
92
+ # @param file [String, IO, Pathname] conteúdo do arquivo (bytes), um IO ou o caminho no disco.
93
+ # @param filename [String, nil] nome do arquivo (padrão: o do caminho, senão "file").
94
+ # @param content_type [String, nil] tipo MIME (padrão: application/octet-stream).
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
+ def upload_campaign_media(file:, filename: nil, content_type: nil, idempotency_key: nil,
100
+ timeout: nil)
101
+ request("POST",
102
+ "/campaigns/media",
103
+ multipart: upload("file", file, filename, content_type),
104
+ idempotency_key: idempotency_key,
105
+ timeout: timeout)
106
+ end
107
+
108
+ # Get a campaign with stats and variations. `GET /campaigns/{id}`
109
+ #
110
+ # @param id [String] parâmetro de caminho
111
+ # @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
112
+ # @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
113
+ # @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
114
+ # @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
115
+ def get_campaign(id, timeout: nil)
116
+ request("GET", "/campaigns/#{segment(id, "id")}", timeout: timeout)
117
+ end
118
+
119
+ # Edit a not-yet-started campaign. `PATCH /campaigns/{id}`
120
+ #
121
+ # Updates name, pacing, schedule and (if sent) replaces the variations. Only allowed while
122
+ # draft/scheduled — 409 once started.
123
+ #
124
+ # @param id [String] parâmetro de caminho
125
+ # @param name [String, nil] (corpo)
126
+ # @param pacing_profile [String, nil] (corpo)
127
+ # @param start_at [Time, String, nil] (corpo) Future start = scheduled campaign.
128
+ # @param variations [Array<Hash>, nil] (corpo) When sent (non-empty), REPLACES all variations.
129
+ # @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
130
+ # @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
131
+ # @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
132
+ # @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
133
+ # @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
134
+ def update_campaign(id, name: UNSET, pacing_profile: UNSET, start_at: UNSET,
135
+ variations: UNSET, idempotency_key: nil, timeout: nil)
136
+ payload = compact(
137
+ "name" => name,
138
+ "pacing_profile" => pacing_profile,
139
+ "start_at" => start_at,
140
+ "variations" => variations
141
+ )
142
+ request("PATCH",
143
+ "/campaigns/#{segment(id, "id")}",
144
+ body: payload,
145
+ idempotency_key: idempotency_key,
146
+ timeout: timeout)
147
+ end
148
+
149
+ # List recipients with per-contact delivery. `GET /campaigns/{id}/recipients`
150
+ #
151
+ # @param id [String] parâmetro de caminho
152
+ # @param limit [Integer, nil] (query)
153
+ # @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
154
+ # @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
155
+ # @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
156
+ # @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
157
+ def list_campaign_recipients(id, limit: nil, timeout: nil)
158
+ query = {
159
+ "limit" => limit
160
+ }
161
+ request("GET", "/campaigns/#{segment(id, "id")}/recipients", query: query, timeout: timeout)
162
+ end
163
+
164
+ # Add (or replace) recipients. `POST /campaigns/{id}/recipients`
165
+ #
166
+ # @param id [String] parâmetro de caminho
167
+ # @param recipients [Array<Hash>, nil] (corpo)
168
+ # @param contacts [Hash, nil] (corpo) Map of phone → payload, e.g. {"+5551999198087": {"name":
169
+ # "Vinicius"}}.
170
+ # @param contact_ids [Array<String>, nil] (corpo) Explicitly selected contact ids (only the
171
+ # active ones are added).
172
+ # @param contact_filter [Hash, nil] (corpo) Add every ACTIVE contact matching this filter.
173
+ # @param replace [Boolean, nil] (corpo) Replace the whole recipient list instead of appending
174
+ # (clears first). Only allowed while the campaign is draft/scheduled.
175
+ # @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
176
+ # @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
177
+ # @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
178
+ # @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
179
+ # @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
180
+ def add_campaign_recipients(id, recipients: UNSET, contacts: UNSET, contact_ids: UNSET,
181
+ contact_filter: UNSET, replace: UNSET, idempotency_key: nil,
182
+ timeout: nil)
183
+ payload = compact(
184
+ "recipients" => recipients,
185
+ "contacts" => contacts,
186
+ "contact_ids" => contact_ids,
187
+ "contact_filter" => contact_filter,
188
+ "replace" => replace
189
+ )
190
+ request("POST",
191
+ "/campaigns/#{segment(id, "id")}/recipients",
192
+ body: payload,
193
+ idempotency_key: idempotency_key,
194
+ timeout: timeout)
195
+ end
196
+
197
+ # Start (or schedule) a campaign. `POST /campaigns/{id}/start`
198
+ #
199
+ # @param id [String] parâmetro de caminho
200
+ # @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
201
+ # @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
202
+ # @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
203
+ # @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
204
+ # @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
205
+ def start_campaign(id, idempotency_key: nil, timeout: nil)
206
+ request("POST",
207
+ "/campaigns/#{segment(id, "id")}/start",
208
+ idempotency_key: idempotency_key,
209
+ timeout: timeout)
210
+ end
211
+
212
+ # Pause a campaign. `POST /campaigns/{id}/pause`
213
+ #
214
+ # @param id [String] parâmetro de caminho
215
+ # @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
216
+ # @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
217
+ # @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
218
+ # @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
219
+ # @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
220
+ def pause_campaign(id, idempotency_key: nil, timeout: nil)
221
+ request("POST",
222
+ "/campaigns/#{segment(id, "id")}/pause",
223
+ idempotency_key: idempotency_key,
224
+ timeout: timeout)
225
+ end
226
+
227
+ # Resume a campaign. `POST /campaigns/{id}/resume`
228
+ #
229
+ # @param id [String] parâmetro de caminho
230
+ # @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
231
+ # @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
232
+ # @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
233
+ # @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
234
+ # @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
235
+ def resume_campaign(id, idempotency_key: nil, timeout: nil)
236
+ request("POST",
237
+ "/campaigns/#{segment(id, "id")}/resume",
238
+ idempotency_key: idempotency_key,
239
+ timeout: timeout)
240
+ end
241
+
242
+ # Cancel a campaign. `POST /campaigns/{id}/cancel`
243
+ #
244
+ # @param id [String] parâmetro de caminho
245
+ # @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
246
+ # @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
247
+ # @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
248
+ # @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
249
+ # @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
250
+ def cancel_campaign(id, idempotency_key: nil, timeout: nil)
251
+ request("POST",
252
+ "/campaigns/#{segment(id, "id")}/cancel",
253
+ idempotency_key: idempotency_key,
254
+ timeout: timeout)
255
+ end
256
+
257
+ # Simulate a campaign without sending. `POST /campaigns/{id}/dry-run`
258
+ #
259
+ # @param id [String] parâmetro de caminho
260
+ # @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
261
+ # @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
262
+ # @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
263
+ # @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
264
+ # @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
265
+ def dry_run_campaign(id, idempotency_key: nil, timeout: nil)
266
+ request("POST",
267
+ "/campaigns/#{segment(id, "id")}/dry-run",
268
+ idempotency_key: idempotency_key,
269
+ timeout: timeout)
270
+ end
271
+ end
272
+ end
273
+ end
@@ -0,0 +1,35 @@
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
+ # bZapper Connect do lado do CLIENTE: apps parceiros conectados à conta — `client.connect`.
8
+ class Connect < Base
9
+ # Connected apps — partner software using this account's WhatsApp. `GET /me/connections`
10
+ #
11
+ # @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
12
+ # @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
13
+ # @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
14
+ def list_connected_apps(timeout: nil)
15
+ request("GET", "/me/connections", timeout: timeout)
16
+ end
17
+
18
+ # Disconnect a partner app (admin). The partner's key stops working immediately. `DELETE
19
+ # /me/connections/{id}`
20
+ #
21
+ # @param id [String] Instance ID (UUID).
22
+ # @param idempotency_key [String, nil] chave de idempotência (senão a SDK gera uma).
23
+ # @param timeout [Numeric, nil] segundos por tentativa (padrão: o do cliente).
24
+ # @return [Hash, Array, nil] o JSON da resposta, inteiro (nil em 204).
25
+ # @raise [Bzapper::Error] resposta fora de 2xx ou falha de rede.
26
+ # @raise [ArgumentError] parâmetro de caminho vazio, "." ou "..".
27
+ def revoke_connected_app(id, idempotency_key: nil, timeout: nil)
28
+ request("DELETE",
29
+ "/me/connections/#{segment(id, "id")}",
30
+ idempotency_key: idempotency_key,
31
+ timeout: timeout)
32
+ end
33
+ end
34
+ end
35
+ end