Übersicht
Dieses Dokument beschreibt die offizielle REST-API des URN-Service in der Version v2.
Basis-Adresse und Versionierung
Die URN-Service API ist unter der Basis-Adresse https://api.nbn-resolving.org/
zu erreichen.
Die API ist versioniert, um bei inkompatiblen Veränderungen zeitweise mehrere Versionen der API betreiben zu können. Die Versionierung erfolgt über das Anhängen der API-Version an die Basis-Adresse. Die derzeit aktuelle Version ist v2:
Basis-Adresse der produktiven API
Im Normalfall wird nur eine Version der API angeboten. Nur beim Erscheinen einer neuen Version werden temporär zwei Versionen angeboten.
Sandbox
Der URN-Service bietet neben der produktiven API auch eine Sandbox-API an. Diese kann für Entwicklung und Tests von Anwendungen genutzt werden, um URNs und URLs zu Testzwecken registrieren und verwalten zu können, ohne den produktiven URN-Datenbestand zu beeinflussen.
Die Sandbox-API des URN-Service ist unter der Basis-Adresse https://api.nbn-resolving.org/sandbox/
zu erreichen. Die Versionierung erfolgt wie oben beschrieben. Die vollständige Basis-Adresse der Sandbox-API inklusive Versionsnummer lautet:
Basis-Adresse der Sandbox-API
Benutzer und Namensräume, die im Produktivsystem angelegt wurden, sind nicht automatisch in der Sandbox verfügbar. Bitte kontaktieren Sie den URN-Support, um die für Ihre Tests benötigten Benutzer und Namensräume einrichten zu lassen.
Datenformat
Alle Daten werden im JSON-Format mit UTF-8-Kodierung übertragen. Als Media-Typ wird application/json
erwartet und zurückgeliefert. Bei PATCH
-Anfragen kann alternativ auch der spezifischere Media-Typ application/merge-patch+json
angegeben werden.
In den Antworten des URN-Service werden leere Felder nicht weggelassen, sondern als null
ausgeliefert. Bei POST
-Anfragen, die an den URN-Service geschickt werden, können optionale Felder sowohl auf null
gesetzt werden oder weggelassen werden. Die JSON-Dokumente, die als PATCH
-Anfragen an den URN-Service geschickt werden, werden als JSON Merge-Patch (RFC 7386) interpretiert. D.h. bei übermittelten Feldern wird der Feldinhalt übernommen, nicht übermittelte Felder werden nicht geändert und auf null
gesetzte Felde werden gelöscht bzw. zurückgesetzt.
Zeitangaben erfolgen im ISO 8601 Format in UTC: YYYY-MM-DDTHH:MM:SS.sssZ
.
Authentifizierung
Anfragen auf Ressourcen, die Änderungen im URN-Service durchführen, bedürfen einer Authentizierung. Darüberhinaus unterscheiden sich einige Antworten des URN-Service in ihrem Umfang abhängig davon, ob sie mit oder ohne Authentizifierung durchgeführt werden. Beim Versuch, ohne Authentizierung auf eine Ressource zuzugreifen, die nur nach Authentifizierung zugänglich ist, wird entweder ein HTTP-Status 403 Forbidden
oder 404 Not Found
zurückgeliefert, abhängig davon, ob die Existenz der Ressource bekannt sein darf oder nicht. Beim Zugriff auf Ressourcen, die nicht zwingend eine Authentizierung benötigen, werden fehlerhaften Zugangsdaten ignoriert.
Als Authentizierungsverfahren wird HTTP Basic Authentication verwendet.
Die API unterstützt außerdem für fast alle Anfragen den Query-Parameter runas
. Mit diesem können Adminstratoren diese Methoden im Namen anderer Benutzer ausführen.
Parameter
Viele API-Methoden akzeptieren Parameter. Bei GET
-Anfragen werden diese als Query-Parameter übermittelt. Bei POST
- und PATCH
-Anfragen werden die Änderungen im Body der Anfrage mit dem Content-Type
application/json
oder – optional – bei PATCH
-Anfragen mit dem Content-Type
application/merge-patch+json
übermittelt.
Der Parameter runas
wird unabhängig von der Anfrage immer als Query-Parameter übermittelt.
HTTP-Verben
Die URN-Service API strebt eine korrekte Nutzung der HTTP-Verben an.
HTTP-Verb | Beschreibung |
---|---|
HEAD | Wird benutzt, um nur die HTTP-Header für eine Ressource abzufragen |
GET | Wird für das Abfragen von Ressourcen genutzt |
POST | Wird benutzt, um neue Ressourcen anzulegen |
PATCH | Wird verwendet, um Ressourcen mit partiellen JSON-Objekten zu aktualisieren |
PUT | Wird aktuell nicht von der REST-API verwendet |
DELETE | Wird benutzt, um Ressourcen zu löschen |
Fehler
Wenn eine Anfrage an die URN-Service API fehlschlägt, enthält die Antwort ein JSON-Objekt mit einer genaueren Fehlermeldung:
{ "code": "40001", "developerMessage": "Invalid JSON", "status": 400 }
Aus technischen Gründen werden Fehler allerdings teilweise auch als HTML-Dokument ausgeliefert.
Hypermedia
Die URN-Service API verwendet URLs für Referenzen zwischen Ressourcen. Sie dienen dazu, explizite URLs anzbieten, die API-Clients verwenden können, sodass sie keine eigenen URLs konstruieren müssen.
Mit einem GET
-Request auf die Basis-Adresse können Sie eine Liste aller Endpunkte in der API abrufen.
In allen Elementen, die von der URN-Service API ausgegeben werden, ist ein self
-Feld enthalten, das eine kanonische URL-Referenz auf das Element enthält. Beim Neuanlegen von Elementen ist außerdem in der Antwort der API der HTTP-Header Location
enthalten, mit der kanonischen URL-Referenz des neuen Elements.
Paging
Einige Anfragen begrenzen die Menge an zurückgelieferten Elemente und paginieren die Ergebnisliste. Um durch die Ergebnisliste zu blättern, kann der Query-Parameter offset
angeben werden. Dieser gibt an, mit welchem Element die Liste beginnen soll. Die Zählung beginnt bei 0. Wenn der Parameter nicht angegeben wird, wird mit dem ersten Element begonnen. Die Seitengröße kann mit dem Parameter count
beeinflusst werden. Standardmäßig werden 20 Elemente ausgegeben.
Link-Header
Zum vereinfachten Blättern durch die Ergebnislisten, enthalten die Antworten der URN-Service API einen HTTP Link-Header, der Links zur ersten, vorhergehenden, folgenden und zur letzten Seite enthält. Links zur ersten Seite und zur Vorgängerseite sind erst ab der zweiten Seite enthalten. Der Link auf die letzte Seite ist optional und aus technischen Gründen nicht immer enthalten.
Link: <http://api.nbn-resolving.org/v2/urns?offset=0&count=20>; rel="first", <http://api.nbn-resolving.org/v2/urns?offset=0&count=20>; rel="previous", <http://api.nbn-resolving.org/v2/urns?offset=40&count=20>; rel="next"
Referenz
Eine detaillierte Übersicht über alle Befehle der REST-API wird als Teil der REST-API unter docs/index.html
angeboten.
Beispiele:
Diese Seite zeigt Beispiele für typische Aktivitäten bei der Verwaltung von URNs über die REST-API.
Java-Client
Besteht Interesse, die eigene (Java-)Anwendung an die URN-Rest-API anzubinden, um beispielsweise auf diesen Weg regelmäßig neue URNs zu registrieren oder zu aktualisieren, bietet die Deutsche Nationalbibliothek einen Java-Client an, um die bestehende URN-REST-API anzusprechen. Der Client dient zur Reduzierung des eigenen Programmieraufwandes und stellt eine modernere Alternative zu den bisherigen Möglichkeiten dar .
Technische Voraussetzungen:
- Die Verwendung von Java 8 oder kompatiblere JVM Sprache in der entsprechenden Version.
- Berechtigung zur Einspielung von URNS der eigenen Institutionen innerhalb des eigenen Namensraumes in Form von LOGIN / USER Credentials.
Umfangreiche Beispielmethoden, um über den REST-Client mit dem URN-System zu interagieren finden sie hier: Nutzungsbeispiele Java-Client .
Für die Nutzung des Java-Clients und möglich Folge daraus übernimmt die Deutsche Nationalbibliothek keine Verantwortung. Die eigenen Implementierung sind daher vor der produktiven Nutzung ausreichend zu testen. Hierzu kann die Sandbox Umgebung der URN-Service unter http://api.nbn-resolving.org/sandbox/v2/ genutzt werden.
Fehler oder Verbesserungshinweise können an die Service Adresse (urn-support@dnb.de) des URN-Service gemeldet werden. Zeitpunkt und Umfang der Anpassungen/ Fehlerbehebungen können jedoch nicht garantiert werden. URN-Release finde in der Regel dreimal pro Jahr statt, in denen bei freien Kapazitäten auch der Java-Client bearbeitet wird. Neu Versionen des Client werden an dieser Stelle angekündigt.
(Stand: 18. Dezember 2023)