An organization administrator in an organization that has permission to publish externally can create a catalog whose contents, catalog items created locally, are made available to external consumers on a subscription basis.

Organizations that are permitted to publish externally can enable any of their catalogs for external publication. A catalog that is enabled for external publication becomes accessible at a URL assigned by the system, and can be protected by a password. A catalog in another instance of vCloud Director can subscribe to an externally published catalog and maintain an up-to-date set of catalog items. See Synchronization.

You can use this procedure to create a new catalog that is enabled for external publication, or you can use the procedure shown in Publish an Existing Catalog Externally to enable an existing catalog for external publication. If a catalog has an external subscription, you cannot enable it for external publication.

This operation requires the rights included in the predefined Catalog Author role or an equivalent set of rights.

Verify that at least one VDC exists in your organization. You cannot create a catalog in an organization that has no VDCs.

Verify that your organization has permission to publish externally.

The OrgGeneralSettings in the AdminOrg element that represents your organization must have a CanPublishExternally element with a value of true.

<CanPublishExternally>true</CanPublishExternally>

Retrieve the XML representation of the organization to which to add the catalog, and examine the response to locate the Link element that contains the URL for adding catalogs to the organization. See Add a Catalog to an Organization.

1

Create an AdminCatalog element that includes PublishExternalCatalogParams.

See the request portion of Example: Create a Catalog For External Publication.

2

POST the AdminCatalog element to the organization's add URL for catalogs.

See the request portion of Example: Create a Catalog For External Publication.

The server creates an empty catalog and returns its representation in the response. See the response portion of Example: Create a Catalog.

This request is similar to the one used in Example: Create a Catalog but includes a PublishExternalCatalogParams element that specifies that the catalog is to be published externally. This request creates the catalog with a content cache, which can improve synchronization performance for external catalogs that subscribe to this one, but requires enough space on the system's transfer storage to accommodate all of the items in the catalog. This request also sets the PreserveIdentityInfoFlag element to false, which prevents values such as the BIOS UUID and MAC address associated with virtual machine identities from being published. If you omit this element or set its value to true, these values are published for all catalog items that represent virtual machines.

Request:

POST https://vcloud.example.com/api/admin/org/26/catalogs
Content-Type: application/vnd.vmware.admin.catalog+xml
...
<?xml version="1.0" encoding="UTF-8"?>
<AdminCatalog
   xmlns="http://www.vmware.com/vcloud/v1.5"
   name="PublishedExternally">
   <Description>Example Catalog for External Publication</Description>
   <PublishExternalCatalogParams>
      <IsPublishedExternally>true</IsPublishedExternally>
      <IsCacheEnabled>true</IsCacheEnabled>
      <PreserveIdentityInfoFlag>false</PreserveIdentityInfoFlag>
      <Password>Pa55w0rd</Password>
   </PublishExternalCatalogParams>
</AdminCatalog>

The response is similar to the one shown in Example: Create a Catalog, but includes the PublishExternalCatalogParams element. The embedded Task element tracks the creation of the catalog and its accompanying Web site. The Password element in the request is never returned.

Response:

201 Created
Content-Type: application/vnd.vmware.admin.catalog+xml
...
<AdminCatalog
   xmlns:vcloud="http://www.vmware.com/vcloud/v1.5"
   name="PublishedExternally"
   id="urn:vcloud:catalog:33"
   type="application/vnd.vmware.admin.catalog+xml"
   href="https://vcloud.example.com/api/admin/catalog/33">
   ...
   <Link
      rel="up"
      type="application/vnd.vmware.admin.organization+xml"
      href="https://vcloud.example.com/api/admin/org/26" />
   <Link ... >
   ...
   <Tasks>
      <Task 
         status="running"
         ...
         operation="Creating Catalog PublishedExternally (33)"
         ...>
         ...
      <Task>
   <Tasks>
   <Description>Example Catalog for External Publication</Description>
   <CatalogItems/>
   <IsPublished>false</IsPublished>
   <DateCreated>2013-06-18T09:55:59.131-07:00</DateCreated>
   <VersionNumber>1</VersionNumber>
   <CatalogStorageProfiles/>
   <PublishExternalCatalogParams>
      <IsPublishedExternally>true</IsPublishedExternally>
      <IsCacheEnabled>true</IsCacheEnabled>
      <PreserveIdentityInfoFlag>false</PreserveIdentityInfoFlag>
   </PublishExternalCatalogParams>
</AdminCatalog>

When the task completes, the PublishExternalCatalogParams includes a URL at which external consumers can connect to the catalog.

<AdminCatalog ... >
   ...
   <PublishExternalCatalogParams>
      <IsPublishedExternally>true</IsPublishedExternally>
      <IsCacheEnabled>true</IsCacheEnabled>
    <CatalogPublishedUrl>https://vcloud2.example.com/vcsp/catalog/5</CatalogPublishedUrl>
   </PublishExternalCatalogParams>
</AdminCatalog>