Inyo

Sandbox y Datos de Prueba

El sandbox es una copia completa del pipeline de verificación con sus propias credenciales y sus propios datos. Úselo para construir y validar su integración antes de que un cliente real la utilice.


Acceso

Qué necesitaCómo lo obtiene
URL base del sandboxEmitida por Inyo durante el onboarding
client_id / client_secretEmitidos por Inyo durante el onboarding, separados de los de producción
webhook_secretEmitido por Inyo durante el onboarding, separado del de producción
Acceso de redSus rangos de IP de salida deben estar en la lista de permitidos — envíelos a su contacto en Inyo
Una webhook_url registradaOpcional, pero necesaria para ejercitar la entrega de webhooks. Un túnel funciona durante el desarrollo

Las credenciales de sandbox y de producción nunca son intercambiables, y una verificación en sandbox nunca es una base válida para una decisión real de onboarding.


El Sandbox Ejecuta Verificación Real

El sandbox realiza análisis real de documentos — el mismo pipeline de extracción, autenticidad, prueba de vida y coincidencia facial que producción. No existe un conjunto fijo de números de documento de prueba que produzcan resultados predefinidos, como ocurre con los números de tarjeta de prueba en pagos.

La consecuencia práctica: pruebe con documentos reales que usted controle personalmente, o con documentos emitidos para pruebas. Una verificación fallará genuinamente si la imagen está borrosa, el documento está vencido o la selfie no coincide — que es exactamente lo que hace útil al sandbox para probar su manejo de errores.

Cada resultado incluye un campo provider. "inyo" significa que lo produjo un análisis real. "inyo-mock" significa que lo produjo un simulador — lo cual nunca ocurre en producción, y le indica sin ambigüedad que un resultado no provino de una verificación real.


Cómo Generar Cada Resultado

ObjetivoCómo producirlo
approvedUn documento válido y vigente que usted controle, bien iluminado y encuadrado, con una selfie de la misma persona
declined — documento vencidoUn documento vencido. document_not_expired falla
declined — no coincidencia facialUn documento que pertenece a una persona con una selfie de otra. face_match falla
declined — recaptura de pantallaFotografíe el documento desde la pantalla de un teléfono o monitor. document_authentic y/o screen_pattern fallan
declined — ilegibleUna captura deliberadamente borrosa o parcialmente cubierta. document_readable falla
declined — intentos de capturaFalle la captura repetidamente en el widget hasta alcanzar el límite, lo que agrega una verificación capture_attempts
in_review — verificación blandaEnvíe data_check: true con un nombre o fecha de nacimiento en prefill que no coincida con el documento. data_match falla
in_review — rechazo retenidoPida a Inyo habilitar rechazos retenidos en su tenant de sandbox, luego produzca cualquier rechazo con documento legible
in_review — aprobación límitePida a Inyo configurar un umbral de revisión en su tenant de sandbox por encima de su umbral de coincidencia facial, luego verifique con una selfie marginal
expiredCree una sesión y déjela sin usar más allá de las 48 horas de vigencia del enlace
Respuestas 422Solicite un tipo de documento que no tenga habilitado, o envíe un prefill.document_number con formato inválido
502No es reproducible a demanda — manéjelo en el código como una ruta de reintento transitoria

Solicite un tenant de sandbox adicional si necesita configuraciones en conflicto. El enrutamiento a revisión y los rechazos retenidos son configuraciones a nivel de tenant, por lo que ejercitar tanto un rechazo normal como un rechazo retenido implica cambiar la configuración entre ejecuciones — o tener dos tenants de sandbox.


Pruebas Sin Cámara

El validador de formato de número de documento no necesita credenciales ni imágenes, lo que lo convierte en lo más rápido para integrar primero:

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"
}

Úselo para confirmar su manejo de los tres estados — true, false y null para una jurisdicción desconocida. Consulte Sesiones de Verificación.


Pruebas de Entrega de Resultados

La entrega merece probarse por sí sola, independientemente de los resultados de verificación:

  1. Verificación de firma — capture el cuerpo de un webhook real de sandbox y su X-Inyo-Signature, luego pruebe unitariamente su verificador contra esos bytes exactos. Agregue un caso que mute un byte del cuerpo y verifique el rechazo, y un caso que re-serialice el JSON parseado y verifique el rechazo. Esos dos casos detectan el error que rompe la mayoría de las integraciones.
  2. Comportamiento de reintentos — devuelva 500 desde su endpoint y confirme que ve hasta tres intentos, y luego nada.
  3. Ordenamiento — reproduzca dos notificaciones almacenadas de una sesión fuera de orden y verifique que su handler conserva la que tiene el notified_at más alto.
  4. Idempotencia — entregue el mismo resultado dos veces y verifique que su sistema no lo procesa por duplicado.

Los pasos 1, 3 y 4 no requieren ninguna llamada al sandbox una vez que haya capturado un payload real.


Antes de Salir a Producción

VerificaciónPor qué
La verificación de firma se ejecuta contra bytes crudosLa falla de producción más común
in_review tiene un estado pendiente en su modeloNo es ni aprobado ni rechazado, y también llega en redirecciones
Los resultados concurrentes se resuelven por notified_atLas entregas pueden llegar fuera de orden
Un resultado completado puede revertirseLas anulaciones de control de calidad re-entregan un resultado modificado
502 reintenta en lugar de rechazarEs una falla de infraestructura, no un resultado del cliente
Las credenciales de producción están separadas y la URL base está cambiadaLos tokens de sandbox no son válidos en producción
Un job de conciliación consulta las sesiones no terminalesLa entrega es de mejor esfuerzo; GET /v1/sessions/{session_id} es la fuente autoritativa

Próximos Pasos