npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

elysium-api

v1.2.5

Published

API moderna e futurista para integração com o sistema Elysium

Readme

ElysiumApi

Uma biblioteca moderna e futurista para integração com o sistema Elysium. Esta API oferece uma interface elegante e eficiente para interagir com os serviços do Elysium.

🚀 Instalação

npm install elysium-api

⚙️ Configuração

A API suporta tanto o formato CommonJS (require) quanto ES Modules (import):

CommonJS (require)

const ElysiumApi = require("elysium-api");

const api = new ElysiumApi({
  email: "[email protected]",
  hash: "seu-hash-de-autenticacao",
});

ES Modules (import)

import ElysiumApi from "elysium-api";

const api = new ElysiumApi({
  email: "[email protected]",
  hash: "seu-hash-de-autenticacao",
});

🔐 Autenticação

A autenticação é feita através de dois parâmetros:

  • email: Seu email registrado no sistema Elysium
  • hash: Sua chave de autenticação fornecida pelo sistema

⚠️ IMPORTANTE: Nunca compartilhe suas credenciais ou as exponha no código fonte público.

🌟 Recursos

  • Interface moderna e intuitiva
  • Suporte completo às funcionalidades do Elysium
  • Tratamento de erros robusto
  • Documentação completa
  • Suporte a Promises/Async-Await
  • Compatível com CommonJS e ES Modules
  • Tipagem TypeScript incluída

📚 Exemplos de Uso

// Exemplo básico de uso da API
const api = new ElysiumApi({
  email: "[email protected]",
  hash: "seu-hash",
});

📚 Exemplos de Uso

Criação de Cliente

// Exemplo de criação de um novo cliente
(async () => {
  try {
    const clientes = await api.createClient({
      nome: "Fernando",
      numero: "000000000",
      plano_id: "264",
      email_cliente: "[email protected]", // email ou usuario
      vencimento: "2025-10-31",
      observacao: "Observação", // opcional
    });
    console.log(clientes);
  } catch (error) {
    if (error) {
      console.error("Detalhes:", error);
    }
  }
})();

Deletar Cliente

A API oferece duas formas flexíveis para deletar um cliente:

1. Deletar por Número de Telefone

// Exemplo de deleção usando número de telefone
const deletarPorNumero = await api.deleteClient({
  identificador_tipo: "numero",
  identificador_valor: "11987654321",
});

2. Deletar por Email

// Exemplo de deleção usando email
const deletarPorEmail = await api.deleteClient({
  identificador_tipo: "email",
  identificador_valor: "[email protected]",
});

Exemplo Completo

// Demonstração das duas formas de deleção
(async () => {
  try {
    // Deletando cliente por número
    const resultadoNumero = await api.deleteClient({
      identificador_tipo: "numero",
      identificador_valor: "11987654321",
    });
    console.log("Cliente deletado por número:", resultadoNumero);

    // Deletando cliente por email
    const resultadoEmail = await api.deleteClient({
      identificador_tipo: "email",
      identificador_valor: "[email protected]",
    });
    console.log("Cliente deletado por email:", resultadoEmail);
  } catch (error) {
    console.error("Erro ao deletar cliente:", error);
  }
})();

Parâmetros para Deletar Cliente

| Parâmetro | Valores Possíveis | Descrição | | ------------------- | ------------------- | ---------------------------------------- | | identificador_tipo | 'numero' ou 'email' | Tipo de identificação do cliente | | identificador_valor | string | Valor do identificador (número ou email) |

Consultar Cliente

A API permite consultar informações de um cliente de duas maneiras:

1. Consulta por Número de Telefone

// Exemplo de consulta usando número de telefone
const clientePorNumero = await api.getClient({
  identificador_tipo: "numero",
  identificador_valor: "1198654321",
});

2. Consulta por Email

// Exemplo de consulta usando email
const clientePorEmail = await api.getClient({
  identificador_tipo: "email",
  identificador_valor: "[email protected]",
});

Exemplo Completo

// Demonstração de consulta de cliente
(async () => {
  try {
    // Consultando cliente por número
    const cliente = await api.getClient({
      identificador_tipo: "numero",
      identificador_valor: "1198654321",
    });
    console.log("Dados do cliente:", cliente);
  } catch (error) {
    console.error("Erro ao consultar cliente:", error);
  }
})();

Parâmetros para Consulta de Cliente

