Listar 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
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 |