@agenus-io/webhook-centralizer 1.0.26 → 1.0.27

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.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Webhook Centralizer SDK
2
2
 
3
- SDK para centralização de webhooks focado atualmente em plataformas de pagamentos.
3
+ SDK para gerenciamento de plataformas de webhook e centralização de eventos de plataformas de pagamento.
4
4
 
5
5
  ## Instalação
6
6
 
@@ -14,10 +14,12 @@ pnpm add @agenus-io/webhook-centralizer
14
14
 
15
15
  ## Funcionalidades
16
16
 
17
- Este SDK fornece funcionalidades para centralização de webhooks de plataformas de pagamentos, permitindo:
17
+ Este SDK fornece funcionalidades para gerenciar plataformas de webhook e centralizar eventos de plataformas de pagamento, permitindo:
18
18
 
19
- 1. **Gerenciamento de Configurações**: CRUD completo de configurações de webhooks
20
- 2. **Processamento de Webhooks**: Recebimento e processamento de webhooks de plataformas de pagamento via AWS SQS
19
+ 1. **Gerenciamento de Plataformas**: CRUD completo de plataformas de webhook
20
+ 2. **Consulta de Webhooks**: Listagem e consulta de webhooks processados
21
+ 3. **KPIs**: Métricas de aceitação e rejeição de webhooks
22
+ 4. **Configurações**: Consulta de configurações disponíveis de plataformas
21
23
 
22
24
  ## Uso
23
25
 
@@ -25,325 +27,502 @@ Este SDK fornece funcionalidades para centralização de webhooks de plataformas
25
27
 
26
28
  ```typescript
27
29
  import { WebhookCentralizerSDK } from "@agenus-io/webhook-centralizer";
28
- import type { AWSConfig, Order } from "@agenus-io/webhook-centralizer";
29
-
30
- // Configure o SDK com suas credenciais AWS e credenciais da aplicação
31
- const config: AWSConfig = {
32
- region: "us-east-1",
33
- accessKeyId: process.env.AWS_ACCESS_KEY_ID!,
34
- secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!,
35
- queueUrl: process.env.QUEUE_SALES_URL!,
36
- };
37
30
 
31
+ // Configure o SDK com suas credenciais da aplicação
38
32
  const appId = process.env.APP_ID!;
39
33
  const appToken = process.env.APP_TOKEN!;
34
+ const environment = process.env.NODE_ENV === "production" ? "production" : "develop";
40
35
 
41
- const sdk = new WebhookCentralizerSDK(config, appId, appToken);
36
+ const sdk = new WebhookCentralizerSDK(appId, appToken, environment);
42
37
  ```
43
38
 
44
- ### 1. Processar Webhook de Pagamento
39
+ ### 1. Criar Plataforma de Webhook
45
40
 
