12    Capability Object Resource Operations

12.1   Overview

Capability objects allow a CDMI™ client to discover what subset of the CDMI standard is implemented by a CDMI provider.

For each URI in a cloud storage system, the set of interactions that the system is capable of performing for that URI are described by the presence of named "capabilities". Each capability present for a given URI indicates what functionality the cloud storage system will allow against that URI. Capabilities are always static.

Capabilities may differ from the operations permitted by an Access Control List (ACL) (see 16.1) associated with a given URI‚ e.g., a read-only cloud may not permit write access to a container or object, despite the presence of an ACL allowing write access.

Cloud clients may use capabilities to discover what operations are supported. If an operation is attempted on a CDMI object that does not have a corresponding capability, an HTTP 400 status code shall be returned to the client. All CDMI-compliant cloud storage systems shall implement the ability to read capabilities, but support for the functionality indicated by each capability is optional.

Requirements throughout this international standard shall be understood in the context of CDMI capabilities. Mandatory requirements on functionality that is conditioned on a CDMI capability shall not be interpreted to require implementation of that capability, but rather shall be interpreted to apply only to implementations that support the functionality required by that capability.

Every CDMI data object, container object, domain object, and queue object shall have a capabilitiesURI field that contains a valid URI that points to a capabilities object. Within the capabilities object, the name of each capability confers a specific meaning that has been agreed to between the cloud storage provider and the cloud storage consumer.

The capabilities defined as part of this international standard are described later in Clause 12. Capabilities not listed in this standard shall not begin with the prefix "cdmi_", but are otherwise permitted so that cloud storage system implementors have the ability to extend the use of capabilities in ways that are outside the scope of this international standard.

Figure 7 shows the hierarchy of capabilities in an offering and how the capabilitiesURI links data objects and container objects into the capabilities tree.

HierarchyofCapabilities.jpg

 

Figure 7 - Hierarchy of Capabilities

 

The capabilities container within the capabilities tree to which an object is linked is based on the type of the object and the data system metadata fields present in the object.

EXAMPLE   A container with no data system metadata fields specified may map to the "container" capabilities entry.

As an option, a CDMI implementation may map a container to a "gold_container" capabilities entry, if a data system metadata field is present and set to a given value, such as if the cdmi_data_redundancy field was set to the value of "4". This permits a cloud provider to create profiles of data system metadata fields and values.

Capabilities do not have a CDMI metadata field.

12.1.1   Cloud Storage System-Wide Capabilities

Table 102 defines the system-wide capabilities in a cloud storage system. These capabilities, which are found in the capabilities object, are referred to by the root URI (root capabilities).

Table 102 - System-Wide Capabilities

Capability Name

Type

Definition

cdmi_domains

JSON String

If present and "true", indicates that the cloud storage system supports domains. If not present, the domainURI field shall not be present in response bodies and the "cdmi_domains" URI shall not be present.

cdmi_export_cifs

JSON String

If present and "true", this capability indicates that the cloud storage system supports CIFS exports.

cdmi_dataobjects

JSON String

If present and "true", this capability indicates that the cloud storage system supports data objects.

cdmi_export_iscsi

JSON String

If present and "true", this capability indicates that the cloud storage system supports iSCSI exports.

cdmi_export_nfs

JSON String

If present and "true", this capability indicates that the cloud storage system supports NFS protocol exports.

cdmi_export_occi_iscsi

JSON String

If present and "true", this capability indicates that the cloud storage system supports OCCI/iSCSI exports.

cdmi_export_webdav

JSON String

If present and "true", this capability indicates that the cloud storage system supports WebDAV exports.

cdmi_metadata_maxitems

JSON String

If present, this capability indicates the maximum number of user-defined metadata items supported per object. If absent, there is no limit placed on the number of user-defined metadata items.

cdmi_metadata_maxsize

JSON String

If present, this capability indicates the maximum size, in bytes, of each user-defined metadata item supported per object. If absent, there is no limit placed on the size of user- defined metadata items.

cdmi_metadata_maxtotalsize

JSON String

If present, this capability indicates the maximum size, in bytes, of user-defined metadata supported by the cloud storage system. If absent, there is no limit placed on the size of user-defined metadata.

cdmi_notification

JSON String

If present and "true", this capability indicates that the cloud storage system supports notification queues.

cdmi_logging

JSON String

If present and "true", this capability indicates that the cloud storage system supports logging queues.