| Parâmetro | Valores Possíveis | Descrição | | ------------------- | ------------------- | ---------------------------------------- | | identificador_tipo | 'numero' ou 'email' | Tipo de identificação do cliente | | identificador_valor | string | Valor do identificador (número ou email) |

Listar Clientes

O método listClients permite buscar uma lista de clientes com filtros opcionais:

1. Listagem Simples

// Lista todos os clientes com configurações padrão
const clientes = await api.listClients();

2. Listagem com Filtros

// Lista clientes com filtros específicos
const clientesFiltrados = await api.listClients({
  status: "vencidos", // Filtra por status
  search: "cliente 1", // Busca por termo
  page: 1, // Página atual
  limit: 10, // Itens por página
});

Exemplo Completo

(async () => {
  try {
    // Exemplo 1: Listagem básica
    const todosClientes = await api.listClients();
    console.log("Todos os clientes:", todosClientes);

    // Exemplo 2: Listagem com filtros
    const clientesFiltrados = await api.listClients({
      status: "vencidos",
      search: "cliente 1",
      page: 1,
      limit: 10,
    });
    console.log("Clientes filtrados:", clientesFiltrados);
  } catch (error) {
    console.error("Erro ao listar clientes:", error);
  }
})();

Parâmetros para Listagem de Clientes

| Parâmetro | Tipo | Descrição | Obrigatório | | --------- | ------ | --------------------------------------------- | ----------- | | status | string | Filtra por status do cliente (ex: 'vencidos') | Não | | search | string | Termo para busca de clientes | Não | | page | number | Número da página (padrão: 1) | Não | | limit | number | Quantidade de itens por página (padrão: 10) | Não |

Atualizar Cliente

O método updateClient permite atualizar os dados de um cliente de forma flexível:

1. Atualização Mínima

// Atualiza apenas o vencimento do cliente
const atualizacaoMinima = await api.updateClient({
  identificador_tipo: "email",
  identificador_valor: "[email protected]",
  vencimento: "2025-10-31", // Apenas campo obrigatório
});

2. Atualização Completa

// Atualiza todos os campos disponíveis
const atualizacaoCompleta = await api.updateClient({
  identificador_tipo: "email",
  identificador_valor: "[email protected]",
  nome: "Cliente Atualizado",
  email_cliente: "[email protected]",
  plano_id: "234",
  vencimento: "2024-10-31",
  observacao: "Observação",
});

Exemplo Completo

(async () => {
  try {
    // Exemplo 1: Atualização mínima
    const atualizacaoSimples = await api.updateClient({
      identificador_tipo: "email",
      identificador_valor: "[email protected]",
      vencimento: "2025-10-31",
    });
    console.log("Atualização simples:", atualizacaoSimples);

    // Exemplo 2: Atualização completa
    const atualizacaoCompleta = await api.updateClient({
      identificador_tipo: "email",
      identificador_valor: "[email protected]",
      nome: "Cliente Atualizado",
      email_cliente: "[email protected]",
      plano_id: "234",
      vencimento: "2024-10-31",
      observacao: "Observação",
    });
    console.log("Atualização completa:", atualizacaoCompleta);
  } catch (error) {
    console.error("Erro ao atualizar cliente:", error);
  }
})();

Parâmetros para Atualização de Cliente

| Parâmetro | Tipo | Descrição | Obrigatório | | ------------------- | ------ | ------------------------------------------- | ----------- | | identificador_tipo | string | Tipo de identificação ('email' ou 'numero') | Sim | | identificador_valor | string | Valor do identificador | Sim | | vencimento | string | Data de vencimento (YYYY-MM-DD) | Sim | | nome | string | Nome do cliente | Não | | email_cliente | string | Email do cliente | Não | | plano_id | string | ID do plano | Não | | observacao | string | Observações adicionais | Não |

📱 Enviar Mensagem Individual

O método sendSingleMessage permite enviar mensagens personalizadas para um cliente específico, suportando texto e imagens:

1. Envio de Mensagem de Texto

// Exemplo de envio de mensagem de texto
const mensagemTexto = await api.sendSingleMessage({
  identificador_tipo: "email",
  identificador_valor: "[email protected]",
  mensagem: "Olá, tudo bem?",
  tipo: "1", // tipo 1 = texto
  delay: "1", // velocidade de envio (1 a 5)
});

2. Envio de Mensagem com Imagem