46
41
  ```typescript
47
- const order: Order = {
48
- dispatch: "META", // "META", "GOOGLE" ou "TIKTOK"
49
- event: "PURCHASE_COMPLETED", // ou "PURCHASE_PENDING"
50
- checkout: "cartpanda",
51
- orderId: "ORD-123456",
52
- subscriptionId: "SUB-789012", // opcional
53
- currency: "BRL",
54
- valueGross: 347.0,
55
- valueNet: 329.9,
56
- createdAt: new Date(),
57
-
58
- // Pixel IDs (opcional, dependendo da plataforma)
59
- fbc: "fb.1.1733718123.uYhGtFdSLoPqWeRtYuIo", // Meta/Facebook
60
- fbp: "fb.1.1733718123.4455667788", // Meta/Facebook
61
- fbclid: "fbclid-value", // Meta/Facebook
62
- gclid: "Cj0KCQi...", // Google
63
- gbraid: "gbraid-value", // Google
64
- wbraid: "wbraid-value", // Google
65
-
66
- customer: {
67
- email: "cliente@example.com",
68
- externalId: "USR-123", // opcional
69
- firstName: "João",
70
- lastName: "Silva",
71
- phone: "+55 11 99999-9999", // opcional
72
- city: "São Paulo", // opcional
73
- state: "SP", // opcional
74
- zipCode: "01310-100", // opcional
75
- country: "BR", // opcional
76
- ip: "189.45.201.77", // opcional
77
- userAgent: "Mozilla/5.0...", // opcional
42
+ import { WebhookCentralizerPlatformEnum, WebhookPlatformRoleEnum } from "@agenus-io/webhook-centralizer";
43
+
44
+ const result = await sdk.Create({
45
+ workSpaceId: "workspace-123",
46
+ title: "Plataforma Hotmart",
47
+ type: WebhookCentralizerPlatformEnum.HOTMART,
48
+ role: WebhookPlatformRoleEnum.PRODUCER,
49
+ platformToken: "token-da-plataforma", // opcional
50
+ apiToken: "api-token", // opcional
51
+ slug: "hotmart-slug", // opcional
52
+ meta: { // opcional
53
+ customField: "value"
78
54
  },
79
-
80
- products: [
81
- {
82
- id: "PROD-001",
83
- title: "Produto 1",
84
- externalId: "EXT-001",
85
- quantity: 2,
86
- },
87
- {
88
- id: "PROD-002",
89
- title: "Produto 2",
90
- externalId: "EXT-002",
91
- quantity: 1,
92
- },
93
- ],
94
- };
55
+ });
95
56
 
96
- try {
97
- await sdk.SendOrder({
98
- workspaceId: "workspace-123",
99
- order,
100
- });
101
- console.log("Venda enviada com sucesso!");
102
- } catch (error) {
103
- console.error("Erro ao enviar venda:", error);
57
+ if (result.isError) {
58
+ console.error("Erro ao criar plataforma:", result.error);
59
+ } else {
60
+ console.log("Plataforma criada com sucesso! ID:", result.id);
104
61
  }
105
62
  ```
106
63
 
107
- ### 2. Gerenciar Configurações de Webhooks
64
+ ### 2. Listar Plataformas
108
65
 
109
- #### Criar Configuração de Webhook
66
+ ```typescript
67
+ const result = await sdk.Get({
68
+ workSpaceId: "workspace-123",
69
+ page: 1,
70
+ pageSize: 10,
71
+ filter: undefined, // opcional - filtro de busca
72
+ });
73
+
74
+ console.log(result.data); // Array de plataformas
75
+ console.log(result.meta); // Metadados de paginação
76
+ // {
77
+ // total: 50,
78
+ // totalPages: 5,
79
+ // page: 1,
80
+ // pageSize: 10
81
+ // }
82
+ ```
83
+
84
+ ### 3. Buscar Plataforma por ID
110
85
 
111
86
  ```typescript
112
- await sdk.Create({
113
- workspaceId: "workspace-123",
114
- data: {
115
- title: "Pixel Meta",
116
- status: true,
117
- sendLead: true,
118
- sendLeadText: "Lead capturado",
119
- addToCart: true,
120
- addToCartText: "Produto adicionado ao carrinho",
121
- initiateCheckout: true,
122
- initiateCheckoutDetection: "AUTOMATIC",
123
- initiateCheckoutDetectionText: undefined,
124
- purchaseSendType: "SALES_APPROVED",
125
- purchaseValueType: "SALE_VALUE",
126
- type: "META",
127
- productIds: ["prod-1", "prod-2"],
128
- sendIp: "IPV6_AND_IPV4",
129
- pixelMeta: [
130
- {
131
- id: "pixel-id-123",
132
- title: "Pixel Principal",
133
- token: "pixel-token-123",
134
- },
135
- ],
136
- },
87
+ const result = await sdk.GetById({
88
+ id: "platform-id-123",
89
+ workSpaceId: "workspace-123",
137
90
  });
91
+
92
+ if (result.isError) {
93
+ console.error("Erro ao buscar plataforma:", result.error);
94
+ } else {
95
+ console.log("Plataforma encontrada:", result.data);
96
+ }
138
97
  ```
