<?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="getting-started">
        <title>Getting Started</title>
        <para>
            To get started using the &PRODUCT; API, you should have the following:</para>
        <itemizedlist>
            <listitem><para>URL of the &PRODUCT; server you wish to integrate with.</para></listitem> 
            <listitem><para>Both the API Key and Secret Key for an account. This should have been generated by the administrator of the cloud instance and given to you.</para></listitem>
            <listitem><para>Familiarity with HTTP GET/POST and query strings.</para></listitem>
            <listitem><para>Knowledge of either XML or JSON.</para></listitem>
            <listitem><para>Knowledge of a programming language that can generate HTTP requests; for example, Java or PHP.</para></listitem>
        </itemizedlist>
    </section>

