# El sandbox de NexoID

Un token de prueba (`nxid_test_…`) responde con el **sandbox**: un conjunto fijo y sintético de documentos, nunca
el padrón real. Sirve para desarrollar y para tu CI: las respuestas no cambian, no se cobran y cada caso se puede
provocar.

## El token público

```
nxid_test_sandboxpublicodenexoidpruebas001
```

Es público a propósito: solo alcanza el sandbox. Tiene `ruc.read` y `ruc.search`, y admite 30
consultas por minuto y 500 al día por IP. Para datos reales, pide tu token `live`.

```bash
curl https://nexoid.victorllerena.com/id/v1/ruc/20999999906 \
  -H "Authorization: Bearer nxid_test_sandboxpublicodenexoidpruebas001"
```

## Los documentos

| Documento | Servicio | Caso | Respuesta |
|---|---|---|---|
| `20999999906` | ruc | Activa y habida, con la ficha completa: ubigeo, dirección y padrón extendido. | 200 · ACTIVO · HABIDO |
| `20999999914` | ruc | Activa y habida, sin ubigeo, sin dirección y sin padrón extendido: la ficha mínima. | 200 · ACTIVO · HABIDO |
| `20999999922` | ruc | De baja de oficio: existe, pero ya no opera. | 200 · BAJA DE OFICIO · HABIDO |
| `20999999931` | ruc | Activa y no habida: SUNAT no la encuentra en su domicilio fiscal. | 200 · ACTIVO · NO HABIDO |
| `20999999949` | ruc | En suspensión temporal de actividades. | 200 · SUSPENSION TEMPORAL · HABIDO |
| `20999999957` | ruc | Activa y habida, que importa y exporta, con emisión manual. | 200 · ACTIVO · HABIDO |
| `20999999965` | ruc | Activa y habida, una sociedad anónima grande. | 200 · ACTIVO · HABIDO |
| `20999999990` | ruc | Un RUC válido que no está en el sandbox. | 404 · no_encontrado |
| `10999999994` | ruc | Un RUC de persona natural: su nombre es identidad. Sin `dni.read` y la finalidad declarada, 403. | 200 con dni.read · 403 sin él |
| `99999999` | dni | La persona sintética. Exige `dni.read` y la finalidad declarada, como un DNI de verdad. | 200 con dni.read · 403 sin él |

La búsqueda `/ruc/buscar?q=sandbox` devuelve las siete empresas.

## Provocar un error

Con un token de prueba, la cabecera `X-Nexoid-Simular` devuelve el error de verdad, con su código y sus cabeceras:

- `X-Nexoid-Simular: 429` → `rate_limit_excedido`, con `Retry-After: 1`: lo que hace reintentar a los SDKs.
- `X-Nexoid-Simular: 503` → `servicio_no_disponible`: una avería nuestra, que también se reintenta.

Con un token `live` se ignora.

## Lo que no está en el sandbox

- **Watch** y la **validez de comprobantes** responden 403 `no_disponible_en_sandbox`: vigilan y validan cosas
  reales. Usa un token `live`.
- **El tipo de cambio** y **el ubigeo** son catálogos públicos y gratuitos: responden con los datos de verdad.
