Ambiente de Homologação (Sandbox) para Testar a API de Assinatura
Nenhuma integração de assinatura digital deveria estrear direto em produção. O ambiente de homologação (HML) — também chamado de sandbox — é onde você valida autenticação, criação de transações, métodos de assinatura e webhooks sem gerar assinaturas com validade jurídica, sem consumir quota real e sem risco de afetar contratos de clientes. Este guia mostra, na prática, como testar a API de assinatura SignDocs em homologação antes de subir para produção com segurança.
Vamos cobrir o host correto do sandbox (api-hml.signdocs.com.br, na forma com hífen), o que muda entre HML e produção, o TTL de 7 dias que apaga as entidades de teste, a biometria simulada em homologação, o uso de credenciais separadas, como testar webhooks com túneis ou webhook.site (e por que IPs privados são bloqueados), e um checklist completo de promoção HML para PROD.
Se você ainda não emitiu suas chaves, comece por como obter sua API key de assinatura e pelos primeiros passos da API em 5 minutos. Para o panorama completo da plataforma, consulte o guia-pilar sobre a API de assinatura digital.
O que é o ambiente de homologação (sandbox)
O ambiente de homologação é uma réplica funcional da API de produção, isolada e segura, criada especificamente para testes. Ele expõe os mesmos endpoints, o mesmo modelo de dados e o mesmo formato de resposta da produção, mas opera sobre uma infraestrutura separada, com credenciais próprias e regras pensadas para o ciclo de desenvolvimento.
Na prática, o sandbox permite que sua equipe:
- Valide o fluxo de autenticação OAuth2 client-credentials e a renovação de tokens;
- Crie sessões de assinatura e envelopes de teste sem custo e sem validade jurídica real;
- Exercite cada método de autenticação de signatário (clickwrap, OTP, biometria, certificado ICP-Brasil);
- Receba e verifique webhooks de ponta a ponta;
- Rode testes automatizados de integração em CI/CD sem tocar em dados de clientes;
- Reproduza cenários de erro e valide o tratamento de falhas da sua aplicação.
O princípio central é simples: tudo que acontece em homologação fica em homologação. Documentos assinados no sandbox não têm valor probatório, não aparecem em produção e são descartados automaticamente após o período de retenção de teste.
O host correto: api-hml.signdocs.com.br (com hífen)
O primeiro detalhe — e a fonte mais comum de frustração na primeira integração — é a base URL do sandbox. O host de homologação da SignDocs é:
api-hml.signdocs.com.br (DASH), não api.hml.signdocs.com.br (com ponto). A forma com ponto não resolve ou aponta para um host inexistente, e o sintoma costuma ser um erro de DNS, timeout ou certificado TLS inválido — facilmente confundido com um problema de credenciais. Configure a base URL uma única vez, em uma variável de ambiente, e nunca a digite manualmente nas chamadas.
A produção, por sua vez, usa o host raiz api.signdocs.com.br. A regra de ouro é manter as duas URLs em configuração, selecionadas por estágio:
Com esse padrão, promover a integração para produção é apenas trocar o arquivo de ambiente — sem nenhuma alteração de código. Isso é exatamente o que recomendamos no guia de como obter e gerenciar suas credenciais da API.
O que muda (e o que não muda) entre HML e produção
A maior virtude de um bom sandbox é a paridade: quanto mais parecido com a produção, mais confiança o teste gera. Ainda assim, algumas diferenças deliberadas existem. A tabela abaixo resume o que esperar.
| Aspecto | Homologação (HML / Sandbox) | Produção (PROD) |
|---|---|---|
| Host base | api-hml.signdocs.com.br (com hífen) |
api.signdocs.com.br |
| Credenciais OAuth2 | Conjunto exclusivo de HML | Conjunto exclusivo de PROD |
| Retenção de dados | TTL de 7 dias (envelopes, transações e evidência expiram) | Persistência durável de longo prazo |
| Validade jurídica | Nenhuma. Documentos são apenas para teste | Plena (MP 2.200-2/2001, LGPD) |
| Biometria facial | Simulada por padrão (contas self-serve) | Captura e validação real |
| Quota / cobrança | Sem consumo de quota real | Consome quota do plano contratado |
| Endpoints e payloads | Idênticos à produção | Idênticos à homologação |
| Webhooks | Mesmos eventos e assinatura HMAC; URLs privadas bloqueadas por WAF | Mesmos eventos e assinatura HMAC |
| Verificador público | Não confiável para HML (entidades expiram) | Consulta durável em verificador.signdocs.com.br |
Como os endpoints e payloads são idênticos, qualquer código que funcione contra o sandbox funcionará contra a produção. As diferenças concentram-se em retenção, validade jurídica, biometria e cobrança — nenhuma delas exige alteração no seu cliente, apenas consciência ao planejar os testes.
O TTL de 7 dias: planeje seus testes para isso
Esta é a diferença que mais surpreende quem chega ao sandbox vindo de outros provedores. No ambiente de homologação da SignDocs, as principais entidades — envelopes, transações e o pacote de evidência (evidence pack .p7m) — têm um TTL (time to live) de 7 dias. Passado esse prazo, elas expiram e são removidas automaticamente.
Isso é intencional e saudável: mantém o sandbox enxuto, evita acúmulo de lixo de teste e protege a privacidade de qualquer dado que você tenha colocado lá. Mas tem implicações diretas sobre como você organiza seus testes.
O que o TTL significa na prática
- Não construa testes que dependam de dados antigos. Um ID de transação criado há mais de uma semana muito provavelmente já não existe. Testes idempotentes e auto-suficientes, que criam o que precisam a cada execução, são a abordagem correta.
- Não use HML como repositório. Se precisa guardar um documento assinado ou um pacote de evidência de teste para referência futura, faça o download e armazene fora do sandbox.
- O verificador público não é confiável para HML. Como as entidades expiram, uma consulta de verificação semanas depois pode não encontrar a transação. Em produção isso não acontece:
ENVELOPE,TRANSACTIONeEVIDENCEsão persistidos de forma durável justamente porque a verificação pública depende dessa consulta de longo prazo. - Suites de regressão devem recriar o estado. Em CI/CD, faça cada job de teste construir seu próprio envelope/transação e limpar ao final, em vez de assumir dados pré-existentes.
Biometria e assinatura simuladas em homologação
Testar fluxos que exigem biometria facial real seria inviável em automação: você não pode pedir a um pipeline de CI que faça uma prova de vida diante da câmera. Por isso, no sandbox, os métodos BIOMETRIC_LIVENESS (prova de vida) e BIOMETRIC_MATCH (correspondência facial) rodam em modo simulado por padrão para contas self-serve de homologação.
Na prática, isso significa que você consegue exercitar toda a jornada — criação da sessão, avanço pelos passos de assinatura, callback de webhook e geração de evidência — sem uma captura facial verdadeira. A aprovação biométrica em HML é tratada como determinística, o que torna os testes reprodutíveis.
Os demais métodos de autenticação multimétodo também são totalmente testáveis no sandbox:
- CLICK_ACCEPT (clickwrap): aceite por clique, o caminho mais simples para um teste de fumaça;
- OTP_CHALLENGE (código por SMS/e-mail): útil para variar resultados de sucesso e falha;
- BIOMETRIC_LIVENESS / BIOMETRIC_MATCH: simulados, como descrito acima;
- DIGITAL_SIGN_A1 (certificado ICP-Brasil): assinatura com certificado, lembrando que
DIGITAL_CERTIFICATEé o valor deprofileda política, enquantoDIGITAL_SIGN_A1aparece apenas comostep.typena resposta.
Para entender como esses métodos se combinam em perfis (por exemplo, biometria + OTP), veja a seção de métodos de autenticação em o que é uma API de assinatura digital. Quando precisar de validação biométrica com captura real em homologação, isso é provisionado pela equipe da SignDocs — normalmente no momento em que sua conta recebe quota para o método — em vez de estar disponível por padrão nas contas self-serve.
Credenciais separadas: nunca misture HML e PROD
As credenciais OAuth2 de homologação são distintas e isoladas das de produção. Um client_id/client_secret de HML só emite tokens válidos contra o host de HML, e um token de HML não autentica chamadas em produção (e vice-versa). Essa separação é uma barreira de segurança: impede que um teste, por engano, dispare uma assinatura real.
O fluxo de obtenção de token é idêntico em ambos os estágios — apenas a base URL e o segredo mudam:
Boas práticas de gestão de credenciais para sandbox e produção:
- Secrets distintos por estágio. Guarde HML e PROD em entradas separadas do seu cofre de segredos (AWS Secrets Manager, Vault, GitHub Secrets), nunca no código.
- Seleção por variável de ambiente. Uma única flag (
STAGE=hmlouSTAGE=prod) decide quais credenciais e qual base URL carregar. - Rotação independente. Rotacione o segredo de produção sem afetar os testes, e vice-versa.
- Princípio do menor privilégio. As credenciais de teste em CI/CD devem ser somente de HML, jamais de produção.
Detalhes do fluxo de token, expiração (15 minutos) e assinatura JWT (ECDSA ES256) estão no guia de autenticação OAuth2 da API de assinatura.
Testando webhooks em homologação: túneis e webhook.site
Webhooks são notoriamente difíceis de testar porque exigem que a API alcance um endpoint seu pela internet. Em desenvolvimento local, sua aplicação roda em localhost — invisível para o mundo externo. O sandbox foi feito para esse cenário, mas há uma regra de segurança importante.
IPs privados e localhost são bloqueados pelo WAF
Ao cadastrar uma URL de webhook que aponta para localhost, 127.0.0.1 ou para um IP de rede privada (faixas 10.x, 192.168.x, 172.16-31.x), uma regra de WAF bloqueia o registro e a chamada retorna 403 do CloudFront. Isso evita ataques de SSRF e tentativas de fazer a infraestrutura chamar endereços internos. Logo, você não pode simplesmente apontar o webhook de HML para a sua máquina.
Opção 1: túnel (ngrok, Cloudflare Tunnel)
A solução padrão é expor seu endpoint local por meio de um túnel, que fornece uma URL pública HTTPS encaminhando para o seu localhost:
Opção 2: coletor público (webhook.site)
Se você só quer inspecionar os payloads e headers antes de escrever o receptor, um coletor como webhook.site oferece uma URL pública descartável que captura cada POST recebido. É ideal para descobrir o formato exato do evento e o header de assinatura HMAC antes de implementar a verificação real.
webhook.site para observar a estrutura dos eventos, depois passe para um túnel (ngrok) apontando para o seu receptor local para testar a verificação HMAC e a idempotência, e só então aponte o webhook de produção para a URL pública estável do seu serviço. Todo o mecanismo de assinatura, retries e dead-letter queue está detalhado no guia de webhooks e eventos da API de assinatura.
Lembre-se de que a verificação HMAC-SHA256 dos webhooks é idêntica em HML e em produção — apenas o segredo do webhook é diferente por ambiente. Validar a verificação no sandbox garante que ela funcionará sem ajustes em produção.
Um teste de ponta a ponta no sandbox
Para amarrar tudo, eis a sequência mínima de um teste de fumaça completo em homologação, do token à evidência. Cada passo usa o host api-hml.signdocs.com.br e as credenciais de HML.
- Autenticar: obter um
access_tokenvia OAuth2 client-credentials no endpoint de token de HML. - Criar a sessão de assinatura: chamar
POST /v1/signing-sessionscom um documento de teste e um signatário. Esse é o caminho da Assinatura Expressa — uma chamada gera o checkout hospedado ou o widget incorporado. - Cadastrar o webhook: registrar a URL pública do túnel para os eventos
SIGNING_SESSION.COMPLETEDeTRANSACTION.COMPLETED. - Concluir a assinatura: abrir o link retornado e completar o método de autenticação (clickwrap para o caminho mais rápido; biometria simulada se quiser exercitar esse fluxo).
- Receber e verificar o webhook: confirmar que o evento chegou ao seu receptor, validar a assinatura HMAC e aplicar a idempotência.
- Baixar o resultado: obter o documento assinado e o pacote de evidência
.p7m— e armazená-los fora do sandbox, lembrando do TTL de 7 dias.
Esse fluxo exercita exatamente o mesmo caminho do quickstart de primeiros passos em 5 minutos que rodará em produção. Se ele passa em HML, você tem alta confiança de que passará em PROD.
api-hml.signdocs.com.br com SDKs oficiais para TypeScript/Node, Python, Go, Java, PHP e C#/.NET — ou via REST puro. Comece grátis ou fale com nossa equipe para provisionar uma conta de HML com biometria real para validação enterprise.
Checklist de promoção: de homologação para produção
Antes de virar a chave para produção, percorra esta lista. Ela separa o que se valida no sandbox do que se confere especificamente ao migrar.
Validado em homologação
- Fluxo OAuth2 emitindo e renovando tokens sem erro;
- Criação de sessão de assinatura e/ou envelope com sucesso;
- Ao menos um signatário concluindo cada método de autenticação que você usa;
- Webhooks entregues, com verificação HMAC-SHA256 e idempotência funcionando;
- Tratamento de erros, timeouts e retries exercitado;
- Download do documento assinado e do pacote de evidência
.p7m; - Testes automatizados de integração verdes em CI/CD.
Conferir ao migrar para produção
| Item | Ação na promoção HML → PROD |
|---|---|
| Base URL | Trocar api-hml.signdocs.com.br por api.signdocs.com.br via variável de ambiente |
| Credenciais | Carregar o client_id/client_secret de produção a partir do cofre de segredos |
| Segredo do webhook | Atualizar para o secret de webhook de produção (a verificação HMAC é a mesma) |
| URL de webhook | Apontar para o endpoint público e estável do seu serviço (sem túnel) |
| Retenção de dados | Validar a estratégia de arquivamento de longo prazo — o TTL de 7 dias não existe em PROD |
| Biometria | Confirmar que a captura real está habilitada (em HML era simulada) |
| Quota e plano | Verificar a quota contratada — produção consome cobrança real |
| Teste de fumaça em PROD | Rodar uma assinatura real ponta a ponta e verificá-la em verificador.signdocs.com.br |
| Monitoramento | Ativar alertas de erro, falhas de webhook e dead-letter queue |
O ideal é que a promoção seja, do ponto de vista de código, um no-op: apenas variáveis de ambiente mudam. Quanto mais fiel foi o teste em homologação, menor a chance de surpresas em produção.
Perguntas frequentes sobre o ambiente de homologação
Qual é o host do ambiente de homologação (sandbox) da API SignDocs?
O host de homologação é api-hml.signdocs.com.br, na forma com hífen (DASH). Atenção: não é api.hml.signdocs.com.br com ponto. Esse é um erro de configuração comum que faz a resolução de DNS falhar ou apontar para um host inexistente. Sempre que montar a base URL do seu cliente HTTP, use exatamente https://api-hml.signdocs.com.br e mantenha esse valor em uma variável de ambiente separada da URL de produção.
Por quanto tempo os dados de teste ficam disponíveis no sandbox?
No ambiente de homologação, entidades como envelopes, transações e pacotes de evidência (evidence pack) têm um TTL de 7 dias, ou seja, expiram e são removidas automaticamente após esse prazo. Isso mantém o sandbox limpo, mas significa que você não pode contar com dados de teste de forma permanente. Planeje seus testes para serem recriados a cada execução e nunca baixe um documento ou evidência de HML esperando consultá-lo semanas depois. Em produção, ENVELOPE, TRANSACTION e EVIDENCE são persistidos de forma durável, justamente porque o verificador público depende dessa consulta de longo prazo.
Preciso de credenciais diferentes para homologação e produção?
Sim. As credenciais OAuth2 (client_id e client_secret) de homologação são distintas das de produção e só funcionam contra o host correspondente. Um token emitido no endpoint de token de HML não autentica chamadas em produção e vice-versa. A boa prática é manter os dois conjuntos de credenciais em secrets separados, selecionados por uma variável de ambiente (por exemplo STAGE=hml ou STAGE=prod), de forma que a promoção para produção seja apenas a troca dessa variável, sem alteração de código.
Como funciona a biometria facial no ambiente de homologação?
No sandbox, os fluxos de biometria facial (BIOMETRIC_LIVENESS e BIOMETRIC_MATCH) rodam em modo simulado por padrão para contas self-serve de HML. Isso permite exercitar todo o caminho da API, dos passos de assinatura e dos webhooks sem precisar de uma captura facial real, acelerando os testes automatizados. A validação biométrica com captura real fica disponível em contas de homologação provisionadas pela equipe, normalmente no momento em que um cliente recebe quota para esse método. Trate a aprovação biométrica em HML como determinística e use os fluxos OTP ou clickwrap quando quiser variar resultados.
Posso testar webhooks rodando localmente, na minha máquina?
Sim, mas a URL do webhook precisa ser pública e HTTPS. URLs com localhost, 127.0.0.1 ou IPs de rede privada são bloqueadas por uma regra de WAF e retornam 403 do CloudFront ao tentar cadastrá-las. Para testar localmente, exponha seu endpoint com um túnel (ngrok, Cloudflare Tunnel) ou use um coletor como webhook.site para inspecionar o payload e os headers HMAC antes de implementar o receptor real. Depois de validado o túnel, basta apontar o webhook para a URL pública do seu serviço.
O que valido em homologação antes de subir para produção?
Antes de promover, confirme em HML: o fluxo OAuth2 emitindo token, a criação de sessão de assinatura ou envelope, ao menos um signatário concluindo cada método de autenticação que você usa, a entrega e verificação HMAC dos webhooks, o tratamento de erros e retries, e o download do documento assinado e do pacote de evidência. Em seguida, troque host e credenciais para produção, refaça um teste de fumaça com um documento real e ative monitoramento. Lembre-se de que o TTL de 7 dias não existe em produção, então valide também sua estratégia de armazenamento de longo prazo.
Teste a API de assinatura no sandbox antes de ir para produção
Crie sua conta gratuita, gere credenciais de homologação e valide todo o fluxo contra api-hml.signdocs.com.br — OAuth2, assinatura, webhooks e evidência — com SDKs oficiais ou REST puro. Quando estiver pronto, promova para produção trocando apenas as variáveis de ambiente.
Comece grátis Fale com nossa equipe sobre a API Enterprise