This documentation space is deprecated. Please make all updates to DuraCloud documentation on the live DuraCloud documentation space.

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 59 Next »

DuraCloud REST API methods:

Notes

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

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.

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

All Applications

Security 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:

    <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)

DuraStore

Purpose: DuraStore is the application through which DuraCloud manages storage. The DuraStore REST API provides access to storage by mediating the underlying storage provider APIs to allow access to multiple cloud storage options through a single API.

Initialization REST Methods

Initialize Stores

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

    <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.
Store 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:

    <storageProviderAccounts>
      <storageAcct isPrimary='true'>
        <id>1</id>
        <storageProviderType>AMAZON_S3</storageProviderType>
      </storageAcct>
      <storageAcct isPrimary="false">
        <id>2</id>
        <storageProviderType>RACKSPACE</storageProviderType>
      </storageAcct>
    </storageProviderAccounts>
    
Space 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:

    <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:

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

    x-dura-meta-space-count: 65
    x-dura-meta-space-created: Mon, 01 Jan 2000 08:00:00 EST
    

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:

    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)
  • Response Code: 201 (on success)

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

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

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:

    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)
Content 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:

    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:

    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:

      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:

    x-dura-meta-copy-source: space-id/content-id
    
  • Optional Request Headers: Copy source store, example:

    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:

      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"
Task REST Methods

Tasks are used to perform storage provider actions which cannot be performed in a generic manner across multiple providers.

Get Tasks

  • Purpose: Provides a listing of all of the supported tasks for a given provider. Note that if no storeID parameter is included, the task listing is provided for the primary storage provider.
  • Request: GET https://host:port/durastore/task ? (storeID)
  • Response Code: 200 (on success)
  • Response Body: XML similar to:

    <list>
      <string>task1</string>
      <string>task2</string>
    </list>
    

Perform Task

  • Purpose: Performs a particular task. Note that most tasks can be performed by only one storage provider type.
  • Request: POST https://host:port/durastore/task/taskName ? (storeID)
  • Request Body: Parameters for task. Each task will expect parameters in a specific format, see task listing for more details.
  • Response Code: 200 (on success)
  • Response Body: Response value for task, format varies by task.
Tasks

taskName

Storage Provider

Name

Description

Request Body

Response Body

enable-streaming

Amazon S3

Enable Streaming task

Enables RTMP streaming for all files within a DuraCloud space through the use of Amazon's Cloudfront streaming capability. This task may take up to 15 minutes to complete.

Name of the space for which streaming is to be enabled

Text indicating the results of the task, including the streaming host

disable-streaming

Amazon S3

Disable Streaming task

Disables streaming by removing the ability for Cloudfront to access files within a space. This does not remove the streaming distribution, only disables its use, so enabling streaming on the same space again can be performed much more quickly. Some content in the space may continue to be available for streaming up to 24 hours after streaming has been disabled.

Name of the space for which streaming is to be disabled

Text indicating the results of the task

delete-streaming

Amazon S3

Delete Streaming task

Removes a streaming distribution created by the enable-streaming task. This task should be performed after performing the disable-streaming task. This task may take up to 15 minutes to complete, after which no content in the space will be available for streaming.

Name of the space for which streaming is to be deleted

Text indicating the results of the task

noop

Amazon S3

Test task

Provides a simple way to test the calling of tasks

Body content is ignored

Text indicating successful task completion

restore-contentAmazon GlacierRestore Content taskProvides the capability to request that specific content items stored in Glacier be retrieved. Content items which are retrieved are made available 3-5 hours after this request is made, and remains available for 2 weeks.Name of the space and the content item in the form: spaceID/contentIDText indicating that a restore action has been initiated (or that a restore is already in progress, in the case of duplicate requests.)

DurAdmin

Purpose: DurAdmin is the user-facing application through which DuraCloud exposes DuraStore and DuraService functionality. The DurAdmin REST API provides the means by which DurAdmin is initialized.

Initialization REST Methods

Initialize Application

  • Purpose: Allows the initialization of duradmin
  • Request: POST https://host:port/duradmin/init
  • Request Body: XML similar to:

    <duradminConfig>
      <durastoreHost>[host]</durastoreHost>
      <durastorePort>[port]</durastorePort>
      <durastoreContext>durastore</durastoreContext>
      <duraserviceHost>[host]</duraserviceHost>
      <duraservicePort>[port]</duraservicePort>
      <duraserviceContext>duraservice</duraserviceContext>
    </duradminConfig>
    
  • Response Code: 200 (on success)
  • Response Body: "Initialization Successful" (on success)