// Exemplo de envio de mensagem com imagem
const mensagemImagem = await api.sendSingleMessage({
  identificador_tipo: "numero",
  identificador_valor: "11987654321",
  mensagem: "Confira nossa promoção!",
  tipo: "2", // tipo 2 = imagem
  delay: "1",
  imagem: "data:image/png;base64,...", // sua imagem em base64
});

Exemplo Completo

(async () => {
  try {
    const envioMensagem = await api.sendSingleMessage({
      identificador_tipo: "email",
      identificador_valor: "[email protected]",
      mensagem: "Olá, tudo bem?",
      tipo: "2",
      delay: "0",
      imagem: "data:image/png;base64,...", // necessário apenas para tipo 2
    });
    console.log("Status do envio:", envioMensagem);
  } catch (error) {
    console.error("Erro ao enviar mensagem:", error);
  }
})();

Parâmetros para Envio de Mensagem

| Parâmetro | Tipo | Descrição | Obrigatório | | ------------------- | ------ | ----------------------------------------------------- | ------------- | | identificador_tipo | string | Tipo de identificação ('email' ou 'numero') | Sim | | identificador_valor | string | Email ou número do cliente | Sim | | mensagem | string | Texto da mensagem | Sim | | tipo | string | Tipo de mensagem ('1' = texto, '2' = imagem) | Sim | | delay | string | Velocidade de envio (0 = mais rápido, 5 = mais lento) | Sim | | imagem | string | Imagem em formato base64 (apenas quando tipo = '2') | Condicional* |

*O parâmetro imagem é obrigatório apenas quando tipo = '2' (mensagem com imagem)

⚡ Velocidades de Envio (delay)

| Valor | Velocidade | | ----- | ---------------- | | 0 | 10 a 20 segundos | | 1 | 20 a 30 segundos | | 2 | 30 a 40 segundos | | 3 | 40 a 50 segundos | | 4 | 50 a 60 segundos | | 5 | 60 a 70 segundos |

📢 Enviar Mensagem em Massa para Plano

// Exemplo de envio em massa
const envioMassivo = await api.sendMessageplan({
  plano_id: "264", // obrigatório
  mensagem: "teste", // obrigatório
  tipo: "1", // 1 para texto, 2 para imagem
  delay: "0", // 0 para mais rápido, 5 para mais lento
  imagem: "data:image/png;base64,...", // obrigatório quando tipo = '2'
});

Parâmetros

  • plano_id: ID do plano (obrigatório)
  • mensagem: Texto da mensagem (obrigatório)
  • tipo: '1' para texto, '2' para imagem
  • delay: 0 (mais rápido) a 5 (mais lento)
  • imagem: Base64 da imagem (obrigatório se tipo = '2')

⚡ Delays

  • 0: 10-20 segundos
  • 1: 20-30 segundos
  • 2: 30-40 segundos
  • 3: 40-50 segundos
  • 4: 50-60 segundos
  • 5: 60-70 segundos

📋 Criar Plano

O método createPlan permite criar um novo plano no sistema:

// Exemplo de criação de plano
const novoPlan = await api.createPlan({
  nome: "Plano Teste Premium", // Nome do plano
  valor: 100, // Valor em reais
  duracao: 30, // Duração em dias
  hora_disparo: "00:00", // Hora de disparo das mensagens
});

Exemplo Completo

(async () => {
  try {
    const plano = await api.createPlan({
      nome: "Plano Teste Premium",
      valor: 100,
      duracao: 30,
      hora_disparo: "00:00",
    });
    console.log("Plano criado:", plano);
  } catch (error) {
    console.error("Erro ao criar plano:", error);
  }
})();

Parâmetros para Criação de Plano

| Parâmetro | Tipo | Descrição | Obrigatório | | ------------ | ------ | ---------------------------------------- | ----------- | | nome | string | Nome do plano | Sim | | valor | number | Valor do plano em reais | Sim | | duracao | number | Duração do plano em dias | Sim | | hora_disparo | string | Horário de disparo das mensagens (HH:mm) | Sim |

📋 Listar Planos

O método listPlans permite buscar e filtrar planos do sistema. Todos os parâmetros são opcionais:

1. Listagem Simples

// Lista todos os planos com configuração padrão
const planos = await api.listPlans();

2. Listagem com Filtros

