Ir al contenido

La petición no es válida

422invalid_request

Qué significa

Uno o más campos de la petición no cumplen el contrato de la API. No se emitió nada y no se consumió ningún número: corrige y vuelve a enviar.

No reintentes la misma petición: fallará igual hasta que cambie lo que se indica abajo.

Por qué ocurre

  • Falta un campo obligatorio, o un valor no tiene el formato esperado (una fecha, un RUC con dígito verificador incorrecto, un importe con tres decimales).
  • Hay un campo que la API no conoce. No se ignora: se rechaza, para que un nombre mal escrito no cambie lo que se emite. Si está en camelCase, el mensaje propone su forma en snake_case.
  • Un código no está en su catálogo de SUNAT (unidad de medida, tipo de documento, motivo de una nota).
  • Dos campos se contradicen: una detracción en una boleta, una exportación a un cliente con RUC.

Cómo resolverlo

  1. Recorre errors: trae una entrada por campo, con la ruta del campo (items.0.unit_price) y el motivo en español.
  2. Con el SDK, error.fields es el mismo contenido como objeto: { "customer.document_type": "…" }.
  3. Muestra esos mensajes a quien llenó el formulario: están escritos para eso.

Cómo llega

La respuesta es application/problem+json con estado 422, y su campo type es la dirección de esta página.Lo de abajo es lo que respondió la API a una petición que provoca este error.

{
"type": "https://docs.emitay.com/errors/invalid_request",
"title": "La petición no es válida",
"status": 422,
"detail": "Revisa 3 campos: customer.document_type, items.0.unit_price, items.0.unitPrice. El motivo de cada uno está en errors",
"errors": [
{
"field": "customer.document_type",
"message": "Indica el tipo de documento (catálogo 06 de SUNAT: \"1\" DNI, \"4\" carné de extranjería, \"7\" pasaporte, \"0\" sin documento…): solo se deduce cuando el número es un RUC válido"
},
{
"field": "items.0.unit_price",
"message": "Es obligatorio"
},
{
"field": "items.0.unitPrice",
"message": "Campo no reconocido. Los campos de la API se escriben en snake_case: prueba con unit_price"
}
]
}

Toda respuesta lleva además la cabecera Request-Id (req_…): cítala al pedir soporte.

Sigue con: Errores · Referencia de la API · todos los errores