139
98
 
140
- #### Listar Configurações de Webhooks
99
+ ### 4. Buscar Plataforma por Título
141
100
 
142
101
  ```typescript
143
- const result = await sdk.Get({
102
+ const result = await sdk.GetByTitle({
103
+ title: "Plataforma Hotmart",
104
+ workSpaceId: "workspace-123",
105
+ });
106
+
107
+ console.log("Plataforma encontrada:", result);
108
+ ```
109
+
110
+ ### 5. Atualizar Plataforma
111
+
112
+ ```typescript
113
+ const result = await sdk.Update({
114
+ id: "platform-id-123",
115
+ workSpaceId: "workspace-123",
116
+ title: "Plataforma Atualizada", // opcional
117
+ platformToken: "novo-token", // opcional
118
+ // Apenas os campos que deseja atualizar
119
+ });
120
+
121
+ if (result.isError) {
122
+ console.error("Erro ao atualizar plataforma:", result.error);
123
+ } else {
124
+ console.log("Plataforma atualizada com sucesso!");
125
+ }
126
+ ```
127
+
128
+ ### 6. Deletar Plataforma
129
+
130
+ ```typescript
131
+ const result = await sdk.Delete({
132
+ id: "platform-id-123",
133
+ workSpaceId: "workspace-123",
134
+ });
135
+
136
+ if (result.isError) {
137
+ console.error("Erro ao deletar plataforma:", result.error);
138
+ } else {
139
+ console.log("Plataforma deletada com sucesso!");
140
+ }
141
+ ```
142
+
143
+ ### 7. Listar Webhooks de uma Plataforma
144
+
145
+ ```typescript
146
+ import { WebhookCentralizerStatusEnum } from "@agenus-io/webhook-centralizer";
147
+
148
+ const result = await sdk.GetWebhooks({
149
+ id: "platform-id-123",
144
150
  workSpaceId: "workspace-123",
145
151
  page: 1,
146
152
  pageSize: 10,
147
153
  filter: undefined, // opcional
154
+ status: WebhookCentralizerStatusEnum.COMPLETED, // opcional - filtrar por status
148
155
  });
149
156
 
150
- console.log(result.data); // Array de configurações de webhooks
157
+ console.log(result.data); // Array de webhooks
151
158
  console.log(result.meta); // Metadados de paginação
152
159
  ```
153
160
 
154
- #### Buscar uma Configuração de Webhook Específica
161
+ ### 8. Buscar Webhook por ID
155
162
 
156
163
  ```typescript
157
- const result = await sdk.GetOne({
158
- id: "pixel-id-123",
164
+ const result = await sdk.GetWebhookById({
165
+ id: "webhook-id-123",
159
166
  workSpaceId: "workspace-123",
160
167
  });
161
168
 
162
- console.log(result.data); // Dados da configuração de webhook ou null
169
+ if (result.isError) {
170
+ console.error("Erro ao buscar webhook:", result.error);
171
+ } else {
172
+ console.log("Webhook encontrado:", result.data);
173
+ }
163
174
  ```
164
175
 
165
- #### Atualizar Configuração de Webhook
176
+ ### 9. Consultar Configurações de Plataformas Disponíveis
166
177
 
167
178
  ```typescript
168
- await sdk.Update({
169
- id: "pixel-id-123",
170
- workspaceId: "workspace-123",
171
- data: {
172
- title: "Pixel Atualizado",
173
- status: false,
174
- // Apenas os campos que deseja atualizar
175
- },
176
- });
179
+ const result = await sdk.GetPlatformSettings();
180
+
181
+ console.log(result.data); // Array de configurações disponíveis
182
+ // Cada configuração contém informações sobre:
183
+ // - Plataformas suportadas
184
+ // - Se tem PostBack
185
+ // - Se tem Token
186
+ // - Se tem Slug
187
+ // - Se tem API
188
+ // - Se está em preparação
177
189
  ```
