Saltar al contenido principal

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étodoRutaDescripción
GET/admin/themes/versionsLista las 50 versiones más recientes
POST/admin/themes/versionsGuarda el borrador actual como nueva versión
GET/admin/themes/versions/:idObtiene una versión específica (con snapshot)
POST/admin/themes/versions/:id/restoreRestaura 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_by se 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_draft con 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_baseline nunca se poda (es el marcador para "Restaurar original")