<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Working with cURL</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="span8">

    <h3 id="command">Working with cURL as a command line client</h3>

    <p> The <a href="http://curl.haxx.se/docs/">cURL documentation</a> is pretty comprehensive, but the following are some general points to remember for using cURL against Deltacloud. All the examples on this page assume the deltacloud server is running at localhost:3001: </p>

  <ul>
    <li>
      Credentials are specified with <strong> --user "name:password"  </strong>
    </li>
    <li>
      Request headers are specified with <strong> -H "header: value" </strong>. For the "Accept" header Deltacloud offers a convenient way of specifying the desired response format; you can include the <strong>"?format="</strong> parameter into the request URL rather than setting the Accept header
    </li>
    <li>
      HTTP verbs are specified with <strong>-X VERB</strong>
    </li>
    <li>
      The <strong> -i </strong> flag will show you the response headers and the <strong> -v </strong> flag will show you request and response headers as well as info about cURL activity:
      <pre>
curl -v -X DELETE --user "username:password" -H "Accept: application/xml" http://localhost:3001/api/keys/mykey
      </pre>
    </li>
  </ul>

  </div>

  <div class="span4">

    <ul class="nav nav-list well">
      <li class="nav-header">cURL as a deltacloud client</li>
      <li class="active"><a href="#instances">Work with instances</a></li>
      <li><a href="#images">Work with images</a></li>
      <li><a href="#hardware_profiles">Work with hardware profiles</a></li>
      <li><a href="#realms">Work with realms</a></li>
      <li><a href="#keys">Work with keys</a></li>
      <li><a href="#firewalls">Work with firewalls</a></li>
      <li><a href="#addresses">Work with addresses</a></li>
      <li><a href="#load_balancers">Work with load balancers</a></li>
      <li><a href="#buckets">Work with buckets</a></li>
      <li><a href="#storage_volumes">Work with storage volumes</a></li>
      <li><a href="#storage_snapshots">Work with storage snapshots</a></li>
    </ul>

  </div>
</div>

<hr>

<h4 id="instances">Working with instances</h4>

<p>Display a complete list of instances in xml format:</p>

<pre> curl --user "user:pass" http://localhost:3001/api/instances?format=xml </pre>

<p>Alternatively and if you prefer you can manually specify the Accept header:</p>

<pre> curl --user "user:pass" -H "Accept: application/xml" http://localhost:3001/api/instances</pre>

<p>Launch an instance. Note that in this example parameters are specified as application/x-www-form-urlencoded through the use of the <strong> -d </strong> flag:</p>

<pre> curl -X POST --user "user:pass" -d "image_id=ami-84db39ed&amp;hwp_id=m1.small&amp;keyname=marios_key"  http://localhost:3001/api/instances?format=xml </pre>

<p>Alternatively, you can use the -F flag to specify the parameters as multipart/form-data:</p>

<pre> curl -X POST --user "user:pass" -F "image_id=ami-84db39ed" -F "hwp_id=m1.small" -F "keyname=marios_key"  http://localhost:3001/api/instances?format=xml </pre>

<p>Launch an instance action - reboot:</p>

<pre> curl -X POST --user "user:pass" http://localhost:3001/api/instances/reboot?format=xml </pre>

<p>Run command on an instance (where available):</p>

<pre> curl -X POST --user "user:pass" -F "cmd=uname -a; ls -l" -F "private_key=`cat /location/of/ssh/keyfile`" http://localhost:3001/api/instances/i-d77cd0ac/run?format=xml </pre>

<h4 id="images">Working with images</h4>

<p>Get the details of a specific image:</p>

<pre> curl --user "user:pass" http://localhost:3001/api/images/ami-3dc06a54?format=xml </pre>

<p>Create an image from an existing instance (where available):</p>

<pre>curl -X POST --user "user:pass" -d "instance_id=i-d77cd0ac&amp;name=mariostestimage" http://localhost:3001/api/images?format=xml </pre>

<p>Delete an image:</p>

<pre>curl -X DELETE --user "user:pass" http://localhost:3001/api/images/ami-3dc06a54?format=xml </pre>

<h4 id="hardware_profiles">Working with hardware profiles</h4>

<p>Get a list of all hardware profiles:</p>

<pre> curl --user "user:pass" http://localhost:3001/api/hardware_profiles?format=xml</pre>

