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
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
portalId | uuid | não | - | Portal guardado que esta vista mostra; com ele, a vista não guarda conteúdo próprio. | - |
title | string | não | "" | Título do portal. | - |
slug | string | nã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. | - |
published | boolean | não | false | Os clientes só abrem portais publicados. | - |
artifact | string | não | "" | O documento HTML autónomo (CSS e JS embutidos, sem rede) que lê window.OUTDO_DATA. | expressões {{record.coluna}} |
dataContract | map | não | {} | Que dados chegam ao documento: uma consulta por conjunto de linhas, mais as variáveis. | - |
dataContract
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
queries | list de map | não | [] | As consultas, no máximo 10. | - |
actions | list de map | não | [] | Escritas do cliente a partir do portal, no máximo 10: cada uma cria uma linha. | - |
variables | json | nã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:
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
name | string | sim | - | Chave sob a qual as linhas aparecem no documento. | - |
featureId | uuid | sim | - | Feature publicada de onde saem as linhas (por id: o gateway não resolve nomes). | feature (uuid) |
columns | list de string | não | [] | Colunas trazidas, POR NOME; vazio = todas as visíveis para clientes. Só sai no JSON quando não está vazia. | - |
limit | integer | não | - | Máximo de linhas trazidas (até 1000). | - |
dataContract.actions[]
Cada elemento de dataContract.actions é um objeto:
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
name | string | sim | - | Nome com que o documento envia: letras minúsculas, números e _, a começar por uma letra, único no portal. | - |
featureId | uuid | sim | - | Feature publicada onde a linha é criada (por id: o gateway não resolve nomes). | feature (uuid) |
kind | string | não | "create" | O que a ação faz; só create nesta fase. | - |
fields | list de map | não | [] | Colunas que o cliente preenche, visíveis para clientes e de um componente que se possa escrever. | - |
files | list de map | não | [] | Colunas file que recebem ficheiros; no máximo 5 ficheiros por envio. Só sai no JSON quando não está vazia. | - |
confirm | string | nã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:
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
columnName | string | sim | - | Nome de uma coluna da feature da ação. | coluna de featureId (nome) |
required | boolean | não | false | O envio é recusado sem este campo. | - |
dataContract.actions[].files[]
Cada elemento de dataContract.actions[].files é um objeto:
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
columnName | string | sim | - | Nome de uma coluna file da feature da ação. | coluna de featureId (nome) |
required | boolean | não | false | O envio é recusado sem pelo menos um ficheiro nesta coluna. | - |
maxBytes | integer | não | 15728640 | Tamanho máximo de cada ficheiro, em bytes (até 15 MB). | - |
mimeTypes | list de string | nã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.