<?xml version="1.0" encoding="UTF-8"?>
<page>
  <created-at type="datetime">2009-02-26T18:47:17Z</created-at>
  <description>Flesh out VM backup semantics</description>
  <id type="integer">943</id>
  <name>Home</name>
  <number type="integer">12</number>
  <person-id type="integer">11</person-id>
  <text>&lt;h1&gt;The Sun Cloud API&lt;/h1&gt;

&lt;h3&gt;Introduction&lt;/h3&gt;

This wiki specifies a RESTful API for creating and managing cloud resources, including compute, storage, and networking components.  

Usage of the API is via the HTTP protocol.  The GET, POST, PUT, and DELETE requests are all used, although most tasks can be accomplished with GET and POST.  Resource representations are in JSON.

The API presupposes no particular structure in the URI space.  The starting point is a URI, supplied by the cloud service provider, which identifies the cloud itself.  The cloud's representation contains URIs for the other resources in the cloud, and also for operations which may be performed upon them (for example deploying and starting virtual machines).  

The specification of the Sun Cloud API includes:
* Common behaviors that apply across all requests and responses.
* Resource models, which describe the JSON data structures used in requests and responses.
* The requests that may be sent to cloud resources, and the responses expected.

This API operates on the following primary resource types:
* Cloud: A top-level construct which groups all the Virtual Data Centers to which an API user has access.
* Virtual Data Center (VDC): An isolated container which is populated with Clusters, Private Virtual Networks, Public Addresses, Storage Volumes, Volume Snapshots.
* Cluster: An administrative grouping of Virtual Machines, useful for access control, copying or cloning, geographic isolation, and scripting automation.
* Virtual Machine (VM): A server.
* Private Virtual Network (VNet): A subnet, not connected to the Internet, which may be used to connect Virtual Machines within a VDC.
* Public Address: A connection to the Internet.
* Storage Volume: A storage resource which may be accessed via WebDAV and other storage protocols.
* Volume Snapshot: A snapshot of the state of a Storage Volume.
The API additionally operates on secondary resources such as VM Backups and Network Interfaces.

[[HelloCloud|&quot;Hello, Cloud&quot;: An illustrative walk-through of the Sun Cloud API]] is designed to serve as the starting-point for learning this API.

&lt;h3&gt;Specifications&lt;/h3&gt;

* [[Common Behaviors]]
* [[CloudAPISpecificationResourceModels|Resource Models]]
* [[CloudAPIBackupRequests|Requests to Backup Resources]]
* [[CloudAPICloudRequests|Requests to Cloud Resources]]
* [[CloudAPIClusterRequests|Requests to Cluster Resources]]
* [[CloudAPIPublicAddressRequests|Requests to Public Address Resources]]
* [[CloudAPISnapshotRequests|Requests to Snapshot Resources]]
* [[CloudAPIVDCRequests|Requests to VDC Resources]]
* [[CloudAPIVMRequests|Requests to VM Resources]]
* [[CloudAPIVNetRequests|Requests to VNet Resources]]
* [[CloudAPIVolumeRequests|Requests to Volume Resources]]

A [[CloudCommandClient|command line client]] for communicating with implementations of this API is also available.

(Work in progress): [[CLIExample1|a simple example using the CLI]]

Copyright &amp;copy; Sun Microsystems, 2009.  This work is licensed under [http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]



</text>
  <text-as-html>&lt;p&gt;&lt;h1&gt;The Sun Cloud API&lt;/h1&gt;

&lt;/p&gt;&lt;p&gt;&lt;h3&gt;Introduction&lt;/h3&gt;

&lt;/p&gt;&lt;p&gt;This wiki specifies a RESTful API for creating and managing cloud resources, including compute, storage, and networking components.  

&lt;/p&gt;&lt;p&gt;Usage of the API is via the HTTP protocol.  The GET, POST, PUT, and DELETE requests are all used, although most tasks can be accomplished with GET and POST.  Resource representations are in JSON.

&lt;/p&gt;&lt;p&gt;The API presupposes no particular structure in the URI space.  The starting point is a URI, supplied by the cloud service provider, which identifies the cloud itself.  The cloud's representation contains URIs for the other resources in the cloud, and also for operations which may be performed upon them (for example deploying and starting virtual machines).  

