Swagger API Docs — Guía de Uso
Versión: v1.0.46 Última actualización: 19-03-2026 URL Local: http://localhost:8000/api/docs URL Producción: https://crearack.com/api/docs
1. Qué es Swagger
Swagger (ahora OpenAPI) es una interfaz web interactiva que documenta automáticamente todos los endpoints de la API de CreaRack Pro. Django Ninja genera esta documentación a partir del código — cada vez que añades un endpoint, aparece automáticamente en Swagger sin escribir documentación manual.
Tecnología
| Componente | Descripción |
|---|---|
| OpenAPI 3.0 | Estándar de especificación de APIs (antes “Swagger Specification”) |
| Swagger UI | Interfaz web que renderiza el spec OpenAPI |
| Django Ninja | Framework que genera el spec automáticamente desde decoradores y schemas |
2. Acceso
| Entorno | URL | Autenticación |
|---|---|---|
| Local | http://localhost:8000/api/docs | Requiere sesión activa (login en /accounts/login/) |
| Producción | https://crearack.com/api/docs | Requiere sesión activa (login en CreaRack Pro) |
Restricción de acceso: Swagger y el spec OpenAPI están restringidos a superusers en producción. Usuarios normales y visitantes anónimos reciben un 404. Esto se controla via AdminPathsMiddleware (core/middleware/admin_paths.py).
Cómo acceder
- Abre CreaRack Pro en el navegador y haz login con una cuenta superuser
- Navega a
/api/docs - Verás todos los endpoints agrupados por categoría
Nota: Si no eres superuser,
/api/docsdevuelve 404 como si no existiera.
3. Interfaz — Qué ves
3.1 Header
En la parte superior se muestra:
- Título: “CreaRack Pro API”
- Versión: 1.0.0
- Descripción: “SaaS-ready API for Data Center Management”
3.2 Tags (Categorías)
Los endpoints están agrupados por tags. Click en un tag para expandir/colapsar:
| Tag | Endpoints | Descripción |
|---|---|---|
| Signage CMS | 48 | Digital Signage: content, players, playlists, schedules, deployment, control |
| Monitoring | ~80 | Observatory, Wireless, UPS, Signage Monitor, CNS, ITSM |
| Racks | ~40 | CRUD de racks, dispositivos, stencils, Visio import |
| Network | ~30 | Device profiles, SNMP, port connections, cable reports |
| Blueprints | ~15 | Maps, Auto-Plan AI, brain editor |
| Terminal | ~20 | SSH, Agent API, fleet management |
| Core | ~20 | Users, settings, logs, search, admin |
3.3 Endpoint Card
Cada endpoint muestra:
[POST] /api/signage/signage/playlists Create playlist
- Método HTTP (GET/POST/PATCH/DELETE) con color distintivo
- URL completa
- Resumen (el
summarydel decorador)
4. Probar Endpoints (“Try it out”)
4.1 Pasos
- Click en un endpoint para expandirlo
- Verás:
- Parameters: Query params, path params
- Request Body: Schema JSON esperado (si es POST/PATCH)
- Responses: Códigos posibles (200, 400, 404) con schemas
- Click “Try it out”
- Rellena los parámetros o modifica el JSON del body
- Click “Execute”
- Verás:
- Curl command: El comando equivalente en terminal
- Request URL: La URL final construida
- Response body: La respuesta real del servidor
- Response code: El código HTTP
- Response headers: Headers de la respuesta
4.2 Ejemplo: Crear una Playlist
- Expande
POST /api/signage/signage/playlists - Click “Try it out”
- En el body, escribe:
{
"name": "Lobby Morning",
"description": "Contenido para el lobby por la mañana",
"items": [
{"asset_id": 1, "duration_seconds": 10, "transition": "fade", "order": 1},
{"asset_id": 2, "duration_seconds": 15, "transition": "none", "order": 2}
],
"loop": true
}
- Click “Execute”
- Recibirás la playlist creada con su
id,total_duration, etc.
4.3 Ejemplo: Listar Media con Filtros
- Expande
GET /api/signage/signage/media - Click “Try it out”
- Rellena el campo
asset_typeconvideo - Click “Execute”
- Verás solo los assets de tipo vídeo
4.4 Ejemplo: Upload de Archivo
- Expande
POST /api/signage/signage/media/upload - Click “Try it out”
- En el campo
file, click “Choose File” y selecciona una imagen - Rellena
nameyasset_type - Click “Execute”
- El archivo se sube y se procesa automáticamente
5. Schemas (Modelos de Datos)
5.1 Dónde verlos
Al final de la página de Swagger, sección “Schemas”, están todos los modelos:
PlaylistCreateIn— campos para crear playlistPlaylistOut— respuesta al obtener playlistMediaAssetOut— respuesta con detalles de mediaDeploymentCreateIn— campos para crear deployment- etc.
5.2 Cómo se generan
Cada clase Schema en signage/api/schemas.py aparece automáticamente:
class PlaylistCreateIn(Schema):
name: str # Campo obligatorio
description: str = '' # Opcional, default vacío
items: list = [] # Opcional, default lista vacía
loop: bool = True # Opcional, default True
Swagger muestra esto como:
name— required, type: stringdescription— optional, type: string, default: ""items— optional, type: array, default: []loop— optional, type: boolean, default: true
6. Códigos de Respuesta
| Código | Significado | Cuándo aparece |
|---|---|---|
| 200 | OK | Operación exitosa |
| 201 | Created | Recurso creado (algunos endpoints) |
| 204 | No Content | Eliminación exitosa sin body |
| 400 | Bad Request | Datos inválidos, validación fallida |
| 401 | Unauthorized | No logueado |
| 403 | Forbidden | Sin permisos |
| 404 | Not Found | Recurso no existe o no pertenece a tu organización |
| 500 | Server Error | Error interno (ver logs) |
7. Uso Avanzado
7.1 Descargar el Spec OpenAPI
El spec JSON completo está disponible en:
| Formato | URL |
|---|---|
| OpenAPI JSON | /api/openapi.json (solo superusers) |
Puedes usar este archivo para:
- Generar clientes SDK automáticos (Python, JS, Go, etc.)
- Importar en Postman o Insomnia
- Generar documentación estática con ReDoc o Slate
7.2 Importar en Postman
- Abre Postman
- Click “Import”
- Pega la URL:
https://crearack.com/api/openapi.json - Postman creará automáticamente una Collection con todos los endpoints
7.3 CSRF Token
Las llamadas desde Swagger funcionan porque usa la cookie de sesión. Si quieres hacer llamadas desde curl o scripts externos:
# Primero obtén el CSRF token
curl -c cookies.txt https://crearack.com/accounts/login/
# Luego úsalo en las llamadas
curl -b cookies.txt -H "X-CSRFToken: <token>" \
https://crearack.com/api/signage/signage/playlists
7.4 Filtrar Endpoints
Swagger UI tiene una barra de búsqueda en la parte superior. Escribe para filtrar:
signage— solo endpoints de Digital Signageplaylist— solo endpoints de playlistsPOST— solo métodos POST
8. Seguridad en Producción
| Aspecto | Estado |
|---|---|
| Acceso a Swagger | Solo superusers — otros usuarios reciben 404 |
| Middleware | AdminPathsMiddleware (core/middleware/admin_paths.py) |
| Rutas protegidas | /api/docs y /api/openapi.json |
| Respuesta a no-autorizados | 404 Not Found (no revela existencia) |
| Multi-tenancy | Cada llamada API filtra por organización del usuario logueado |
| CSRF | Protegido — Swagger usa la cookie de sesión automáticamente |
| Rate limiting | Activo en producción (100 req/min general) |
| CSP | Los endpoints /api/ tienen CSP relajado para respuestas HTML standalone |
Nota: Swagger en producción solo es accesible para superusers. Usuarios normales y visitantes anónimos reciben 404, como si la ruta no existiera. Esto evita exponer el mapa completo de la API a usuarios del SaaS.
9. Troubleshooting
| Problema | Solución |
|---|---|
| “Unauthorized” en todas las llamadas | Haz login en CreaRack Pro primero, luego vuelve a /api/docs |
| Endpoint no aparece | Reinicia el servidor (docker compose restart web) |
| Response “CSRF Failed” | Recarga la página de Swagger (necesita cookie CSRF fresca) |
| Body no se envía | Asegúrate de clickar “Try it out” ANTES de editar el body |
| Upload no funciona | Usa el campo “file” del formulario, no pegues en el JSON body |
10. Referencia de URLs
| URL | Descripción |
|---|---|
/api/docs | Swagger UI (interfaz interactiva) |
/api/openapi.json | Spec OpenAPI 3.0 en JSON |
/api/signage/... | Endpoints Digital Signage CMS |
/api/monitoring/... | Endpoints Monitoring (Observatory, Wireless, UPS) |
/api/racks/... | Endpoints Racks y dispositivos |
/api/network/... | Endpoints Network Management |
Mantenido por: Claude (Anthropic) + Equipo CreaRack
Véase también
- [[decision—20260101—django-ninja-vs-drf]] — ADR Django Ninja vs DRF
- [[crearack-tech—backend—network-tools]] — herramientas de red backend
- [[crearack-tech—backend—network-observatory]] — backend del Network Observatory
- [[crearack-tech—agents—dev-core]] — perfil de subagente dev-core
- [[crearack-tech—guides—testing]] — guía de testing
- [[crearack-tech—guides—testing-local-guide]] — testing en entorno local