Versions Compared

Key

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

...

Info

Each of the methods below has specific security requirements. See DuraCloud Security for more information

Warning

Due to an issue which does not properly handle requests redirected from http to https, it is recommended that all REST API requests use https directly.


Tip

Examples calling the API defined below with the Unix utility "curl" can be found here

...

Panel
titleSpace REST Methods

Get Spaces

  • Purpose: Provides a listing of all of the spaces that a customer has created
  • Request: GET https://host:port/durastore/spaces ? (storeID)
  • Response Code: 200 (on success)
  • Response Body: XML similar to:

    Code Block
    languagehtml/xml
    <spaces>
      <space id="space1" />
      <space id="space2" />
    </spaces>
    


Get Space

  • Purpose: Provides a listing of the contents of a space along with space properties
  • Request: GET https://host:port/durastore/spaceID ? (storeID) (prefix) (maxResults) (marker)
    • storeID (optional) - ID of the content storage provider to query (default is primary store)
    • prefix (optional) - Only retrieve content ids with this prefix (default is all content ids)
    • maxResults (optional) - The maximum number of content IDs to return in the list (default is 1000)
      note: the maximum allowable value for maxResults is 1000. Any larger value will be reduced to 1000.
    • marker (optional) - The content ID marking the last item in the previous set (default is the first set of ids)
  • Response Code:
    • 200 (on success)
    • 404 (if the the given space does not exist)
  • Response Body: XML similar to:

    Code Block
    languagehtml/xml
    <space id="space1">
      <item>Image 1</item>
      <item>Image 2</item>
    </space>
    


  • Response Headers: All available space properties, example:

    Code Block
    languagenone
    x-dura-meta-space-count: 65
    x-dura-meta-space-created: 2016-04-14T01:40:47
    


Get Space Properties

  • Purpose: Provides all space properties
  • Request: HEAD https://host:port/durastore/spaceID ? (storeID)
  • Response Code:
    • 200 (on success)
    • 404 (if the the given space does not exist)
  • Response Headers: Same as for Get space (above)
Get

Create Space

ACLs

  • Purpose: Provides all space ACLs, with values of 'r' (read) and 'w' (read/write)Creates a new space
  • Request: HEAD PUT https://host:port/durastore/acl/spaceID ? (storeID)
  • Response Code: 

    • 200

      201 (on success)

    • 404

      400 (if the

      the given space does not exist

      content ID is invalid)

  • Response Headers: All available space ACLsLocation of the new space (i.e. the URL used to create the space), example:

    Code Block
    languagenone
    x-dura-meta-acl-user0: WRITE
    x-dura-meta-acl-user1: WRITE
    x-dura-meta-acl-group-curators: READ
    
Create
  • bash
    Location: https://myhost:8080/durastore/space1


Delete Space

  • Purpose: Creates Deletes a new space
  • Request: PUT DELETE https://host:port/durastore/spaceID ? (storeID)
  • Response Code: 
    • 201 200 (on success)
    • 400 404 (if the content ID is invalidthe given space does not exist)
  • Response Headers: Location of the new space (i.e. the URL used to create the space), example:
    Code Block
    languagebash
    Location: https://myhost:8080/durastore/space1
Set
  • Body: "Space $spaceID deleted successfully" (on success)

Get Space ACLs

  • Purpose: Updates the ACLs associated with a spaceProvides all space ACLs, with values of 'r' (read) and 'w' (read/write)
  • Request: POST HEAD https://host:port/durastore/acl/spaceID ? (storeID)
  • Response Code:
    • 200 (on success)
    • 404 (if the the given space does not exist)
  • Response Headers: All available space ACLs, exampleRequest Headers: For 'user' ACLs the header prefix must be 'x-dura-meta-acl-' and for 'groups' the header prefix must be 'x-dura-meta-acl-group-'. Allowable values for ACL headers are: 'READ' and 'WRITE'.
    Example:

    Code Block
    languagenone
    x-dura-meta-acl-user0: WRITE
    x-dura-meta-acl-user1: WRITE
    x-dura-meta-acl-group-curators: READ
    
  • Response Code:
    • 200 (on success)
    • 404 (if the the given space does not exist)
  • Response Body: "Space $spaceID ACLs updated successfully" (on success)

