🔌Documentación de API - ToLearn
Esta documentación describe los endpoints, WebSockets y servicios web disponibles en la plataforma ToLearn.
📋 Tabla de Contenidos
🎯 Visión General
URL Base
Producción: https://tolearn.online
Desarrollo: http://localhost:8000Formato de Respuesta
Todas las respuestas están en formato JSON (excepto archivos multimedia):
Versionado
Actualmente la API es v1. Las versiones futuras incluirán prefijo:
🔐 Autenticación
Autenticación Basada en Sesión
ToLearn usa autenticación basada en sesión de Django por defecto.
Login
Respuesta Exitosa:
Logout
Respuesta:
CSRF Protection
Todas las solicitudes POST requieren token CSRF:
Obtener token CSRF:
OAuth 2.0 (Google)
🌐 Endpoints HTTP
Autenticación
POST /login/
Iniciar sesión con credenciales.
Parámetros:
email(string): Email o usernamepassword(string): Contraseña
Respuesta:
POST /signup/
Registrar nueva cuenta.
Parámetros:
username(string): Nombre de usuario únicoemail(string): Email válidopassword(string): Contraseña (min 8 caracteres)confirm_password(string): Confirmación
Respuesta:
Cursos
GET /courses/
Listar todos los cursos disponibles para el usuario.
Respuesta:
GET /courses/{id}/
Obtener detalles de un curso específico.
Parámetros de URL:
id(int): ID del curso
Respuesta:
GET /courses/{course_id}/lessons/{lesson_id}/
Ver contenido de una lección.
Respuesta:
Evaluaciones
GET /dashboard/assignments/
Listar evaluaciones del usuario.
Parámetros de Query:
status(string): pending|completed|alltype(string): homework|examlimit(int): Número de resultados (default: 20)offset(int): Offset para paginación
Respuesta:
GET /dashboard/assignments/{id}/
Obtener detalles de una evaluación.
Respuesta:
POST /dashboard/assignments/{id}/submit/
Enviar respuestas de una evaluación.
Body:
Respuesta:
Calificaciones
GET /dashboard/submissions/{id}/
Ver resultado de un envío.
Respuesta:
Webinars
GET /webinar/rooms/
Listar salas de webinar.
Respuesta:
POST /webinar/{room_name}/update_miro_url/
Actualizar URL de pizarra Miro.
Body:
Respuesta:
Archivos
POST /webinar/{room_name}/upload_file/
Subir archivo a sala de webinar.
Content-Type: multipart/form-data
Parámetros:
file(file): Archivo a subir
Respuesta:
Perfil de Usuario
GET /dashboard/profile/
Obtener perfil del usuario actual.
Respuesta:
PATCH /dashboard/profile/
Actualizar perfil.
Body:
Idioma
POST /set_language/
Cambiar idioma de la interfaz.
Parámetros:
lang(string): es|en|ru
Respuesta:
🔌 WebSocket API
Conexión WebSocket
Eventos WebSocket - Webinar
Enviar Mensaje de Chat
Respuesta broadcast:
Levantar la Mano
Actualizar Pizarra
Compartir Archivo
Actualizar Participantes
📊 Modelos de Datos
User (Usuario)
Course (Curso)
Lesson (Lección)
Assignment (Evaluación)
Question (Pregunta)
Submission (Envío)
Answer (Respuesta)
⚠️ Códigos de Respuesta
Códigos HTTP
200
OK
Solicitud exitosa
201
Created
Recurso creado exitosamente
204
No Content
Exitoso sin contenido
302
Found
Redirección
400
Bad Request
Solicitud malformada
401
Unauthorized
No autenticado
403
Forbidden
Sin permisos
404
Not Found
Recurso no encontrado
405
Method Not Allowed
Método HTTP no permitido
500
Internal Server Error
Error del servidor
502
Bad Gateway
Gateway inválido
503
Service Unavailable
Servicio no disponible
Mensajes de Error
Códigos de Error Comunes:
INVALID_CREDENTIALS: Credenciales inválidasPERMISSION_DENIED: Sin permisosRESOURCE_NOT_FOUND: Recurso no encontradoVALIDATION_ERROR: Error de validaciónALREADY_SUBMITTED: Ya enviadoTIME_EXPIRED: Tiempo expiradoDUPLICATE_ENTRY: Entrada duplicada
💡 Ejemplos de Uso
Python (requests)
JavaScript (Fetch API)
cURL
📚 Recursos Adicionales
🔄 Changelog
v1.0 (Actual)
API básica HTTP
WebSocket para webinars
Autenticación por sesión
CRUD de cursos y evaluaciones
Futuro (v2.0)
REST API completa
Token authentication (JWT)
GraphQL support
Webhooks
Rate limiting
API versioning
Documentación actualizada: Diciembre 2024
Last updated