@zapyapi/sdk 1.0.0-beta.6 → 1.0.0-beta.8
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 +80 -18
- package/index.cjs +865 -139
- package/index.js +865 -130
- package/package.json +1 -2
- package/src/client.d.ts +1 -1
- package/src/index.d.ts +11 -7
- package/src/index.d.ts.map +1 -1
- package/src/types/enums.d.ts +6 -89
- package/src/types/enums.d.ts.map +1 -1
- package/src/types/events/instance-status.d.ts +3 -13
- package/src/types/events/instance-status.d.ts.map +1 -1
- package/src/types/events/presence.d.ts +3 -16
- package/src/types/events/presence.d.ts.map +1 -1
- package/src/types/events/reaction.d.ts +3 -16
- package/src/types/events/reaction.d.ts.map +1 -1
- package/src/types/index.d.ts +4 -6
- package/src/types/index.d.ts.map +1 -1
- package/src/types/message-events.types.d.ts +39 -39
- package/src/types/message-events.types.d.ts.map +1 -1
- package/src/version.d.ts +1 -1
- package/src/types/webhook-events.types.d.ts +0 -257
- package/src/types/webhook-events.types.d.ts.map +0 -1
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
|
|
287
|
+
The SDK provides fully typed webhook events with discriminated unions for each message type:
|
|
288
288
|
|
|
289
289
|
```typescript
|
|
290
|
-
import
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
290
|
+
import {
|
|
291
|
+
ZapyWebhookPayload,
|
|
292
|
+
ZapyEventTypes,
|
|
293
|
+
isTextMessage,
|
|
294
|
+
isImageMessage,
|
|
295
|
+
isVideoMessage,
|
|
296
|
+
isAudioMessage,
|
|
296
297
|
} from '@zapyapi/sdk';
|
|
297
298
|
|
|
298
|
-
function handleWebhook(
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
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
|
-
|
|
305
|
-
|
|
306
|
-
console.log(`
|
|
321
|
+
|
|
322
|
+
case ZapyEventTypes.QR_CODE:
|
|
323
|
+
console.log(`QR Code received, attempt: ${payload.data.attempt}`);
|
|
307
324
|
break;
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
console.log(`
|
|
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
|