Delete Space


Set Space ACLs

  • Purpose: Updates the ACLs associated with Purpose: Deletes a space
  • Request: DELETE POST https://host:port/durastore/acl/spaceID ? (storeID)
  • Response Code:
    • 200 (on success)
    • 404 (if the the given space does not exist)
  • Response Body: "Space $spaceID deleted successfully" (on success)
  • Request Headers: For 'user' ACLs the header prefix must be 'x-dura-meta-acl-' and for 'groups' the header prefix must be 'x-dura-meta-acl-group-'. Allowable values for ACL headers are: 'READ' and 'WRITE'.
    Example:

    Code Block
    languagenone
    x-dura-meta-acl-user0: WRITE
    x-dura-meta-acl-user1: WRITE
    x-dura-meta-acl-group-curators: READ
    


  • Response Code:
    • 200 (on success)
    • 404 (if the the given space does not exist)
  • Response Body: "Space $spaceID ACLs updated successfully" (on success)


Panel
titleContent REST Methods

Get Content

  • Purpose: Retrieves a piece of content along with its properties
Panel
titleContent REST Methods

Get Content

  • Purpose: Retrieves a piece of content along with its properties
  • Request: GET https://host:port/durastore/spaceID/contentID ? (storeID) (attachment)
    • if attachment param value is true, a Content-Disposition header is included with the response
  • Response Code: 200 (on success)
  • Response Body: The content stream
  • Response Headers: All available content properties, example:

    Code Block
    languagenone
    Content-Type: text/plain
    Content-Length: 5732
    Content-MD5: 3456709234785097473839202
    ETag: 3456709234785097473839202
    x-dura-meta-content-name: Testing Content
    x-dura-meta-content-owner: JSmith
    


Get Content Properties

  • Purpose: Retrieves the properties of a piece of content without the content itself
  • Request: HEAD https://host:port/durastore/spaceID/contentID ? (storeID)
  • Response Code: 200 (on success)
  • Response Headers: Same as Get content (above)

Store Content

  • Purpose: Adds a piece of content to the store
  • Request: PUT https://host:port/durastore/spaceID/contentID ? (storeID)
  • Request Body: Content to be added
  • Request Headers: Properties about the content, example:

    Code Block
    languagenone
    Content-Type: text/plain
    Content-MD5: 4cd56e137a93a1accb43c5d32f4afffb
    x-dura-meta-content-name: Testing Content
    x-dura-meta-content-owner: JSmith
    


  • Response Code:
    • 201 (on success)
    • 400 (if the content ID is invalid)
    • 404 (if the the given space does not exist)
    • 409 (if the provided checksum did not match the stored content checksum)
    • 500 (on error)
  • Response Headers:
    • MD5 checksum of stored content
    • ETag of stored content
    • Location of the new content (i.e. the URL used to create the content), example:

      Code Block
      languagebash
      Content-MD5: 4cd56e137a93a1accb43c5d32f4afffb
      ETag: 4cd56e137a93a1accb43c5d32f4afffb
      Location: https://myhost:8080/durastore/space1/content1
      


  • Usage Notes
    • When the optional Content-MD5 header is included, the final checksum of the stored file is compared against the MD5 value included in the header to ensure that the file was stored correctly. If the header is not included, an MD5 checksum is computed as the file is transferred to storage, and that value is used in the final comparison.
    • All properties to be set must be included as a request header with the prefix "x-dura-meta-". Any header using the "x-dura-meta-" prefix will be stored as a content property, with a few exceptions, which are used for specific other purposes:
      • Headers used as part of the Copy Content request

        Code Block
        x-dura-meta-copy-source
        x-dura-meta-copy-source-store


      • Headers used to provide details about a space

        Code Block
        x-dura-meta-space-count
        x-dura-meta-space-created


      • Headers used as part of the Set Space ACLs call (the * is replaced by the user or group name)

        Code Block
        x-dura-meta-acl-*
        x-dura-meta-acl-group-*


      • Headers used internal to DuraCloud

        Code Block
        x-dura-meta-content-mimetype (set Content-Type header instead)
        x-dura-meta-content-size (automatically written as Content-Length header)
        x-dura-meta-content-checksum (automatically written as Content-MD5 header)
        x-dura-meta-content-modified (automatically written as Last-Modified header)


      • Headers used by the DuraCloud SyncTool to automatically capture file details

        Code Block
        x-dura-meta-creator
        x-dura-meta-content-file-created
        x-dura-meta-content-file-modified
        x-dura-meta-content-file-last-accessed
        x-dura-meta-content-file-path


    • Use only US-ASCII characters for property names and values

    • There is a 2 KB total size limit on all content properties (this includes both auto-generated and user contributed properties.)

    • The "x-dura-meta-" prefix is case-sensitive (make sure your clients do not automatically change case.)

