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.
Basis-URL
https://api.kulturpool.at/institutions
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"
}