Direkt zum Hauptinhalt

Institutionen API

Die Institutionen API bietet Zugriff auf Informationen über alle teilnehmenden Museen, Bibliotheken und Kultureinrichtungen im Kulturpool. Sie liefert strukturierte Daten mit Standortinformationen, Kontaktdaten und mehrsprachigen Beschreibungen.

Endpunkte

Alle Institutionen abrufen

GET /institutions

Ruft eine vollständige Liste aller registrierten Institutionen ab.

Antwort

{
  "data": [
    {
      "id": 42,
      "name": "Kulturinstitution Musterhausen",
      "intermediate_provider": null,
      "location": {
        "type": "MultiPoint",
        "coordinates": [[10.12345, 52.67890]]
      },
      "web_collection_url": "https://www.kultur-musterhausen.example",
      "website_url": "https://www.kultur-musterhausen.example",
      "favicon": {
        "id": "12345678-1234-5678-9abc-123456789abc"
      },
      "hero_image": {
        "id": "87654321-8765-4321-9def-987654321fed",
        "title": "Hauptgebäude der Kulturinstitution Musterhausen",
        "author": "Max Mustermann",
        "license": "CC BY-SA",
        "license_url": "https://creativecommons.org/licenses/by-sa/4.0/deed.de"
      },
      "logo": {
        "id": "11111111-2222-3333-4444-555555555555"
      },
      "translations": [
        {
          "place": "Musterhausen",
          "title_official": "Kulturinstitution Musterhausen (GmbH)",
          "title": "Kulturinstitution Musterhausen",
          "slug": "kulturinstitution-musterhausen",
          "summary": "Die Kulturinstitution Musterhausen sammelt und bewahrt bedeutende Werke der regionalen Kunst und Kultur.",
          "content": "<p>Die Kulturinstitution wurde 1950 gegründet und ist seitdem ein wichtiger Ort für Kunst und Kultur in der Region.</p>",
          "languages_code": "de"
        }
      ]
    }
  ]
}

Einzelne Institution abrufen

GET /institutions/{institution_id}

Ruft detaillierte Informationen zu einer spezifischen Institution ab.

Parameter

Parameter Typ Beschreibung
institution_id integer Die eindeutige ID der Institution (Pfad-Parameter)

Beispiel

curl -X GET "https://api.kulturpool.at/institutions/42"

Antwort

{
  "data": {
    "id": 42,
    "name": "Kulturinstitution Musterhausen",
    "intermediate_provider": null,
    "location": {
      "type": "MultiPoint",
      "coordinates": [[10.12345, 52.67890]]
    },
    "web_collection_url": "https://www.kultur-musterhausen.example",
    "website_url": "https://www.kultur-musterhausen.example",
    "favicon": {
      "id": "12345678-1234-5678-9abc-123456789abc"
    },
    "hero_image": {
      "id": "87654321-8765-4321-9def-987654321fed",
      "title": "Hauptgebäude der Kulturinstitution Musterhausen",
      "author": "Max Mustermann",
      "license": "CC BY-SA",
      "license_url": "https://creativecommons.org/licenses/by-sa/4.0/deed.de"
    },
    "logo": {
      "id": "11111111-2222-3333-4444-555555555555"
    },
    "translations": [
      {
        "place": "Musterhausen",
        "title_official": "Kulturinstitution Musterhausen (GmbH)",
        "title": "Kulturinstitution Musterhausen",
        "slug": "kulturinstitution-musterhausen",
        "summary": "Die Kulturinstitution Musterhausen sammelt und bewahrt bedeutende Werke der regionalen Kunst und Kultur.",
        "content": "<p>Die Kulturinstitution wurde 1950 gegründet und ist seitdem ein wichtiger Ort für Kunst und Kultur in der Region.</p>",
        "languages_code": "de"
      }
    ]
  }
}

Datenstruktur

Institution

