> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/api-rest/identity-api/identity-api-reference/onboarding/kyc/nigeria.md).

# Nigeria

### Manejo de errores

Los servicios KYC de Nigeria 🇳🇬 pueden retornar **tres formas de respuesta distintas** según la capa que origina el error. A continuación se describen las tres formas y cuándo aplica cada una.

#### 1. Sobre del servicio (éxito y errores de la verificación)

Las respuestas de éxito y los errores de la verificación usan el sobre estándar del servicio:

```json
{
  "serviceResultCode": 200,
  "serviceResultLog": "Success",
  "serviceTime": "151",
  "serviceTransactionId": "08ac9699-dc9e-4cdc-81d7-264f71838309",
  "data": { }
}
```

{% hint style="info" %}
En esta familia de servicios, `serviceResultCode` **refleja el código HTTP de la respuesta**: `200` en caso de éxito y `400`/`404` en errores de la consulta (por ejemplo, un BVN inexistente). **No** es `0` en caso de éxito. El código HTTP de la respuesta coincide con el valor de `serviceResultCode`.
{% endhint %}

| serviceResultCode | Descripción                                                                             | Código HTTP |
| ----------------- | --------------------------------------------------------------------------------------- | ----------- |
| 200               | La ejecución del servicio fue exitosa.                                                  | 200         |
| 400               | La solicitud fue rechazada (datos inválidos, sesión expirada…).                         | 400         |
| 404               | No se encontró el recurso consultado.                                                   | 404         |
| 500               | **Caso especial:** el servicio no está disponible o su respuesta no pudo interpretarse. | 502         |

#### 2. Errores de validación y de enrutamiento (`application/problem+json`)

Los errores generados por la propia plataforma **antes de procesar la consulta** siguen el formato **RFC 7807** (`Content-Type: application/problem+json`):

| Campo    | Tipo    | Descripción                                                  |
| -------- | ------- | ------------------------------------------------------------ |
| `status` | integer | Código HTTP de la respuesta.                                 |
| `title`  | string  | Título descriptivo del error.                                |
| `detail` | string  | Descripción del error.                                       |
| `type`   | string  | URI de referencia del código HTTP.                           |
| `errors` | array   | Lista de errores de validación. Solo presente cuando aplica. |

Casos en los que se retorna esta forma:

| Código HTTP | Caso                                               |
| ----------- | -------------------------------------------------- |
| 400         | Error de validación de campos o cuerpo malformado. |
| 404         | Ruta desconocida.                                  |
| 405         | Método HTTP no soportado por la ruta.              |

Ejemplo de error de validación:

```json
{
  "status": 400,
  "title": "Bad Request",
  "detail": "Invalid request.",
  "type": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400",
  "errors": ["bvn is required"]
}
```

{% hint style="warning" %}
Cualquier solicitud `POST`, `PUT` o `PATCH` con el **cuerpo vacío** retorna `400` con el error `request body should not be empty`, antes incluso del enrutamiento. Este comportamiento es común a toda la plataforma.
{% endhint %}

#### 3. Errores de autenticación (gateway)

Cuando la autenticación falla, la solicitud es rechazada por el **gateway antes de llegar al servicio**. Estas respuestas son las respuestas por defecto de AWS API Gateway y **no** usan el sobre `serviceResultCode`:

| Código HTTP | Cuerpo de la respuesta                                                                | Caso                                       |
| ----------- | ------------------------------------------------------------------------------------- | ------------------------------------------ |
| 401         | `{"message": "Unauthorized"}`                                                         | API key ausente o inválida.                |
| 403         | `{"Message": "User is not authorized to access this resource with an explicit deny"}` | API key válida pero sin acceso al recurso. |

{% hint style="info" %}
La capitalización del campo difiere entre ambas respuestas (`message` en el `401`, `Message` en el `403`): son los cuerpos por defecto de AWS API Gateway.
{% endhint %}
