Zum Hauptinhalt springen

Objekt API

Überblick

/v2/object liefert den vollständigen Originaldatensatz eines einzelnen Kulturguts im Europeana Data Model (EDM) als JSON-LD — genau so, wie ihn die Institution geliefert hat.

Basis-URL​

https://api.kulturpool.at/v2/object

Parameter​

ParameterTypPflichtBeschreibung
idstringjaDie Kulturpool-ID (UUID) des Datensatzes

Die Kulturpool-ID steht in jedem Suchtreffer im Feld uuid.

curl "https://api.kulturpool.at/v2/object?id=b1eaac0f-69a1-4174-8ac6-90a61615d0ae"

Antwort​

Die Antwort enthält ein einziges Feld: metadata, den Datensatz als JSON-LD nach dem EDM — dieselbe Struktur, in der der Kulturpool die Daten verarbeitet und an die Europeana weitergibt.

Der Endpunkt reicht durch und rechnet nichts aus. Was der Index über einen Datensatz weiß — Anzahl und Art der Medien, IIIF-Verfügbarkeit, Bildgröße und -format — steht als eigenes Feld an jedem Suchtreffer; siehe Medien und IIIF. Die Dateien selbst stehen im EDM unter isShownBy, hasView und object.

{
"metadata": {
"@context": "https://api.kulturpool.at/ns/v1/edm.json",
"id": "https://id.kulturpool.at/b1eaac0f-69a1-4174-8ac6-90a61615d0ae/aggregation",
"type": "Aggregation",
"provider": "Kulturpool",
"dataProvider": "Wienbibliothek im Rathaus",
"edmRights": "http://creativecommons.org/publicdomain/mark/1.0/",
"isShownAt": "https://www.digital.wienbibliothek.at/id/475632",
"isShownBy": {
"id": "https://www.digital.wienbibliothek.at/download/webcache/1000/475634",
"type": "WebResource",
"hasService": {
"id": "https://www.digital.wienbibliothek.at/i3f/v20/475634",
"type": "Service",
"conformsTo": [{ "id": "http://iiif.io/api/image" }]
}
},
"hasView": [
{
"id": "https://www.digital.wienbibliothek.at/download/pdf/475632",
"type": "WebResource"
}
],
"aggregatedCHO": {
"id": "https://id.kulturpool.at/b1eaac0f-69a1-4174-8ac6-90a61615d0ae/cho",
"type": "ProvidedCHO",
"title": ["Neueste Nachrichten … Nr. 207/ 2. Jahrgang/ 28. Juli 1915"],
"dcType": ["Plakat", "book", "poster"],
"issued": ["1915"],
"edmType": "TEXT",
"spatial": ["Salzburg <Stadt>"],
"language": ["ger"],
"publisher": ["Neueste Nachrichten"],
"identifier": ["urn:nbn:at:AT-WBR-22887"]
}
}
}

Datenstruktur​

FeldTypBeschreibung
metadataobjectJSON-LD-Objekt nach dem Europeana Data Model

JSON-LD-Kontext​

Der @context verweist auf die Kontextdatei des Kulturpools:

https://api.kulturpool.at/ns/v1/edm.json

Damit lässt sich die Antwort mit gängigen JSON-LD-Bibliotheken in andere RDF-Serialisierungen überführen (Turtle, N-Triples, RDF/XML).

Von der Suche zum Objekt​

Jeder Suchtreffer trägt seine Kulturpool-ID im Feld uuid:

const search = await fetch(
'https://api.kulturpool.at/v2/search?q=Klimt&per_page=1',
).then((r) => r.json());

const uuid = search.hits[0].document.uuid;

const object = await fetch(
`https://api.kulturpool.at/v2/object?id=${uuid}`,
).then((r) => r.json());

console.log(object.metadata.aggregatedCHO.title);
console.log(object.metadata.isShownBy);
import requests

search = requests.get(
"https://api.kulturpool.at/v2/search",
params={"q": "Klimt", "per_page": 1},
).json()

uuid = search["hits"][0]["document"]["uuid"]

obj = requests.get(
"https://api.kulturpool.at/v2/object",
params={"id": uuid},
).json()

print(obj["metadata"]["aggregatedCHO"]["title"])
print(obj["metadata"]["isShownBy"])
Der Datensatz reist mit dem Treffer

Wenn Sie ohnehin suchen und den vollständigen Datensatz brauchen, können Sie sich die zweite Anfrage sparen: das Feld sourceRecord enthält genau dieses metadata-Objekt als JSON-String. Es wird aus Größengründen nicht standardmäßig ausgeliefert — mit include_fields fordern Sie es an:

GET /v2/search?q=Klimt&include_fields=uuid,title,sourceRecord

JSON.parse(hit.document.sourceRecord) liefert dann exakt dasselbe wie metadata hier — dieser Endpunkt tut nichts anderes. Rechnen Sie mit rund 4,8 KB je Treffer.

Fehlerbehandlung​

CodeBedeutung
404Zu dieser Kulturpool-ID gibt es keinen Datensatz
422Der Parameter id fehlt
502Der Suchindex ist nicht erreichbar
{
"detail": "Kein Objekt mit der Kulturpool-ID 00000000-0000-0000-0000-000000000000."
}