&lt;/p&gt;&lt;p&gt;The specification of the Sun Cloud API includes:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt; Common behaviors that apply across all requests and responses.
&lt;/li&gt;&lt;li&gt; Resource models, which describe the JSON data structures used in requests and responses.
&lt;/li&gt;&lt;li&gt; The requests that may be sent to cloud resources, and the responses expected.
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
This API operates on the following primary resource types:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt; Cloud: A top-level construct which groups all the Virtual Data Centers to which an API user has access.
&lt;/li&gt;&lt;li&gt; Virtual Data Center (VDC): An isolated container which is populated with Clusters, Private Virtual Networks, Public Addresses, Storage Volumes, Volume Snapshots.
&lt;/li&gt;&lt;li&gt; Cluster: An administrative grouping of Virtual Machines, useful for access control, copying or cloning, geographic isolation, and scripting automation.
&lt;/li&gt;&lt;li&gt; Virtual Machine (VM): A server.
&lt;/li&gt;&lt;li&gt; Private Virtual Network (VNet): A subnet, not connected to the Internet, which may be used to connect Virtual Machines within a VDC.
&lt;/li&gt;&lt;li&gt; Public Address: A connection to the Internet.
&lt;/li&gt;&lt;li&gt; Storage Volume: A storage resource which may be accessed via WebDAV and other storage protocols.
&lt;/li&gt;&lt;li&gt; Volume Snapshot: A snapshot of the state of a Storage Volume.
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The API additionally operates on secondary resources such as VM Backups and Network Interfaces.

&lt;/p&gt;&lt;p&gt;&lt;a href='&lt;?url_for_page HelloCloud?&gt;' class='internal'&gt;&amp;quot;Hello, Cloud&amp;quot;: An illustrative walk-through of the Sun Cloud API&lt;/a&gt; is designed to serve as the starting-point for learning this API.

&lt;/p&gt;&lt;p&gt;&lt;h3&gt;Specifications&lt;/h3&gt;

&lt;/p&gt;&lt;ul&gt;&lt;li&gt; &lt;a href='&lt;?url_for_page Common Behaviors?&gt;' class='internal'&gt;Common Behaviors&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href='&lt;?url_for_page CloudAPISpecificationResourceModels?&gt;' class='internal'&gt;Resource Models&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href='&lt;?url_for_page CloudAPIBackupRequests?&gt;' class='internal'&gt;Requests to Backup Resources&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href='&lt;?url_for_page CloudAPICloudRequests?&gt;' class='internal'&gt;Requests to Cloud Resources&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href='&lt;?url_for_page CloudAPIClusterRequests?&gt;' class='internal'&gt;Requests to Cluster Resources&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href='&lt;?url_for_page CloudAPIPublicAddressRequests?&gt;' class='internal'&gt;Requests to Public Address Resources&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href='&lt;?url_for_page CloudAPISnapshotRequests?&gt;' class='internal'&gt;Requests to Snapshot Resources&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href='&lt;?url_for_page CloudAPIVDCRequests?&gt;' class='internal'&gt;Requests to VDC Resources&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href='&lt;?url_for_page CloudAPIVMRequests?&gt;' class='internal'&gt;Requests to VM Resources&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href='&lt;?url_for_page CloudAPIVNetRequests?&gt;' class='internal'&gt;Requests to VNet Resources&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href='&lt;?url_for_page CloudAPIVolumeRequests?&gt;' class='internal'&gt;Requests to Volume Resources&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
A &lt;a href='&lt;?url_for_page CloudCommandClient?&gt;' class='internal'&gt;command line client&lt;/a&gt; for communicating with implementations of this API is also available.

&lt;/p&gt;&lt;p&gt;(Work in progress): &lt;a href='&lt;?url_for_page CLIExample1?&gt;' class='internal'&gt;a simple example using the CLI&lt;/a&gt;

&lt;/p&gt;&lt;p&gt;Copyright &amp;copy; Sun Microsystems, 2009.  This work is licensed under &lt;a class='external' href=&quot;http://creativecommons.org/licenses/by/3.0/&quot;&gt;Creative Commons Attribution 3.0 Unported License&lt;/a&gt;

&lt;/p&gt;&lt;p&gt;&lt;br /&gt;

&lt;/p&gt;</text-as-html>
  <updated-at type="datetime">2009-09-24T20:39:13Z</updated-at>
  <wiki-id type="integer">3636</wiki-id>
</page>
