docuteam:bridge
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
docuteam:bridge [2020/03/13 09:13] – [Overview] andi | docuteam:bridge [2023/02/06 14:33] (aktuell) – gelöscht Administrator | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== docuteam bridge ====== | ||
- | |||
- | Documentation for docuteam bridge v1.0.0 | ||
- | |||
- | ===== Goal ===== | ||
- | |||
- | Client applications should be able to submit a deposition (a package with data and metadata) to our ingest platform. Depositions are then picked up by docuteam feeder workflows, usually processing and storing the deposition in a preservation repository. After a successful ingest, feeder (and subsequently bridge) return persistent identifiers (PIDs) for every object (file, folder) within the deposition. Using these PIDs, clients are able to access the deposited objects again. | ||
- | |||
- | In the [[https:// | ||
- | * docuteam bridge receives Submission Information Packages (SIP) on its [[docuteam: | ||
- | * The SIPs are processed by [[docuteam: | ||
- | * Client applications retrieve Dissemination Information Packages (DIP) of their originally submitted objects using the [[docuteam: | ||
- | |||
- | {{ : | ||
- | |||
- | |||
- | ===== Overview ===== | ||
- | |||
- | * bridge is a set of REST APIs that usually return a JSON (and binary data) response. | ||
- | * bridge is agnostic to the package format of the deposition, e.g.: | ||
- | * Use the simple, BagIt-based format docuteam dublin core (see [[docuteam: | ||
- | * Use Matterhorn METS (see its [[media=oais: | ||
- | * Use other formats like [[https:// | ||
- | * bridge consists of three APIs: | ||
- | * **[[docuteam: | ||
- | * New depositions are temporarily stored by bridge. They are made available to feeder, which in turn processes and stores them into the repository. | ||
- | * Depositions are identified by bridge IDs. These identifiers are returned with the HTTP response of a new deposition request. | ||
- | * Upon successful archiving in the repository, | ||
- | * the status of the deposition is set to " | ||
- | * persistent identifiers (PIDs) for each of the deposition' | ||
- | * and the SIP is deleted from the depositions as it is now preserved in the repository. | ||
- | * **[[docuteam: | ||
- | * metadata only (data remains unchanged) | ||
- | * data only (metadata remains unchanged) | ||
- | * object (metadata and data are modified) | ||
- | * **[[docuteam: | ||
- | * Gives access to the full DIP corresponding to a deposited SIP. | ||
- | * Gives access to metadata, data or previews of specific repository objects. | ||
- | |||
- | ===== Authentication ===== | ||
- | |||
- | Access is restricted via tokens that must be transmitted with each request using the " | ||
- | |||
- | * An authentication token must be at least 15 characters long. | ||
- | * Tokens are passed using a " | ||
- | |||
- | ===== Roles ===== | ||
- | |||
- | Roles are associated to tokens and limit their scope of operation. | ||
- | |||
- | There are five roles: | ||
- | * The following three roles are limited to a single organization: | ||
- | * **read**: is restricted to the [[docuteam: | ||
- | * **create**: has the same authorizations as read, but can in addition list, create and delete depositions via the [[docuteam: | ||
- | * **manage**: has the same authorizations as create, and can in addition update or purge repository objects via the [[docuteam: | ||
- | * The following two roles have a global scope: | ||
- | * **admin**: authentication and authorization management, i.e. token administration using the API or the GUI | ||
- | * **feeder**: super user, can do anything except token administration, | ||
- | |||
- | ===== Depositions API ===== | ||
- | |||
- | ==== Status Model ==== | ||
- | |||
- | Depositions have one of the following status: | ||
- | * **submitted**: | ||
- | * **queued**: the deposition has been queued for processing by feeder | ||
- | * **processing**: | ||
- | * **archived**: | ||
- | * Persistent identifiers (PIDs) allocated to the deposition' | ||
- | * The originally deposited package has been deleted from bridge. | ||
- | * **error**: something went wrong during the deposition' | ||
- | * **deleted**: | ||
- | |||
- | The deposition status can only be managed directly by the role " | ||
- | |||
- | {{ : | ||
- | |||
- | ==== Routes ==== | ||
- | |||
- | < | ||
- | POST / | ||
- | GET / | ||
- | GET / | ||
- | PUT / | ||
- | </ | ||
- | |||
- | ==== Create ==== | ||
- | Creates a new deposition. | ||
- | |||
- | === Allowed calls === | ||
- | POST / | ||
- | |||
- | === Requirements === | ||
- | Token with role '' | ||
- | |||
- | === Parameters === | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | |||
- | === Examples === | ||
- | < | ||
- | |||
- | ==== Index ==== | ||
- | Lists/shows the existing depositions with details. | ||
- | |||
- | === Allowed calls === | ||
- | GET / | ||
- | |||
- | === Requirements === | ||
- | Token with role '' | ||
- | |||
- | === Parameters === | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | |||
- | === Examples === | ||
- | < | ||
- | curl " | ||
- | curl " | ||
- | curl " | ||
- | curl " | ||
- | curl " | ||
- | |||
- | ==== Show ==== | ||
- | Retrieve the binary content of a deposition. | ||
- | |||
- | === Allowed calls === | ||
- | GET / | ||
- | |||
- | === Requirements === | ||
- | Token with role '' | ||
- | |||
- | === Parameters === | ||
- | * '': | ||
- | * '' | ||
- | |||
- | === Examples === | ||
- | < | ||
- | |||
- | ==== Update ==== | ||
- | Set status and processing details. By setting the status to '' | ||
- | |||
- | === Allowed calls === | ||
- | PUT / | ||
- | |||
- | === Requirements === | ||
- | Token with role '' | ||
- | |||
- | === Parameters === | ||
- | * '': | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | |||
- | === Examples === | ||
- | < | ||
- | curl -X PUT " | ||
- | |||
- | ==== Responses ==== | ||
- | |||
- | Responses are given in JSON or (for the show method) as a binary. Each JSON response is a list of deposition with their details. The generic structure looks like this: | ||
- | |||
- | < | ||
- | { " | ||
- | { " | ||
- | " | ||
- | " | ||
- | [ | ||
- | { " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | } | ||
- | ] | ||
- | " | ||
- | { " | ||
- | " | ||
- | " | ||
- | } | ||
- | </ | ||
- | |||
- | Key elements include: | ||
- | |||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | |||
- | < | ||
- | { " | ||
- | [ | ||
- | { " | ||
- | { " | ||
- | | ||
- | ], | ||
- | " | ||
- | } | ||
- | </ | ||
- | |||
- | It must be noted that: | ||
- | * the '' | ||
- | * the '' | ||
- | |||
- | |||
- | ===== Access API ===== | ||
- | |||
- | This API is a proxy to docuteam rservices. rservices offers high-level access functionality to repository objects. For example, it is able to generate DIPs starting from any level of an archival package and assemble it recursively. Another notable feature is the on-the-fly generation of preview/ | ||
- | |||
- | This access methods retrieve data from the repository, hence expects PIDs (and not bridge internal IDs, as it is the case for the depositions API). | ||
- | |||
- | In version 1.0, bridge is limited to synchronous requests, meaning that the required object is prepared and returned at once. Async/ | ||
- | |||
- | ==== Routes ==== | ||
- | |||
- | < | ||
- | GET / | ||
- | GET / | ||
- | GET / | ||
- | GET / | ||
- | </ | ||
- | |||
- | ==== Metadata ==== | ||
- | Get the EAD metadata of a repository object. | ||
- | |||
- | === Allowed calls === | ||
- | GET / | ||
- | |||
- | === Requirements === | ||
- | Token with role '' | ||
- | |||
- | === Parameters === | ||
- | * '': | ||
- | * '' | ||
- | |||
- | === Examples === | ||
- | < | ||
- | |||
- | ==== Preview ==== | ||
- | Get a preview representation of a repository object. | ||
- | |||
- | === Allowed calls === | ||
- | GET / | ||
- | |||
- | === Requirements === | ||
- | Token with role '' | ||
- | |||
- | === Parameters === | ||
- | * '': | ||
- | * '' | ||
- | |||
- | === Examples === | ||
- | < | ||
- | |||
- | ==== Original ==== | ||
- | Get the original format of a repository object. | ||
- | |||
- | === Allowed calls === | ||
- | GET / | ||
- | |||
- | === Requirements === | ||
- | Token with role '' | ||
- | |||
- | === Parameters === | ||
- | * '': | ||
- | * '' | ||
- | |||
- | === Examples === | ||
- | < | ||
- | |||
- | ==== DIP ==== | ||
- | Get the dissemination package of a repository object, structured according to the Matterhorn METS format. For nested objects, it is possible to receive a package with both binaries and (technical and descriptive) metadata recursively. | ||
- | |||
- | === Allowed calls === | ||
- | GET / | ||
- | |||
- | === Requirements === | ||
- | Token with role '' | ||
- | |||
- | === Parameters === | ||
- | * '': | ||
- | * '' | ||
- | |||
- | === Examples === | ||
- | < | ||
- | curl " | ||
- | |||
- | |||
- | ===== Changes API ===== | ||
- | |||
- | Changes target specific objects in the repository, using their persistent identifier (PID), in order to replace or purge them. Similar to depositions, | ||
- | |||
- | ==== Status Model ==== | ||
- | |||
- | * **submitted**: | ||
- | * **queued**: the change has been queued for processing in feeder | ||
- | * **processing**: | ||
- | * **archived**: | ||
- | * **purged**: the change was successfully processed, i.e. the object was purged from the repository | ||
- | * **error**: something went wrong, see the message in the " | ||
- | * **deleted**: | ||
- | |||
- | {{ : | ||
- | |||
- | |||
- | ==== Routes ==== | ||
- | |||
- | < | ||
- | POST / | ||
- | GET / | ||
- | GET / | ||
- | PUT / | ||
- | </ | ||
- | |||
- | ==== Create ==== | ||
- | Creates a new change. | ||
- | |||
- | === Allowed calls === | ||
- | POST /changes | ||
- | |||
- | === Requirements === | ||
- | Token with role '' | ||
- | |||
- | === Parameters === | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | |||
- | === Examples === | ||
- | < | ||
- | curl -X POST " | ||
- | |||
- | ==== Index ==== | ||
- | Lists the existing changes with details. | ||
- | |||
- | === Allowed calls === | ||
- | GET / | ||
- | |||
- | === Requirements === | ||
- | Token with role '' | ||
- | |||
- | === Parameters === | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | |||
- | === Examples === | ||
- | < | ||
- | curl " | ||
- | curl " | ||
- | curl " | ||
- | curl " | ||
- | curl " | ||
- | |||
- | ==== Show ==== | ||
- | |||
- | Retrieve the binary content of a change. | ||
- | |||
- | === Allowed calls === | ||
- | GET / | ||
- | |||
- | === Requirements === | ||
- | Token with role '' | ||
- | |||
- | === Parameters === | ||
- | * '': | ||
- | * '' | ||
- | |||
- | === Examples === | ||
- | < | ||
- | |||
- | |||
- | ==== Update ==== | ||
- | |||
- | Retrieve the binary content of a change. | ||
- | |||
- | === Allowed calls === | ||
- | PUT / | ||
- | |||
- | === Requirements === | ||
- | Token with role '' | ||
- | |||
- | === Parameters === | ||
- | * '': | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | |||
- | === Examples === | ||
- | < | ||
- | curl -X PUT " | ||
- | |||
- | ==== Responses ==== | ||
- | |||
- | The responses on this API are similar to the [[docuteam: | ||
- | * '' | ||
- | * '' | ||
- | |||
- | Practically, | ||
- | |||
- | < | ||
- | { " | ||
- | { " | ||
- | " | ||
- | " | ||
- | [ | ||
- | { " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | } | ||
- | ] | ||
- | " | ||
- | { " | ||
- | " | ||
- | " | ||
- | } | ||
- | </ | ||
docuteam/bridge.1584087205.txt.gz · Zuletzt geändert: 2020/03/13 09:13 von andi