{"_id":"@areumtecnologia/unitychat-client-api","_rev":"6-980b57f130516e60f8028af91e5fba61","name":"@areumtecnologia/unitychat-client-api","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.4":{"name":"@areumtecnologia/unitychat-client-api","version":"1.0.4","keywords":["unitychat"],"author":{"name":"Áreum Tecnologia"},"license":"ISC","_id":"@areumtecnologia/unitychat-client-api@1.0.4","maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"dist":{"shasum":"4ddeb70549be12b8022ece4712cc1e9095c8b6ee","tarball":"https://registry.npmjs.org/@areumtecnologia/unitychat-client-api/-/unitychat-client-api-1.0.4.tgz","fileCount":5,"integrity":"sha512-uUUDKXFV3SxwL1wEJTAFehCI0NAsl/h79Jr+7W+tlzpfXaFWRnkM5ghIHeDY87ZXTVNqqO/E8CnfAoaND9rhfA==","signatures":[{"sig":"MEYCIQDDuldxILP+82tbdK97eDxa1sW+8gyneVV06Bgo0b/hDwIhAMbe0Pg9TexX2oXT1qWsBmurrUveWlcpYucqmIzA0zD4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24047},"main":"index.js","type":"commonjs","scripts":{"test":"node --no-warnings tests/test-api.js"},"_npmUser":{"name":"areumtecnologia","email":"dev@areum.com.br"},"_npmVersion":"11.6.0","description":"Biblioteca de acesso do cliente a API UnityChat","directories":{},"_nodeVersion":"25.2.1","dependencies":{"axios":"^1.18.0","dotenv":"^17.4.2","form-data":"^4.0.6"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/unitychat-client-api_1.0.4_1782153481202_0.08123715284175748","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@areumtecnologia/unitychat-client-api","version":"1.0.5","keywords":["unitychat"],"author":{"name":"Áreum Tecnologia"},"license":"ISC","_id":"@areumtecnologia/unitychat-client-api@1.0.5","maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"dist":{"shasum":"413c24b8ebfce6e4581f6b33e7727db24b184b71","tarball":"https://registry.npmjs.org/@areumtecnologia/unitychat-client-api/-/unitychat-client-api-1.0.5.tgz","fileCount":5,"integrity":"sha512-yJ9REdm8Mo/6QJZyi+5Vdfo2bQbCyKbbSYqNgwYKo+LSx2Buj8UKamZCF5JQLzg9QCNAs8ZelFfNW3sQFiqxew==","signatures":[{"sig":"MEQCIFoxLJTsvqR0ZFJQtAo6AaL5ic6ivZvvTE9/Tbcrw1IDAiB+tuL2Uuv951skn+r9ayZ5A7U8rz+9UzhSmaVDooa9Tw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24547},"main":"index.js","type":"commonjs","gitHead":"ee9e9761320602146560007dbe40a042c8c4b8fc","scripts":{"test":"node --no-warnings tests/test-api.js"},"_npmUser":{"name":"areumtecnologia","email":"dev@areum.com.br"},"_npmVersion":"11.6.0","description":"Biblioteca de acesso do cliente a API UnityChat","directories":{},"_nodeVersion":"25.2.1","dependencies":{"axios":"^1.18.0","dotenv":"^17.4.2","form-data":"^4.0.6"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/unitychat-client-api_1.0.5_1782520268859_0.5237896505061923","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@areumtecnologia/unitychat-client-api","version":"1.0.6","description":"Biblioteca de acesso do cliente a API UnityChat","keywords":["unitychat"],"license":"ISC","author":{"name":"Áreum Tecnologia"},"type":"commonjs","main":"index.js","scripts":{"test":"node --no-warnings tests/test-api.js"},"dependencies":{"axios":"^1.18.0","dotenv":"^17.4.2","form-data":"^4.0.6"},"_id":"@areumtecnologia/unitychat-client-api@1.0.6","gitHead":"ee9e9761320602146560007dbe40a042c8c4b8fc","_nodeVersion":"25.2.1","_npmVersion":"11.6.0","dist":{"integrity":"sha512-y7rr96sPt7qUsOYzYZcICQADY2Z1Axm23JDwmb7Gh6d98aqj5VEY4DTwmb7NDUxbZPA70DIaCUkHQdrtApLOdw==","shasum":"cbfb919b8da3c8f9b7f5830d95ebd6a783d9db4e","tarball":"https://registry.npmjs.org/@areumtecnologia/unitychat-client-api/-/unitychat-client-api-1.0.6.tgz","fileCount":5,"unpackedSize":33269,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCfHDWcn40O8DxWaoG0nok+axVW4L2S8GefmX4m7VGcDAIgauvOi46uZlREvbx/9/HqgSeHfgZ9GKLXWNYdKsmzcKw="}]},"_npmUser":{"name":"areumtecnologia","email":"dev@areum.com.br"},"directories":{},"maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/unitychat-client-api_1.0.6_1782520786861_0.05234360217390566"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-22T18:38:01.074Z","modified":"2026-06-27T00:39:47.087Z","1.0.2":"2026-06-22T17:36:32.713Z","1.0.4":"2026-06-22T18:38:01.331Z","1.0.5":"2026-06-27T00:31:09.054Z","1.0.6":"2026-06-27T00:39:46.997Z"},"author":{"name":"Áreum Tecnologia"},"license":"ISC","keywords":["unitychat"],"description":"Biblioteca de acesso do cliente a API UnityChat","maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"readme":"# @areumtecnologia/unitychat-client-api\n\nBiblioteca client oficial em Node.js para integração com a API do **UnityChat**.\n\nEsta biblioteca facilita a autenticação, gerenciamento de sessões do WhatsApp, envio de mensagens (incluindo mensagens estruturadas/customizadas e tipos de dados flexíveis), envio de arquivos (através de Streams, Buffers, caminhos locais ou strings Base64), além de fornecer um middleware integrado para Express e um gerenciador de sessões em memória.\n\nPara garantir robustez e evitar erros de digitação pelo desenvolvedor, a biblioteca fornece **Enumeradores Estáticos** (tipos estáticos congelados) para todas as opções de configuração e tipos de dados de strings repetitivas da API.\n\n---\n\n## Instalação\n\nInstale a biblioteca em seu projeto utilizando o npm ou yarn:\n\n```bash\nnpm install @areumtecnologia/unitychat-client-api\n```\n\n---\n\n## Importação\n\n```javascript\nconst { \n    UnityChatService, \n    UnityChatSession, \n    UnityChatSessionsManager,\n    DisconnectAction,\n    QRCodeFormat,\n    MessageType,\n    FileType,\n    MessageMode,\n    Platform\n} = require('@areumtecnologia/unitychat-client-api');\n```\n\n---\n\n## Enumeradores Estáticos (Evitando Strings Mágicas)\n\nUtilize estes enumeradores para evitar o uso de strings brutas (strings mágicas) que podem ser escritas incorretamente. Todos os objetos são congelados (`Object.freeze`) para evitar modificações acidentais:\n\n*   **`Platform`**: Plataformas suportadas para inicializar sessões de WhatsApp.\n    *   `Platform.ANDROID` (`'android'`)\n    *   `Platform.CHROME` (`'chrome'`)\n*   **`DisconnectAction`**: Tipos de ação ao desconectar uma sessão.\n    *   `DisconnectAction.LOGOUT` (`'logout'`) - Faz logout completo da conta do WhatsApp da sessão atual.\n    *   `DisconnectAction.DISCONNECT` (`'disconnect'`) - Desconecta a sessão temporariamente no serviço sem remover a credencial.\n*   **`QRCodeFormat`**: Opções de retorno do QR Code.\n    *   `QRCodeFormat.RAW` (`true`) - Retorna os dados em string limpa.\n    *   `QRCodeFormat.RENDER` (`'render'`) - Retorna os dados prontos para renderização em tela.\n    *   `QRCodeFormat.NONE` (`false`) - Desativa a geração de QR Code.\n*   **`MessageType`**: Tipos de mensagens a serem enviadas por `sendMessage`.\n    *   `MessageType.TEXT` (`'text'`)\n    *   `MessageType.LINK` (`'link'`)\n    *   `MessageType.LOCATION` (`'location'`)\n    *   `MessageType.RAW` (`'raw'`)\n*   **`FileType`**: Tipos de arquivos para envio de mídias por `sendFiles`.\n    *   `FileType.FILES` (`'files'`)\n    *   `FileType.IMAGE` (`'image'`)\n    *   `FileType.VIDEO` (`'video'`)\n    *   `FileType.AUDIO` (`'audio'`)\n*   **`MessageMode`**: Filtros de tipos de chats para buscas de mensagens.\n    *   `MessageMode.CHAT` (`'chat'`)\n    *   `MessageMode.GROUPS` (`'groups'`)\n\n---\n\n## Guia Rápido de Uso\n\n### 1. Autenticação e Status do Serviço (`UnityChatService`)\n\nO `UnityChatService` é responsável por autenticar suas credenciais (API Key) e obter o token temporário necessário para interagir com as sessões do WhatsApp. Ele também gerencia o status geral dos serviços e sessões da conta.\n\n```javascript\n// O segundo parâmetro (apiVersion) é opcional e tem como padrão 1\nconst unityChatService = new UnityChatService('SUA_API_KEY', 1);\n\nasync function iniciar() {\n    // 1. Autenticar para obter o token de acesso\n    const authData = await unityChatService.authenticate();\n    if (!authData) {\n        console.error('Falha na autenticação. Verifique sua API Key.');\n        return;\n    }\n    console.log('Autenticado com sucesso! Token:', unityChatService.token);\n\n    // 2. Verificar o status dos serviços do UnityChat\n    const status = await unityChatService.getServicesStatus();\n    console.log('Status do serviço:', status);\n\n    // 3. Obter a lista de todas as sessões ativas da conta\n    const sessions = await unityChatService.getSessions();\n    console.log('Sessões ativas:', sessions);\n\n    // 4. Revogar o token quando não for mais necessário\n    // await unityChatService.revoke();\n}\n\niniciar();\n```\n\n#### Middleware para Express (`merger`)\n\nSe você estiver usando Express, pode usar o método `.merger()` como um middleware para injetar automaticamente os dados de autenticação nas requisições:\n\n```javascript\nconst express = require('express');\nconst app = express();\n\napp.use(unityChatService.merger());\n\napp.get('/minha-rota', (req, res) => {\n    // Os dados autenticados estarão disponíveis em req.services.unityChatService.data\n    const authData = req.services.unityChatService.data;\n    res.json({ status: 'OK', authData });\n});\n```\n\n---\n\n### 2. Gerenciamento de Sessões do WhatsApp (`UnityChatSession`)\n\nUma vez autenticado, você pode criar instâncias de `UnityChatSession` usando o token gerado para interagir com instâncias individuais do WhatsApp.\n\n```javascript\n// O terceiro parâmetro (apiVersion) é opcional e tem como padrão 2\nconst session = new UnityChatSession(unityChatService.token, 'nome_da_sessao', 2);\n\n// Opcional: callback para capturar erros de requisições da sessão\nsession.onError = (error) => {\n    console.error('Erro na sessão:', error.message || error);\n};\n```\n\n#### Conectar uma Sessão\n\nInicia ou conecta a sessão do WhatsApp. Você pode passar opções de configuração adicionais.\n\n```javascript\nasync function conectarSessao() {\n    const response = await session.connect({\n        platform: Platform.ANDROID, // Usando Platform enum em vez de 'android'\n        blockIncomingCalls: true // Opcional (bloquear chamadas recebidas no WhatsApp)\n    });\n    console.log('Conexão iniciada:', response);\n}\n```\n\n#### Desconectar ou Deslogar Sessão\n\n```javascript\n// Logout da sessão (faz logout no WhatsApp da sessão atual)\nawait session.disconnect(DisconnectAction.LOGOUT);\n\n// Desconexão temporária (apenas desconecta o serviço sem deslogar o WhatsApp)\nawait session.disconnect(DisconnectAction.DISCONNECT);\n```\n\n#### Obter Status e QR Code\n\n```javascript\n// Verificar status atual do serviço da sessão\nconst status = await session.getStatus();\nconsole.log('Status da sessão:', status);\n\n// Obter o QR Code para pareamento\nconst qrData = await session.getQRcode(QRCodeFormat.RENDER);\nconsole.log('QR Code:', qrData);\n```\n\n---\n\n### 3. Envio de Mensagens e Arquivos\n\n#### Enviar Mensagens (Texto, Links, Localização ou Raw/Custom)\n\n```javascript\n// 1. Mensagem de Texto Simples\nawait session.sendMessage({\n    to: '5591999999999', // Número com DDI + DDD + Telefone\n    type: MessageType.TEXT,\n    body: 'Olá! Esta é uma mensagem de teste.'\n});\n\n// 2. Link com pré-visualização\nawait session.sendMessage({\n    to: '5591999999999',\n    type: MessageType.LINK,\n    title: 'Áreum Tecnologia',\n    subtitle: 'Visite nosso site',\n    url: 'https://unitychat.areum.com.br',\n    body: 'Opcional: texto que acompanha o link'\n});\n\n// 3. Localização geográfica\nawait session.sendMessage({\n    to: '5591999999999',\n    type: MessageType.LOCATION,\n    title: 'Nossa Localização',\n    lat: -1.455833,\n    long: -48.503889\n});\n\n// 4. Mensagem customizada/estruturada (Type 'raw')\n// Útil para enviar botões interativos, templates complexos ou estruturas específicas da API\nawait session.sendMessage({\n    to: '5591999999999',\n    type: MessageType.RAW,\n    body: {\n        title: '📣 Lembrete de Pagamento',\n        text: 'Olá!\\n\\nSua fatura com vencimento está disponível para pagamento!',\n        footer: 'Efetue o pagamento de sua mensalidade usando o link copia e cola abaixo:',\n        interactiveButtons: [\n            // Definição dos botões interativos suportados pela API\n        ]\n    }\n});\n```\n\n#### Enviar Arquivos (Imagens, Vídeos, PDFs, etc.)\n\nO método `sendFiles` suporta o envio de múltiplos arquivos a partir de caminhos locais, Buffers, Streams ou strings Base64 de forma transparente:\n\n```javascript\n// Enviar arquivo a partir de um caminho no sistema de arquivos local\nawait session.sendFiles({\n    to: '5591999999999',\n    type: FileType.FILES,\n    caption: 'Segue o relatório em anexo',\n    files: [\n        {\n            filename: 'relatorio.pdf',\n            path: './caminho/para/o/relatorio.pdf'\n        }\n    ]\n});\n\n// Enviar arquivo a partir de uma String Base64\nawait session.sendFiles({\n    to: '5591999999999',\n    type: FileType.IMAGE,\n    caption: 'Foto de perfil',\n    files: [\n        {\n            filename: 'imagem.png',\n            base64: 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=='\n        }\n    ]\n});\n```\n\n---\n\n## Referência Completa da API\n\nEsta seção descreve exaustivamente todas as classes, suas propriedades, construtores e métodos públicos disponíveis na biblioteca.\n\n### 1. Classe `UnityChatService`\n\nClasse principal responsável pela autenticação geral da conta, controle de tokens globais de acesso e verificação do status dos serviços.\n\n#### Construtor\n*   `new UnityChatService(apiKey, apiVersion = 1)`\n    *   `apiKey` (`string`, Obrigatório): Chave de acesso fornecida pelo UnityChat.\n    *   `apiVersion` (`number`, Opcional): Versão da API global de autenticação (padrão: `1`).\n\n#### Propriedades Públicas\n*   `apiKey` (`string`): A chave de API fornecida.\n*   `apiVersion` (`number`): A versão de API em uso.\n*   `token` (`string | null`): O token JWT temporário gerado e gerenciado após a autenticação bem-sucedida. Inicia como `null`.\n*   `sessions` (`Array`): Array de sessões (inicialmente vazio).\n*   `urls` (`Object`): Lista de endpoints mapeados da API correspondentes à versão selecionada.\n\n#### Métodos Públicos\n\n##### `async authenticate()`\nAutentica as credenciais na API do UnityChat para gerar e guardar o token JWT temporário.\n*   **Retorno**: `Promise<Object | null>`\n    *   Retorna os dados brutos da autenticação (que contém o campo `token`) se for bem-sucedido.\n    *   Atualiza a propriedade pública `this.token` automaticamente.\n    *   Retorna `null` e exibe logs de erro em caso de falha de conexão ou credencial inválida.\n\n##### `async revoke()`\nInvalida/revoga o token JWT temporário ativo no momento.\n*   **Retorno**: `Promise<Object | null>`\n    *   Retorna a confirmação da revogação pela API ou `null` se houver falha.\n    *   Limpa a propriedade pública `this.token` definindo-a como `null`.\n\n##### `async getServicesStatus()`\nVerifica o status atual e funcionamento do serviço global do UnityChat.\n*   **Retorno**: `Promise<Object | null>`\n    *   Retorna os dados de status do sistema ou `null` se houver erro.\n\n##### `async getSessions()`\nRetorna a lista de todas as sessões ativas associadas à conta.\n*   **Retorno**: `Promise<Object | null>`\n    *   Retorna um objeto com a relação das sessões do WhatsApp do usuário ou `null` em caso de erro.\n\n##### `merger()`\nGera um middleware padrão para o framework Express.\n*   **Retorno**: `Function` - Função de middleware do Express `(req, res, next)` que executa `authenticate()` de forma assíncrona antes de chamar a próxima etapa da requisição.\n    *   Injeta o resultado da autenticação em `req.services.unityChatService.data`.\n    *   Em caso de erro na autenticação, o middleware define `req.services.unityChatService.data` como `null` e prossegue com a execução normalmente.\n\n---\n\n### 2. Classe `UnityChatSession`\n\nRepresenta uma sessão ativa do WhatsApp. É utilizada para enviar mensagens, arquivos e realizar pesquisas de dados na sessão vinculada.\n\n#### Construtor\n*   `new UnityChatSession(token, sessionName, apiVersion = 2)`\n    *   `token` (`string`, Obrigatório): O token JWT de acesso gerado por `UnityChatService.authenticate()`.\n    *   `sessionName` (`string`, Obrigatório): Identificador único da sessão (geralmente o número do WhatsApp com DDI e DDD).\n    *   `apiVersion` (`number`, Opcional): Versão da API utilizada para as operações da sessão (padrão: `2`).\n\n#### Propriedades Públicas\n*   `token` (`string`): O token JWT de autenticação atual.\n*   `apiVersion` (`number`): A versão da API da sessão.\n*   `sessionName` (`string`): O nome identificador da sessão.\n*   `urls` (`Object`): Os endpoints de comunicação para as operações de WhatsApp.\n*   `onError` (`Function | undefined`): Callback de erro opcional. Se definido como uma função, será acionado passando o objeto de exceção capturado em falhas HTTP.\n\n#### Métodos Públicos\n\n##### `async connect(options = {})`\nDispara o processo de conexão para iniciar a sessão do WhatsApp.\n*   **Parâmetros**:\n    *   `options` (`Object`, Opcional):\n        *   `platform` (`Platform | string`): Plataforma que a sessão utilizará (`Platform.ANDROID` ou `Platform.CHROME`).\n        *   `blockIncomingCalls` (`boolean`): Habilita o bloqueio automático de chamadas de voz e vídeo recebidas no WhatsApp da sessão.\n*   **Retorno**: `Promise<Object>`\n    *   Retorna os dados da conexão gerados pela API, ou a exceção lançada se houver erro (acionando `onError` se configurado).\n\n##### `async disconnect(action = 'logout')`\nDesconecta ou remove a sessão atual de acordo com a ação selecionada.\n*   **Parâmetros**:\n    *   `action` (`DisconnectAction | string`, Opcional): O tipo da desconexão (`DisconnectAction.LOGOUT` ou `DisconnectAction.DISCONNECT`). Padrão: `'logout'`.\n*   **Retorno**: `Promise<Object>`\n    *   Retorna a confirmação da operação pela API ou a exceção lançada em caso de falha.\n\n##### `async getStatus()`\nObtém informações e status atualizado do WhatsApp (conectado, aguardando QR Code, etc.) para esta sessão.\n*   **Retorno**: `Promise<Object>`\n    *   Retorna o status detalhado da sessão pela API ou a exceção de erro.\n\n##### `async getQRcode(qrCode = true)`\nGera/recupera o código QR necessário para vincular o WhatsApp à sessão criada.\n*   **Parâmetros**:\n    *   `qrCode` (`QRCodeFormat | boolean | string`, Opcional): Formato do QR code a ser retornado.\n        *   `QRCodeFormat.RAW` (`true`) - String bruta.\n        *   `QRCodeFormat.RENDER` (`'render'`) - Retorna pronto para exibição visual.\n        *   `QRCodeFormat.NONE` (`false`) - Desativa geração.\n*   **Retorno**: `Promise<Object>`\n    *   Estrutura contendo a string ou renderização do código QR ou a exceção de erro.\n\n##### `async sendMessage(message = { type: 'text' })`\nEnvia mensagens de diversos tipos para um contato.\n*   **Parâmetros**:\n    *   `message` (`Object`, Obrigatório): Objeto contendo os dados da mensagem.\n        *   `to` (`string`, Obrigatório): Destinatário (DDI + DDD + Número, ex: `'5591999999999'`).\n        *   `type` (`MessageType | string`, Opcional): O tipo da mensagem. Padrão: `MessageType.TEXT`.\n        *   `body` (`string | Object`): Conteúdo de texto da mensagem. Se o tipo for `MessageType.RAW`, aceita um objeto contendo a estrutura customizada da mensagem a ser enviada.\n        *   `title` (`string`, Opcional): Título (usado em mensagens de link e localização).\n        *   `subtitle` (`string`, Opcional): Subtítulo da mensagem (usado em mensagens de link).\n        *   `url` (`string`, Opcional): URL do link (usado em mensagens de link).\n        *   `lat` (`number`, Opcional): Coordenada de latitude (usada em localização).\n        *   `long` (`number`, Opcional): Coordenada de longitude (usada em localização).\n        *   `buttons` (`Array`, Opcional): Array de botões interativos suportados pela API.\n*   **Retorno**: `Promise<Object>`\n    *   Dados da mensagem enviada ou `{ error: exc }` caso ocorra uma falha de envio.\n    *   *Nota*: Este método não joga códigos de erro HTTP (4xx/5xx) no catch; ele intercepta e retorna as respostas de erro da API diretamente.\n\n##### `async sendFiles(message = { type: 'files' })`\nEnvia um ou múltiplos arquivos para um destinatário. Suporta automaticamente caminhos locais, Buffers, Streams ou Strings Base64.\n*   **Parâmetros**:\n    *   `message` (`Object`, Obrigatório):\n        *   `to` (`string`, Obrigatório): Destinatário (DDI + DDD + Número).\n        *   `type` (`FileType | string`, Opcional): Tipo do arquivo (ex: `FileType.FILES`, `FileType.IMAGE`, etc.). Padrão: `'files'`.\n        *   `caption` (`string`, Opcional): Texto de legenda da mensagem.\n        *   `files` (`Array<Object>`, Obrigatório): Array contendo os objetos de mídia para envio. Cada objeto do array deve possuir opcionalmente **apenas um** dos seguintes formatos de dados:\n            *   `filename` (`string`, Opcional): O nome a ser atribuído ao arquivo enviado.\n            *   `path` (`string`): Caminho relativo ou absoluto do arquivo no sistema de arquivos local.\n            *   `base64` (`string`): String codificada em Base64 contendo os dados do arquivo.\n            *   `stream` (`Readable`): Instância de Stream de leitura contendo o arquivo.\n            *   `buffer` (`Buffer`): Instância de Buffer contendo os bytes crus do arquivo.\n*   **Retorno**: `Promise<Object>`\n    *   Retorna a resposta de sucesso de envio de arquivos da API ou lança uma exceção.\n\n##### `async getMessages(options = {})`\nConsulta o histórico ou busca mensagens recebidas/enviadas na sessão atual.\n*   **Parâmetros**:\n    *   `options` (`Object`, Opcional):\n        *   `from` (`string`, Opcional): Número de telefone para filtrar mensagens de uma conversa específica.\n        *   `mode` (`MessageMode | string`, Opcional): Filtro de busca (`MessageMode.CHAT` ou `MessageMode.GROUPS`).\n*   **Retorno**: `Promise<Object | undefined>`\n    *   Retorna a lista de mensagens correspondentes ou `undefined` em caso de erro.\n\n##### `async getConversations(options = {})`\nLista os chats e conversas ativas da sessão atual.\n*   **Parâmetros**:\n    *   `options` (`Object`, Opcional):\n        *   `from` (`string`, Opcional): Número de telefone do contato para obter detalhes de uma conversa específica.\n*   **Retorno**: `Promise<Object | undefined>`\n    *   Lista das conversas retornada pelo endpoint ou `undefined` em caso de erro.\n\n---\n\n### 3. Classe `UnityChatSessionsManager`\n\nUtilitário em memória para ajudar sistemas multitenant ou aplicações a gerenciarem várias instâncias de `UnityChatSession` simultaneamente.\n\n#### Construtor\n*   `new UnityChatSessionsManager()`\n\n#### Propriedades Públicas\n*   `sessions` (`Object`): Dicionário contendo as sessões registradas onde a chave é o `sessionName`.\n\n#### Métodos Públicos\n\n##### `add(unityChatSession)`\nRegistra uma nova sessão de WhatsApp no gerenciador.\n*   `unityChatSession` (`UnityChatSession`, Obrigatório): Instância de sessão a ser registrada.\n\n##### `get(sessionName)`\nRecupera uma instância de sessão registrada a partir do seu nome identificador.\n*   `sessionName` (`string`, Obrigatório): Nome único da sessão.\n*   **Retorno**: `UnityChatSession | undefined`\n\n##### `getAll()`\nRetorna o dicionário completo com todas as sessões registradas na memória.\n*   **Retorno**: `Object` - Relação de sessões estruturadas no formato `{ [sessionName]: UnityChatSession }`.\n\n##### `remove(sessionName)`\nRemove o registro de uma sessão do gerenciador pelo seu identificador.\n*   `sessionName` (`string`, Obrigatório): Nome da sessão a ser excluída.\n\n---\n\n## Desenvolvimento e Testes\n\nSe desejar contribuir ou executar os testes locais do projeto:\n\n1. Clone o repositório.\n2. Crie um arquivo `.env` na raiz do projeto com sua API Key de testes:\n   ```env\n   UNITYCHAT_API_KEY=sua_api_key_aqui\n   ```\n3. Instale as dependências locais:\n   ```bash\n   npm install\n   ```\n4. Execute os testes automatizados da biblioteca:\n   ```bash\n   # Executa os testes de integridade e importações locais das classes e enums\n   node tests/test-import.js\n\n   # Executa os testes de integração reais com a API usando a chave informada no .env\n   npm test\n   ```\n\n## Licença\n\nDistribuído sob a licença **ISC**. Veja o arquivo [package.json](file:///k:/Projects/unitychat-client-api/package.json) para mais detalhes.\n","readmeFilename":"README.md"}