<p>Get the details of a specific hardware profile:</p>

<pre> curl --user "user:pass" http://localhost:3001/api/hardware_profiles/m2.4xlarge?format=xml </pre>

<h4 id="realms">Working with realms</h4>

<p>Get a list of all realms:</p>

<pre> curl --user "user:pass" http://localhost:3001/api/realms?format=xml</pre>

<p>Get the details of a specific realm:</p>

<pre> curl --user "user:pass" http://localhost:3001/api/realms/us-east-1a?format=xml </pre>

<h4 id="realms">Working with keys</h4>

<p>Get a list of all keys:</p>

<pre> curl --user "user:pass" http://localhost:3001/api/keys?format=xml</pre>

<p>Create a new key (where available):</p>

<pre> curl -X POST --user "user:pass" -d "name=mynewkey" http://localhost:3001/api/keys?format=xml </pre>

<p>Import an existing key (where available):</p>

<pre> curl -X POST --user "user:pass" -F "name=mynewkey" -F "public_key=`cat /location/of/public/key/id_rsa.pub`" http://localhost:3001/api/keys?format=xml </pre>

<p>Delete a key:</p>

<pre> curl -X DELETE --user "user:pass" http://localhost:3001/api/keys/mynewkey?format=xml </pre>

<h4 id="firewalls">Working with firewalls</h4>

<p>Get a list of all firewalls:</p>

<pre> curl -v --user "user:pass" http://localhost:3001/api/firewalls?format=xml </pre>

<p>Create a new firewall:</p>

<pre> curl -v -X POST --user "user:pass" -d "name=my_new_firewall&amp;description=a test firewall" http://localhost:3001/api/firewalls?format=xml</pre>

<p>Create a new firewall rule - port 22 tcp,  with one source firewall (group) and 2 IP addresses:</p>

<pre> curl -v -X POST --user "user:pass" -F "protocol=tcp" -F "port_from=22" -F "port_to=22" -F "group1=default" -F "group1owner=821108636519" -F "ip_address1=192.168.1.1/24" -F "ip_address2=65.128.31.27/32" http://localhost:3001/api/firewalls/my_new_firewall/rules</pre>

<p>Delete a firewall rule: </p>

<pre> curl -v -X DELETE --user "user:pass" http://localhost:3001/api/firewalls/marios_test_firewall/821108636519~tcp~22~22~@group,821108636519,default,@address,ipv4,192.168.1.1,24,@address,ipv4,65.128.31.27,32?format=xml </pre>

<p>Delete a firewall:</p>

<pre>curl -v -X DELETE --user "user:pass" http://localhost:3001/api/firewalls/marios_test_firewall?format=xml </pre>

<h4 id="addresses">Working with addresses</h4>

<p>Get a list of all addresses:</p>

<pre> curl -v --user "user:pass" http://localhost:3001/api/addresses?format=xml </pre>

<p>Create a new address:</p>

<pre> curl -v --user "user:pass" -X POST http://localhost:3001/api/addresses?format=xml</pre>

<p>Associate an address with an instance:</p>

<pre> curl -v -X POST --user "user:pass" -d "instance_id=i-d77cd0ac" http://localhost:3001/api/addresses/23.23.176.127/associate?format=xml </pre>

<p>Disassociate an address from an instance:</p>

<pre>curl -v -X POST --user "user:pass" http://localhost:3001/api/addresses/23.23.176.127/disassociate?format=xml  </pre>

<p>Delete an address:</p>

<pre>curl -v -X DELETE --user "user:pass" http://localhost:3001/api/addresses/23.23.176.127?format=xml  </pre>

<h4 id="load_balancers">Working with load balancers</h4>

<p>Get a list of all load balancers:</p>

<pre> curl -v --user "user:pass" http://localhost:3001/api/load_balancers?format=xml </pre>

<p>Create a load balancer:</p>

<pre> curl -v -X POST --user "user:pass" -d "name=webtraffic-balancer&amp;realm_id=us-east-1c&amp;listener_protocol=HTTP&amp;
listener_balancer_port=80&amp;listener_instance_port=3001" http://localhost:3001/api/load_balancers?format=xml </pre>

<p>Register an instance with a load balancer:</p>

