Skip to main content

portal

Portal de clientes

Página para clientes externos: um documento HTML escrito pela IA, servido pelo gateway /v1/external/portal/{slug} só com as linhas e colunas que cada cliente pode ver. Leitura e, com ações, envio de registos.

  • Kind: view
  • Key: portal
  • Categoria: relatório
  • Envelope: lista de um só elemento (a config vive em config[0])
Envelope de um só elemento

View.config é uma lista com um único elemento: a configuração vive em config[0], não em config. Uma config escrita como mapa cru é lida de qualquer maneira, mas entra nos relatórios como desvio de envelope.

Campos​

ChaveTipoObrigatórioOmissãoDescriçãoReferência
portalIduuidnão-Portal guardado que esta vista mostra; com ele, a vista não guarda conteúdo próprio.-
titlestringnão""Título do portal.-
slugstringnão""Endereço dentro da organização (/p/{handle}/{slug}): 2 a 48 letras minúsculas, números e hífenes, único entre os portais da organização.-
publishedbooleannãofalseOs clientes só abrem portais publicados.-
artifactstringnão""O documento HTML autónomo (CSS e JS embutidos, sem rede) que lê window.OUTDO_DATA.expressões {{record.coluna}}
dataContractmapnão{}Que dados chegam ao documento: uma consulta por conjunto de linhas, mais as variáveis.-

dataContract​

ChaveTipoObrigatórioOmissãoDescriçãoReferência
querieslist de mapnão[]As consultas, no máximo 10.-
actionslist de mapnão[]Escritas do cliente a partir do portal, no máximo 10: cada uma cria uma linha.-
variablesjsonnão{}Variáveis passadas ao documento: nome → valor. Dados de utilizador. Opaco: transporta dados do utilizador e nenhum resolvedor entra aqui.-

dataContract.queries[]​

Cada elemento de dataContract.queries é um objeto:

ChaveTipoObrigatórioOmissãoDescriçãoReferência
namestringsim-Chave sob a qual as linhas aparecem no documento.-
featureIduuidsim-Feature publicada de onde saem as linhas (por id: o gateway não resolve nomes).feature (uuid)
columnslist de stringnão[]Colunas trazidas, POR NOME; vazio = todas as visíveis para clientes. Só sai no JSON quando não está vazia.-
limitintegernão-Máximo de linhas trazidas (até 1000).-

dataContract.actions[]​

Cada elemento de dataContract.actions é um objeto:

ChaveTipoObrigatórioOmissãoDescriçãoReferência
namestringsim-Nome com que o documento envia: letras minúsculas, números e _, a começar por uma letra, único no portal.-
featureIduuidsim-Feature publicada onde a linha é criada (por id: o gateway não resolve nomes).feature (uuid)
kindstringnão"create"O que a ação faz; só create nesta fase.-
fieldslist de mapnão[]Colunas que o cliente preenche, visíveis para clientes e de um componente que se possa escrever.-
fileslist de mapnão[]Colunas file que recebem ficheiros; no máximo 5 ficheiros por envio. Só sai no JSON quando não está vazia.-
confirmstringnão""Texto que o portal mostra antes de enviar; vazio envia logo. Só sai no JSON quando não está vazio.-

dataContract.actions[].fields[]​

Cada elemento de dataContract.actions[].fields é um objeto:

ChaveTipoObrigatórioOmissãoDescriçãoReferência
columnNamestringsim-Nome de uma coluna da feature da ação.coluna de featureId (nome)
requiredbooleannãofalseO envio é recusado sem este campo.-

dataContract.actions[].files[]​

Cada elemento de dataContract.actions[].files é um objeto:

ChaveTipoObrigatórioOmissãoDescriçãoReferência
columnNamestringsim-Nome de uma coluna file da feature da ação.coluna de featureId (nome)
requiredbooleannãofalseO envio é recusado sem pelo menos um ficheiro nesta coluna.-
maxBytesintegernão15728640Tamanho máximo de cada ficheiro, em bytes (até 15 MB).-
mimeTypeslist de stringnão[]Tipos aceites, exatos (application/pdf) ou tipo/*; vazio aceita qualquer tipo. Só sai no JSON quando não está vazia.-

Exemplo JSON​

[
{
"title": "",
"slug": "",
"published": false,
"artifact": "",
"dataContract": {}
}
]

Gerado de definitions.json versão 35a57cb3aa07. Esta página nasce no build: não se edita à mão.