Pular para conteúdo

TOTVS Gateway

O TOTVS Gateway centraliza a administração e a execução de APIs: permite configurar rotas, publicar revisões, aplicar políticas de acesso e transformar requisições e respostas. Templates e catálogo permitem reutilizar configurações; as integrações conectam APIs ao ecossistema iPaaS.

Este portal reúne a arquitetura do backend, seus modelos de dados e os procedimentos para desenvolver e validar serviços localmente.

Começar pelo Primeiro deploy local

Instalar o ambiente completo no Kind

Como a plataforma se organiza

O Control Plane administra configurações por meio do BFF e dos serviços de domínio. O Data Plane processa chamadas de APIs: o Broker coordena o processamento com Builder e Router. Segurança, descoberta, persistência e eventos complementam esses caminhos.

%%{init: {"theme":"base","themeVariables":{"fontFamily":"Arial, sans-serif","fontSize":"16px","lineColor":"#64748b","primaryTextColor":"#172b4d"},"flowchart":{"htmlLabels":true,"useMaxWidth":true,"nodeSpacing":28,"rankSpacing":38,"padding":14,"curve":"linear","subGraphTitleMargin":{"top":12,"bottom":16}},"sequence":{"useMaxWidth":true,"actorMargin":28,"width":145,"height":45,"diagramMarginX":32,"diagramMarginY":12,"messageMargin":24,"wrap":true,"mirrorActors":false},"themeCSS":".edgeLabel, .edgeLabel p {background-color:var(--diagram-surface)!important;color:var(--diagram-text)!important}\n.cluster rect {fill:var(--diagram-group)!important;stroke:var(--diagram-line)!important}\n.cluster-label span, .cluster-label text {color:var(--diagram-text)!important;fill:var(--diagram-text)!important}\n.flowchart-link, .actor-line {stroke:var(--diagram-line)!important}\nmarker path {fill:var(--diagram-line)!important;stroke:var(--diagram-line)!important}\n.actor {fill:var(--diagram-domain)!important;stroke:var(--diagram-domain-border)!important}\ntext.actor, .messageText, .loopText, .labelText {fill:var(--diagram-text)!important}\n.messageLine0, .messageLine1, .loopLine {stroke:var(--diagram-line)!important}\n.labelBox {fill:var(--diagram-surface)!important;stroke:var(--diagram-line)!important}\n.note {fill:var(--diagram-async)!important;stroke:var(--diagram-async-border)!important}\n.noteText {fill:var(--diagram-text)!important}\n.nodeLabel, .nodeLabel p, .nodeLabel span {color:var(--diagram-text)!important}\n.node .nodeLabel, .node .nodeLabel p {font-size:17px;font-weight:600;line-height:1.4;text-align:center}\n.nodeLabel small {display:inline-block;margin-top:4px;font-size:15px;font-weight:400;line-height:1.4;color:var(--diagram-description)!important}\ntext.actor, text.actor tspan {font-size:17px;font-weight:600}\n.node.entry rect, .node.entry polygon, .node.entry path, .node.entry circle {fill:var(--diagram-entry)!important;stroke:var(--diagram-entry-border)!important}\n.node.domain rect, .node.domain polygon, .node.domain path, .node.domain circle {fill:var(--diagram-domain)!important;stroke:var(--diagram-domain-border)!important}\n.node.security rect, .node.security polygon, .node.security path, .node.security circle {fill:var(--diagram-security)!important;stroke:var(--diagram-security-border)!important}\n.node.store rect, .node.store polygon, .node.store path, .node.store circle {fill:var(--diagram-store)!important;stroke:var(--diagram-store-border)!important}\n.node.async rect, .node.async polygon, .node.async path, .node.async circle {fill:var(--diagram-async)!important;stroke:var(--diagram-async-border)!important}\n.node.external rect, .node.external polygon, .node.external path, .node.external circle {fill:var(--diagram-external)!important;stroke:var(--diagram-external-border)!important}\n text.actor tspan, .loopText tspan, .labelText tspan, .messageText tspan, .noteText tspan {fill:var(--diagram-text)!important}\n\n"}}%%
flowchart TB
    admin(["Cliente administrativo"]):::external --> cp["Control Plane<br/><small>BFF e serviços administrativos</small>"]:::entry
    client(["Sistema consumidor"]):::external --> dp["Data Plane<br/><small>Broker, Builder e Router</small>"]:::domain
    dp --> target(["API de destino"]):::external
    classDef entry stroke-width:1.5px;
    classDef domain stroke-width:1.5px;
    classDef external stroke-width:1.5px;

Visão de contexto: os blocos agrupam responsabilidades, não workloads ou limites de cluster. Azul identifica a administração, teal o processamento e cinza os consumidores e sistemas externos. A entrada pública não pressupõe passagem pelo BFF; seus mecanismos estão na arquitetura lógica.

Explore também integrações entre serviços, Control Plane e modelagem de dados.

Começando a desenvolver

O Primeiro deploy local percorre uma jornada completa com o JSON Handler: código, build, testes, imagem Docker, instalação no Kind e validação funcional. Use os guias para aprofundar cada etapa:

Etapa Guia
Preparar ferramentas, acesso e repositórios Preparar o ambiente
Configurar e iniciar um serviço Execução local
Compilar e testar Build e testes
Construir e conferir a imagem Imagens Docker
Carregar, implantar e atualizar no cluster Deploy e atualização no Kind
Conferir respostas e investigar falhas Debugging e troubleshooting

Os guias distinguem Java, Go e imagens JVM/native. Cada serviço mantém seus próprios requisitos e configuração.

Encontre pelo seu objetivo

Quero… Acesse
Entender a arquitetura Visões arquiteturais
Executar um serviço localmente Execução local
Criar uma imagem Docker Imagens Docker
Fazer meu primeiro deploy no Kind Primeiro deploy local
Conhecer um microserviço específico Inventário dos serviços e ficha do BFF
Investigar problemas de execução Diagnóstico

O ambiente local é experimental, destinado a desenvolvimento e validação. A infraestrutura e os deployments de DEV, STAGING e PROD pertencem ao TOTVS Apps; as configurações locais não representam necessariamente esses ambientes.