Deposit Services
Last updated
Last updated
Deposit Services (DS) facilitates the transfer of custodial content and metadata from end users to repositories, ensuring proper packaging, validation, and adherence to public specifications. The code for DS can be found in the Pass Support repository.
Deposit Services are responsible for the transfer of custodial content and metadata from end users to repositories. End users transfer custody of their content to PASS by performing a submission through the HTML user interface, and Deposit Services subsequently transfers the custody of content to downstream repositories.
Custody transfer goes beyond the successful transfer of bytes. The package content may be validated (accepted or rejected) by the downstream repository, and this validation may occur asynchronously with respect to the transfer of bytes. Material consisting of one or more files from the end user submission is sent to the downstream repository in a single file known as the "package".
A package can be thought of as a zip file containing user submitted files plus metadata generated by DS. Public specifications govern the structure of the zip file and the kind of metadata provided:
BagIT
DSpace METS
NIHMS bulk submission spec
In the context of documenting inputs and outputs, DS uses the public PASS model as input and output, and produces a package which adheres to a public specification and downstream repository requirements. The internal Deposit Service Model described below is never persisted, serialized, or provided to a caller. It is entirely internal to the Deposit Service.
DS is a backend service component in PASS written in the Java language and using the Spring Boot framework. It has no user-facing elements. DS reacts asynchronously to SubmissionMessage
and DepositMessages
messages emitted by the Pass-Core component.
Listener waits for "Submission Complete" message. Invokes the Builder.
Builder retrieves Submission and metadata from the Archive, instantiates internal Deposit Services model.
Listener invokes the Assembler. The Assembler:
Determines archive format (tar.gz, zip)
Builds content manifest for the archive
Uses a package provider to create the content stream
Package Provider adds package-specific metadata according to downstream repository requirements.
Transport is selected, establishes a session with remote archive, and streams the package.
Later, a Deposit Status Processor (not shown) will update the Deposit status, confirming custody transfer. The Deposit Status Processor is optional.
In this guide we step through various topics on Deposit Services:
Technical Deep Dive