Saltar al contenido principal

Publicar y compartir

Publicar es el traspaso de tu agente a la plataforma mantenida: el panel deja de ser la salida de un agente y se convierte en algo con lo que tu equipo puede contar — una URL estable, gobernada por tus derechos de acceso, que sigue respondiendo cuando la sesión ha terminado.

Draft y main son ramas de git reales​

Esto no es una metáfora. Cada panel es un repositorio git, guardado como un repo desnudo en almacenamiento de objetos. Tus ediciones — desde tu agente, desde el asistente integrado, desde el editor de código — son commits en una rama draft (borrador). Publicar fusiona ese borrador en main.

Tres consecuencias que vale la pena tener en cuenta:

  • No puedes escribir directamente en main. Las escrituras en ella se rechazan; la única forma en que el contenido llega a la versión en vivo es una publicación.
  • Cada publicación crea una etiqueta de versión. La etiqueta registra el estado en el que estaba main antes del merge — así que v1 es lo que reemplazó tu primera publicación, v2 es lo que reemplazó tu segunda publicación, y la versión actualmente en vivo es main, sin etiquetar hasta la próxima publicación.
  • Las publicaciones concurrentes se fusionan en lugar de sobrescribirse. Si main se movió mientras tu borrador estaba abierto y los dos tocaron archivos diferentes, ambos conjuntos de cambios se aplican. Si tocaron el mismo archivo de forma incompatible, la publicación falla con 409 PUBLISH_MERGE_CONFLICT y nombra las rutas en conflicto. No elige un ganador en silencio.

Puedes leer ese historial:

print(client.viz.list_tags(viz_id))
print(client.viz.get_commit_log(viz_id, "main", max_count=20))
print(client.viz.preview_publish(viz_id)) # diferencia entre draft y main
console.log(await client.viz.listTags(vizId));
console.log(await client.viz.getCommitLog(vizId, 'main', { maxCount: 20 }));
console.log(await client.viz.previewPublish(vizId));

Publica un panel​

Tu agente puede hacerlo directamente por MCP; en la aplicación es el botón Publicar; desde código es una llamada:

client.viz.publish(viz_id)
await client.viz.publish(vizId);

Publicar ejecuta primero una comprobación de salud sobre el último build del panel. Si el paquete está FAILED o desactualizado, la publicación se rechaza con un 409 en lugar de promover algo que no renderiza — pasa force=true para anular eso deliberadamente.

La publicación entonces fusiona, etiqueta, e inicia un build. El estado solo pasa a PUBLISHED cuando ese build tiene éxito; si falla, el panel cae en ERROR y main se restablece. Así que que publish() devuelva respuesta no es el mismo hecho que "el panel está en vivo" — lee publishStatus de vuelta antes de decirle a alguien que el enlace funciona. (Misma regla que la actualización que devuelve 202: que la llamada se complete y que el trabajo se complete son dos cosas distintas.)

Quién puede abrirlo — tres modos, no dos​

Publicar decide que el panel está en vivo. Un campo separado, viewMode, decide quién puede abrirlo. Confundir estos dos es el error más común aquí.

viewModeQuién puede abrirlo
publicCualquiera con el enlace. Sin cuenta necesaria.
protectedSolo un visor para el que tu backend generó un token de incrustación — con filtros de fila por visor. Mira Incrustación.
privateNadie fuera de tu cuenta. Publicado, pero no alcanzable desde la superficie pública.

El enlace de un panel publicado tiene este aspecto:

https://cloud.vibedasher.com/v/<slug>

Esa URL solo sirve contenido cuando el panel está ambos: publicado y public. Un panel protected en la misma URL necesita un token añadido.

Hacerlo público está protegido por separado, y un agente no puede hacerlo solo​

Hacer los datos de la empresa legibles para todo el mundo es lo único irreversible en todo este flujo, así que tiene su propia puerta en lugar de acompañar a publish. Dos interruptores, ambos en la cuenta, ambos comprobados en el servidor en cada ruta que pueda escribir viewMode:

  • allowForPublicViz — un interruptor de emergencia a nivel de cuenta. Apágalo y nada en la cuenta puede hacerse público, por nadie, por ninguna ruta.
  • apiKeysMayPublish — es false por defecto. Incluso cuando la compartición pública está permitida, un llamante que se autentica con una clave de API puede no ser quien pueda pasar un panel a público. Un admin tiene que activar esto, y solo puede hacerlo desde una sesión de navegador — PUT /v1/account rechaza establecerlo desde una clave de API, así que el interruptor no puede activarse a sí mismo.

Ese segundo punto es la clave. En cualquier otro sitio de esta plataforma una clave de API actúa como su usuario creador con el rol completo de ese usuario (mira Quién puede ver qué). Publicar en internet abierto es la excepción deliberada: tu agente puede construir el panel, publicarlo, y compartirlo dentro de tu cuenta, pero por defecto no puede ser lo que lo haga público. Un humano en un navegador tiene que haber dicho que sí una vez, al nivel de la cuenta.

El código está congelado; los datos no​

Esta es la propiedad que hace que un panel publicado valga la pena alojarlo en lugar de exportarlo.

El código del panel se congela en una foto en el momento de publicar. El paquete se construye una vez y se sirve desde almacenamiento. Tu borrador sigue evolucionando de forma independiente y no se filtra a la versión en vivo hasta que vuelvas a publicar.

Los datos se leen en vivo en el momento de la visualización. Cada gráfico en un panel publicado consulta el contenido actual de sus conjuntos de datos cuando alguien lo abre. Una actualización que llega a las 3 de la madrugada aparece en el panel publicado a las 9 de la mañana sin nada reconstruido y sin nadie pendiente. Esa es la razón entera por la que la mitad de los datos vive en la plataforma — mira Mantén tus datos frescos.

Despublicar y volver a publicar​

DELETE /v1/viz/{id}/publish retira el panel: el estado vuelve a NOT_PUBLISHED y el paquete en vivo se elimina. Tu borrador queda intacto.

  • El slug se conserva y sigue reservado, así que volver a publicar reutiliza la misma URL.
  • Los enlaces antiguos fallan de forma inconsistente. La página del visor responde 404, la API pública responde 403, y los endpoints de datos en caché responden 404. Si estás manejando esto programáticamente, no ramifiques solo por el código de estado.
  • Renombrar el slug rompe permanentemente todos los enlaces existentes. No hay redirección de un slug antiguo a uno nuevo. Elige el slug antes de difundir la URL.

Incrústalo​

Los paneles publicados se renderizan a través de un iframe incrustable que puedes colocar en cualquier aplicación, página de documentación, o sitio web — público, o protegido por visor con filtros a nivel de fila. Mira Incrustar un panel.