cdmi_query

JSON String

If present and "true", this capability indicates that the cloud storage system supports query queues.

cdmi_query_regex

JSON String

If present and "true", this capability indicates that the cloud storage system supports query with regular expressions.

cdmi_query_contains

JSON String

If present and "true", this capability indicates that the cloud storage system supports query with “contains” expressions.

cdmi_query_tags

JSON String

If present and "true", this capability indicates that the cloud storage system supports query with tag-matching expressions.

cdmi_query_value

JSON String

If present and "true", this capability indicates that the cloud storage system supports query of value fields.

cdmi_queues

JSON String

If present and "true", this capability indicates that the cloud storage system supports queue objects.

cdmi_security_access_control

JSON String

If present and "true", this capability indicates that the cloud storage system supports ACLs. See 12.1.3 for additional information.

cdmi_security_audit

JSON String

If present and "true", this capability indicates that the cloud storage system supports audit logging. See 20.4 for additional information.

cdmi_security_data_integrity

JSON String

If present and "true", this capability indicates that the cloud storage system supports data integrity/authenticity. See 12.1.3 for additional information.

cdmi_security_encryption

JSON String

If present and "true", this capability indicates that the cloud storage system supports data at-rest encryption. See 12.1.3 for additional information.

cdmi_security_immutability

JSON String

If present and "true", this capability indicates that the cloud storage system supports data immutability/retentions. See 12.1.3 for additional information.

cdmi_security_sanitization

JSON String

If present and "true", this capability indicates that the cloud storage system supports data/media sanitization. See 12.1.3 for additional information.

cdmi_serialization_json

JSON String

If present and "true", this capability indicates that the cloud storage system supports JSON as a serialization format.

cdmi_snapshots

JSON String

If present and “true”, this capability indicates that the cloud storage system supports snapshots.

cdmi_references

JSON String

If present and “true”, this capability indicates that the cloud storage system supports references.

cdmi_object_move_from_local

JSON String

If present and "true", this capability indicates that the cloud storage system supports moving CDMI objects from URIs within the same storage system.

cdmi_object_move_from_remote

JSON String

If present and "true", this capability indicates that the cloud storage system supports moving CDMI objects from URIs within other CDMI storage systems.

cdmi_object_move_from_ID

JSON String

If present and "true", this capability indicates that the cloud storage system supports moving CDMI objects without a path from a /cdmi_objectid/ URI within the same storage system. This effectively adds a path, allowing the object to be accessed by ID and by path.

cdmi_object_move_to_ID

JSON String

If present and "true", this capability indicates that the cloud storage system supports moving CDMI objects with a path to a /cdmi_objectid/ URI within the same storage system. This effectively removes the path, leaving the object only accessible by ID.

cdmi_object_copy_from_local

JSON String

If present and "true", this capability indicates that the cloud storage system supports copying CDMI objects from URIs within the same storage system.

cdmi_object_copy_from_remote

JSON String

If present and "true", this capability indicates that the cloud storage system supports copying CDMI objects from URIs within other CDMI storage systems.

cdmi_object_access_by_ID

JSON String

If present and "true", this capability indicates that objects can be accessed, updated, and deleted through "/cdmi_objectid/”.

cdmi_post_dataobject_by_ID

JSON String

If present and "true", this capability indicates that the system allows a new data object by ID to be added via POST to "/cdmi_objectid/".

cdmi_post_queue_by_ID

JSON String

If present and "true", this capability indicates that the system allows a new queue object by ID to be added via POST to "/cdmi_objectid/".

cdmi_deserialize_dataobject_by_ID

JSON String

If present and "true", this capability indicates that the system allows the deserialization of serialized data objects when creating a new data object by ID via POST to "/cdmi_objectid/".

cdmi_deserialize_queue_by_ID

JSON String

If present and "true", this capability indicates that the system allows the deserialization of serialized queue objects when creating a new queue object by ID via POST to "/cdmi_objectid/".

cdmi_serialize_dataobject_to_ID

JSON String

If present and "true", this capability indicates that the system allows the serialization of data objects when creating a new data object by ID via POST to "/cdmi_objectid/".

cdmi_serialize_domain_to_ID

JSON String

If present and "true", this capability indicates that the system allows the serialization of domain objects when creating a new data object by ID via POST to "/cdmi_objectid/".

cdmi_serialize_container_to_ID

