<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>API entry point</title>
    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <!-- Le JavaScript -->
    <script src="/assets/js/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script src="/assets/js/bootstrap-dropdown.js" type="text/javascript"></script>
    <script src="/assets/js/jquery.tweet.js" type="text/javascript"></script>
    <script src="/assets/js/application.js" type="text/javascript"></script>
    <script src="/assets/js/bootstrap-transition.js"></script>
    <script src="/assets/js/bootstrap-alert.js"></script>
    <script src="/assets/js/bootstrap-modal.js"></script>
    <script src="/assets/js/bootstrap-scrollspy.js"></script>
    <script src="/assets/js/bootstrap-tab.js"></script>
    <script src="/assets/js/bootstrap-tooltip.js"></script>
    <script src="/assets/js/bootstrap-popover.js"></script>
    <script src="/assets/js/bootstrap-button.js"></script>
    <script src="/assets/js/bootstrap-collapse.js"></script>
    <script src="/assets/js/bootstrap-carousel.js"></script>
    <script src="/assets/js/bootstrap-typeahead.js"></script>

    <!-- Le styles -->
    <link href="/assets/css/bootstrap.css" rel="stylesheet">
    <link href="/assets/css/application.css" rel="stylesheet">
    <link rel="shortcut icon" href="/assets/img/favicon.ico">
  </head>

  <body><div style="background: red"><h1>2015/07/20 - Apache Deltacloud has been retired. </h1><h2>For more information, please explore the <a href="http://attic.apache.org/">Attic</a>. </h2></div>

    <div class="navbar navbar-fixed-top">
      <div class="navbar-inner">
        <div class="container">
          <a class="brand" href="/"><img src="/assets/img/logo.png" width="152"
            alt="Deltacloud API"/></a>
          <ul class="nav top-nav">
  <li><a href="/">Home</a></li>
  <li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown">About<b class="caret"></b></a>
    <ul class="dropdown-menu">
      <li><a href="/about.html">What is Deltacloud?</a></li>
      <li><a href="/drivers.html#drivers">Supported Providers</a></li>
    </ul>
  </li>
  <li><a href="/download.html">Download</a></li>
  <li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Installation<b class="caret"></b></a>
    <ul class="dropdown-menu">
      <li><a href="/install-deltacloud.html">Install Deltacloud</a></li>
      <li><a href="/run-deltacloud-server.html">Run the Deltacloud Server</a></li>
    </ul>
  </li>
  <li class="dropdown">
    <a href="/usage.html" class="dropdown-toggle" data-toggle="dropdown">Usage<b class="caret"></b></a>
    <ul class="dropdown-menu">
      <li><a href="/usage.html#usingapi">Using API</a></li>
      <li><a href="/usage.html#clients">Client Libraries</a></li>
      <li><a href="/command-tools.html">Command Line Tools</a></li>
    </ul>
  </li>
  <li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contribute<b class="caret"></b></a>
    <ul class="dropdown-menu">
      <li><a href="/getting-sources.html">Getting Sources</a></li>
      <li><a href="/how-to-contribute.html">How Can I Contribute?</a></li>
    </ul>
  </li>
  <li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown">API<b class="caret"></b></a>
    <ul class="dropdown-menu">
      <li><a href="/rest-api.html">Deltacloud REST API</a></li>
      <li><a href="/curl-examples.html">Deltacloud API cURL examples</a></li>
      <li><a href="/drivers.html">Drivers API</a></li>
    </ul>
  </li>
  <li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown">CIMI<b class="caret"></b></a>
    <ul class="dropdown-menu">
      <li><a href="/cimi-rest.html">CIMI REST API</a></li>
      <li><a href="/cimi-curl.html">CIMI cURL Examples</a></li>
    </ul>
  </li>
  <li><a href="/contact.html">Contact</a></li>
</ul>

        </div>
      </div>

    </div>

    <div class="container content">

      <p><br></p>

<div class="row">
  <div class="span9">

<h3 id="api-entry">The API entry point</h3>

<p>
Any part of the official API can be reached through the main entry point, by default <a href="http://localhost:3001/api">http://localhost:3001/api</a>. The entry point lists the resources for the current cloud provider, which the server knows about. For example, for the Amazon EC2 driver these are:
</p>

