<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 1.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../includes/main.css" type="text/css">
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon">
<title>Apache CloudStack | The Power Behind Your Cloud</title>
</head>
<body>
<div id="insidetopbg">
<div id="inside_wrapper">
<div class="uppermenu_panel">
<div class="uppermenu_box"></div>
</div>
<div id="main_master">
<div id="inside_header">
<div class="header_top">
<a class="cloud_logo" href="http://cloudstack.org"></a>
<div class="mainemenu_panel"></div>
</div>
</div>
<div id="main_content">
<div class="inside_apileftpanel">
<div class="inside_contentpanel" style="width:930px;">
<div class="api_titlebox">
<div class="api_titlebox_left">
<span>
									Apache CloudStack v4.7.0 User API Reference
								</span>
<p></p>
<h1>extractTemplate</h1>
<p>Extracts a template</p>
</div>
<div class="api_titlebox_right">
<a class="api_backbutton" href="../TOC_User.html"></a>
</div>
</div>
<div class="api_tablepanel">
<h2>Request parameters</h2>
<table class="apitable">
<tr class="hed">
<td style="width:200px;"><strong>Parameter Name</strong></td><td style="width:500px;">Description</td><td style="width:180px;">Required</td>
</tr>
<tr>
<td style="width:200px;"><strong>id</strong></td><td style="width:500px;"><strong>the ID of the template</strong></td><td style="width:180px;"><strong>true</strong></td>
</tr>
<tr>
<td style="width:200px;"><strong>mode</strong></td><td style="width:500px;"><strong>the mode of extraction - HTTP_DOWNLOAD or FTP_UPLOAD</strong></td><td style="width:180px;"><strong>true</strong></td>
</tr>
<tr>
<td style="width:200px;"><i>url</i></td><td style="width:500px;"><i>the url to which the ISO would be extracted</i></td><td style="width:180px;"><i>false</i></td>
</tr>
<tr>
<td style="width:200px;"><i>zoneid</i></td><td style="width:500px;"><i>the ID of the zone where the ISO is originally located</i></td><td style="width:180px;"><i>false</i></td>
</tr>
</table>
</div>
<div class="api_tablepanel">
<h2>Response Tags</h2>
<table class="apitable">
<tr class="hed">
<td style="width:200px;"><strong>Response Name</strong></td><td style="width:500px;">Description</td>
</tr>
<tr>
<td style="width:200px;"><strong>id</strong></td><td style="width:500px;">the id of extracted object</td>
</tr>
<tr>
<td style="width:200px;"><strong>accountid</strong></td><td style="width:500px;">the account id to which the extracted object belongs</td>
</tr>
<tr>
<td style="width:200px;"><strong>created</strong></td><td style="width:500px;">the time and date the object was created</td>
</tr>
<tr>
<td style="width:200px;"><strong>extractId</strong></td><td style="width:500px;">the upload id of extracted object</td>
</tr>
<tr>
<td style="width:200px;"><strong>extractMode</strong></td><td style="width:500px;">the mode of extraction - upload or download</td>
</tr>
<tr>
<td style="width:200px;"><strong>name</strong></td><td style="width:500px;">the name of the extracted object</td>
</tr>
<tr>
<td style="width:200px;"><strong>state</strong></td><td style="width:500px;">the state of the extracted object</td>
</tr>
<tr>
<td style="width:200px;"><strong>status</strong></td><td style="width:500px;">the status of the extraction</td>
</tr>
<tr>
<td style="width:200px;"><strong>storagetype</strong></td><td style="width:500px;">type of the storage</td>
</tr>
<tr>
<td style="width:200px;"><strong>uploadpercentage</strong></td><td style="width:500px;">the percentage of the entity uploaded to the specified location</td>
</tr>
<tr>
<td style="width:200px;"><strong>url</strong></td><td style="width:500px;">if mode = upload then url of the uploaded entity. if mode = download the url from which the entity can be downloaded</td>
</tr>
<tr>
<td style="width:200px;"><strong>zoneid</strong></td><td style="width:500px;">zone ID the object was extracted from</td>
</tr>
<tr>
<td style="width:200px;"><strong>zonename</strong></td><td style="width:500px;">zone name the object was extracted from</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer_mainmaster">
<p>Copyright &copy; 2015 The Apache Software Foundation, Licensed under the
                   <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0.</a>
<br>
                Apache, CloudStack, Apache CloudStack, the Apache CloudStack logo, the CloudMonkey logo  and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
</div>
</div>
</div>
</div>
</body>
</html>