Is Initialized

  • Purpose: Performs a check to determine if the DurAdmin application has been initialized
  • Request: GET https://host:port/duradmin/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.

DuraBoss

Purpose: DuraBoss provides administrative control over a variety of activities that run over the storage and services managed by DuraCloud. DuraBoss consists of four major applications:

  • Reporter - generates reports relating to the status of the storage and services within DuraCloud
  • Executor - manages actions which automate functions within DuraCloud, primarily the scheduling and running of DuraCloud services
  • Auditor - maintains audit logs for all spaces within DuraCloud, ensuring that all additions, update, and deletions are recorded and made available
  • Manifest - provides manifests in various formats for the content that resides in DuraCloud spaces

Resources: XML schema which defines the expected transfer data for storage and service reporting can be found on the Downloads page

Initialization REST Methods

Initialize Application

  • Purpose: Allows the initialization of duraboss
  • Request: POST https://host:port/duraboss/init
  • Request Body: XML similar to:

    <durabossConfig>
      <reporterEnabled>[true|false]</reporterEnabled>
      <executorEnabled>[true|false]</executorEnabled>
      <auditorEnabled>[true|false]</auditorEnabled>
      <durastoreHost>[host]</durastoreHost>
      <durastorePort>[port]</durastorePort>
      <durastoreContext>durastore</durastoreContext>
      <notificationConfig>
        <type>EMAIL</type>
        <username>[username for notification system]</username>
        <password>[password for notification system]</password>
        <originator>[from email address]</originator>
        <admin>[administrator email address]</admin>
      </notificationConfig>
    </durabossConfig>
    
  • Response Code: 200 (on success)
  • Response Body: "Initialization Successful" (on success)

Is Initialized

  • Purpose: Performs a check to determine if the DuraBoss application has been initialized
  • Request: GET https://host:port/duraboss/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.
Reporter: Storage Report REST Methods

Get Latest Storage Report

  • Purpose: Provides the most current storage report in XML format
  • Request: GET https://host:port/duraboss/report/storage
  • Response Code: 200 (on success)
  • Response Body: XML, defined by the storage report XSD

Get Storage Report List

  • Purpose: Provides a list of all storage report IDs
  • Request: GET https://host:port/duraboss/report/storage/list
  • Response Code: 200 (on success)
  • Response Body: XML, defined by the storage report XSD

Get Storage Report

  • Purpose: Provides a specific storage report based on the provided report ID
  • Request: GET https://host:port/duraboss/report/storage/reportID
  • Response Code: 200 (on success)
  • Response Body: XML, defined by the storage report XSD

Get Storage Report Info

  • Purpose: Provides a information about the current status of the storage reporting system
  • Request: GET https://host:port/duraboss/report/storage/info
  • Response Code: 200 (on success)
  • Response Body: XML, defined by the storage report XSD

Start Storage Report

  • Purpose: Starts a storage report if one is not already running
  • Request: POST https://host:port/duraboss/report/storage
  • Response Code: 200 (on success)
  • Response Body: "Report Started" (on success), or ""Report Already In Progress" (if a report is already in progress)

Cancel Storage Report

  • Purpose: Cancels a running storage report
  • Request: DELETE https://host:port/duraboss/report/storage
  • Response Code: 200 (on success)
  • Response Body: "Storage report cancelled"

Schedule Storage Report

  • Purpose: Schedules a time for a storage report to be run
  • Request: POST https://host:port/duraboss/report/storage/schedule ? (startTime) (frequency)
    • startTime: time (in milliseconds since the epoch) to begin the next storage report
    • frequency: time (in milliseconds) to wait between running reports (minimum value is 600000)
  • Response Code: 200 (on success)
  • Response Body: "Storage reports scheduled" (on success)

Cancel Storage Report Schedule

  • Purpose: Cancels all entries on the storage report schedule
  • Request: DELETE https://host:port/duraboss/report/storage/schedule
  • Response Code: 200 (on success)
  • Response Body: "Storage Reports schedule cancelled"

 

 

  • No labels