Saltar a contenido

Validaciones por endpoint

La API implementa validación exhaustiva en todos los endpoints de escritura. Los datos se validan antes de procesarse. Si hay errores, la petición se rechaza con 400 Bad Request y un mensaje detallado.

Principio general

Validar todo, escribir nada

En operaciones bulk (PA, cuestionarios), se validan TODOS los ítems antes de escribir cualquiera. Si un solo ítem tiene error, no se modifica nada y se devuelve el listado de errores (hasta los 10 primeros).

Publicidad activa

Validación Límite Error si falla
obligacionId existe en la declaración Verificado contra el árbol PA real 404 "obligación X no existe en esta declaración"
opcionPublicacion en rango 0-3 400 "opcionPublicacion debe ser 0-3"
Cada enlace tiene URL No vacía 400 "Cada enlace debe tener una URL"
URL bien formada Empieza por http:// o https:// 400 con detalle
Longitud URL Max 2.048 caracteres 400 "URL demasiado larga"
Orden de enlace 0-99 400 "Orden debe ser 0-99"
Cantidad de enlaces Max 10 por obligación 400 "Máximo 10 enlaces"
Aclaraciones Max 5.000 caracteres 400 "no puede superar 5000 caracteres"
Autoevaluación valor 0-100 400 "debe ser 0-100"
Autoevaluación ID > 0 400 "ID inválido"
Autoevaluación cantidad Max 10 criterios 400 "Máximo 10 criterios"
Bulk: ítems 1-500 400 si vacío o excede
Bulk: validación previa Se validan TODOS antes de escribir Si 1 falla, no se escribe ninguno

Cuestionarios

Validación Límite Error si falla
id de pregunta pertenece al cuestionario Verificado contra la estructura real 400 "no pertenece al cuestionario X"
Cada componente tiene campo id Obligatorio 400 "componente sin campo id"
Tipo checkbox Valor debe ser boolean 400 "checkbox espera boolean"
Tipo entero Valor debe ser integer 400 "entero espera integer"
Tipo decimal Valor debe ser número 400 "decimal espera número"
Tipo texto/memo Valor debe ser string, max 10.000 chars 400 con detalle
Tipo fecha Valor debe ser string ISO parseable 400 "fecha inválida"
Tipo selector Valor debe ser integer 400 "selector espera integer"
Grupos Max 100 400 "Máximo 100 grupos"
Preguntas totales Max 500 400 "Máximo 500 preguntas"
Respuesta no vacía Al menos 1 componente 400 "respuesta no puede estar vacía"

Derecho de acceso

Validación Límite Error si falla
ID de ítem > 0 400 "ID inválido"
Valor no negativo >= 0 400 "no puede ser negativo"
Valor no absurdo <= 999.999 400 "excede el máximo razonable"
Cantidad de ítems Max 2.000 400 "Máximo 2000 ítems"
Ítems de otra remisión Se ignoran silenciosamente Sin efecto
URL formulario Obligatoria si existeFormulario=true 400 "URL es obligatoria"
URL formulario formato http:// o https://, max 750 chars 400 con detalle
Plazo medio 0-9.999 días 400 "debe ser entre 0 y 9999"
Aclaraciones Max 5.000 caracteres 400 "no puede superar 5000"

Incidencias

Validación Límite Error si falla
Título Obligatorio, max 500 chars 400 con detalle
Descripción Obligatoria, max 10.000 chars 400 con detalle
Tipo 0-3 (Otros, Técnico, Funcional, Datos) 400 "debe ser 0-3"
declaracionId Si proporcionado, verifica pertenencia a la entidad 400 "no pertenece a esta entidad"
usuarioId Si proporcionado, verifica pertenencia a la entidad 400 "no pertenece a esta entidad"
Comentario Obligatorio, max 10.000 chars 400 con detalle
Sanitización HTML Tags HTML eliminados de título, descripción y comentarios Prevención XSS almacenado

Webhooks

Validación Límite Error si falla
URL Obligatoria, HTTPS, max 2.000 chars 400 con detalle
URL no privada No localhost, 10.x, 172.16-31.x, 192.168.x 400 "URL no permitida"
Eventos Al menos 1, solo eventos válidos 400 "Eventos no válidos: ..."
Secreto Max 512 chars 400 "Secreto demasiado largo"
Cantidad Max 5 webhooks por entidad 400 "Máximo 5 webhooks"

Autenticación

Validación Error si falla
API Key ausente o vacía 400 "Campo apiKey vacío o ausente"
API Key inválida 401 "API Key inválida"
Entidad desactivada 401 "Entidad desactivada"
Token JWT ausente 401 "Token requerido"
Token JWT expirado 401 "Token expirado"
Token JWT inválido (firma incorrecta) 401 "Token inválido"