🔌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:8000

Formato 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 username

  • password (string): Contraseña

Respuesta:

POST /signup/

Registrar nueva cuenta.

Parámetros:

  • username (string): Nombre de usuario único

  • email (string): Email válido

  • password (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|all

  • type (string): homework|exam

  • limit (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

Código
Significado
Descripción

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álidas

  • PERMISSION_DENIED: Sin permisos

  • RESOURCE_NOT_FOUND: Recurso no encontrado

  • VALIDATION_ERROR: Error de validación

  • ALREADY_SUBMITTED: Ya enviado

  • TIME_EXPIRED: Tiempo expirado

  • DUPLICATE_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