Tabla de solicitudes
Devuelve la tabla completa de solicitudes de derecho de acceso, organizada por ejercicios (períodos). Cada ejercicio contiene las categorías (columnas) y los conceptos (filas) con sus valores actuales. Los IDs de las celdas son los que se usan en el PUT /derecho-acceso para enviar datos.
Parámetros de ruta
| Parámetro | Tipo | Descripción |
|---|---|---|
iddeclaracion |
int | ID de la declaración |
Ejemplo de petición
import requests
BASE_URL = "https://apientidades-pro.transparenciacanarias.org/apientidades/v1"
headers = {"Authorization": f"Bearer {token}"}
response = requests.get(
f"{BASE_URL}/declaraciones/5001/derecho-acceso/tabla",
headers=headers
)
ejercicios = response.json()
for ejercicio in ejercicios:
print(f"\nEjercicio {ejercicio['titulo']} (id: {ejercicio['idperiodo']})")
print(f"Categorías: {[c['nombre'] for c in ejercicio['categorias']]}")
for tipo in ejercicio['tipos']:
if tipo['idtiporejilla'] == 0: # Solo filas editables
print(f" Concepto '{tipo['nombre']}':")
for valor in tipo['valores']:
if valor['idcategoria'] != 99999: # Excluir totales
print(f" id={valor['id']}, idcategoria={valor['idcategoria']}, valor={valor['valor']}")
var response = await client.GetAsync($"{baseUrl}/declaraciones/5001/derecho-acceso/tabla");
var json = await response.Content.ReadAsStringAsync();
var ejercicios = JsonConvert.DeserializeObject<List<DaTablaDto>>(json);
foreach (var ejercicio in ejercicios)
{
Console.WriteLine($"Ejercicio {ejercicio.Titulo} (id: {ejercicio.Idperiodo})");
var editables = ejercicio.Tipos.Where(t => t.Idtiporejilla == 0);
foreach (var tipo in editables)
{
Console.WriteLine($" Concepto: {tipo.Nombre}");
foreach (var valor in tipo.Valores.Where(v => v.Idcategoria != 99999))
Console.WriteLine($" id={valor.Id}, valor={valor.Valor}");
}
}
Respuesta exitosa (200)
Array con un elemento por ejercicio vinculado a la evaluación de la declaración.
[
{
"idperiodo": 5,
"titulo": "Ejercicio 2024",
"inicio": "2024-01-01",
"fin": "2024-12-31",
"categorias": [
{ "idcategoria": 1, "nombre": "Presentadas" },
{ "idcategoria": 2, "nombre": "Admitidas" },
{ "idcategoria": 3, "nombre": "Resueltas estimadas" },
{ "idcategoria": 4, "nombre": "Resueltas desestimadas" },
{ "idcategoria": 99999, "nombre": "Total" }
],
"tipos": [
{
"idtipo": 0,
"nombre": "Total solicitudes a resolver",
"desglosada": false,
"idtiporejilla": 2,
"valores": [
{ "id": 99999, "idcategoria": 1, "valor": 80 },
{ "id": 99999, "idcategoria": 2, "valor": 72 },
{ "id": 99999, "idcategoria": 3, "valor": 50 },
{ "id": 99999, "idcategoria": 4, "valor": 22 },
{ "id": 99999, "idcategoria": 99999, "valor": 224 }
]
},
{
"idtipo": 1,
"nombre": "Acceso a documentos",
"desglosada": false,
"idtiporejilla": 1,
"valores": [
{ "id": 99999, "idcategoria": 1, "valor": 45 },
{ "id": 99999, "idcategoria": 2, "valor": 40 },
{ "id": 99999, "idcategoria": 3, "valor": 28 },
{ "id": 99999, "idcategoria": 4, "valor": 12 },
{ "id": 99999, "idcategoria": 99999, "valor": 125 }
]
},
{
"idtipo": 10,
"nombre": "Acceso integral",
"desglosada": false,
"idtiporejilla": 0,
"valores": [
{ "id": 1001, "idcategoria": 1, "valor": 30 },
{ "id": 1002, "idcategoria": 2, "valor": 27 },
{ "id": 1003, "idcategoria": 3, "valor": 19 },
{ "id": 1004, "idcategoria": 4, "valor": 8 },
{ "id": 99999, "idcategoria": 99999, "valor": 84 }
]
},
{
"idtipo": 11,
"nombre": "Expediente personal",
"desglosada": false,
"idtiporejilla": 0,
"valores": [
{ "id": 1005, "idcategoria": 1, "valor": 15 },
{ "id": 1006, "idcategoria": 2, "valor": 13 },
{ "id": 1007, "idcategoria": 3, "valor": 9 },
{ "id": 1008, "idcategoria": 4, "valor": 4 },
{ "id": 99999, "idcategoria": 99999, "valor": 41 }
]
}
]
}
]
Estructura del ejercicio
| Campo | Tipo | Descripción |
|---|---|---|
idperiodo |
int | ID del ejercicio/período |
titulo |
string | Título descriptivo del ejercicio (ej: "Ejercicio 2024") |
inicio |
string | Fecha de inicio del ejercicio (ISO 8601, formato YYYY-MM-DD) |
fin |
string | Fecha de fin del ejercicio (ISO 8601, formato YYYY-MM-DD) |
categorias |
array | Columnas del cuadrante (tipos de resolución) |
tipos |
array | Filas del cuadrante (conceptos de solicitud y subtotales) |
Campos de las categorías
| Campo | Tipo | Descripción |
|---|---|---|
idcategoria |
int | ID de la categoría. El valor 99999 corresponde a la columna Total |
nombre |
string | Nombre de la categoría (ej: "Presentadas", "Resueltas estimadas") |
Campos de los tipos (filas)
| Campo | Tipo | Descripción |
|---|---|---|
idtipo |
int | ID del tipo o concepto |
nombre |
string | Nombre del concepto o subtotal |
desglosada |
bool | Si los conceptos de este grupo tienen desglose adicional |
idtiporejilla |
int | Tipo de fila: 0 = editable, 1 = subtotal de grupo, 2 = total general |
valores |
array | Celdas de esta fila, una por categoría más el total |
Campos de los valores (celdas)
| Campo | Tipo | Descripción |
|---|---|---|
id |
int | ID del registro — usar este valor como clave en el PUT. El valor 99999 indica una celda de total (no editar) |
idcategoria |
int | ID de la categoría (columna) a la que pertenece esta celda. El valor 99999 es el total de fila |
valor |
int | Número de solicitudes en esta celda |
Tipos de fila (idtiporejilla)
| Valor | Significado | Editable | Qué hacer |
|---|---|---|---|
0 |
Concepto individual | Sí | Tomar el id de cada celda y enviarlo en el PUT |
1 |
Subtotal de grupo | No | Ignorar — calculado por el sistema |
2 |
Total general | No | Ignorar — calculado por el sistema |
Solo editar celdas con idtiporejilla=0 e id≠99999
Las celdas con id=99999 son totales calculados. Las filas con idtiporejilla=1 o idtiporejilla=2 son subtotales. Enviar estos valores en el PUT no tiene efecto (se ignoran silenciosamente).
Flujo: GET tabla → PUT valores
import requests
BASE_URL = "https://apientidades-pro.transparenciacanarias.org/apientidades/v1"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
# 1. Obtener la tabla con todos los IDs
ejercicios = requests.get(
f"{BASE_URL}/declaraciones/5001/derecho-acceso/tabla",
headers=headers
).json()
# 2. Recopilar IDs editables y asignar nuevos valores
# (aquí el sistema externo cruza con sus propios datos)
valores = {}
for ejercicio in ejercicios:
for tipo in ejercicio["tipos"]:
if tipo["idtiporejilla"] == 0: # Solo filas editables
for valor in tipo["valores"]:
if valor["idcategoria"] != 99999: # Excluir columna Total
# ← aquí cruzar con el valor real de vuestro sistema
valores[valor["id"]] = valor["valor"] # o el nuevo valor
# 3. Enviar los valores actualizados
response = requests.put(
f"{BASE_URL}/declaraciones/5001/derecho-acceso",
headers=headers,
json={"valores": valores}
)
print(response.json())
Errores posibles
| Código | Descripción |
|---|---|
401 |
Token ausente, expirado o inválido |
404 |
La declaración no existe, no pertenece a la entidad, o no tiene remisión activa |