<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>    

<!-- Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at
 
   http://www.apache.org/licenses/LICENSE-2.0
 
 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->

<section id="making-api-request">
        <title>Making API Requests</title>
        <para>All &PRODUCT; API requests are submitted in the form of a HTTP GET/POST with an associated command and any parameters. A request is composed of the following whether in HTTP or HTTPS:
        </para>
        <itemizedlist>
            <listitem><para>&PRODUCT; API URL: This is the web services API entry point(for example, http://www.cloud.com:8080/client/api)</para></listitem> 
            <listitem><para>Command: The web services command you wish to execute, such as start a virtual machine or create a disk volume</para></listitem>
            <listitem><para>Parameters: Any additional required or optional parameters for the command</para></listitem>
        </itemizedlist>
        <para>A sample API GET request looks like the following:</para>
        <programlisting>http://localhost:8080/client/api?command=deployVirtualMachine&amp;serviceOfferingId=1&amp;diskOfferingId=1&amp;templateId=2&amp;zoneId=4&amp;apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&amp;signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D
        </programlisting>
        <para>Or in a more readable format:</para>
        <programlisting>
1. http://localhost:8080/client/api
2. ?command=deployVirtualMachine
3. &amp;serviceOfferingId=1
4. &amp;diskOfferingId=1
5. &amp;templateId=2
6. &amp;zoneId=4
7. &amp;apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXqjB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ
8. &amp;signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D
        </programlisting>
        <para>The first line is the &PRODUCT; API URL. This is the Cloud instance you wish to interact with.</para>
        <para>The second line refers to the command you wish to execute.  In our example, we are attempting to deploy a fresh new virtual machine.  It is preceded by a (?) to separate itself from the &PRODUCT; API URL.</para>
        <para>Lines 3-6 are the parameters for this given command.  To see the command and its request parameters, please refer to the appropriate section in the &PRODUCT; API documentation.  Each parameter field-value pair (field=value) is preceded by an ampersand character (&amp;).</para>
        <para>Line 7 is the user API Key that uniquely identifies the account.  See Signing API Requests on page 7.</para>
        <para>Line 8 is the signature hash created to authenticate the user account executing the API command.  See Signing API Requests on page 7.</para>            
    </section>

