Saltar a contenido

Listar incidencias

GET /apientidades/v1/incidencias

Lista las incidencias de la entidad autenticada con paginación real en base de datos y filtros opcionales. Devuelve un DTO ligero sin histórico ni adjuntos: el detalle completo se obtiene con GET /incidencias/{id}.

Parámetros de query

Parámetro Tipo Obligatorio Descripción
page int No Número de página base 0 (por defecto 0)
size int No Elementos por página, entre 1 y 100 (por defecto 20)
estado int No Filtro: 0=Abierta, 1=EnProceso, 2=Cerrada
tipo int No Filtro por tipo de incidencia, valor entre 0 y 6 (ver index)
prioridad int No Filtro: 0=Baja, 1=Media, 2=Alta
idDeclaracion int No Solo incidencias vinculadas a esta declaración

Los filtros se combinan con AND. Las incidencias se devuelven ordenadas por fecha de creación descendente (más recientes primero).

Ejemplo de petición

# Todas las incidencias abiertas vinculadas a una declaración
curl -s -X GET \
  "https://apientidades-pro.transparenciacanarias.org/apientidades/v1/incidencias?estado=0&idDeclaracion=5001&size=50" \
  -H "Authorization: Bearer $TOKEN" | jq .
import requests

BASE_URL = "https://apientidades-pro.transparenciacanarias.org/apientidades/v1"
headers = {"Authorization": f"Bearer {token}"}

# Pollear solo incidencias abiertas de alta prioridad
params = {
    "estado": 0,      # Abierta
    "prioridad": 2,   # Alta
    "page": 0,
    "size": 50
}
response = requests.get(f"{BASE_URL}/incidencias", headers=headers, params=params)
result = response.json()

print(f"Total: {result['total']} incidencias en {result['totalPages']} páginas")
for inc in result["data"]:
    print(f"  [{inc['id']}] {inc['titulo']} ({inc['nummensajes']} mensajes)")
var url = $"{baseUrl}/incidencias?estado=0&prioridad=2&size=50";
var response = await client.GetAsync(url);
var json = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<dynamic>(json);

Console.WriteLine($"Total: {result.total}");
foreach (var inc in result.data)
{
    Console.WriteLine($"  [{inc.id}] {inc.titulo}");
}

Respuesta exitosa (200 OK)

{
  "data": [
    {
      "id": 201,
      "titulo": "Error al acceder al portal",
      "descripcion": "Al intentar acceder a la sección de presupuestos aparece un error 500. El problema ocurre...",
      "estado": 0,
      "tipo": 3,
      "prioridad": 2,
      "fechaalta": "2026-04-06T09:15:00",
      "fechaactualizacion": "2026-04-06T14:30:00",
      "iddeclaracion": 5001,
      "nummensajes": 4,
      "abierto": true
    },
    {
      "id": 198,
      "titulo": "Duda sobre criterio de publicidad activa",
      "descripcion": "Necesitamos aclaración sobre el criterio...",
      "estado": 1,
      "tipo": 1,
      "prioridad": 1,
      "fechaalta": "2026-04-05T10:00:00",
      "fechaactualizacion": "2026-04-05T16:45:00",
      "iddeclaracion": null,
      "nummensajes": 2,
      "abierto": false
    }
  ],
  "total": 47,
  "page": 0,
  "size": 50,
  "totalPages": 1
}

Campos de cada incidencia

Campo Tipo Descripción
id int ID único de la incidencia
titulo string Título
descripcion string Truncada a 300 caracteres. Para el texto completo use GET /incidencias/{id}
estado int 0=Abierta, 1=EnProceso, 2=Cerrada
tipo int Tipo, 0-6 (ver tabla en index)
prioridad int 0=Baja, 1=Media, 2=Alta
fechaalta datetime Momento de creación
fechaactualizacion datetime Último cambio o mensaje
iddeclaracion int? Declaración vinculada (o null)
nummensajes int Número total de mensajes en el histórico
abierto bool true si hay novedades sin leer por la entidad

Campos de paginación

Campo Tipo Descripción
total int Total de incidencias que cumplen los filtros (en BD)
page int Página devuelta (base 0)
size int Tamaño de página efectivo
totalPages int Número total de páginas

Listado eficiente para polling

Este endpoint está diseñado para que clientes M2M lo consulten frecuentemente: la paginación se hace en BD con LIMIT/OFFSET y el total se obtiene en la misma query con COUNT(*) OVER(). No carga ni histórico ni adjuntos, por lo que es barato incluso con cientos de incidencias. Use GET /incidencias/{id} solo cuando necesite el detalle completo de una incidencia concreta.

Detección de novedades

Para detectar incidencias con respuestas nuevas del Comisionado, filtre por abierto=true a nivel cliente o combine con un webhook incidencia.respuesta.

Errores posibles

Código Descripción
400 Algún filtro tiene un valor fuera de rango (ej. tipo=7, prioridad=5)
401 Token ausente, expirado o inválido