EDAA defines the following URI patterns to help developers understand the resource model of the EDAA. Each of these URI patterns is read-only (GET) and return a feed of one or more resource type representations.

In fact the reason that all EDAA URI patterns start with /types or /instances is to support the idea of treating type resources as first class resources in the EDAA approach and thereby to distinguish /types resources from /instances resources.

The examples below show the atom/xml representation of the responses. EDAA has also defined a JSON equivalent of these feeds.

/types

GET operation to retrieve a paginated feed of resource representations. Each resource in the feed is a representation of a "type resource". Current format of a type resource is "VS-XML", an XSD-like syntax for defining types, attributes and relationships of the type and other type related metadata.

page and per_page query parameters are supported to shape the pagination of the feed.

An example response is shown below:

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://www.w3.org/2005/Atom"
xmlns:vsc="http://schemas.emc.com/vs-xml/namespace/Common/1.0">
<title>/slm/msa/types</title>
<updated>2011-05-23T16:52:06-05:00</updated>
<author><name>msa framework</name></author>
<id>74a72d5a-de7c-4f82-a753-b4a5b00afe28</id>
<entry>
<title type='text'>vCenter</title>
<id>http://localhost:8080/slm/msa/types/vCenter</id>
<updated>2011-05-23T16:52:06-05:00</updated>
<link rel='edit' href='http://localhost:8080/slm/msa/types/vCenter/instances' />
<link rel='related' href='http://localhost:8080/slm/msa/types/vCenter/instances' />
<link rel='alternate' href='http://localhost:8080/slm/msa/types/vCenter' />
<link rel='self' href='http://localhost:8080/slm/msa/types/vCenter' />
<content type='application/xml'>
<vsc:Type xmlns:atom='http://www.w3.org/2005/Atom' xmlns:vsc='http://schemas.emc.com/vs-xml/namespace/Common/1.0'
xmlns:inst='http://schemas.emc.com/msa/uim/1.0'>
<vsc:typeName namespace='http://schemas.emc.com/msa/uim/1.0'>vCenter</vsc:typeName>
<atom:link rel='http://schemas.emc.com/msa/common/reln/PR_Create'
href='http://localhost:8080/slm/msa/types/vCenter/PR_Create' />
<atom:link rel='self' href='http://localhost:8080/slm/msa/types/vCenter' />
<vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1'
maxOccurs='1'>displayName</vsc:attribute>
<vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1'
maxOccurs='1'>ipAddress</vsc:attribute>
<vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:long' minOccurs='1' maxOccurs='1'>id</vsc:attribute>
<vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1'
maxOccurs='1'>name</vsc:attribute>
<vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1'
maxOccurs='1'>description</vsc:attribute>
<vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1'
maxOccurs='1'>vCenterVersion</vsc:attribute>
<vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1'
maxOccurs='1'>userName</vsc:attribute>
<vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1'
maxOccurs='1'>port</vsc:attribute>
<vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1'
maxOccurs='1'>password</vsc:attribute>
<vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1'
maxOccurs='1'>connectionStatus</vsc:attribute>
<vsc:relationship relType="vCenterDatacenter" type="http://schemas.emc.com/msa/common/contains" minOccurs="1"
maxOccurs="unbounded"
description="List of Datacenters">Datacenters</vsc:relationship>
<vsc:action rel='edit' description='Instances are mutable' />
<vsc:action rel='http://schemas.emc.com/msa/uim/1.0/vCenter/action/verifyConnection' description='Verifies if vCenter
is reachable' />
</vsc:Type>
</content>
</entry>
<entry>
<title type='text'>vCenterDatacenter</title>
<id>http://localhost:8080/slm/msa/types/vCenterDatacenter</id>
<updated>2011-05-23T16:52:06-05:00</updated>
<link rel='related' href='http://localhost:8080/slm/msa/types/vCenterDatacenter/instances' />
<link rel='alternate' href='http://localhost:8080/slm/msa/types/vCenterDatacenter' />
<link rel='self' href='http://localhost:8080/slm/msa/types/vCenterDatacenter' />
<content type='application/xml'>
<vsc:Type xmlns:atom='http://www.w3.org/2005/Atom' xmlns:vsc='http://schemas.emc.com/vs-xml/namespace/Common/1.0'
xmlns:inst='http://schemas.emc.com/msa/uim/1.0'>
<vsc:typeName namespace='http://schemas.emc.com/msa/uim/1.0'>vCenterDatacenter</vsc:typeName>
<atom:link rel='http://schemas.emc.com/msa/common/reln/PR_Create'
href='http://localhost:8080/slm/msa/types/vCenterDatacenter/PR_Create' />
<atom:link rel='self' href='http://localhost:8080/slm/msa/types/vCenterDatacenter' />
<vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1'
maxOccurs='1'>displayName</vsc:attribute>
<vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:long' minOccurs='1' maxOccurs='1'>id</vsc:attribute>
<vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1'
maxOccurs='1'>name</vsc:attribute>
<vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1'
maxOccurs='1'>managedObjectKey</vsc:attribute>
<vsc:relationship relType='vCenter' type='http://schemas.emc.com/msa/common/ownedBy' minOccurs='1' maxOccurs='1'
description='vCenter this Datacenter belongs to'>vCenter</vsc:relationship>
</vsc:Type>
</content>
</entry>
...
</feed>

/types/{typeName}

