@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/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import axios from 'axios';
2
2
 
3
3
  /** SDK version - auto-generated from package.json */
4
- const SDK_VERSION = '1.0.0-beta.6';
4
+ const SDK_VERSION = '1.0.0-beta.8';
5
5
 
6
6
  /**
7
7
  * Custom error classes for @zapyapi/sdk
@@ -1199,7 +1199,7 @@ class InstancesResource extends BaseResource {
1199
1199
  *
1200
1200
  * @example
1201
1201
  * ```typescript
1202
- * import { ZapyClient, WebhookEventType, isMessageEvent } from '@zapyapi/sdk';
1202
+ * import { ZapyClient, ZapyEventTypes, isTextMessage } from '@zapyapi/sdk';
1203
1203
  *
1204
1204
  * const client = new ZapyClient({
1205
1205
  * apiKey: 'your-api-key',
@@ -1309,44 +1309,21 @@ function createClient(options) {
1309
1309
  /**
1310
1310
  * SDK Enums - Type-safe enums for ZapyAPI SDK
1311
1311
  *
1312
- * These enums can be imported and used for type-safe comparisons and
1313
- * webhook event handling.
1314
- *
1315
1312
  * @example
1316
1313
  * ```typescript
1317
- * import { WebhookEventType, InstanceStatus, MessageAckStatus } from '@zapyapi/sdk';
1318
- *
1319
- * // Type-safe event handling
1320
- * if (event.event === WebhookEventType.MESSAGE) {
1321
- * // Handle message event
1322
- * }
1314
+ * import { InstanceStatus, ZapyEventTypes, ZapyMessageType } from '@zapyapi/sdk';
1323
1315
  *
1324
1316
  * // Check instance status
1325
1317
  * if (instance.status === InstanceStatus.CONNECTED) {
1326
1318
  * // Instance is ready
1327
1319
  * }
1320
+ *
1321
+ * // Handle webhook events
1322
+ * if (payload.event === ZapyEventTypes.MESSAGE) {
1323
+ * // Handle message
1324
+ * }
1328
1325
  * ```
1329
1326
  */
1330
- /**
1331
- * Webhook event types sent by ZapyAPI
1332
- * These are the event types you'll receive in webhook payloads
1333
- */
1334
- const WebhookEventType = {
1335
- /** New message received */
1336
- MESSAGE: 'message',
1337
- /** Message delivery status update */
1338
- MESSAGE_STATUS: 'message-status',
1339
- /** QR code generated for authentication */
1340
- QR_CODE: 'qr-code',
1341
- /** New contact discovered */
1342
- CONTACT_CREATED: 'contact-created',
1343
- /** Contact information updated */
1344
- CONTACT_UPDATED: 'contact-updated',
1345
- /** Duplicate contacts merged */
1346
- CONTACT_DEDUPLICATED: 'contact-deduplicated',
1347
- /** Instance status changed (connected, disconnected, etc.) */
1348
- INSTANCE_STATUS: 'instance-status'
1349
- };
1350
1327
  /**
1351
1328
  * Instance status values
1352
1329
  * Represents the current state of a WhatsApp instance
@@ -1371,48 +1348,6 @@ const InstanceStatus = {
1371
1348
  /** Payment pending for this instance */
1372
1349
  PAYMENT_PENDING: 'payment_pending'
1373
1350
  };
1374
- /**
1375
- * Message acknowledgment status
1376
- * Represents the delivery status of a sent message
1377
- */
1378
- const MessageAckStatus = {
1379
- /** Message is pending to be sent */
1380
- PENDING: 'pending',
1381
- /** Message was sent to server */
1382
- SENT: 'sent',
1383
- /** Message was delivered to recipient */
1384
- DELIVERED: 'delivered',
1385
- /** Message was read by recipient */
1386
- READ: 'read',
1387
- /** Audio/video message was played */
1388
- PLAYED: 'played'
1389
- };
1390
- /**
1391
- * Message types for incoming messages
1392
- * Identifies the type of content in a received message
1393
- */
1394
- const MessageType = {
1395
- /** Text message */
1396
- TEXT: 'text',
1397
- /** Image message */
1398
- IMAGE: 'image',
1399
- /** Video message */
1400
- VIDEO: 'video',
1401
- /** Audio message (voice note or file) */
1402
- AUDIO: 'audio',
1403
- /** Document/file message */
1404
- DOCUMENT: 'document',
1405
- /** Sticker message */
1406
- STICKER: 'sticker',
1407
- /** Location message */
1408
- LOCATION: 'location',
1409
- /** Contact card message */
1410
- CONTACT: 'contact',
1411
- /** Poll message */
1412
- POLL: 'poll',
1413
- /** Reaction message */
1414
- REACTION: 'reaction'
1415
- };
1416
1351
  /**
1417
1352
  * Webhook queue item status
1418
1353
  * Used for monitoring webhook delivery status
@@ -1429,49 +1364,6 @@ const WebhookQueueStatus = {
1429
1364
  /** Webhook delivery is paused due to repeated failures */
1430
1365
  PAUSED: 'paused'
1431
1366
  };
1432
- /**
1433
- * Connection status for webhook events
1434
- * Sent in connection.update webhook events
1435
- */
1436
- const ConnectionStatus = {
1437
- /** Instance is connecting */
1438
- CONNECTING: 'connecting',
1439
- /** Instance is connected */
1440
- CONNECTED: 'connected',
1441
- /** Instance disconnected */
1442
- DISCONNECTED: 'disconnected',
1443
- /** Connection error occurred */
1444
- ERROR: 'error'
1445
- };
1446
-
1447
- /**
1448
- * Webhook event type definitions
1449
- * Types for webhook payloads sent by ZapyAPI
1450
- */
1451
- /** Type guard for message events */
1452
- function isMessageEvent(event) {
1453
- return event.event === 'message';
1454
- }
1455
- /** Type guard for message status events */
1456
- function isMessageStatusEvent(event) {
1457
- return event.event === 'message-status';
1458
- }
1459
- /** Type guard for QR code events */
1460
- function isQRCodeEvent(event) {
1461
- return event.event === 'qr-code';
1462
- }
1463
- /** Type guard for contact created events */
1464
- function isContactCreatedEvent(event) {
1465
- return event.event === 'contact-created';
1466
- }
1467
- /** Type guard for contact updated events */
1468
- function isContactUpdatedEvent(event) {
1469
- return event.event === 'contact-updated';
1470
- }
1471
- /** Type guard for contact deduplicated events */
1472
- function isContactDeduplicatedEvent(event) {
1473
- return event.event === 'contact-deduplicated';
1474
- }
1475
1367
 