178
190
 
179
- #### Deletar Configuração de Webhook
191
+ ### 10. Consultar KPIs
180
192
 
181
193
  ```typescript
182
- await sdk.Delete({
183
- id: "pixel-id-123",
184
- workspaceId: "workspace-123",
194
+ import {
195
+ WebhookCentralizerStatusEnum,
196
+ WebhookCentralizerEventEnum
197
+ } from "@agenus-io/webhook-centralizer";
198
+
199
+ const result = await sdk.Kpi({
200
+ id: "platform-id-123",
201
+ workSpaceId: "workspace-123",
202
+ status: [
203
+ WebhookCentralizerStatusEnum.COMPLETED,
204
+ WebhookCentralizerStatusEnum.PROCESSING
205
+ ],
206
+ event: [
207
+ WebhookCentralizerEventEnum.PURCHASE_CONFIRMED,
208
+ WebhookCentralizerEventEnum.PURCHASE_PENDING
209
+ ],
185
210
  });
211
+
212
+ console.log("Total:", result.total);
213
+ console.log("Aceitos:", result.amountAccepted);
214
+ console.log("Rejeitados:", result.amountRejected);
186
215
  ```
187
216
 
188
217
  ## Tipos Exportados
189
218
 
190
- ### `MarketingPlatform`
219
+ ### `webhookCentralizerPlatform`
220
+ Plataformas de pagamento suportadas:
191
221
  ```typescript
192
- type MarketingPlatform = "GOOGLE" | "META" | "TIKTOK";
222
+ type webhookCentralizerPlatform =
223
+ | "BEMONY"
224
+ | "B4YOU"
225
+ | "BRAIP"
226
+ | "CARTPANDA"
227
+ | "NUTRALINK"
228
+ | "HOTMART"
229
+ | "KIRVANO"
230
+ | "KIWIFY"
231
+ | "LAST_LINK"
232
+ | "PAYT"
233
+ | "DIGISTORE";
193
234
  ```
194
235
 
195
- ### `PurchaseEventType`
236
+ ### `webhookCentralizerEvent`
237
+ Eventos de webhook suportados:
196
238
  ```typescript
197
- type PurchaseEventType = "PURCHASE_PENDING" | "PURCHASE_COMPLETED";
239
+ type webhookCentralizerEvent =
240
+ | "ABANDONED_CART"
241
+ | "PURCHASE_UPSELL"
242
+ | "PURCHASE_CONFIRMED"
243
+ | "PURCHASE_PENDING"
244
+ | "PURCHASE_EXPIRED"
245
+ | "PURCHASE_CANCELED"
246
+ | "PURCHASE_SHIPPED"
247
+ | "PURCHASE_REFUND"
248
+ | "PURCHASE_UPDATED"
249
+ | "PURCHASE_CHARGEBACK"
250
+ | "SUBSCRIPTION_INITIATED"
251
+ | "SUBSCRIPTION_RENEWAL"
252
+ | "SUBSCRIPTION_RENEWAL_PENDING"
253
+ | "SUBSCRIPTION_UPDATED"
254
+ | "SUBSCRIPTION_CANCELED"
255
+ | "SUBSCRIPTION_EXPIRED"
256
+ | "SUBSCRIPTION_RENEWAL_CANCELLED"
257
+ | "SUBSCRIPTION_RENEWAL_RESUMED"
258
+ | "REJECTED"
259
+ | "UNKNOWN";
198
260
  ```
199
261
 
200
- ### `PurchaseSendType`
262
+ ### `webhookCentralizerOrderStatus`
263
+ Status de pedidos:
201
264
  ```typescript
202
- type PurchaseSendType = "SALES_APPROVED" | "SALES_APPROVED_AND_PENDING";
265
+ type webhookCentralizerOrderStatus =
266
+ | "PENDING"
267
+ | "PROCESSING"
268
+ | "COMPLETED"
269
+ | "FAILED";
203
270
  ```
