@zapyapi/sdk 1.0.0-beta.6 → 1.0.0-beta.7

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
@@ -284,35 +284,70 @@ extractPhone('5511999999999@c.us'); // '5511999999999'
284
284
 
285
285
  ## Webhook Event Types
286
286
 
287
- The SDK provides types for webhook events:
287
+ The SDK provides fully typed webhook events with discriminated unions for each message type:
288
288
 
289
289
  ```typescript
290
- import type {
291
- WebhookEvent,
292
- MessageWebhookEvent,
293
- MessageAckWebhookEvent,
294
- ConnectionWebhookEvent,
295
- QRCodeWebhookEvent,
290
+ import {
291
+ ZapyWebhookPayload,
292
+ ZapyEventTypes,
293
+ isTextMessage,
294
+ isImageMessage,
295
+ isVideoMessage,
296
+ isAudioMessage,
296
297
  } from '@zapyapi/sdk';
297
298
 
298
- function handleWebhook(event: WebhookEvent) {
299
- switch (event.event) {
300
- case 'message':
301
- // event is MessageWebhookEvent
302
- console.log(`New message from ${event.data.from}`);
299
+ function handleWebhook(payload: ZapyWebhookPayload) {
300
+ console.log(`Event from instance: ${payload.instanceId}`);
301
+
302
+ switch (payload.event) {
303
+ case ZapyEventTypes.MESSAGE:
304
+ // payload.data is ZapyMessage (discriminated union)
305
+ const message = payload.data;
306
+
307
+ if (isTextMessage(message)) {
308
+ console.log(`Text: ${message.text}`);
309
+ } else if (isImageMessage(message)) {
310
+ console.log(`Image: ${message.url}, caption: ${message.caption}`);
311
+ } else if (isVideoMessage(message)) {
312
+ console.log(`Video: ${message.url}`);
313
+ } else if (isAudioMessage(message)) {
314
+ console.log(`Audio: ${message.url}, duration: ${message.duration}s`);
315
+ }
316
+ break;
317
+
318
+ case ZapyEventTypes.MESSAGE_STATUS:
319
+ console.log(`Message ${payload.data.messageId} status: ${payload.data.status}`);
303
320
  break;
304
- case 'message.ack':
305
- // event is MessageAckWebhookEvent
306
- console.log(`Message ${event.data.messageId} status: ${event.data.ack}`);
321
+
322
+ case ZapyEventTypes.QR_CODE:
323
+ console.log(`QR Code received, attempt: ${payload.data.attempt}`);
307
324
  break;
308
- case 'connection.update':
309
- // event is ConnectionWebhookEvent
310
- console.log(`Connection status: ${event.data.status}`);
325
+
326
+ case ZapyEventTypes.INSTANCE_STATUS:
327
+ console.log(`Instance status: ${payload.data.status}`);
311
328
  break;
312
329
  }
313
330
  }
314
331
  ```
315
332
 
333
+ ### Available Message Type Guards
334
+
335
+ ```typescript
336
+ import {
337
+ isTextMessage,
338
+ isImageMessage,
339
+ isVideoMessage,
340
+ isAudioMessage,
341
+ isDocumentMessage,
342
+ isStickerMessage,
343
+ isLocationMessage,
344
+ isContactMessage,
345
+ isReactionMessage,
346
+ isPollMessage,
347
+ isMediaMessage, // matches any media type
348
+ } from '@zapyapi/sdk';
349
+ ```
350
+
316
351
  ## Requirements
317
352
 
318
353
  - Node.js 18 or higher
@@ -328,6 +363,33 @@ const { ZapyClient } = require('@zapyapi/sdk');
328
363
  const client = new ZapyClient({ apiKey: 'your-api-key' });
329
364
  ```
330
365
 
366
+ ## Low-Level REST API Client
367
+
368
+ For advanced use cases, the SDK also exports an auto-generated REST client with full type definitions from the OpenAPI spec:
369
+
370
+ ```typescript
371
+ import { ZapyRestApi } from '@zapyapi/sdk';
372
+
373
+ const api = new ZapyRestApi({
374
+ baseURL: 'https://api.zapyapi.com',
375
+ headers: {
376
+ 'x-api-key': 'your-api-key',
377
+ },
378
+ });
379
+
380
+ // Direct REST calls with full type safety
381
+ const response = await api.instances.managerInstancesControllerListInstances({
382
+ page: 1,
383
+ limit: 10,
384
+ });
385
+
386
+ // Send a message
387
+ await api.sendMessage.sendMessageControllerSendTextMessage(
388
+ 'my-instance',
389
+ { to: '5511999999999', text: 'Hello!' }
390
+ );
391
+ ```
392
+
331
393
  ## License
332
394
 
333
395
  MIT