Saltar a contenido

Revisar Bloque (Aprobar/Rechazar)

POST /api/v2/blocks/student-block/:id/review

Permite aprobar o rechazar un bloque que está en estado pending.


Headers

Header Tipo Requerido Descripción
Authorization Bearer Token Token JWT del administrador

Parámetros de URL

Parámetro Tipo Descripción
id number ID del student_block a revisar

Body

{
  "action": "approve" | "reject",
  "reason": "string (requerido si action es 'reject')"
}
Campo Tipo Requerido Descripción
action string "approve" o "reject"
reason string Solo si reject Motivo del rechazo

Respuestas

Aprobar (200)

{
  "ok": true,
  "studentBlockId": 14,
  "blockId": 5,
  "studentId": 10,
  "previousStatus": "pending",
  "newStatus": "closed",
  "action": "approve",
  "message": "Bloque aprobado correctamente. Estado cambiado a 'closed'."
}

Rechazar (200)

{
  "ok": true,
  "studentBlockId": 14,
  "blockId": 5,
  "studentId": 10,
  "previousStatus": "pending",
  "newStatus": "rejected",
  "action": "reject",
  "threadMessageId": 1,
  "message": "Bloque rechazado. Estado cambiado a 'rejected'. Se ha iniciado un hilo de conversación."
}

Errores

Código Mensaje Descripción
400 action must be 'approve' or 'reject' Acción inválida
400 reason is required when rejecting Falta el motivo del rechazo
400 Block can only be reviewed when status is 'pending' El bloque no está en estado pending
401 Unauthorized Token inválido o faltante
404 StudentBlock not found No se encontró el registro

Ejemplo

Aprobar

curl -X POST 'http://localhost:7001/api/v2/blocks/student-block/14/review' \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  -d '{"action": "approve"}'

Rechazar

curl -X POST 'http://localhost:7001/api/v2/blocks/student-block/14/review' \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  -d '{
    "action": "reject",
    "reason": "El bloque no tiene suficientes contenidos evaluados."
  }'

Notas

  • Al aprobar, el estado cambia de pending a closed
  • Al rechazar, el estado cambia de pending a rejected
  • Al rechazar se crea automáticamente el primer mensaje del hilo de conversación
  • Se envía email de notificación al profesor en ambos casos