Saltar a contenido

Enviar datos estadísticos

PUT /apientidades/v1/declaraciones/{iddeclaracion}/derecho-acceso

Actualiza los valores numéricos de las celdas de la tabla de solicitudes de derecho de acceso. El body es un diccionario donde cada clave es el id de una celda obtenido del GET /derecho-acceso/tabla y el valor es el número de solicitudes.

Obtener los IDs primero

Antes de enviar datos, consulte GET /derecho-acceso/tabla para obtener la estructura completa con los IDs de cada celda editable (idtiporejilla=0, id≠99999).

Parámetros de ruta

Parámetro Tipo Descripción
iddeclaracion int ID de la declaración

Body de la petición

{
  "valores": {
    "1001": 30,
    "1002": 27,
    "1003": 19,
    "1004": 8,
    "1005": 15,
    "1006": 13
  }
}
Campo Tipo Obligatorio Descripción
valores object Diccionario id_celdavalor_numerico. Las claves son strings que representan el id de cada celda del GET

Ejemplo completo: GET tabla → PUT valores

# 1. Obtener la tabla con los IDs
curl -s "https://apientidades-pro.transparenciacanarias.org/apientidades/v1/declaraciones/5001/derecho-acceso/tabla" \
  -H "Authorization: Bearer $TOKEN" | jq '.[]'

# 2. Enviar valores (usando los IDs obtenidos del GET)
curl -s -X PUT \
  "https://apientidades-pro.transparenciacanarias.org/apientidades/v1/declaraciones/5001/derecho-acceso" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "valores": {
      "1001": 30,
      "1002": 27,
      "1003": 19,
      "1004": 8
    }
  }' | jq .
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 y valores actuales
ejercicios = requests.get(
    f"{BASE_URL}/declaraciones/5001/derecho-acceso/tabla",
    headers=headers
).json()

# 2. Construir el diccionario de valores a enviar
#    Solo celdas editables: idtiporejilla=0 e idcategoria≠99999
valores = {}
for ejercicio in ejercicios:
    for tipo in ejercicio["tipos"]:
        if tipo["idtiporejilla"] == 0:
            for celda in tipo["valores"]:
                if celda["idcategoria"] != 99999:
                    # Aquí asignar el valor real de vuestro sistema
                    valores[str(celda["id"])] = celda["valor"]

# 3. Enviar
response = requests.put(
    f"{BASE_URL}/declaraciones/5001/derecho-acceso",
    headers=headers,
    json={"valores": valores}
)
print(response.json())
// 1. Obtener la tabla
var getResponse = await client.GetAsync($"{baseUrl}/declaraciones/5001/derecho-acceso/tabla");
var ejercicios = JsonConvert.DeserializeObject<List<DaTablaDto>>(
    await getResponse.Content.ReadAsStringAsync());

// 2. Construir el diccionario de valores editables
var valores = new Dictionary<int, int>();
foreach (var ejercicio in ejercicios)
    foreach (var tipo in ejercicio.Tipos.Where(t => t.Idtiporejilla == 0))
        foreach (var celda in tipo.Valores.Where(v => v.Idcategoria != 99999))
            valores[celda.Id] = celda.Valor; // o el nuevo valor de vuestro sistema

// 3. Enviar
var payload = new { valores };
var content = new StringContent(
    JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json");
var putResponse = await client.PutAsync(
    $"{baseUrl}/declaraciones/5001/derecho-acceso", content);
Console.WriteLine(await putResponse.Content.ReadAsStringAsync());

Respuesta exitosa (200)

{
  "message": "6 valores actualizados.",
  "count": 6
}
Campo Tipo Descripción
message string Mensaje descriptivo con el número de registros actualizados
count int Número de celdas actualizadas

Validaciones

Validación Límite Error
id de celda Debe ser > 0 400 "ID de item inválido"
Valor no negativo >= 0 400 "valor no puede ser negativo"
Valor máximo <= 999.999 400 "excede el máximo razonable"
Cantidad de ítems Máx 2.000 por petición 400 "Máximo 2000 ítems"
valores vacío Al menos 1 entrada 400 "Debe proporcionar al menos un valor"
Celdas de otra remisión Se ignoran silenciosamente Sin error, count no las incluye

Ítems ignorados

Si se envía un id que no pertenece a la declaración o remisión activa, se ignora silenciosamente (no genera error). Esto permite enviar un volcado completo sin necesidad de filtrar previamente por ejercicio.

Rendimiento

La actualización ejecuta un UPDATE individual por celda. Para declaraciones con muchos ejercicios (>1.000 celdas), la petición puede tardar varios segundos. Se recomienda enviar solo las celdas cuyos valores hayan cambiado.

Errores posibles

Código Descripción
400 Validación fallida (ver tabla)
401 Token ausente, expirado o inválido
404 La declaración no existe, no pertenece a la entidad, o no tiene remisión activa

Estado de la declaración

Solo funciona cuando la declaración está en estado NoPresentada (1) o AlegacionesAbiertas (4).