Portais
Um portal é uma página sua, hospedada pela plataforma, com endereço próprio e um botão que roda as automações do seu projeto. É como você entrega uma automação para quem não usa o painel: o comercial, a operação, a diretoria.
O conteúdo é HTML comum — o que você escrever é o que aparece. A plataforma cuida de três coisas: hospedar, controlar quem entra e dar à página uma forma segura de iniciar automações.
Criar
No painel, em Portais, escolha o projeto, dê um título e um endereço (minúsculas, números e hífen) e clique em Criar portal. O conteúdo você escreve ali mesmo — ou deixa uma automação publicar, que é o caminho natural quando a página mostra um relatório que muda sozinho.
Portal vive dentro de um projeto, e é o projeto que define quais automações ele alcança.
Abrir, fechar e trocar o link
Criar e liberar são decisões separadas: um portal recém-criado nasce Fechado.
| Ação no painel | O que acontece |
|---|---|
| Abrir por link | o portal ganha endereço próprio, fora do painel |
| Copiar link | o endereço, sempre o mesmo, para mandar ou guardar no favorito |
| Trocar o link | gera outro endereço e derruba na hora todos os que já circularam |
| Fechar | quem tiver o link passa a ver "não disponível" |
Quem consegue entrar
O endereço sozinho não abre. Quem clicar precisa estar logado e fazer parte da conta dona do portal. O link é o endereço, não a credencial — e continua revogável a qualquer momento por Trocar o link.
Para quem só precisa ver portais, a tela de Equipe tem o papel "só portais": a pessoa entra na conta, enxerga os portais liberados e nenhuma outra tela da plataforma.
Rodar uma automação a partir da página
Dentro do portal existe um objeto datallog, injetado pela plataforma:
<button id="rodar">Atualizar</button>
<pre id="saida"></pre>
<script>
document.getElementById('rodar').addEventListener('click', async () => {
const r = await datallog.run('relatorio', { mes: '2026-10' });
const corpo = r && r.result !== undefined ? r.result : r;
document.getElementById('saida').textContent = JSON.stringify(corpo, null, 2);
});
</script>datallog.run(automacao, seed) inicia uma automação do mesmo projeto do portal — o projeto é a fronteira. O seed chega na sua função Python exatamente como chegaria por qualquer outro caminho.
O que volta depende de como a automação responde:
- em Esperar o resultado, a resposta já traz o resultado;
- em Rodar em segundo plano — ou quando a execução passa do orçamento da chamada — volta um corpo com
exec_uuid, e a execução segue viva: o resultado chega pelo webhook e pelo histórico de execuções.
Trate os dois casos, ou a tela fica esperando um resultado que vai chegar por outro caminho.
Não há limite de execuções: o portal roda qualquer automação do projeto dele, e quem tem o link consegue disparar. Para cortar, feche o portal ou troque o link.
O isolamento da página, e o que ele impede
O HTML é seu, e ele roda no mesmo domínio da nossa API. Para que o código de um portal não alcance a sessão de quem o abriu, a plataforma serve o conteúdo dentro de um <iframe sandbox> sem allow-same-origin, e repete a regra num cabeçalho Content-Security-Policy.
Na prática, a página nasce em origem opaca. Isso tem consequências que valem conhecer antes de escrever a tela:
| O que não funciona | O que fazer no lugar |
|---|---|
localStorage, sessionStorage, IndexedDB (dão SecurityError) | guarde o estado na memória da aba, ou mande a automação guardar |
document.cookie | a plataforma já identifica quem abriu |
ler ou escrever o documento de cima (window.parent) | nada a fazer: é o isolamento funcionando |
| chamar a nossa API com a sessão de quem abriu | use datallog.run, que carrega a credencial certa |
Preferência que precisa sobreviver ao recarregamento
Sem armazenamento local, uma escolha feita na tela (um filtro, um nome, uma aba) só vive enquanto a aba está aberta. Se ela precisa durar, grave pela automação e leia de volta quando a página abrir.
O resto do sandbox permite o que uma tela precisa: scripts, formulários, modais e abrir links em nova aba.
Checklist para um portal novo
- crie o portal no painel e escreva (ou publique) o conteúdo;
- Abrir por link e copie o endereço;
- ponha em Esperar o resultado as automações que a página chama, para a resposta vir na hora;
- teste dentro do portal, não abrindo o HTML no seu computador — o isolamento só vale lá;
- se o link sair do seu controle, Trocar o link.