Versions Compared

Key

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

...

Panel
titleSecurity Initialization REST Methods

Initialize Security Users

  • Purpose: Allows the initialization of authorized users
  • Request:
    • POST https://host:port/durastore/security
    • POST https://host:port/duraservice/security
    • POST https://host:port/duradmin/security
    • POST https://host:port/durareport/security
  • Request Body: XML similar to:

    Code Block
    xml
    xml
    <?xml version="1.0" encoding="UTF-8"?>
    <dur:security-users schemaVersion="0.2" xmlns:dur="duracloud.org">
      <security-user>
        <username>username-0</username>
        <password>password-0</password>
        <enabled>true</enabled>
        <accountNonExpired>true</accountNonExpired>
        <credentialsNonExpired>true</credentialsNonExpired>
        <accountNonLocked>true</accountNonLocked>
        <grantedAuthorities>ROLE_USER</grantedAuthorities>
      </security-user>
      <security-user>
        <username>username-1</username>
        <password>password-1</password>
        <enabled>false</enabled>
        <accountNonExpired>false</accountNonExpired>
        <credentialsNonExpired>false</credentialsNonExpired>
        <accountNonLocked>false</accountNonLocked>
        <grantedAuthorities>ROLE_USER ROLE_ADMIN</grantedAuthorities>
      </security-user>
    </dur:security-users>
    
  • Response Code: 200 (on success)
  • Response Body: "Initialization Successful" (on success)

...

Panel
titleInitialization REST Methods

Initialize Stores

  • Purpose: Allows the initialization of storage provider accounts
  • Request: POST https://host:port/durastore/init
  • Request Body: XML similar to:

    Code Block
    xml
    xml
    <storageProviderAccounts>
      <storageAcct ownerId='0' isPrimary='true'>
        <id>1</id>
        <storageProviderType>AMAZON_S3</storageProviderType>
        <storageProviderCredential>
          <username>username</username>
          <password>password</password>
        </storageProviderCredential>
      </storageAcct>
    </storageProviderAccounts>
    
  • Response Code: 200 (on success)
  • Response Body: "Initialization Successful" (on success)

Is Initialized

  • Purpose: Performs a check to determine if the DuraStore application has been initialized
  • Request: GET https://host:port/durastore/init
  • Response Code: 200 (if the application has been initialized), 503 (if the application has NOT been initialized)
  • Response Body: Text indicating whether initialization has occurred.
Panel
titleStore REST Methods

Get Stores

  • Purpose: Provides a listing of available storage providers accounts (without credentials)
  • Request: GET https://host:port/durastore/stores
  • Parameters: None
  • Response Code: 200 (on success)
  • Response Body: XML similar to:

    Code Block
    xml
    xml
    <storageProviderAccounts>
      <storageAcct isPrimary='true'>
        <id>1</id>
        <storageProviderType>AMAZON_S3</storageProviderType>
      </storageAcct>
      <storageAcct isPrimary="false">
        <id>2</id>
        <storageProviderType>RACKSPACE</storageProviderType>
      </storageAcct>
    </storageProviderAccounts>
    
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
    <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)
  • Response Body: XML similar to:

    Code Block
    <space id="space1">
      <item>Image 1</item>
      <item>Image 2</item>
    </space>
    
  • Response Headers: All available space properties, example:

    Code Block
    x-dura-meta-space-count: 65
    x-dura-meta-space-access: OPEN
    x-dura-meta-space-created: Mon, 01 Jan 2000 08:00:00 EST
    x-dura-meta-custom-property: Custom Property Value
    

Get Space Properties

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

Get Space ACLs

  • Purpose: Provides all space ACLs, with values of 'r' (read) and 'w' (read/write)
  • Request: HEAD https://host:port/durastore/acl/spaceID ? (storeID)
  • Response Code: 200 (on success)
  • Response Headers: All available space ACLs, example:

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

Create Space

  • Purpose: Creates a new space
  • Request: PUT https://host:port/durastore/spaceID ? (storeID)
  • Request Headers: Properties about the space, example:

    Code Block
    x-dura-meta-space-access: OPEN
    x-dura-meta-custom-property: Custom Property Value
    
  • Response Code: 201 (on success)
  • Response Headers: Location of the new space (i.e. the URL used to create the space), example:

    Code Block
      Location: https://myhost:8080/durastore/space1
    

Set Space Properties

  • Purpose: Updates the properties associated with a space
  • Request: POST https://host:port/durastore/spaceID ? (storeID)
  • Request Headers: Same as Create space (above)
  • Response Code: 200 (on success)
  • Response Body: "Space $spaceID updated successfully" (on success)

Set Space ACLs

  • Purpose: Updates the ACLs associated with a space
  • Request: POST https://host:port/durastore/acl/spaceID ? (storeID)
  • 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
    x-dura-meta-acl-user0: WRITE
    x-dura-meta-acl-user1: WRITE
    x-dura-meta-acl-group-curators: READ
    
  • Response Code: 200 (on success)
  • Response Body: "Space $spaceID ACLs updated successfully" (on success)

Delete Space

  • Purpose: Deletes a space
  • Request: DELETE https://host:port/durastore/spaceID ? (storeID)
  • Response Code: 200 (on success)
  • Response Body: "Space $spaceID deleted successfully" (on success)
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
    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
    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)
  • 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
      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.

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
    x-dura-meta-copy-source: space-id/content-id
    
  • Optional Request Headers: Copy source store, example:

    Code Block
    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
      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
  • 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"

...