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"
}