<ul style="margin-bottom:0px">
<li>instances</li>
<li>instance states</li>
<li>images</li>
<li>realms</li>
</ul>

  </div>
  <div class="span3">

<ul class="nav nav-list well">
  <li class="nav-header">
    REST API
  </li>
  <li><a href="rest-api.html">Introduction</a></li>
  <li class="active"><a href="#api-entry">API entry point</a></li>
    <ul class="nav nav-list">
      <li><a href="#feature">Features</a></li>
    </ul>
  <li><a href="compute-resources.html">Compute resources</a></li>
  <li><a href="storage-resources.html">Storage resources</a></li>
</ul>

  </div>
</div>

<ul style="margin-top:0px">
<li>hardware profiles</li>
<li>keys</li>
<li>buckets</li>
<li>storage volumes</li>
<li>storage snapshots</li>
<li>load balancers</li>
<li>addresses</li>
<li>firewalls</li>
</ul>

<p>Example request:</p>

<pre>
GET /api?format=xml HTTP/1.1
Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
Host: localhost:3001
Accept: */*
</pre>

<p>Server response:</p>

<pre>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 1439

&lt;api driver='ec2' version='0.3.0'&gt;
  &lt;link href='http://localhost:3001/api/instance_states' rel='instance_states'&gt;
  &lt;/link&gt;
  &lt;link href='http://localhost:3001/api/drivers' rel='drivers'&gt;
  &lt;/link&gt;
  &lt;link href='http://localhost:3001/api/addresses' rel='addresses'&gt;
  &lt;/link&gt;
  &lt;link href='http://localhost:3001/api/hardware_profiles' rel='hardware_profiles'&gt;
  &lt;/link&gt;
  &lt;link href='http://localhost:3001/api/firewalls' rel='firewalls'&gt;
  &lt;/link&gt;
  &lt;link href='http://localhost:3001/api/storage_volumes' rel='storage_volumes'&gt;
  &lt;/link&gt;
  &lt;link href='http://localhost:3001/api/images' rel='images'&gt;
    &lt;feature name='owner_id'&gt;
    &lt;/feature&gt;
  &lt;/link&gt;
  &lt;link href='http://localhost:3001/api/realms' rel='realms'&gt;
  &lt;/link&gt;
  &lt;link href='http://localhost:3001/api/buckets' rel='buckets'&gt;
    &lt;feature name='bucket_location'&gt;
    &lt;/feature&gt;
  &lt;/link&gt;
  &lt;link href='http://localhost:3001/api/instances' rel='instances'&gt;
    &lt;feature name='user_data'&gt;
    &lt;/feature&gt;
    &lt;feature name='authentication_key'&gt;
    &lt;/feature&gt;
    &lt;feature name='firewalls'&gt;
    &lt;/feature&gt;
    &lt;feature name='instance_count'&gt;
    &lt;/feature&gt;
    &lt;feature name='attach_snapshot'&gt;
    &lt;/feature&gt;
  &lt;/link&gt;
  &lt;link href='http://localhost:3001/api/storage_snapshots' rel='storage_snapshots'&gt;
  &lt;/link&gt;
  &lt;link href='http://localhost:3001/api/keys' rel='keys'&gt;
  &lt;/link&gt;
  &lt;link href='http://localhost:3001/api/load_balancers' rel='load_balancers'&gt;
  &lt;/link&gt;
&lt;/api&gt;
</pre>

<p>
Some implementations for the Apache Deltacloud API may not support all resource types defined by API. For example, a Deltacloud instance pointing at a storage-only service will not expose compute resources like instances and hardware profiles.
</p>

<h3 id="feature">Features</h3>

<p>
The Apache Deltacloud API defines the standard behavior and semantics for each of the resource types as a baseline for any API implementation. It is often desirable to enhance standard API behavior with specific features. The API also defines all features that can be supported by the API implementation - each of them has a fixed predefined meaning. For example, the feature user_name indicates that a user-specified name can be assigned to an instance when it is created. Features are advertised in the top-level entry point as illustrated below:
</p>

<pre>
&lt;api driver='mock' version='0.3.0'&gt;
  ...
  &lt;link href='http://localhost:3001/api/instances' rel='instances'&gt;
    &lt;feature name='hardware_profiles'&gt;&lt;/feature&gt;
    &lt;feature name='user_name'&gt;&lt;/feature&gt;
    &lt;feature name='authentication_key'&gt;&lt;/feature&gt;
  &lt;/link&gt;
  ...
&lt;/api&gt;
</pre>

<p>
These features are available to each collection in the Deltacloud API:
</p>

<table class="table table-striped table-condensed">
  <thead>
    <tr>
      <th>Feature</th>
      <th>Collection</th>
      <th>Operation</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>owner_id</td>
      <td>Images</td>
      <td>GET /api/images</td>
      <td>allows filtering of the image list by owner_id</td>
    </tr>
    <tr>
      <td>user_name</td>
      <td>Instances</td>
      <td>POST /api/instances</td>
      <td>accepts a user-defined name on instance creation</td>
    </tr>
    <tr>
      <td>user_data</td>
      <td>Instances</td>
      <td>POST /api/instances</td>
      <td>provide user-defined data that is accessible by the running instance</td>
    </tr>
    <tr>
      <td>user_iso</td>
      <td>Instances</td>
      <td>POST /api/instances</td>
      <td>provides a base64 encoded gzipped ISO file accessible as CD-ROM drive by the running instnace</td>
    </tr>
    <tr>
      <td>user_files</td>
      <td>Instances</td>
      <td>POST /api/instances</td>
      <td>accept files that will be placed into the launched instance</td>
    </tr>
    <tr>
      <td>firewalls</td>
      <td>Instances</td>
      <td>POST /api/instances</td>
      <td>put the instance into one or more firewalls on launch</td>
    </tr>
    <tr>
      <td>authentication_key</td>
      <td>Instances</td>
      <td>POST /api/instances</td>
      <td>provides the authentication key to access the instance</td>
    </tr>
    <tr>
      <td>authentication_password</td>
      <td>Instances</td>
      <td>POST /api/instances</td>
      <td>provides the password to access the running instance</td>
    </tr>
    <tr>
      <td>instance_count</td>
      <td>Instances</td>
      <td>POST /api/instances</td>
      <td>specifies the number of instances to launch in one operation</td>
    </tr>
    <tr>
      <td>attach_snapshot</td>
      <td>Instances</td>
      <td>POST /api/instances</td>
      <td>attaches a storage snapshot to an instance as a storage volume</td>
    </tr>
    <tr>
      <td>sandboxing</td>
      <td>Instances</td>
      <td>POST /api/instances</td>
      <td>launches an instance from a sandbox image (Gogrid specific)</td>
    </tr>
    <tr>
      <td>bucket_location</td>
      <td>Buckets</td>
      <td>POST /api/buckets</td>
      <td>specifies a location that the bucket should be created in (e.g. specific cloud-provider datacenter)</td>
    </tr>
  </tbody>
</table>

<p><a class="btn btn-inverse btn-large" style="float: right" href="compute-resources.html">Compute resources <i class="icon-arrow-right icon-white" style="vertical-align:baseline"> </i></a></p>

<p><br></p>


      <footer class="footer">
        <p class="pull-right"><span class='icon-circle-arrow-up'>&nbsp;</span><a href="#">Back to top</a></p>
        <div class='row'>
          <div class='span3'>
            <img src="/assets/img/asf.png" alt="Apache Software Foundation"/>
          </div>
          <div class='span9'>
            <strong>Apache Deltacloud</strong> is a top-level project at the <a
              href="http://www.apache.org">Apache Software Foundation</a>,
            having graduated from the ASF Incubator in October
            2011. Through a collaborative and meritocratic development process, Apache
            projects deliver enterprise-grade, freely available software products that
            attract large communities of users. 
          </div>
        </div>
      </footer>

    </div> <!-- /container -->

<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://stats.salasaga.org/aeolus/piwik/" : "http://stats.salasaga.org/aeolus/piwik/");
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script><script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 2);
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch( err ) {}
</script><noscript><p><img src="http://stats.salasaga.org/aeolus/piwik/piwik.php?idsite=2" style="border:0" alt="" /></p></noscript>
<!-- End Piwik Tracking Code -->

  </body>
</html>