JSON String

If present and "true", this capability indicates that the system allows the serialization of container objects when creating a new data object by ID via POST to "/cdmi_objectid/".

cdmi_serialize_queue_to_ID

JSON String

If present and "true", this capability indicates that the system allows the serialization of queue objects when creating a new data object by ID via POST to "/cdmi_objectid/".

cdmi_copy_dataobject_by_ID

JSON String

If present and "true", this capability indicates that the system allows the copying an existing data object when creating a new data object by ID via POST to "/cdmi_objectid/".

cdmi_copy_queue_by_ID

JSON String

If present and "true", this capability indicates that the system allows the copying an existing queue object when creating a new queue object by ID via POST to "/cdmi_objectid/".

cdmi_create_reference_by_ID

JSON String

If present and "true", this capability indicates that the system allows the creation of a new reference by IDa new child reference to be created via POST to "/cdmi_objectid/".

12.1.2   Storage System Metadata Capabilities

Table 103 defines the capabilities for storage system metadata in a cloud storage system. These capabilities are found in the capabilities objects for domains, data objects, containers, and queues. See 16.3 for a description of these storage system metadata items.

Table 103 - Capabilities for Storage System Metadata

Capability Name

Type

Definition

cdmi_acl

JSON String

If present and "true", this capability indicates that the cloud storage system supports ACLs. When a CDMI implementation supports ACLs for the purpose of access control, the system-wide capability of “cdmi_security_access_control” specified in Table 103 of 12.1.1 shall be set to “true”. Otherwise, it shall not be present, indicating that there is no support for access control.

cdmi_size

JSON String

If present and "true", this capability indicates that the cloud storage system shall generate a "cdmi_size" storage system metadata for each stored object.

cdmi_ctime

JSON String

If present and "true", this capability indicates that the cloud storage system shall generate a "cdmi_ctime" storage system metadata for each stored object.

cdmi_atime

JSON String

If present and "true", this capability indicates that the cloud storage system shall generate an "cdmi_atime" storage system metadata for each stored object.

cdmi_mtime

JSON String

If present and "true", this capability indicates that the cloud storage system shall generate an "cdmi_mtime" storage system metadata for each stored object.

cdmi_acount

JSON String

If present and "true", this capability indicates that the cloud storage system shall generate an "cdmi_acount" storage system metadata for each stored object.

cdmi_mcount

JSON String

If present and "true", this capability indicates that the cloud storage system shall generate an "cdmi_mcount" storage system metadata for each stored object.

12.1.3   Data System Metadata Capabilities

Table 104 defines the capabilities for data system metadata in a cloud storage system. These capabilities are found in the capabilities objects for domains, data objects, containers, and queues. See 16.3 for a description of these data system metadata items.

Table 104 - Capabilities for Data System Metadata

Capability Name

Type

Definition

cdmi_assignedsize

JSON String

If present and "true", this capability indicates that the cloud storage system shall support assigned size for containers.

cdmi_data_redundancy

JSON String

If present, this capability specifies the maximum number of redundancy copies that may be specified. If absent, redundancy copies specified shall be ignored.

cdmi_data_dispersion

JSON String

If present and "true", this capability indicates that the cloud storage system shall disperse data. If absent, the dispersion specified shall be ignored.

cdmi_data_retention

JSON String

If present and "true", this capability indicates that the cloud storage system shall support retention.

cdmi_data_autodelete

JSON String

If present and “true”, this capability indicates that the cloud storage system shall support the autodeletion of objects when retention ends.

cdmi_data_holds

JSON String

If present and "true", this capability indicates that the cloud storage system shall support placing holds on objects. When a CDMI implementation supports holds for the purpose of making data immutable, the system-wide capability of “cdmi_security_immutability” specified in Table 102 of 12.1.1 shall be set to “true”. Otherwise, it shall not be present, indicating that there is no support for data immutability.

cdmi_encryption

JSON Array

If present, this capability shall list the encryption algorithms and key lengths supported. If absent, objects shall not be encrypted. When a CDMI implementation supports at-rest encryption, the system-wide capability of “cdmi_security_encryption” specified in Table 102 of Section 12.1.1 shall be set to “true”. Otherwise, it shall not be present, indicating that there is no support for at-rest encryption.

