Ir al contenido principal
API para mentores

Ciclo de vida y versiones

Publicar, despublicar, editar productos publicados, editar contenido por id e historial de versiones.

Todos los productos siguen el mismo ciclo: draft → published → unpublished, y cada cambio queda registrado como una versión. En esta página, {tipo} es programs, external, workshops o checkouts.

MétodoRutaQué hace
POST/{tipo}Crea un borrador
GET/{tipo}/{id}Devuelve el recurso, su estado y versión actual
PATCH/{tipo}/{id}Edita el borrador, o abre uno nuevo si ya está publicado
POST/{tipo}/{id}/imagesSube la miniatura
POST/{tipo}/{id}/publishValida, publica y genera el checkout_url
POST/{tipo}/{id}/unpublishRetira de la venta (no borra) y limpia el checkout_url
GET/{tipo}/{id}/versionsHistorial de versiones (no aplica a checkouts)

Publicar y checkout_url

Al publicar, validamos el borrador, lo ponemos en vivo y creamos su precio de venta. La respuesta incluye el checkout_url, el link de pago que puedes compartir con tus compradores:

POST /api/ext/programs/6ab8...f001/publish

{
  "id": "6ab8...f001",
  "type": "program",
  "state": "published",
  "checkout_url": "https://<dominio-de-checkout>/v2/6ab8...f990",
  "version_id": "6ab8...v002",
  "updated_at": "2026-01-01T00:00:00Z"
}

  • Productos: checkout_url = …/v2/{id-de-precio}. Checkouts: …/c/{slug}.
  • checkout_url es null mientras el producto está en draft o unpublished.
  • Si falta algo para publicar, recibes un 422 que indica qué falta.

Publicar es idempotente: publicar un producto que ya está en vivo y sin cambios pendientes no hace nada (no crea versión nueva) y devuelve el mismo checkout_url.

Volver a publicar después de despublicar

Un producto unpublished se puede publicar de nuevo con POST /{tipo}/{id}/publish. Se reactiva su precio y vuelve a tener checkout_url.

Editar un producto publicado

Un PATCH sobre un producto published no modifica lo que está en vivo. El cambio queda en un borrador nuevo, y el producto publicado sigue vendiéndose igual hasta que vuelvas a publicar:

publicado → PATCH   → en vivo sin cambios; un borrador guarda la edición
          → publish → la edición sale en vivo (nueva versión)

Subir una imagen a un producto publicado funciona igual.

Editar contenido: identifica cada elemento por su id

Los módulos y lecciones (programas) y los módulos y sesiones (talleres) se editan enviando el árbol de contenido completo en el PATCH, igual que en el editor del Hub. Cada elemento se identifica por su id, nunca por su posición:

  • GET /{tipo}/{id} (y las respuestas de crear y editar) devuelven el árbol con el id de cada elemento.
  • Con id → ese módulo/lección/sesión se edita en su lugar y conserva el progreso de tus estudiantes. Puedes reordenar libremente: el orden lo da la posición en la lista, la identidad la da el id.
  • Sin id → se crea un elemento nuevo.
  • Un id que no pertenece a este producto → 400. Al crear no se envían id.
  • Un elemento existente que no envías → se elimina. El árbol que mandas es la versión completa.

Despublicar

Despublicar retira el producto de la venta y limpia su checkout_url. No se borra nada: se puede editar y volver a publicar.

Tipostate en la APICómo se ve en el Hub
Programa / externounpublishedDespublicado
TallerunpublishedBorrador
CheckoutdraftBorrador

Historial de versiones

GET /{tipo}/{id}/versions devuelve el historial (más reciente primero). Cada crear, editar, publicar, despublicar o cambio comercial genera una versión:

{
  "items": [
    {
      "version_id": "6ab8...v002",
      "version": 2,
      "status": "approved",
      "changed_fields": ["name"],
      "created_at": "2026-01-02T00:00:00Z",
      "updated_at": "2026-01-02T00:00:00Z"
    }
  ]
}

Valores de status más comunes: draft (borrador), approved (la publicada) y superseded (reemplazada por una publicación posterior).

Reintentos

Crear (POST /{tipo}) no es idempotente: si repites la request, puedes crear un duplicado. Si una creación falla por red o timeout, antes de reintentar busca el producto con tu external_ref (GET /{tipo}?external_ref=…).