API
API v1
docuteam feeder bietet REST-APIs für die Erstellung von Ablieferungen und Ereignissen und den Zugriff auf digitale Objekte. Diese APIs geben in der Regel eine JSON-Antwort (und binäre Daten) zurück.
Mit Hilfe des Deposition-API können externe Anwendungen Ablieferungen (Pakete mit Daten und Metadaten) an docuteam feeder übermitteln. Die Ablieferungen werden dann von docuteam feeder-Workflows abgeholt, verarbeitet und in einem Fedora-Repository gespeichert.
Nach erfolgreichem Ingest liefert die Deposition-API persistente Identifikatoren (PIDs) für jedes Objekt (Datei, Ordner) in der Ablieferung zurück. Anhand dieser PIDs können die Clients wieder auf die hinterlegten Objekte zugreifen.
In der Terminologie des Open Archival Information System (OAIS):
- docuteam feeder empfängt "Submission Information Packages" (SIP) über seine Deposition-API.
- Die SIPs werden von docuteam feeder verarbeitet (Qualitätssicherung, optionale erste Erhaltungsmassnahmen) und in einem Repository als "Archival Information Packages" (AIP) abgelegt.
- Client-Anwendungen rufen "Dissemination Information Packages (DIP)" ihrer ursprünglich eingereichten Objekte über die Access-API von docuteam feeder ab.
Die technische API-Dokumentation ist als OpenAPI-Spezifikation in der Anwendung selbst unter ./docs/v1
verfügbar.
Die Version 1 dieser API bietet die folgenden Operationen:
Deposition API
Diese API kann zur Erstellung von Ablieferungen verwendet werden. Bei der Erstellung einer Ablieferung gibt die HTTP-Antwort die Ablieferungs-ID zurück. Anhand dieser ID können der Status der Ablieferung und (nach erfolgreicher Archivierung) die PIDs der archivierten Objekte über die API abgefragt werden.
Die folgenden API-Routen sind verfügbar:
- POST
/api/v1/depositions
: Erstellen einer neuen Ablieferung - GET
/api/v1/depositions
: Alle Ablieferungen mit Details auflisten - GET
/api/v1/depositions/:id
: Ablieferung anzeigen - PUT
/api/v1/depositions/:id
: Ablieferung aktualisieren (Parameterfeeder_response
)
Bei der Erstellung einer Ablieferung muss das Paketformat mit dem Parameter package_format
angegeben werden. Ist er leer, wird das Paketformat standardmässig auf MatterhornMETSv1.0 gesetzt.
Bei der Auflistung von Ablieferungen können die folgenden optionalen Parameter verwendet werden, um die Liste der Ablieferungen zu filtern:
- Status
- von
- bis
- Organisation
Bei der Aktualisierung von Ablieferungen ist es möglich, die feeder_response
der Ablieferung zu aktualisieren (durch Senden eines wohlgeformten und url-kodierten json-Strings im Parameter feeder_response
), vorausgesetzt, der Status der Hinterlegung ist nicht gleich error
. Bitte beachten Sie, dass es nicht möglich ist, den Status der Ablieferung über die API zu ändern (nur interne Feeder-Prozesse können den Status ändern).
Antworten
Die Antworten werden in JSON oder (bei der Show-Methode) in binärer Form gegeben. Jede JSON-Antwort ist eine Liste von Ablieferungen mit ihren Details. Die generische Struktur sieht wie folgt aus:
{ "api" :
{ "name": "docuteam bridge API",
"version": "1.4.0" },
"response" :
[
{ "id": 1234,
"uploaded_at": "2018-11-03T11:13:39.278026Z",
"queued_at": "2018-11-03T14:16:12.678056Z",
"processed_by_feeder_at": "2018-11-03T14:16:12.678016Z",
"archived_at": "2018-11-03T14:16:12.678016Z",
"deleted_at": null,
"status": "archived",
"feeder_response": { json-blackbox },
"organization": "museumplus",
"repository_key": "museumplus",
"package_format" : "DocuteamDublinCorev1.0",
"package_attached" : true,
"package_byte_size": 2716786
}
]
"request" :
{ "organization": "museumplus",
"role": "reader",
"requested_at": "2018-11-03T11:13:39.278026Z"}
}
Die wichtigsten Elemente sind:
id
ist die Kennung der Ablieferung, d. h. die API-interne Referenz für Ablieferungen. Sie wird verwendet, um auf eine bestimmte Ablieferung zuzugreifen.status
ist der Status der Ablieferung, wie oben beschrieben.feeder_response
enthält Rückmeldungen über die Verarbeitung der Ablieferung in docuteam feeder. Der Inhalt dieses Feldes ist ebenfalls in JSON formatiert. Aus der Sicht der API ist es eine Blackbox.
Bei erfolgreicher Archivierung gibt feeder eine Struktur in folgender Form zurück:
{ "pids":
[
{ "clientId":"c1", "pid":"CH-1234565-7:1"},
{ "clientId":"c2", "pid":"CH-1234565-7:2"},
...
],
"feeder_version": "5.4.0"
}
Es muss beachtet werden, dass:
- die
clientId
den obligatorischen IDs entspricht, die von der Client-Anwendung für jedes Objekt innerhalb des SIP übermittelt werden (zum Beispiel im Fall von docuteam DublinCore SIP befindet sie sich in den dc.xml-Dateien und verwendet die folgende Syntax<dc:identifier>clientId:d4FTw3v6T</dc:identifier>
). - Die
pid
ist der dauerhafte Identifikator, der vom Repository vergeben wird. Er hat die Formnamespace:id
, wobei "namespace" im Allgemeinen der institutionelle oder ISIL-Code ist (zum Beispiel: "CH-1234565-7:2") und "id" die eindeutige Nummer für diesen namespace im Repository.