<pre> curl -v -X POST --user "user:pass" -d "instance_id=i-4f06b52e" http://localhost:3001/api/load_balancers/webtraffic-balancer/register?format=xml </pre>

<p>Unregister an instance from a load balancer:</p>

<pre> curl -v -X POST --user "user:pass" -d  "instance_id=i-4f06b52e" http://localhost:3001/api/load_balancers/webtraffic-balancer/unregister?format=xml </pre>

<p>Delete a load balancer:</p>

<pre>curl -v --user "user:pass" -X DELETE http://localhost:3001/api/load_balancers/web-traffic-balancer</pre>

<h4 id="buckets">Working with buckets</h4>

<p>Get the details of a bucket:</p>

<pre>curl -v --user "user:pass" http://localhost:3001/api/buckets/my_bucket?format=xml</pre>

<p>Create a new bucket:</p>

<pre>curl -v --user "user:pass" -X POST -d "name=shinynewbucket" http://localhost:3001/api/buckets?format=xml</pre>

<p>Create a new blob, specifying a content-type and some metadata:</p>

<pre>curl -v --user "user:pass" -H "content-type: image/jpg" -H 'X-Deltacloud-Blobmeta-Name:mariosblob' -H 'X-Deltacloud-Blobmeta-Author:me' --upload-file "/some/location/image.jpg" http://localhost:3001/api/buckets/shinynewbucket/newblob?format=xml </pre>

<p> Note that the <strong>--upload-file</strong> parameter above causes cURL to issue a HTTP PUT </p>

<p> Get blob metadata: </p>

<pre> curl -v --user "user:pass" -X HEAD http://localhost:3001/api/buckets/shinynewbucket/newblob</pre>

<p>Note that blob metadata is returned in the HTTP response headers. So the use of the <strong>-v</strong> flag is important here or you will not see the metadata.</p>

<p>Update blob metadata:</p>

<pre>curl -v --user "user:pass" -X POST -H 'X-Deltacloud-Blobmeta-Name:mariosblobV2' -H 'X-Deltacloud-Blobmeta-Version:v2.1.1'  http://localhost:3001/api/buckets/shinynewbucket/newblob?format=xml</pre>

<p>Delete a blob:</p>
<pre>curl -v --user "user:pass" -X DELETE http://localhost:3001/api/buckets/shinynewbucket/newblob?format=xml</pre>

<p>Delete a bucket:</p>
<pre>curl -v --user "user:pass" -X DELETE http://localhost:3001/api/bucket/shinynewbucket</pre>

<h4 id="storage_volumes">Working with storage volumes</h4>

<p>Get a list of all storage volumes:</p>

<pre>curl -v --user "user:pass" http://localhost:3001/api/storage_volumes?format=xml</pre>

<p>Create a new storage volume:</p>

<pre>curl -v --user "user:pass" -X POST -d "capacity=10&amp;realm_id=us-east-1c" http://localhost:3001/api/storage_volumes?format=xml</pre>

<p>Attach a volume to a running instance:</p>

<pre>curl -v --user "user:pass" -X POST -d "instance_id=i-b100b3d0&amp;device=/dev/sdi" http://localhost:3001/api/storage_volumes/vol-0bc0de60/attach?format=xml</pre>

<p>Detach a volume (from whichever instance it is connected to):</p>

<pre>curl -v --user "user:pass" -X POST  http://localhost:3001/api/storage_volumes/vol-0bc0de60/detach?format=xml</pre>

<p>Delete a storage volume:</p>
<pre>curl -v --user "user:pass" -X DELETE http://localhost:3001/api/storage_volumes/vol-0bc0de60?format=xml</pre>

<h4 id="storage_snapshots">Working with storage snapshots</h4>

<p>Get details about a specific storage snapshot:</p>
<pre>curl -v --user "user:pass" http://localhost:3001/api/storage_snapshots/snap-45b8d024?format=xml</pre>

<p>Create a new storage snapshot:</p>
<pre>curl -v --user "user:pass" -X POST -d "volume_id=vol-99fbe5f2" http://localhost:3001/api/storage_snapshots?format=xml</pre>

<p>Delete a storage snapshot:</p>
<pre>curl -v --user "user:pass" -X DELETE http://localhost:3001/api/storage_snapshots/snap-dda6cebc?format=xml</pre>


      <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>