204
271
 
205
- ### `PurchaseValueType`
272
+ ### `webhookCentralizerDispatchType`
273
+ Tipo de despacho:
206
274
  ```typescript
207
- type PurchaseValueType = "SALE_VALUE" | "COMMISSION";
275
+ type webhookCentralizerDispatchType = "WEBHOOK" | "POST_BACK";
208
276
  ```
209
277
 
210
- ### `PixelDetection`
278
+ ### `webhookPlatformRole`
279
+ Papel da plataforma:
211
280
  ```typescript
212
- type PixelDetection = "AUTOMATIC" | "CONTAINS_TEXT" | "CONTAINS_CSS" | "CONTAINS_URL";
281
+ type webhookPlatformRole = "PRODUCER" | "CO_PRODUCER" | "AFFILIATE";
213
282
  ```
214
283
 
215
- ### `SendIp`
284
+ ### Enums Disponíveis
285
+
286
+ O SDK exporta enums para facilitar o uso:
287
+
216
288
  ```typescript
217
- type SendIp = "IPV6_AND_IPV4" | "ONLY_IPV6" | "DONT_SEND";
289
+ import {
290
+ WebhookCentralizerPlatformEnum,
291
+ WebhookCentralizerEventEnum,
292
+ WebhookCentralizerStatusEnum,
293
+ WebhookCentralizerDispatchTypeEnum,
294
+ WebhookPlatformRoleEnum,
295
+ } from "@agenus-io/webhook-centralizer";
296
+
297
+ // Exemplo de uso
298
+ const platform = WebhookCentralizerPlatformEnum.HOTMART;
299
+ const event = WebhookCentralizerEventEnum.PURCHASE_CONFIRMED;
300
+ const status = WebhookCentralizerStatusEnum.COMPLETED;
218
301
  ```
219
302
 
220
- ### `Order`
221
- Estrutura completa de dados da venda (veja exemplo acima).
303
+ ### Tipos de Dados Centralizados
222
304
 
223
- ### `AWSConfig`
224
- Configuração necessária para conexão com AWS SQS:
225
- - `region`: string - Região AWS
226
- - `accessKeyId`: string - Access Key ID
227
- - `secretAccessKey`: string - Secret Access Key
228
- - `queueUrl`: string - URL da fila SQS
305
+ O SDK também exporta tipos para estruturas de dados centralizadas:
229
306
 
230
- ### `SendSaleParams`
231
- Parâmetros para envio de venda:
232
- - `workspaceId`: string - ID do workspace
233
- - `order`: Order - Dados da venda/pedido
307
+ ```typescript
308
+ import type {
309
+ ICentralizedSaleDTO,
310
+ ICentralizedSubscriptionDTO,
311
+ ICentralizedAbandonedCartDTO,
312
+ } from "@agenus-io/webhook-centralizer";
313
+ ```
234
314
 
235
315
  ## Variáveis de Ambiente
236
316
 
237
- As credenciais AWS e da aplicação devem ser fornecidas ao instanciar o SDK. Recomendamos usar variáveis de ambiente:
317
+ As credenciais da aplicação devem ser fornecidas ao instanciar o SDK. Recomendamos usar variáveis de ambiente:
238
318
 
239
319
  ```env
240
- AWS_REGION=us-east-1
241
- AWS_ACCESS_KEY_ID=AKIA...
242
- AWS_SECRET_ACCESS_KEY=secret...
243
- QUEUE_SALES_URL=https://sqs.us-east-1.amazonaws.com/123456789012/queue-name
244
320
  APP_ID=your-app-id
245
321
  APP_TOKEN=your-app-token
322
+ NODE_ENV=production # ou develop
246
323
  ```
247
324
 
248
325
  ## Exemplo Completo
249
326
 
