@oficialapi/sdk 1.0.0 → 2.0.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.
- package/README.md +49 -79
- package/dist/index.d.mts +225 -103
- package/dist/index.d.ts +225 -103
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,17 +1,6 @@
|
|
|
1
1
|
# OficialAPI SDK
|
|
2
2
|
|
|
3
|
-
SDK oficial da OficialAPI para integração
|
|
4
|
-
|
|
5
|
-
## 🚀 Características
|
|
6
|
-
|
|
7
|
-
- ✅ **100% TypeScript** - Tipos completos e IntelliSense
|
|
8
|
-
- ✅ **Autenticação Automática** - Renovação automática de tokens
|
|
9
|
-
- ✅ **Retry Inteligente** - Retry automático em caso de falhas
|
|
10
|
-
- ✅ **Tratamento de Erros** - Erros formatados e informativos
|
|
11
|
-
- ✅ **Fácil de Usar** - API intuitiva e bem documentada
|
|
12
|
-
- ✅ **Robusto** - Testado e pronto para produção
|
|
13
|
-
- ✅ **Rápido** - Otimizado para performance
|
|
14
|
-
- ✅ **Seguro** - Validação e sanitização de dados
|
|
3
|
+
SDK oficial da OficialAPI para integração.
|
|
15
4
|
|
|
16
5
|
## 📦 Instalação
|
|
17
6
|
|
|
@@ -37,6 +26,15 @@ const sdk = new OficialAPISDK({
|
|
|
37
26
|
});
|
|
38
27
|
```
|
|
39
28
|
|
|
29
|
+
## 🔐 Autenticação
|
|
30
|
+
|
|
31
|
+
Obtenha o token de acesso e passe-o em cada chamada ao SDK:
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
const tokenResponse = await sdk.auth.getToken('client-id', 'client-secret');
|
|
35
|
+
const accessToken = tokenResponse.access_token;
|
|
36
|
+
```
|
|
37
|
+
|
|
40
38
|
## 📚 Exemplos de Uso
|
|
41
39
|
|
|
42
40
|
### WhatsApp
|
|
@@ -48,7 +46,7 @@ const result = await sdk.whatsapp.sendText({
|
|
|
48
46
|
token: 'sk_live_9999999999999999999999999999',
|
|
49
47
|
sender: '5511999999999',
|
|
50
48
|
messageText: 'Olá! Como posso ajudar você hoje?'
|
|
51
|
-
});
|
|
49
|
+
}, accessToken);
|
|
52
50
|
|
|
53
51
|
console.log(result.data.messageId);
|
|
54
52
|
```
|
|
@@ -62,7 +60,7 @@ await sdk.whatsapp.sendMedia({
|
|
|
62
60
|
fileUrl: 'https://example.com/image.jpg',
|
|
63
61
|
type: 'image',
|
|
64
62
|
caption: 'Veja esta imagem!'
|
|
65
|
-
});
|
|
63
|
+
}, accessToken);
|
|
66
64
|
```
|
|
67
65
|
|
|
68
66
|
#### Enviar Template
|
|
@@ -81,7 +79,7 @@ await sdk.whatsapp.sendTemplate({
|
|
|
81
79
|
]
|
|
82
80
|
}
|
|
83
81
|
]
|
|
84
|
-
});
|
|
82
|
+
}, accessToken);
|
|
85
83
|
```
|
|
86
84
|
|
|
87
85
|
#### Enviar Botões
|
|
@@ -107,7 +105,7 @@ await sdk.whatsapp.sendButtons({
|
|
|
107
105
|
}
|
|
108
106
|
}
|
|
109
107
|
]
|
|
110
|
-
});
|
|
108
|
+
}, accessToken);
|
|
111
109
|
```
|
|
112
110
|
|
|
113
111
|
#### Enviar Lista Interativa
|
|
@@ -135,7 +133,7 @@ await sdk.whatsapp.sendList({
|
|
|
135
133
|
]
|
|
136
134
|
}
|
|
137
135
|
]
|
|
138
|
-
});
|
|
136
|
+
}, accessToken);
|
|
139
137
|
```
|
|
140
138
|
|
|
141
139
|
#### Enviar Contato
|
|
@@ -160,7 +158,7 @@ await sdk.whatsapp.sendContact({
|
|
|
160
158
|
]
|
|
161
159
|
}
|
|
162
160
|
]
|
|
163
|
-
});
|
|
161
|
+
}, accessToken);
|
|
164
162
|
```
|
|
165
163
|
|
|
166
164
|
#### Enviar Localização
|
|
@@ -173,7 +171,7 @@ await sdk.whatsapp.sendLocation({
|
|
|
173
171
|
longitude: -46.6333,
|
|
174
172
|
name: 'São Paulo',
|
|
175
173
|
address: 'São Paulo, SP, Brasil'
|
|
176
|
-
});
|
|
174
|
+
}, accessToken);
|
|
177
175
|
```
|
|
178
176
|
|
|
179
177
|
#### Enviar Áudio
|
|
@@ -183,7 +181,7 @@ await sdk.whatsapp.sendAudio({
|
|
|
183
181
|
token: 'sk_live_...',
|
|
184
182
|
sender: '5511999999999',
|
|
185
183
|
audioUrl: 'https://example.com/audio.ogg'
|
|
186
|
-
});
|
|
184
|
+
}, accessToken);
|
|
187
185
|
```
|
|
188
186
|
|
|
189
187
|
#### Enviar Vídeo
|
|
@@ -194,7 +192,7 @@ await sdk.whatsapp.sendVideo({
|
|
|
194
192
|
sender: '5511999999999',
|
|
195
193
|
videoUrl: 'https://example.com/video.mp4',
|
|
196
194
|
caption: 'Veja este vídeo!'
|
|
197
|
-
});
|
|
195
|
+
}, accessToken);
|
|
198
196
|
```
|
|
199
197
|
|
|
200
198
|
#### Enviar Documento
|
|
@@ -206,7 +204,7 @@ await sdk.whatsapp.sendDocument({
|
|
|
206
204
|
documentUrl: 'https://example.com/document.pdf',
|
|
207
205
|
filename: 'documento.pdf',
|
|
208
206
|
caption: 'Aqui está o documento'
|
|
209
|
-
});
|
|
207
|
+
}, accessToken);
|
|
210
208
|
```
|
|
211
209
|
|
|
212
210
|
#### Enviar Pedido com Opções de Pagamento
|
|
@@ -236,17 +234,17 @@ await sdk.whatsapp.sendOrderDetails({
|
|
|
236
234
|
name: 'Cartão de Crédito'
|
|
237
235
|
}
|
|
238
236
|
]
|
|
239
|
-
});
|
|
237
|
+
}, accessToken);
|
|
240
238
|
```
|
|
241
239
|
|
|
242
240
|
#### Gerenciar Templates
|
|
243
241
|
|
|
244
242
|
```typescript
|
|
245
243
|
// Listar templates
|
|
246
|
-
const templates = await sdk.whatsapp.listTemplates('sk_live_...');
|
|
244
|
+
const templates = await sdk.whatsapp.listTemplates('sk_live_...', accessToken);
|
|
247
245
|
|
|
248
246
|
// Obter detalhes de um template
|
|
249
|
-
const template = await sdk.whatsapp.getTemplate('sk_live_...', 'template_id');
|
|
247
|
+
const template = await sdk.whatsapp.getTemplate('sk_live_...', 'template_id', accessToken);
|
|
250
248
|
|
|
251
249
|
// Criar template
|
|
252
250
|
await sdk.whatsapp.createTemplate({
|
|
@@ -260,7 +258,7 @@ await sdk.whatsapp.createTemplate({
|
|
|
260
258
|
text: 'Olá {{1}}! Bem-vindo ao nosso serviço.'
|
|
261
259
|
}
|
|
262
260
|
]
|
|
263
|
-
});
|
|
261
|
+
}, accessToken);
|
|
264
262
|
|
|
265
263
|
// Upload de mídia para template
|
|
266
264
|
const file = new File(['...'], 'image.jpg', { type: 'image/jpeg' });
|
|
@@ -268,7 +266,7 @@ await sdk.whatsapp.uploadMedia({
|
|
|
268
266
|
token: 'sk_live_...',
|
|
269
267
|
file: file,
|
|
270
268
|
filename: 'image.jpg'
|
|
271
|
-
});
|
|
269
|
+
}, accessToken);
|
|
272
270
|
```
|
|
273
271
|
|
|
274
272
|
### Telegram
|
|
@@ -281,7 +279,7 @@ await sdk.telegram.sendMessage({
|
|
|
281
279
|
chatId: '123456789',
|
|
282
280
|
text: 'Olá! Como posso ajudar?',
|
|
283
281
|
parseMode: 'HTML'
|
|
284
|
-
});
|
|
282
|
+
}, accessToken);
|
|
285
283
|
```
|
|
286
284
|
|
|
287
285
|
#### Enviar Mídia
|
|
@@ -293,7 +291,7 @@ await sdk.telegram.sendMedia({
|
|
|
293
291
|
fileUrl: 'https://example.com/image.jpg',
|
|
294
292
|
type: 'photo',
|
|
295
293
|
caption: 'Veja esta imagem!'
|
|
296
|
-
});
|
|
294
|
+
}, accessToken);
|
|
297
295
|
```
|
|
298
296
|
|
|
299
297
|
#### Enviar Botões
|
|
@@ -309,7 +307,7 @@ await sdk.telegram.sendButtons({
|
|
|
309
307
|
{ text: 'Opção 2', callback_data: 'option2' }
|
|
310
308
|
]
|
|
311
309
|
]
|
|
312
|
-
});
|
|
310
|
+
}, accessToken);
|
|
313
311
|
```
|
|
314
312
|
|
|
315
313
|
#### Enviar Localização
|
|
@@ -320,7 +318,7 @@ await sdk.telegram.sendLocation({
|
|
|
320
318
|
chatId: '123456789',
|
|
321
319
|
latitude: -23.5505,
|
|
322
320
|
longitude: -46.6333
|
|
323
|
-
});
|
|
321
|
+
}, accessToken);
|
|
324
322
|
```
|
|
325
323
|
|
|
326
324
|
#### Enviar Contato
|
|
@@ -332,7 +330,7 @@ await sdk.telegram.sendContact({
|
|
|
332
330
|
phoneNumber: '+5511999999999',
|
|
333
331
|
firstName: 'João',
|
|
334
332
|
lastName: 'Silva'
|
|
335
|
-
});
|
|
333
|
+
}, accessToken);
|
|
336
334
|
```
|
|
337
335
|
|
|
338
336
|
#### Enviar Enquete
|
|
@@ -344,7 +342,7 @@ await sdk.telegram.sendPoll({
|
|
|
344
342
|
question: 'Qual sua cor favorita?',
|
|
345
343
|
options: ['Vermelho', 'Azul', 'Verde'],
|
|
346
344
|
isAnonymous: false
|
|
347
|
-
});
|
|
345
|
+
}, accessToken);
|
|
348
346
|
```
|
|
349
347
|
|
|
350
348
|
### WebChat
|
|
@@ -356,7 +354,7 @@ await sdk.webchat.sendText({
|
|
|
356
354
|
token: 'sk_live_...',
|
|
357
355
|
sender: 'user123',
|
|
358
356
|
messageText: 'Olá!'
|
|
359
|
-
});
|
|
357
|
+
}, accessToken);
|
|
360
358
|
```
|
|
361
359
|
|
|
362
360
|
#### Enviar Card
|
|
@@ -375,7 +373,7 @@ await sdk.webchat.sendCard({
|
|
|
375
373
|
value: 'https://example.com/product'
|
|
376
374
|
}
|
|
377
375
|
]
|
|
378
|
-
});
|
|
376
|
+
}, accessToken);
|
|
379
377
|
```
|
|
380
378
|
|
|
381
379
|
#### Enviar Formulário
|
|
@@ -400,7 +398,7 @@ await sdk.webchat.sendForm({
|
|
|
400
398
|
}
|
|
401
399
|
],
|
|
402
400
|
submitButtonText: 'Enviar'
|
|
403
|
-
});
|
|
401
|
+
}, accessToken);
|
|
404
402
|
```
|
|
405
403
|
|
|
406
404
|
### Facebook
|
|
@@ -412,7 +410,7 @@ const posts = await sdk.facebook.listPosts({
|
|
|
412
410
|
token: 'sk_live_...',
|
|
413
411
|
pageId: 'page_id',
|
|
414
412
|
limit: 10
|
|
415
|
-
});
|
|
413
|
+
}, accessToken);
|
|
416
414
|
```
|
|
417
415
|
|
|
418
416
|
#### Criar Post
|
|
@@ -423,7 +421,7 @@ await sdk.facebook.createPost({
|
|
|
423
421
|
pageId: 'page_id',
|
|
424
422
|
message: 'Novo post!',
|
|
425
423
|
link: 'https://example.com'
|
|
426
|
-
});
|
|
424
|
+
}, accessToken);
|
|
427
425
|
```
|
|
428
426
|
|
|
429
427
|
#### Enviar Mensagem
|
|
@@ -433,7 +431,7 @@ await sdk.facebook.sendText({
|
|
|
433
431
|
token: 'sk_live_...',
|
|
434
432
|
recipientId: 'user_id',
|
|
435
433
|
message: 'Olá!'
|
|
436
|
-
});
|
|
434
|
+
}, accessToken);
|
|
437
435
|
```
|
|
438
436
|
|
|
439
437
|
### Instagram
|
|
@@ -445,7 +443,7 @@ await sdk.instagram.sendText({
|
|
|
445
443
|
token: 'sk_live_...',
|
|
446
444
|
recipientId: 'user_id',
|
|
447
445
|
message: 'Olá!'
|
|
448
|
-
});
|
|
446
|
+
}, accessToken);
|
|
449
447
|
```
|
|
450
448
|
|
|
451
449
|
#### Enviar Mídia
|
|
@@ -457,7 +455,7 @@ await sdk.instagram.sendMedia({
|
|
|
457
455
|
fileUrl: 'https://example.com/image.jpg',
|
|
458
456
|
type: 'image',
|
|
459
457
|
caption: 'Veja esta imagem!'
|
|
460
|
-
});
|
|
458
|
+
}, accessToken);
|
|
461
459
|
```
|
|
462
460
|
|
|
463
461
|
#### Enviar Resposta Privada a Comentário
|
|
@@ -467,7 +465,7 @@ await sdk.instagram.sendPrivateReply({
|
|
|
467
465
|
token: 'sk_live_...',
|
|
468
466
|
commentId: 'comment_id',
|
|
469
467
|
message: 'Obrigado pelo comentário!'
|
|
470
|
-
});
|
|
468
|
+
}, accessToken);
|
|
471
469
|
```
|
|
472
470
|
|
|
473
471
|
### Canais
|
|
@@ -475,7 +473,7 @@ await sdk.instagram.sendPrivateReply({
|
|
|
475
473
|
#### Listar Canais
|
|
476
474
|
|
|
477
475
|
```typescript
|
|
478
|
-
const channels = await sdk.channels.list();
|
|
476
|
+
const channels = await sdk.channels.list(accessToken);
|
|
479
477
|
console.log(channels);
|
|
480
478
|
```
|
|
481
479
|
|
|
@@ -487,36 +485,18 @@ console.log(channels);
|
|
|
487
485
|
const webhook = await sdk.integrations.createWebhook({
|
|
488
486
|
url: 'https://example.com/webhook',
|
|
489
487
|
expiresInDays: 365
|
|
490
|
-
});
|
|
491
|
-
```
|
|
492
|
-
|
|
493
|
-
## 🔐 Autenticação
|
|
494
|
-
|
|
495
|
-
O SDK gerencia automaticamente a autenticação. Quando você cria uma instância do SDK, ele automaticamente:
|
|
496
|
-
|
|
497
|
-
1. Obtém um token de acesso usando suas credenciais
|
|
498
|
-
2. Renova o token quando necessário
|
|
499
|
-
3. Adiciona o token em todas as requisições
|
|
500
|
-
|
|
501
|
-
Se precisar definir um token manualmente (útil para testes):
|
|
502
|
-
|
|
503
|
-
```typescript
|
|
504
|
-
sdk.setAccessToken('seu-token-aqui', 86400); // expiresIn em segundos
|
|
505
|
-
```
|
|
506
|
-
|
|
507
|
-
Para limpar o token:
|
|
508
|
-
|
|
509
|
-
```typescript
|
|
510
|
-
sdk.clearToken();
|
|
488
|
+
}, accessToken);
|
|
511
489
|
```
|
|
512
490
|
|
|
513
491
|
## 🛠️ Tratamento de Erros
|
|
514
492
|
|
|
515
|
-
O SDK formata todos os erros de forma consistente:
|
|
516
|
-
|
|
517
493
|
```typescript
|
|
518
494
|
try {
|
|
519
|
-
await sdk.whatsapp.sendText({
|
|
495
|
+
await sdk.whatsapp.sendText({
|
|
496
|
+
token: 'sk_live_...',
|
|
497
|
+
sender: '5511999999999',
|
|
498
|
+
messageText: 'Olá!'
|
|
499
|
+
}, accessToken);
|
|
520
500
|
} catch (error) {
|
|
521
501
|
console.error('Erro:', error.message);
|
|
522
502
|
console.error('Status:', error.status);
|
|
@@ -526,15 +506,12 @@ try {
|
|
|
526
506
|
|
|
527
507
|
## 📝 Tipos TypeScript
|
|
528
508
|
|
|
529
|
-
Todos os tipos estão disponíveis para importação:
|
|
530
|
-
|
|
531
509
|
```typescript
|
|
532
510
|
import type {
|
|
533
511
|
SDKConfig,
|
|
534
512
|
Channel,
|
|
535
513
|
SendWhatsAppTextParams,
|
|
536
|
-
ApiResponse
|
|
537
|
-
// ... outros tipos
|
|
514
|
+
ApiResponse
|
|
538
515
|
} from '@oficialapi/sdk';
|
|
539
516
|
```
|
|
540
517
|
|
|
@@ -545,19 +522,12 @@ O SDK possui retry automático configurável:
|
|
|
545
522
|
- **maxRetries**: Número máximo de tentativas (padrão: 3)
|
|
546
523
|
- **retryDelay**: Delay entre tentativas em ms (padrão: 1000)
|
|
547
524
|
|
|
548
|
-
O retry é aplicado automaticamente em
|
|
549
|
-
- Erros de rede
|
|
550
|
-
- Erros 5xx (erros do servidor)
|
|
551
|
-
- Timeouts
|
|
525
|
+
O retry é aplicado automaticamente em erros de rede, erros 5xx e timeouts.
|
|
552
526
|
|
|
553
527
|
## 📖 Documentação Completa
|
|
554
528
|
|
|
555
529
|
Para mais informações, consulte a [documentação completa da API](https://api.oficialapi.com.br/api/docs).
|
|
556
530
|
|
|
557
|
-
## 🤝 Suporte
|
|
558
|
-
|
|
559
|
-
Para suporte, entre em contato através do [painel administrativo](https://access.oficialapi.com.br) ou abra uma issue no repositório.
|
|
560
|
-
|
|
561
531
|
## 📄 Licença
|
|
562
532
|
|
|
563
533
|
MIT
|