Visão Geral
A WebAPI é uma nova funcionalidade incorporada ao objeto de Formulário do LATROMI. Ela permite que você exponha regras de negócio e lógicas do sistema — sejam elas novas ou já existentes — para o mundo externo, criando uma porta de comunicação padronizada com outras aplicações.
Para ilustrar o poder dessa ferramenta na prática, este tutorial guiará você na construção de um CRUD completo via API. No banco de dados, utilizaremos a seguinte estrutura de tabela para gerenciar produtos:
CREATE TABLE produtos
(
produto_id VARCHAR(36) PRIMARY KEY,
data_criacao TIMESTAMP NOT NULL,
data_atualizacao TIMESTAMP,
nome VARCHAR(255) NOT NULL,
descricao VARCHAR(2000),
preco DECIMAL(10, 2) NOT NULL,
estoque INT NOT NULL,
ativo BOOLEAN NOT NULL DEFAULT TRUE
);
Se tratando de um projeto já existente, que use os IDs como numéricos e incrementais, crie uma coluna auxiliar para expor na API, por exemplo, uma coluna chamada ‘public_id’ do tipo VARCHAR(36) para preencher com um GUID.
Endpoints que iremos construir
Ao longo deste tutorial, configuraremos o LATROMI para responder às seguintes operações padrão de mercado (REST):
| Operação | Método | Descrição |
|---|---|---|
| Listar | GET | Capturar todos os produtos ativos |
| Buscar | GET | Localizar um produto existente |
| Criar | POST | Adicionar um novo produto |
| Atualizar | PUT | Atualizar informações do produto |
| Excluir | DELETE | Inativar um produto |
Requisitos
O tutorial é uma exemplificação de implementação para algum recurso, sendo assim, antes de prosseguir veja a documentação do recurso descrito:
Usando WebAPI no Formulário
A configuração da WebAPI foi incorporada nativamente à interface de desenvolvimento do objeto Formulário. Você pode encontrá-la como uma nova seção diretamente na árvore lateral do painel, exatamente onde você já está acostumado a gerenciar seus Campos, Variáveis e Procedimentos.
Veja na imagem abaixo onde encontrar a configuração:
Configuração inicial
Manter a organização do código é essencial e nos proporciona diversos benefícios como facilitar a manutenção, escalabilidade da lógica, clareza de implementação, dentre outros benefícios. Sendo assim, como uma boa prática na utilização da WebAPI iremos criar duas variáveis no formulário:
| Nome | Tipo | Objetivo |
|---|---|---|
| cRequest | Texto | Armazenar o corpo de requisição da requisição para a Web API |
| cResponse | Texto | Devolver a resposta tratada ao fim do processo de requisição |
Criar
A criação de uma Web API é bem semelhante a criação de um campo no formulário. Siga o passo a passo para iniciar:
- Clique com o botão direito na seção Web API’s (exposição) para adicionar
- Clique no ícone de um
Arquivo com um raiopara adicionar um evento na Web API - Clique com o botão direito em
Requestpara adicionar um evento de requisição
Siga as instruções abaixo para configurar sua Web API e o Procedimento vinculado ao evento.
Web API
Nome: Criar
Método: POST
→ Corpo
Tipo: Raw
Formatação: JSON
Mapeado em:
| Nome | Tipo |
|---|---|
| cRequest | Variável |
Exemplo de requisição: *Não é configuração. Somente para referência.
{
"nome": "<string>",
"descricao": "<string>",
"preco": 0.0,
"estoque": 0
}
Procedimento
Nome: Criar_Request
Sequência de comandos:
- Carregar Registro
- Conteúdo: COMANDO_SQL_1
- Popular campos e variáveis
- Conteúdo:
- Produto_id: (CAMPO) return Guid.NewGuid(); [Código C#]
- Conteúdo:
- Carregar Registro
- Conteúdo: COMANDO_SQL_2
- Converter para JSON ou XML (serializar)
- Formato: JSON
- Conteúdo:
- cResponse: Preenche a variável
- rNewRecord: Serializa as informações do Registro
- Produzir Resposta
- Código de Resposta: 201 - Created
- Tipo de Resposta: application/json
- Conteúdo da Resposta: VAR.cResponse
Legenda:
| Etiqueta | Igual | Valor |
|---|---|---|
| COMANDO_SQL_1 | SELECT x.nome, x.descricao, x.preco, x.estoque FROM jsonb_to_record(‘{?VAR.requestBody}’::jsonb) AS x( nome TEXT, descricao TEXT, preco DECIMAL(10, 2), estoque INT ) |
|
| COMANDO_SQL_2 | INSERT INTO samples.produtos ( produto_id, data_criacao, nome, descricao, preco, estoque, ativo ) VALUES ( ‘{?INPUT.Produto_id}’, CURRENT_TIMESTAMP, ‘{?RECORD.rRequestDeserialized.nome}’, ‘{?RECORD.rRequestDeserialized.descricao}’, {?RECORD.rRequestDeserialized.preco}, {?RECORD.rRequestDeserialized.estoque}, TRUE ) RETURNING * |
Exemplo do procedimento:
// Comando SQL usando função do PostgreSQL para deserializar o JSON em uma record
var rRequestDeserialized = LoadRecord(COMANDO_SQL_1) // <-- 1. Carregar Registro
// Geração de valores iniciais para criação
Populate(INPUT.Product_id, INPUT.Ativo) // INPUT.Product_id é populado usando c# com o seguinte comando 'return Guid.NewGuid();'
// Insere um novo produto no banco de dados e retorna as informações
var rNewProduct = LoadRecord(COMANDO_SQL_2) // <-- 3. Carregar Registro
// Converte o 'Registro para uma variável texto
set cResponse = JsonSerialize(rNewProduct) // 4. Converter para JSON ou XML (serializar)
// Ações de Web API para produção de resposta
Response.Send(201, {VAR.cResponse}) // 201 indica criação
Listar
A criação de uma Web API é bem semelhante a criação de um campo no formulário. Siga o passo a passo para iniciar:
- Clique com o botão direito na seção Web API’s (exposição) para adicionar
- Clique no ícone de um
Arquivo com um raiopara adicionar um evento na Web API - Clique com o botão direito em
Requestpara adicionar um evento de requisição
Siga as instruções abaixo para configurar sua Web API e o Procedimento vinculado ao evento.
Web API
Nome: Listar
Método: GET
Endpoint: all
Procedimento
Nome: Listar_Request
Sequência de comandos:
- Carregar conjunto de registros
- Conteúdo: COMANDO_SQL_1
- Converter para JSON ou XML (serializar)
- Código de Resposta: 200 - OK
- Tipo de Resposta: application/json
- Conteúdo da Resposta: VAR.cResponse
- Produzir Resposta
- Formato: JSON
- Conteúdo:
- cResponse: Preenche a variável
- rsProdutos Serializa as informações do Registro
Legenda:
| Etiqueta | Igual | Valor |
|---|---|---|
| COMANDO_SQL_1 | SELECT * FROM samples.produtos WHERE Ativo = TRUE |
Exemplo de procedimento:
// Carrega o conjunto de registros ativos
var rsProdutos = LoadRecordSet(COMANDO_SQL_1) // 1. Carregar conjunto de Registros
// Converte o 'Conjunto de registros' para uma lista JSON
set cResponse = JsonSerialize(rsProdutos) // 2. Converter para JSON ou XML (serializar)
// Ações de Web API para produção de resposta
Response.Send(200, {VAR.cResponse}) // 200 indica que o processamento está OK
Buscar
A criação de uma Web API é bem semelhante a criação de um campo no formulário. Siga o passo a passo para iniciar:
- Clique com o botão direito na seção Web API’s (exposição) para adicionar
- Clique no ícone de um
Arquivo com um raiopara adicionar um evento na Web API - Clique com o botão direito em
Requestpara adicionar um evento de requisição
Siga as instruções abaixo para configurar sua Web API e o Procedimento vinculado ao evento.
Web API
Nome: Buscar
Método: GET
→ Parâmetros
| Parâmetro de URL | Mapeado em | Tipo do valor mapeado | Descrição |
|---|---|---|---|
| id | INPUT.Produto_id | CAMPO | Identificador do registro que deseja capturar |
Procedimento
Nome: Buscar_Request
Sequência de comandos:
- Carregar Registro
- Conteúdo: COMANDO_SQL_1
- Converter para JSON ou XML (serialize)
- Código de Resposta: 200 - OK
- Tipo de Resposta: application/json
- Conteúdo da Resposta: VAR.cResponse
- Produzir resposta
- Formato: JSON
- Conteúdo:
- cResponse: Preenche a variável
- rProduto: Serializa as informações do Registro
Legenda:
| Etiqueta | Igual | Valor |
|---|---|---|
| COMANDO_SQL_1 | SELECT * FROM samples.produtos WHERE produto_id = ‘{?INPUT.Produto_id}’ |
Exemplo de procedimento:
// Carrega o registro informado pelo identificador
var rProduto = LoadRecord(COMANDO_SQL_1) // 1. Carregar Registro
// Converte o 'Registro' para um JSON
set cResponse = JsonSerialize(rProduto) // 2. Converter para JSON ou XML (serialize)
// Ações de Web API para produção de resposta
Response.Send(200, {VAR.cResponse}) // 200 Indica que processamento esta OK
Atualizar
A criação de uma Web API é bem semelhante a criação de um campo no formulário. Siga o passo a passo para iniciar:
- Clique com o botão direito na seção Web API’s (exposição) para adicionar
- Clique no ícone de um
Arquivo com um raiopara adicionar um evento na Web API - Clique com o botão direito em
Requestpara adicionar um evento de requisição
Siga as instruções abaixo para configurar sua Web API e o Procedimento vinculado ao evento.
Web API
Nome: Atualizar
Método: PUT
→ Corpo
Tipo:
Formato:
Mapeado em:
| Nome | Tipo |
|---|---|
| cRequest | Variável |
Exemplo de requisição: *Não é configuração. Somente para referência
{
"id": "<string>",
"nome": "<string>",
"descricao": "<string>",
"preco": 0.0,
"estoque": 0
}
Procedimento
Nome: Atualizar_Request
Sequência de comandos:
- Carregar Registro
- Conteúdo: COMANDO_SQL_1
- Carregar Registro
- Conteúdo: COMANDO_SQL_2
- Converter para JSON ou XML (serialize)
- Formato: JSON
- Conteúdo:
- cResponse: Preenche a variável
- rUpdatedProduct: Serializa as informações do Registro
- Produzir Resposta
- código de Resposta: 200 - OK
- Tipo de Resposta: application/json
- Conteúdo da Resposta: VAR.cResponse
Legenda:
| Etiqueta | Igual | Valor |
|---|---|---|
| COMANDO_SQL_1 | SELECT x.id, x.nome, x.descricao, x.preco, x.estoque FROM jsonb_to_record(‘{?VAR.requestBody}’::jsonb) AS x( id VARCHAR(36), nome TEXT, descricao TEXT, preco DECIMAL(10, 2), estoque INT ) |
|
| COMANDO_SQL_2 | UPDATE samples.produtos SET data_atualizacao = CURRENT_TIMESTAMP –#if {?RECORD.rRequestDeserialized.nome} , nome = ‘{?RECORD.rRequestDeserialized.nome}’ –#endif –#if {?RECORD.rRequestDeserialized.descricao} , descricao = ‘{?RECORD.rRequestDeserialized.descricao}’ –#endif –#if {?RECORD.rRequestDeserialized.preco} , preco = {?RECORD.rRequestDeserialized.preco} –#endif –#if {?RECORD.rRequestDeserialized.estoque} , estoque = {?RECORD.rRequestDeserialized.estoque} –#endif WHERE ativo = TRUE AND produto_id = ‘{?RECORD.rRequestDeserialized.id}’ RETURNING * |
Exemplo de procedimento:
// Comando SQL usando função do PostgreSQL para deserializar o JSON em uma record
var rRequestDeserialized = LoadRecord(COMANDO_SQL_1) // 1. Carregar Registro
// Atualiza o produto no banco de dados e retorna as informações
var rUpdatedProduct = LoadRecord(COMANDO_SQL_2) // 2. Carregar Registro
// Converte o 'Registro' para uma variavel texto
set cResponse = JsonSerialize(rUpdateProduct) // 3. Converte para JSON ou XML (serialize)
// Ações de Web API para produção de resposta
Response.Send(200, {VAR.cResponse}) // 200 Indica que processamento esta OK
Excluir
A criação de uma Web API é bem semelhante a criação de um campo no formulário. Siga o passo a passo para iniciar:
- Clique com o botão direito na seção Web API’s (exposição) para adicionar
- Clique no ícone de um
Arquivo com um raiopara adicionar um evento na Web API - Clique com o botão direito em
Requestpara adicionar um evento de requisição
Siga as instruções abaixo para configurar sua Web API e o Procedimento vinculado ao evento.
Web API
Nome: Excluir
Método: DELETE
→ Parâmetros
| Parâmetro de URL | Mapeado em | Tipo do valor mapeado | Descrição |
|---|---|---|---|
| id | INPUT.Produto_id | CAMPO | Identificador do produto para exclusão |
Procedimento
Nome: Excluir_Request
Sequência de comandos:
- Executar comando SQL
- Conteúdo: COMANDO_SQL_1
- Produzir resposta
- Código de Resposta: 200 - OK
- Tipo de Resposta: application/json
- Conteúdo da Resposta: null
Legenda:
| Etiqueta | Igual | Valor |
|---|---|---|
| COMANDO_SQL_1 | UPDATE samples.produtos SET Ativo = FALSE WHERE produto_id = ‘{?INPUT.Produto_id}’ |
Exemplo de procedimento:
// Atualiza o produto indicado para inativa
Run(Languages.SQL, COMANDO_SQL_1)
// Ações de Web API para produção de resposta
Response.Send(200) // 200 Indica que processamento esta OK
Fazendo a primeira chamada
Por fim, vamos testar a API criada. Clique aqui para verificar os exemplos de requisição para teste via Postman.
Para verificar a demonstração acesso o demo Latromi.
Adicionando ao Menu do Latromi
Antes de efetuar a primeira requisição, precisamos adicionar o Formulário no menu do Latromi Web. Siga o passo a passo a seguir no Latromi Client:
- Clique em Desenvolvimento.
- Clique em Menus.
- Adicione um menu chamado WebApi.
- Clique com o botão direito no menu WebApi e adicione um Objeto.
- Selecione o tipo Web API.
- Selecione o formulário que criamos a Web API dos passos anteriores.
- Na aba da direita altere o Caminho amigável para URL com o seguinte valor
webapi/v1/produtos.
Criando uma chave de integração
É necessário criar uma chave de integração para poder efetuar os exemplos e substituir em apikey no postman, assim como imagem abaixo:
Para qualquer requisição web efetuada no LATROMI, é necessário que haja uma autenticação. Isso não é diferente no caso dos WebHooks. Aqui a autenticação ocorrerá através da Chave de Integração, que deverá ser passada no cabeçalho HTTP X-Latromi-IntegrationKey.
Chave de Integração
Para gerar a “Chave de Integração”, acesse o menu “LATROMI Tools → Segurança → Chaves de Integração” no LATROMI Web.
Ao gerar a chave, habilite a permissão MessageBOT (Recebimento).
Conclusão
Parabéns! Agora sua primeira Web API está no ar!
Você acaba de concluir e testar com sucesso a sua primeira requisição utilizando o novo recurso de Web API do LATROMI. Esse é um marco importante que eleva o nível técnico dos seus projetos, abrindo as portas do seu sistema para um universo infinito de integrações.
O CRUD que construímos juntos neste tutorial é apenas a ponta do iceberg. Existem inúmeras formas de explorar todo o potencial dessa ferramenta no seu dia a dia de desenvolvimento, como:
- Automação de processos: Criar endpoints para receber webhooks de serviços externos (Ex.: Mensageria, notificações de pagamentos, etc)
- Aplicações multiplataformas: Servir dados de forma estruturada e segura para aplicativos mobile
Rumo ao futuro! ![]()
Agora é com vocês! Explorem as possíveis implementações, facilitem processos e melhorem seus sistemas. Achou uma forma legal e diferente de usar o recurso? Compartilhe a sua experiência e inspire outros desenvolvedores da comunidade!

