O que é o Systemplane
O Systemplane não é um serviço independente. Cada aplicação monta o mesmo conjunto de rotas em seu próprio host e porta HTTP, sob um prefixo de caminho específico da aplicação. O Systemplane não tem host nem porta próprios, e não tem porta administrativa dedicada. O prefixo canônico documentado aqui é
/system, mas ele varia conforme a aplicação (veja a tabela de aplicabilidade abaixo).
As aplicações registram as rotas de forma programática, e nenhum gerador de código as produz. Por isso, elas não aparecem na referência de API gerada de cada produto. Esta referência documenta a superfície manualmente, para que você possa operá-la de forma consistente entre os produtos.
Toda a superfície fica desativada por padrão. Uma aplicação apenas a disponibiliza quando você ativa a configuração SYSTEMPLANE_ENABLED. Caso contrário, a aplicação roda no modo apenas variáveis de ambiente e não monta essas rotas.
Namespaces
A configuração vive em namespaces, cada um com entradas simples e indexadas por chaves de texto. Trilhos e plugins usam três namespaces canônicos:
Algumas aplicações registram um único namespace com o nome da própria aplicação, em vez desses três. O Matcher, por exemplo, mantém todas as suas chaves em um único namespace
matcher.
O valor de cada entrada não tem tipo na camada de transporte. Cada chave registrada aceita seu próprio escalar, objeto ou array JSON, e um validador próprio do lado do servidor verifica o valor. Nem toda configuração pode ser alterada em tempo de execução. A aplicação lê as configurações apenas de bootstrap uma única vez, na inicialização. Essas configurações não aparecem no Systemplane e ainda exigem um reinício para mudar.
Endpoints
Todos os caminhos são relativos ao prefixo da aplicação (padrão
/system).
/system/-/catalog nomeia um caminho de metadados reservado. A aplicação o atende antes das rotas de namespace. O segmento - não é um namespace real, e você não pode usá-lo como um. Os erros usam um envelope simples {"code": <int>, "title": "<string>", "message": "<string>"}.Autenticação e permissões
A autorização nega tudo por padrão. Uma aplicação apenas disponibiliza a superfície depois que você configura um autorizador. Sem um autorizador, a aplicação nega toda requisição. Quando você habilita a autenticação, a aplicação aplica controle de acesso baseado em papéis por namespace, sobre uma identidade válida com escopo de plataforma (não de tenant). Leituras exigem a permissão de leitura do namespace, e gravações exigem a permissão de escrita correspondente:
A ação de leitura cobre
GET. A ação de escrita cobre PUT e DELETE. Os endpoints de descoberta do catálogo exigem permissão de leitura em pelo menos um namespace.
As strings exatas de permissão podem variar por aplicação. O Matcher, que usa um único namespace, protege toda a sua superfície com a permissão
system-runtime-config:admin (recurso system-runtime-config, ação admin), em vez das strings por namespace acima. Consulte a documentação do próprio produto para saber seu modelo de autorização.Descobrindo chaves com o catálogo
Quando uma aplicação opta pela superfície de catálogo,
GET /system/-/catalog lista todas as chaves que ela registra. A rota de detalhe GET /system/-/catalog/{namespace}/{key} retorna o contrato de gravação completo de uma chave. O contrato cobre seu tipo, escopo de tenant, classe de tempo de execução, política de redação, JSON schema, regras de validação, exemplos válidos, valor padrão e o caminho PUT correspondente.
Use o catálogo para saber o que um serviço expõe antes de mudar qualquer coisa. O catálogo descreve o contrato de gravação. Para ler o valor configurado atual, chame GET /system/{namespace}/{key}.
Quais produtos expõem o Systemplane
O Systemplane é opcional por produto. A tabela abaixo lista os produtos que o montam. Para cada produto, ela indica o prefixo de caminho, a porta HTTP padrão e se o produto também disponibiliza a superfície de descoberta do catálogo. O prefixo e a porta são padrões. Um deploy pode sobrescrevê-los.
Produtos que não estão nesta lista não montam o Systemplane. Você os configura apenas por variáveis de ambiente.