// Lista planos com filtros específicos
const planosFiltrados = await api.listPlans({
  search: "premium", // Busca por nome do plano
  page: 1, // Página atual
  limit: 10, // Itens por página
});

Exemplo Completo

(async () => {
  try {
    // Exemplo de listagem com filtros
    const planos = await api.listPlans({
      search: "premium", // opcional: termo de busca
      page: 1, // opcional: página (padrão: 1)
      limit: 10, // opcional: itens por página (padrão: 10)
    });
    console.log("✨ Planos encontrados:", planos);
  } catch (error) {
    console.error("❌ Erro na busca:", error);
  }
})();

⚙️ Parâmetros de Listagem

| Parâmetro | Tipo | Descrição | Obrigatório | | --------- | ------ | ------------------------ | ----------- | | search | string | Termo para buscar planos | Não | | page | number | Número da página | Não | | limit | number | Itens por página | Não |

💡 Dicas de Uso

  • Use search para encontrar planos específicos
  • Ajuste limit conforme necessidade de visualização
  • Utilize a paginação para melhor performance
  • Todos os parâmetros são opcionais

🔄 Atualizar Plano

O método updatePlan permite atualizar as informações de um plano existente:

// Exemplo de atualização de plano
const planoAtualizado = await api.updatePlan("266", {
  nome: "Plano Premium 2.0",
  valor: 100,
  duracao: 30,
  hora_disparo: "00:00",
});

Exemplo Completo

(async () => {
  try {
    const plano = await api.updatePlan("266", {
      nome: "Plano Premium 2.0",
      valor: 100,
      duracao: 30,
      hora_disparo: "00:00",
    });
    console.log("✨ Plano atualizado:", plano);
  } catch (error) {
    console.error("❌ Erro na atualização:", error);
  }
})();

⚙️ Parâmetros de Atualização

| Parâmetro | Tipo | Descrição | Obrigatório | | ------------ | ------ | ------------------------------- | ----------- | | plano_id | string | ID do plano a ser atualizado | Sim | | nome | string | Novo nome do plano | Sim | | valor | number | Novo valor em reais | Sim | | duracao | number | Nova duração em dias | Sim | | hora_disparo | string | Novo horário de disparo (HH:mm) | Sim |

📊 Estrutura de Retorno

{
    success: true,
    message: "Plano atualizado com sucesso",
    data: {
        id: "266",
        nome: "Plano Premium 2.0",
        valor: 100,
        duracao: 30,
        hora_disparo: "00:00",
        status: "ativo",
        updated_at: "2025-02-08T01:01:02"
    }
}

💡 Dicas de Uso

  • Sempre verifique o ID do plano antes de atualizar
  • Mantenha o histórico de alterações para controle
  • Atualize apenas os campos necessários
  • Considere o impacto nos clientes existentes

📅 Agendamentos

A API oferece funcionalidades para gerenciar agendamentos de mensagens para clientes.

Criar Agendamento

O método createAgendamento permite criar um novo agendamento de mensagem:

// Exemplo de criação de agendamento
const novoAgendamento = await api.createAgendamento({
  cliente_id: 123, // ID do cliente (obrigatório se não fornecer número)
  numero: "5511999998888", // Número do cliente (obrigatório se não fornecer cliente_id)
  data: "2023-11-15", // Data no formato YYYY-MM-DD
  hora: "14:30", // Hora no formato HH:MM
  mensagem: "Olá, confirmando seu agendamento!" // Opcional
});

Exemplo Completo

(async () => {
  try {
    const agendamento = await api.createAgendamento({
      cliente_id: 123,
      data: "2023-11-15",
      hora: "14:30",
      mensagem: "Olá, confirmando seu agendamento!"
    });
    console.log("Agendamento criado:", agendamento);
  } catch (error) {
    console.error("Erro ao criar agendamento:", error);
  }
})();

Parâmetros para Criação de Agendamento

| Parâmetro | Tipo | Descrição | Obrigatório | | ---------- | ------ | ------------------------------------------- | ----------- | | cliente_id | number | ID do cliente | Condicional*| | numero | string | Número do telefone | Condicional*| | data | string | Data do agendamento (YYYY-MM-DD) | Sim | | hora | string | Hora do agendamento (HH:MM) | Sim | | mensagem | string | Mensagem a ser enviada | Não |

* Obrigatório informar ou cliente_id ou numero.

Atualizar Agendamento

