Pular para o conteúdo principal

Identificação do Software Integrador (User-Agent)

Requisito obrigatório para operação em ambiente de Produção.


Visão geral​

A infraestrutura da NDD aplica uma política de controle de acesso que bloqueia automaticamente requisições sem identificação de origem válida. Essa medida garante que apenas sistemas TMS/ERP devidamente homologados operem no ambiente de Produção.

O mecanismo de identificação utilizado é o header HTTP User-Agent, que deve ser enviado em todas as requisições feitas ao ambiente de Produção.

Atenção

Este requisito se aplica somente ao ambiente de Produção.
Em Homologação (HML), o envio do User-Agent não é obrigatório.
Ao migrar para Produção, o header User-Agent deve estar presente em todas as requisições.

Como identificar o bloqueio​

Quando uma requisição é bloqueada, a API retorna HTTP 403 com o seguinte corpo:

{
"code": "403",
"message": "Forbidden",
"RequestId": "a3f92c10bd874e1f95d06a3c2b871d40" 
}

O campo RequestId é o identificador único da requisição bloqueada. Ele é obrigatório para solicitar a liberação de acesso junto ao time de Implantação.

RequestId

O RequestId está no corpo (body) da resposta, não no header.
Cada requisição bloqueada gera um RequestId diferente. Utilize o mais recente ao acionar o time de Implantação.

O que é o User-Agent?​

O User-Agent é um cabeçalho HTTP enviado em toda requisição que identifica o sistema responsável pela chamada. Na integração com o NDD Cargo, ele é utilizado para validar que a requisição parte de um software legítimo e não de uma ferramenta de teste.

Formato esperado:

User-Agent: <NomeDoSistema> 

Exemplos:
User-Agent: MeuSistemaTMS
User-Agent: ERPTransportes
User-Agent: SistemaLogistica
Recomendação sobre o valor do User-Agent

Utilize um nome que identifique claramente o seu sistema.
Evite valores genéricos como: app, client ou sistema.
Defina o valor uma vez e mantenha sem alterações. Ele representa a identidade do seu sistema perante a infraestrutura NDD.

Dados necessários para liberação​

Para que o time de Implantação abra o chamado com a infraestrutura NDD, o integrador deve fornecer os três dados abaixo:

DadoOnde encontrarExemplo
RequestIdCampo RequestId no corpo JSON da resposta 403 retornada pela API.a3f92c10bd874e1f95d06a3c2b871d40
Endpoint executadoCaminho do endpoint chamado no momento do bloqueio./consulta/consultaRoteirizador/enterpriseID
User-AgentNome do sistema integrador, conforme será enviado no header das requisições.MeuSistemaTMS
Atenção ao informar o User-Agent

O valor informado na solicitação deve ser exatamente igual ao enviado nas requisições.
Qualquer diferença de capitalização ou conteúdo fará com que o bloqueio persista.

Como solicitar a liberação​

Com os três dados em mãos, acione o time de Implantação responsável por apoiar a sua integração. Eles abrirão o chamado com a infraestrutura NDD para registrar o User-Agent do seu sistema.

Prazo de liberação

A liberação ocorre em até 1 dia útil a partir da abertura do chamado com a infraestrutura NDD.

Como implementar o User-Agent​

O header deve estar presente em todas as requisições enviadas à API NDD Cargo (métodos GET e POST).

O nome do header (User-Agent) é case-insensitive conforme o protocolo HTTP/1.1. O valor, no entanto, deve ser idêntico ao informado na solicitação de liberação.

Boas práticas​

Defina o User-Agent uma única vez em uma configuração centralizada do cliente HTTP.

Use um identificador claro que represente o nome do seu sistema.

Evite nomes genéricos como app, client ou sistema.

Exemplo em Java (HttpClient)​

HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.nddcargo.com.br/consulta/consultaRoteirizador/enterpriseID"))
.header("User-Agent", "MeuSistemaTMS")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();

Fluxo de Ativação em Produção​

1. Desenvolva e valide a integração em HML normalmente. O User-Agent não é exigido nesse ambiente.

2. Implemente o header User-Agent no seu sistema com o valor escolhido (ex.: MeuSistemaTMS). Mantenha esse valor sem alterações.

3. Realize uma chamada em Produção. Ela será bloqueada com HTTP 403. Esse comportamento é esperado nessa etapa.

4. Colete o RequestId do campo RequestId no corpo da resposta 403.

5. Acione o time de Implantação informando: RequestId, endpoint executado e User-Agent.

6. Aguarde a liberação. O chamado será aberto com a infraestrutura NDD e a liberação ocorre em até 1 dia útil.

7. Após a liberação, todas as requisições com o User-Agent cadastrado serão aceitas em Produção.

Perguntas Frequentes​

Posso usar Postman ou Insomnia em Produção? Não. Ferramentas de teste são bloqueadas no ambiente de Produção. As chamadas devem partir exclusivamente do sistema TMS/ERP com o User-Agent liberado.

O ambiente de Homologação também bloqueia? Não. O envio do User-Agent é obrigatório somente em Produção. Em HML, as requisições são aceitas independentemente do header.

Posso alterar o valor do User-Agent após a liberação? Recomendamos manter o mesmo valor definido no momento da solicitação. O User-Agent representa a identidade do seu sistema e deve permanecer estável.

E se eu receber 403 mesmo após a liberação? Verifique se o valor do User-Agent enviado na requisição é idêntico ao informado na solicitação. Diferenças de capitalização ou conteúdo causam bloqueio. Em caso de dúvida, acione o time de Implantação.

Referências​

MDN Web Docs - User-Agent Header: https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Reference/Headers/User-Agent