To configure your extension service to provide access control for the objects it creates, define a resource class for each of its object types.

A ResourceClass element contains the information needed to construct a URL that a client can use to access the resource in a specific context. It must contain the following child elements:

MimeType

The MIME content type of all instances of the resource class.

UrlTemplate

The value of href attribute value for resources of this class. This can be any URI, and can include the variables {baseUri} and {resourceId}. When constructing the href value, vCloud Director replaces {baseUri} with the vCloud Director REST API base URL, and replaces {resourceId} with the UUID portion of the id attribute value of the resource.

Nid

The Namespace Identifier for resources of this type, as specified in http://www.ietf.org/rfc/rfc2141.txt.

UrnPattern

The Namespace Specific String for resources of this type, as specified in http://www.ietf.org/rfc/rfc2141.txt. You can provide a string or a named regular expression, where (?<id>) matches the resource identifier.

Verify that you are logged in to the vCloud API as a system administrator.

1

Retrieve the XML representation of the service.

Use a request like this one:

GET https://vcloud.example.com/api/admin/extension/service/45
2

Examine the response to find the Link for adding resource classes.

This Link has the following form:

<vcloud:Link
      rel="add"
      type="application/vnd.vmware.admin.resourceClass+xml"
      href="https://vcloud.example.com/api/admin/extension/service/45/resourceclasses" />
3

Construct a ResourceClass element.

See the request portion of Example: Create an Extension Service Resource Class for information about the contents of this element.

4

POST the ResourceClass element to the URL described in Step 2.

This request defines a resource class named Backup.

The MimeType is specified using the standard form for vnd type names.

The UrlTemplate uses the {baseUri} and {resourceId} variables, and could expand to a URL like https://vcloud.example.com/backup/27

The Nid and UrnPattern elements provide rules for constructing an URN of the form:

urn:vcloud:backup:id

as shown in the response.

Request:

POST https://vcloud.example.com/api/admin/extension/service/45/resourceclasses
Content-type:application/vnd.vmware.admin.resourceClass+xml
<?xml version="1.0" encoding="UTF-8"?>
<vmext:ResourceClass
   name="Backup"
   xmlns:vmext="http://www.vmware.com/vcloud/extension/v1.5"
   xmlns:vcloud="http://www.vmware.com/vcloud/v1.5">
   <vmext:MimeType>application/vnd.vmware.vcloud.backup+xml</vmext:MimeType>
   <vmext:UrlTemplate>{baseUri}backup/{resourceId}</vmext:UrlTemplate>
   <vmext:Nid>vcloud</vmext:Nid>
   <vmext:UrnPattern>^backup(?&lt;id&gt;[0-9]*)</vmext:UrnPattern>
</vmext:ResourceClass>

Response:

201 Created
Content-Type: application/vnd.vmware.admin.resourceClass+xml
...
<vmext:ResourceClass
   name="Backup"
   xmlns:vmext="http://www.vmware.com/vcloud/extension/v1.5"
   xmlns:vcloud="http://www.vmware.com/vcloud/v1.5"
   id="urn:vcloud:backup:83"
   type="application/vnd.vmware.admin.resourceClass+xml"
   href="https://vcloud.example.com/api/admin/extension/service/resourceclass/83"
   ...>
   <vcloud:Link
      rel="remove"
      href="https://vcloud.example.com/api/admin/extension/service/resourceclass/83" />
   <vcloud:Link
      rel="up"
      type="application/vnd.vmware.admin.service+xml"
      href="https://vcloud.example.com/api/admin/extension/service/45" />
   <vcloud:Link
      rel="down:resourceClassActions"
      type="application/vnd.vmware.vcloud.query.records+xml"
      href="https://vcloud.example.com/api/admin/extension/service/resourceclass/83/resourceclassactions" />
   <vcloud:Link
      rel="down:serviceResources"
      type="application/vnd.vmware.vcloud.query.records+xml"
      href="https://vcloud.example.com/api/admin/extension/service/resourceclass/83/serviceresources" />
   <vmext:MimeType>BackupType+xml</vmext:MimeType>
   <vmext:UrlTemplate>{baseUri}backup/{resourceId}</vmext:UrlTemplate>
   <vmext:Nid>nidBackup</vmext:Nid>
   <vmext:UrnPattern>^myNssBackup(?&lt;id&gt;[0-9]*)</vmext:UrnPattern>
</vmext:ResourceClass>