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 Elysiumhash: 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 quandotipo = '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 imagemdelay: 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
searchpara encontrar planos específicos - Ajuste
limitconforme 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_idounumero.
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_idounumero.
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 agendamentoObter Agendamento
// Exemplo de obtenção de um agendamento específico
const agendamento = await api.getAgendamento(123); // ID do agendamentoA 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