Copy Content

  • Purpose: Copies a piece of content from a source space to a destination space within a given store
  • Request: PUT https://host:port/durastore/spaceID/contentID ? (storeID)
  • Request Body: must not exist
  • Request Headers: Copy source, example:

    Code Block
    languagenone
    x-dura-meta-copy-source: space-id/content-id
    


  • Optional Request Headers: Copy source store, example:

    Code Block
    languagenone
    x-dura-meta-copy-source-store: storeId
    


  • Response Code: 201 (on success)
  • Response Headers:
    • MD5 checksum of stored content
    • ETag of stored content
    • Location of the new content (i.e. the URL used to create the content), example:

      Code Block
      languagebash
      Content-MD5: 4cd56e137a93a1accb43c5d32f4afffb
      ETag: 4cd56e137a93a1accb43c5d32f4afffb
      Location: https://myhost:8080/durastore/space1/content1
      


  • Usage Notes
    • The properties associated with the source content item are copied to the destination content item.
    • The source and destination spaces may be the same.
    • Including the optional header indicates that the copy action should retrieve the source file from a space in the specified storage provider. This allows for copying a file from one storage provider to another.

Set Content Properties

  • Purpose: Updates the properties associated with a piece of content. Note: You must include ALL properties you would like associated with the given content item in this call. Any properties that exist before this call but are not included in the call itself will be removed. This is to allow for both adding and removing properties.
  • Request: POST https://host:port/durastore/spaceID/contentID ? (storeID)
  • Request Headers: Same as Store content (above)
  • Response Code: 200 (on success)
  • Response Body: "Content $contentID updated successfully"

Delete Content

  • Purpose: Removes a piece of content from the store
  • Request: DELETE https://host:port/durastore/spaceID/contentID ? (storeID)
  • Response Code: 200 (on success)
  • Response Body: "Content $contentID deleted successfully"
  • store
  • Request: DELETE https://host:port/durastore/spaceID/contentID ? (storeID)
  • Response Code: 200 (on success)
  • Response Body: "Content $contentID deleted successfully"


Panel
titleAudit Log REST Methods

