DescarGest

Documentación de API

Endpoint: /api/pending

Descripción

Este endpoint es consultado por el worker para obtener información sobre el próximo video pendiente. El sistema selecciona el video pendiente más antiguo primero.

Detalles

  • URL: /api/pending
  • Método: GET
  • Autenticación: Bearer Token

Headers

Authorization: Bearer {API_KEY}

Respuesta Exitosa (200 OK)

{
  "videoUrl": "https://ejemplo.com/video.mp4",
  "videoId": "12345",
  "playlist": "Nombre de la Playlist",
  "title": "Título del Video",
  "subtitle": "Subtítulo del Video"
}

Respuesta Vacía (204 No Content)

Cuando no hay videos pendientes.

Respuestas de Error

  • 401 Unauthorized:
    { "error": "No autorizado" }
  • 500 Internal Server Error:
    { "error": "Error al procesar la solicitud" }

Endpoint: /api/report

Descripción

El worker envía actualizaciones de estado y progreso a este endpoint.

Detalles

  • URL: /api/report
  • Método: POST
  • Autenticación: Bearer Token

Headers

Content-Type: application/json
Authorization: Bearer {API_KEY}

Cuerpo de la Solicitud

{
  "status": "progress|error|success",
  "message": "Mensaje descriptivo",
  "timestamp": "2023-05-01T12:00:00Z",
  "videoId": "12345",
  "currentTime": "00:01:30.500", // Opcional, solo para status "progress"
  "percent": 45, // Opcional, solo para status "progress"
  "totalTime": "00:03:20.000" // Opcional, solo para status "progress"
}

Valores posibles para "status"

  • progress: Actualización de progreso durante la descarga
  • error: Error ocurrido durante el procesamiento
  • success: Operación completada con éxito

Respuesta Exitosa (200 OK)

{
  "success": true
}

Respuestas de Error

  • 400 Bad Request:
    { "error": "Faltan campos requeridos: status, videoId, message" }
  • 401 Unauthorized:
    { "error": "No autorizado" }
  • 404 Not Found:
    { "error": "El video no existe" }
  • 500 Internal Server Error:
    { "error": "Error al procesar la solicitud" }

Endpoint: /api/log

Descripción

Este endpoint permite registrar y consultar los logs generados por el worker durante el procesamiento de los videos.

Detalles

  • URL: /api/log
  • Métodos: GET, POST
  • Autenticación: Bearer Token

Headers

Content-Type: application/json
Authorization: Bearer {API_KEY}

Método POST - Cuerpo de la Solicitud

{
  "level": "INFO | ERROR | WARNING",
  "message": "Mensaje descriptivo",
  "timestamp": "2023-05-01T12:00:00Z",
  "videoId": "12345"  // Opcional, si no se proporciona se usa "UNKNOWN"
}

Método GET - Parámetros de Consulta

  • limit (opcional): Número máximo de logs a obtener. Por defecto: 50.
  • level (opcional): Filtrar por nivel de log (INFO, ERROR, WARNING, etc.)

Respuesta GET Exitosa (200 OK)

[
  {
    "level": "INFO",
    "message": "Descarga completada exitosamente",
    "timestamp": "2023-05-01T12:00:00Z",
    "videoId": "12345"
  },
  {
    "level": "ERROR",
    "message": "Error al procesar la solicitud",
    "timestamp": "2023-05-01T11:55:00Z",
    "videoId": "12345"
  }
]

Respuesta POST Exitosa (200 OK)

{
  "success": true
}

Efectos Adicionales

Si se envía un log con nivel "ERROR" para un videoId existente, el sistema actualizará automáticamente el estado del video a "failed" si estaba en proceso o pendiente.

Respuestas de Error

  • 400 Bad Request:
    { "error": "Faltan campos requeridos: level, message, timestamp" }
  • 401 Unauthorized:
    { "error": "No autorizado" }
  • 500 Internal Server Error:
    { "error": "Error al procesar la solicitud" }