A system administrator can share a catalog to make it visible to the administrators of specific organizations in a cloud.

The owner of a catalog can share it to make it available to all organizations in the cloud. When more selective sharing is required, a system administrator can share a catalog with specific organizations if that catalog is not already shared to all organizations.

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

1

Retrieve the XML representation of the catalog.

Use a request like this one:

GET https://vcloud.example.com/api/org/id/catalog/id
2

Examine the Catalog response to find the controlAccess links that it contains.

These links have the following form:

<Link
   rel="down"
   type="application/vnd.vmware.vcloud.controlAccess+xml"
   href="https://vcloud.example.com/api/org/id/catalog/id/controlAccess/"/>
<Link
   rel="controlAccess"
   type="application/vnd.vmware.vcloud.controlAccess+xml"
   href="https://vcloud.example.com/api/org/id/catalog/id/action/controlAccess/"/>
3

Create a ControlAccessParams element request body that specifies the details of the update.

4

POST the ControlAccessParams element to the action/controlAccess link for the catalog.

The catalog is shared with administrators of the specified organizations.

This request updates the access controls of a catalog to share it to a single organization, giving read-only access to all users in that organization.

Request:

POST https://vcloud.example.com/api/org/9/catalog/32/action/controlAccess/"/>
Content-Type: application/vnd.vmware.vcloud.controlAccess+xml
...
<?xml version="1.0" encoding="UTF-8"?>
<ControlAccessParams
   xmlns="http://www.vmware.com/vcloud/v1.5">
   <IsSharedToEveryone>false</IsSharedToEveryone>
   <AccessSettings>
       <AccessSetting>
         <Subject
            type="application/vnd.vmware.admin.org+xml"
            href="https://vcloud.example.com/api/admin/org/355"/>
         <AccessLevel>ReadOnly</AccessLevel>
      </AccessSetting>
   </AccessSettings>
</ControlAccessParams>

Response:

200 OK
Content-Type: application/vnd.vmware.vcloud.controlAccess+xml
...
<ControlAccessParams
   xmlns="http://www.vmware.com/vcloud/v1.5">
   <IsSharedToEveryone>false</IsSharedToEveryone>
   <AccessSettings>
       <AccessSetting>
         <Subject
            type="application/vnd.vmware.admin.org+xml"
            href="https://vcloud.example.com/api/admin/org/355"/>
         <AccessLevel>ReadOnly</AccessLevel>
      </AccessSetting>
   </AccessSettings>
</ControlAccessParams>