250
327
  ```typescript
251
- import { WebhookCentralizerSDK } from "@agenus-io/webhook-centralizer";
252
- import type { AWSConfig, Order } from "@agenus-io/webhook-centralizer";
328
+ import {
329
+ WebhookCentralizerSDK,
330
+ WebhookCentralizerPlatformEnum,
331
+ WebhookPlatformRoleEnum,
332
+ WebhookCentralizerStatusEnum,
333
+ WebhookCentralizerEventEnum,
334
+ } from "@agenus-io/webhook-centralizer";
253
335
 
254
336
  // 1. Configurar SDK
255
- const config: AWSConfig = {
256
- region: process.env.AWS_REGION!,
257
- accessKeyId: process.env.AWS_ACCESS_KEY_ID!,
258
- secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!,
259
- queueUrl: process.env.QUEUE_SALES_URL!,
260
- };
261
-
262
337
  const sdk = new WebhookCentralizerSDK(
263
- config,
264
338
  process.env.APP_ID!,
265
- process.env.APP_TOKEN!
339
+ process.env.APP_TOKEN!,
340
+ process.env.NODE_ENV === "production" ? "production" : "develop"
266
341
  );
267
342
 
268
- // 2. Mapear venda do seu sistema para o formato do SDK
269
- function mapOrderToSDKFormat(order: YourOrderType): Order {
270
- return {
271
- dispatch: order.platform, // "META", "GOOGLE", ou "TIKTOK"
272
- event: order.status === "completed" ? "PURCHASE_COMPLETED" : "PURCHASE_PENDING",
273
- checkout: order.checkoutProvider,
274
- orderId: order.id,
275
- currency: order.currency,
276
- valueGross: order.total,
277
- valueNet: order.subtotal,
278
- createdAt: order.createdAt,
279
- customer: {
280
- email: order.customer.email,
281
- firstName: order.customer.firstName,
282
- lastName: order.customer.lastName,
283
- phone: order.customer.phone,
284
- // ... outros campos opcionais
285
- },
286
- products: order.items.map(item => ({
287
- id: item.productId,
288
- title: item.title,
289
- externalId: item.externalId,
290
- quantity: item.quantity,
291
- })),
292
- };
293
- }
343
+ // 2. Criar uma nova plataforma
344
+ async function criarPlataforma() {
345
+ const result = await sdk.Create({
346
+ workSpaceId: "workspace-123",
347
+ title: "Minha Plataforma Hotmart",
348
+ type: WebhookCentralizerPlatformEnum.HOTMART,
349
+ role: WebhookPlatformRoleEnum.PRODUCER,
350
+ platformToken: "token-da-plataforma",
351
+ });
294
352
 
295
- // 3. Enviar venda
296
- async function handleOrderCompleted(order: YourOrderType, workspaceId: string) {
297
- const orderData = mapOrderToSDKFormat(order);
298
-
299
- try {
300
- await sdk.SendOrder({
301
- workspaceId,
302
- order: orderData,
303
- });
304
- console.log(`Venda ${order.id} enviada com sucesso!`);
305
- } catch (error) {
306
- console.error(`Erro ao enviar venda ${order.id}:`, error);
307
- // Implemente sua lógica de retry ou notificação aqui
353
+ if (result.isError) {
354
+ console.error("Erro:", result.error);
355
+ return;
308
356
  }
357
+
358
+ console.log("Plataforma criada com ID:", result.id);
359
+ return result.id;
309
360
  }
310
361
 
311
- // 4. Exemplo de uso completo com gerenciamento de pixels
362
+ // 3. Listar todas as plataformas
363
+ async function listarPlataformas(workSpaceId: string) {
364
+ const result = await sdk.Get({
365
+ workSpaceId,
366
+ page: 1,
367
+ pageSize: 10,
368
+ });
369
+
370
+ console.log(`Total de plataformas: ${result.meta.total}`);
371
+ result.data.forEach(platform => {
372
+ console.log(`- ${platform.title} (${platform.type})`);
373
+ console.log(` Aceitos: ${platform.amountAccepted}, Rejeitados: ${platform.amountRejected}`);
374
+ });
375
+ }
376
+
377
+ // 4. Consultar webhooks de uma plataforma
378
+ async function consultarWebhooks(platformId: string, workSpaceId: string) {
379
+ const result = await sdk.GetWebhooks({
380
+ id: platformId,
381
+ workSpaceId,
382
+ page: 1,
383
+ pageSize: 20,
384
+ status: WebhookCentralizerStatusEnum.COMPLETED,
385
+ });
386
+
387
+ console.log(`Total de webhooks: ${result.meta.total}`);
388
+ result.data.forEach(webhook => {
389
+ console.log(`- ${webhook.event} (${webhook.status}) - ${webhook.code}`);
390
+ });
391
+ }
392
+
393
+ // 5. Consultar KPIs
394
+ async function consultarKPIs(platformId: string, workSpaceId: string) {
395
+ const result = await sdk.Kpi({
396
+ id: platformId,
397
+ workSpaceId,
398
+ status: [
399
+ WebhookCentralizerStatusEnum.COMPLETED,
400
+ WebhookCentralizerStatusEnum.PROCESSING,
401
+ ],
402
+ event: [
403
+ WebhookCentralizerEventEnum.PURCHASE_CONFIRMED,
404
+ WebhookCentralizerEventEnum.PURCHASE_PENDING,
405
+ ],
406
+ });
407
+
408
+ console.log("KPIs da Plataforma:");
409
+ console.log(`Total: ${result.total}`);
410
+ console.log(`Aceitos: ${result.amountAccepted}`);
411
+ console.log(`Rejeitados: ${result.amountRejected}`);
412
+ console.log(`Taxa de sucesso: ${((result.amountAccepted / result.total) * 100).toFixed(2)}%`);
413
+ }
414
+
415
+ // 6. Fluxo completo
312
416
  async function exemploCompleto() {
313
- // Listar configurações de webhooks
314
- const webhooks = await sdk.Get({
417
+ const workSpaceId = "workspace-123";
418
+
419
+ // Listar plataformas existentes
420
+ await listarPlataformas(workSpaceId);
421
+
422
+ // Criar nova plataforma
423
+ const platformId = await criarPlataforma();
424
+
425
+ if (platformId) {
426
+ // Consultar webhooks
427
+ await consultarWebhooks(platformId, workSpaceId);
428
+
429
+ // Consultar KPIs
430
+ await consultarKPIs(platformId, workSpaceId);
431
+ }
432
+ }
433
+ ```
434
+
435
+ ## Tratamento de Erros
436
+
437
+ Todos os métodos que podem retornar erros seguem o padrão:
438
+
439
+ ```typescript
440
+ const result = await sdk.Create({ /* ... */ });
441
+
442
+ if (result.isError) {
443
+ // Tratar erro
444
+ console.error("Erro:", result.error);
445
+ } else {
446
+ // Sucesso
447
+ console.log("ID:", result.id);
448
+ }
449
+ ```
450
+
451
+ Para métodos que lançam exceções (`Get`, `GetByTitle`, `GetWebhooks`), use try/catch:
452
+
453
+ ```typescript
454
+ try {
455
+ const result = await sdk.Get({
315
456
  workSpaceId: "workspace-123",
316
457
  page: 1,
317
458
  pageSize: 10,
318
459
  });
319
-
320
- console.log(`Total de configurações de webhooks: ${webhooks.meta.total}`);
321
-
322
- // Processar um webhook de pagamento
323
- await handleOrderCompleted(myOrder, "workspace-123");
460
+ // Processar resultado
461
+ } catch (error) {
462
+ console.error("Erro ao listar plataformas:", error);
324
463
  }
325
464
  ```
