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 responde422.
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:
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
emitdo 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.