Skip to content

Adding Objects

Eric Lopatin edited this page Mar 4, 2023 · 15 revisions

You may submit digital objects to Merritt several different ways, based on what’s easiest for your local workflow:

  • Merritt User Interface: directly submit digital objects, either one-by-one or in batches, using the Merritt web interface.
  • Merritt API: programmatically submit digital objects either one-by-one or in batches using the Merritt API.

Submitting Objects through the Merritt User Interface

The Add Object screen allows you to submit digital objects one-by-one or in batches. Single objects can be uploaded directly from your local drive. We recommend that objects uploaded in this manner be less than 30GB each in size. Batches must be submitted via a manifest file, which you prepare and upload from your local drive. Individual manifest (.checkm) files should not exceed 5MB.

Merritt Add Object Screen

The following is a brief description of the options for adding objects. For any option involving a manifest, consult the detailed Manifest guide.

  • Single object: file
    Upload a single file from a local drive.
  • Single object: container
    Upload a .zip or .tar file from your local drive. This container file may contain any number of component files or associated metadata files for a single object.
  • Single object: manifest
    As an alternative to wrapping a multi-file object in a .zip or .tar file, you can also create a .checkm format text manifest to upload the object. You will need to post all component files for the object on a web server, then upload a manifest file that points to the object components. This option allows you to provide and validate checksum information for each file in an object. Details are provided in the Using a Manifest guide.
  • Batch: of files
    Use this option when you have a long list of simple objects to add. This option requires use of a manifest file. You can provide metadata for each object in the manifest.
  • Batch: of containers
    Use this option when you have many complex objects to add and you have enclosed each object in a .zip or .tar file. This option requires use of a manifest file.
  • Batch: of object manifests
    Use this option if you have prepared object manifests for a large number of objects.
IF YOU HAVE: THE BEST SUBMISSION OPTION IS:
Just a few simple objects, each consisting of a single file Upload directly from the Add Objects page
Just a few complex objects, each consisting of multiple files (these may include metadata files Create a container file (.zip or .tar) for each object, then upload each one directly from the Add Object page. When you upload a .zip or .tar file, the object's component files will be extracted and made accessible through the Display Object and Display Version pages.
OR
Create an object manifest file, then upload the manifest from the Add Object page. When you use an object manifest, every component file must be posted on a web server; the manifest must include each file's URL.
A large number of either simple or complex objects Create a batch manifest file, then upload that file from the Add Object page.

A batch manifest can point to either single-file simple objects, container files, or to object manifest files--but not to all three. If you have all of these, you will need to create three manifests--one for each type of object.

All of the files in your manifest must be posted on a web server; the manifest must include each file's URL.

When you add an object you will receive a confirmation screen with a batch ID number. This screen confirms that the object has been submitted, but does not yet confirm that the object has been successfully ingested. Merritt takes a number of steps (such as fixity checking) before an object is ingested. In most cases it will take a couple of minutes before the object will be retrieved from a search and displayed.

You will receive an email with a confirmation when the object has either succeeded or failed the ingest process. Any error details will be provided in the email message; you can contact [email protected] if you have any questions.

Merritt allows you to provide title, creator, date and local identifier metadata either by filling out the Optional Description form, by providing metadata in a manifest file, or by submitting an mrt-erc.txt file with the object. The metadata you provide becomes searchable in Merritt; we strongly recommend that you provide at least title information. Further details are in the Merritt and Metadata guide.

Submitting Objects through the Merritt API

You can programmatically submit digital objects one-by-one or in batches, using our API. As described in the Ingest specification document, the request arguments are:

  • filename
    (optional) The name of the file
  • file
    The file itself (e.g., the single file; or the container file, such as a .zip or .tar file). If submitting a manifest, indicate the .checkm format text manifest file here.; consult the detailed Manifest guide for additional information on preparing the manifest
  • type
    Valid values:
    • file
    • container
    • object-manifest
    • batch-manifest
    • mrt-container-batch-manifest
    • single-file-batch-manifest
  • profile
    The submission profile, which we will provide to the submitter
  • primaryIdentifier
    (optional) ARK identifier, if known
  • localIdentifier
    (optional) local identifier, if known
  • digestType
    (optional) valid values:
    • adler-32
    • crc-32
    • md2
    • md5
    • sha-1
    • sha-256
    • sha-384
    • sha-512
  • digestValue
    (optional) digest value, hex-encoded string
  • creator
    (optional) creator
  • title
    (optional) title
  • date
    (optional) date
  • note
    (optional) descriptive note
  • responseForm
    (optional) valid values:
    • anvl
    • csv
    • json
    • turtle
    • xhtml
    • xml

API Examples Using curl

All of the enumerated values (file type, digest type, response form) are case-insensitive. Sample cURL:

curl --silent -u user:password \
-F "file=@ucsf_etd_200609.checkm" \
-F "type=container-batch-manifest" \
-F "submitter=username" \
-F "responseForm=xml" \
-F "profile=merritt_demo_content" \
https: //merritt-stage.cdlib.org/object/ingest

Merritt Stage Examples

These examples require access to the Demo collection on the Merritt staging environment.

NB: The "profile" entry is composed of the end of the collection home page URL (in this case 'merritt_demo') followed by the string '_content'. Addition of the '_content' convention holds true for any collection you wish to submit new content to.

Submit a new, single-file object to the Merritt Demo collection:

curl --verbose -u username:password \
-H "Accept: application/json" \
-F "file=@/path/to/file/including/file/name" \
-F "type=file" \
-F "submitter=username" \
-F "title=Title metadata that you wish to add" \
-F "creator=Creator name" \
-F "responseForm=xml" \
-F "profile=merritt_demo_content" \
https://merritt-stage.cdlib.org/object/update

Submit a new object to the Merritt Demo collection (multiple files in a zip container):

curl --verbose -u username:password \
-H "Accept: application/json" \
-F "file=@/path/to/container/including/file/name" \
-F "type=container" \
-F "submitter=username" \
-F "title=Title metadata that you wish to add" \
-F "creator=Creator name" \
-F "responseForm=xml" \
-F "profile=merritt_demo_content" \
https://merritt-stage.cdlib.org/object/update

Update an object in the Merritt Demo collection with an additional file:

curl --verbose -u username:password \
-H "Accept: application/json" \
-F "file=@/path/to/file/including/file/name" \
-F "type=file" \
-F "submitter=username" \
-F "title=Title metadata that you wish to add" \
-F "creator=Creator name" \
-F "responseForm=xml" \
-F "date=2020-09-28" \
-F "localIdentifier=A local id string you wish to add" \
-F "primaryIdentifier=ark:/99999/xxxxxxxxxx" \
-F "profile=merritt_demo_content" \
https://merritt-stage.cdlib.org/object/update

Update an object in the Merritt Demo collection with an additional zip container:

curl --verbose -u username:password \
-H "Accept: application/json" \
-F "file=@/path/to/container/file/including/file/name" \
-F "type=container" \
-F "submitter=username" \
-F "title=Title metadata that you wish to add" \
-F "creator=Creator name" \
-F "responseForm=xml" \
-F "date=2020-09-28" \
-F "localIdentifier=A local id string you wish to add" \
-F "primaryIdentifier=ark:/99999/xxxxxxxxxx" \
-F "profile=merritt_demo_content" \
https://merritt-stage.cdlib.org/object/update