326
465
 
327
- ## Manutenção
466
+ ## Ambientes
328
467
 
329
- Quando houver atualizações no SDK:
468
+ O SDK suporta dois ambientes:
330
469
 
331
- 1. A versão será atualizada no npm
332
- 2. Atualize o pacote nos seus apps: `npm update @agenus-io/webhook-centralizer`
333
- 3. Se houver breaking changes, serão documentados nas release notes
470
+ - **production**: Conecta-se a `https://webhook-centralizer-production.up.railway.app`
471
+ - **develop**: Conecta-se a `https://service-webhook-develop.up.railway.app`
334
472
 
335
- ## Segurança
473
+ O ambiente é definido no construtor:
336
474
 
337
- ⚠️ **IMPORTANTE**: Nunca commite credenciais AWS ou tokens de aplicação no código fonte. Sempre use variáveis de ambiente ou serviços de gerenciamento de segredos (AWS Secrets Manager, etc).
475
+ ```typescript
476
+ const sdk = new WebhookCentralizerSDK(
477
+ appId,
478
+ appToken,
479
+ "production" // ou "develop"
480
+ );
481
+ ```
338
482
 
339
483
  ## API de Webhooks
340
484
 
341
- O SDK se conecta à API de centralização de webhooks hospedada em: `https://micro-service-pixel-production-4826.up.railway.app`
485
+ O SDK se conecta à API de centralização de webhooks hospedada em:
342
486
 
