Skip to main content

API Reference

Swagger UI

Explora y prueba la API de Camarauth de forma interactiva usando Swagger UI.

Ver Swagger UI

Abre el Swagger UI con la especificación completa de la API

Endpoints principales

Health Check

GET /health
Verifica que el servidor está funcionando. Respuesta:
{
  "status": "ok",
  "timestamp": "2024-01-01T00:00:00.000Z",
  "activePins": 0,
  "instance": "mi-instancia"
}

Registrar PIN

POST /register-pin
Content-Type: application/json

{
  "pin": "ABC123",
  "emojiString": "🔐🔑🔒"
}
Registra un nuevo PIN para autenticación. Respuesta:
{
  "success": true,
  "message": "PIN registrado correctamente",
  "pinId": "abc123",
  "expiresIn": 180
}

Verificar Login

POST /check-login
Content-Type: application/json

{
  "pin": "ABC123"
}
Verifica si un PIN ha sido autenticado. Respuestas: Pendiente:
{
  "success": true,
  "verified": false,
  "message": "Login pendiente"
}
Verificado:
{
  "success": true,
  "verified": true,
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "refreshToken": "eyJhbGciOiJIUzI1NiIs...",
  "user": {
    "id": "123",
    "name": "Juan",
    "phone": "+1234567890",
    "roles": ["user"]
  }
}

Webhook Evolution API

POST /whatsapp-endpoint
Content-Type: application/json

{
  "event": "messages.upsert",
  "instance": "mi-instancia",
  "data": {
    "key": {
      "remoteJid": "1234567890@s.whatsapp.net",
      "fromMe": false
    },
    "pushName": "Usuario",
    "message": {
      "conversation": "PIN: 🔐🔑🔒"
    }
  }
}
Recibe mensajes de WhatsApp desde Evolution API. Respuesta: 200 OK

Refrescar Token

POST /refresh-token
Authorization: Bearer {access_token}

{
  "id": "123"
}
Genera un nuevo token de acceso. Respuesta:
{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "refreshToken": "eyJhbGciOiJIUzI1NiIs..."
}

Obtener Perfil

GET /profile
Authorization: Bearer {access_token}
Obtiene los datos del usuario autenticado. Respuesta:
{
  "success": true,
  "user": {
    "id": "123",
    "name": "Juan",
    "surname": "Pérez",
    "phone": "+1234567890",
    "roles": ["user"]
  }
}

Logout

POST /logout
Authorization: Bearer {access_token}

{
  "id": "123"
}
Cierra la sesión del usuario. Respuesta:
{
  "success": true,
  "message": "Logout exitoso"
}

Enviar mensaje WhatsApp

POST /send-message
Authorization: Bearer {access_token}
Content-Type: application/json

{
  "phoneNumber": "+1234567890",
  "message": "Hola, tu código es ABC123"
}
Envía un mensaje de WhatsApp manualmente. Respuesta:
{
  "success": true,
  "message": "Mensaje enviado"
}

WebSocket Events

Cliente → Servidor

// Registrar PIN
socket.emit("register-pin", {
  pin: "ABC123",
  emojiString: "🔐🔑🔒",
});

// Cancelar autenticación
socket.emit("cancel-auth", {
  pin: "ABC123",
});

Servidor → Cliente

// PIN registrado
socket.on("pin-registered", (data) => {
  console.log("PIN registrado:", data.pinId);
});

// Autenticación exitosa
socket.on("auth-success", (data) => {
  console.log("Token:", data.token);
  console.log("Usuario:", data.user);
});

// PIN expirado
socket.on("pin-expired", (data) => {
  console.log("PIN expirado:", data.pin);
});

// Error
socket.on("pin-error", (data) => {
  console.error("Error:", data.error);
});

Códigos de error

CódigoHTTPDescripción
PIN_EXPIRED410El PIN ha expirado
PIN_NOT_FOUND404PIN no existe
AUTHENTICATION_FAILED401Autenticación fallida
REFRESH_TOKEN_EXPIRED401Refresh token expirado
VALIDATION_ERROR400Datos inválidos
NETWORK_ERROR503Error de red

Descargar especificación

Postman Collection

Importar a Postman

Descarga la colección de Postman lista para usar