Inyo

Conectividade

Antes que qualquer requisição chegue à API de Remessas, dois requisitos de borda (edge) precisam ser atendidos. Eles são aplicados no perímetro da rede (CDN + WAF), não dentro da API — portanto uma configuração incorreta se manifesta como falha no handshake TLS ou um 403 Forbidden sem corpo, e não como um dos erros JSON documentados em outras páginas.


1. Mutual TLS (mTLS)

Toda requisição deve apresentar um certificado de cliente emitido pela Inyo. Requisições sem um certificado de cliente válido são rejeitadas durante o handshake TLS, antes mesmo de o HTTP ser negociado.

Durante o provisionamento do tenant, você recebe dois arquivos da Inyo:

ArquivoFinalidade
client.crtSeu certificado público de cliente
client.keyA chave privada correspondente — mantenha em segredo; trate como uma senha

Configure seu cliente HTTP para apresentar o certificado em todas as requisições. Armazene a chave em um gerenciador de segredos, não no seu repositório.


2. Endereço IP Fixo

Seu IP de saída deve estar na allowlist da Inyo. Requisições de IPs não listados são descartadas no WAF e retornam 403 Forbidden sem corpo JSON.

Coordene com a Inyo antes de:

  • Rotacionar gateways NAT de saída
  • Adicionar novas regiões ou zonas de disponibilidade
  • Migrar para um novo provedor de hospedagem

Atualizar a allowlist é uma solicitação de suporte rápida, sem mudança de código — mas uma allowlist desatualizada se manifesta como uma indisponibilidade total do seu lado.


Exemplo de curl Funcional

Depois de ter os arquivos de certificado e o seu IP na allowlist:

curl -sS \
  --cert /path/to/client.crt \
  --key  /path/to/client.key \
  --header "x-api-key: $API_KEY" \
  --header "x-agent-id: $AGENT_ID" \
  --header "x-agent-api-key: $AGENT_KEY" \
  --header "Content-Type: application/json" \
  https://{FQDN}/organizations/$TENANT/people \
  --data '{ ... }'

Modos de Falha Comuns

SintomaCausa provável
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL / handshake abortadoCertificado de cliente ausente, incorreto ou expirado (--cert, --key)
403 Forbidden com corpo vazio ou HTMLIP de saída fora da allowlist
401 Unauthorized + {"error":"UNAUTHORIZED", ...}As verificações de mTLS e IP passaram, mas os headers de API key estão ausentes ou incorretos — veja Autenticação
403 Forbidden + {"error":"FORBIDDEN", ...}Credenciais válidas, mas o {tenant} na URL não corresponde ao tenant dono da API key, ou o agente não está aprovado

Regra prática: se você está recebendo um corpo de erro JSON, já passou pelas verificações de mTLS e IP — o problema está na camada de aplicação (credenciais, payload ou regras de negócio).