Versiones de configuración
El sistema de versiones permite guardar snapshots de la configuración completa del tema y restaurarlos cuando sea necesario.
Endpoints
| Método | Ruta | Descripción |
|---|---|---|
GET | /admin/themes/versions | Lista las 50 versiones más recientes |
POST | /admin/themes/versions | Guarda el borrador actual como nueva versión |
GET | /admin/themes/versions/:id | Obtiene una versión específica (con snapshot) |
POST | /admin/themes/versions/:id/restore | Restaura una versión al borrador |
Listar versiones
GET /admin/themes/versions
Devuelve un array versions con las 50 más recientes:
{
"versions": [
{
"id": "uuid",
"label": "Publicado",
"created_by": "uuid-del-usuario",
"created_at": "17/07/2026 15:30"
}
]
}
Guardar una versión
POST /admin/themes/versions
Body: { "label": "Antes del rediseño" }
- Captura el estado completo del
theme_settings_draft(secciones, órdenes, settings) - Si no se proporciona
label, queda vacío - El
created_byse asigna automáticamente al usuario autenticado
Ver una versión
GET /admin/themes/versions/:id
Devuelve el snapshot completo para comparación:
{
"id": "uuid",
"label": "Mi versión",
"snapshot": { "section_order": [...], "sections": {...} },
"created_at": "17/07/2026 15:30"
}
Restaurar una versión
POST /admin/themes/versions/:id/restore
- Sobreescribe
settings_draftcon el snapshot de la versión - Los cambios NO se publican automáticamente — el merchant debe hacer clic en Publicar
- Devuelve
{ "ok": true, "label": "..." }
Auto-snapshot al publicar
Cada vez que se publica (POST /admin/themes/publish), el sistema crea automáticamente un snapshot con el label "Publicado". Esto garantiza que siempre exista un punto de restauración del estado en vivo.
// En Publish():
v := &ThemeSettingsVersion{
Label: "Publicado",
Snapshot: draft,
}
h.versionRepo.Save(ctx, v)
Retención
- Se conservan las 50 versiones más recientes por tema
- Las versiones más antiguas se eliminan automáticamente
- El
platform_baselinenunca se poda (es el marcador para "Restaurar original")