343
- Todas as operações CRUD de configurações de webhooks utilizam autenticação via headers:
487
+ - **Produção**: `https://webhook-centralizer-production.up.railway.app`
488
+ - **Desenvolvimento**: `https://service-webhook-develop.up.railway.app`
489
+
490
+ Todas as operações utilizam autenticação via headers:
344
491
  - `app-id`: ID da aplicação
345
492
  - `app-secret-token`: Token secreto da aplicação
346
- - `work-space-id`: ID do workspace
493
+ - `work-space-id`: ID do workspace (quando aplicável)
494
+
495
+ ## Schemas de Validação
496
+
497
+ O SDK exporta schemas Zod para validação:
498
+
499
+ ```typescript
500
+ import {
501
+ WebhookCentralizerCreatePlatformSchema,
502
+ WebhookCentralizerUpdatePlatformSchema,
503
+ WebhookCentralizerGetPlatformsSchema,
504
+ WebhookCentralizerGetPlatformWebhooksSchema,
505
+ } from "@agenus-io/webhook-centralizer";
506
+
507
+ // Validar dados antes de criar
508
+ const data = WebhookCentralizerCreatePlatformSchema.parse({
509
+ title: "Minha Plataforma",
510
+ type: "HOTMART",
511
+ role: "PRODUCER",
512
+ });
513
+ ```
514
+
515
+ ## Manutenção
516
+
517
+ Quando houver atualizações no SDK:
518
+
519
+ 1. A versão será atualizada no npm
520
+ 2. Atualize o pacote nos seus apps: `npm update @agenus-io/webhook-centralizer`
521
+ 3. Se houver breaking changes, serão documentados nas release notes
522
+
523
+ ## Segurança
524
+
525
+ ⚠️ **IMPORTANTE**: Nunca commite credenciais ou tokens no código fonte. Sempre use variáveis de ambiente ou serviços de gerenciamento de segredos.
347
526
 
348
527
  ## Suporte
349
528
 
@@ -16,6 +16,7 @@ export interface ICentralizedSaleDTO {
16
16
  }
17
17
  export interface ICentralizedAbandonedCartDTO {
18
18
  cart_token?: string;
19
+ cart_url?: string;
19
20
  products: ICentralizedProduct[];
20
21
  value?: number;
21
22
  userAgent?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agenus-io/webhook-centralizer",
3
- "version": "1.0.26",
3
+ "version": "1.0.27",
4
4
  "description": "SDK para centralização de webhooks focado atualmente em plataformas de pagamentos",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",