Supported encryption algorithms are in the form of ALGORITHM_MODE_KEYLENGTH, where:

   "ALGORITHM" is the encryption algorithm (e.g., "AES" or "3DES").

   "MODE" is the mode of operation (e.g.,"XTS", "CBC", or "CTR").

   "KEYLENGTH" is the key size (e.g.,"128","192", "256").

To improve interoperability between CDMI implementations, the following designators should be used for the more common encryption combinations:

   “3DES_ECB_168” for the three-key Triple DES algorithm, the Electronic Code Book (ECB) mode of operation, and a key size of 168 bits;

   “3DES_CBC_168” for the three-key Triple DES algorithm, the Cipher Block Chaining (CBC) mode of operation, and a key size of 168 bits;

   "AES_CBC_128" for the AES algorithm, the CBC mode of operation, and a key size of 128 bits;

   "AES_CBC_256" for the AES algorithm, the CBC mode of operation, and a key size of 256 bits;

   "AES_XTS_128" for the AES algorithm, the XTS mode of operation, and a key size of 128 bits; and

   "AES_XTS_256" for the AES algorithm, the XTS mode of operation, and a key size of 256 bits.

cdmi_geographic_placement

JSON String

If present and "true", this capability indicates that the cloud storage system shall enforce the geographic restriction of object placement.

cdmi_immediate_redundancy

JSON String

If present, this capability specifies the maximum number of immediate redundancy copies that may be specified. If absent, immediate redundancy copies specified shall be ignored.

cdmi_infrastructure_redundancy

JSON String

If present, this capability specifies the maximum number of infrastructure redundancy copies that may be specified. If absent, infrastructure redundancy copies specified shall be ignored.

cdmi_latency

JSON String

If present and "true", this capability indicates that the cloud storage system shall tier data based on desired latency. If absent, the max latency specified shall be ignored.

cdmi_RPO

JSON String

If present and "true", this capability indicates that the cloud storage system shall manage data to achieve a specified RPO. If absent, the RPO specified shall be ignored.

cdmi_RTO

JSON String

If present and "true", this capability indicates that the cloud storage system shall manage data to achieve a specified RTO. If absent, the RTO specified shall be ignored.

cdmi_sanitization_method

JSON Array

If present, this capability lists the sanitization methods supported. When a CDMI implementation supports sanitization, the system-wide capability of “cdmi_security_sanitization” specified in Table 102 of 12.1.1 shall be set to “true”. Otherwise, it shall not be present, indicating that there is no sanitization support.

cdmi_throughput

JSON String

If present and "true", this capability indicates that the cloud storage system shall tier data based on desired throughput. If absent, the max throughput specified shall be ignored.

cdmi_value_hash

JSON Array

If present, this capability shall list the hash algorithms and lengths supported. If absent, object values shall not be hashed. Values shall be in the form of "Algorithm Length”, e.g., "SHA256". When a CDMI implementation supports hashing, the system-wide capability of “cdmi_security_data_integrity” specified in Table 102 of 12.1.1 shall be set to “true”. Otherwise, it shall not be present, indicating that there is no support for hashing.

12.1.4   Data Object Capabilities

Table 105 defines the capabilities for data objects in a cloud storage system.

Table 105 - Capabilities for Data Objects

Capability Name

Type

Definition

cdmi_read_value

JSON String

If present and "true", this capability indicates that the object’s value may be read.

cdmi_read_value_range

JSON String

If present and "true", this capability indicates that the object’s value may be read with byte ranges.

cdmi_read_metadata

JSON String

If present and "true", this capability indicates that the object’s metadata may be read.

cdmi_modify_value

JSON String

If present and "true", this capability indicates that the object’s value may be modified.

cdmi_modify_value_range

JSON String

If present and "true",this capability indicates that the object’s value may be modified with byte ranges.

cdmi_modify_metadata

JSON String

If present and "true", this capability indicates that the object’s metadata may be modified.

cdmi_modify_deserialize_dataobject

JSON String

If present and "true", this capability indicates that the data object permits the deserialization of a serialized data object into the data object as an update.

cdmi_delete_dataobject

JSON String

If present and "true", this capability indicates that the object may be deleted.

12.1.5   Container Capabilities

Table 106 defines the capabilities for containers in a cloud storage system.

Table 106 - Capabilities for Containers

Capability Name

Type

Definition

cdmi_list_children

JSON String

If present and "true", this capability indicates that the container’s children may be listed.

cdmi_list_children_range

JSON String