Get Audit Log

  • Purpose: Returns the latest audit for a given store and space
  • Request: GET https://host:port/durastore/audit/{spaceId} ? (storeID)
    • spaceID - ID of the space for which the audit log will be retrieved
    • storeID (optional) - ID of the content storage provider to query (default is primary store)
  • Response Code: 200 (on success), 404 if audit logs were not found.
  • Response Body: TSV in chronological order with the following fields.

    Code Block
    xml
    xml
    ACCOUNT	STORE_ID	SPACE_ID	CONTENT_ID	CONTENT_MD5	CONTENT_SIZE	CONTENT_MIMETYPE	CONTENT_PROPERTIES	SPACE_ACLS	SOURCE_SPACE_ID	SOURCE_CONTENT_ID	TIMESTAMP	ACTION	USERNAME
    mysubdomain	51	myspace	image-01.jpg	b1978f9fc4fe9448e05b83bbe6b98109	81214	image/jpeg	{"content-mimetype" : "image/jpeg"}		{}		2014-09-10T15:54:42.042	ADD_CONTENT	root



Panel
titleManifest REST Methods

Get Manifest

  • Purpose: Returns the manifest for a given space and storeId
Panel
titleAudit Log REST Methods

Get Audit Log

  • Purpose: Returns the latest audit for a given store and space
  • Request: GET https://host:port/durastore/auditmanifest/{spaceId} ? (storeID) (format)
    • spaceID - ID of the space for which the audit log manifest will be retrieved
    • storeID (optional) - ID of the content storage provider to query (default is primary store)
    • format (optional) - TSV or BAGIT (default is TSV)
  • Response Code: 200 (on success), 404 if

    audit logs were

    manifest was not found.

  • Response Body: TSV in chronological order with the following fields.

    Code Block
    xml
    titlexml
    ACCOUNT	STORE_ID	SPACE_ID	CONTENT_ID	CONTENT_MD5	CONTENT_SIZE	CONTENT_MIMETYPE	CONTENT_PROPERTIES	SPACE_ACLS	SOURCE_SPACE_ID	SOURCE_CONTENT_ID	TIMESTAMP	ACTION	USERNAME
    mysubdomain	51	myspace	image-01.jpg	b1978f9fc4fe9448e05b83bbe6b98109	81214	image/jpeg	{"content-mimetype" : "image/jpeg"}		{}		2014-09-10T15:54:42.042	ADD_CONTENT	root
Panel
titleManifest REST Methods
  • TSV results
    space-id	content-id	MD5
    auditlogs	localhost/51/auditlogs/localhost_51_auditlogs-2014-09-10-15-56-07.tsv	6992f8e57dafb17335f766aa2acf5942
    auditlogs	localhost/51/photos/localhost_51_photos-2014-09-10-15-55-01.tsv	820e786633fb495db447dc5d5cf0b2bd


Generate Manifest

  • Purpose: Asynchronously generates a gzipped

Get Manifest

  • Purpose: Returns the manifest for a given space and storeId. This approach may be preferable if you wish to obtain a manifest for a larger space. We recommend considering this option for spaces that are larger than 100K items.
  • Request: GET POST https://host:port/durastore/manifest/{spaceId} ? (storeID) (format)
    • spaceID - ID of the space for which the manifest will be retrievedgenerated
    • storeID (optional) - ID of the content storage provider to query (default is primary store)
    • format (optional) - TSV or BAGIT (default is TSV)
  • Response Code: 200 202 (on success), 404 if manifest was not found.

  • Response Body: We are processing your manifest generation request. To retrieve your file, please poll the URI in the Location header of this response

  • Response Body: TSV in chronological order with the following fields.Headers:

    Code Block
    titleTSV results
    space-id	content-id	MD5
    auditlogs	localhost/51/auditlogs/localhost_51_auditlogs-2014-09-10-15-56-07.tsv	6992f8e57dafb17335f766aa2acf5942
    auditlogs	localhost/51/photos/localhost_51_photos-2014-09-10-15-55-01.tsv	820e786633fb495db447dc5d5cf0b2bd
    
    Location: <URI-of-generated-manifest>




Panel
titleStorage Report REST Methods

