Inyo

Sandbox e Dados de Teste

O sandbox é uma cópia completa do pipeline de verificação com suas próprias credenciais e seus próprios dados. Use-o para construir e validar sua integração antes que qualquer cliente real a utilize.


Acesso

O que você precisaComo obter
URL base do sandboxEmitida pela Inyo no onboarding
client_id / client_secretEmitidos pela Inyo no onboarding, separados dos de produção
webhook_secretEmitido pela Inyo no onboarding, separado do de produção
Acesso de redeSuas faixas de IP de saída devem estar na lista de permissões — envie-as ao seu contato na Inyo
Uma webhook_url registradaOpcional, mas necessária para exercitar a entrega de webhooks. Um túnel funciona durante o desenvolvimento

Credenciais de sandbox e de produção nunca são intercambiáveis, e uma verificação em sandbox nunca é uma base válida para uma decisão real de onboarding.


O Sandbox Executa Verificação Real

O sandbox realiza análise real de documentos — o mesmo pipeline de extração, autenticidade, prova de vida e correspondência facial da produção. Não existe um conjunto fixo de números de documentos de teste que produzem resultados pré-definidos, como funcionam os números de cartão de teste em pagamentos.

A consequência prática: teste com documentos reais que você pessoalmente controla, ou com documentos emitidos para testes. Uma verificação falhará genuinamente se a imagem estiver borrada, o documento estiver vencido ou a selfie não corresponder — o que é exatamente o que torna o sandbox útil para validar seu tratamento de erros.

Todo resultado carrega um campo provider. "inyo" significa que uma análise real o produziu. "inyo-mock" significa que um simulador o produziu — o que nunca acontece em produção, e indica de forma inequívoca que um resultado não veio de uma verificação real.


Produzindo Cada Resultado

AlvoComo produzi-lo
approvedUm documento válido e não vencido que você controla, bem iluminado e enquadrado, com uma selfie da mesma pessoa
declined — documento vencidoUm documento vencido. document_not_expired falha
declined — divergência facialUm documento pertencente a uma pessoa com a selfie de outra. face_match falha
declined — recaptura de telaFotografe o documento a partir da tela de um celular ou monitor. document_authentic e/ou screen_pattern falham
declined — ilegívelUma captura deliberadamente borrada ou parcialmente coberta. document_readable falha
declined — tentativas de capturaFalhe a captura repetidamente no widget até atingir o limite, adicionando uma verificação capture_attempts
in_review — verificação branda (soft check)Envie data_check: true com um nome ou data de nascimento em prefill que não corresponda ao documento. data_match falha
in_review — rejeição retidaPeça à Inyo para habilitar rejeições retidas no seu tenant de sandbox e produza qualquer recusa com documento legível
in_review — aprovação limítrofePeça à Inyo para definir um limiar de revisão no seu tenant de sandbox acima do seu limiar de correspondência facial e verifique com uma selfie marginal
expiredCrie uma sessão e deixe-a sem uso além do tempo de vida de 48 horas do link
Respostas 422Solicite um tipo de documento que você não tem habilitado, ou envie um prefill.document_number malformado
502Não reproduzível sob demanda — trate-o como um caminho de retry transitório no código

Peça um tenant de sandbox separado se você precisar de configurações conflitantes. O roteamento de revisão e as rejeições retidas são configurações no nível do tenant, então exercitar tanto uma recusa normal quanto uma recusa retida significa alterar a configuração entre execuções — ou ter dois tenants de sandbox.


Testando Sem Câmera

O validador de formato de número de documento não precisa de credenciais nem de imagens, o que o torna a coisa mais rápida para integrar primeiro:

curl --request POST \
  --url https://{FQDN}/v1/validators/document-number \
  --header 'Content-Type: application/json' \
  --data '{"document_type": "drivers_license", "number": "not-a-number", "issuing_state": "PA"}'
{
  "document_type": "drivers_license",
  "number": "not-a-number",
  "issuing_state": "PA",
  "valid": false,
  "rule": "us_dl:PA",
  "detail": "document number does not match the PA license format"
}

Use-o para confirmar seu tratamento dos três estados — true, false e null para uma jurisdição desconhecida. Veja Sessões de Verificação.


Testando a Entrega de Resultados

A entrega vale a pena ser testada por si só, independentemente dos resultados de verificação:

  1. Verificação de assinatura — capture um corpo real de webhook do sandbox e sua X-Inyo-Signature, e faça um teste unitário do seu verificador contra esses bytes exatos. Adicione um caso que altera um byte do corpo e afirma a rejeição, e um caso que re-serializa o JSON parseado e afirma a rejeição. Esses dois casos capturam o erro que quebra a maioria das integrações.
  2. Comportamento de retry — retorne 500 do seu endpoint e confirme que você vê até três tentativas, e depois nada.
  3. Ordenação — reproduza duas notificações armazenadas de uma sessão fora de ordem e afirme que seu handler mantém a que tem o notified_at mais alto.
  4. Idempotência — entregue o mesmo resultado duas vezes e afirme que seu sistema não o processa em duplicidade.

Os passos 1, 3 e 4 não precisam de nenhuma chamada ao sandbox depois que você capturou um payload real.


Antes de Entrar em Produção

VerificaçãoPor quê
A verificação de assinatura roda contra bytes brutosA falha de produção mais comum
in_review tem um estado pendente no seu modeloNão é aprovado nem rejeitado, e também chega em redirecionamentos
Resultados concorrentes são resolvidos por notified_atAs entregas podem chegar fora de ordem
Um resultado concluído pode ser revertidoOverrides de controle de qualidade reentregam um resultado alterado
502 faz retry em vez de recusarÉ uma falha de infraestrutura, não um resultado do cliente
As credenciais de produção estão separadas e a URL base foi trocadaTokens de sandbox não são válidos em produção
Um job de reconciliação consulta sessões não terminaisA entrega é de melhor esforço; GET /v1/sessions/{session_id} é a fonte autoritativa

Próximos Passos