Pular para conteúdo

Ambientes e credenciais

Dois ambientes, dois endereços

Servimos cada dialeto em dois hostnames. Documentos emitidos em homologação não têm validade fiscal nem tributária. Eles servem ao seu ciclo de testes.

Dialeto Produção Homologação
ACBrAPI https://acbrapi.api.veraciti.com.br https://acbrapi-sandbox.api.veraciti.com.br
FocusNFE https://focusnfe.api.veraciti.com.br https://focusnfe-sandbox.api.veraciti.com.br

Uma requisição que chegar por qualquer outro hostname recebe 404. O endereço faz parte da identificação do adaptador, não é só um apelido de DNS.

Como você escolhe o ambiente

Aqui o ACBrAPI e o FocusNFE divergem, porque os provedores divergem, e nós seguimos cada um.

O ambiente vem do endereço base + o token. Cada empresa tem um token por ambiente. O token de homologação só resolve no host de homologação, e vice-versa. Não existe campo de ambiente no corpo.

O ambiente vem do campo ambiente no corpo ("homologacao" ou "producao"), e a aceitação é assimétrica, como no provedor:

  • o host de produção aceita os dois valores.
  • o host de homologação aceita apenas "homologacao". Pedir "producao" nele responde 422.

Esse host também só enxerga documentos de homologação nas consultas e listagens.

Credenciais

O Veraciti emite as credenciais, e elas chegam prontas para uso. Não há endpoint público de auto-provisionamento nesta versão. O que você recebe depende do dialeto:

Um token por empresa por ambiente, apresentado em HTTP Basic como nome de usuário, com senha em branco:

curl -u 'SEU_TOKEN_AQUI:' https://focusnfe.api.veraciti.com.br/v2/nfce/PEDIDO1234

Credencial inválida, ausente ou desativada responde 401 com corpo text/html HTTP Basic: Access denied. É o mesmo formato do provedor, e não JSON.

Um par client_id + client_secret, trocado por um Bearer no endpoint de token que fica no mesmo host da API:

curl -X POST \
  https://acbrapi.api.veraciti.com.br/realms/ACBrAPI/protocol/openid-connect/token \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'grant_type=client_credentials' \
  -d 'client_id=exemplo-client-id' \
  -d 'client_secret=exemplo-client-secret' \
  -d 'scope=nfce'

O token responde expires_in de 30 dias, como no provedor. Guarde e reutilize, não autentique a cada requisição. As rotas de NFC-e exigem o escopo nfce. Sem ele, a resposta é 403 insufficient_scope.

Desativar uma credencial corta o acesso imediatamente, sem esperar o token expirar.

Empresa e certificado

A empresa emitente e o certificado A1 ficam cadastrados no Veraciti. O adaptador não expõe as rotas de cadastro de empresa do provedor. Consequências práticas:

  • Os dados do emitente vêm do nosso cadastro, não do corpo da requisição. Se o dialeto manda um bloco de emitente (o emit do ACBrAPI), nós validamos o CNPJ e ignoramos o resto. Ver a página de compatibilidade do dialeto.
  • Uma credencial pode estar amarrada a uma empresa específica. Nesse caso, recusamos um pedido de emissão para outro CNPJ, mesmo que o CNPJ exista na sua conta.
  • CSC e demais parâmetros de NFC-e são configuração nossa. Você não os envia.