O método updateAgendamento permite atualizar um agendamento existente:

// Exemplo de atualização de agendamento
const agendamentoAtualizado = await api.updateAgendamento(456, {
  cliente_id: 123,
  data: "2023-11-16",
  hora: "15:00",
  status: "concluido" // pendente, concluido ou cancelado
});

Parâmetros para Atualização de Agendamento

| Parâmetro | Tipo | Descrição | Obrigatório | | ------------ | ------ | ----------------------------------------------- | ----------- | | agendamentoId| number | ID do agendamento a ser atualizado | Sim | | cliente_id | number | ID do cliente | Condicional*| | numero | string | Número do telefone | Condicional*| | data | string | Data do agendamento (YYYY-MM-DD) | Sim | | hora | string | Hora do agendamento (HH:MM) | Sim | | mensagem | string | Mensagem a ser enviada | Não | | status | string | Status do agendamento (pendente/concluido/cancelado) | Não |

* Obrigatório informar ou cliente_id ou numero.

Listar Agendamentos

O método listAgendamentos permite buscar e filtrar agendamentos:

// Exemplo de listagem de agendamentos com filtros
const agendamentos = await api.listAgendamentos({
  status: "pendente", // Filtrar por status
  search: "cliente", // Busca por cliente
  date_start: "2023-11-01", // Data inicial
  date_end: "2023-11-30", // Data final
  page: 1, // Página atual
  limit: 20 // Itens por página
});

Parâmetros para Listagem de Agendamentos

| Parâmetro | Tipo | Descrição | Obrigatório | | ---------- | ------ | --------------------------------------------- | ----------- | | status | string | Filtro por status (pendente/concluido/cancelado) | Não | | search | string | Termo para busca | Não | | date_start | string | Data inicial do período (YYYY-MM-DD) | Não | | date_end | string | Data final do período (YYYY-MM-DD) | Não | | page | number | Número da página | Não | | limit | number | Itens por página | Não |

Excluir Agendamento

// Exemplo de exclusão de agendamento
const resultado = await api.deleteAgendamento(123); // ID do agendamento

Obter Agendamento

// Exemplo de obtenção de um agendamento específico
const agendamento = await api.getAgendamento(123); // ID do agendamento

📱 WhatsApp

A API oferece funcionalidades para verificar o status da conexão com o WhatsApp.

Verificar Status do WhatsApp

O método getWhatsAppStatus permite verificar se o WhatsApp está conectado:

// Exemplo de verificação de status do WhatsApp
const statusWhatsApp = await api.getWhatsAppStatus();

Exemplo de Resposta

// Quando conectado
{
  success: true,
  status: "connected",
  number: "5511999999999",
  name: "Nome do dispositivo"
}

// Quando desconectado
{
  success: true,
  status: "disconnected",
  number: "5511999999999"
}

Exemplo Completo

(async () => {
  try {
    const status = await api.getWhatsAppStatus();
    console.log("Status do WhatsApp:", status);
    
    if (status.status === "connected") {
      console.log("WhatsApp conectado no dispositivo:", status.device);
    } else {
      console.log("WhatsApp desconectado");
    }
  } catch (error) {
    console.error("Erro ao verificar status do WhatsApp:", error);
  }
})();

Obter Foto de Perfil do WhatsApp

O método getWhatsAppProfilePicture permite obter a URL da foto de perfil de um número do WhatsApp:

// Exemplo de obtenção de foto de perfil
const fotoPerfil = await api.getWhatsAppProfilePicture("11999999999");

Exemplo de Resposta

{
  success: true,
  foto_url: "https://url-da-foto-de-perfil.jpg"
}

Exemplo Completo

(async () => {
  try {
    const fotoPerfil = await api.getWhatsAppProfilePicture("11999999999");
    console.log("URL da foto de perfil:", fotoPerfil.foto_url);
  } catch (error) {
    console.error("Erro ao obter foto de perfil:", error);
  }
})();

Parâmetros

| Parâmetro | Tipo | Descrição | Obrigatório | | --------- | ------ | ---------------------------- | ----------- | | numero | string | Número do WhatsApp do contato| Sim |

Observações

  • O número deve estar no formato DDI+DDD+NÚMERO (exemplo: 11999999999)
  • O sistema automaticamente adiciona o código do país (55) se necessário
  • Para números com DDD < 28, o sistema verifica e adiciona o 9 se necessário