If present and "true", this capability indicates that the container’s children may be listed with ranges.

cdmi_read_metadata

JSON String

If present and "true", this capability indicates that the container’s metadata may be read.

cdmi_modify_metadata

JSON String

If present and "true", this capability indicates that the container’s metadata may be modified.

cdmi_modify_deserialize_container

JSON String

If present and "true", this capability indicates that the container object permits the deserialization of a serialized container object into the container object as an update.

cdmi_snapshot

JSON String

If present and "true", this capability indicates that the container allows a new snapshot to be created.

cdmi_serialize_dataobject

JSON String

If present and "true", this capability indicates that the object may be serialized.

cdmi_serialize_container

JSON String

If present and "true", this capability indicates that the container and all children’s contents may be serialized.

cdmi_serialize_queue

JSON String

If present and "true", this capability indicates that the queue may be serialized.

cdmi_serialize_domain

JSON String

If present and "true", this capability indicates that the domain and all child domains may be serialized.

cdmi_deserialize_container

JSON String

If present and "true", this capability indicates that the container permits the deserialization of serialized containers and associated serialized children into the container

cdmi_deserialize_queue

JSON String

If present and "true", this capability indicates that the container permits the deserialization of serialized queues into the container.

cdmi_deserialize_dataobject

JSON String

If present and "true", this capability indicates that the container permits the deserialization of serialized data objects into the container.

cdmi_create_dataobject

JSON String

If present and "true", this capability indicates that the container allows a new object to be added.

cdmi_post_dataobject

JSON String

If present and "true", this capability indicates that the container allows a new object to be added via POST.

cdmi_post_queue

JSON String

If present and "true", this capability indicates that the container allows a new queue to be added via POST.

cdmi_create_container

JSON String

If present and "true", this capability indicates that the container allows a new container to be created via PUT.

cdmi_create_queue

JSON String

If present and "true", this capability indicates that the container allows queues to be created.

cdmi_create_reference

JSON String

If present and "true", this capability indicates that the container allows a new child reference to be created via PUT.

cdmi_cifs_export

JSON String

If present and "true", the container can be exported as a filesystem via CIFS

cdmi_nfs_export

JSON String

If present and "true", the container can be exported as a filesystem via NFS

cdmi_iscsi_export

JSON String

If present and "true", the container can be exported as a filesystem via iSCSI

cdmi_occi_export

JSON String

If present and "true", the container can be exported as a filesystem via OCCI

cdmi_delete_container

JSON String

If present and "true", this capability indicates that the container may be deleted.

cdmi_move_container

JSON String

If present and "true", this capability indicates that a container object may be moved into the container.

cdmi_copy_container

JSON String

If present and "true", this capability indicates that a container object may be copied into the container.

cdmi_move_dataobject

JSON String

If present and "true", this capability indicates that a data object may be moved into the container.

cdmi_copy_dataobject

JSON String

If present and "true", this capability indicates that a data object may be copied into the container.

12.1.6   Domain Object Capabilities

Table 107 defines the capabilities for domains in a cloud storage system. (All capabilities refer to what may be done via CDMI content-type operations.)

Table 107 - Capabilities for Domain Objects

Capability Name

Type

Definition

cdmi_create_domain

JSON String

If present and "true", this capability indicates that the domain allows a new subdomain to be added.

cdmi_delete_domain

JSON String

If present and "true", this capability indicates that the domain may be deleted.

cdmi_domain_summary

JSON String

If present and "true", this capability indicates that the domain supports domain summaries.

cdmi_domain_members

JSON String

If present and "true", this capability indicates that the domain supports domain user management.

cdmi_list_children

JSON String

If present and "true", this capability indicates that the domain's children may be listed.

cdmi_read_metadata

JSON String

If present and "true", this capability indicates that the domain's metadata may be read.

cdmi_modify_metadata

JSON String

If present and "true", this capability indicates that the domain's metadata may be modified.

cdmi_modify_deserialize_domain

JSON String

If present and "true", this capability indicates that the domain object permits the deserialization of a serialized domain object into the domain object as an update.

cdmi_copy_domain

JSON String

If present and "true", this capability indicates that the domain may be copied (via PUT) to another URI.

cdmi_deserialize_domain

JSON String

If present and "true", this capability indicates that the domain permits the deserialization of serialized domains and associated serialized children into the domain.

12.1.7   Queue Object Capabilities

