Saltar a contenido

Descargar documento

GET /apientidades/v1/documentos/{iddeclaracion}/{id}

Descarga un documento específico en formato PDF. El fichero se devuelve como respuesta binaria.

Parámetros de ruta

Parámetro Tipo Descripción
iddeclaracion int ID de la declaración
id int ID del documento (obtenido del listado)

Ejemplo de petición

# Descargar informe como fichero PDF
curl -s "https://apientidades-pro.transparenciacanarias.org/apientidades/v1/documentos/5001/1" \
  -H "Authorization: Bearer $TOKEN" \
  -o informe_provisional.pdf

echo "Informe descargado: informe_provisional.pdf"
import requests

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

# Primero listar documentos
docs = requests.get(
    f"{BASE_URL}/documentos/declaracion/5001",
    headers=headers
).json()

# Descargar cada documento
for doc in docs:
    response = requests.get(
        f"{BASE_URL}/documentos/5001/{doc['id']}",
        headers=headers
    )
    if response.status_code == 200:
        filename = f"{doc['tipoDescripcion'].replace(' ', '_')}_{doc['id']}.pdf"
        with open(filename, "wb") as f:
            f.write(response.content)
        print(f"Descargado: {filename} ({len(response.content) / 1024:.0f} KB)")
var response = await client.GetAsync($"{baseUrl}/documentos/5001/1");

if (response.IsSuccessStatusCode)
{
    var bytes = await response.Content.ReadAsByteArrayAsync();
    var filename = "informe_provisional.pdf";
    await File.WriteAllBytesAsync(filename, bytes);
    Console.WriteLine($"Descargado: {filename} ({bytes.Length / 1024} KB)");
}
$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => "$baseUrl/documentos/5001/1",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer $token"
    ]
]);

$content = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode === 200) {
    file_put_contents("informe_provisional.pdf", $content);
    echo "Informe descargado\n";
}
curl_close($ch);

Respuesta exitosa (200)

La respuesta es un fichero PDF binario:

Content-Type: application/pdf
Content-Disposition: attachment; filename="Informe_provisional_5001.pdf"
Cabecera Descripción
Content-Type application/pdf
Content-Disposition Nombre sugerido para el fichero

Respuesta binaria

Este endpoint devuelve un fichero PDF, no JSON. Trate la respuesta como datos binarios y guárdela directamente en un fichero.

Errores posibles

Código Descripción
401 Token ausente, expirado o inválido
404 El documento o la declaración no existe o no pertenece a la entidad

Firma digital

Algunos documentos (informes provisionales y definitivos) incluyen firma digital electrónica (sello PAdES) del Comisionado de Transparencia. Puede verificar la firma con cualquier visor PDF compatible con firmas digitales.