Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The preservation Gateway functions as an aggregating cache for preservation requests originating with a repository and destined for a DDP via the OTM Bridge. This allows repositories to synchronously send contentpreservation in an asynchronous deep archive.

Repository Gateway API

GET / (service description)

Description

Retrieve

Requests/Responses

  • Request: GET / HTTP/1.1

  • Request Body: n/a
  • Request Headers:
    • Accept
  • Response Codes:

    • 200 OK

  • Response Body:

    Code Block
    languagejs
    titleJSON response body
    {
      version: 0.1
      storage_classes: [{
        name: ddp1_name
      },
      {
        name: ddp2_name
      }]
    }


PUT Object (deposit)

Description

Create or update a gateway object for preservation of an Object from the repository.

Requests/Responses

  • Request: PUT /ObjectId HTTP/1.1

  • Request Body: Compressed Bag
  • Request Headers:
    • Content-Type
    • Content-Length
    • x-duraspace-storage-class (DDP target(s) for preservation)
  • Response Codes:

    • 201 Created (on success)

    • 200 OK  (on success; update)
  • Response Headers:
    • ETag

...

Info

Write up something about ObjectID semantics and repository reconstruction.

GET Object Audit

Description

Retrieve audit metadata for the object.

Requests/Responses

  • Request: GET /ObjectId/audit HTTP/1.1

  • Request Body: n/a
  • Response Code: 200 OK
  • Response Body:

    Code Block
    languagejs
    titleJSON response body
    {
      ddp_name: {
        preserved: true
        destroy_requested: true
      }
    }


DELETE Object (destroy)

Description

Request removal of an Object and all its contents from the archive

Requests/Responses

  • Request: DELETE /ObjectId HTTP/1.1

  • Request Body: n/a
  • Response Codes:
    • 204 No Content

...

Code Block
titleResponse
HTTP/1.1 204 NoContent
Date: Tue, 02 Jul 2019 20:25:00 GMT
Content-Length: 0
Server: OTM Preservation Gateway

POST Object Restore

Description

Request restore of a Bag Object and all its contents for later retrieval

Requests/Responses

  • Request: POST /ObjectId?restore HTTP/1.1

  • Request Body: n/a
  • Response Code:
    • 202 Accepted (if the object is not already restored)
    • 200 OK (if the object is already restored and available for retrieval)

...

Info
titleQuestion

Can HTTP Range requests be used to retrieve individual files (e.g. metadata)

GET Object (retrieve)

Description

Retrieve a restored object.

Requests/Responses

  • Request: GET /ObjectId HTTP/1.1

  • Request Body: n/a
  • Request Headers
    • If-Match
    • If-None-Match
    • Accept (question)
  • Response Code:
    • 200 OK (if the object is available)
    • 403 Forbidden (if the object has not been restored)

    • 412 PreconditionFailed 

  • Response Body: Compressed bag
  • Response Headers:
    • Content-Type
    • ETag

...

Bridge Interactions

GET File (transfer)

Description

Transfer a cached file. This endpoint allows a Bridge to pull content for storage in a preservation service.

Requests/Responses

  • Request: GET /ObjectId/fileName HTTP/1.1
  • Request Headers
    • If-Match (checksum)
  • Response Code:
    • 200 OK (if the file is available)
    • 404 NotFound (if the file is not present)

    • 412 PreconditionFailed (if no version of the file is present matching the If-Match checksum)
  • Response Body: file contents
  • Response Headers:
    • Content-Type
    • ETag

...