Get Storage Reports by Space

  • Purpose: Returns storage report summaries for a space. Report values are averaged based on the grouping internal (if groupBy=month, all data points within each month are averaged to provide an aggregate result).
  • Request: GET https://host:port/durastore/report/space/{spaceId} ? (storeID) (start) (end) (groupBy)
    • spaceID - ID of the space for which the storage report will be retrieved
    • storeID (optional) - ID of the content storage provider to query (default is primary store)
    • start (optional) - Timestamp in epoch milliseconds which defines the starting point for results. Any data points which are prior to this value are not included.
    • end (optional) - Timestamp in epoch milliseconds which defines the end point for results. Any data points which are after this value are not included.
      • usage note: To ensure that all expected data points are included, set the end timestamp to the very end of the final interval (e.g. 23:59:59 on the last day of the week/month)
    • groupBy (optional) - Grouping interval which allows for averaged results for days, weeks, and months. Valid values are: "day", "week", and "month" (default is day)
  • Response Code: 200 (on success)

  • Response Body: JSON array of storage report details

    Code Block
    titleJSON results
    [
      {"timestamp":1312588800000,"accountId":"<account-id>","spaceId":"<space-id>","storeId":"<store-id>","byteCount":1000,"objectCount":10},
      {"timestamp":1315008000000,"accountId":"<account-id>","spaceId":"<space-id>","storeId":"<store-id>","byteCount":1000,"objectCount":10},
      {"timestamp":1315526400000,"accountId":"<account-id>","spaceId":"<space-id>","storeId":"<store-id>","byteCount":1000,"objectCount":10}
    ]


Get Storage Reports by Store

  • Purpose: Returns storage report summaries for all content in a storage provider. Report values are averaged based on the grouping internal (if groupBy=month, all data points within each month are averaged to provide an aggregate result).
  • Request: GET https://host:port/durastore/report/store ? (storeID) (start) (end) (groupBy)
    • storeID (optional) - ID of the content storage provider to query (default is primary store)
    • start (optional) - Timestamp in epoch milliseconds which defines the starting point for results. Any data points which are prior to this value are not included.
    • end (optional) - Timestamp in epoch milliseconds which defines the end point for results. Any data points which are after this value are not included.
      • usage note: To ensure that all expected data points are included, set the end timestamp to the very end of the final interval (e.g. 23:59:59 on the last day of the week/month)
    • groupBy (optional) - Grouping interval which allows for averaged results for days, weeks, and months. Valid values are: "day", "week", and "month" (default is day)
  • Response Code: 200 (on success)

  • Response Body: JSON array of storage report details

    Code Block
    titleJSON results
    [
      {"timestamp":1312588800000,"accountId":"<account-id>","storeId":"<store-id>","byteCount":1000,"objectCount":10},
      {"timestamp":1315008000000,"accountId":"<account-id>","storeId":"<store-id>","byteCount":1000,"objectCount":10},
      {"timestamp":1315526400000,"accountId":"<account-id>","storeId":"<store-id>","byteCount":1000,"objectCount":10}
    ]


Get Storage Reports for all Spaces in a Store (in a single day)

  • Purpose: Returns storage report summaries for all spaces in a storage provider on a single day.
  • Request: GET https://host:port/durastore/report/store/{date} ? (storeID)
    • date - Timestamp in epoch milliseconds which specifies the requested day
    • storeID (optional) - ID of the content storage provider to query (default is primary store)
  • Response Code: 200 (on success)

  • Response Body: JSON array of storage report details

    Code Block
    titleJSON results
    [
      {"timestamp":1312588800000,"accountId":"<account-id>","spaceId":"<space-id-1>","storeId":"<store-id>","byteCount":1000,"objectCount":10},
      {"timestamp":1315008000000,"accountId":"<account-id>","spaceId":"<space-id-2>","storeId":"<store-id>","byteCount":1000,"objectCount":10},
      {"timestamp":1315526400000,"accountId":"<account-id>","spaceId":"<space-id-3>","storeId":"<store-id>","byteCount":1000,"objectCount":10}
    ]


...