Feld Typ Beschreibung
id integer Eindeutige ID der Institution
name string Offizieller Name der Institution
intermediate_provider string/null Zwischenanbieter (falls vorhanden)
location Location Geografische Koordinaten
web_collection_url string URL zur digitalen Sammlung
website_url string Offizielle Website
favicon File Favicon der Institution
hero_image HeroImage Hauptbild mit Metadaten
logo File Logo der Institution
translations Translation[] Mehrsprachige Beschreibungen

Location

Feld Typ Beschreibung
type string GeoJSON-Typ (meist "MultiPoint")
coordinates number[][] Array von Koordinaten-Paaren [Längengrad, Breitengrad]

HeroImage

Feld Typ Beschreibung
id string Asset-ID des Bildes
title string Bildtitel
author string Fotograf/Künstler
license string Lizenztyp (z.B. "CC BY-SA")
license_url string URL zur vollständigen Lizenz

Translation

Feld Typ Beschreibung
place string Ortsname
title_official string Offizieller Titel mit Rechtsform
title string Anzeigename
slug string URL-freundlicher Bezeichner
summary string Kurzbeschreibung
content string Ausführliche Beschreibung (HTML)
languages_code string Sprachcode (ISO 639-1)

File

Feld Typ Beschreibung
id string UUID des Assets im CMS

Beispiel-Code

JavaScript/Fetch

// Alle Institutionen abrufen
const response = await fetch('https://api.kulturpool.at/institutions');
const { data: institutions } = await response.json();

// Einzelne Institution abrufen
const institutionResponse = await fetch('https://api.kulturpool.at/institutions/42');
const { data: institution } = await institutionResponse.json();

console.log(`Institution: ${institution.name}`);
console.log(`Ort: ${institution.translations[0]?.place}`);

Python/requests

import requests

# Alle Institutionen abrufen
response = requests.get('https://api.kulturpool.at/institutions')
institutions = response.json()['data']

# Einzelne Institution abrufen
institution_response = requests.get('https://api.kulturpool.at/institutions/42')
institution = institution_response.json()['data']

print(f"Institution: {institution['name']}")
print(f"Ort: {institution['translations'][0]['place'] if institution['translations'] else 'N/A'}")

cURL

# Alle Institutionen abrufen
curl -X GET "https://api.kulturpool.at/institutions" \
  -H "Accept: application/json"

# Einzelne Institution abrufen
curl -X GET "https://api.kulturpool.at/institutions/42" \
  -H "Accept: application/json"

Anwendungsfälle

Institutionen-Verzeichnis erstellen

async function createInstitutionDirectory() {
  const response = await fetch('https://api.kulturpool.at/institutions');
  const { data: institutions } = await response.json();

  const directory = institutions.map(institution => ({
    id: institution.id,
    name: institution.name,
    place: institution.translations[0]?.place,
    website: institution.website_url,
    collection: institution.web_collection_url
  }));

  return directory;
}

Karte mit Institutionen

async function getInstitutionLocations() {
  const response = await fetch('https://api.kulturpool.at/institutions');
  const { data: institutions } = await response.json();

  return institutions
    .filter(institution => institution.location)
    .map(institution => ({
      id: institution.id,
      name: institution.name,
      coordinates: institution.location.coordinates[0], // [lng, lat]
      title: institution.translations[0]?.title
    }));
}

Institution mit Assets

async function getInstitutionWithImages(institutionId) {
  const response = await fetch(`https://api.kulturpool.at/institutions/${institutionId}`);
  const { data: institution } = await response.json();

  const enriched = {
    ...institution,
    faviconUrl: institution.favicon ?
      `https://api.kulturpool.at/assets/${institution.favicon.id}?format=png&width=32&height=32` : null,
    logoUrl: institution.logo ?
      `https://api.kulturpool.at/assets/${institution.logo.id}?format=png&width=200&height=100&fit=contain` : null,
    heroImageUrl: institution.hero_image ?
      `https://api.kulturpool.at/assets/${institution.hero_image.id}?format=webp&width=1200&height=400&fit=cover` : null
  };

  return enriched;
}

Fehlerbehandlung

404 - Institution nicht gefunden

{
  "detail": "Error fetching data from upstream API"
}

500 - Server-Fehler

{
  "detail": "Error fetching data from upstream API"
}