GET operation to retrieve a representation of the type resource identified by {typeName}. Current format of a type resource is "VSXML", an XSD-like syntax for defining types, attributes and relationships of the type and other type related metadata.

An example response to GET /types/vCenter is shown below:

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://www.w3.org/2005/Atom"
xmlns:vsc="http://schemas.emc.com/vs-xml/namespace/Common/1.0">
<title>/slm/msa/types/vCenter</title>
<updated>2011-06-02T16:24:27-05:00</updated>
<author><name>msa framework</name></author>
<id>8cc4c3fc-5821-47ad-9b65-0ed5b2809a3c</id>
<link rel="self" href="http://localhost:8080/slm/msa/types/vCenter"/>
<entry>
<title type="text">vCenter</title>
<id>http://localhost:8080/slm/msa/types/vCenter</id>
<updated>2011-06-02T16:24:27-05:00</updated>
<link rel="edit" href="http://localhost:8080/slm/msa/types/vCenter/instances"/>
<link rel="related" href="http://localhost:8080/slm/msa/types/vCenter/instances"/>
<link rel="alternate" href="http://localhost:8080/slm/msa/types/vCenter"/>
<link rel="self" href="http://localhost:8080/slm/msa/types/vCenter"/>
<content type="application/xml">
<vsc:Type xmlns:inst="http://schemas.emc.com/msa/uim/1.0">
<vsc:typeName namespace="http://schemas.emc.com/msa/uim/1.0">vCenter</vsc:typeName>
<atom:link rel="http://schemas.emc.com/msa/common/reln/PR_Create"
href="http://localhost:8080/slm/msa/types/vCenter/PR_Create"/>
<atom:link rel="self" href="http://localhost:8080/slm/msa/types/vCenter"/>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">displayName</vsc:attribute>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">ipAddress</vsc:attribute>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:long" minOccurs="1" maxOccurs="1">id</vsc:attribute>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">name</vsc:attribute>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">description</vsc:attribute>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">vCenterVersion</vsc:attribute>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">userName</vsc:attribute>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">port</vsc:attribute>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">password</vsc:attribute>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">connectionStatus</vsc:attribute>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">dataCentersList</vsc:attribute>
<vsc:relationship relType="vCenterDatacenter" type="http://schemas.emc.com/msa/common/contains" minOccurs="1"
maxOccurs="unbounded"
description="List of Datacenters">Datacenters</vsc:relationship>
<vsc:action rel="edit" description="Instances are mutable"/>
<vsc:action rel="http://schemas.emc.com/msa/uim/1.0/vCenter/action/verifyConnection" description="Verifies if vCenter
is reachable"/>
</vsc:Type>
</content>
</entry>
</feed>

/types/{typeName}/hierarchy

GET operation to retrieve a paginated feed of resource representations of each type resource in the type hierarchy starting with the type identified by {typeName}. Each resource in the feed is a representation of a "type resource". Current format of a type resource is "VS-XML", an XSD-like syntax for defining types, attributes and relationships of the type and other type related metadata.

The idea is that if a type named "ApplicationServer" is a subclass of "SoftwareService" which is a subclass of "SoftwareElement", then the response to:

GET /types/ApplicationServer/hierarchy

would be a feed containing series of entries, one entry for the ApplicationServer type, followed by an entry for the SoftwareService type followed by the SoftwareElement type.

/types/{typeName}/PR_Create

The /PR_Create URI pattern was introduced in support of the partial representations used to create new resources of a given type. As discussed in EDAA Read/Write spec, the challenge for consumers of the read-write portion of MSA is to determine, for any given type, what is the subset of attributes and relationships that a third party consumer must specify when a resource is created.

/types/{typeName}/PR_Create contains a VS-XML representation of the subset of attributes and relationships of the type identified by {typeName} that must appear in the body of a POST (create) operation. Note the cardinality constraints on each attribute and relationship as specified by the @minOccurs and @maxOccurs on the attribute declaration and relationship declaration elements.

Here is an example response from GET /types/vCenter/PR_Create:
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://www.w3.org/2005/Atom" xmlns:vsc="http://schemas.emc.com/vsxml/
namespace/Common/1.0">
<title>/slm/msa/types/vCenter/PR_Create</title>
<updated>2011-06-03T09:17:05-05:00</updated>
<author><name>msa framework</name></author>
<id>b28dd0d9-60a6-4204-bf7f-d7b6d8ca2740</id>
<link rel="self" href="http://localhost:8080/slm/msa/types/vCenter/PR_Create"/>
<entry>
<title type="text">vCenter - PR_Create</title>
<id>http://localhost:8080/slm/msa/types/vCenter/PR_Create</id>
<updated>2011-06-03T09:17:05-05:00</updated>
<link rel="related" href="http://localhost:8080/slm/msa/types/vCenter"/>
<link rel="self" href="http://localhost:8080/slm/msa/types/vCenter/PR_Create"/>
<content type="application/xml">
<vsc:Type xmlns:inst="http://schemas.emc.com/msa/uim/1.0">
<vsc:typeName namespace="http://schemas.emc.com/msa/uim/1.0">vCenter</vsc:typeName>
<atom:link rel="self" href="http://localhost:8080/slm/msa/types/vCenter/PR_Create"/>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">displayName</vsc:attribute>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">ipAddress</vsc:attribute>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">name</vsc:attribute>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">description</vsc:attribute>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">userName</vsc:attribute>
<vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1"
maxOccurs="1">password</vsc:attribute>
</vsc:Type>
</content>
</entry>