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é necesita | Cómo lo obtiene |
|---|---|
| URL base del sandbox | Emitida por Inyo durante el onboarding |
client_id / client_secret | Emitidos por Inyo durante el onboarding, separados de los de producción |
webhook_secret | Emitido por Inyo durante el onboarding, separado del de producción |
| Acceso de red | Sus rangos de IP de salida deben estar en la lista de permitidos — envíelos a su contacto en Inyo |
Una webhook_url registrada | Opcional, 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
| Objetivo | Cómo producirlo |
|---|---|
approved | Un documento válido y vigente que usted controle, bien iluminado y encuadrado, con una selfie de la misma persona |
declined — documento vencido | Un documento vencido. document_not_expired falla |
declined — no coincidencia facial | Un documento que pertenece a una persona con una selfie de otra. face_match falla |
declined — recaptura de pantalla | Fotografíe el documento desde la pantalla de un teléfono o monitor. document_authentic y/o screen_pattern fallan |
declined — ilegible | Una captura deliberadamente borrosa o parcialmente cubierta. document_readable falla |
declined — intentos de captura | Falle la captura repetidamente en el widget hasta alcanzar el límite, lo que agrega una verificación capture_attempts |
in_review — verificación blanda | Enví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 retenido | Pida a Inyo habilitar rechazos retenidos en su tenant de sandbox, luego produzca cualquier rechazo con documento legible |
in_review — aprobación límite | Pida 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 |
expired | Cree una sesión y déjela sin usar más allá de las 48 horas de vigencia del enlace |
Respuestas 422 | Solicite un tipo de documento que no tenga habilitado, o envíe un prefill.document_number con formato inválido |
502 | No 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:
- 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. - Comportamiento de reintentos — devuelva
500desde su endpoint y confirme que ve hasta tres intentos, y luego nada. - Ordenamiento — reproduzca dos notificaciones almacenadas de una sesión fuera de orden y verifique que su handler conserva la que tiene el
notified_atmás alto. - 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ón | Por qué |
|---|---|
| La verificación de firma se ejecuta contra bytes crudos | La falla de producción más común |
in_review tiene un estado pendiente en su modelo | No es ni aprobado ni rechazado, y también llega en redirecciones |
Los resultados concurrentes se resuelven por notified_at | Las entregas pueden llegar fuera de orden |
| Un resultado completado puede revertirse | Las anulaciones de control de calidad re-entregan un resultado modificado |
502 reintenta en lugar de rechazar | Es una falla de infraestructura, no un resultado del cliente |
| Las credenciales de producción están separadas y la URL base está cambiada | Los tokens de sandbox no son válidos en producción |
| Un job de conciliación consulta las sesiones no terminales | La entrega es de mejor esfuerzo; GET /v1/sessions/{session_id} es la fuente autoritativa |
Próximos Pasos
- Primeros Pasos — el recorrido de extremo a extremo
- Recepción de Resultados — firmas, reintentos y ordenamiento
- Configuración del Tenant — las configuraciones a solicitar en su tenant de sandbox
