diff --git a/conf/version b/conf/version
index 5c0fc7a4bcde23edb7fd43ed05806d7b263f4af5..90d3ff7aa810be4d92a1b4fbebcb6880fb543740 100644
--- a/conf/version
+++ b/conf/version
@@ -1 +1 @@
-3.3.0.rc1
+3.3.0.rc2
diff --git a/doc/Kadeploy-3.3.0.rc1.pdf b/doc/Kadeploy-3.3.0.rc1.pdf
deleted file mode 100644
index fe3ffa1773a6085cc310a82ae4afbc39c02e6934..0000000000000000000000000000000000000000
Binary files a/doc/Kadeploy-3.3.0.rc1.pdf and /dev/null differ
diff --git a/doc/Kadeploy-3.3.0.rc2.pdf b/doc/Kadeploy-3.3.0.rc2.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d248b4871a67511aa2945697bca13d55c58b8275
Binary files /dev/null and b/doc/Kadeploy-3.3.0.rc2.pdf differ
diff --git a/doc/api/api_specs-3.3.0.rc1.html b/doc/api/api_specs-3.3.0.rc2.html
similarity index 76%
rename from doc/api/api_specs-3.3.0.rc1.html
rename to doc/api/api_specs-3.3.0.rc2.html
index 743d4ef726bd9f0e96ee2cfca5e9541fae6ef7d8..585b9cf028daa2038e2cd2585cbc35ea2f020cc0 100644
--- a/doc/api/api_specs-3.3.0.rc1.html
+++ b/doc/api/api_specs-3.3.0.rc2.html
@@ -1,4 +1,4 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><HTML><HEAD><TITLE>Kadeploy 3.3.0.rc1 REST API specifications</TITLE><LINK rel="stylesheet" type="text/css" href="api.css"></HEAD><BODY><DIV class="apidoc_frame"><H1 class="apidoc_title"><A class="apidoc_title_link" id="title">Kadeploy 3.3.0.rc1 REST API specifications</A></H1><DIV class="apidoc_index_frame"><UL class="apidoc_index_list"><LI><A class="apidoc_index_link" href="#intro">Introduction</A></LI><UL class="operation_index_list"><LI><A class="intro_index_link" href="#request_parameters">Request's parameters</A></LI><LI><A class="intro_index_link" href="#output_type">Output type and encoding</A></LI><LI><A class="intro_index_link" href="#Global parameters">Global parameters</A></LI><LI><A class="intro_index_link" href="#Authentication">Authentication</A></LI><LI><A class="intro_index_link" href="#Errors management">Errors management</A></LI><LI><A class="intro_index_link" href="#workflow_operations">Workflow based operations</A></LI><LI><A class="intro_index_link" href="#file_export">Exporting files for the server</A></LI><LI><A class="intro_index_link" href="#API documentation notations">API documentation notations</A></LI></UL><LI><A class="apidoc_index_link" href="#Reboot operations">Reboot operations</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/reboot"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/reboot</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Environments management">Environments management</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/environments"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/environments</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/environments/:username?/:name?/:version?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/environments/:username?/:name?/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/environments/:username/:name/:version?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/environments/:username/:name/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/environments/:username?/:name?/:version?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/environments/:username?/:name?/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/environments/:username/:name/:version?"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/environments/:username/:name/:version?</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Console">Console</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/console"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/console</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console/:id"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console/:id</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console/:id/error"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console/:id/error</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/console/:id"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/console/:id</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Rights management">Rights management</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/rights"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/rights</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/rights/:username?/:node?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/rights/:username?/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/rights/:username?/:node?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/rights/:username?/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/rights/:username/:node?/:partition?"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/rights/:username/:node?/:partition?</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Deployment">Deployment</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/deployment"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/deployment</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Power operations">Power operations</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#PUT/power"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/power</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/power"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/power</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Workflow-based operations">Workflow-based operations</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/%OPERATION"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/%OPERATION</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/logs/:cluster?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/logs/:cluster?</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/debugs/:node?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/debugs/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/state"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/state</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/status"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/status</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/error"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/error</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/%OPERATION/:id"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Nodes information">Nodes information</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/nodes/:nodename?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/nodes/:nodename?</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Global information">Global information</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/clusters"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/clusters</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/auth_headers_prefix"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/auth_headers_prefix</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/info"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/info</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/version"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/version</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Statistics">Statistics</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/stats/%OPERATION?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/stats/%OPERATION?</SPAN></A></LI></UL></UL></DIV><HR class="apidoc_index_sep"><DIV class="intro_frame"><H1 class="intro_title"><A class="intro_title_link" id="intro">Introduction</A></H1><DIV class="section_frame"><H2 class="section_title"><A id="request_parameters">Request's parameters</A></H2><P class="section_paragraph">There is several ways to specify parameters when using the network API. Parameters can be specified in the query's URI parameter but also in the query's body. Remark: it's only possible to use String and Array data structures when specifying parameters using the query's URI to specify more advanced parameters (Numbers, Hashs, ...) it's necessary to specify the parameters using a more advanced description language (JSON/YAML) in the query's body.</P><P class="section_paragraph">The following examples are equivalent:</P><P class="section_paragraph"><B>Specifying parameters in the query's URI</B></P><P class="section_paragraph"><PRE class="code_sample">      POST /deploy?nodes=node-1.testbed.lan&nodes=node-2.testbed.lan HTTP/1.1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><HTML><HEAD><TITLE>Kadeploy 3.3.0.rc2 REST API specifications</TITLE><LINK rel="stylesheet" type="text/css" href="api.css"></HEAD><BODY><DIV class="apidoc_frame"><H1 class="apidoc_title"><A class="apidoc_title_link" id="title">Kadeploy 3.3.0.rc2 REST API specifications</A></H1><DIV class="apidoc_index_frame"><UL class="apidoc_index_list"><LI><A class="apidoc_index_link" href="#intro">Introduction</A></LI><UL class="operation_index_list"><LI><A class="intro_index_link" href="#request_parameters">Request's parameters</A></LI><LI><A class="intro_index_link" href="#output_type">Output type and encoding</A></LI><LI><A class="intro_index_link" href="#Global parameters">Global parameters</A></LI><LI><A class="intro_index_link" href="#Authentication">Authentication</A></LI><LI><A class="intro_index_link" href="#Errors management">Errors management</A></LI><LI><A class="intro_index_link" href="#workflow_operations">Workflow based operations</A></LI><LI><A class="intro_index_link" href="#file_export">Exporting files for the server</A></LI><LI><A class="intro_index_link" href="#API documentation notations">API documentation notations</A></LI></UL><LI><A class="apidoc_index_link" href="#Environments management">Environments management</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/environments"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/environments</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/environments/:username?/:name?/:version?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/environments/:username?/:name?/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/environments/:username/:name/:version?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/environments/:username/:name/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/environments/:username?/:name?/:version?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/environments/:username?/:name?/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/environments/:username/:name/:version?"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/environments/:username/:name/:version?</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Reboot operations">Reboot operations</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/reboot"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/reboot</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Deployment">Deployment</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/deployment"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/deployment</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Power operations">Power operations</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#PUT/power"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/power</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/power"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/power</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Statistics">Statistics</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/stats/%OPERATION?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/stats/%OPERATION?</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Rights management">Rights management</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/rights"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/rights</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/rights/:username?/:node?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/rights/:username?/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/rights/:username?/:node?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/rights/:username?/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/rights/:username/:node?/:partition?"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/rights/:username/:node?/:partition?</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Console">Console</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/console"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/console</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console/:id"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console/:id</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console/:id/error"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console/:id/error</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/console/:id"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/console/:id</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Global information">Global information</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/clusters"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/clusters</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/auth_headers_prefix"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/auth_headers_prefix</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/info"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/info</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/version"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/version</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Workflow-based operations">Workflow-based operations</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/%OPERATION"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/%OPERATION</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/logs/:cluster?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/logs/:cluster?</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/debugs/:node?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/debugs/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/state"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/state</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/status"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/status</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/error"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/error</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/%OPERATION/:id"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Nodes information">Nodes information</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/nodes/:nodename?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/nodes/:nodename?</SPAN></A></LI></UL></UL></DIV><HR class="apidoc_index_sep"><DIV class="intro_frame"><H1 class="intro_title"><A class="intro_title_link" id="intro">Introduction</A></H1><DIV class="section_frame"><H2 class="section_title"><A id="request_parameters">Request's parameters</A></H2><P class="section_paragraph">There is several ways to specify parameters when using the network API. Parameters can be specified in the query's URI parameter but also in the query's body. Remark: it's only possible to use String and Array data structures when specifying parameters using the query's URI to specify more advanced parameters (Numbers, Hashs, ...) it's necessary to specify the parameters using a more advanced description language (JSON/YAML) in the query's body.</P><P class="section_paragraph">The following examples are equivalent:</P><P class="section_paragraph"><B>Specifying parameters in the query's URI</B></P><P class="section_paragraph"><PRE class="code_sample">      POST /deploy?nodes=node-1.testbed.lan&nodes=node-2.testbed.lan HTTP/1.1
       Accept: */*
       Host: kadeploy.testbed.lan:25300
       X-Kadeploy-User: frontend
@@ -205,148 +205,7 @@
           ]
         }
       }
-</PRE></DIV></P><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P></DIV></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Reboot operations">Reboot operations</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/reboot"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/reboot</SPAN></A></LI></UL></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="POST/reboot"><B class="resource_method_POST">POST</B> <SPAN style="font-family: monospace;" class="resource_path">/reboot</SPAN></A></H2><P class="resource_desc">Launch a reboot operation</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">kind</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The kind of reboot to be performed<BR><EM>Expected values: </EM>set_pxe, simple, deploy_env, recorded_env</TD></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The list of nodes the operation should be applied on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_dynamic">_generic_parameter_</SPAN></SPAN></TD><TD class="parameter_type">...</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Some workflow-based operation's generic parameter (see more <A href="#workflow_operations">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">block_device</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The block device the environment has been installed on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">check_destructive</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Check if the last deployed environment has the destructive flag, if it does, do not perform the reboot operation</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">client</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The client used to export files to the server, useful for local:// files (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">deploy_partition</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The partition the environment has been installed on</TD></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">environment</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The environment that has been deployed. This field is mandatory when using the kind "recorded_env".</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">level</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The level of the command that will be performed<BR><EM>Expected values: </EM>soft, hard, very_hard<BR><EM>Default value: </EM>soft</TD></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">pxe</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Specify some custom netboot parameters. This field is mandatory when using the kind "set_pxe".</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">ssh_authorized_keys</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The path to a ssh authorized_keys file that have to be copied in the root directory of the deployed environment (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">timeout_reboot_classical</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Overwrite the default value for the reboot timeout</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">vlan</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Specify the VLAN the nodes should be reboot in</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The name of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The owner of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">version</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The version of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">files</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A list of path to files that have to be exported in the PXE repository's directory (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">pxe</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A custom PXE profile, the string FILES_PREFIX-- will be replaced by the prefix to some exported files</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">singularities</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Specify a substitution pattern for each node in the PXE profile (the NODE_SINGULARITY pattern must be used in the PXE profile)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.{<SPAN class="element_normal">singularities</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_dynamic">nodename</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The substitution pattern for the node "nodename"</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Workflow">Workflow</A></TD><TD class="field_desc">Information related to the workflow of the reboot operation</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Perform a simple hard reboot on nodes (do not re-write the PXE profile)</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /reboot HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend
-Content-Type: application/json
-Content-Length: 112
-{
-  "nodes": [
-    "node-1.testbed.lan",
-    "node-2.testbed.lan"
-  ],
-  "kind": "simple",
-  "level": "hard"
-}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 533
-{
-  "wid": "R-27714bc3-860d-40e7-8371-b7419f6c9021",
-  "resources": {
-    "resource": "/reboot/R-27714bc3-860d-40e7-8371-b7419f6c9021",
-    "log": "/reboot/R-27714bc3-860d-40e7-8371-b7419f6c9021/logs",
-    "logs": {
-      "graphene-cluster": "/reboot/R-27714bc3-860d-40e7-8371-b7419f6c9021/logs/graphene-cluster"
-    },
-    "state": "/reboot/R-27714bc3-860d-40e7-8371-b7419f6c9021/state",
-    "status": "/reboot/R-27714bc3-860d-40e7-8371-b7419f6c9021/status",
-    "error": "/reboot/R-27714bc3-860d-40e7-8371-b7419f6c9021/error"
-  }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Reboot nodes on the deployment environment and send the user's SSH authorized_keys file</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /reboot HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend
-Content-Type: application/json
-Content-Length: 229
-{
-  "nodes": [
-    "node-1.testbed.lan",
-    "node-2.testbed.lan"
-  ],
-  "kind": "deploy_env",
-  "level": "soft",
-  "ssh_authorized_keys": "/home/frontend/.ssh/authorized_keys",
-  "client": "http://frontend.testbed.lan:12345"
-}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 533
-{
-  "wid": "R-52269f0e-1a5b-4f23-8cbf-0f17b166c420",
-  "resources": {
-    "resource": "/reboot/R-52269f0e-1a5b-4f23-8cbf-0f17b166c420",
-    "log": "/reboot/R-52269f0e-1a5b-4f23-8cbf-0f17b166c420/logs",
-    "logs": {
-      "graphene-cluster": "/reboot/R-52269f0e-1a5b-4f23-8cbf-0f17b166c420/logs/graphene-cluster"
-    },
-    "state": "/reboot/R-52269f0e-1a5b-4f23-8cbf-0f17b166c420/state",
-    "status": "/reboot/R-52269f0e-1a5b-4f23-8cbf-0f17b166c420/status",
-    "error": "/reboot/R-52269f0e-1a5b-4f23-8cbf-0f17b166c420/error"
-  }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Reboot nodes on a (previously installed) recorded environment and check if the partition table was destroyed</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /reboot HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend
-Content-Type: application/json
-Content-Length: 311
-{
-  "nodes": [
-    "node-1.testbed.lan",
-    "node-2.testbed.lan"
-  ],
-  "kind": "recorded_env",
-  "level": "soft",
-  "deploy_partition": "3",
-  "check_destructive": true,
-  "environment": {
-    "user": "root",
-    "name": "debian-base",
-    "version": 1
-  },
-  "client": "http://frontend.testbed.lan:12345"
-}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 533
-{
-  "wid": "R-7b52716a-2b72-4c66-b725-dc9f1726d0a6",
-  "resources": {
-    "resource": "/reboot/R-7b52716a-2b72-4c66-b725-dc9f1726d0a6",
-    "log": "/reboot/R-7b52716a-2b72-4c66-b725-dc9f1726d0a6/logs",
-    "logs": {
-      "graphene-cluster": "/reboot/R-7b52716a-2b72-4c66-b725-dc9f1726d0a6/logs/graphene-cluster"
-    },
-    "state": "/reboot/R-7b52716a-2b72-4c66-b725-dc9f1726d0a6/state",
-    "status": "/reboot/R-7b52716a-2b72-4c66-b725-dc9f1726d0a6/status",
-    "error": "/reboot/R-7b52716a-2b72-4c66-b725-dc9f1726d0a6/error"
-  }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #4 <SPAN class="example_desc">Reboot nodes on a specified kernel using a custom PXE profile with some nodes singularities</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /reboot HTTP/1.1
-     Accept: text/plain, application/json
-     Host: kadeploy.testbed.lan:25300
-     X-Kadeploy-User: frontend
-     Content-Type: application/json
-     Content-Length: 613
-     {
-       "nodes": [
-         "node-1.testbed.lan",
-         "node-2.testbed.lan"
-       ],
-       "kind": "set_pxe",
-       "pxe": {
-         "profile": "PROMPT 1
-SERIAL 0 19200
-DEFAULT bootlabel
-DISPLAY messages
-TIMEOUT 50
-label bootlabel
-KERNEL FILES_PREFIX--myvmlinuz
-APPEND initrd=FILES_PREFIX--myinitrd console=tty0 console=ttyS0,19200n8 ramdisk_size=290000 id=NODE_SINGULARITY rw noapic
-",
-         "singularities": {
-           "node-1.testbed.lan": "1",
-           "node-2.testbed.lan": "2"
-         },
-         "files": [
-           "/home/frontend/myvmlinuz",
-           "/home/frontend/myinitrd"
-         ]
-       },
-       "client": "http://frontend.testbed.lan:12345"
-     }</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 533
-{
-  "wid": "R-759f3f78-9742-47e6-b67e-c12b6750c2e4",
-  "resources": {
-    "resource": "/reboot/R-759f3f78-9742-47e6-b67e-c12b6750c2e4",
-    "log": "/reboot/R-759f3f78-9742-47e6-b67e-c12b6750c2e4/logs",
-    "logs": {
-      "graphene-cluster": "/reboot/R-759f3f78-9742-47e6-b67e-c12b6750c2e4/logs/graphene-cluster"
-    },
-    "state": "/reboot/R-759f3f78-9742-47e6-b67e-c12b6750c2e4/state",
-    "status": "/reboot/R-759f3f78-9742-47e6-b67e-c12b6750c2e4/status",
-    "error": "/reboot/R-759f3f78-9742-47e6-b67e-c12b6750c2e4/error"
-  }
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Reboot operations">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Environments management">Environments management</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/environments"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/environments</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/environments/:username?/:name?/:version?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/environments/:username?/:name?/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/environments/:username/:name/:version?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/environments/:username/:name/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/environments/:username?/:name?/:version?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/environments/:username?/:name?/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/environments/:username/:name/:version?"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/environments/:username/:name/:version?</SPAN></A></LI></UL><H2 class="operation_index_title">Return types</H2><DIV class="type_frame"><H3 class="type_title"><A id="type_Environment"><B class="type_name">Environment</B><SPAN class="type_title_desc">(<SPAN class="type_basetype">Hash</SPAN>)</SPAN></A></H3><P class="type_desc">The description of an environment</P><DIV class="type_subframe"><TABLE class="type_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The owner of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The name of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">os</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The operating system of the environment<BR>Possible values: linux, xen, other</TD></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">image</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The image file that contains the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">image</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">file</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The path to the image file (see more <A href="#file_export">here</A>)</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">image</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">kind</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The kind of image<BR>Possible values: tar, dd, fsa</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">image</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">compression</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The compression algorithm used to compress the image<BR>Possible values: gzip, bzip2, xz</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">version</SPAN></SPAN></TD><TD class="field_type">Integer</TD><TD class="field_desc">The version of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">description</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The description of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">author</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The author of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">visibility</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The visibility of the environment<BR>Possible values: public, private, shared</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">destructive</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">The environment destruct the disk partitioning</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">multipart</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">The environment image is a multi-partitioned archive</TD></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">preinstall</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">A preinstall script archive</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">preinstall</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">file</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The path to the archive file (see more <A href="#file_export">here</A>)</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">preinstall</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">compression</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The compression algorithm used to compress the archive<BR>Possible values: gzip, bzip2, xz</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">preinstall</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">script</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Path to a script (inside the archive) that will be launched during the pre-install step</TD></TR><TR class="field_frame"><TD class="field_name">[<SPAN class="element_self"><SPAN class="element_normal">postinstalls</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">A list of postinstall script archives</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">A postinstall script archive</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">file</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The path to the archive file (see more <A href="#file_export">here</A>)</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">compression</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The compression algorithm used to compress the archive<BR>Possible values: gzip, bzip2, xz</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">script</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Path to a script (inside the archive) that will be launched during the post-install step</TD></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">boot</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The environment's boot parameters</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">kernel</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Path to the kernel file (inside the environment\s image)</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">initrd</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Path to the initrd file (inside the environment\s image)</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">kernel_params</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The parameters to be given to the kernel at launch time</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">hypervisor</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Path to the hypervisor file (inside the environment\s image), useful when deploying Xen environments</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">hypervisor_params</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The parameters to be given to the hypervisor at launch time, useful when deploying Xen environments</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">block_device</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The block device environment should be installed on, useful for multi-partitioned environments</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">deploy_part</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The partition the environment should be installed on, useful for multi-partitioned environments</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">partition_type</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The partition type that will be set when partitioning the disk</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">filesystem</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The filesystem type of the environment, useful for tar environments</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">options</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Custom options</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_normal">options</SPAN></SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">partitions</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">A list of id/partition association</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_normal">options</SPAN></SPAN>.[<SPAN class="element_normal">partitions</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="field_type">Integer</TD><TD class="field_desc">The id of the partition inside the compressed archive</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_normal">options</SPAN></SPAN>.[<SPAN class="element_normal">partitions</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">device</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The physical device this archive part should be installed on</TD></TR></TABLE></DIV><H3 class="type_subtitle">Example #1</H3><PRE class="code_sample">{
+</PRE></DIV></P><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P></DIV></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Environments management">Environments management</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/environments"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/environments</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/environments/:username?/:name?/:version?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/environments/:username?/:name?/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/environments/:username/:name/:version?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/environments/:username/:name/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/environments/:username?/:name?/:version?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/environments/:username?/:name?/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/environments/:username/:name/:version?"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/environments/:username/:name/:version?</SPAN></A></LI></UL><H2 class="operation_index_title">Return types</H2><DIV class="type_frame"><H3 class="type_title"><A id="type_Environment"><B class="type_name">Environment</B><SPAN class="type_title_desc">(<SPAN class="type_basetype">Hash</SPAN>)</SPAN></A></H3><P class="type_desc">The description of an environment</P><DIV class="type_subframe"><TABLE class="type_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The owner of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The name of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">os</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The operating system of the environment<BR>Possible values: linux, xen, other</TD></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">image</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The image file that contains the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">image</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">file</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The path to the image file (see more <A href="#file_export">here</A>)</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">image</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">kind</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The kind of image<BR>Possible values: tar, dd, fsa</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">image</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">compression</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The compression algorithm used to compress the image<BR>Possible values: gzip, bzip2, xz</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">version</SPAN></SPAN></TD><TD class="field_type">Integer</TD><TD class="field_desc">The version of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">description</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The description of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">author</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The author of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">visibility</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The visibility of the environment<BR>Possible values: public, private, shared</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">destructive</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">The environment destruct the disk partitioning</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">multipart</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">The environment image is a multi-partitioned archive</TD></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">preinstall</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">A preinstall script archive</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">preinstall</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">file</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The path to the archive file (see more <A href="#file_export">here</A>)</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">preinstall</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">compression</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The compression algorithm used to compress the archive<BR>Possible values: gzip, bzip2, xz</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">preinstall</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">script</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Path to a script (inside the archive) that will be launched during the pre-install step</TD></TR><TR class="field_frame"><TD class="field_name">[<SPAN class="element_self"><SPAN class="element_normal">postinstalls</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">A list of postinstall script archives</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">A postinstall script archive</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">file</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The path to the archive file (see more <A href="#file_export">here</A>)</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">compression</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The compression algorithm used to compress the archive<BR>Possible values: gzip, bzip2, xz</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">script</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Path to a script (inside the archive) that will be launched during the post-install step</TD></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">boot</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The environment's boot parameters</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">kernel</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Path to the kernel file (inside the environment\s image)</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">initrd</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Path to the initrd file (inside the environment\s image)</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">kernel_params</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The parameters to be given to the kernel at launch time</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">hypervisor</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Path to the hypervisor file (inside the environment\s image), useful when deploying Xen environments</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">hypervisor_params</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The parameters to be given to the hypervisor at launch time, useful when deploying Xen environments</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">block_device</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The block device environment should be installed on, useful for multi-partitioned environments</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">deploy_part</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The partition the environment should be installed on, useful for multi-partitioned environments</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">partition_type</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The partition type that will be set when partitioning the disk</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">filesystem</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The filesystem type of the environment, useful for tar environments</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">options</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Custom options</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_normal">options</SPAN></SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">partitions</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">A list of id/partition association</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_normal">options</SPAN></SPAN>.[<SPAN class="element_normal">partitions</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="field_type">Integer</TD><TD class="field_desc">The id of the partition inside the compressed archive</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_normal">options</SPAN></SPAN>.[<SPAN class="element_normal">partitions</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">device</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The physical device this archive part should be installed on</TD></TR></TABLE></DIV><H3 class="type_subtitle">Example #1</H3><PRE class="code_sample">{
   "name": "debian-custom",
   "version": 2,
   "visibility": "private",
@@ -426,7 +285,7 @@ Content-Length: 533
       ]
     }
   }
-}</PRE></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="POST/environments"><B class="resource_method_POST">POST</B> <SPAN style="font-family: monospace;" class="resource_path">/environments</SPAN></A></H2><P class="resource_desc"></P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">environment</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The environment to add</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">client</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The client used to export files to the server, useful for local:// files (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">image</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The image file that contains the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The name of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">os</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The operating system of the environment<BR><EM>Expected values: </EM>linux, xen, other</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">author</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The author of the environment<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">boot</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The environment's boot parameters</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">description</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The description of the environment<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">destructive</SPAN></SPAN></TD><TD class="parameter_type">Boolean</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The environment destruct the disk partitioning<BR><EM>Default value: </EM>false</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">filesystem</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The filesystem type of the environment, useful for tar environments<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">multipart</SPAN></SPAN></TD><TD class="parameter_type">Boolean</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The environment image is a multi-partitioned archive<BR><EM>Default value: </EM>false</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">options</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Custom options</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">partition_type</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The partition type that will be set when partitioning the disk<BR><EM>Default value: </EM>0</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">postinstalls</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A list of postinstall script archives</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">preinstall</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A preinstall script archive</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">version</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The version of the environment<BR><EM>Default value: </EM>1</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">visibility</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The visibility of the environment<BR><EM>Expected values: </EM>public, private, shared<BR><EM>Default value: </EM>private</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">block_device</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The block device environment should be installed on, useful for multi-partitioned environments<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">deploy_part</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The partition the environment should be installed on, useful for multi-partitioned environments<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">hypervisor</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Path to the hypervisor file (inside the environment\s image), useful when deploying Xen environments<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">hypervisor_params</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The parameters to be given to the hypervisor at launch time, useful when deploying Xen environments<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">initrd</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Path to the initrd file (inside the environment\s image)<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">kernel</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Path to the kernel file (inside the environment\s image)<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">kernel_params</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The parameters to be given to the kernel at launch time<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">image</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">compression</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The compression algorithm used to compress the image<BR><EM>Expected values: </EM>gzip, bzip2, xz</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">image</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">file</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The path to the image file (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">image</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">kind</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The kind of image<BR><EM>Expected values: </EM>tar, dd, fsa</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_normal">options</SPAN></SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">partitions</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A list of id/partition association</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_normal">options</SPAN></SPAN>.[<SPAN class="element_normal">partitions</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">device</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The physical device this archive part should be installed on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_normal">options</SPAN></SPAN>.[<SPAN class="element_normal">partitions</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id of the partition inside the compressed archive</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">compression</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The compression algorithm used to compress the archive<BR><EM>Expected values: </EM>gzip, bzip2, xz</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">file</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The path to the archive file (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">script</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">Path to a script (inside the archive) that will be launched during the post-install step<BR><EM>Default value: </EM>none</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A postinstall script archive</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">preinstall</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">compression</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The compression algorithm used to compress the archive<BR><EM>Expected values: </EM>gzip, bzip2, xz</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">preinstall</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">file</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The path to the archive file (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">preinstall</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">script</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">Path to a script (inside the archive) that will be launched during the pre-install step<BR><EM>Default value: </EM>none</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Environment">Environment</A></TD><TD class="field_desc">The environment that was added</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">400-6</TD><TD class="code_desc">Invalid environment, something went wrong with the environment description checking, check the error message</TD></TR><TR class="code_frame"><TD class="code_number">400-9</TD><TD class="code_desc">Invalid content, check your JSON's structure</TD></TR><TR class="code_frame"><TD class="code_number">400-10</TD><TD class="code_desc">Already existing element, an environment with the same user/name/version already exists</TD></TR><TR class="code_frame"><TD class="code_number">400-12</TD><TD class="code_desc">Nothing modified</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Create a basic environment (the image's archive is exported from the client to the server)</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /environments HTTP/1.1
+}</PRE></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="POST/environments"><B class="resource_method_POST">POST</B> <SPAN style="font-family: monospace;" class="resource_path">/environments</SPAN></A></H2><P class="resource_desc"></P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">environment</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The environment to add</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">client</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The client used to export files to the server, useful for local:// files (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">image</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The image file that contains the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The name of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">os</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The operating system of the environment<BR><EM>Expected values: </EM>linux, xen, other</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">author</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The author of the environment<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">boot</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The environment's boot parameters</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">description</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The description of the environment<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">destructive</SPAN></SPAN></TD><TD class="parameter_type">Boolean</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The environment destruct the disk partitioning<BR><EM>Default value: </EM>false</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">filesystem</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The filesystem type of the environment, useful for tar environments<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">multipart</SPAN></SPAN></TD><TD class="parameter_type">Boolean</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The environment image is a multi-partitioned archive<BR><EM>Default value: </EM>false</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">options</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Custom options</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">partition_type</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The partition type that will be set when partitioning the disk<BR><EM>Default value: </EM>0</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">postinstalls</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A list of postinstall script archives</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">preinstall</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A preinstall script archive</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">version</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The version of the environment<BR><EM>Default value: </EM>1</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">visibility</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The visibility of the environment<BR><EM>Expected values: </EM>public, private, shared<BR><EM>Default value: </EM>private</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">block_device</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The block device environment should be installed on, useful for multi-partitioned environments<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">deploy_part</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The partition the environment should be installed on, useful for multi-partitioned environments<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">hypervisor</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Path to the hypervisor file (inside the environment\s image), useful when deploying Xen environments<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">hypervisor_params</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The parameters to be given to the hypervisor at launch time, useful when deploying Xen environments<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">initrd</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Path to the initrd file (inside the environment\s image)<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">kernel</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Path to the kernel file (inside the environment\s image)<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">boot</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">kernel_params</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The parameters to be given to the kernel at launch time<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">image</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">compression</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The compression algorithm used to compress the image<BR><EM>Expected values: </EM>gzip, bzip2, xz</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">image</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">file</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The path to the image file (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">image</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">kind</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The kind of image<BR><EM>Expected values: </EM>tar, dd, fsa</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_normal">options</SPAN></SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">partitions</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A list of id/partition association</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_normal">options</SPAN></SPAN>.[<SPAN class="element_normal">partitions</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">device</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The physical device this archive part should be installed on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_normal">options</SPAN></SPAN>.[<SPAN class="element_normal">partitions</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id of the partition inside the compressed archive</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">compression</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The compression algorithm used to compress the archive<BR><EM>Expected values: </EM>gzip, bzip2, xz</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">file</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The path to the archive file (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">script</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">Path to a script (inside the archive) that will be launched during the post-install step<BR><EM>Default value: </EM>none</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.[<SPAN class="element_normal">postinstalls</SPAN>]</SPAN>.{<SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A postinstall script archive</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">preinstall</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">compression</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The compression algorithm used to compress the archive<BR><EM>Expected values: </EM>gzip, bzip2, xz</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">preinstall</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">file</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The path to the archive file (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.{<SPAN class="element_normal">preinstall</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">script</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">Path to a script (inside the archive) that will be launched during the pre-install step<BR><EM>Default value: </EM>none</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Environment">Environment</A></TD><TD class="field_desc">The environment that was added</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">400-6</TD><TD class="code_desc">Invalid environment, something went wrong with the environment description checking, check the error message</TD></TR><TR class="code_frame"><TD class="code_number">400-9</TD><TD class="code_desc">Invalid content, check your JSON's structure</TD></TR><TR class="code_frame"><TD class="code_number">400-10</TD><TD class="code_desc">Already existing element, an environment with the same user/name/version already exists</TD></TR><TR class="code_frame"><TD class="code_number">400-12</TD><TD class="code_desc">Nothing modified</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Create a basic environment (the image's archive is exported from the client to the server)</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /environments HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend
@@ -492,7 +351,7 @@ Content-Length: 605
   "filesystem": "ext3",
   "partition_type": 83,
   "multipart": false
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Create a minimal environment (the image's archive is accessible on HTTP)</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /environments HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Create a minimal environment (the image's archive is accessible on HTTP)</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /environments HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend
@@ -534,7 +393,7 @@ Content-Length: 364
   "filesystem": "ext3",
   "partition_type": 0,
   "multipart": false
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Create a multi-partitioned environment (the image's archive is stored on the server)</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /environments HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Create a multi-partitioned environment (the image's archive is stored on the server)</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /environments HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend
@@ -614,7 +473,7 @@ Content-Length: 642
       }
     ]
   }
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Environments management">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/environments/:username?/:name?/:version?"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/environments/:username?/:name?/:version?</SPAN></A></H2><P class="resource_desc">Gather the description of environments. If no user is given, the public environment will be displayed, otherwise a list of all environments that are public or owned by the user will be returned. The :username or the :name fields have to be encoded following the RFC 3986 specifications (non-ASCII characters are encoded with a percent notation)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">username</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The owner of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">version</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The version of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">last</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Show the last version of environments (by default every versions are returned)</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Array</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN></TD><TD class="field_type"><A href="#type_Environment">Environment</A></TD><TD class="field_desc">One of the environment that were matching the request's parameters</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the resource you are looking for cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the list of all visible environments</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /environments HTTP/1.1
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Environments management">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/environments/:username?/:name?/:version?"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/environments/:username?/:name?/:version?</SPAN></A></H2><P class="resource_desc">Gather the description of environments. If no user is given, the public environment will be displayed, otherwise a list of all environments that are public or owned by the user will be returned. The :username or the :name fields have to be encoded following the RFC 3986 specifications (non-ASCII characters are encoded with a percent notation)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">username</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The owner of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">version</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The version of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">last</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Show the last version of environments (by default every versions are returned)</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Array</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN></TD><TD class="field_type"><A href="#type_Environment">Environment</A></TD><TD class="field_desc">One of the environment that were matching the request's parameters</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the resource you are looking for cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the list of all visible environments</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /environments HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -679,7 +538,7 @@ Content-Length: 1589
     "multipart": false,
     "user": "root"
   }
-]</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Get the list of the environments a specified user can see</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /environments/frontend HTTP/1.1
+]</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Get the list of the environments a specified user can see</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /environments/frontend HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -764,7 +623,7 @@ Content-Length: 2029
     "multipart": false,
     "user": "root"
   }
-]</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Get the description of a specific environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /environments/frontend/debian-custom HTTP/1.1
+]</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Get the description of a specific environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /environments/frontend/debian-custom HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -791,7 +650,7 @@ Content-Length: 442
     "multipart": false,
     "user": "frontend"
   }
-]</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #4 <SPAN class="example_desc">Get the description of a specific version of a specific environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /environments/frontend/debian-custom/1 HTTP/1.1
+]</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #4 <SPAN class="example_desc">Get the description of a specific version of a specific environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /environments/frontend/debian-custom/1 HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -818,7 +677,7 @@ Content-Length: 432
     "multipart": false,
     "user": "frontend"
   }
-]</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #5 <SPAN class="example_desc">Get the description of every versions of a specific environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /environments/frontend/debian-custom HTTP/1.1
+]</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #5 <SPAN class="example_desc">Get the description of every versions of a specific environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /environments/frontend/debian-custom HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -865,7 +724,7 @@ Content-Length: 872
     "multipart": false,
     "user": "frontend"
   }
-]</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Environments management">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="PUT/environments/:username/:name/:version?"><B class="resource_method_PUT">PUT</B> <SPAN style="font-family: monospace;" class="resource_path">/environments/:username/:name/:version?</SPAN></A></H2><P class="resource_desc">Modify some environment(s) properties, returns the modified environment. If no version is specified, modify the last version. The :username or the :name fields have to be encoded following the RFC 3986 specifications (non-ASCII characters are encoded with a percent notation)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the environment, mandatory if the operation is not update_file</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">username</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The owner of the environment, mandatory if the operation is not update_file</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">version</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The version of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">client</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The client used to export files to the server, needed to update the checksum of local:// files (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">toggle_destructive</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Toggle the destructive flag</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">update_image_checksum</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Update the checksum of the image's archive in the database (the server will get the checksum of the recorded archive file)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">update_postinstalls_checksum</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Update the checksum of the preinstall's archive(s) in the database (the server will get the checksum of the recorded archive file)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">update_preinstall_checksum</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Update the checksum of the preinstall's archive in the database (the server will get the checksum of the recorded archive file)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">visibility</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Set the visibility of the environment</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash/Array</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Environment">Environment</A></TD><TD class="field_desc">The environment that was modified</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">400-9</TD><TD class="code_desc">Invalid content, check your JSON's structure</TD></TR><TR class="code_frame"><TD class="code_number">400-12</TD><TD class="code_desc">Nothing modified</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Change the visibility flag of an environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">PUT /environments/frontend/debian-custom HTTP/1.1
+]</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Environments management">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="PUT/environments/:username/:name/:version?"><B class="resource_method_PUT">PUT</B> <SPAN style="font-family: monospace;" class="resource_path">/environments/:username/:name/:version?</SPAN></A></H2><P class="resource_desc">Modify some environment(s) properties, returns the modified environment. If no version is specified, modify the last version. The :username or the :name fields have to be encoded following the RFC 3986 specifications (non-ASCII characters are encoded with a percent notation)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the environment, mandatory if the operation is not update_file</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">username</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The owner of the environment, mandatory if the operation is not update_file</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">version</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The version of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">client</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The client used to export files to the server, needed to update the checksum of local:// files (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">toggle_destructive</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Toggle the destructive flag</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">update_image_checksum</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Update the checksum of the image's archive in the database (the server will get the checksum of the recorded archive file)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">update_postinstalls_checksum</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Update the checksum of the preinstall's archive(s) in the database (the server will get the checksum of the recorded archive file)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">update_preinstall_checksum</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Update the checksum of the preinstall's archive in the database (the server will get the checksum of the recorded archive file)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">visibility</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Set the visibility of the environment</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash/Array</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Environment">Environment</A></TD><TD class="field_desc">The environment that was modified</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">400-9</TD><TD class="code_desc">Invalid content, check your JSON's structure</TD></TR><TR class="code_frame"><TD class="code_number">400-12</TD><TD class="code_desc">Nothing modified</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Change the visibility flag of an environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">PUT /environments/frontend/debian-custom HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend
@@ -894,7 +753,7 @@ Content-Length: 375
   "filesystem": "ext4",
   "partition_type": 0,
   "multipart": false
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Tell the server to gather the new checksum of the image's archive</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">PUT /environments/frontend/debian-custom?update_image_checksum HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Tell the server to gather the new checksum of the image's archive</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">PUT /environments/frontend/debian-custom?update_image_checksum HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -918,7 +777,7 @@ Content-Length: 369
   "filesystem": "ext3",
   "partition_type": 0,
   "multipart": false
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Environments management">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="PUT/environments/:username?/:name?/:version?"><B class="resource_method_PUT">PUT</B> <SPAN style="font-family: monospace;" class="resource_path">/environments/:username?/:name?/:version?</SPAN></A></H2><P class="resource_desc">Modify some environment(s) properties, returns the modified environment. If no version is specified, modify the last version. The :username or the :name fields have to be encoded following the RFC 3986 specifications (non-ASCII characters are encoded with a percent notation)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the environment, mandatory if the operation is not update_file</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">username</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The owner of the environment, mandatory if the operation is not update_file</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">version</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The version of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">client</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The client used to export files to the server, needed to update the checksum of local:// files (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">update_files</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Batch renaming of file's paths, admins only</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">update_files</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_dynamic">old_path_prefix</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The new path prefix</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash/Array</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Environment">Environment</A></TD><TD class="field_desc">The environment that was modified</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">400-9</TD><TD class="code_desc">Invalid content, check your JSON's structure</TD></TR><TR class="code_frame"><TD class="code_number">400-12</TD><TD class="code_desc">Nothing modified</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Change the path to some files on all the environments</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">PUT /environments HTTP/1.1
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Environments management">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="PUT/environments/:username?/:name?/:version?"><B class="resource_method_PUT">PUT</B> <SPAN style="font-family: monospace;" class="resource_path">/environments/:username?/:name?/:version?</SPAN></A></H2><P class="resource_desc">Modify some environment(s) properties, returns the modified environment. If no version is specified, modify the last version. The :username or the :name fields have to be encoded following the RFC 3986 specifications (non-ASCII characters are encoded with a percent notation)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the environment, mandatory if the operation is not update_file</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">username</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The owner of the environment, mandatory if the operation is not update_file</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">version</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The version of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">client</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The client used to export files to the server, needed to update the checksum of local:// files (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">update_files</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Batch renaming of file's paths, admins only</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">update_files</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_dynamic">old_path_prefix</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The new path prefix</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash/Array</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Environment">Environment</A></TD><TD class="field_desc">The environment that was modified</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">400-9</TD><TD class="code_desc">Invalid content, check your JSON's structure</TD></TR><TR class="code_frame"><TD class="code_number">400-12</TD><TD class="code_desc">Nothing modified</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Change the path to some files on all the environments</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">PUT /environments HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend
@@ -971,7 +830,7 @@ Content-Length: 830
     "partition_type": 0,
     "multipart": false
   }
-]</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Environments management">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="DELETE/environments/:username/:name/:version?"><B class="resource_method_DELETE">DELETE</B> <SPAN style="font-family: monospace;" class="resource_path">/environments/:username/:name/:version?</SPAN></A></H2><P class="resource_desc">Delete a specific environment, returns the resources that was deleted. The :username or the :name fields have to be encoded following the RFC 3986 specifications (non-ASCII characters are encoded with a percent notation)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">username</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The owner of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">version</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The version of the environment</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash/Array</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Environment">Environment</A></TD><TD class="field_desc">The environment(s) that was deleted</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">400-12</TD><TD class="code_desc">Nothing modified, no environment was deleted (none were matching the conditions)</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Delete every versions of a specific environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /environments/frontend/debian-custom HTTP/1.1
+]</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Environments management">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="DELETE/environments/:username/:name/:version?"><B class="resource_method_DELETE">DELETE</B> <SPAN style="font-family: monospace;" class="resource_path">/environments/:username/:name/:version?</SPAN></A></H2><P class="resource_desc">Delete a specific environment, returns the resources that was deleted. The :username or the :name fields have to be encoded following the RFC 3986 specifications (non-ASCII characters are encoded with a percent notation)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">username</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The owner of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">version</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The version of the environment</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash/Array</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Environment">Environment</A></TD><TD class="field_desc">The environment(s) that was deleted</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">400-12</TD><TD class="code_desc">Nothing modified, no environment was deleted (none were matching the conditions)</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Delete every versions of a specific environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /environments/frontend/debian-custom HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -1016,7 +875,7 @@ Content-Length: 830
     "partition_type": 0,
     "multipart": false
   }
-]</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Delete a specific version of an environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /environments/frontend/debian-custom/2 HTTP/1.1
+]</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Delete a specific version of an environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /environments/frontend/debian-custom/2 HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -1040,241 +899,148 @@ Content-Length: 376
   "filesystem": "ext4",
   "partition_type": 0,
   "multipart": false
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Environments management">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Console">Console</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/console"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/console</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console/:id"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console/:id</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console/:id/error"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console/:id/error</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/console/:id"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/console/:id</SPAN></A></LI></UL></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="POST/console"><B class="resource_method_POST">POST</B> <SPAN style="font-family: monospace;" class="resource_path">/console</SPAN></A></H2><P class="resource_desc">Create a console binding. The server will create a TCP channel to bind the console inputs/outputs.<BR> To create an interactive shell, you can use a command such as:<BR><TT>stty raw -echo; nc <I>HOST</I> <I>PORT</I>; stty -raw echo</TT></P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">node</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The node to establish the console to</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the operation (prefixed by "C-")</TD></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">resources</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">Resources related to the workflow</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">console</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">URI to the TCP channel used to bind the console inputs/outputs</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">error</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">URI to the error</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">resource</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">URI to the resource</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Require a console connection on node-1. You can then </SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /console?node=node-1.testbed.lan HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 262
-{
-  "wid": "C-a6efa265-56f7-4221-b41c-81f75bde4699",
-  "resources": {
-    "resource": "/console/C-a6efa265-56f7-4221-b41c-81f75bde4699",
-    "error": "/console/C-a6efa265-56f7-4221-b41c-81f75bde4699/error",
-    "console": "tcp://kadeploy.testbed.lan:36179"
-  }
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Console">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/console"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/console</SPAN></A></H2><P class="resource_desc">Get the workflow information of every running operation of the kind console</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">Information about the workflow #i</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">attached</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">Set to true if the TCP channel is in use. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">console_uri</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">URI to the TCP channel used to bind the console inputs/outputs. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">error</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">Set to true if an error was encountered. The error message can be obtained by getting /console/:id/error. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the operation (prefixed by "C-")</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">node</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The node the console is open to</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">time</SPAN></SPAN></TD><TD class="field_type">Float</TD><TD class="field_desc">The time elapsed since the start of the operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The user that initiated the operation</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the list of consoles</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /console HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 371
-[
-  {
-    "id": "C-ef80f906-da3f-4c24-acb7-f6ecd3a7e805",
-    "user": "frontend",
-    "node": "node-1.testbed.lan",
-    "error": false,
-    "attached": false,
-    "console_uri": "tcp://kadeploy.testbed.lan:49768",
-    "time": 27.85
-  },
-  {
-    "id": "C-05d949ea-f213-4285-8efc-0c1a407df757",
-    "user": "root",
-    "node": "node-2.testbed.lan",
-    "error": false
-  }
-]</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Console">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/console/:id"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/console/:id</SPAN></A></H2><P class="resource_desc">Get the workflow information of an operation</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">attached</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">Set to true if the TCP channel is in use. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">console_uri</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">URI to the TCP channel used to bind the console inputs/outputs. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">error</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">Set to true if an error was encountered. The error message can be obtained by getting /console/:id/error. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the operation (prefixed by "C-")</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">node</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The node the console is open to</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">time</SPAN></SPAN></TD><TD class="field_type">Float</TD><TD class="field_desc">The time elapsed since the start of the operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The user that initiated the operation</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get information about a console</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /console/C-ef80f906-da3f-4c24-acb7-f6ecd3a7e805 HTTP/1.1
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Environments management">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Reboot operations">Reboot operations</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/reboot"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/reboot</SPAN></A></LI></UL></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="POST/reboot"><B class="resource_method_POST">POST</B> <SPAN style="font-family: monospace;" class="resource_path">/reboot</SPAN></A></H2><P class="resource_desc">Launch a reboot operation</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">kind</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The kind of reboot to be performed<BR><EM>Expected values: </EM>set_pxe, simple, deploy_env, recorded_env</TD></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The list of nodes the operation should be applied on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_dynamic">_generic_parameter_</SPAN></SPAN></TD><TD class="parameter_type">...</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Some workflow-based operation's generic parameter (see more <A href="#workflow_operations">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">block_device</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The block device the environment has been installed on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">check_destructive</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Check if the last deployed environment has the destructive flag, if it does, do not perform the reboot operation</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">client</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The client used to export files to the server, useful for local:// files (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">deploy_partition</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The partition the environment has been installed on</TD></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">environment</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The environment that has been deployed. This field is mandatory when using the kind "recorded_env".</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">level</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The level of the command that will be performed<BR><EM>Expected values: </EM>soft, hard, very_hard<BR><EM>Default value: </EM>soft</TD></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">pxe</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Specify some custom netboot parameters. This field is mandatory when using the kind "set_pxe".</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">ssh_authorized_keys</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The path to a ssh authorized_keys file that have to be copied in the root directory of the deployed environment (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">timeout_reboot_classical</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Overwrite the default value for the reboot timeout</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">vlan</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Specify the VLAN the nodes should be reboot in</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The name of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The owner of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">version</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The version of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">files</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A list of path to files that have to be exported in the PXE repository's directory (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">pxe</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A custom PXE profile, the string FILES_PREFIX-- will be replaced by the prefix to some exported files</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">singularities</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Specify a substitution pattern for each node in the PXE profile (the NODE_SINGULARITY pattern must be used in the PXE profile)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.{<SPAN class="element_normal">singularities</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_dynamic">nodename</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The substitution pattern for the node "nodename"</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Workflow">Workflow</A></TD><TD class="field_desc">Information related to the workflow of the reboot operation</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Perform a simple hard reboot on nodes (do not re-write the PXE profile)</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /reboot HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+X-Kadeploy-User: frontend
 Content-Type: application/json
-Content-Length: 216
+Content-Length: 112
 {
-  "id": "C-ef80f906-da3f-4c24-acb7-f6ecd3a7e805",
-  "user": "frontend",
-  "node": "node-1.testbed.lan",
-  "error": false,
-  "attached": false,
-  "console_uri": "tcp://kadeploy.testbed.lan:49768",
-  "time": 146.69
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Console">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/console/:id/error"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/console/:id/error</SPAN></A></H2><P class="resource_desc">Get the error of an operation (the "error" field was set to true on the workflow's info)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">String</SPAN>, <SPAN class="response_content">text/plain</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The error message</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Console">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="DELETE/console/:id"><B class="resource_method_DELETE">DELETE</B> <SPAN style="font-family: monospace;" class="resource_path">/console/:id</SPAN></A></H2><P class="resource_desc">Destroy a console binding (the TCP channel will be closed).</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the operation (prefixed by "C-")</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Destroy a console binding</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /console/C-ef80f906-da3f-4c24-acb7-f6ecd3a7e805 HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+  "nodes": [
+    "node-1.testbed.lan",
+    "node-2.testbed.lan"
+  ],
+  "kind": "simple",
+  "level": "hard"
+}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
 Content-Type: application/json
-Content-Length: 53
+Content-Length: 533
 {
-  "wid": "C-ef80f906-da3f-4c24-acb7-f6ecd3a7e805"
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Console">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Rights management">Rights management</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/rights"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/rights</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/rights/:username?/:node?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/rights/:username?/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/rights/:username?/:node?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/rights/:username?/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/rights/:username/:node?/:partition?"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/rights/:username/:node?/:partition?</SPAN></A></LI></UL><H2 class="operation_index_title">Return types</H2><DIV class="type_frame"><H3 class="type_title"><A id="type_Rights"><B class="type_name">Rights</B><SPAN class="type_title_desc">(<SPAN class="type_basetype">Hash</SPAN>)</SPAN></A></H3><P class="type_desc">Rights of a specific user on some disks/partitions of some nodes</P><DIV class="type_subframe"><TABLE class="type_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_dynamic">username</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The user the rights are related to</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">username</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_dynamic">nodename</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The node the rights are applied on. If "nodename" is *, the rights are applied on every nodes</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">username</SPAN>}</SPAN>.[<SPAN class="element_dynamic">nodename</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Partitions the rights are granted to. If "partitions" is *, the rights are applied on every disks/partitions</TD></TR></TABLE></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="POST/rights"><B class="resource_method_POST">POST</B> <SPAN style="font-family: monospace;" class="resource_path">/rights</SPAN></A></H2><P class="resource_desc">Grant the permession to deploy to a specific user on some node's partitions</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The list of nodes the rights should be added to. If not specified, rights will be added on all the nodes</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">overwrite</SPAN></SPAN></TD><TD class="parameter_type">Boolean</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Overwrite if some rights are already set for this user</TD></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">partitions</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The partitions/disks the rights should be added to. If the array contains *, rights will be added on every partition/disk</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">username</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the user the rights should be granted. Defaults to "user"</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Rights">Rights</A></TD><TD class="field_desc">The rights that was added for the user "username"</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">400-11</TD><TD class="code_desc">Some elements of the request are conflicting</TD></TR><TR class="code_frame"><TD class="code_number">400-12</TD><TD class="code_desc">No element has been modified</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Grant privileges on every partitions of a specific node</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /rights HTTP/1.1
+  "wid": "R-27714bc3-860d-40e7-8371-b7419f6c9021",
+  "resources": {
+    "resource": "/reboot/R-27714bc3-860d-40e7-8371-b7419f6c9021",
+    "log": "/reboot/R-27714bc3-860d-40e7-8371-b7419f6c9021/logs",
+    "logs": {
+      "graphene-cluster": "/reboot/R-27714bc3-860d-40e7-8371-b7419f6c9021/logs/graphene-cluster"
+    },
+    "state": "/reboot/R-27714bc3-860d-40e7-8371-b7419f6c9021/state",
+    "status": "/reboot/R-27714bc3-860d-40e7-8371-b7419f6c9021/status",
+    "error": "/reboot/R-27714bc3-860d-40e7-8371-b7419f6c9021/error"
+  }
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Reboot nodes on the deployment environment and send the user's SSH authorized_keys file</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /reboot HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend
 Content-Type: application/json
-Content-Length: 89
+Content-Length: 229
 {
-  "user" : "root",
-  "username": "frontend",
   "nodes": [
-    "node-1.testbed.lan"
-  ]
+    "node-1.testbed.lan",
+    "node-2.testbed.lan"
+  ],
+  "kind": "deploy_env",
+  "level": "soft",
+  "ssh_authorized_keys": "/home/frontend/.ssh/authorized_keys",
+  "client": "http://frontend.testbed.lan:12345"
 }</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
 Content-Type: application/json
-Content-Length: 67
+Content-Length: 533
 {
-  "frontend": {
-    "node-1.testbed.lan": [
-      "*"
-    ]
+  "wid": "R-52269f0e-1a5b-4f23-8cbf-0f17b166c420",
+  "resources": {
+    "resource": "/reboot/R-52269f0e-1a5b-4f23-8cbf-0f17b166c420",
+    "log": "/reboot/R-52269f0e-1a5b-4f23-8cbf-0f17b166c420/logs",
+    "logs": {
+      "graphene-cluster": "/reboot/R-52269f0e-1a5b-4f23-8cbf-0f17b166c420/logs/graphene-cluster"
+    },
+    "state": "/reboot/R-52269f0e-1a5b-4f23-8cbf-0f17b166c420/state",
+    "status": "/reboot/R-52269f0e-1a5b-4f23-8cbf-0f17b166c420/status",
+    "error": "/reboot/R-52269f0e-1a5b-4f23-8cbf-0f17b166c420/error"
   }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Grant privileges on a specific partition of some nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /rights?user=root&overwrite HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Reboot nodes on a (previously installed) recorded environment and check if the partition table was destroyed</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /reboot HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend
 Content-Type: application/json
-Content-Length: 136
+Content-Length: 311
 {
-  "username": "frontend",
   "nodes": [
     "node-1.testbed.lan",
     "node-2.testbed.lan"
   ],
-  "partitions": [
-    "/dev/sda3"
-  ]
+  "kind": "recorded_env",
+  "level": "soft",
+  "deploy_partition": "3",
+  "check_destructive": true,
+  "environment": {
+    "user": "root",
+    "name": "debian-base",
+    "version": 1
+  },
+  "client": "http://frontend.testbed.lan:12345"
 }</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
 Content-Type: application/json
-Content-Length: 128
+Content-Length: 533
 {
-  "frontend": {
-    "node-1.testbed.lan": [
-      "/dev/sda3"
-    ],
-    "node-2.testbed.lan": [
-      "/dev/sda3"
-    ]
-  }
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Rights management">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/rights/:username?/:node?"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/rights/:username?/:node?</SPAN></A></H2><P class="resource_desc">Gather information about someone's deploy permission on nodes</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">node</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The node to check the rights on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">username</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the user to check the rights for. If not specified, returns the rights of every users</TD></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The list of nodes the rights should be checked on. If nor "node" or "nodes" are specified, rights of all the nodes will be returned. If both "node" and "nodes" are specified, the rights of [nodes]+node will be returned</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Rights">Rights</A></TD><TD class="field_desc">The rights of the user "username"</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, username or node not found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the rights of every users</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /rights?user=root HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 172
-{
-  "root": {
-    "*": [
-      "*"
-    ]
-  },
-  "frontend": {
-    "node-1.testbed.lan": [
-      "/dev/sda3"
-    ],
-    "node-2.testbed.lan": [
-      "/dev/sda3"
-    ]
-  }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Get the rights of a specific user</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /rights/frontend?user=root HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 172
-{
-  "frontend": {
-    "node-1.testbed.lan": [
-      "/dev/sda3"
-    ],
-    "node-2.testbed.lan": [
-      "/dev/sda3"
-    ]
-  }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Get the rights of a specific user on a specific node</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /rights/frontend/node-1.testbed.lan?user=root HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 75
-{
-  "frontend": {
-    "node-1.testbed.lan": [
-      "/dev/sda3"
-    ]
-  }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #4 <SPAN class="example_desc">Get the rights of a specific user on several nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /rights/frontend?user=root HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend
-Content-Type: application/json
-Content-Length: 66
-{
-  "nodes": [
-    "node-1.testbed.lan",
-    "node-2.testbed.lan"
-  ]
-}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 128
-{
-  "frontend": {
-    "node-1.testbed.lan": [
-      "/dev/sda3"
-    ],
-    "node-2.testbed.lan": [
-      "/dev/sda3"
-    ]
-  }
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Rights management">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="PUT/rights/:username?/:node?"><B class="resource_method_PUT">PUT</B> <SPAN style="font-family: monospace;" class="resource_path">/rights/:username?/:node?</SPAN></A></H2><P class="resource_desc">Not implemented ATM</P></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Rights management">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="DELETE/rights/:username/:node?/:partition?"><B class="resource_method_DELETE">DELETE</B> <SPAN style="font-family: monospace;" class="resource_path">/rights/:username/:node?/:partition?</SPAN></A></H2><P class="resource_desc">Remove some rights on some nodes.<BR>If no more rights are remaining on some of the nodes, every operations (workflows) involving this nodes will be killed.</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">username</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The name of the username to remove the rights to</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">node</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The node to remove the rights from</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">partition</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The partitions to remove the rights from (should be urlencoded)</TD></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The list of nodes the rights should removed from. If nor "node" or "nodes" are specified, rights of all the nodes will be removed. If both "node" and "nodes" are specified, the rights of [nodes]+node will be removed</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Rights">Rights</A></TD><TD class="field_desc">The rights that was removed</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, username or node not found</TD></TR><TR class="code_frame"><TD class="code_number">400-11</TD><TD class="code_desc">Some elements of the request are conflicting</TD></TR><TR class="code_frame"><TD class="code_number">400-12</TD><TD class="code_desc">No element has been modified</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Remove the rights on every nodes from a specific user</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /rights/frontend?user=root HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 50
-{
-  "frontend": {
-    "*": [
-      "*"
-    ]
-  }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Remove the rights on a specific node from a specific user</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /rights/frontend/node-1.testbed.lan?user=root HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 67
-{
-  "frontend": {
-    "node-1.testbed.lan": [
-      "*"
-    ]
-  }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Remove the rights on several nodes from a specific user</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /rights/frontend?user=root HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend
-Content-Type: application/json
-Content-Length: 66
-{
-  "nodes": [
-    "node-1.testbed.lan",
-    "node-2.testbed.lan"
-  ]
-}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 112
-{
-  "frontend": {
-    "node-1.testbed.lan": [
-      "*"
-    ],
-    "node-2.testbed.lan": [
-      "*"
-    ]
+  "wid": "R-7b52716a-2b72-4c66-b725-dc9f1726d0a6",
+  "resources": {
+    "resource": "/reboot/R-7b52716a-2b72-4c66-b725-dc9f1726d0a6",
+    "log": "/reboot/R-7b52716a-2b72-4c66-b725-dc9f1726d0a6/logs",
+    "logs": {
+      "graphene-cluster": "/reboot/R-7b52716a-2b72-4c66-b725-dc9f1726d0a6/logs/graphene-cluster"
+    },
+    "state": "/reboot/R-7b52716a-2b72-4c66-b725-dc9f1726d0a6/state",
+    "status": "/reboot/R-7b52716a-2b72-4c66-b725-dc9f1726d0a6/status",
+    "error": "/reboot/R-7b52716a-2b72-4c66-b725-dc9f1726d0a6/error"
   }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #4 <SPAN class="example_desc">Remove the rights on a specific partition of a specific node from a specific user</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /rights/frontend?user=root&nodes=node-1.testbed.lan&partitions=%2Fdev%2Fsda3 HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #4 <SPAN class="example_desc">Reboot nodes on a specified kernel using a custom PXE profile with some nodes singularities</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /reboot HTTP/1.1
+     Accept: text/plain, application/json
+     Host: kadeploy.testbed.lan:25300
+     X-Kadeploy-User: frontend
+     Content-Type: application/json
+     Content-Length: 613
+     {
+       "nodes": [
+         "node-1.testbed.lan",
+         "node-2.testbed.lan"
+       ],
+       "kind": "set_pxe",
+       "pxe": {
+         "profile": "PROMPT 1
+SERIAL 0 19200
+DEFAULT bootlabel
+DISPLAY messages
+TIMEOUT 50
+label bootlabel
+KERNEL FILES_PREFIX--myvmlinuz
+APPEND initrd=FILES_PREFIX--myinitrd console=tty0 console=ttyS0,19200n8 ramdisk_size=290000 id=NODE_SINGULARITY rw noapic
+",
+         "singularities": {
+           "node-1.testbed.lan": "1",
+           "node-2.testbed.lan": "2"
+         },
+         "files": [
+           "/home/frontend/myvmlinuz",
+           "/home/frontend/myinitrd"
+         ]
+       },
+       "client": "http://frontend.testbed.lan:12345"
+     }</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
 Content-Type: application/json
-Content-Length: 75
+Content-Length: 533
 {
-  "frontend": {
-    "node-1.testbed.lan": [
-      "/dev/sda3"
-    ]
+  "wid": "R-759f3f78-9742-47e6-b67e-c12b6750c2e4",
+  "resources": {
+    "resource": "/reboot/R-759f3f78-9742-47e6-b67e-c12b6750c2e4",
+    "log": "/reboot/R-759f3f78-9742-47e6-b67e-c12b6750c2e4/logs",
+    "logs": {
+      "graphene-cluster": "/reboot/R-759f3f78-9742-47e6-b67e-c12b6750c2e4/logs/graphene-cluster"
+    },
+    "state": "/reboot/R-759f3f78-9742-47e6-b67e-c12b6750c2e4/state",
+    "status": "/reboot/R-759f3f78-9742-47e6-b67e-c12b6750c2e4/status",
+    "error": "/reboot/R-759f3f78-9742-47e6-b67e-c12b6750c2e4/error"
   }
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Rights management">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Deployment">Deployment</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/deployment"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/deployment</SPAN></A></LI></UL></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="POST/deployment"><B class="resource_method_POST">POST</B> <SPAN style="font-family: monospace;" class="resource_path">/deployment</SPAN></A></H2><P class="resource_desc">Launch a deployment</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">environment</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The environment that have to be deployed</TD></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The list of nodes the operation should be applied on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_dynamic">_generic_parameter_</SPAN></SPAN></TD><TD class="parameter_type">...</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Some workflow-based operation's generic parameter (see more <A href="#workflow_operations">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">automata</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">...</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">block_device</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The block device the environment should be installed on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">boot_partition</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The partition the node have to boot on (useful when deploying an image of the whole disk</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">client</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The client used to export files to the server, useful for local:// files (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">deploy_partition</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The partition the environment should be installed on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">disable_bootloader_install</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Disable the install of a bootloader on the partition the image is installed on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">disable_disk_partitioning</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Disable the disk partitioning step</TD></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">pxe</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Specify some custom netboot parameters</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">reformat_tmp_partition</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Reformat the partition that was defined as the tmp partition with the specified format</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">ssh_authorized_keys</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The path to a ssh authorized_keys file that have to be copied in the root directory of the deployed environment (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">timeout_reboot_classical</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Overwrite the default value for the reboot timeout</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">timeout_reboot_kexec</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Overwrite the default value for the kexec timeout</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">vlan</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Specify the VLAN the nodes should be reboot in</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">kind</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The kind of environment, recorded or anonymous<BR><EM>Expected values: </EM>anon, database</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The name of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_dynamic">fields</SPAN></SPAN></TD><TD class="parameter_type"><A href="#type_Environment">Environment</A></TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Other fields that are used to describe an anonymous environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The owner of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">version</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The version of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">files</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A list of path to files that have to be exported in the PXE repository's directory (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">profile</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A custom PXE profile, the string FILES_PREFIX-- will be replaced by the prefix to some exported files</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">singularities</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Specify a substitution pattern for each node in the PXE profile (the NODE_SINGULARITY pattern must be used in the PXE profile)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.{<SPAN class="element_normal">singularities</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_dynamic">nodename</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The substitution pattern for the node "nodename"</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Workflow">Workflow</A></TD><TD class="field_desc">Information related to the workflow of the deployment</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Deploy a recorded environment using the user specified key file</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /deployment HTTP/1.1
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Reboot operations">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Deployment">Deployment</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/deployment"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/deployment</SPAN></A></LI></UL></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="POST/deployment"><B class="resource_method_POST">POST</B> <SPAN style="font-family: monospace;" class="resource_path">/deployment</SPAN></A></H2><P class="resource_desc">Launch a deployment</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">environment</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The environment that have to be deployed</TD></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The list of nodes the operation should be applied on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_dynamic">_generic_parameter_</SPAN></SPAN></TD><TD class="parameter_type">...</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Some workflow-based operation's generic parameter (see more <A href="#workflow_operations">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">automata</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">...</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">block_device</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The block device the environment should be installed on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">boot_partition</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The partition the node have to boot on (useful when deploying an image of the whole disk</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">client</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The client used to export files to the server, useful for local:// files (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">deploy_partition</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The partition the environment should be installed on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">disable_bootloader_install</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Disable the install of a bootloader on the partition the image is installed on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">disable_disk_partitioning</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Disable the disk partitioning step</TD></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">pxe</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Specify some custom netboot parameters</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">reformat_tmp_partition</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Reformat the partition that was defined as the tmp partition with the specified format</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">ssh_authorized_keys</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The path to a ssh authorized_keys file that have to be copied in the root directory of the deployed environment (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">timeout_reboot_classical</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Overwrite the default value for the reboot timeout</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">timeout_reboot_kexec</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Overwrite the default value for the kexec timeout</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">vlan</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Specify the VLAN the nodes should be reboot in</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">kind</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The kind of environment, recorded or anonymous<BR><EM>Expected values: </EM>anon, database</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The name of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_dynamic">fields</SPAN></SPAN></TD><TD class="parameter_type"><A href="#type_Environment">Environment</A></TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Other fields that are used to describe an anonymous environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The owner of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">version</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The version of the environment</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">files</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A list of path to files that have to be exported in the PXE repository's directory (see more <A href="#file_export">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">profile</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A custom PXE profile, the string FILES_PREFIX-- will be replaced by the prefix to some exported files</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">singularities</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Specify a substitution pattern for each node in the PXE profile (the NODE_SINGULARITY pattern must be used in the PXE profile)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">pxe</SPAN>}</SPAN>.{<SPAN class="element_normal">singularities</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_dynamic">nodename</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The substitution pattern for the node "nodename"</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Workflow">Workflow</A></TD><TD class="field_desc">Information related to the workflow of the deployment</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Deploy a recorded environment using the user specified key file</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /deployment HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend
@@ -1308,7 +1074,7 @@ Content-Length: 545
     "status": "/deployment/D-bf5608b0-9354-446b-a648-c3abaa3cab95/status",
     "error": "/deployment/D-bf5608b0-9354-446b-a648-c3abaa3cab95/error"
   }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Deploy an anonymous local environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /deployment HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Deploy an anonymous local environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /deployment HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend
@@ -1364,7 +1130,7 @@ Content-Length: 555
     "status": "/deployment/D-abbaa88c-243e-42fb-8c5a-9332918a6ee1/status",
     "error": "/deployment/D-abbaa88c-243e-42fb-8c5a-9332918a6ee1/error"
   }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Deploy an anonymous HTTP environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /deployment HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Deploy an anonymous HTTP environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /deployment HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend
@@ -1419,7 +1185,7 @@ Content-Length: 545
     "status": "/deployment/D-2669bedd-82f2-4be6-b090-a0837ad4e0a9/status",
     "error": "/deployment/D-2669bedd-82f2-4be6-b090-a0837ad4e0a9/error"
   }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #4 <SPAN class="example_desc">Deploy a recorded environment and reboot the nodes on a custom kernel with some nodes singularities</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /deployment HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #4 <SPAN class="example_desc">Deploy a recorded environment and reboot the nodes on a custom kernel with some nodes singularities</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /deployment HTTP/1.1
      Accept: text/plain, application/json
      Host: kadeploy.testbed.lan:25300
      X-Kadeploy-User: frontend
@@ -1471,7 +1237,7 @@ Content-Length: 557
     "status": "/deployment/D-af1a66b0-c18c-4dc3-a4ee-73e6502bc5fc/status",
     "error": "/deployment/D-af1a66b0-c18c-4dc3-a4ee-73e6502bc5fc/error"
   }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #5 <SPAN class="example_desc">Deploy an environment and overwrite the automata's steps</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /deployment HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #5 <SPAN class="example_desc">Deploy an environment and overwrite the automata's steps</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /deployment HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend
@@ -1511,96 +1277,490 @@ Content-Length: 648
       }
     ]
   },
-  "client": "http://frontend.testbed.lan:12345"
-}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 557
-{
-  "wid": "D-facf0b49-20b0-4891-838e-06ee04c8045f",
-  "resources": {
-    "resource": "/deployment/D-facf0b49-20b0-4891-838e-06ee04c8045f",
-    "log": "/deployment/D-facf0b49-20b0-4891-838e-06ee04c8045f/logs",
-    "logs": {
-      "graphene-cluster": "/deployment/D-facf0b49-20b0-4891-838e-06ee04c8045f/logs/graphene-cluster"
-    },
-    "state": "/deployment/D-facf0b49-20b0-4891-838e-06ee04c8045f/state",
-    "status": "/deployment/D-facf0b49-20b0-4891-838e-06ee04c8045f/status",
-    "error": "/deployment/D-facf0b49-20b0-4891-838e-06ee04c8045f/error"
-  }
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Deployment">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Power operations">Power operations</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#PUT/power"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/power</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/power"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/power</SPAN></A></LI></UL></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="PUT/power"><B class="resource_method_PUT">PUT</B> <SPAN style="font-family: monospace;" class="resource_path">/power</SPAN></A></H2><P class="resource_desc">Launch a power operation</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The list of nodes the operation should be applied on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">status</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The status to be applied<BR><EM>Expected values: </EM>on, off</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_dynamic">_generic_parameter_</SPAN></SPAN></TD><TD class="parameter_type">...</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Some workflow-based operation's generic parameter (see more <A href="#workflow_operations">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">level</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The level of the command that will be performed<BR><EM>Expected values: </EM>soft, hard, very_hard<BR><EM>Default value: </EM>soft</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Workflow">Workflow</A></TD><TD class="field_desc">Information related to the workflow of the power operation</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Perform a power-on on some nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">PUT /power HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend
-Content-Type: application/json
-Content-Length: 91
-{
-  "nodes": [
-    "node-1.testbed.lan",
-    "node-2.testbed.lan"
-  ],
-  "status": "on"
-}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 527
-{
-  "wid": "P-eae4fb69-c130-40a6-8c2a-f0a45fa8d6e8",
-  "resources": {
-    "resource": "/power/P-eae4fb69-c130-40a6-8c2a-f0a45fa8d6e8",
-    "log": "/power/P-eae4fb69-c130-40a6-8c2a-f0a45fa8d6e8/logs",
-    "logs": {
-      "graphene-cluster": "/power/P-eae4fb69-c130-40a6-8c2a-f0a45fa8d6e8/logs/graphene-cluster"
-    },
-    "state": "/power/P-eae4fb69-c130-40a6-8c2a-f0a45fa8d6e8/state",
-    "status": "/power/P-eae4fb69-c130-40a6-8c2a-f0a45fa8d6e8/status",
-    "error": "/power/P-eae4fb69-c130-40a6-8c2a-f0a45fa8d6e8/error"
-  }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Perform a hard power-off on some nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">PUT /power HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend
-Content-Type: application/json
-Content-Length: 111
-{
-  "nodes": [
-    "node-1.testbed.lan",
-    "node-2.testbed.lan"
-  ],
-  "status": "off",
-  "level": "hard"
-}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 527
-{
-  "wid": "P-2dbf2f2d-6e15-4e8a-8cb7-57ac4bb86a9b",
-  "resources": {
-    "resource": "/power/P-2dbf2f2d-6e15-4e8a-8cb7-57ac4bb86a9b",
-    "log": "/power/P-2dbf2f2d-6e15-4e8a-8cb7-57ac4bb86a9b/logs",
-    "logs": {
-      "graphene-cluster": "/power/P-2dbf2f2d-6e15-4e8a-8cb7-57ac4bb86a9b/logs/graphene-cluster"
-    },
-    "state": "/power/P-2dbf2f2d-6e15-4e8a-8cb7-57ac4bb86a9b/state",
-    "status": "/power/P-2dbf2f2d-6e15-4e8a-8cb7-57ac4bb86a9b/status",
-    "error": "/power/P-2dbf2f2d-6e15-4e8a-8cb7-57ac4bb86a9b/error"
-  }
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Power operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/power"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/power</SPAN></A></H2><P class="resource_desc">Get the power status of some nodes</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The list of nodes the power status should be returned</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Workflow">Workflow</A></TD><TD class="field_desc">Information related to the workflow of the power operation</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the power-status of some nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /power?nodes=node-1.testbed.lan&nodes=node-2.testbed.lan HTTP/1.1
+  "client": "http://frontend.testbed.lan:12345"
+}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 557
+{
+  "wid": "D-facf0b49-20b0-4891-838e-06ee04c8045f",
+  "resources": {
+    "resource": "/deployment/D-facf0b49-20b0-4891-838e-06ee04c8045f",
+    "log": "/deployment/D-facf0b49-20b0-4891-838e-06ee04c8045f/logs",
+    "logs": {
+      "graphene-cluster": "/deployment/D-facf0b49-20b0-4891-838e-06ee04c8045f/logs/graphene-cluster"
+    },
+    "state": "/deployment/D-facf0b49-20b0-4891-838e-06ee04c8045f/state",
+    "status": "/deployment/D-facf0b49-20b0-4891-838e-06ee04c8045f/status",
+    "error": "/deployment/D-facf0b49-20b0-4891-838e-06ee04c8045f/error"
+  }
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Deployment">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Power operations">Power operations</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#PUT/power"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/power</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/power"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/power</SPAN></A></LI></UL></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="PUT/power"><B class="resource_method_PUT">PUT</B> <SPAN style="font-family: monospace;" class="resource_path">/power</SPAN></A></H2><P class="resource_desc">Launch a power operation</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The list of nodes the operation should be applied on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">status</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The status to be applied<BR><EM>Expected values: </EM>on, off</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_dynamic">_generic_parameter_</SPAN></SPAN></TD><TD class="parameter_type">...</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Some workflow-based operation's generic parameter (see more <A href="#workflow_operations">here</A>)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">level</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The level of the command that will be performed<BR><EM>Expected values: </EM>soft, hard, very_hard<BR><EM>Default value: </EM>soft</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Workflow">Workflow</A></TD><TD class="field_desc">Information related to the workflow of the power operation</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Perform a power-on on some nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">PUT /power HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend
+Content-Type: application/json
+Content-Length: 91
+{
+  "nodes": [
+    "node-1.testbed.lan",
+    "node-2.testbed.lan"
+  ],
+  "status": "on"
+}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 527
+{
+  "wid": "P-eae4fb69-c130-40a6-8c2a-f0a45fa8d6e8",
+  "resources": {
+    "resource": "/power/P-eae4fb69-c130-40a6-8c2a-f0a45fa8d6e8",
+    "log": "/power/P-eae4fb69-c130-40a6-8c2a-f0a45fa8d6e8/logs",
+    "logs": {
+      "graphene-cluster": "/power/P-eae4fb69-c130-40a6-8c2a-f0a45fa8d6e8/logs/graphene-cluster"
+    },
+    "state": "/power/P-eae4fb69-c130-40a6-8c2a-f0a45fa8d6e8/state",
+    "status": "/power/P-eae4fb69-c130-40a6-8c2a-f0a45fa8d6e8/status",
+    "error": "/power/P-eae4fb69-c130-40a6-8c2a-f0a45fa8d6e8/error"
+  }
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Perform a hard power-off on some nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">PUT /power HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend
+Content-Type: application/json
+Content-Length: 111
+{
+  "nodes": [
+    "node-1.testbed.lan",
+    "node-2.testbed.lan"
+  ],
+  "status": "off",
+  "level": "hard"
+}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 527
+{
+  "wid": "P-2dbf2f2d-6e15-4e8a-8cb7-57ac4bb86a9b",
+  "resources": {
+    "resource": "/power/P-2dbf2f2d-6e15-4e8a-8cb7-57ac4bb86a9b",
+    "log": "/power/P-2dbf2f2d-6e15-4e8a-8cb7-57ac4bb86a9b/logs",
+    "logs": {
+      "graphene-cluster": "/power/P-2dbf2f2d-6e15-4e8a-8cb7-57ac4bb86a9b/logs/graphene-cluster"
+    },
+    "state": "/power/P-2dbf2f2d-6e15-4e8a-8cb7-57ac4bb86a9b/state",
+    "status": "/power/P-2dbf2f2d-6e15-4e8a-8cb7-57ac4bb86a9b/status",
+    "error": "/power/P-2dbf2f2d-6e15-4e8a-8cb7-57ac4bb86a9b/error"
+  }
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Power operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/power"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/power</SPAN></A></H2><P class="resource_desc">Get the power status of some nodes</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The list of nodes the power status should be returned</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Workflow">Workflow</A></TD><TD class="field_desc">Information related to the workflow of the power operation</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the power-status of some nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /power?nodes=node-1.testbed.lan&nodes=node-2.testbed.lan HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 527
+{
+  "wid": "P-1c609d50-b304-4c46-bcd9-ebda4eb9d369",
+  "resources": {
+    "resource": "/power/P-1c609d50-b304-4c46-bcd9-ebda4eb9d369",
+    "log": "/power/P-1c609d50-b304-4c46-bcd9-ebda4eb9d369/logs",
+    "logs": {
+      "graphene-cluster": "/power/P-1c609d50-b304-4c46-bcd9-ebda4eb9d369/logs/graphene-cluster"
+    },
+    "state": "/power/P-1c609d50-b304-4c46-bcd9-ebda4eb9d369/state",
+    "status": "/power/P-1c609d50-b304-4c46-bcd9-ebda4eb9d369/status",
+    "error": "/power/P-1c609d50-b304-4c46-bcd9-ebda4eb9d369/error"
+  }
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Power operations">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Statistics">Statistics</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/stats/%OPERATION?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/stats/%OPERATION?</SPAN></A></LI></UL></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/stats/%OPERATION?"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/stats/%OPERATION?</SPAN></A></H2><P class="resource_desc">Gather statistics. The operation can be set to deploy, reboot, power or an empty value</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">date_max</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">Statistics to a specific date date (RFC 2616 format)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">date_min</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">Statistics from a specific date date (RFC 2616 format)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">fields</SPAN></SPAN></TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The fields to be displayed<BR><EM>Expected values: </EM>wid, user, hostname, step1, step2, step3, timeout_step1, timeout_step2, timeout_step3, retry_step1, retry_step2, retry_step3, start, step1_duration, step2_duration, step3_duration, env, md5, success, error<BR><EM>Default value: </EM>["wid", "user", "hostname", "step1", "step2", "step3", "timeout_step1", "timeout_step2", "timeout_step3", "retry_step1", "retry_step2", "retry_step3", "start", "step1_duration", "step2_duration", "step3_duration", "env", "md5", "success", "error"]</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">kind</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The kind of statistics<BR><EM>Expected values: </EM>all, failure_rates<BR><EM>Default value: </EM>all</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">min_failure_rate</SPAN></SPAN></TD><TD class="parameter_type">Float</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The list of nodes which have a specified minimum failure-rate (between 0 and 1). This filter have to be used with the kind <I>failure_rates</I></TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">min_retries</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">Statistics about the nodes that need at least NB attempts to perform specific steps</TD></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The list of nodes to gather the statistics about</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">sort</SPAN></SPAN></TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The fields to sort results by<BR><EM>Expected values: </EM>wid, user, hostname, step1, step2, step3, timeout_step1, timeout_step2, timeout_step3, retry_step1, retry_step2, retry_step3, start, step1_duration, step2_duration, step3_duration, env, md5, success, error<BR><EM>Default value: </EM>["wid", "user", "hostname", "step1", "step2", "step3", "timeout_step1", "timeout_step2", "timeout_step3", "retry_step1", "retry_step2", "retry_step3", "start", "step1_duration", "step2_duration", "step3_duration", "env", "md5", "success", "error"]</TD></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">step_retries</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">Apply the retry filter on the given steps</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">wid</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">Specify the workflow #id</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">String</SPAN>, <SPAN class="response_content">gzipped text/csv or application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_iter">#line</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">A line in the format specified by the <I>fields</I> parameter</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, invalid operation</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Gather all statistics</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /stats HTTP/1.1
+Accept: */*
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: text/csv
+Content-Encoding: gzip
+Content-Length: 241
+---GUNZIPPED---
+D-9a87115b-eb7f-45e4-90f2-bec00ccc5dab,frontend,node-1.testbed.lan,SetDeploymentEnvUntrusted,BroadcastEnvKastafior,BootNewEnvKexec,200,200,200,0,0,0,1389347228,165,68,46,debian-base:1,,true,
+D-9a87115b-eb7f-45e4-90f2-bec00ccc5dab,frontend,node-2.testbed.lan,SetDeploymentEnvUntrusted,BroadcastEnvKastafior,BootNewEnvKexec,200,200,200,0,0,0,1389347228,165,68,46,debian-base:1,,true,
+R-6d5d2255-f533-44a5-a191-ec69fc5f17b9,frontend,node-1.testbed.lan,Simple,,,0,0,0,0,0,0,1389347638,106,0,0,,,true,
+R-f6aedfae-12fa-42dd-9c18-6278a9b5ad9d,frontend,node-1.testbed.lan,Simple,,,0,0,0,0,0,0,1389348342,112,0,0,,,true,
+R-f6aedfae-12fa-42dd-9c18-6278a9b5ad9d,frontend,node-2.testbed.lan,Simple,,,0,0,0,0,0,0,1389348342,112,0,0,,,true,
+P-0073d9d7-d25f-46b1-9b95-d9c4fd52484b,frontend,node-1.testbed.lan,Off,,,0,0,0,0,0,0,1389348732,10,0,0,,,true,
+P-0073d9d7-d25f-46b1-9b95-d9c4fd52484b,frontend,node-2.testbed.lan,Off,,,0,0,0,0,0,0,1389348732,10,0,0,,,true,
+P-130b8e01-9025-483e-9cb3-2216ea66156d,frontend,node-1.testbed.lan,On,,,0,0,0,0,0,0,1389348781,3,0,0,,,true,
+P-130b8e01-9025-483e-9cb3-2216ea66156d,frontend,node-2.testbed.lan,On,,,0,0,0,0,0,0,1389348781,3,0,0,,,true,
+---------------</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Gather deployments statistics</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /stats/deploy HTTP/1.1
+Accept: */*
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: text/csv
+Content-Encoding: gzip
+Content-Length: 179
+---GUNZIPPED---
+D-9a87115b-eb7f-45e4-90f2-bec00ccc5dab,frontend,node-1.testbed.lan,SetDeploymentEnvUntrusted,BroadcastEnvKastafior,BootNewEnvKexec,200,200,200,0,0,0,1389347228,165,68,46,debian-base:1,,true,
+D-9a87115b-eb7f-45e4-90f2-bec00ccc5dab,frontend,node-2.testbed.lan,SetDeploymentEnvUntrusted,BroadcastEnvKastafior,BootNewEnvKexec,200,200,200,0,0,0,1389347228,165,68,46,debian-base:1,,true,
+---------------</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Gather the list of nodes with a specific failure rate</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /stats?kind=failure_rates&min_failure_rate=0.0 HTTP/1.1
+Accept: */*
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 60
+{
+  "node-1.testbed.lan": 0.0,
+  "node-2.testbed.lan": 0.0
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #4 <SPAN class="example_desc">Gather all statistics to a specific date</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /stats?kind=all&date_max=Fri%2C+10+Jan+2014+10%3A10%3A00+GMT HTTP/1.1
+Accept: */*
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: text/csv
+Content-Encoding: gzip
+Content-Length: 264
+---GUNZIPPED---
+D-9a87115b-eb7f-45e4-90f2-bec00ccc5dab,frontend,node-1.testbed.lan,SetDeploymentEnvUntrusted,BroadcastEnvKastafior,BootNewEnvKexec,200,200,200,0,0,0,1389347228,165,68,46,debian-base:1,,true,
+D-9a87115b-eb7f-45e4-90f2-bec00ccc5dab,frontend,node-2.testbed.lan,SetDeploymentEnvUntrusted,BroadcastEnvKastafior,BootNewEnvKexec,200,200,200,0,0,0,1389347228,165,68,46,debian-base:1,,true,
+R-6d5d2255-f533-44a5-a191-ec69fc5f17b9,frontend,node-1.testbed.lan,Simple,,,0,0,0,0,0,0,1389347638,106,0,0,,,true,
+R-f6aedfae-12fa-42dd-9c18-6278a9b5ad9d,frontend,node-1.testbed.lan,Simple,,,0,0,0,0,0,0,1389348342,112,0,0,,,true,
+R-f6aedfae-12fa-42dd-9c18-6278a9b5ad9d,frontend,node-2.testbed.lan,Simple,,,0,0,0,0,0,0,1389348342,112,0,0,,,true,
+---------------</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Statistics">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Rights management">Rights management</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/rights"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/rights</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/rights/:username?/:node?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/rights/:username?/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/rights/:username?/:node?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/rights/:username?/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/rights/:username/:node?/:partition?"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/rights/:username/:node?/:partition?</SPAN></A></LI></UL><H2 class="operation_index_title">Return types</H2><DIV class="type_frame"><H3 class="type_title"><A id="type_Rights"><B class="type_name">Rights</B><SPAN class="type_title_desc">(<SPAN class="type_basetype">Hash</SPAN>)</SPAN></A></H3><P class="type_desc">Rights of a specific user on some disks/partitions of some nodes</P><DIV class="type_subframe"><TABLE class="type_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_dynamic">username</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The user the rights are related to</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">username</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_dynamic">nodename</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The node the rights are applied on. If "nodename" is *, the rights are applied on every nodes</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">username</SPAN>}</SPAN>.[<SPAN class="element_dynamic">nodename</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Partitions the rights are granted to. If "partitions" is *, the rights are applied on every disks/partitions</TD></TR></TABLE></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="POST/rights"><B class="resource_method_POST">POST</B> <SPAN style="font-family: monospace;" class="resource_path">/rights</SPAN></A></H2><P class="resource_desc">Grant the permession to deploy to a specific user on some node's partitions</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The list of nodes the rights should be added to. If not specified, rights will be added on all the nodes</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">overwrite</SPAN></SPAN></TD><TD class="parameter_type">Boolean</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Overwrite if some rights are already set for this user</TD></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">partitions</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The partitions/disks the rights should be added to. If the array contains *, rights will be added on every partition/disk</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">username</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the user the rights should be granted. Defaults to "user"</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Rights">Rights</A></TD><TD class="field_desc">The rights that was added for the user "username"</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">400-11</TD><TD class="code_desc">Some elements of the request are conflicting</TD></TR><TR class="code_frame"><TD class="code_number">400-12</TD><TD class="code_desc">No element has been modified</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Grant privileges on every partitions of a specific node</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /rights HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend
+Content-Type: application/json
+Content-Length: 89
+{
+  "user" : "root",
+  "username": "frontend",
+  "nodes": [
+    "node-1.testbed.lan"
+  ]
+}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 67
+{
+  "frontend": {
+    "node-1.testbed.lan": [
+      "*"
+    ]
+  }
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Grant privileges on a specific partition of some nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /rights?user=root&overwrite HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend
+Content-Type: application/json
+Content-Length: 136
+{
+  "username": "frontend",
+  "nodes": [
+    "node-1.testbed.lan",
+    "node-2.testbed.lan"
+  ],
+  "partitions": [
+    "/dev/sda3"
+  ]
+}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 128
+{
+  "frontend": {
+    "node-1.testbed.lan": [
+      "/dev/sda3"
+    ],
+    "node-2.testbed.lan": [
+      "/dev/sda3"
+    ]
+  }
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Rights management">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/rights/:username?/:node?"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/rights/:username?/:node?</SPAN></A></H2><P class="resource_desc">Gather information about someone's deploy permission on nodes</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">node</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The node to check the rights on</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">username</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the user to check the rights for. If not specified, returns the rights of every users</TD></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The list of nodes the rights should be checked on. If nor "node" or "nodes" are specified, rights of all the nodes will be returned. If both "node" and "nodes" are specified, the rights of [nodes]+node will be returned</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Rights">Rights</A></TD><TD class="field_desc">The rights of the user "username"</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, username or node not found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the rights of every users</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /rights?user=root HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 172
+{
+  "root": {
+    "*": [
+      "*"
+    ]
+  },
+  "frontend": {
+    "node-1.testbed.lan": [
+      "/dev/sda3"
+    ],
+    "node-2.testbed.lan": [
+      "/dev/sda3"
+    ]
+  }
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Get the rights of a specific user</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /rights/frontend?user=root HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 172
+{
+  "frontend": {
+    "node-1.testbed.lan": [
+      "/dev/sda3"
+    ],
+    "node-2.testbed.lan": [
+      "/dev/sda3"
+    ]
+  }
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Get the rights of a specific user on a specific node</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /rights/frontend/node-1.testbed.lan?user=root HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 75
+{
+  "frontend": {
+    "node-1.testbed.lan": [
+      "/dev/sda3"
+    ]
+  }
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #4 <SPAN class="example_desc">Get the rights of a specific user on several nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /rights/frontend?user=root HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend
+Content-Type: application/json
+Content-Length: 66
+{
+  "nodes": [
+    "node-1.testbed.lan",
+    "node-2.testbed.lan"
+  ]
+}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 128
+{
+  "frontend": {
+    "node-1.testbed.lan": [
+      "/dev/sda3"
+    ],
+    "node-2.testbed.lan": [
+      "/dev/sda3"
+    ]
+  }
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Rights management">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="PUT/rights/:username?/:node?"><B class="resource_method_PUT">PUT</B> <SPAN style="font-family: monospace;" class="resource_path">/rights/:username?/:node?</SPAN></A></H2><P class="resource_desc">Not implemented ATM</P></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Rights management">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="DELETE/rights/:username/:node?/:partition?"><B class="resource_method_DELETE">DELETE</B> <SPAN style="font-family: monospace;" class="resource_path">/rights/:username/:node?/:partition?</SPAN></A></H2><P class="resource_desc">Remove some rights on some nodes.<BR>If no more rights are remaining on some of the nodes, every operations (workflows) involving this nodes will be killed.</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">username</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The name of the username to remove the rights to</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">node</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The node to remove the rights from</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">partition</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The partitions to remove the rights from (should be urlencoded)</TD></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The list of nodes the rights should removed from. If nor "node" or "nodes" are specified, rights of all the nodes will be removed. If both "node" and "nodes" are specified, the rights of [nodes]+node will be removed</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Rights">Rights</A></TD><TD class="field_desc">The rights that was removed</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, username or node not found</TD></TR><TR class="code_frame"><TD class="code_number">400-11</TD><TD class="code_desc">Some elements of the request are conflicting</TD></TR><TR class="code_frame"><TD class="code_number">400-12</TD><TD class="code_desc">No element has been modified</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Remove the rights on every nodes from a specific user</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /rights/frontend?user=root HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 50
+{
+  "frontend": {
+    "*": [
+      "*"
+    ]
+  }
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Remove the rights on a specific node from a specific user</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /rights/frontend/node-1.testbed.lan?user=root HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 67
+{
+  "frontend": {
+    "node-1.testbed.lan": [
+      "*"
+    ]
+  }
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Remove the rights on several nodes from a specific user</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /rights/frontend?user=root HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend
+Content-Type: application/json
+Content-Length: 66
+{
+  "nodes": [
+    "node-1.testbed.lan",
+    "node-2.testbed.lan"
+  ]
+}</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 112
+{
+  "frontend": {
+    "node-1.testbed.lan": [
+      "*"
+    ],
+    "node-2.testbed.lan": [
+      "*"
+    ]
+  }
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #4 <SPAN class="example_desc">Remove the rights on a specific partition of a specific node from a specific user</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /rights/frontend?user=root&nodes=node-1.testbed.lan&partitions=%2Fdev%2Fsda3 HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 75
+{
+  "frontend": {
+    "node-1.testbed.lan": [
+      "/dev/sda3"
+    ]
+  }
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Rights management">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Console">Console</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/console"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/console</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console/:id"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console/:id</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console/:id/error"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console/:id/error</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/console/:id"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/console/:id</SPAN></A></LI></UL></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="POST/console"><B class="resource_method_POST">POST</B> <SPAN style="font-family: monospace;" class="resource_path">/console</SPAN></A></H2><P class="resource_desc">Create a console binding. The server will create a TCP channel to bind the console inputs/outputs.<BR> To create an interactive shell, you can use a command such as:<BR><TT>stty raw -echo; nc <I>HOST</I> <I>PORT</I>; stty -raw echo</TT></P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">node</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The node to establish the console to</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the operation (prefixed by "C-")</TD></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">resources</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">Resources related to the workflow</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">console</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">URI to the TCP channel used to bind the console inputs/outputs</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">error</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">URI to the error</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">resource</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">URI to the resource</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Require a console connection on node-1. You can then </SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /console?node=node-1.testbed.lan HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 262
+{
+  "wid": "C-a6efa265-56f7-4221-b41c-81f75bde4699",
+  "resources": {
+    "resource": "/console/C-a6efa265-56f7-4221-b41c-81f75bde4699",
+    "error": "/console/C-a6efa265-56f7-4221-b41c-81f75bde4699/error",
+    "console": "tcp://kadeploy.testbed.lan:36179"
+  }
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Console">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/console"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/console</SPAN></A></H2><P class="resource_desc">Get the workflow information of every running operation of the kind console</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">Information about the workflow #i</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">attached</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">Set to true if the TCP channel is in use. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">console_uri</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">URI to the TCP channel used to bind the console inputs/outputs. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">error</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">Set to true if an error was encountered. The error message can be obtained by getting /console/:id/error. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the operation (prefixed by "C-")</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">node</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The node the console is open to</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">time</SPAN></SPAN></TD><TD class="field_type">Float</TD><TD class="field_desc">The time elapsed since the start of the operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The user that initiated the operation</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the list of consoles</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /console HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 371
+[
+  {
+    "id": "C-ef80f906-da3f-4c24-acb7-f6ecd3a7e805",
+    "user": "frontend",
+    "node": "node-1.testbed.lan",
+    "error": false,
+    "attached": false,
+    "console_uri": "tcp://kadeploy.testbed.lan:49768",
+    "time": 27.85
+  },
+  {
+    "id": "C-05d949ea-f213-4285-8efc-0c1a407df757",
+    "user": "root",
+    "node": "node-2.testbed.lan",
+    "error": false
+  }
+]</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Console">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/console/:id"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/console/:id</SPAN></A></H2><P class="resource_desc">Get the workflow information of an operation</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">attached</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">Set to true if the TCP channel is in use. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">console_uri</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">URI to the TCP channel used to bind the console inputs/outputs. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">error</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">Set to true if an error was encountered. The error message can be obtained by getting /console/:id/error. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the operation (prefixed by "C-")</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">node</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The node the console is open to</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">time</SPAN></SPAN></TD><TD class="field_type">Float</TD><TD class="field_desc">The time elapsed since the start of the operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The user that initiated the operation</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get information about a console</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /console/C-ef80f906-da3f-4c24-acb7-f6ecd3a7e805 HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 216
+{
+  "id": "C-ef80f906-da3f-4c24-acb7-f6ecd3a7e805",
+  "user": "frontend",
+  "node": "node-1.testbed.lan",
+  "error": false,
+  "attached": false,
+  "console_uri": "tcp://kadeploy.testbed.lan:49768",
+  "time": 146.69
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Console">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/console/:id/error"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/console/:id/error</SPAN></A></H2><P class="resource_desc">Get the error of an operation (the "error" field was set to true on the workflow's info)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">String</SPAN>, <SPAN class="response_content">text/plain</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The error message</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Console">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="DELETE/console/:id"><B class="resource_method_DELETE">DELETE</B> <SPAN style="font-family: monospace;" class="resource_path">/console/:id</SPAN></A></H2><P class="resource_desc">Destroy a console binding (the TCP channel will be closed).</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the operation (prefixed by "C-")</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Destroy a console binding</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /console/C-ef80f906-da3f-4c24-acb7-f6ecd3a7e805 HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 53
+{
+  "wid": "C-ef80f906-da3f-4c24-acb7-f6ecd3a7e805"
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Console">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Global information">Global information</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/clusters"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/clusters</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/auth_headers_prefix"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/auth_headers_prefix</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/info"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/info</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/version"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/version</SPAN></A></LI></UL></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/clusters"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/clusters</SPAN></A></H2><P class="resource_desc">Get the list of clusters</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Array</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The name of the cluster #i</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the list of clusters</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /clusters HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 45
+[
+  "griffon-cluster",
+  "graphene-cluster"
+]</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Global information">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/auth_headers_prefix"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/auth_headers_prefix</SPAN></A></H2><P class="resource_desc">Get information about the authentication HTTP headers of the running service</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">String</SPAN>, <SPAN class="response_content">text/plain</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The prefix that have to be specified in the HTTP headers when doing a request (for authentication purpose)</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Global information">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/info"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/info</SPAN></A></H2><P class="resource_desc">Get information about the configuration of the running service</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">automata</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The configuration of the deployment automata</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">automata</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_dynamic">clustername</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The configuration of the deployment automata for the cluster "clustername"</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">automata</SPAN>}</SPAN>.{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_dynamic">macrostepkind</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The configuration of the instances of the step "macrostepkind"</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">automata</SPAN>}</SPAN>.{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.[<SPAN class="element_dynamic">macrostepkind</SPAN>]</SPAN>.{<SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The configuration of the instances #i</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">automata</SPAN>}</SPAN>.{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.[<SPAN class="element_dynamic">macrostepkind</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The name of the instance</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">automata</SPAN>}</SPAN>.{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.[<SPAN class="element_dynamic">macrostepkind</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">retries</SPAN></SPAN></TD><TD class="field_type">Integer</TD><TD class="field_desc">The number of retries for the instance</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">automata</SPAN>}</SPAN>.{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.[<SPAN class="element_dynamic">macrostepkind</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">timeout</SPAN></SPAN></TD><TD class="field_type">Integer</TD><TD class="field_desc">The timeout of the instance</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">pxe</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The netboot method configured on the server</TD></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">supported_fs</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The filesystem format supported by the deployment environment of the different clusters</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">supported_fs</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_dynamic">clustername</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The filesystem format supported by the deployment environment of the cluster "clustername"</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">supported_fs</SPAN>}</SPAN>.[<SPAN class="element_dynamic">clustername</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_iter">#format</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The filesystem format name</TD></TR><TR class="field_frame"><TD class="field_name">[<SPAN class="element_self"><SPAN class="element_normal">vars</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The environment variables exported by the deployment environment when running custom scripts</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">[<SPAN class="element_normal">vars</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_iter">#name</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The variable name</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get information about the service's configuration</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /info HTTP/1.1
+Accept: text/plain, application/json
+Host: kadeploy.testbed.lan:25300
+X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 1851
+{
+  "pxe": "PXElinux",
+  "automata": {
+    "griffon-cluster": {
+      "SetDeploymentEnv": [
+        {
+          "name": "SetDeploymentEnvUntrusted",
+          "retries": 1,
+          "timeout": 200
+        }
+      ],
+      "BroadcastEnv": [
+        {
+          "name": "BroadcastEnvKastafior",
+          "retries": 1,
+          "timeout": 200
+        }
+      ],
+      "BootNewEnv": [
+        {
+          "name": "BootNewEnvKexec",
+          "retries": 0,
+          "timeout": 200
+        },
+        {
+          "name": "BootNewEnvHardReboot",
+          "retries": 1,
+          "timeout": 200
+        }
+      ]
+    },
+    "graphene-cluster": {
+      "SetDeploymentEnv": [
+        {
+          "name": "SetDeploymentEnvUntrusted",
+          "retries": 1,
+          "timeout": 200
+        }
+      ],
+      "BroadcastEnv": [
+        {
+          "name": "BroadcastEnvKastafior",
+          "retries": 1,
+          "timeout": 200
+        }
+      ],
+      "BootNewEnv": [
+        {
+          "name": "BootNewEnvKexec",
+          "retries": 0,
+          "timeout": 200
+        },
+        {
+          "name": "BootNewEnvHardReboot",
+          "retries": 1,
+          "timeout": 200
+        }
+      ]
+    }
+  },
+  "supported_fs": {
+    "griffon-cluster": [
+      "ext2",
+      "ext3",
+      "fat"
+    ],
+    "graphene-cluster": [
+      "ext2",
+      "ext3",
+      "fat"
+    ]
+  },
+  "vars": [
+    "KADEPLOY_BLOCK_DEVICE",
+    "KADEPLOY_CLUSTER",
+    "KADEPLOY_DEPLOY_PART",
+    "KADEPLOY_DEPLOY_PART_NUM",
+    "KADEPLOY_ENV",
+    "KADEPLOY_ENV_HYPERVISOR",
+    "KADEPLOY_ENV_HYPERVISOR_PARAMS",
+    "KADEPLOY_ENV_INITRD",
+    "KADEPLOY_ENV_KERNEL",
+    "KADEPLOY_ENV_KERNEL_PARAMS",
+    "KADEPLOY_OS_KIND",
+    "KADEPLOY_PREPOST_EXTRACTION_DIR",
+    "KADEPLOY_PROD_PART_NUM",
+    "KADEPLOY_SWAP_PART_NUM",
+    "KADEPLOY_TMP_DIR",
+    "KADEPLOY_TMP_PART_NUM"
+  ]
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Global information">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/version"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/version</SPAN></A></H2><P class="resource_desc">Get the version of the server</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">String</SPAN>, <SPAN class="response_content">text/plain</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The version of the server</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the version of the server "kadeploy.testbed.lan"</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /version HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 527
-{
-  "wid": "P-1c609d50-b304-4c46-bcd9-ebda4eb9d369",
-  "resources": {
-    "resource": "/power/P-1c609d50-b304-4c46-bcd9-ebda4eb9d369",
-    "log": "/power/P-1c609d50-b304-4c46-bcd9-ebda4eb9d369/logs",
-    "logs": {
-      "graphene-cluster": "/power/P-1c609d50-b304-4c46-bcd9-ebda4eb9d369/logs/graphene-cluster"
-    },
-    "state": "/power/P-1c609d50-b304-4c46-bcd9-ebda4eb9d369/state",
-    "status": "/power/P-1c609d50-b304-4c46-bcd9-ebda4eb9d369/status",
-    "error": "/power/P-1c609d50-b304-4c46-bcd9-ebda4eb9d369/error"
-  }
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Power operations">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Workflow-based operations">Workflow-based operations</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/%OPERATION"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/%OPERATION</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/logs/:cluster?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/logs/:cluster?</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/debugs/:node?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/debugs/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/state"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/state</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/status"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/status</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/error"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/error</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/%OPERATION/:id"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id</SPAN></A></LI></UL><H2 class="operation_index_title">Return types</H2><DIV class="type_frame"><H3 class="type_title"><A id="type_Workflow"><B class="type_name">Workflow</B><SPAN class="type_title_desc">(<SPAN class="type_basetype">Hash</SPAN>)</SPAN></A></H3><P class="type_desc">The information related to the workflow of an operation (deployment,reboot,power)</P><DIV class="type_subframe"><TABLE class="type_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the operation (prefixed by "D-" for deployment, "R-" for reboot, "P-" for power and "C-" for console)</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The user that initiated the operation</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">done</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">Set to true if the operation is done. Once an operation is done it's information should be removed from the API using the DELETE method.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">error</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">Set to true if an error was encountered. The error message can be obtained by getting /%OPERATION/:id/error.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">start_time</SPAN></SPAN></TD><TD class="field_type">Integer</TD><TD class="field_desc">The start time (POSIX time) of the operation</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">logs</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">New logs available for polling (see /%OPERATION/:id/logs). Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">debugs</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">New debugs available for polling (see /%OPERATION/:id/debugs). Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">time</SPAN></SPAN></TD><TD class="field_type">Float</TD><TD class="field_desc">The time elapsed since the start of the operation. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">environment</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The environment that is currently being deployed. Only displayed when the operation uses an environment. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The owner of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The name of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">version</SPAN></SPAN></TD><TD class="field_type">Integer</TD><TD class="field_desc">The version of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN></TD><TD class="field_type">Hash/Array</TD><TD class="field_desc">If the user have the rights to consult the information, a list of nodes ordered by state will be returned otherwise an Array of the nodes involved in the operation will be returned</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_normal">nodes</SPAN></SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">ok</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The list of nodes that have finish the operation successfully</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_normal">nodes</SPAN></SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">ko</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The list of nodes that have finish the operation with an error. The error message of each node can be obtained by getting /%OPERATION/:id/state.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_normal">nodes</SPAN></SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">processing</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The list of nodes that are still processing the operation</TD></TR></TABLE></DIV><H3 class="type_subtitle">Example #1</H3><PRE class="code_sample">{
+Content-Type: text/plain
+Content-Length: 5
+3.2.0</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Global information">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Workflow-based operations">Workflow-based operations</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/%OPERATION"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/%OPERATION</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/logs/:cluster?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/logs/:cluster?</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/debugs/:node?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/debugs/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/state"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/state</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/status"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/status</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/error"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/error</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/%OPERATION/:id"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id</SPAN></A></LI></UL><H2 class="operation_index_title">Return types</H2><DIV class="type_frame"><H3 class="type_title"><A id="type_Workflow"><B class="type_name">Workflow</B><SPAN class="type_title_desc">(<SPAN class="type_basetype">Hash</SPAN>)</SPAN></A></H3><P class="type_desc">The information related to the workflow of an operation (deployment,reboot,power)</P><DIV class="type_subframe"><TABLE class="type_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the operation (prefixed by "D-" for deployment, "R-" for reboot, "P-" for power and "C-" for console)</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The user that initiated the operation</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">done</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">Set to true if the operation is done. Once an operation is done it's information should be removed from the API using the DELETE method.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">error</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">Set to true if an error was encountered. The error message can be obtained by getting /%OPERATION/:id/error.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">start_time</SPAN></SPAN></TD><TD class="field_type">Integer</TD><TD class="field_desc">The start time (POSIX time) of the operation</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">logs</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">New logs available for polling (see /%OPERATION/:id/logs). Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">debugs</SPAN></SPAN></TD><TD class="field_type">Boolean</TD><TD class="field_desc">New debugs available for polling (see /%OPERATION/:id/debugs). Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">time</SPAN></SPAN></TD><TD class="field_type">Float</TD><TD class="field_desc">The time elapsed since the start of the operation. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">environment</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The environment that is currently being deployed. Only displayed when the operation uses an environment. Only available to the users that have the rights to consult the information about this operation.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">id</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The owner of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The name of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">version</SPAN></SPAN></TD><TD class="field_type">Integer</TD><TD class="field_desc">The version of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN></TD><TD class="field_type">Hash/Array</TD><TD class="field_desc">If the user have the rights to consult the information, a list of nodes ordered by state will be returned otherwise an Array of the nodes involved in the operation will be returned</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_normal">nodes</SPAN></SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">ok</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The list of nodes that have finish the operation successfully</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_normal">nodes</SPAN></SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">ko</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The list of nodes that have finish the operation with an error. The error message of each node can be obtained by getting /%OPERATION/:id/state.</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_normal">nodes</SPAN></SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">processing</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The list of nodes that are still processing the operation</TD></TR></TABLE></DIV><H3 class="type_subtitle">Example #1</H3><PRE class="code_sample">{
   "id": "D-b9401264-4383-4401-a548-1f881ea14acb",
   "user": "frontend",
   "done": false,
@@ -1656,7 +1816,7 @@ Content-Length: 527
     ]
   },
   "time": 1.01
-}</PRE></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="POST/%OPERATION"><B class="resource_method_POST">POST</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION</SPAN></A></H2><P class="resource_desc">Launch an operation</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">...</SPAN></SPAN></TD><TD class="parameter_type">Deployment/Reboot/Power</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The operation's parameters</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">breakpoint</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of a step to breakpoint on (can be MacrostepName or MacrostepName:MicrostepName)</TD></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">custom_operations</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Add some custom steps to the operation's workflow</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">debug</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Enable the command's debugging</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">force</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Force the operation, even if the nodes seems to be already involved in another one</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">hook</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Enable the server-side hook at the end of the operation</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">verbose_level</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The verbose level of the logs<BR><EM>Expected values: </EM>1, 2, 3, 4, 5</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_dynamic">macrostepname</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The macro-step the custom-step has to be added to</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_dynamic">microstepname</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The micro-step the custom-step has to be added to</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_dynamic">overwrite</SPAN></SPAN></TD><TD class="parameter_type">Boolean</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Overwrite the custom-steps that were add in the configuration by the administrators<BR><EM>Default value: </EM>false</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_dynamic">where</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A list of actions to be substitued/pre/post to this step<BR><EM>Expected values: </EM>substitute, pre-ops, post-ops</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">action</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The action that have to be performed<BR><EM>Expected values: </EM>run, send, exec</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">command</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">(To be specified if the action is "exec") The command to be executed. If you want to call a script, dont forget to add a "." (or use "source") before the script name to be able to use Kadeploy3 environment variables inside of it (example: "command: . /myscript.sh").</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">destination</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">(To be specified if the action is "send") The destination directory on the nodes (Kadeploy3 environment variables are substitued in the path)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">file</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">(To be specified if the action is "send" or "run") The path to the file to be send/executed (if the action is "send" the file name will remains the same, if the action is "run" this file need to contain a script)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the custom operation</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">params</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">(To be specified if the action is "run") The parameters of the script.<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">retries</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The number of retries for this custom operation<BR><EM>Default value: </EM>0</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">scattering</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The scattering kind for this custom operation<BR><EM>Expected values: </EM>tree, chain<BR><EM>Default value: </EM>tree</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">timeout</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The timeout (seconds) of this custom operation<BR><EM>Default value: </EM>0</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">resources</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The resources associated with the workflow and their URL</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">debug</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Concatenated debugs</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">debugs</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">Debugs by node</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.{<SPAN class="element_normal">debugs</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_dynamic">nodename</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Debug of node nodename</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">error</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Error message</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">output</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Concatenated outputs</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">outputs</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">Outputs by cluster</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.{<SPAN class="element_normal">outputs</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_dynamic">clustername</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Output of cluster clustername</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">state</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Deployment state of nodes</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">status</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Status of operation's instances (one instance by cluster)</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">wid</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the workflow that was initiated</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Deploy a recorded environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /deployment HTTP/1.1
+}</PRE></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="POST/%OPERATION"><B class="resource_method_POST">POST</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION</SPAN></A></H2><P class="resource_desc">Launch an operation</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">...</SPAN></SPAN></TD><TD class="parameter_type">Deployment/Reboot/Power</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The operation's parameters</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">breakpoint</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of a step to breakpoint on (can be MacrostepName or MacrostepName:MicrostepName)</TD></TR><TR class="parameter_frame"><TD class="parameter_name">{<SPAN class="element_self"><SPAN class="element_normal">custom_operations</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Add some custom steps to the operation's workflow</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">debug</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Enable the command's debugging</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">force</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Force the operation, even if the nodes seems to be already involved in another one</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">hook</SPAN></SPAN></TD><TD class="parameter_type">Set</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Enable the server-side hook at the end of the operation</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">verbose_level</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The verbose level of the logs<BR><EM>Expected values: </EM>1, 2, 3, 4, 5</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_dynamic">macrostepname</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The macro-step the custom-step has to be added to</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_dynamic">microstepname</SPAN></SPAN>}</TD><TD class="parameter_type">Hash</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The micro-step the custom-step has to be added to</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_dynamic">overwrite</SPAN></SPAN></TD><TD class="parameter_type">Boolean</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Overwrite the custom-steps that were add in the configuration by the administrators<BR><EM>Default value: </EM>false</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_dynamic">where</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">A list of actions to be substitued/pre/post to this step<BR><EM>Expected values: </EM>substitute, pre-ops, post-ops</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">action</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The action that have to be performed<BR><EM>Expected values: </EM>run, send, exec</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">command</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">(To be specified if the action is "exec") The command to be executed. If you want to call a script, dont forget to add a "." (or use "source") before the script name to be able to use Kadeploy3 environment variables inside of it (example: "command: . /myscript.sh").</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">destination</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">(To be specified if the action is "send") The destination directory on the nodes (Kadeploy3 environment variables are substitued in the path)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">file</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">(To be specified if the action is "send" or "run") The path to the file to be send/executed (if the action is "send" the file name will remains the same, if the action is "run" this file need to contain a script)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the custom operation</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">params</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">(To be specified if the action is "run") The parameters of the script.<BR><EM>Default value: </EM>empty string</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">retries</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The number of retries for this custom operation<BR><EM>Default value: </EM>0</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">scattering</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The scattering kind for this custom operation<BR><EM>Expected values: </EM>tree, chain<BR><EM>Default value: </EM>tree</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">custom_operations</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.[<SPAN class="element_dynamic">where</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">timeout</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The timeout (seconds) of this custom operation<BR><EM>Default value: </EM>0</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">resources</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The resources associated with the workflow and their URL</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">debug</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Concatenated debugs</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">debugs</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">Debugs by node</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.{<SPAN class="element_normal">debugs</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_dynamic">nodename</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Debug of node nodename</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">error</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Error message</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">output</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Concatenated outputs</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">outputs</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">Outputs by cluster</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.{<SPAN class="element_normal">outputs</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_dynamic">clustername</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Output of cluster clustername</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">state</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Deployment state of nodes</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">resources</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">status</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">Status of operation's instances (one instance by cluster)</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">wid</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the workflow that was initiated</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Deploy a recorded environment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /deployment HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend
@@ -1690,7 +1850,7 @@ Content-Length: 555
     "status": "/deployment/D-bf5608b0-9354-446b-a648-c3abaa3cab95/status",
     "error": "/deployment/D-bf5608b0-9354-446b-a648-c3abaa3cab95/error"
   }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Perform a simple reboot</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /reboot HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Perform a simple reboot</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /reboot HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend
@@ -1718,7 +1878,7 @@ Content-Length: 533
     "status": "/reboot/R-6b7950ee-8889-4e0a-810e-9cb8db5286f7/status",
     "error": "/reboot/R-6b7950ee-8889-4e0a-810e-9cb8db5286f7/error"
   }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Perform a power-off</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">PUT /power HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Perform a power-off</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">PUT /power HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend
@@ -1745,7 +1905,7 @@ Content-Length: 527
     "status": "/power/P-e69b39a2-8b5b-416e-b016-7139b5a7e255/status",
     "error": "/power/P-e69b39a2-8b5b-416e-b016-7139b5a7e255/error"
   }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #4 <SPAN class="example_desc">Launch a deployment with some custom operations</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /deployment HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #4 <SPAN class="example_desc">Launch a deployment with some custom operations</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">POST /deployment HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend
@@ -1820,7 +1980,7 @@ Content-Length: 555
     "status": "/deployment/D-4fd6eeae-d0c3-4d29-ac58-691dd114a63d/status",
     "error": "/deployment/D-4fd6eeae-d0c3-4d29-ac58-691dd114a63d/error"
   }
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/%OPERATION"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION</SPAN></A></H2><P class="resource_desc">Get the workflow information of every running operation of the kind OPERATION</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN></TD><TD class="field_type"><A href="#type_Workflow">Workflow</A></TD><TD class="field_desc">The list of current operation's worklow information</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the list of current deployments</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment HTTP/1.1
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/%OPERATION"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION</SPAN></A></H2><P class="resource_desc">Get the workflow information of every running operation of the kind OPERATION</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN></TD><TD class="field_type"><A href="#type_Workflow">Workflow</A></TD><TD class="field_desc">The list of current operation's worklow information</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the list of current deployments</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -1859,7 +2019,7 @@ Content-Length: 578
       "node-1.testbed.lan"
     ]
   }
-]</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/%OPERATION/:id"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION/:id</SPAN></A></H2><P class="resource_desc">Get the workflow information (polling) of an operation</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Workflow">Workflow</A></TD><TD class="field_desc">The workflow information related to the operation #:id</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Gather a specific deployment status</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-bed42b5d-f667-4701-adf3-2be22dfe7853 HTTP/1.1
+]</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/%OPERATION/:id"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION/:id</SPAN></A></H2><P class="resource_desc">Get the workflow information (polling) of an operation</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_Workflow">Workflow</A></TD><TD class="field_desc">The workflow information related to the operation #:id</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Gather a specific deployment status</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-bed42b5d-f667-4701-adf3-2be22dfe7853 HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -1887,7 +2047,7 @@ Content-Length: 383
       "node-2.testbed.lan"
     ]
   },
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/%OPERATION/:id/logs/:cluster?"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION/:id/logs/:cluster?</SPAN></A></H2><P class="resource_desc">Get logs of a running operation (the "logs" field was set to true on the workflow's info)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">cluster</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the specific cluster to get the logs for</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">String</SPAN>, <SPAN class="response_content">text/plain</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The logs of the current operation prefixed by the timestamp of each line plus '|' in order to be able to sort them</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Gather a specific deployment logs</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-f98782d7-f45b-4895-8bf5-80fd421e5d8d/logs HTTP/1.1
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/%OPERATION/:id/logs/:cluster?"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION/:id/logs/:cluster?</SPAN></A></H2><P class="resource_desc">Get logs of a running operation (the "logs" field was set to true on the workflow's info)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">cluster</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the specific cluster to get the logs for</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">String</SPAN>, <SPAN class="response_content">text/plain</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The logs of the current operation prefixed by the timestamp of each line plus '|' in order to be able to sort them</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Gather a specific deployment logs</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-f98782d7-f45b-4895-8bf5-80fd421e5d8d/logs HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -1898,7 +2058,7 @@ Content-Length: 288
 1381236580.19662|  switch_pxe
 1381236580.70964|  reboot
 1381236580.70982|   * Performing a soft reboot on node-1.testbed.lan
-1381236590.22287|  wait_reboot</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Gather logs of a specific cluster</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-f98782d7-f45b-4895-8bf5-80fd421e5d8d/logs/graphene-cluster HTTP/1.1
+1381236590.22287|  wait_reboot</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Gather logs of a specific cluster</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-f98782d7-f45b-4895-8bf5-80fd421e5d8d/logs/graphene-cluster HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -1926,7 +2086,7 @@ Content-Length: 1054
 1381236761.43468|  wait_reboot
 1381236803.43984|End of step Deploy[BootNewEnvKexec] after 45s
 1381236803.45057|End of deployment for node-1.testbed.lan after 223s
-1381236803.89096|End of deployment on cluster griffon-cluster after 223s</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/%OPERATION/:id/debugs/:node?"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION/:id/debugs/:node?</SPAN></A></H2><P class="resource_desc">Gather the command's debugs of some/every nodes (the "debugs" field was set to true on the workflow's info)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">node</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the specific node to get the debugs for</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">String</SPAN>, <SPAN class="response_content">text/plain</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The logs of the current operation prefixed by the timestamp of each line plus '|' in order to be able to sort them</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get debugs of every nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-1267f271-d078-491a-9e2e-f2bfed571c4d/debugs HTTP/1.1
+1381236803.89096|End of deployment on cluster griffon-cluster after 223s</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/%OPERATION/:id/debugs/:node?"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION/:id/debugs/:node?</SPAN></A></H2><P class="resource_desc">Gather the command's debugs of some/every nodes (the "debugs" field was set to true on the workflow's info)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">node</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">The name of the specific node to get the debugs for</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">String</SPAN>, <SPAN class="response_content">text/plain</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The logs of the current operation prefixed by the timestamp of each line plus '|' in order to be able to sort them</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get debugs of every nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-1267f271-d078-491a-9e2e-f2bfed571c4d/debugs HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -1971,7 +2131,7 @@ X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE cl
 " -o connector="$type/$pid/$host/".length("$command").":$command".length("$line").":$line"."
 " -o state="$type/$pid/$host/".length("$command").":$command".length("$line").":$line".length("$peer").":$peer"."
 " -o info -o message -o taktuk -m 192.168.209.89 -m 192.168.209.90 broadcast exec [ mkdir -p /mnt/dest; umount /dev/sda3 2>/dev/null; mkfs -t ext3 -q -b 4096 -O sparse_super,filetype,resize_inode,dir_index /dev/sda3 ]
-     1381238180.50833|STATUS: 0</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Get debugs of a specific node</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-1267f271-d078-491a-9e2e-f2bfed571c4d/debugs/node-1.testbed.lan HTTP/1.1
+     1381238180.50833|STATUS: 0</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Get debugs of a specific node</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-1267f271-d078-491a-9e2e-f2bfed571c4d/debugs/node-1.testbed.lan HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -2000,7 +2160,7 @@ Content-Length: 2244
 1381237762.64785|STDOUT: griffon-89.nancy.grid5000.fr
 1381237762.64787|STDERR: Warning: Permanently added 'kavlan-2.nancy.grid5000.fr,172.16.79.121' (RSA) to the list of known hosts.
 1381237762.64788|STDERR: Warning: Permanently added 'kavlan-2.nancy.grid5000.fr,172.16.79.121' (RSA) to the list of known hosts.
-1381237762.64790|STATUS: 0</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/%OPERATION/:id/state"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION/:id/state</SPAN></A></H2><P class="resource_desc">Get the state of every nodes in a specific operation. Available when the operation is done.</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_dynamic">nodename</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The state of the node nodename</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">error</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">If the node is KO, contains the error message</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">macro</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The macro-step operation the node is performing</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">micro</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The micro-step operation the node is performing</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">state</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The state of the node</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get state of a specific deployment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-877303c3-e838-4cbf-b7e3-c9862baab93f/state HTTP/1.1
+1381237762.64790|STATUS: 0</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/%OPERATION/:id/state"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION/:id/state</SPAN></A></H2><P class="resource_desc">Get the state of every nodes in a specific operation. Available when the operation is done.</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_dynamic">nodename</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The state of the node nodename</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">error</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">If the node is KO, contains the error message</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">macro</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The macro-step operation the node is performing</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">micro</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The micro-step operation the node is performing</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">state</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The state of the node</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get state of a specific deployment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-877303c3-e838-4cbf-b7e3-c9862baab93f/state HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -2017,7 +2177,7 @@ Content-Length: 272
     "micro": "wait_reboot",
     "state": "reboot_in_progress"
   }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Get state of a specific power operation</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /power/P-d31fa2c1-d686-4b94-a639-21476a876d64/state HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Get state of a specific power operation</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /power/P-d31fa2c1-d686-4b94-a639-21476a876d64/state HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -2034,7 +2194,7 @@ Content-Length: 184
     "micro": "power",
     "state": "ok"
   }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Get state of a deployment that failed</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /power/D-b55916dc-30db-4979-8c67-d83fb1b2cad4/state HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Get state of a deployment that failed</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /power/D-b55916dc-30db-4979-8c67-d83fb1b2cad4/state HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -2053,7 +2213,7 @@ Content-Length: 412
     "state": "ko",
     "error": "SetDeploymentEnvUntrusted-reboot: very_hard_reboot command is not provided"
   }
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/%OPERATION/:id/status"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION/:id/status</SPAN></A></H2><P class="resource_desc">Get the global status of an operation (where are every nodes in the operation)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_dynamic">clustername</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The status of the cluster clustername</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_dynamic">macrostepname</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The status of the macro-step macroname</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_dynamic">microstepname</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The status of the micro-step microname</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The status of the nodes (of clustername) in the step macroname-microname</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.{<SPAN class="element_normal">nodes</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">**</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The nodes that are processing the step</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.{<SPAN class="element_normal">nodes</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">KO</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The nodes that have failed the step</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.{<SPAN class="element_normal">nodes</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">OK</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The nodes that have successfully done the step</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the status of a specific deployment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-877303c3-e838-4cbf-b7e3-c9862baab93f/status HTTP/1.1
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/%OPERATION/:id/status"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION/:id/status</SPAN></A></H2><P class="resource_desc">Get the global status of an operation (where are every nodes in the operation)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_dynamic">clustername</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The status of the cluster clustername</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_dynamic">macrostepname</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The status of the macro-step macroname</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_dynamic">microstepname</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The status of the micro-step microname</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The status of the nodes (of clustername) in the step macroname-microname</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.{<SPAN class="element_normal">nodes</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">**</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The nodes that are processing the step</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.{<SPAN class="element_normal">nodes</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">KO</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The nodes that have failed the step</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.{<SPAN class="element_dynamic">macrostepname</SPAN>}</SPAN>.{<SPAN class="element_dynamic">microstepname</SPAN>}</SPAN>.{<SPAN class="element_normal">nodes</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_normal">OK</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The nodes that have successfully done the step</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the status of a specific deployment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-877303c3-e838-4cbf-b7e3-c9862baab93f/status HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -2077,7 +2237,7 @@ Content-Length: 312
       }
     }
   }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Get the status of a specific power operation</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /power/P-d31fa2c1-d686-4b94-a639-21476a876d64/status HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Get the status of a specific power operation</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /power/P-d31fa2c1-d686-4b94-a639-21476a876d64/status HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -2101,7 +2261,7 @@ Content-Length: 285
       }
     }
   }
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/%OPERATION/:id/error"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION/:id/error</SPAN></A></H2><P class="resource_desc">Get the error of an operation (the "error" field was set to true on the workflow's info)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">String</SPAN>, <SPAN class="response_content">text/plain</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The error message</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Gather information about a deployment error</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-ec823946-b4fc-4a1f-b7fb-4c24b6a9ef51/error HTTP/1.1
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/%OPERATION/:id/error"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION/:id/error</SPAN></A></H2><P class="resource_desc">Get the error of an operation (the "error" field was set to true on the workflow's info)</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operation</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">String</SPAN>, <SPAN class="response_content">text/plain</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The error message</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Gather information about a deployment error</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /deployment/D-ec823946-b4fc-4a1f-b7fb-4c24b6a9ef51/error HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 400 Bad Request
@@ -2109,7 +2269,7 @@ X-Application-Error-Code: 5
 X-Application-Error-Info: SW52YWxpZCBmaWxlIC0tIFVuYWJsZSB0byBnZXQgdGhlIGNoZWNrc3VtIG9mIGh0dHA6Ly90ZXN0YmVkLmxhbi9kZWJpYW4tYmFzZS1ub25lLnRneiAoaHR0cCBlcnJvciAjNDA0KQ==
 Content-Type: text/plain
 Content-Length: 104
-Invalid file -- Unable to get the checksum of http://testbed.lan/debian-base-none.tgz (http error #404)</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="DELETE/%OPERATION/:id"><B class="resource_method_DELETE">DELETE</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION/:id</SPAN></A></H2><P class="resource_desc">Cancel a running operation or delete information about one that encountered an error</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operatiooperationn</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">wid</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the operation that was deleted</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Cancel a specific deployment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /deployment/D-ec823946-b4fc-4a1f-b7fb-4c24b6a9ef51 HTTP/1.1
+Invalid file -- Unable to get the checksum of http://testbed.lan/debian-base-none.tgz (http error #404)</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="DELETE/%OPERATION/:id"><B class="resource_method_DELETE">DELETE</B> <SPAN style="font-family: monospace;" class="resource_path">/%OPERATION/:id</SPAN></A></H2><P class="resource_desc">Cancel a running operation or delete information about one that encountered an error</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">id</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The id# of the operatiooperationn</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">wid</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The id# of the operation that was deleted</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, the workflow :id cannot be found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Cancel a specific deployment</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">DELETE /deployment/D-ec823946-b4fc-4a1f-b7fb-4c24b6a9ef51 HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -2117,7 +2277,7 @@ Content-Type: application/json
 Content-Length: 53
 {
   "wid": "D-ec823946-b4fc-4a1f-b7fb-4c24b6a9ef51"
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Nodes information">Nodes information</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/nodes/:nodename?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/nodes/:nodename?</SPAN></A></LI></UL><H2 class="operation_index_title">Return types</H2><DIV class="type_frame"><H3 class="type_title"><A id="type_NodeStatus"><B class="type_name">NodeStatus</B><SPAN class="type_title_desc">(<SPAN class="type_basetype">Hash</SPAN>)</SPAN></A></H3><P class="type_desc">Status of nodes</P><DIV class="type_subframe"><TABLE class="type_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_dynamic">nodename</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The status of the node nodename</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">state</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The current state of the node<BR>Possible values: 1, 2, 3, ...</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The last user that deployed the node</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">environment</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The last environment that was deployed on the node</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The owner of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The name of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">version</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The version of the environment</TD></TR></TABLE></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/nodes/:nodename?"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/nodes/:nodename?</SPAN></A></H2><P class="resource_desc">Gather nodes information</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">nodename</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Gather information of a specific node</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">list</SPAN></SPAN></TD><TD class="parameter_type">Boolean</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Ask to return an Array of node names corresponding to the nodes that are managed by the server</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash/Array</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_NodeStatus">NodeStatus</A></TD><TD class="field_desc">Status of the nodes</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, nodename not found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the status of every nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /nodes HTTP/1.1
+}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Workflow-based operations">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Nodes information">Nodes information</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/nodes/:nodename?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/nodes/:nodename?</SPAN></A></LI></UL><H2 class="operation_index_title">Return types</H2><DIV class="type_frame"><H3 class="type_title"><A id="type_NodeStatus"><B class="type_name">NodeStatus</B><SPAN class="type_title_desc">(<SPAN class="type_basetype">Hash</SPAN>)</SPAN></A></H3><P class="type_desc">Status of nodes</P><DIV class="type_subframe"><TABLE class="type_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_dynamic">nodename</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The status of the node nodename</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">state</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The current state of the node<BR>Possible values: 1, 2, 3, ...</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The last user that deployed the node</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_normal">environment</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The last environment that was deployed on the node</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">user</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The owner of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The name of the environment</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_dynamic">nodename</SPAN>}</SPAN>.{<SPAN class="element_normal">environment</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">version</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The version of the environment</TD></TR></TABLE></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/nodes/:nodename?"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/nodes/:nodename?</SPAN></A></H2><P class="resource_desc">Gather nodes information</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_param">nodename</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Gather information of a specific node</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">list</SPAN></SPAN></TD><TD class="parameter_type">Boolean</TD><TD class="parameter_mandat">Optional</TD><TD class="parameter_desc">Ask to return an Array of node names corresponding to the nodes that are managed by the server</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash/Array</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type"><A href="#type_NodeStatus">NodeStatus</A></TD><TD class="field_desc">Status of the nodes</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, nodename not found</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the status of every nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /nodes HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -2142,7 +2302,7 @@ Content-Length: 356
       "user": "root"
     }
   }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Get the status of a specific node</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /nodes/node-1.testbed.lan HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Get the status of a specific node</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /nodes/node-1.testbed.lan HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
@@ -2156,170 +2316,10 @@ Content-Length: 134
     "version": 1,
     "user": "root"
   }
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Get the list of nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /nodes?list HTTP/1.1
+}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Get the list of nodes</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);this.firstChild.style.display = (this.firstChild.style.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;);" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /nodes?list HTTP/1.1
 Accept: text/plain, application/json
 Host: kadeploy.testbed.lan:25300
 X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
 Content-Type: application/json
 Content-Length: 43
-["node-1.testbed.lan", "node-2.testbed.lan"]</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Nodes information">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Global information">Global information</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/clusters"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/clusters</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/auth_headers_prefix"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/auth_headers_prefix</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/info"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/info</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/version"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/version</SPAN></A></LI></UL></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/clusters"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/clusters</SPAN></A></H2><P class="resource_desc">Get the list of clusters</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Array</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The name of the cluster #i</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the list of clusters</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /clusters HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 45
-[
-  "griffon-cluster",
-  "graphene-cluster"
-]</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Global information">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/auth_headers_prefix"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/auth_headers_prefix</SPAN></A></H2><P class="resource_desc">Get information about the authentication HTTP headers of the running service</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">String</SPAN>, <SPAN class="response_content">text/plain</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The prefix that have to be specified in the HTTP headers when doing a request (for authentication purpose)</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Global information">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/info"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/info</SPAN></A></H2><P class="resource_desc">Get information about the configuration of the running service</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">Hash</SPAN>, <SPAN class="response_content">application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">automata</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The configuration of the deployment automata</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">automata</SPAN>}</SPAN>.{<SPAN class="element_self"><SPAN class="element_dynamic">clustername</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The configuration of the deployment automata for the cluster "clustername"</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">automata</SPAN>}</SPAN>.{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_dynamic">macrostepkind</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The configuration of the instances of the step "macrostepkind"</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">automata</SPAN>}</SPAN>.{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.[<SPAN class="element_dynamic">macrostepkind</SPAN>]</SPAN>.{<SPAN class="element_self"><SPAN class="element_iter">#i</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The configuration of the instances #i</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">automata</SPAN>}</SPAN>.{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.[<SPAN class="element_dynamic">macrostepkind</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">name</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The name of the instance</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">automata</SPAN>}</SPAN>.{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.[<SPAN class="element_dynamic">macrostepkind</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">retries</SPAN></SPAN></TD><TD class="field_type">Integer</TD><TD class="field_desc">The number of retries for the instance</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">automata</SPAN>}</SPAN>.{<SPAN class="element_dynamic">clustername</SPAN>}</SPAN>.[<SPAN class="element_dynamic">macrostepkind</SPAN>]</SPAN>.{<SPAN class="element_iter">#i</SPAN>}</SPAN>.<SPAN class="element_self"><SPAN class="element_normal">timeout</SPAN></SPAN></TD><TD class="field_type">Integer</TD><TD class="field_desc">The timeout of the instance</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_normal">pxe</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The netboot method configured on the server</TD></TR><TR class="field_frame"><TD class="field_name">{<SPAN class="element_self"><SPAN class="element_normal">supported_fs</SPAN></SPAN>}</TD><TD class="field_type">Hash</TD><TD class="field_desc">The filesystem format supported by the deployment environment of the different clusters</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">{<SPAN class="element_normal">supported_fs</SPAN>}</SPAN>.[<SPAN class="element_self"><SPAN class="element_dynamic">clustername</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The filesystem format supported by the deployment environment of the cluster "clustername"</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent"><SPAN class="element_parent">{<SPAN class="element_normal">supported_fs</SPAN>}</SPAN>.[<SPAN class="element_dynamic">clustername</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_iter">#format</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The filesystem format name</TD></TR><TR class="field_frame"><TD class="field_name">[<SPAN class="element_self"><SPAN class="element_normal">vars</SPAN></SPAN>]</TD><TD class="field_type">Array</TD><TD class="field_desc">The environment variables exported by the deployment environment when running custom scripts</TD></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_parent">[<SPAN class="element_normal">vars</SPAN>]</SPAN>.<SPAN class="element_self"><SPAN class="element_iter">#name</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The variable name</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get information about the service's configuration</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /info HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 1851
-{
-  "pxe": "PXElinux",
-  "automata": {
-    "griffon-cluster": {
-      "SetDeploymentEnv": [
-        {
-          "name": "SetDeploymentEnvUntrusted",
-          "retries": 1,
-          "timeout": 200
-        }
-      ],
-      "BroadcastEnv": [
-        {
-          "name": "BroadcastEnvKastafior",
-          "retries": 1,
-          "timeout": 200
-        }
-      ],
-      "BootNewEnv": [
-        {
-          "name": "BootNewEnvKexec",
-          "retries": 0,
-          "timeout": 200
-        },
-        {
-          "name": "BootNewEnvHardReboot",
-          "retries": 1,
-          "timeout": 200
-        }
-      ]
-    },
-    "graphene-cluster": {
-      "SetDeploymentEnv": [
-        {
-          "name": "SetDeploymentEnvUntrusted",
-          "retries": 1,
-          "timeout": 200
-        }
-      ],
-      "BroadcastEnv": [
-        {
-          "name": "BroadcastEnvKastafior",
-          "retries": 1,
-          "timeout": 200
-        }
-      ],
-      "BootNewEnv": [
-        {
-          "name": "BootNewEnvKexec",
-          "retries": 0,
-          "timeout": 200
-        },
-        {
-          "name": "BootNewEnvHardReboot",
-          "retries": 1,
-          "timeout": 200
-        }
-      ]
-    }
-  },
-  "supported_fs": {
-    "griffon-cluster": [
-      "ext2",
-      "ext3",
-      "fat"
-    ],
-    "graphene-cluster": [
-      "ext2",
-      "ext3",
-      "fat"
-    ]
-  },
-  "vars": [
-    "KADEPLOY_BLOCK_DEVICE",
-    "KADEPLOY_CLUSTER",
-    "KADEPLOY_DEPLOY_PART",
-    "KADEPLOY_DEPLOY_PART_NUM",
-    "KADEPLOY_ENV",
-    "KADEPLOY_ENV_HYPERVISOR",
-    "KADEPLOY_ENV_HYPERVISOR_PARAMS",
-    "KADEPLOY_ENV_INITRD",
-    "KADEPLOY_ENV_KERNEL",
-    "KADEPLOY_ENV_KERNEL_PARAMS",
-    "KADEPLOY_OS_KIND",
-    "KADEPLOY_PREPOST_EXTRACTION_DIR",
-    "KADEPLOY_PROD_PART_NUM",
-    "KADEPLOY_SWAP_PART_NUM",
-    "KADEPLOY_TMP_DIR",
-    "KADEPLOY_TMP_PART_NUM"
-  ]
-}</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Global information">Back to operation</A></P><HR class="operation_inter_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/version"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/version</SPAN></A></H2><P class="resource_desc">Get the version of the server</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">String</SPAN>, <SPAN class="response_content">text/plain</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_dynamic"></SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">The version of the server</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Get the version of the server "kadeploy.testbed.lan"</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /version HTTP/1.1
-Accept: text/plain, application/json
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: text/plain
-Content-Length: 5
-3.2.0</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Global information">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"><DIV class="operation_frame"><H1 class="operation_title"><A id="Statistics">Statistics</A></H1><DIV class="operation_index_frame"><H2 class="operation_index_title">Resources</H2><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/stats/%OPERATION?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/stats/%OPERATION?</SPAN></A></LI></UL></DIV><P class="operation_back_link"><A class="operation_back_link" href="#title">Back to title</A></P><HR class="operation_index_sep"><DIV class="resource_frame"><H2 class="resource_title"><A id="GET/stats/%OPERATION?"><B class="resource_method_GET">GET</B> <SPAN style="font-family: monospace;" class="resource_path">/stats/%OPERATION?</SPAN></A></H2><P class="resource_desc">Gather statistics. The operation can be set to deploy, reboot, power or an empty value</P><DIV class="request_frame"><H3 class="request_title">Request <SPAN class="request_title_desc">(<SPAN class="request_type">Hash</SPAN>, <SPAN class="request_content">application/json</SPAN>)</SPAN></H3><DIV class="request_subframe"><H4 class="request_subtitle">Parameters</H4><TABLE class="request_parameters"><TR><TH>Name</TH><TH>Type</TH><TH>Kind</TH><TH>Description</TH></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">date_max</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">Statistics to a specific date date (RFC 2616 format)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">date_min</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">Statistics from a specific date date (RFC 2616 format)</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">fields</SPAN></SPAN></TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The fields to be displayed<BR><EM>Expected values: </EM>wid, user, hostname, step1, step2, step3, timeout_step1, timeout_step2, timeout_step3, retry_step1, retry_step2, retry_step3, start, step1_duration, step2_duration, step3_duration, env, md5, success, error<BR><EM>Default value: </EM>["wid", "user", "hostname", "step1", "step2", "step3", "timeout_step1", "timeout_step2", "timeout_step3", "retry_step1", "retry_step2", "retry_step3", "start", "step1_duration", "step2_duration", "step3_duration", "env", "md5", "success", "error"]</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">kind</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The kind of statistics<BR><EM>Expected values: </EM>all, failure_rates<BR><EM>Default value: </EM>all</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">min_failure_rate</SPAN></SPAN></TD><TD class="parameter_type">Float</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The list of nodes which have a specified minimum failure-rate (between 0 and 1). This filter have to be used with the kind <I>failure_rates</I></TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">min_retries</SPAN></SPAN></TD><TD class="parameter_type">Integer</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">Statistics about the nodes that need at least NB attempts to perform specific steps</TD></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">nodes</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The list of nodes to gather the statistics about</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">sort</SPAN></SPAN></TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">The fields to sort results by<BR><EM>Expected values: </EM>wid, user, hostname, step1, step2, step3, timeout_step1, timeout_step2, timeout_step3, retry_step1, retry_step2, retry_step3, start, step1_duration, step2_duration, step3_duration, env, md5, success, error<BR><EM>Default value: </EM>["wid", "user", "hostname", "step1", "step2", "step3", "timeout_step1", "timeout_step2", "timeout_step3", "retry_step1", "retry_step2", "retry_step3", "start", "step1_duration", "step2_duration", "step3_duration", "env", "md5", "success", "error"]</TD></TR><TR class="parameter_frame"><TD class="parameter_name">[<SPAN class="element_self"><SPAN class="element_normal">step_retries</SPAN></SPAN>]</TD><TD class="parameter_type">Array</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">Apply the retry filter on the given steps</TD></TR><TR class="parameter_frame"><TD class="parameter_name"><SPAN class="element_self"><SPAN class="element_normal">wid</SPAN></SPAN></TD><TD class="parameter_type">String</TD><TD class="parameter_mandat">Mandatory</TD><TD class="parameter_desc">Specify the workflow #id</TD></TR></TABLE></DIV></DIV><DIV class="response_frame"><H3 class="response_title">Response <SPAN class="response_title_desc">(<SPAN class="response_type">String</SPAN>, <SPAN class="response_content">gzipped text/csv or application/json</SPAN>)</SPAN></H3><DIV class="response_subframe"><H4 class="response_subtitle">Fields</H4><TABLE class="response_fields"><TR><TH>Name</TH><TH>Type</TH><TH>Description</TH></TR><TR class="field_frame"><TD class="field_name"><SPAN class="element_self"><SPAN class="element_iter">#line</SPAN></SPAN></TD><TD class="field_type">String</TD><TD class="field_desc">A line in the format specified by the <I>fields</I> parameter</TD></TR></TABLE><H4 class="response_subtitle">Return codes</H4><TABLE class="response_codes"><TR><TH>Code#</TH><TH>Description</TH></TR><TR class="code_frame"><TD class="code_number">200</TD><TD class="code_desc">OK, the request is successful</TD></TR><TR class="code_frame"><TD class="code_number">500</TD><TD class="code_desc">Internal Server Error, an uncatched exception was thrown on the server</TD></TR><TR class="code_frame"><TD class="code_number">400</TD><TD class="code_desc">Bad Request, Kadeploy Error: please check the X-Application-Error-Code and X-Application-Error-Code headers</TD></TR><TR class="code_frame"><TD class="code_number">401</TD><TD class="code_desc">Unauthorized, you need to be authenticated</TD></TR><TR class="code_frame"><TD class="code_number">403</TD><TD class="code_desc">Forbidden, you do not the rights to perform this operation. Unlike a 401 Unauthorized response, authenticating will make no difference.</TD></TR><TR class="code_frame"><TD class="code_number">415</TD><TD class="code_desc">Unsupported Media Type, check the Content-Type of your request's body</TD></TR><TR class="code_frame"><TD class="code_number">404</TD><TD class="code_desc">File not found, invalid operation</TD></TR></TABLE></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #1 <SPAN class="example_desc">Gather all statistics</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /stats HTTP/1.1
-Accept: */*
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: text/csv
-Content-Encoding: gzip
-Content-Length: 241
----GUNZIPPED---
-D-9a87115b-eb7f-45e4-90f2-bec00ccc5dab,frontend,node-1.testbed.lan,SetDeploymentEnvUntrusted,BroadcastEnvKastafior,BootNewEnvKexec,200,200,200,0,0,0,1389347228,165,68,46,debian-base:1,,true,
-D-9a87115b-eb7f-45e4-90f2-bec00ccc5dab,frontend,node-2.testbed.lan,SetDeploymentEnvUntrusted,BroadcastEnvKastafior,BootNewEnvKexec,200,200,200,0,0,0,1389347228,165,68,46,debian-base:1,,true,
-R-6d5d2255-f533-44a5-a191-ec69fc5f17b9,frontend,node-1.testbed.lan,Simple,,,0,0,0,0,0,0,1389347638,106,0,0,,,true,
-R-f6aedfae-12fa-42dd-9c18-6278a9b5ad9d,frontend,node-1.testbed.lan,Simple,,,0,0,0,0,0,0,1389348342,112,0,0,,,true,
-R-f6aedfae-12fa-42dd-9c18-6278a9b5ad9d,frontend,node-2.testbed.lan,Simple,,,0,0,0,0,0,0,1389348342,112,0,0,,,true,
-P-0073d9d7-d25f-46b1-9b95-d9c4fd52484b,frontend,node-1.testbed.lan,Off,,,0,0,0,0,0,0,1389348732,10,0,0,,,true,
-P-0073d9d7-d25f-46b1-9b95-d9c4fd52484b,frontend,node-2.testbed.lan,Off,,,0,0,0,0,0,0,1389348732,10,0,0,,,true,
-P-130b8e01-9025-483e-9cb3-2216ea66156d,frontend,node-1.testbed.lan,On,,,0,0,0,0,0,0,1389348781,3,0,0,,,true,
-P-130b8e01-9025-483e-9cb3-2216ea66156d,frontend,node-2.testbed.lan,On,,,0,0,0,0,0,0,1389348781,3,0,0,,,true,
----------------</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #2 <SPAN class="example_desc">Gather deployments statistics</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /stats/deploy HTTP/1.1
-Accept: */*
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: text/csv
-Content-Encoding: gzip
-Content-Length: 179
----GUNZIPPED---
-D-9a87115b-eb7f-45e4-90f2-bec00ccc5dab,frontend,node-1.testbed.lan,SetDeploymentEnvUntrusted,BroadcastEnvKastafior,BootNewEnvKexec,200,200,200,0,0,0,1389347228,165,68,46,debian-base:1,,true,
-D-9a87115b-eb7f-45e4-90f2-bec00ccc5dab,frontend,node-2.testbed.lan,SetDeploymentEnvUntrusted,BroadcastEnvKastafior,BootNewEnvKexec,200,200,200,0,0,0,1389347228,165,68,46,debian-base:1,,true,
----------------</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #3 <SPAN class="example_desc">Gather the list of nodes with a specific failure rate</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /stats?kind=failure_rates&min_failure_rate=0.0 HTTP/1.1
-Accept: */*
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 60
-{
-  "node-1.testbed.lan": 0.0,
-  "node-2.testbed.lan": 0.0
-}</PRE></DIV></DIV></DIV><DIV class="example_frame"><H3 class="example_title">Example #4 <SPAN class="example_desc">Gather all statistics to a specific date</SPAN></H3><DIV onclick="this.lastChild.style.display = (this.lastChild.style.display == 'none' ? 'block' : 'none');this.firstChild.style.display = (this.firstChild.style.display == 'none' ? 'block' : 'none');" class="example_subframe"><P class="toggle_link">show</P><DIV class="toggle_content" style="display: none;"><H4 class="example_subtitle">Request</H4><PRE class="code_sample">GET /stats?kind=all&date_max=Fri%2C+10+Jan+2014+10%3A10%3A00+GMT HTTP/1.1
-Accept: */*
-Host: kadeploy.testbed.lan:25300
-X-Kadeploy-User: frontend</PRE><H4 class="example_subtitle">Response</H4><PRE class="code_sample">HTTP/1.1 200 OK
-Content-Type: text/csv
-Content-Encoding: gzip
-Content-Length: 264
----GUNZIPPED---
-D-9a87115b-eb7f-45e4-90f2-bec00ccc5dab,frontend,node-1.testbed.lan,SetDeploymentEnvUntrusted,BroadcastEnvKastafior,BootNewEnvKexec,200,200,200,0,0,0,1389347228,165,68,46,debian-base:1,,true,
-D-9a87115b-eb7f-45e4-90f2-bec00ccc5dab,frontend,node-2.testbed.lan,SetDeploymentEnvUntrusted,BroadcastEnvKastafior,BootNewEnvKexec,200,200,200,0,0,0,1389347228,165,68,46,debian-base:1,,true,
-R-6d5d2255-f533-44a5-a191-ec69fc5f17b9,frontend,node-1.testbed.lan,Simple,,,0,0,0,0,0,0,1389347638,106,0,0,,,true,
-R-f6aedfae-12fa-42dd-9c18-6278a9b5ad9d,frontend,node-1.testbed.lan,Simple,,,0,0,0,0,0,0,1389348342,112,0,0,,,true,
-R-f6aedfae-12fa-42dd-9c18-6278a9b5ad9d,frontend,node-2.testbed.lan,Simple,,,0,0,0,0,0,0,1389348342,112,0,0,,,true,
----------------</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Statistics">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"></DIV></BODY></HTML>
+["node-1.testbed.lan", "node-2.testbed.lan"]</PRE></DIV></DIV></DIV></DIV><P class="operation_back_link"><A class="operation_back_link" href="#Nodes information">Back to operation</A></P><HR class="operation_inter_sep"></DIV><HR class="operation_sep"></DIV></BODY></HTML>
diff --git a/man/kaconsole3.1 b/man/kaconsole3.1
index 157b44bfb31dd1a9b1733af8ae6a8098d746a6a4..3f3f2bdcf832f47274756ee4323617e663c0ce78 100644
--- a/man/kaconsole3.1
+++ b/man/kaconsole3.1
@@ -1,10 +1,10 @@
-.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.40.10.
-.TH KACONSOLE3 "1" "July 2014" "kaconsole3 3.3.0.rc1" "User Commands"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.45.1.
+.TH KACONSOLE3 "1" "August 2014" "kaconsole3 3.3.0.rc2" "User Commands"
 .SH NAME
 kaconsole3 \- access the console of deploying nodes
 .SH SYNOPSIS
 .B kaconsole3
-[\fIoptions\fR]
+[\fI\,options\/\fR]
 .SH DESCRIPTION
 Contact: kadeploy3\-users@lists.gforge.inria.fr
 .SS "Generic options:"
diff --git a/man/kadeploy3.1 b/man/kadeploy3.1
index d1f93cdfce942053e4528be8c8ec051a07b56662..4383f138f91aeb89d3dd1d591043ecd8665748cd 100644
--- a/man/kadeploy3.1
+++ b/man/kadeploy3.1
@@ -1,10 +1,10 @@
-.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.40.10.
-.TH KADEPLOY3 "1" "July 2014" "kadeploy3 3.3.0.rc1" "User Commands"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.45.1.
+.TH KADEPLOY3 "1" "August 2014" "kadeploy3 3.3.0.rc2" "User Commands"
 .SH NAME
 kadeploy3 \- Kadeploy client -- perform efficient deployments on cluster nodes
 .SH SYNOPSIS
 .B kadeploy3
-[\fIoptions\fR]
+[\fI\,options\/\fR]
 .SH DESCRIPTION
 Contact: kadeploy3\-users@lists.gforge.inria.fr
 .SS "Generic options:"
@@ -96,7 +96,7 @@ Specify the partition number to use
 \fB\-\-partition\-number\fR
 .TP
 \fB\-r\fR, \fB\-\-reformat\-tmp\fR FSTYPE
-Reformat the /tmp partition with the given filesystem type (this filesystem need to be supported by the deployment environment)
+Reformat the \fI\,/tmp\/\fP partition with the given filesystem type (this filesystem need to be supported by the deployment environment)
 .TP
 \fB\-u\fR, \fB\-\-env\-user\fR USERNAME
 Specify the user that own the recorded environment
diff --git a/man/kadeploy3d.8 b/man/kadeploy3d.8
index 986eb0cd83b62f75e42ccc72cbe889fbb4d90171..83a3bd3527eae156f0cf718771989ff8b61608a8 100644
--- a/man/kadeploy3d.8
+++ b/man/kadeploy3d.8
@@ -1,10 +1,10 @@
-.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.40.10.
-.TH KADEPLOY3D "8" "July 2014" "kadeploy3d 3.3.0.rc1" "System Administration Utilities"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.45.1.
+.TH KADEPLOY3D "8" "August 2014" "kadeploy3d 3.3.0.rc2" "System Administration Utilities"
 .SH NAME
 kadeploy3d \- Kadeploy server
 .SH SYNOPSIS
 .B kadeploy3d
-[\fIoptions\fR]
+[\fI\,options\/\fR]
 .SH DESCRIPTION
 !!! Be careful, the daemon is not launched as root !!!
 .TP
@@ -15,7 +15,7 @@ Write the pid of the daemon process in a file
 Run the application in background
 .TP
 \fB\-I\fR, \fB\-\-no\-stdin\-pipe\fR
-Do not pipe /dev/null to stdin
+Do not pipe \fI\,/dev/null\/\fP to stdin
 .TP
 \fB\-O\fR, \fB\-\-no\-stdout\-redirect\fR
 Do not redirect stdout to a logfile
diff --git a/man/kaenv3.1 b/man/kaenv3.1
index 38ae4d8f40426b529d11571c60c189474c6ad302..42f6435362aa7fc5d652da951b692736f6beb34c 100644
--- a/man/kaenv3.1
+++ b/man/kaenv3.1
@@ -1,10 +1,10 @@
-.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.40.10.
-.TH KAENV3 "1" "July 2014" "kaenv3 3.3.0.rc1" "User Commands"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.45.1.
+.TH KAENV3 "1" "August 2014" "kaenv3 3.3.0.rc2" "User Commands"
 .SH NAME
 kaenv3 \- manage the Kadeploy environments
 .SH SYNOPSIS
 .B kaenv3
-[\fIoptions\fR]
+[\fI\,options\/\fR]
 .SH DESCRIPTION
 Contact: kadeploy3\-users@lists.gforge.inria.fr
 .SS "Generic options:"
diff --git a/man/kanodes3.1 b/man/kanodes3.1
index 735661c4b67f4c824b699a8bedaf34b2d1d54b6d..e938d64d39580dd3a8e24139239185e7c42e960f 100644
--- a/man/kanodes3.1
+++ b/man/kanodes3.1
@@ -1,10 +1,10 @@
-.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.40.10.
-.TH KANODES3 "1" "July 2014" "kanodes3 3.3.0.rc1" "User Commands"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.45.1.
+.TH KANODES3 "1" "August 2014" "kanodes3 3.3.0.rc2" "User Commands"
 .SH NAME
 kanodes3 \- get information on the current deployments
 .SH SYNOPSIS
 .B kanodes3
-[\fIoptions\fR]
+[\fI\,options\/\fR]
 .SH DESCRIPTION
 Contact: kadeploy3\-users@lists.gforge.inria.fr
 .SS "Generic options:"
diff --git a/man/kapower3.1 b/man/kapower3.1
index 5b3c509cf71a67028a3f12eef6a11890cfc70067..b1dca7a0aadc75da6abadf0cfab71bfca412f0c0 100644
--- a/man/kapower3.1
+++ b/man/kapower3.1
@@ -1,10 +1,10 @@
-.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.40.10.
-.TH KAPOWER3 "1" "July 2014" "kapower3 3.3.0.rc1" "User Commands"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.45.1.
+.TH KAPOWER3 "1" "August 2014" "kapower3 3.3.0.rc2" "User Commands"
 .SH NAME
 kapower3 \- control the power status of nodes
 .SH SYNOPSIS
 .B kapower3
-[\fIoptions\fR]
+[\fI\,options\/\fR]
 .SH DESCRIPTION
 Contact: kadeploy3\-users@lists.gforge.inria.fr
 .SS "Generic options:"
diff --git a/man/kareboot3.1 b/man/kareboot3.1
index 6a09b3ef8fbbca51b008f83f143e73e0a5b75939..975f8c53a73494892997ab543a0893180c2df28f 100644
--- a/man/kareboot3.1
+++ b/man/kareboot3.1
@@ -1,10 +1,10 @@
-.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.40.10.
-.TH KAREBOOT3 "1" "July 2014" "kareboot3 3.3.0.rc1" "User Commands"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.45.1.
+.TH KAREBOOT3 "1" "August 2014" "kareboot3 3.3.0.rc2" "User Commands"
 .SH NAME
 kareboot3 \- perform reboot operations on the nodes involved in a deployment
 .SH SYNOPSIS
 .B kareboot3
-[\fIoptions\fR]
+[\fI\,options\/\fR]
 .SH DESCRIPTION
 Contact: kadeploy3\-users@lists.gforge.inria.fr
 .SS "Generic options:"
diff --git a/man/karights3.8 b/man/karights3.8
index 2100aacdb638d7637c2fcc70cd9f602b981b5485..cb96d33c404ce5cae9cbbbc3e4a0c03501dabf1c 100644
--- a/man/karights3.8
+++ b/man/karights3.8
@@ -1,10 +1,10 @@
-.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.40.10.
-.TH KARIGHTS3 "8" "July 2014" "karights3 3.3.0.rc1" "System Administration Utilities"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.45.1.
+.TH KARIGHTS3 "8" "August 2014" "karights3 3.3.0.rc2" "System Administration Utilities"
 .SH NAME
 karights3 \- manage users deployment rights
 .SH SYNOPSIS
 .B karights3
-[\fIoptions\fR]
+[\fI\,options\/\fR]
 .SH DESCRIPTION
 Contact: kadeploy3\-users@lists.gforge.inria.fr
 .SS "Generic options:"
diff --git a/man/kastat3.1 b/man/kastat3.1
index 86eabbc98019bdb7781c81175f74b90cf1206d72..d0d06fbab25aaca2105f98e7b834b1b539c3ceac 100644
--- a/man/kastat3.1
+++ b/man/kastat3.1
@@ -1,10 +1,10 @@
-.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.40.10.
-.TH KASTAT3 "1" "July 2014" "kastat3 3.3.0.rc1" "User Commands"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.45.1.
+.TH KASTAT3 "1" "August 2014" "kastat3 3.3.0.rc2" "User Commands"
 .SH NAME
 kastat3 \- get statistics on the deployments
 .SH SYNOPSIS
 .B kastat3
-[\fIoptions\fR]
+[\fI\,options\/\fR]
 .SH DESCRIPTION
 Contact: kadeploy3\-users@lists.gforge.inria.fr
 .SS "Generic options:"
diff --git a/release_version b/release_version
index 9041fb2cbb4547f96f087a51aa2da150fe3d098a..59619e75b3ac6b34f8ad6a480fa8c04a1b987a23 100644
--- a/release_version
+++ b/release_version
@@ -1 +1 @@
-rc1
+rc2