Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Codeblock
titleAntwort auf GET https://sandbox.nbn-resolving.org/v2/namespaces/name/urn:nbn:de:example/urn-suggestion
collapsetrue
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/json
Content-Length: 233
Date: Wed, 13 Feb 2019 14:15:52 GMT

{
  "suggestedUrn": "urn:nbn:de:example-2019021315155244513532",
  "namespace": "https://sandbox.nbn-resolving.org/v2/namespaces/name/urn:nbn:de:example",
  "self": "https://sandbox.nbn-resolving.org/v2/namespaces/name/urn:nbn:de:example/urn-suggestion"
}

...

Info

Priorität

Das bisherige Primary-Modell wird durch die Priorität abgelöst.

Dabei gilt folgende Logik:

  1. Höchste Priorität haben immer die URLs der Organisation, der auch Inhaber des entsprechenden Unternamensraum ist.
  2. Diesen nachgeordnet sind URLs, die von Organisationen, denen die entsprechende URN NICHT gehört hinzugefügt wurden. (sogenannte Kuckucks-URLs)
  3. Über die geringste Priorität verfügen die URLs, die also sogenannte Archiv-URL von der DNB bei der Ablieferung der Netzpublikation, automatisiert hinzugefügt werden.

Darum haben nur die Organisation, die für den jeweiligen Namensraum verantwortlich sind, die Möglichkeit, eine URL mit der Priority 1, also der höchsten Priorität, auszuzeichnen. (Bei allen weiteren URLs wird die Priorität intern hochgezählt.) 

(Warnung) NUR als verantwortliche Organisation können Sie entweder 1 oder 0 eingeben.


Codeblock
POST https://sandbox.nbn-resolving.org/v2/urns
Authorization: Basic dXJuLXBhcnRuZXI6bWVpbi1wYXNzd29ydA==
Content-Type: application/json
Accept: application/json

{
  "urn": "urn:nbn:de:example-2019021315155244513532",
  "urls": [
    {
      "url": "http://example.org/document-url",
      "priority": 10
    }
  ]
}

...

Codeblock
titleAntwort auf POST https://sandbox.nbn-resolving.org/v2/urns
collapsetrue
HTTP/1.1 201 Created
Connection: keep-alive
Location: https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532
Content-Type: application/json
Content-Length: 527
Date: Wed, 13 Feb 2019 14:32:48 GMT

{
  "urn": "urn:nbn:de:example-2019021315155244513532",
  "created": "2019-02-13T15:32:48.123Z",
  "lastModified": "2019-02-13T15:32:48.123Z",
  "namespace": "https://sandbox.nbn-resolving.org/v2/namespaces/name/urn:nbn:de:example",
  "successor": null,
  "urls": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls",
  "myUrls": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/my-urls",
  "self": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532"
} 

...

Um zu Überprüfen, ob eine URN registriert wurde, können wir einfach einen HEAD-Request auf den Endpunkt /urns/urn/<urn> machen. Wenn die URN existiert, wird der Status 200 OK zurückgegeben:

Codeblock
HEAD https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532

...

Codeblock
titleAntwort auf HEAD https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532
collapsetrue
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 0
Date: Wed, 13 Feb 2019 14:42:54 GMT

<Response body is empty> 

Wenn sie nicht existiert, wird der Status 404 Not Found zurückgegeben:

Codeblock
HEAD https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-nicht-registriert

...

Codeblock
titleAntwort auf HEAD https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-nicht-registriert
collapsetrue
HTTP/1.1 404 Not Found
Connection: keep-alive
Content-Type: application/json
Content-Length: 67
Date: Wed, 13 Feb 2019 14:44:45 GMT

<Response body is empty>

...

Codeblock
titleAntwort auf GET https://sandbox.nbn-resolving.org/v2//urns/urn/urn:nbn:de:example-2019021315155244513532
collapsetrue
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/json
Content-Length: 527
Date: Wed, 13 Feb 2019 14:50:27 GMT

{
  "urn": "urn:nbn:de:example-2019021315155244513532",
  "created": "2019-02-13T15:32:48.123Z",
  "lastModified": "2019-02-13T15:32:48.123Z",
  "namespace": "https://sandbox.nbn-resolving.org/v2/namespaces/name/urn:nbn:de:example",
  "successor": null,
  "urls": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls",
  "myUrls": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/my-urls",
  "self": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532"
} 

...

Über den Link im Feld urls, dass wir bei der URN-Abfrage erhalten haben, können wir uns eine Liste aller URLs ausgeben lassen, die für die URN registriert sind:

Codeblock
GET https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls
Accept: application/json

...

Codeblock
titleAntwort auf GET https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls
collapsetrue
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/json
Content-Length: 573
Date: Wed, 13 Feb 2019 14:53:08 GMT

{
  "totalItems": 1,
  "items": [
    {
      "url": "http://example.org/document-url",
      "created": "2019-02-13T15:32:48.123Z",
      "lastModified": "2019-02-13T15:32:48.123Z",
      "urn": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532",
      "owner": "https://sandbox.nbn-resolving.org/v2/organisations/id/1",
      "priority": 10,
      "self": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls/base64/aHR0cDovL2V4YW1wbGUub3JnL2RvY3VtZW50LXVybA=="
    }
  ],
  "self": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls"
} 

...

Statt alle registrierten URLs abzufragen, können wir auch den Link aus dem Feld myUrls aus der URN-Abfrage verwenden, um nur die URLs aufzulisten die uns gehören. Dies funktioniert natürlich nur, wenn wir Authentizierungsdaten in der Anfrage mitsenden. Die Liste ist entsprechend der Priorität unserer URLs sortiert. Falls wir keine URLs an einer URN registriert haben, bekommen wir eine leere Liste zurück.

Codeblock
GET https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/my-urls
Authorization: Basic dXJuLXBhcnRuZXI6bWVpbi1wYXNzd29ydA==
Accept: application/json

...

Codeblock
titleAntwort auf GET https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/my-urls
collapsetrue
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/json
Content-Length: 576
Date: Wed, 13 Feb 2019 14:56:02 GMT

{
  "totalItems": 1,
  "items": [
    {
      "url": "http://example.org/document-url",
      "created": "2019-02-13T15:32:48.123Z",
      "lastModified": "2019-02-13T15:32:48.123Z",
      "urn": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532",
      "owner": "https://sandbox.nbn-resolving.org/v2/organisations/id/1",
      "priority": 10,
      "self": "https://sandbox.nbn-resolving.org/v2/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls/base64/aHR0cDovL2V4YW1wbGUub3JnL2RvY3VtZW50LXVybA=="
    }
  ],
  "self": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/my-urls"
}

...

Statt alle URLs an einer URN abzufragen, können wir auch gezielt eine einzelne URL abfragen. Dazu kann ein GET-Request auf den Endpunkt /urns/urn/<urn>/urls/base64/<url-in-base64> gemacht werden. Da eine URL nicht einfach als Teil einer anderen URL verwendet werden kann, muss die URL im Format Base 64 kodiert werden.

Codeblock
GET https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls/base64/aHR0cDovL2V4YW1wbGUub3JnL2RvY3VtZW50LXVybA==
Accept: application/json

...

Codeblock
titleAntwort auf GET https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls/base64/aHR0cDovL2V4YW1wbGUub3JnL2RvY3VtZW50LXVybA==
collapsetrue
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/json
Content-Length: 449
Date: Wed, 13 Feb 2019 15:01:21 GMT

{
  "url": "http://example.org/document-url",
  "created": "2019-02-13T15:32:48.123Z",
  "lastModified": "2019-02-13T15:32:48.123Z",
  "urn": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532",
  "owner": "https://sandbox.nbn-resolving.org/v2/organisations/id/1",
  "priority": 10,
  "self": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls/base64/aHR0cDovL2V4YW1wbGUub3JnL2RvY3VtZW50LXVybA=="
}

...

Um eine zusätzliche URL zu einer URN zu registrieren, kann ein POST-Request auf den Endpunkt /urns/urn/<urn>/urls gemacht werden. Zusätzliche URLs dürfen nicht nur an eigenen URNs registriert werden, sondern an beliebigen URNs. Die Angabe des Feldes priority ist wieder optional.

Codeblock
POST https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls
Authorization: Basic dXJuLXBhcnRuZXI6bWVpbi1wYXNzd29ydA==
Content-Type: application/json
Accept: application/json

{
  "url" : "http://example.org/another-document-url",
  "priority" : 100
}

...

Codeblock
titleAntwort auf POST https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls
collapsetrue
HTTP/1.1 201 Created
Connection: keep-alive
Location: https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls/base64/aHR0cDovL2V4YW1wbGUub3JnL2Fub3RoZXItZG9jdW1lbnQtdXJs
Content-Type: application/json
Content-Length: 466
Date: Wed, 13 Feb 2019 15:11:15 GMT

{
  "url": "http://example.org/another-document-url",
  "created": "2019-02-13T16:11:15.123Z",
  "lastModified": "2019-02-13T16:11:15.123Z",
  "urn": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532",
  "owner": "https://sandbox.nbn-resolving.org/v2/organisations/id/1",
  "priority": 100,
  "self": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls/base64/aHR0cDovL2V4YW1wbGUub3JnL2Fub3RoZXItZG9jdW1lbnQtdXJs"
}

...

Soll eine URL von einer URN gelöscht werden, so geschieht dies über einen DELETE-Request auf die URL-Referenz /urns/urn/<urn>/urls/base64/<url-in-base64>. Dabei können selbstverständlich nur die eigenen URLs gelöscht werden. Außerdem muss mindestens eine URL an der URN registriert bleiben. Wenn die eigene die letzte URL an einer URN ist, kann sie nicht entfernt werden.

Codeblock
DELETE https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls/base64/aHR0cDovL2V4YW1wbGUub3JnL2Fub3RoZXItZG9jdW1lbnQtdXJs
Authorization: Basic dXJuLXBhcnRuZXI6bWVpbi1wYXNzd29ydA==
Accept: application/json

...

Codeblock
titleAntwort auf DELETE https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls/base64/aHR0cDovL2V4YW1wbGUub3JnL2Fub3RoZXItZG9jdW1lbnQtdXJs
collapsetrue
HTTP/1.1 204 No Content
Date: Wed, 13 Feb 2019 15:22:20 GMT

<Response body is empty> 

...

Neben dem Hinzufügen und Löschen einzelner URLs bietet die URN-Service API auch die Möglichkeit, alle eigenen URLs durch neue URLs zu ersetzen. Dies geschieht über einen PATCH-Request an den Endpunkt /urns/urn/<urn>/my-urls. Der Request muss eine Liste der neuen URLs enthalten. Diese können sich auch teilweise mit den Existierenden überschneiden, falls  nur ein Teil der URLs verändert werden soll. Im folgenden Beispiel, soll die existierende URL beibehalten werden, daher ist sie in der Liste enthalten. Zusätzlich registrieren wir eine neue URL. Dabei verzichten wir auf die Angabe der Priorität, sodass die URL die Priorität 0 erhält.

Codeblock
PATCH https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/my-urls
Authorization: Basic dXJuLXBhcnRuZXI6bWVpbi1wYXNzd29ydA==
Content-Type: application/json
Accept: application/json

[
  {
    "url": "http://example.org/document-url",
    "priority": 23
  },
  {
    "url": "http://example.org/additional-document-url"
  }
]

...

Codeblock
titleAntwort auf PATCH https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/my-urls
collapsetrue
HTTP/1.1 204 No Content
Date: Fri, 15 Feb 2019 15:24:18 GMT

<Response body is empty>

...

In seltenen Fällen kann es vorkommen, dass eine URN durch eine Nachfolge-URN ersetzt werden soll. Beim Resolving soll dann automatisch von der alten URN zum Nachfolger weitergeleitet werden. URN-Besitzer können diese Nachfolger-Beziehung einrichten. Dies geschieht über einen PATCH-Request auf due URN-Ressource /urns/urn/<urn>. Die Nachfolger-URN wird über ihren kanonischen API-Referenz identifiziert, der im @id-Feld jeder URN enthalten ist:

Codeblock
PATCH https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532
Authorization: Basic dXJuLXBhcnRuZXI6bWVpbi1wYXNzd29ydA==
Content-Type: application/json
Accept: application/json

{
  "successor": "https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-20190213151552346346245"
}

...

Codeblock
titleAntwort auf PATCH https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532
collapsetrue
HTTP/1.1 204 No Content
Date: Wed, 13 Feb 2019 15:40:34 GMT

<Response body is empty>

...

Falls ein Nachfolge-URN fälscherlicher Weise gesetzt wurde, kann sie einfach wieder entfernt werden, indem ein PATCH-Request mit einem null-Wert als Nachfolger gesendet wird:

Codeblock
PATCH https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532
Authorization: Basic dXJuLXBhcnRuZXI6bWVpbi1wYXNzd29ydA==
Content-Type: application/json
Accept: application/json

{
  "successor": null
}

...

Codeblock
titleAntwort auf PATCH https://sandbox.nbn-resolving.org/v2/urns/urn/urn:nbn:de:example-2019021315155244513532
collapsetrue
HTTP/1.1 204 No Content
Date: Wed, 13 Feb 2019 15:43:28 GMT

<Response body is empty>

...