Die REST-API kann vor allem durch externe Tools für den lesenden und schreibenden Zugriff auf MyCoRe-Objekte benutzt werden.
Mit dem LTS 2020.06 wurde die MyCoRe-REST-API überarbeitet.
Neben dem lesenden Zugriff besteht jetzt auch die Möglichkeit Objekte zu erstellen, bearbeiten und zu löschen.
Die Basis-URL der neuen REST-API lautet: ${WebApplicationBaseURL}api/v2
.
Mit dem LTS 2021.06 wurden Zugriffsschlüssel in mycore-acl eingeführt. Zugriffsschlüssel können grundsätzlich nur im JSON-Format verwaltet werden.
Neben der Beschreibung auf dieser Webseite, liefert jede MyCoRe-Anwendung auch eine Dokumentation der REST-Schnittstelle im OpenAPI-Format aus: z.B.: https://www.mycore.de/mir/api/v2/openapi.json.
Die Nutzung der REST-API wird durch ACLs geschützt.
Für den lesenden Zugriff muss immer eine ACL auf restapi:/
mit dem Recht read
gesetzt sein.
Der Zugriff auf einzelne Pfade wie /objects
, /search
oder
/classifications
kann durch entsprechende ACLs (z.B. restapi:/v2/objects
)
zusätzlich beschränkt werden.
Für den schreibenden Zugriff muss eine eine ACL auf restapi:/
mit dem Recht writedb
gesetzt sein.
Durch Setzen entsprechender ACL-Regeln kann der Zugriff komplett freigeschaltet (TRUE
),
auf einzelne Nutzer oder Rollen beschränkt oder auf bestimmte IP-Adressen / IP-Bereiche begrenzt werden.
Dieser Request liefert eine Liste der vorhandenen MyCoRe-Objekte zurück.
Die Liste kann im XML-Format (default) oder JSON-Format zurückgeliefert werden.
Das Format kann entweder via HTTP-Header (Accept: application/json
bzw. Accept: application/xml
)
oder via URL-Endung (/objects.json
bzw. /objects.xml
) definiert werden.
Dieser Request liefert die internen XML-Metadaten eines MyCoRe-Objektes zurück.
{$id} |
entspricht im Standardfall der MyCoRe-Objekt-ID. Führende Nullen werden ggf. automatisch ergänzt. Anstelle der ID können alternative Identifier verwenden werden. Voraussetzung dafür ist, dass sie als SOLR-Feld definiert wurden, dass genau ein Dokument zurückliefert. Über das Property MCR.RestAPI.V2.AlternativeIdentifier.Objects.Keys kann eine Liste von Feldern angegeben werden:
key:value verwendet werden.
|
Parameter | Beschreibung |
---|---|
offset | Überspringt die angegebene Anzahl an Ergebnissen. Hinweis: Nicht zusammen mit after_id verwenden. |
limit | Begrenzt die Anzahl der zurückgegebenen Ergebnisse. |
type | Filtert Objekte nach dem Typ in der ID. |
project | Filtert Objekte nach dem Projekt in der ID. |
number_greater | Nur Objekte mit einer ID, deren Nummer größer ist als der angegebene Wert. |
number_less | Nur Objekte mit einer ID, deren Nummer kleiner ist als der angegebene Wert. |
created_after / created_before | Filtert nach Objekten, die nach/vor einem bestimmten Datum erstellt wurden. |
modified_after / modified_before | Filtert nach Objekten, die nach/vor einem bestimmten Datum zuletzt bearbeitet wurden. |
deleted_after / deleted_before | Filtert nach Objekten, die nach/vor einem bestimmten Datum gelöscht wurden. |
created_by / modified_by / deleted_by | Filtert nach Objekten, die von einem bestimmten Benutzer erstellt, bearbeitet oder gelöscht wurden. |
sort_order | Gibt die Sortierreihenfolge an (asc für aufsteigend, desc für absteigend). |
sort_by | Sortiert nach id, created (Standard) oder modified. |
after_id | Gibt Ergebnisse nach einer bestimmten ID zurück. Hinweis: Nicht zusammen mit offset verwenden. |
Die Datumsangaben für die Parameter created_after
, created_before
, modified_after
, modified_before
, deleted_after
und deleted_before
verwenden das HTTP-Datumsformat.
Ein Beispiel für eine gültige Angabe ist: Tue, 27 Aug 2024 09:16:02 GMT
.
curl -o skeleton_simpledoc_00000036.xml
http://localhost:8080/skeleton/api/v2/objects/skeleton_simpledoc_00000036
Dieser Request liefert die <metadata>
-Sektion eines MyCoRe-Objektes zurück.
{$id} |
entspricht im Standardfall der MyCoRe-Objekt-ID. Führende Nullen werden ggf. automatisch ergänzt. Anstelle der ID können alternative Identifier verwenden werden (s. oben). |
curl -o metadata-for-skeleton_simpledoc_00000036.xml
http://localhost:8080/skeleton/api/v2/objects/skeleton_simpledoc_00000036/metadata
erstellt ein neues MyCoRe-Objekt.
Im Request-Body muss ein valides MyCoRe-Objekt mitgeliefert werden.
Aus der MyCoRe-ID werden Projekt und Objekttyp übernommen, der Zählerbestandteil wird vom System mit dem aktuellen Wert überschrieben.
Der Response enthält einen Location
-Header mit der URL des neuen MyCoRe-Objektes.
curl -D -X POST -u administrator:*PASSWORD*
-H "Content-Type: application/xml"
-d "@skeleton_simpledoc_00000001.xml"
- http://localhost:8080/skeleton/api/v2/objects
<mycoreobject ID="skeleton_simpledoc_00000001">
<structure />
<metadata>
<def.title class="MCRMetaLangText" heritable="false" notinherit="true">
<title inherited="0" form="plain">Meine erste Publikation</title>
</def.title>
<def.language class="MCRMetaClassification" heritable="false" notinherit="true">
<language inherited="0" classid="rfc4646" categid="en"/>
</def.language>
</metadata>
<service>
<servstates class="MCRMetaClassification">
<servstate inherited="0" classid="state" categid="submitted"/>
</servstates>
</service>
</mycoreobject>
Daten für Upload: MyCoRe-Objekt als XML in Datei skeleton_simpledoc_00000001.xml
aktualisiert die internen XML-Metadaten eines MyCoRe-Objektes.
curl -D - -X PUT -u administrator:*PASSWORD*
-H "Content-Type: application/xml"
-d "@skeleton_simpledoc_00000036.xml"
http://localhost:8080/skeleton/api/v2/objects/skeleton_simpledoc_00000036
aktualisiert die <metadata>
-Sektion eines MyCoRe-Objektes.
curl -D - -X PUT -u administrator:*PASSWORD*
-H "Content-Type: application/xml"
-d "@metadata-for-skeleton_simpledoc_00000001.xml"
http://localhost:8080/skeleton/api/v2/objects/skeleton_simpledoc_000000001/metadata
<metadata>
<def.title class="MCRMetaLangText" heritable="false" notinherit="true">
<title inherited="0" form="plain">Meine aktualisierte Publikation</title>
</def.title>
<def.language class="MCRMetaClassification" heritable="false" notinherit="true">
<language inherited="0" classid="rfc4646" categid="en"/>
</def.language>
</metadata>
Daten für Upload: Metadaten als XML-Datei metata-for-skeleton_simpledoc_00000001.xml
Dieser Request liefert eine Liste aller Zugriffsschlüssel eines MyCoRe-Objekts zurück.
{$id} |
analog zu /objects/{$id} |
{$offset} |
optional: Legt das Offset der Liste der zuletzt verwalteten Zugriffsschlüssel fest. Default: 0 . |
{$limit} |
optional: Legt die Größe der Liste der zuletzt verwalteten Zugriffsschlüssel fest. Default: 128 . |
Die Liste wird im JSON-Format zurückgeliefert.
Dieser Request liefert einen Zugriffsschlüssel eines MyCoRe-Objekts zurück.
{$id} |
analog zu /objects/{$id} |
{$secret} |
Geheimnis des Zugriffsschlüssels. |
{$secret_encoding} |
optional: Beschreibt die Codierung von {$secret_format} . Dabei wird base64url als Format unterstützt. |
Der Zugriffsschlüssel wird im JSON-Format zurückgeliefert.
Dieser Request erstellt einen Zugriffsschlüssel für ein MyCoRe-Objekt.
Der Zugriffsschlüssel ist standardmäßig aktiviert. Er kann in den Metadaten über isActive
explizit deaktiviert werden.
Die Response enthält einen Location
-Header mit der URL des neuen Zugriffsschlüssels.
{$id} |
analog zu /objects/{$id} |
Der Zugriffsschlüssel muss im JSON-Format gesendet werden.
Dieser Request aktualisiert einen Zugriffsschlüssel für ein MyCoRe-Objekt. Beim Update werden nur Properties berücksichtigt, die in der Anfrage enthalten sind.
{$id} |
analog zu /objects/{$id} |
{$secret} |
analog zu /objects/{$id}/accesskeys/{$secret} |
{$secret_encoding} |
analog zu /objects/{$id}/accesskeys/{$secret} |
Der Zugriffsschlüssel muss im JSON-Format gesendet werden.
Dieser Request löscht einen Zugriffsschlüssel eines MyCoRe-Objekts.
{$id} |
analog zu /objects/{$id} |
{$secret} |
analog zu /objects/{$id}/accesskeys/{$secret} |
{$secret_encoding} |
analog zu /objects/{$id}/accesskeys/{$secret} |
MCR.RestApi.Draft.MCRObjectState=true
Dieser Request liefert den Wert der state
-Klassifikation im <service>
-Teil des MyCoRe-Objektes zurück.
Es wird ein Redirect auf den API-Endpoint /classifications
mit der dazugehörigen Kategorie ausgeführt.
Dieser Request setzt die state
-Klassifikation im <service>
-Teil des MyCoRe-Objektes.
Der Wert wird als Plain-Text im Body des Requests übergeben.
curl -D - -X PUT -u administrator:*PASSWORD*
-H "Content-Type: text/plain"
-d "deleted"
- http://localhost:8080/skeleton/api/v2/objects/skeleton_simpledoc_00000012/service/state
listet die Derivate eines MyCoRe-Objektes auf.
{$id} |
analog zu /objects/{$id} |
Die Liste kann im XML-Format (default) oder JSON-Format zurückgeliefert werden.
Das Format kann entweder via HTTP-Header (Accept: application/json
bzw. Accept: application/xml
)
oder via URL-Endung (/derivates.json
bzw. /derivates.xml
) definiert werden.
curl -H "Accept: application/json"
https://www.mycore.de/mir/api/v2/objects/mir_mods_00000003/derivates
Dieser Request liefert das interne XML eines MyCoRe-Derivates zurück
{$id} |
analog zu /objects/{$id} |
{$derid} |
entspricht im Standardfall der MyCoRe-Derivate-ID. Führende Nullen werden ggf. automatisch ergänzt. Anstelle der ID können alternative Identifier verwenden werden. Voraussetzung dafür ist, dass sie als SOLR-Feld definiert wurden, dass genau ein Dokument zurückliefert. Über das Property MCR.RestAPI.V2.AlternativeIdentifier.Derivates.Keys kann eine Liste von Feldern angegeben werden:
key:value verwendet werden.
|
Mit diesem Request erhält man ein Directory-Listing für im Derivate enthaltene Ordner oder lädt die spezifizierte Datei herunter.
{$id} |
analog zu /objects/{$id} |
{$derid} |
analog zu /objects/{$id}/derivates/{$derid} |
{$path} |
optional: Pfad zu einem Verzeichnis im Derivate, dessen Inhalt hier ausgegeben werden soll bzw. zu einer Datei die heruntergeladen werden soll. |
Die Liste kann im XML-Format (default) oder JSON-Format zurückgeliefert werden.
Das Format kann entweder via HTTP-Header (Accept: application/json
bzw. Accept: application/xml
)
oder via URL-Endung (/contents.json
bzw. /contents.xml
) definiert werden.
Hinweis: Datei-Downloads sind auch über die File-API realisierbar:
erstellt ein neues MyCoRe-Derivate.
Die initialen Metadaten werden als Form-Parameter übergeben.
Der Response enthält einen Location
-Header mit der URL des neuen MyCoRe-Objektes.
order |
Reihenfolge (Position) des Derivates in den MyCoRe-Metadaten |
maindoc |
Pfad zur Hauptdatei im Derivate |
classification |
(wiederholbar) Klassifikationseinträge für das Derivate in der Form classid:categid |
title |
(wiederholbar) Title des Derivates, die Sprache kann dem Text in runden Klammern vorangestellt werden, z.B.
(en)published article |
curl -D - -X POST -u administrator:*PASSWORD*
-H "Content-Type: application/x-www-form-urlencoded"
-d "order=1&maindoc=index.html&title=%28de%29Volltextdokument&title=%28en%29fulltext%20document&classification=derivate_types%3Acontent"
http://localhost:8080/skeleton/api/v2/objects/skeleton_simpledoc_00000012/derivates
lädt eine neue Datei hoch bzw. aktualisiert eine existierende Datei.
Der Response hat den Statuscode 201
, wenn eine neue Datei erstellt wurde
oder den Statuscode 204
, wenn eine bestehende Datei aktualisiert wurde.
curl -D - -X PUT -u administrator:*PASSWORD*
-H "Content-Type: application/pdf"
-d "@fulltext.pdf"
- http://localhost:8080/skeleton/api/v2/objects/skeleton_simpledoc_00000012/derivates/skeleton_derivate_00000032/contents/fulltext.pdf
Dieser Request liefert eine Liste aller Zugriffsschlüssel eines MyCoRe-Derivats zurück.
{$id} |
analog zu /objects/{$id} |
{$derid} |
analog zu /objects/{$id}/derivates/{$derid} |
{$offset} |
analog zu /objects/{$id}/accesskeys |
{$limit} |
analog zu /objects/{$id}/accesskeys |
Die Liste wird im JSON-Format zurückgeliefert.
Dieser Request liefert einen Zugriffsschlüssel eines MyCoRe-Derivats zurück.
{$id} |
analog zu /objects/{$id} |
{$derid} |
analog zu /objects/{$id}/derivates/{$derid} |
{$secret} |
analog zu /objects/{$id}/accesskeys/{$secret} |
{$secret_encoding} |
analog zu /objects/{$id}/accesskeys/{$secret} |
Der Zugriffsschlüssel wird im JSON-Format zurückgeliefert.
Dieser Request erstellt einen Zugriffsschlüssel für ein MyCoRe-Derivat.
Der Zugriffsschlüssel ist default aktiviert, wenn dieser über isActive
nicht explizit deaktiviert wurde.
Die Response enthält einen Location
-Header mit der URL des neuen Zugriffsschlüssels.
{$id} |
analog zu /objects/{$id} |
{$derid} |
analog zu /objects/{$id}/derivates/{$derid} |
Der Zugriffsschlüssel muss im JSON-Format gesendet werden.
Dieser Request aktualisiert einen Zugriffsschlüssel für ein MyCoRe-Derivat. Beim Update werden nur Properties berücksichtigt, die in der Anfrage enthalten sind.
{$id} |
analog zu /objects/{$id} |
{$derid} |
analog zu /objects/{$id}/derivates/{$derid} |
{$secret} |
analog zu /objects/{$id}/accesskeys/{$secret} |
{$secret_encoding} |
analog zu /objects/{$id}/accesskeys/{$secret} |
Der Zugriffsschlüssel muss im JSON-Format gesendet werden.
Dieser Request löscht einen Zugriffsschlüssel eines MyCoRe-Derivats.
{$id} |
analog zu /objects/{$id} |
{$derid} |
analog zu /objects/{$id}/derivates/{$derid} |
{$secret} |
analog zu /objects/{$id}/accesskeys/{$secret} |
{$secret_encoding} |
analog zu /objects/{$id}/accesskeys/{$secret} |
Dieser Request listet alle in der Anwendung installierten Klassifikationen auf.
Die Liste kann im XML-Format (default) oder JSON-Format zurückgeliefert werden.
Das Format kann entweder via HTTP-Header (Accept: application/json
bzw. Accept: application/xml
)
oder via URL-Endung (/classifications.xml
bzw. /classifications.json
) definiert werden.
Dieser Request zeigt eine Klassifikation aus der MyCoRe-Anwendung an.
{$classid} | entspricht der ID einer Klassifikation |
Die Liste kann im XML-Format (default) oder JSON-Format zurückgeliefert werden.
Das Format kann entweder via HTTP-Header (Accept: application/json
bzw. Accept: application/xml
)
oder via URL-Endung (/{$classid}.json
bzw. /{$classid}.xml
) definiert werden.
@MCRApiDraft
Eventuell gibt es REST-Klasse/Methoden, die im Zuge der Entwicklung noch nicht stabil für den produktiven Einsatz sind.
Jene können deshalb mit MCRApiDraft
sowie einem Wert annotiert werden und damit explizit de- oder aktiviert werden.
Beispielsweise wird hier die Klasse MCRRestObjects mit dem Wert MCRObjects annotiert:
|
|
Standardmäßig ist eine annotierte Klasse/Methode deaktiviert.
Um eine annotierte Klasse/Methode zu aktiveren, muss die Konfiguration wie folgt um eine MyCoRe-Property mit dem Namen MCR.RestApi.Draft.<Wert>
und true
als Wert erweitert werden:
|
|
Analog kann jene explizit mit false
deaktiviert werden.