Table 108 defines the capabilities for queue objects in a cloud storage system.

Table 108 - Capabilities for Queue Objects

Capability Name

Type

Definition

cdmi_read_value

JSON String

If present and "true", this capability indicates that the queue's value may be read.

cdmi_read_metadata

JSON String

If present and "true", this capability indicates that the queue's metadata may be read.

cdmi_modify_value

JSON String

If present and "true", this capability indicates that the queue's value may be modified.

cdmi_modify_metadata

JSON String

If present and "true", this capability indicates that the queue's metadata may be modified.

cdmi_modify_deserialize_queue

JSON String

If present and "true", this capability indicates that the queue permits the deserialization of a serialized queue into the queue as an update.

cdmi_delete_queue

JSON String

If present and "true", this capability indicates that the queue may be deleted.

cdmi_move_queue

JSON String

If present and "true", this capability indicates that the queue may be moved to another URI.

cdmi_copy_queue

JSON String

If present and "true", this capability indicates that the queue may be copied to another URI.

cdmi_reference_queue

JSON String

If present and "true", this capability indicates that the queue may be referenced from another queue.

12.1.8   Capability Object Representations

The representations in this clause are shown using JSON notation. Both clients and servers shall support UTF-8 JSON representation. The request and response body JSON fields may be specified or returned in any order, with the exception that, if present, for capability objects, the childrenrange and children fields shall appear last and in that order.

12.2   Read a Capabilities Object using CDMI Content Type

12.2.1   Synopsis

The following HTTP GET reads from an existing capability object at the specified URI.

GET <root URI>/cdmi_capabilities/<Capability>/<TheCapability>/

GET <root URI>/cdmi_capabilities/<Capability>/<TheCapability>/?<fieldname>;<fieldname>

GET <root URI>/cdmi_capabilities/<Capability>/<TheCapability>/?children:<range>

Where:

   <root URI> is the path to the CDMI cloud.

   <Capability> is zero or more intermediate capabilities containers.

   <TheCapability> is the name specified for the capabilities to be read from.

   <fieldname> is the name of a field.

   <range> is a numeric range within the list of children.

The object shall also be accessible at <root URI>/cdmi_objectid/<objectID>.

12.2.2   Capabilities

The following capabilities describe the supported operations that may be performed when reading an existing capabilities object:

All CDMI implementations shall permit clients to read all fields of all capabilities objects.

12.2.3   Request Headers

The HTTP request headers for reading a CDMI capabilities object using CDMI content type are shown in Table 109.

Table 109 - Request Headers - Read a Capabilities Object using CDMI Content Type

Header

Type

Description

Requirement

Accept

Header String

"application/cdmi-capability". This header shall contain a list of one or more of the five CDMI MIME types (see RFC 6208).

Mandatory

X-CDMI-Specification-Version

String Array

A comma separated list of versions supported by the client, e.g., "1.0.1, 1.5, 2.0"

Mandatory

12.2.4   Request Message Body

No request message body fields are specified by this international standard.

12.2.5   Response Headers

The HTTP response headers for reading a CDMI capabilities object using CDMI content type are shown in Table 110.

Table 110 - Response Headers - Read a Capabilities Object using CDMI Content Type

Header

Type

Description

Requirement

X-CDMI-Specification-Version

Header String

The server shall respond with the highest version supported by both the client and the server, e.g., "1.0.1".

If the server does not support any of the versions supported by the client, the server shall return a 400 Bad Request status code.

Mandatory

Content-Type

Header String

"application/cdmi-capability"

Mandatory

12.2.6   Response Message Body

The response message body fields for reading a CDMI capabilities object using CDMI content type are shown in Table 111.

Table 111 - Response Message Body - Read a Capabilities Object using CDMI Content Type

Field Name

Type

Description

Requirement

objectType

JSON String

”application/cdmi-capability”

Mandatory

objectID

JSON String

Object ID of the object

Mandatory

objectName

JSON String

Name of the object

   For objects in a container, the objectName field shall be returned.

   For objects not in a container (objects that are only accessible by ID), the objectName field shall not be returned.

Mandatory

parentURI

JSON String

URI for the parent object

   For objects in a container, the parentURI field shall be returned.

   For objects not in a container (objects that are only accessible by ID), the parentURI field shall not be returned.

Appending the objectName to the parentURI shall always produce a valid URI for the object.

