API Documentation

Documentación completa de la API de The Hackers Labs Vault. Descubre todos los endpoints disponibles para integrar con nuestra plataforma de ciberseguridad.

🌐 API Pública

Endpoints disponibles sin autenticación para consultar máquinas y filtros

GET /api/health
Verifica el estado de la API y obtiene información de tiempo.

📤 Respuesta

{ "status": "healthy", "timestamp": "2025-01-27T12:00:00.000Z" }
📊 Códigos de Estado
200 API funcionando correctamente
GET /api/machines
Obtiene la lista de máquinas disponibles con opciones de filtrado y búsqueda.

📝 Parámetros de Consulta

searchstring
Búsqueda en nombre, descripción, objetivos, técnicas y certificaciones (separar múltiples términos por comas)
levelstring
Filtrar por nivel de dificultad (Principiante, Intermedio, Avanzado, Profesional, Experto)
certificationsstring
Filtrar por certificaciones (separar múltiples por comas)
techniquesstring
Filtrar por técnicas de hacking (separar múltiples por comas)

📤 Respuesta

{ "machines": [ { "id": 1, "name": "Web Exploitation Lab", "image_url": "https://...", "level": "Principiante", "certifications": ["eJPT", "eCPPTv3"], "techniques": ["Web Hacking", "SQL Injection"], "learning_objectives": "Aprenderás SQL Injection...", "writeup_url": "https://...", "machine_url": "https://...", "description": "Una máquina ideal...", "created_at": "2025-01-27 12:00:00" } ] }
📊 Códigos de Estado
200 Máquinas obtenidas correctamente
GET /api/filters
Obtiene todas las opciones disponibles para filtrar máquinas.

📤 Respuesta

{ "levels": [ "Principiante", "Intermedio", "Avanzado", "Profesional", "Experto" ], "certifications": [ "eJPT", "eCPPTv3", "OSCP", "OSCE" ], "techniques": [ "Web Hacking", "SQL Injection", "XSS", "Pivoting" ] }
📊 Códigos de Estado
200 Filtros obtenidos correctamente

🔐 Autenticación

Sistema de autenticación JWT para acceso administrativo

POST /api/admin/login
Autenticar como administrador y obtener token JWT.

📝 Parámetros de Formulario

usernamestring
Nombre de usuario del administrador
passwordstring
Contraseña del administrador

📤 Respuesta Exitosa

{ "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", "token_type": "bearer" }
📊 Códigos de Estado
200 Login exitoso, token generado
401 Credenciales inválidas

🛠️ API de Administración

Endpoints protegidos para gestión de máquinas y filtros (requiere token JWT)

GET /api/admin/machines 🔒 AUTH
Obtiene todas las máquinas con formato de administración (sin procesar arrays).

📝 Headers

Authorizationstring
Bearer {jwt_token}
📊 Códigos de Estado
200 Máquinas obtenidas correctamente
401 Token inválido o faltante
POST /api/admin/machines 🔒 AUTH
Crear una nueva máquina en el sistema.

📝 Headers

Authorizationstring
Bearer {jwt_token}

📝 Parámetros de Formulario

namestring
Nombre de la máquina
image_urlurl
URL de la imagen de la máquina
levelstring
Nivel de dificultad
certificationsstring
Certificaciones (separadas por comas)
techniquesstring
Técnicas (separadas por comas)
learning_objectivestext
Objetivos de aprendizaje
writeup_urlurl
URL del write-up
machine_urlurl
URL de la máquina
descriptiontext
Descripción de la máquina
📊 Códigos de Estado
200 Máquina creada correctamente
401 No autorizado
422 Error de validación
PUT /api/admin/machines/{machine_id} 🔒 AUTH
Actualizar una máquina existente.

📝 Path Parameters

machine_idinteger
ID de la máquina a actualizar
📊 Códigos de Estado
200 Máquina actualizada correctamente
404 Máquina no encontrada
DELETE /api/admin/machines/{machine_id} 🔒 AUTH
Eliminar una máquina del sistema.

📝 Path Parameters

machine_idinteger
ID de la máquina a eliminar
📊 Códigos de Estado
200 Máquina eliminada correctamente
404 Máquina no encontrada
GET /api/admin/filter-options 🔒 AUTH
Obtener todas las opciones de filtros disponibles para administración.
POST /api/admin/filter-options 🔒 AUTH
Crear nueva opción de filtro.

📝 Parámetros de Formulario

filter_typestring
Tipo de filtro (levels, certifications, techniques)
option_valuestring
Valor de la opción
DELETE /api/admin/filter-options/{option_id} 🔒 AUTH
Eliminar opción de filtro.

🚀 Probar la API

Utiliza estos enlaces para probar los endpoints públicos directamente: