RDS Kids API v1
Laravel 11 · PHP 8.3
REST API v1.0

RDS Kids API

API REST para la plataforma educativa RDS Kids. Permite gestionar estudiantes, cursos de Scratch y Roblox, progreso, tareas y entregas.

Framework
Laravel 11
Auth
Laravel Sanctum
Base de datos
MySQL
Formato
JSON

Autenticación

La API usa Laravel Sanctum con tokens Bearer. Incluye el token en el header de cada petición protegida:

# Header requerido en endpoints protegidos
Authorization: Bearer {tu_token}
200 OK
Éxito
401 Unauthorized
Token inválido
422 Unprocessable
Validación fallida

Autenticación

Registro, login y gestión de sesión

Pública
POST /api/auth/register

Registrar un nuevo estudiante

Body (JSON)

name *
string | requerido
email
string | email | único
password
string | mín. 8 | confirmed
password_confirmation *
string | requerido

Respuesta 200

// JSON response
{ "token": "string", "user": [ "id", "name", "email", "rol", ], }

Ejemplo cURL

curl -X POST \
-H "Content-Type: application/json"
\
-d '{"name": "..."}'

https://rdskids-api.rdsdevs.com/api/auth/register
POST /api/auth/login

Iniciar sesión y obtener token Sanctum

Body (JSON)

email
string | email
password
string

Respuesta 200

// JSON response
{ "token": "string", "user": [ "id", "name", "email", ], }

Ejemplo cURL

curl -X POST \
-H "Content-Type: application/json"
\
-d '{"email": "..."}'

https://rdskids-api.rdsdevs.com/api/auth/login
POST /api/auth/logout

Cerrar sesión y revocar token

Respuesta 200

// JSON response
{ "message": "string", }

Ejemplo cURL

curl -X POST \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/auth/logout
POST /api/auth/forgot-password

Enviar correo de recuperación

Body (JSON)

email
string | email

Respuesta 200

// JSON response
{ "message": "string", }

Ejemplo cURL

curl -X POST \
-H "Content-Type: application/json"
\
-d '{"email": "..."}'

https://rdskids-api.rdsdevs.com/api/auth/forgot-password
POST /api/auth/reset-password

Resetear contraseña con token

Body (JSON)

email
string
password
string | confirmed
token
string

Respuesta 200

// JSON response
{ "message": "string", }

Ejemplo cURL

curl -X POST \
-H "Content-Type: application/json"
\
-d '{"email": "..."}'

https://rdskids-api.rdsdevs.com/api/auth/reset-password

Perfil del Estudiante

Datos personales, estadísticas y logros

Requiere auth
GET /api/estudiante/perfil

Obtener nombre, nivel, racha y puntos del estudiante autenticado

Respuesta 200

// JSON response
{ "id": "int", "name": "string", "email": "string", "perfil": [ "nivel_actual", "puntos_totales", "racha_dias", "progreso_general", ], }

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/estudiante/perfil
PUT /api/estudiante/perfil

Actualizar datos personales del estudiante

Body (JSON)

name
string | opcional
email
string | opcional

Respuesta 200

// JSON response
{ "id": "int", "name": "string", "email": "string", "perfil": "object", }

Ejemplo cURL

curl -X PUT \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"name": "..."}'

https://rdskids-api.rdsdevs.com/api/estudiante/perfil
GET /api/estudiante/estadisticas

Progreso general, clases completadas y puntos

Respuesta 200

// JSON response
{ "progreso_general": "int", "clases_completadas": "int", "puntos_totales": "int", "racha_dias": "int", }

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/estudiante/estadisticas
GET /api/estudiante/logros

Lista de badges y logros obtenidos

Respuesta 200

// JSON response
[ { "id": "int", "titulo": "string", "descripcion": "string", "fecha_obtenido": "datetime", }, ]

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/estudiante/logros

Cursos y Niveles

Cursos de Scratch y Roblox con sus niveles y clases

Requiere auth
GET /api/cursos

Lista todos los cursos activos (Scratch y Roblox) con sus niveles

Respuesta 200

// JSON response
[ { "id": "int", "titulo": "string", "tecnologia": "scratch|roblox", "niveles": "array", }, ]

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/cursos
GET /api/cursos/{id}/niveles

Niveles de un curso con progreso del estudiante autenticado

Respuesta 200

// JSON response
[ { "id": "int", "nombre": "string", "clases_completadas": "int", "progreso_porcentaje": "int", }, ]

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/cursos/{id}/niveles
GET /api/niveles/{id}/clases

Clases de un nivel con estado (completada/en_progreso/bloqueada)

Respuesta 200

// JSON response
{ "nivel": "object", "clases": [ { "id": "int", "titulo": "string", "tipo": "video|taller|proyecto", "estado": "string", "puntos": "int", }, ], }

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/niveles/{id}/clases

Progreso

Seguimiento del avance del estudiante

Requiere auth
GET /api/progreso

Progreso general del estudiante (total de clases completadas)

Respuesta 200

// JSON response
{ "clases_completadas": "int", "clases_total": "int", "porcentaje": "int", }

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/progreso
GET /api/progreso/nivel/{id}

Progreso detallado en un nivel específico

Respuesta 200

// JSON response
{ "nivel": "string", "clases_completadas": "int", "clases_total": "int", "porcentaje": "int", }

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/progreso/nivel/{id}
PUT /api/progreso/clase/{id}

Marcar una clase como completada y sumar puntos al estudiante

Respuesta 200

// JSON response
{ "message": "string", "progreso": { "estado": "completada", "puntos_obtenidos": "int", }, }

Ejemplo cURL

curl -X PUT \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/progreso/clase/{id}

Tareas y Entregas

Gestión de asignaciones y subida de archivos

Requiere auth
GET /api/tareas

Lista todas las tareas del estudiante (pendientes y entregadas)

Respuesta 200

// JSON response
[ { "id": "int", "titulo": "string", "curso": "string", "fecha_entrega": "datetime", "estado": "pendiente|entregado|revisado", "calificacion": "float|null", }, ]

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/tareas
GET /api/tareas/{id}

Detalle completo de una tarea con instrucciones y datos del profesor

Respuesta 200

// JSON response
{ "id": "int", "titulo": "string", "descripcion": "string", "instrucciones": "string", "fecha_entrega": "datetime", "profesor": "object", }

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/tareas/{id}
POST /api/entregas

Subir archivo de entrega — multipart/form-data, máx. 10MB

Body (JSON)

tarea_id *
int | requerido
archivo *
file | requerido | máx 10MB

Respuesta 200

// JSON response
{ "id": "int", "estado": "entregado", "fecha_entrega": "datetime", }

Ejemplo cURL

curl -X POST \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"tarea_id": "..."}'

https://rdskids-api.rdsdevs.com/api/entregas
GET /api/entregas/{id}

Ver calificación y comentarios del profesor sobre la entrega

Respuesta 200

// JSON response
{ "id": "int", "estado": "string", "calificacion": "float", "comentario_profesor": "string", "fecha_revision": "datetime", }

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/entregas/{id}

Pre-inscripción

Formulario de registro de interés — endpoint público

Pública
POST /api/preinscripcion

Registrar interés en los cursos antes de la inscripción formal

Body (JSON)

nombre *
string | requerido
email *
string | email | requerido
telefono
string | opcional
edad_nino
integer | 4-18 | opcional
curso_interes
scratch | roblox | ambos
mensaje
string | max 1000 | opcional

Respuesta 200

// JSON response
{ "message": "string", "data": { "id": "int", "nombre": "string", "email": "string", "estado": "pendiente", }, }

Ejemplo cURL

curl -X POST \
-H "Content-Type: application/json"
\
-d '{"nombre": "..."}'

https://rdskids-api.rdsdevs.com/api/preinscripcion

Tablas MySQL

Estructura de la base de datos

users

Autenticación y roles de usuario (estudiante, profesor, admin)

estudiantes

Perfil extendido: nivel, puntos, racha, progreso general

cursos

Cursos disponibles: Scratch y Roblox

niveles

Niveles por curso (Básico, Intermedio, Avanzado)

clases

Sesiones individuales dentro de cada nivel

progreso_clases

Estado de cada clase por estudiante (completada / bloqueada)

tareas

Asignaciones creadas por los profesores

entregas

Archivos enviados por estudiantes con calificación

logros

Badges disponibles y criterios para obtenerlos

usuario_logros

Relación muchos a muchos entre users y logros

preinscripciones

Formularios de interés previos a la inscripción formal

Comandos útiles

# Arrancar el servidor
php artisan serve
# Ejecutar migraciones
php artisan migrate
# Reset completo con datos de prueba
php artisan migrate:fresh --seed

Admin

Gestión completa de la plataforma — requiere rol admin

Nota: Todos los endpoints /api/admin/* requieren autenticación con token Sanctum y que el usuario autenticado tenga el rol admin. Responden 403 si el rol no coincide.
GET /api/admin/dashboard

Estadísticas globales: total de usuarios, estudiantes, pre-inscripciones pendientes, entregas sin calificar y distribución por rol.

Respuesta 200

// JSON response
{ "usuarios": 12, "estudiantes": 10, "preinscripciones_pendientes": 3, "entregas_pendientes": 5, "usuarios_por_rol": { "estudiante": 10, "admin": 1, "profesor": 1, }, }

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/dashboard
GET /api/admin/usuarios

Lista todos los usuarios con su perfil de estudiante.

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/usuarios
GET /api/admin/usuarios/{id}

Detalle de un usuario con logros obtenidos.

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/usuarios/{id}
POST /api/admin/usuarios

Crea un nuevo usuario con cualquier rol.

Body (JSON)

name *
string — requerido
email *
email — requerido
password *
string min:8 — requerido
rol *
estudiante|profesor|admin — requerido

Respuesta 200

// JSON response
{ "id": 3, "name": "Nombre", "email": "correo@ejemplo.com", "rol": "profesor", }

Ejemplo cURL

curl -X POST \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"name": "..."}'

https://rdskids-api.rdsdevs.com/api/admin/usuarios
PUT /api/admin/usuarios/{id}

Actualiza datos de un usuario. Todos los campos son opcionales.

Body (JSON)

name
string
email
email
password
string min:8
rol
estudiante|profesor|admin

Ejemplo cURL

curl -X PUT \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"name": "..."}'

https://rdskids-api.rdsdevs.com/api/admin/usuarios/{id}
DELETE /api/admin/usuarios/{id}

Elimina un usuario permanentemente.

Respuesta 200

// JSON response
{ "message": "Usuario eliminado correctamente.", }

Ejemplo cURL

curl -X DELETE \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/usuarios/{id}
GET /api/admin/cursos

Lista todos los cursos con conteo de niveles.

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/cursos
POST /api/admin/cursos

Crea un nuevo curso.

Body (JSON)

nombre *
string — requerido
descripcion *
string — requerido
imagen
string (URL) — opcional
activo
boolean

Respuesta 200

// JSON response
{ "id": 3, "nombre": "Python", "descripcion": "Introducción a Python", "activo": true, }

Ejemplo cURL

curl -X POST \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"nombre": "..."}'

https://rdskids-api.rdsdevs.com/api/admin/cursos
PUT /api/admin/cursos/{id}

Actualiza un curso existente.

Body (JSON)

nombre
string
descripcion
string
imagen
string
activo
boolean

Ejemplo cURL

curl -X PUT \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"nombre": "..."}'

https://rdskids-api.rdsdevs.com/api/admin/cursos/{id}
DELETE /api/admin/cursos/{id}

Elimina un curso.

Respuesta 200

// JSON response
{ "message": "Curso eliminado correctamente.", }

Ejemplo cURL

curl -X DELETE \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/cursos/{id}
GET /api/admin/niveles

Lista todos los niveles con su curso y conteo de clases.

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/niveles
POST /api/admin/niveles

Crea un nuevo nivel dentro de un curso.

Body (JSON)

curso_id *
integer — requerido
nombre *
string — requerido
descripcion
string — opcional
orden *
integer — requerido
activo
boolean

Respuesta 200

// JSON response
{ "id": 4, "curso_id": 1, "nombre": "Nivel 3", "orden": 3, "activo": true, }

Ejemplo cURL

curl -X POST \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"curso_id": "..."}'

https://rdskids-api.rdsdevs.com/api/admin/niveles
PUT /api/admin/niveles/{id}

Actualiza un nivel.

Body (JSON)

curso_id
integer
nombre
string
descripcion
string
orden
integer
activo
boolean

Ejemplo cURL

curl -X PUT \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"curso_id": "..."}'

https://rdskids-api.rdsdevs.com/api/admin/niveles/{id}
DELETE /api/admin/niveles/{id}

Elimina un nivel.

Respuesta 200

// JSON response
{ "message": "Nivel eliminado correctamente.", }

Ejemplo cURL

curl -X DELETE \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/niveles/{id}
GET /api/admin/clases

Lista todas las clases con su nivel y curso.

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/clases
POST /api/admin/clases

Crea una nueva clase dentro de un nivel.

Body (JSON)

nivel_id *
integer — requerido
titulo *
string — requerido
descripcion
string — opcional
contenido
string — opcional
video_url
url — opcional
orden *
integer — requerido
activo
boolean

Respuesta 200

// JSON response
{ "id": 10, "nivel_id": 2, "titulo": "Variables en Scratch", "orden": 1, "activo": true, }

Ejemplo cURL

curl -X POST \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"nivel_id": "..."}'

https://rdskids-api.rdsdevs.com/api/admin/clases
PUT /api/admin/clases/{id}

Actualiza una clase.

Body (JSON)

nivel_id
integer
titulo
string
descripcion
string
contenido
string
video_url
url
orden
integer
activo
boolean

Ejemplo cURL

curl -X PUT \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"nivel_id": "..."}'

https://rdskids-api.rdsdevs.com/api/admin/clases/{id}
DELETE /api/admin/clases/{id}

Elimina una clase.

Respuesta 200

// JSON response
{ "message": "Clase eliminada correctamente.", }

Ejemplo cURL

curl -X DELETE \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/clases/{id}
GET /api/admin/tareas

Lista todas las tareas con conteo de entregas.

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/tareas
POST /api/admin/tareas

Crea una nueva tarea asignada a una clase.

Body (JSON)

clase_id *
integer — requerido
titulo *
string — requerido
descripcion *
string — requerido
fecha_limite
date — opcional
puntos
integer

Respuesta 200

// JSON response
{ "id": 5, "clase_id": 3, "titulo": "Proyecto final", "puntos": 100, }

Ejemplo cURL

curl -X POST \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"clase_id": "..."}'

https://rdskids-api.rdsdevs.com/api/admin/tareas
PUT /api/admin/tareas/{id}

Actualiza una tarea.

Body (JSON)

clase_id
integer
titulo
string
descripcion
string
fecha_limite
date
puntos
integer

Ejemplo cURL

curl -X PUT \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"clase_id": "..."}'

https://rdskids-api.rdsdevs.com/api/admin/tareas/{id}
DELETE /api/admin/tareas/{id}

Elimina una tarea.

Respuesta 200

// JSON response
{ "message": "Tarea eliminada correctamente.", }

Ejemplo cURL

curl -X DELETE \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/tareas/{id}
GET /api/admin/entregas

Lista todas las entregas de todos los estudiantes.

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/entregas
GET /api/admin/entregas/{id}

Detalle de una entrega con datos del estudiante y la tarea.

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/entregas/{id}
PUT /api/admin/entregas/{id}/calificar

Califica una entrega asignando puntuación y comentarios.

Body (JSON)

calificacion *
numeric 0-100 — requerido
comentarios
string — opcional

Respuesta 200

// JSON response
{ "message": "Entrega calificada correctamente.", "entrega": { "id": 1, "calificacion": 90, "comentarios": "Excelente trabajo", }, }

Ejemplo cURL

curl -X PUT \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"calificacion": "..."}'

https://rdskids-api.rdsdevs.com/api/admin/entregas/{id}/calificar
GET /api/admin/logros

Lista todos los logros con conteo de usuarios que los tienen.

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/logros
POST /api/admin/logros

Crea un nuevo logro.

Body (JSON)

nombre *
string — requerido
descripcion *
string — requerido
icono
string — opcional
puntos
integer

Respuesta 200

// JSON response
{ "id": 4, "nombre": "Maestro Scratch", "puntos": 50, }

Ejemplo cURL

curl -X POST \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"nombre": "..."}'

https://rdskids-api.rdsdevs.com/api/admin/logros
PUT /api/admin/logros/{id}

Actualiza un logro.

Body (JSON)

nombre
string
descripcion
string
icono
string
puntos
integer

Ejemplo cURL

curl -X PUT \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"nombre": "..."}'

https://rdskids-api.rdsdevs.com/api/admin/logros/{id}
DELETE /api/admin/logros/{id}

Elimina un logro.

Respuesta 200

// JSON response
{ "message": "Logro eliminado correctamente.", }

Ejemplo cURL

curl -X DELETE \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/logros/{id}
POST /api/admin/logros/{id}/asignar

Asigna manualmente un logro a un usuario.

Body (JSON)

user_id *
integer — requerido

Respuesta 200

// JSON response
{ "message": "Logro asignado correctamente.", }

Ejemplo cURL

curl -X POST \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"user_id": "..."}'

https://rdskids-api.rdsdevs.com/api/admin/logros/{id}/asignar
GET /api/admin/preinscripciones

Lista todas las pre-inscripciones. Filtra por estado con ?estado=pendiente|aprobado|rechazado.

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/preinscripciones
GET /api/admin/preinscripciones/{id}

Detalle de una pre-inscripción.

Ejemplo cURL

curl -X GET \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/preinscripciones/{id}
PUT /api/admin/preinscripciones/{id}/estado

Actualiza el estado de una pre-inscripción.

Body (JSON)

estado *
pendiente|aprobado|rechazado — requerido
notas
string — opcional

Respuesta 200

// JSON response
{ "message": "Estado actualizado correctamente.", "preinscripcion": { "id": 1, "estado": "aprobado", }, }

Ejemplo cURL

curl -X PUT \
-H "Authorization: Bearer {token}"
\
-H "Content-Type: application/json"
\
-d '{"estado": "..."}'

https://rdskids-api.rdsdevs.com/api/admin/preinscripciones/{id}/estado
DELETE /api/admin/preinscripciones/{id}

Elimina una pre-inscripción.

Respuesta 200

// JSON response
{ "message": "Pre-inscripción eliminada correctamente.", }

Ejemplo cURL

curl -X DELETE \
-H "Authorization: Bearer {token}"

https://rdskids-api.rdsdevs.com/api/admin/preinscripciones/{id}