Mandatory

parentID

JSON String

Object ID of the parent container object

   For objects in a container, the parentID field shall be returned.

   For objects not in a container (objects that are only accessible by ID), the parentID field shall not be returned.

Appending the objectName to the parentURI shall always produce a valid URI for the object.

Mandatory

capabilities

JSON Object

The capabilities supported by the corresponding object. Capabilities in the "/cdmi_capabilities/" object are system-wide capabilities. Capabilities found in children objects under "/cdmi_capabilities/" correspond to the capabilities of a specific subset of objects. Each capability is expressed as a JSON string.

Mandatory

childrenrange

JSON String

The range of the children returned in the children field.

Mandatory

children

JSON Array

Names of the children capabilities objects. For the root container capabilities, this includes "domain/", "container/", "dataobject/", and "queue/". Within each of these capabilities objects, further more specialized capabilities profiles may be specified by the cloud storage system.

Mandatory

If individual fields are specified in the GET request, only these fields are returned in the result body. Optional fields that are requested but do not exist are omitted from the result body.

12.2.7   Response Status

Table 112 describes the HTTP status codes that occur when reading a capabilities object using CDMI content type.

Table 112 - HTTP Status Codes - Read a Capabilities Object using CDMI Content Type

HTTP Status

Description

200 OK

Capabilities object list is in the response.

400 Bad Request

Invalid parameter or field names are in the request.

401 Unauthorized

There are incorrect or missing authentication credentials.

403 Forbidden

Client lacks the proper authorization to perform this request.

404 Not Found

A resource was not found at the specified URI.

406 Not Acceptable

The server is unable to provide the object in the content-type specified in the Accept header.

12.2.8   Examples

EXAMPLE 1   GET to the root container capabilities URI to read all fields of the container

GET /cdmi_capabilities/ HTTP/1.1

Host: cloud.example.com

Accept: application/cdmi-capability

X-CDMI-Specification-Version: 1.0.1

The following shows the response.

HTTP/1.1 200 OK

Content-Type: application/cdmi-capability

X-CDMI-Specification-Version: 1.0.1

 

{

   "objectType" : "application/cdmi-capability",

   "objectID" : "00007E7F00104BE66AB53A9572F9F51E",

   "objectName" : "cdmi_capabilities/",

   "parentURI" : "/",

    "parentID" : "00007E7F0010128E42D87EE34F5A6560",

   "capabilities" : {

       "cdmi_domains" : "true",

       "cdmi_export_nfs" : "true",

       "cdmi_export_iscsi" : "true",

       "cdmi_queues" : "true",

       "cdmi_notification" : "true",

       "cdmi_query" : "true",

       "cdmi_metadata_maxsize" : "4096",

        "cdmi_metadata_maxitems" : "1024"

   },

   "childrenrange" : "0-3",

   "children" : [

       "domain/",

       "container/",

       "dataobject/",

        "queue/"

   ]

}

EXAMPLE 2   GET to the root container capabilities URI to read the capabilities and children of the container

GET /cdmi_capabilities/?capabilities;children HTTP/1.1

Host: cloud.example.com

Accept: application/cdmi-capability

X-CDMI-Specification-Version: 1.0.1

The following shows the response.

HTTP/1.1 200 OK

Content-Type: application/cdmi-capability

X-CDMI-Specification-Version: 1.0.1

 

{

   "capabilities" : {

       "cdmi_domains" : "true",

       "cdmi_export_nfs" : "true",

       "cdmi_export_iscsi" : "true",

       "cdmi_queues" : "true",

       "cdmi_notification" : "true",

       "cdmi_query" : "true",

       "cdmi_metadata_maxsize" : "4096",

        "cdmi_metadata_maxitems" : "1024"

   },

   "children" : [

       "domain/",

       "container/",

       "dataobject/",

        "queue/"

   ]

}

EXAMPLE 3   GET to the root container capabilities URI to read the first two children of the container

GET /cdmi_capabilities/?childrenrange;children:0-1 HTTP/1.1

Host: cloud.example.com

Accept: application/cdmi-capability

X-CDMI-Specification-Version: 1.0.1

The following shows the response.

HTTP/1.1 200 OK

Content-Type: application/cdmi-capability

X-CDMI-Specification-Version: 1.0.1

 

{

   "childrenrange" : "0-1",

   "children" : [

       "domain/",

        "container/"

   ]

}