1476
1368
  /**
1477
1369
  * WhatsApp Message Event Types
@@ -1564,19 +1456,6 @@ function isMediaMessage(message) {
1564
1456
  return [ZapyMessageType.IMAGE, ZapyMessageType.VIDEO, ZapyMessageType.AUDIO, ZapyMessageType.DOCUMENT, ZapyMessageType.STICKER].includes(message.messageType);
1565
1457
  }
1566
1458
 
1567
- var WhatsappInstanceStatus;
1568
- (function (WhatsappInstanceStatus) {
1569
- WhatsappInstanceStatus["STOPPED"] = "stopped";
1570
- WhatsappInstanceStatus["MANUALLY_STOPPED"] = "manually_stopped";
1571
- WhatsappInstanceStatus["CONNECTING"] = "connecting";
1572
- WhatsappInstanceStatus["PENDING_QR_CODE_SCAN"] = "pending_qr_code_scan";
1573
- WhatsappInstanceStatus["CONNECTED"] = "connected";
1574
- WhatsappInstanceStatus["ERROR"] = "error";
1575
- WhatsappInstanceStatus["CREATED"] = "created";
1576
- WhatsappInstanceStatus["QR_TIMEOUT"] = "qr_timeout";
1577
- WhatsappInstanceStatus["PAYMENT_PENDING"] = "payment_pending";
1578
- })(WhatsappInstanceStatus || (WhatsappInstanceStatus = {}));
1579
-
1580
1459
  // Re-export all event types
1581
1460
  /**
1582
1461
  * Event type constants for type-safe event handling
@@ -1768,4 +1647,860 @@ function verifySignatureWithCrypto(crypto, payload, signature, secret) {
1768
1647
  return crypto.timingSafeEqual(Buffer.from(signature, 'utf8'), Buffer.from(expectedSignature, 'utf8'));
1769
1648
  }
1770
1649
 
1771
- export { AuthenticationError, ConnectionStatus, InstanceNotFoundError, InstanceStatus, MessageAckStatus, MessageType, NetworkError, RateLimitError, TimeoutError, ValidationError, WebhookEventType, WebhookQueueStatus, WhatsappInstanceStatus, ZapyApiError, ZapyClient, ZapyError, ZapyEventTypes, ZapyMessageStatusEnum, ZapyMessageType, createClient, extractPhone, isAudioMessage, isCallMessage, isContactCreatedEvent, isContactDeduplicatedEvent, isContactMessage, isContactUpdatedEvent, isDeletedMessage, isDocumentMessage, isEditedMessage, isGroup, isImageMessage, isLiveLocationMessage, isLocationMessage, isMediaMessage, isMessageEvent, isMessageStatusEvent, isPollMessage, isPollVoteMessage, isQRCodeEvent, isReactionMessage, isStickerMessage, isTextMessage, isUnsupportedMessage, isValidPhone, isVideoMessage, normalizePhone, verifyWebhookSignature, verifyWebhookSignatureAsync };
1650
+ /* eslint-disable */
1651
+ /* tslint:disable */
1652
+ // @ts-nocheck
1653
+ /*
1654
+ * ---------------------------------------------------------------
1655
+ * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##
1656
+ * ## ##
1657
+ * ## AUTHOR: acacode ##
1658
+ * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##
1659
+ * ---------------------------------------------------------------
1660
+ */
1661
+ var ContentType;
1662
+ (function (ContentType) {
1663
+ ContentType["Json"] = "application/json";
1664
+ ContentType["JsonApi"] = "application/vnd.api+json";
1665
+ ContentType["FormData"] = "multipart/form-data";
1666
+ ContentType["UrlEncoded"] = "application/x-www-form-urlencoded";
1667
+ ContentType["Text"] = "text/plain";
1668
+ })(ContentType || (ContentType = {}));
1669
+ class HttpClient {
1670
+ instance;
1671
+ securityData = null;
1672
+ securityWorker;
1673
+ secure;
1674
+ format;
1675
+ constructor({
1676
+ securityWorker,
1677
+ secure,
1678
+ format,
1679
+ ...axiosConfig
1680
+ } = {}) {
1681
+ this.instance = axios.create({
1682
+ ...axiosConfig,
1683
+ baseURL: axiosConfig.baseURL || ""
1684
+ });
1685
+ this.secure = secure;
1686
+ this.format = format;
1687
+ this.securityWorker = securityWorker;
1688
+ }
1689
+ setSecurityData = data => {
1690
+ this.securityData = data;
1691
+ };
1692
+ mergeRequestParams(params1, params2) {
1693
+ const method = params1.method || params2 && params2.method;
1694
+ return {
1695
+ ...this.instance.defaults,
1696
+ ...params1,
1697
+ ...(params2 || {}),
1698
+ headers: {
1699
+ ...(method && this.instance.defaults.headers[method.toLowerCase()] || {}),
1700
+ ...(params1.headers || {}),
1701
+ ...(params2 && params2.headers || {})
1702
+ }
1703
+ };
1704
+ }
1705
+ stringifyFormItem(formItem) {
1706
+ if (typeof formItem === "object" && formItem !== null) {
1707
+ return JSON.stringify(formItem);
1708
+ } else {
1709
+ return `${formItem}`;
1710
+ }
1711
+ }
1712
+ createFormData(input) {
1713
+ if (input instanceof FormData) {
1714
+ return input;
1715
+ }
1716
+ return Object.keys(input || {}).reduce((formData, key) => {
1717
+ const property = input[key];
1718
+ const propertyContent = property instanceof Array ? property : [property];
1719
+ for (const formItem of propertyContent) {
1720
+ const isFileType = formItem instanceof Blob || formItem instanceof File;
1721
+ formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));
1722
+ }
1723
+ return formData;
1724
+ }, new FormData());
1725
+ }
1726
+ request = async ({
1727
+ secure,
1728
+ path,
1729
+ type,
1730
+ query,
1731
+ format,
1732
+ body,
1733
+ ...params
1734
+ }) => {
1735
+ const secureParams = (typeof secure === "boolean" ? secure : this.secure) && this.securityWorker && (await this.securityWorker(this.securityData)) || {};
1736
+ const requestParams = this.mergeRequestParams(params, secureParams);
1737
+ const responseFormat = format || this.format || undefined;
1738
+ if (type === ContentType.FormData && body && body !== null && typeof body === "object") {
1739
+ body = this.createFormData(body);
1740
+ }
1741
+ if (type === ContentType.Text && body && body !== null && typeof body !== "string") {
1742
+ body = JSON.stringify(body);
1743
+ }
1744
+ return this.instance.request({
1745
+ ...requestParams,
1746
+ headers: {
1747
+ ...(requestParams.headers || {}),
1748
+ ...(type ? {
1749
+ "Content-Type": type
1750
+ } : {})
1751
+ },
1752
+ params: query,
1753
+ responseType: responseFormat,
1754
+ data: body,
1755
+ url: path
1756
+ });
1757
+ };
1758
+ }
1759
+ /**
1760
+ * @title Zapy API - Gerenciador de Instâncias WhatsApp
1761
+ * @version 1.0.0
1762
+ * @contact Suporte Zapy API <contato@zapyapi.com> (http://app.zapyapi.com/)
1763
+ *
1764
+ *
1765
+ * Formatos de Mensagem
1766
+ * - Números de Telefone: Formato brasileiro (11999999999) ou internacional (5511999999999)
1767
+ * - IDs do WhatsApp: Pessoal (@c.us), Grupos (@g.us), LIDs (@lid)
1768
+ * - Mídia: Arquivos codificados em Base64 ou URLs públicas
1769
+ *
1770
+ * Suporte
1771
+ * Para suporte técnico e documentação, visite nosso site.
1772
+ * https://app.zapyapi.com/
1773
+ *
1774
+ */
1775
+ class Api extends HttpClient {
1776
+ instances = {
1777
+ /**
1778
+ * @description Lista todas as instâncias do WhatsApp
1779
+ *
1780
+ * @tags Instâncias
1781
+ * @name ManagerInstancesControllerListInstances
1782
+ * @summary Listar Instâncias
1783
+ * @request GET:/api/instances
1784
+ * @secure
1785
+ * @response `200` `(ResponsePaginated & {
1786
+ data?: (ListInstancesResponseDto)[],
1787
+ })` Lista paginada de instâncias obtida com sucesso
1788
+ * @response `400` `BadRequestErrorDto` Dados da requisição inválidos
1789
+ * @response `401` `UnauthorizedErrorDto` Não autorizado - API key inválida ou ausente
1790
+ */
1791
+ managerInstancesControllerListInstances: (query, params = {}) => this.request({
1792
+ path: `/api/instances`,
1793
+ method: "GET",
1794
+ query: query,
1795
+ secure: true,
1796
+ format: "json",
1797
+ ...params
1798
+ }),
1799
+ /**
1800
+ * No description
1801
+ *
1802
+ * @tags Instâncias
1803
+ * @name ManagerInstancesControllerCreateInstance
1804
+ * @summary Create a new WhatsApp instance (Partner only - post-paid subscriptions required)
1805
+ * @request POST:/api/instances
1806
+ * @secure
1807
+ * @response `201` `ManagerInstanceResponseDto` Instance created successfully
1808
+ * @response `400` `void` Bad request
1809
+ */
1810
+ managerInstancesControllerCreateInstance: (data, params = {}) => this.request({
1811
+ path: `/api/instances`,
1812
+ method: "POST",
1813
+ body: data,
1814
+ secure: true,
1815
+ type: ContentType.Json,
1816
+ format: "json",
1817
+ ...params
1818
+ }),
1819
+ /**
1820
+ * @description Obtém o código QR para conectar a instância do WhatsApp
1821
+ *
1822
+ * @tags Instâncias
1823
+ * @name ManagerInstancesControllerGetQrCode
1824
+ * @summary Obter Código QR
1825
+ * @request GET:/api/instances/{instanceId}/qr
1826
+ * @secure
1827
+ * @response `200` `QRCodeResponseDto` Código QR obtido com sucesso
1828
+ * @response `403` `ForbiddenErrorDto` Acesso negado - Sem acesso ao recurso
1829
+ * @response `404` `NotFoundErrorDto` Recurso não encontrado
1830
+ */
1831
+ managerInstancesControllerGetQrCode: ({
1832
+ instanceId,
1833
+ ...query
1834
+ }, params = {}) => this.request({
1835
+ path: `/api/instances/${instanceId}/qr`,
1836
+ method: "GET",
1837
+ secure: true,
1838
+ format: "json",
1839
+ ...params
1840
+ }),
1841
+ /**
1842
+ * @description Reinicia uma instância do WhatsApp
1843
+ *
1844
+ * @tags Instâncias
1845
+ * @name ManagerInstancesControllerRestartInstance
1846
+ * @summary Reiniciar Instância do WhatsApp
1847
+ * @request POST:/api/instances/{instanceId}/restart
1848
+ * @secure
1849
+ * @response `200` `EmptyResponseDto` Instância reiniciada com sucesso
1850
+ * @response `400` `BadRequestErrorDto` Dados da requisição inválidos
1851
+ * @response `403` `ForbiddenErrorDto` Acesso negado - Sem acesso ao recurso
1852
+ * @response `404` `NotFoundErrorDto` Recurso não encontrado
1853
+ */
1854
+ managerInstancesControllerRestartInstance: ({
1855
+ instanceId,
1856
+ ...query
1857
+ }, params = {}) => this.request({
1858
+ path: `/api/instances/${instanceId}/restart`,
1859
+ method: "POST",
1860
+ secure: true,
1861
+ format: "json",
1862
+ ...params
1863
+ }),
1864
+ /**
1865
+ * @description Desloga uma instância do WhatsApp
1866
+ *
1867
+ * @tags Instâncias
1868
+ * @name ManagerInstancesControllerLogoutInstance
1869
+ * @summary Deslogar Instância do WhatsApp
1870
+ * @request POST:/api/instances/{instanceId}/logout
1871
+ * @secure
1872
+ * @response `200` `EmptyResponseDto` Instância deslogada com sucesso
1873
+ * @response `400` `BadRequestErrorDto` Dados da requisição inválidos
1874
+ * @response `403` `ForbiddenErrorDto` Acesso negado - Sem acesso ao recurso
1875
+ * @response `404` `NotFoundErrorDto` Recurso não encontrado
1876
+ */
1877
+ managerInstancesControllerLogoutInstance: ({
1878
+ instanceId,
1879
+ ...query
1880
+ }, params = {}) => this.request({
1881
+ path: `/api/instances/${instanceId}/logout`,
1882
+ method: "POST",
1883
+ secure: true,
1884
+ format: "json",
1885
+ ...params
1886
+ }),
1887
+ /**
1888
+ * @description Exclui permanentemente uma instância do WhatsApp. Esta ação é irreversível.
1889
+ *
1890
+ * @tags Instâncias
1891
+ * @name ManagerInstancesControllerDeleteInstance
1892
+ * @summary Excluir Instância do WhatsApp (Somente Parceiros)
1893
+ * @request DELETE:/api/instances/{instanceId}
1894
+ * @secure
1895
+ * @response `204` `void` Instância excluída com sucesso
1896
+ * @response `400` `BadRequestErrorDto` Dados da requisição inválidos
1897
+ * @response `403` `ForbiddenErrorDto` Acesso negado - Sem acesso ao recurso
1898
+ * @response `404` `NotFoundErrorDto` Recurso não encontrado
1899
+ */
1900
+ managerInstancesControllerDeleteInstance: ({
1901
+ instanceId,
1902
+ ...query
1903
+ }, params = {}) => this.request({
1904
+ path: `/api/instances/${instanceId}`,
1905
+ method: "DELETE",
1906
+ secure: true,
1907
+ ...params
1908
+ }),
1909
+ /**
1910
+ * @description Verifica se uma lista de números de telefone está registrada no WhatsApp
1911
+ *
1912
+ * @tags Instâncias
1913
+ * @name ManagerInstancesControllerCheckNumbers
1914
+ * @summary Verificar Números no WhatsApp
1915
+ * @request POST:/api/instances/{instanceId}/check-numbers
1916
+ * @secure
1917
+ * @response `200` `CheckNumbersResponseDto` Números verificados com sucesso
1918
+ * @response `400` `BadRequestErrorDto` Dados da requisição inválidos
1919
+ * @response `403` `ForbiddenErrorDto` Acesso negado - Sem acesso ao recurso
1920
+ * @response `404` `NotFoundErrorDto` Recurso não encontrado
1921
+ */
1922
+ managerInstancesControllerCheckNumbers: ({
1923
+ instanceId,
1924
+ ...query
1925
+ }, data, params = {}) => this.request({
1926
+ path: `/api/instances/${instanceId}/check-numbers`,
1927
+ method: "POST",
1928
+ body: data,
1929
+ secure: true,
1930
+ type: ContentType.Json,
1931
+ format: "json",
1932
+ ...params
1933
+ }),
1934
+ /**
1935
+ * @description Envia um indicador de presença (digitando, gravando, online, etc.) para um contato
1936
+ *
1937
+ * @tags Instâncias
1938
+ * @name ManagerInstancesControllerSendPresence
1939
+ * @summary Enviar Indicador de Presença
1940
+ * @request POST:/api/instances/{instanceId}/presence
1941
+ * @secure
1942
+ * @response `204` `void` Presença enviada com sucesso
1943
+ * @response `400` `BadRequestErrorDto` Dados da requisição inválidos
1944
+ * @response `403` `ForbiddenErrorDto` Acesso negado - Sem acesso ao recurso
1945
+ * @response `404` `NotFoundErrorDto` Recurso não encontrado
1946
+ */
1947
+ managerInstancesControllerSendPresence: ({
1948
+ instanceId,
1949
+ ...query
1950
+ }, data, params = {}) => this.request({
1951
+ path: `/api/instances/${instanceId}/presence`,
1952
+ method: "POST",
1953
+ body: data,
1954
+ secure: true,
1955
+ type: ContentType.Json,
1956
+ ...params
1957
+ }),
1958
+ /**
1959
+ * @description Obtém a URL da foto de perfil de um contato
1960
+ *
1961
+ * @tags Instâncias
1962
+ * @name ManagerInstancesControllerGetProfilePicture
1963
+ * @summary Obter Foto de Perfil
1964
+ * @request GET:/api/instances/{instanceId}/contacts/{phone}/profile-picture
1965
+ * @secure
1966
+ * @response `200` `void` Foto de perfil obtida com sucesso
1967
+ * @response `400` `BadRequestErrorDto` Dados da requisição inválidos
1968
+ * @response `403` `ForbiddenErrorDto` Acesso negado - Sem acesso ao recurso
1969
+ * @response `404` `NotFoundErrorDto` Recurso não encontrado
1970
+ */
1971
+ managerInstancesControllerGetProfilePicture: ({
1972
+ instanceId,
1973
+ phone,
1974
+ ...query
1975
+ }, params = {}) => this.request({
1976
+ path: `/api/instances/${instanceId}/contacts/${phone}/profile-picture`,
1977
+ method: "GET",
1978
+ secure: true,
1979
+ ...params
1980
+ }),
1981
+ /**
1982
+ * @description Bloqueia um contato no WhatsApp
1983
+ *
1984
+ * @tags Instâncias
1985
+ * @name ManagerInstancesControllerBlockContact
1986
+ * @summary Bloquear Contato
1987
+ * @request POST:/api/instances/{instanceId}/contacts/{phone}/block
1988
+ * @secure
1989
+ * @response `204` `void` Contato bloqueado com sucesso
1990
+ * @response `400` `BadRequestErrorDto` Dados da requisição inválidos
1991
+ * @response `403` `ForbiddenErrorDto` Acesso negado - Sem acesso ao recurso
1992
+ * @response `404` `NotFoundErrorDto` Recurso não encontrado
1993
+ */
1994
+ managerInstancesControllerBlockContact: ({
1995
+ instanceId,
1996
+ phone,
1997
+ ...query
1998
+ }, params = {}) => this.request({
1999
+ path: `/api/instances/${instanceId}/contacts/${phone}/block`,
2000
+ method: "POST",
2001
+ secure: true,
2002
+ ...params
2003
+ }),
2004
+ /**
2005
+ * @description Desbloqueia um contato no WhatsApp
2006
+ *
2007
+ * @tags Instâncias
2008
+ * @name ManagerInstancesControllerUnblockContact
2009
+ * @summary Desbloquear Contato
2010
+ * @request DELETE:/api/instances/{instanceId}/contacts/{phone}/block
2011
+ * @secure
2012
+ * @response `204` `void` Contato desbloqueado com sucesso
2013
+ * @response `400` `BadRequestErrorDto` Dados da requisição inválidos
2014
+ * @response `403` `ForbiddenErrorDto` Acesso negado - Sem acesso ao recurso
2015
+ * @response `404` `NotFoundErrorDto` Recurso não encontrado
2016
+ */
2017
+ managerInstancesControllerUnblockContact: ({
2018
+ instanceId,
2019
+ phone,
2020
+ ...query
2021
+ }, params = {}) => this.request({
2022
+ path: `/api/instances/${instanceId}/contacts/${phone}/block`,
2023
+ method: "DELETE",
2024
+ secure: true,
2025
+ ...params
2026
+ }),
2027
+ /**
2028
+ * @description Obtém informações detalhadas sobre um grupo do WhatsApp
2029
+ *
2030
+ * @tags Instâncias
2031
+ * @name ManagerInstancesControllerGetGroupMetadata
2032
+ * @summary Obter Metadados do Grupo
2033
+ * @request GET:/api/instances/{instanceId}/groups/{groupId}
2034
+ * @secure
2035
+ * @response `200` `void` Metadados do grupo obtidos com sucesso
2036
+ * @response `400` `BadRequestErrorDto` Dados da requisição inválidos
2037
+ * @response `403` `ForbiddenErrorDto` Acesso negado - Sem acesso ao recurso
2038
+ * @response `404` `NotFoundErrorDto` Recurso não encontrado
2039
+ */
2040
+ managerInstancesControllerGetGroupMetadata: ({
2041
+ instanceId,
2042
+ groupId,
2043
+ ...query
2044
+ }, params = {}) => this.request({
2045
+ path: `/api/instances/${instanceId}/groups/${groupId}`,
2046
+ method: "GET",
2047
+ secure: true,
2048
+ ...params
2049
+ })
2050
+ };
2051
+ webhooks = {
2052
+ /**
2053
+ * @description Get the webhook configuration for the authenticated user. Returns null if no webhook is configured.
2054
+ *
2055
+ * @tags Webhooks
2056
+ * @name WebhookControllerGetConfig
2057
+ * @summary Get Webhook Configuration
2058
+ * @request GET:/api/webhooks/config
2059
+ * @secure
2060
+ * @response `200` `WebhookConfigResponseDto` Webhook configuration retrieved successfully
2061
+ * @response `401` `UnauthorizedErrorDto` Não autorizado - API key inválida ou ausente
2062
+ */
2063
+ webhookControllerGetConfig: (params = {}) => this.request({
2064
+ path: `/api/webhooks/config`,
2065
+ method: "GET",
2066
+ secure: true,
2067
+ format: "json",
2068
+ ...params
2069
+ }),
2070
+ /**
2071
+ * @description Create or update the webhook configuration for the authenticated user. Only one webhook URL can be configured per user, and all instance events will be sent to this URL.
2072
+ *
2073
+ * @tags Webhooks
2074
+ * @name WebhookControllerUpsertConfig
2075
+ * @summary Configure Webhook
2076
+ * @request PUT:/api/webhooks/config
2077
+ * @secure
2078
+ * @response `200` `WebhookConfigResponseDto` Webhook configuration saved successfully
2079
+ * @response `400` `BadRequestErrorDto` Dados da requisição inválidos
2080
+ * @response `401` `UnauthorizedErrorDto` Não autorizado - API key inválida ou ausente
2081
+ */
2082
+ webhookControllerUpsertConfig: (data, params = {}) => this.request({
2083
+ path: `/api/webhooks/config`,
2084
+ method: "PUT",
2085
+ body: data,
2086
+ secure: true,
2087
+ type: ContentType.Json,
2088
+ format: "json",
2089
+ ...params
2090
+ }),
2091
+ /**
2092
+ * @description Delete the webhook configuration and all queued webhooks for the authenticated user.
2093
+ *
2094
+ * @tags Webhooks
2095
+ * @name WebhookControllerDeleteConfig
2096
+ * @summary Delete Webhook Configuration
2097
+ * @request DELETE:/api/webhooks/config
2098
+ * @secure
2099
+ * @response `204` `void` Webhook configuration deleted successfully
2100
+ * @response `401` `UnauthorizedErrorDto` Não autorizado - API key inválida ou ausente
2101
+ */
2102
+ webhookControllerDeleteConfig: (params = {}) => this.request({
2103
+ path: `/api/webhooks/config`,
2104
+ method: "DELETE",
2105
+ secure: true,
2106
+ ...params
2107
+ }),
2108
+ /**
2109
+ * @description Get the status of the webhook delivery queue, including counts of pending, failed, paused, and delivered webhooks.
2110
+ *
2111
+ * @tags Webhooks
2112
+ * @name WebhookControllerGetQueueStatus
2113
+ * @summary Get Queue Status
2114
+ * @request GET:/api/webhooks/queue/status
2115
+ * @secure
2116
+ * @response `200` `WebhookQueueStatusResponseDto` Queue status retrieved successfully
2117
+ * @response `401` `UnauthorizedErrorDto` Não autorizado - API key inválida ou ausente
2118
+ */
2119
+ webhookControllerGetQueueStatus: (params = {}) => this.request({
2120
+ path: `/api/webhooks/queue/status`,
2121
+ method: "GET",
2122
+ secure: true,
2123
+ format: "json",
2124
+ ...params
2125
+ }),
2126
+ /**
2127
+ * @description Resume all paused and failed webhooks. This will unpause the webhook configuration and reset all paused/failed items to pending.
2128
+ *
2129
+ * @tags Webhooks
2130
+ * @name WebhookControllerResumeAll
2131
+ * @summary Resume Webhooks
2132
+ * @request POST:/api/webhooks/queue/resume
2133
+ * @secure
2134
+ * @response `200` `WebhookResumeResponseDto` Webhooks resumed successfully
2135
+ * @response `401` `UnauthorizedErrorDto` Não autorizado - API key inválida ou ausente
2136
+ */
2137
+ webhookControllerResumeAll: (params = {}) => this.request({
2138
+ path: `/api/webhooks/queue/resume`,
2139
+ method: "POST",
2140
+ secure: true,
2141
+ format: "json",
2142
+ ...params
2143
+ })
2144
+ };
2145
+ message = {
2146
+ /**
2147
+ * @description Envia uma mensagem de texto para um contato ou grupo do WhatsApp
2148
+ *
2149
+ * @tags Mensagens
2150
+ * @name SendMessageControllerSendTextMessage
2151
+ * @summary Enviar Mensagem de Texto
2152
+ * @request POST:/api/message/{instanceId}/text
2153
+ * @secure
2154
+ * @response `201` `CommonSendMessageResponseDto` Mensagem enviada com sucesso
2155
+ * @response `400` `void` Dados da requisição inválidos
2156
+ * @response `404` `void` Instância do WhatsApp não encontrada
2157
+ */
2158
+ sendMessageControllerSendTextMessage: ({
2159
+ instanceId,
2160
+ ...query
2161
+ }, data, params = {}) => this.request({
2162
+ path: `/api/message/${instanceId}/text`,
2163
+ method: "POST",
2164
+ body: data,
2165
+ secure: true,
2166
+ type: ContentType.Json,
2167
+ format: "json",
2168
+ ...params
2169
+ }),
2170
+ /**
2171
+ * @description Envia uma mensagem de imagem para um contato ou grupo do WhatsApp
2172
+ *
2173
+ * @tags Mensagens
2174
+ * @name SendMessageControllerSendImageMessage
2175
+ * @summary Enviar Mensagem de Imagem
2176
+ * @request POST:/api/message/{instanceId}/image
2177
+ * @secure
2178
+ * @response `201` `CommonSendMessageResponseDto` Mensagem de imagem enviada com sucesso
2179
+ * @response `400` `void` Dados da requisição inválidos ou formato de imagem inválido
2180
+ * @response `404` `void` Instância do WhatsApp não encontrada
2181
+ */
2182
+ sendMessageControllerSendImageMessage: ({
2183
+ instanceId,
2184
+ ...query
2185
+ }, data, params = {}) => this.request({
2186
+ path: `/api/message/${instanceId}/image`,
2187
+ method: "POST",
2188
+ body: data,
2189
+ secure: true,
2190
+ type: ContentType.Json,
2191
+ format: "json",
2192
+ ...params
2193
+ }),
2194
+ /**
2195
+ * @description Envia uma mensagem de vídeo para um contato ou grupo do WhatsApp
2196
+ *
2197
+ * @tags Mensagens
2198
+ * @name SendMessageControllerSendVideoMessage
2199
+ * @summary Enviar Mensagem de Vídeo
2200
+ * @request POST:/api/message/{instanceId}/video
2201
+ * @secure
2202
+ * @response `201` `CommonSendMessageResponseDto` Mensagem de vídeo enviada com sucesso
2203
+ * @response `400` `void` Dados da requisição inválidos ou formato de vídeo inválido
2204
+ * @response `404` `void` Instância do WhatsApp não encontrada
2205
+ */
2206
+ sendMessageControllerSendVideoMessage: ({
2207
+ instanceId,
2208
+ ...query
2209
+ }, data, params = {}) => this.request({
2210
+ path: `/api/message/${instanceId}/video`,
2211
+ method: "POST",
2212
+ body: data,
2213
+ secure: true,
2214
+ type: ContentType.Json,
2215
+ format: "json",
2216
+ ...params
2217
+ }),
2218
+ /**
2219
+ * @description Envia uma nota de voz para um contato ou grupo do WhatsApp
2220
+ *
2221
+ * @tags Mensagens
2222
+ * @name SendMessageControllerSendAudioNoteMessage
2223
+ * @summary Enviar Mensagem de Áudio (Nota de Voz)
2224
+ * @request POST:/api/message/{instanceId}/audio-note
2225
+ * @secure
2226
+ * @response `201` `CommonSendMessageResponseDto` Nota de voz enviada com sucesso
2227
+ * @response `400` `void` Dados da requisição inválidos ou formato de áudio inválido
2228
+ * @response `404` `void` Instância do WhatsApp não encontrada
2229
+ */
2230
+ sendMessageControllerSendAudioNoteMessage: ({
2231
+ instanceId,
2232
+ ...query
2233
+ }, data, params = {}) => this.request({
2234
+ path: `/api/message/${instanceId}/audio-note`,
2235
+ method: "POST",
2236
+ body: data,
2237
+ secure: true,
2238
+ type: ContentType.Json,
2239
+ format: "json",
2240
+ ...params
2241
+ }),
2242
+ /**
2243
+ * @description Envia um arquivo de áudio para um contato ou grupo do WhatsApp
2244
+ *
2245
+ * @tags Mensagens
2246
+ * @name SendMessageControllerSendAudioFileMessage
2247
+ * @summary Enviar Arquivo de Áudio
2248
+ * @request POST:/api/message/{instanceId}/audio-file
2249
+ * @secure
2250
+ * @response `201` `CommonSendMessageResponseDto` Arquivo de áudio enviado com sucesso
2251
+ * @response `400` `void` Dados da requisição inválidos ou formato de áudio inválido
2252
+ * @response `404` `void` Instância do WhatsApp não encontrada
2253
+ */
2254
+ sendMessageControllerSendAudioFileMessage: ({
2255
+ instanceId,
2256
+ ...query
2257
+ }, data, params = {}) => this.request({
2258
+ path: `/api/message/${instanceId}/audio-file`,
2259
+ method: "POST",
2260
+ body: data,
2261
+ secure: true,
2262
+ type: ContentType.Json,
2263
+ format: "json",
2264
+ ...params
2265
+ }),
2266
+ /**
2267
+ * @description Envia um arquivo de documento para um contato ou grupo do WhatsApp
2268
+ *
2269
+ * @tags Mensagens
2270
+ * @name SendMessageControllerSendDocumentMessage
2271
+ * @summary Enviar Documento
2272
+ * @request POST:/api/message/{instanceId}/document
2273
+ * @secure
2274
+ * @response `201` `CommonSendMessageResponseDto` Documento enviado com sucesso
2275
+ * @response `400` `void` Dados da requisição inválidos ou formato de documento inválido
2276
+ * @response `404` `void` Instância do WhatsApp não encontrada
2277
+ */
2278
+ sendMessageControllerSendDocumentMessage: ({
2279
+ instanceId,
2280
+ ...query
2281
+ }, data, params = {}) => this.request({
2282
+ path: `/api/message/${instanceId}/document`,
2283
+ method: "POST",
2284
+ body: data,
2285
+ secure: true,
2286
+ type: ContentType.Json,
2287
+ format: "json",
2288
+ ...params
2289
+ }),
2290
+ /**
2291
+ * @description Encaminha uma mensagem existente para outro contato ou grupo do WhatsApp
2292
+ *
2293
+ * @tags Mensagens
2294
+ * @name SendMessageControllerForwardMessage
2295
+ * @summary Encaminhar Mensagem
2296
+ * @request POST:/api/message/{instanceId}/forward
2297
+ * @secure
2298
+ * @response `201` `CommonSendMessageResponseDto` Mensagem encaminhada com sucesso
2299
+ * @response `400` `void` Dados da requisição inválidos ou mensagem não encontrada
2300
+ * @response `404` `void` Instância do WhatsApp não encontrada
2301
+ */
2302
+ sendMessageControllerForwardMessage: ({
2303
+ instanceId,
2304
+ ...query
2305
+ }, data, params = {}) => this.request({
2306
+ path: `/api/message/${instanceId}/forward`,
2307
+ method: "POST",
2308
+ body: data,
2309
+ secure: true,
2310
+ type: ContentType.Json,
2311
+ format: "json",
2312
+ ...params
2313
+ }),
2314
+ /**
2315
+ * @description Edita o conteúdo de uma mensagem de texto existente
2316
+ *
2317
+ * @tags Mensagens
2318
+ * @name SendMessageControllerEditMessage
2319
+ * @summary Editar Mensagem
2320
+ * @request POST:/api/message/{instanceId}/edit
2321
+ * @secure
2322
+ * @response `201` `CommonSendMessageResponseDto` Mensagem editada com sucesso
2323
+ * @response `400` `void` Dados da requisição inválidos ou mensagem não pode ser editada
2324
+ * @response `404` `void` Instância do WhatsApp ou mensagem não encontrada
2325
+ */
2326
+ sendMessageControllerEditMessage: ({
2327
+ instanceId,
2328
+ ...query
2329
+ }, data, params = {}) => this.request({
2330
+ path: `/api/message/${instanceId}/edit`,
2331
+ method: "POST",
2332
+ body: data,
2333
+ secure: true,
2334
+ type: ContentType.Json,
2335
+ format: "json",
2336
+ ...params
2337
+ }),
2338
+ /**
2339
+ * @description Marca uma mensagem como lida (envia confirmação de leitura)
2340
+ *
2341
+ * @tags Mensagens
2342
+ * @name SendMessageControllerReadMessage
2343
+ * @summary Marcar Mensagem como Lida
2344
+ * @request POST:/api/message/{instanceId}/read
2345
+ * @secure
2346
+ * @response `201` `ReadMessageResponseDto` Mensagem marcada como lida com sucesso
2347
+ * @response `400` `void` Dados da requisição inválidos
2348
+ * @response `404` `void` Instância do WhatsApp ou mensagem não encontrada
2349
+ */
2350
+ sendMessageControllerReadMessage: ({
2351
+ instanceId,
2352
+ ...query
2353
+ }, data, params = {}) => this.request({
2354
+ path: `/api/message/${instanceId}/read`,
2355
+ method: "POST",
2356
+ body: data,
2357
+ secure: true,
2358
+ type: ContentType.Json,
2359
+ format: "json",
2360
+ ...params
2361
+ }),
2362
+ /**
2363
+ * @description Envia uma localização geográfica para um contato ou grupo do WhatsApp
2364
+ *
2365
+ * @tags Mensagens
2366
+ * @name SendMessageControllerSendLocationMessage
2367
+ * @summary Enviar Localização
2368
+ * @request POST:/api/message/{instanceId}/location
2369
+ * @secure
2370
+ * @response `201` `CommonSendMessageResponseDto` Localização enviada com sucesso
2371
+ * @response `400` `void` Dados da requisição inválidos
2372
+ * @response `404` `void` Instância do WhatsApp não encontrada
2373
+ */
2374
+ sendMessageControllerSendLocationMessage: ({
2375
+ instanceId,
2376
+ ...query
2377
+ }, data, params = {}) => this.request({
2378
+ path: `/api/message/${instanceId}/location`,
2379
+ method: "POST",
2380
+ body: data,
2381
+ secure: true,
2382
+ type: ContentType.Json,
2383
+ format: "json",
2384
+ ...params
2385
+ }),
2386
+ /**
2387
+ * @description Envia um cartão de contato para um contato ou grupo do WhatsApp
2388
+ *
2389
+ * @tags Mensagens
2390
+ * @name SendMessageControllerSendContactMessage
2391
+ * @summary Enviar Contato
2392
+ * @request POST:/api/message/{instanceId}/contact
2393
+ * @secure
2394
+ * @response `201` `CommonSendMessageResponseDto` Contato enviado com sucesso
2395
+ * @response `400` `void` Dados da requisição inválidos
2396
+ * @response `404` `void` Instância do WhatsApp não encontrada
2397
+ */
2398
+ sendMessageControllerSendContactMessage: ({
2399
+ instanceId,
2400
+ ...query
2401
+ }, data, params = {}) => this.request({
2402
+ path: `/api/message/${instanceId}/contact`,
2403
+ method: "POST",
2404
+ body: data,
2405
+ secure: true,
2406
+ type: ContentType.Json,
2407
+ format: "json",
2408
+ ...params
2409
+ }),
2410
+ /**
2411
+ * @description Envia um sticker para um contato ou grupo do WhatsApp
2412
+ *
2413
+ * @tags Mensagens
2414
+ * @name SendMessageControllerSendStickerMessage
2415
+ * @summary Enviar Sticker
2416
+ * @request POST:/api/message/{instanceId}/sticker
2417
+ * @secure
2418
+ * @response `201` `CommonSendMessageResponseDto` Sticker enviado com sucesso
2419
+ * @response `400` `void` Dados da requisição inválidos ou formato de sticker inválido
2420
+ * @response `404` `void` Instância do WhatsApp não encontrada
2421
+ */
2422
+ sendMessageControllerSendStickerMessage: ({
2423
+ instanceId,
2424
+ ...query
2425
+ }, data, params = {}) => this.request({
2426
+ path: `/api/message/${instanceId}/sticker`,
2427
+ method: "POST",
2428
+ body: data,
2429
+ secure: true,
2430
+ type: ContentType.Json,
2431
+ format: "json",
2432
+ ...params
2433
+ }),
2434
+ /**
2435
+ * @description Adiciona uma reação (emoji) a uma mensagem existente
2436
+ *
2437
+ * @tags Mensagens
2438
+ * @name SendMessageControllerSendReaction
2439
+ * @summary Enviar Reação
2440
+ * @request POST:/api/message/{instanceId}/reaction
2441
+ * @secure
2442
+ * @response `204` `void` Reação enviada com sucesso
2443
+ * @response `400` `void` Dados da requisição inválidos
2444
+ * @response `404` `void` Instância do WhatsApp ou mensagem não encontrada
2445
+ */
2446
+ sendMessageControllerSendReaction: ({
2447
+ instanceId,
2448
+ ...query
2449
+ }, data, params = {}) => this.request({
2450
+ path: `/api/message/${instanceId}/reaction`,
2451
+ method: "POST",
2452
+ body: data,
2453
+ secure: true,
2454
+ type: ContentType.Json,
2455
+ ...params
2456
+ }),
2457
+ /**
2458
+ * @description Exclui uma mensagem para todos no chat
2459
+ *
2460
+ * @tags Mensagens
2461
+ * @name SendMessageControllerDeleteMessage
2462
+ * @summary Excluir Mensagem
2463
+ * @request DELETE:/api/message/{instanceId}/delete
2464
+ * @secure
2465
+ * @response `204` `void` Mensagem excluída com sucesso
2466
+ * @response `400` `void` Dados da requisição inválidos ou mensagem não pode ser excluída
2467
+ * @response `404` `void` Instância do WhatsApp ou mensagem não encontrada
2468
+ */
2469
+ sendMessageControllerDeleteMessage: ({
2470
+ instanceId,
2471
+ ...query
2472
+ }, data, params = {}) => this.request({
2473
+ path: `/api/message/${instanceId}/delete`,
2474
+ method: "DELETE",
2475
+ body: data,
2476
+ secure: true,
2477
+ type: ContentType.Json,
2478
+ ...params
2479
+ }),
2480
+ /**
2481
+ * @description Obtém um link de download para conteúdo de mídia de uma mensagem
2482
+ *
2483
+ * @tags Mensagens
2484
+ * @name SendMessageControllerGetMessageMediaDownloadLink
2485
+ * @summary Obter Link de Download de Mídia
2486
+ * @request GET:/api/message/{instanceId}/media-download-link/{messageId}
2487
+ * @secure
2488
+ * @response `200` `GetMessageMediaDownloadLinkResponseDto` Link de download de mídia obtido com sucesso
2489
+ * @response `400` `void` Formato de ID da mensagem inválido
2490
+ * @response `404` `void` Instância do WhatsApp, mensagem ou mídia não encontrada
2491
+ */
2492
+ sendMessageControllerGetMessageMediaDownloadLink: ({
2493
+ instanceId,
2494
+ messageId,
2495
+ ...query
2496
+ }, params = {}) => this.request({
2497
+ path: `/api/message/${instanceId}/media-download-link/${messageId}`,
2498
+ method: "GET",
2499
+ secure: true,
2500
+ format: "json",
2501
+ ...params
2502
+ })
2503
+ };
2504
+ }
2505
+
2506
+ export { AuthenticationError, InstanceNotFoundError, InstanceStatus, NetworkError, RateLimitError, TimeoutError, ValidationError, WebhookQueueStatus, ZapyApiError, ZapyClient, ZapyError, ZapyEventTypes, ZapyMessageStatusEnum, ZapyMessageType, Api as ZapyRestApi, createClient, extractPhone, isAudioMessage, isCallMessage, isContactMessage, isDeletedMessage, isDocumentMessage, isEditedMessage, isGroup, isImageMessage, isLiveLocationMessage, isLocationMessage, isMediaMessage, isPollMessage, isPollVoteMessage, isReactionMessage, isStickerMessage, isTextMessage, isUnsupportedMessage, isValidPhone, isVideoMessage, normalizePhone, verifyWebhookSignature, verifyWebhookSignatureAsync };