<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://it-wiki.ikoula.com/index.php?action=history&amp;feed=atom&amp;title=Come_utilizzare_l%27API_Ikoula</id>
	<title>Come utilizzare l'API Ikoula - Cronologia</title>
	<link rel="self" type="application/atom+xml" href="https://it-wiki.ikoula.com/index.php?action=history&amp;feed=atom&amp;title=Come_utilizzare_l%27API_Ikoula"/>
	<link rel="alternate" type="text/html" href="https://it-wiki.ikoula.com/index.php?title=Come_utilizzare_l%27API_Ikoula&amp;action=history"/>
	<updated>2026-04-11T08:26:28Z</updated>
	<subtitle>Cronologia della pagina su questo sito</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://it-wiki.ikoula.com/index.php?title=Come_utilizzare_l%27API_Ikoula&amp;diff=9664&amp;oldid=prev</id>
		<title>Mschmit52a93 il 15:48, 22 feb 2021</title>
		<link rel="alternate" type="text/html" href="https://it-wiki.ikoula.com/index.php?title=Come_utilizzare_l%27API_Ikoula&amp;diff=9664&amp;oldid=prev"/>
		<updated>2021-02-22T15:48:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;it&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versione meno recente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versione delle 15:48, 22 feb 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l85&quot; &gt;Riga 85:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riga 85:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		$params['crypted_password'] = base64_encode(self::opensslEncryptPublic(self::$password));&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		$params['crypted_password'] = base64_encode(self::opensslEncryptPublic(self::$password));&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		$params['format'] = $format;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		$params['format'] = $format;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		// Fix params to lowercase for generate signature correctly&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		$params = array_change_key_case($params);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// Generate signature&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// Generate signature&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key it_ikwiki-ik_:diff::1.12:old-9663:rev-9664 --&gt;
&lt;/table&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://it-wiki.ikoula.com/index.php?title=Come_utilizzare_l%27API_Ikoula&amp;diff=9663&amp;oldid=prev</id>
		<title>Lfourrea5593 il 14:29, 15 feb 2021</title>
		<link rel="alternate" type="text/html" href="https://it-wiki.ikoula.com/index.php?title=Come_utilizzare_l%27API_Ikoula&amp;diff=9663&amp;oldid=prev"/>
		<updated>2021-02-15T14:29:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;it&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versione meno recente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versione delle 14:29, 15 feb 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot; &gt;Riga 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riga 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span data-link_translate_es_title=&amp;quot;Cómo utilizar la API de Ikoula&amp;quot;  data-link_translate_es_url=&amp;quot;Cómo+utilizar+la+API+de+Ikoula&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Cómo utilizar la API de Ikoula]][[es:Cómo utilizar la API de Ikoula]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span data-link_translate_es_title=&amp;quot;Cómo utilizar la API de Ikoula&amp;quot;  data-link_translate_es_url=&amp;quot;Cómo+utilizar+la+API+de+Ikoula&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Cómo utilizar la API de Ikoula]][[es:Cómo utilizar la API de Ikoula]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span data-link_translate_nl_title=&amp;quot;Hoe de Ikoula API te gebruiken?&amp;quot;  data-link_translate_nl_url=&amp;quot;Hoe+de+Ikoula+API+te+gebruiken?&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Hoe de Ikoula API te gebruiken?]][[nl:Hoe de Ikoula API te gebruiken?]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span data-link_translate_nl_title=&amp;quot;Hoe de Ikoula API te gebruiken?&amp;quot;  data-link_translate_nl_url=&amp;quot;Hoe+de+Ikoula+API+te+gebruiken?&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Hoe de Ikoula API te gebruiken?]][[nl:Hoe de Ikoula API te gebruiken?]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;span data-link_translate_zh_title=&amp;quot;如何使用Ikoula的API&amp;quot;  data-link_translate_zh_url=&amp;quot;如何使用Ikoula的API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:如何使用Ikoula的API]][[zh:如何使用Ikoula的API]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key it_ikwiki-ik_:diff::1.12:old-9662:rev-9663 --&gt;
&lt;/table&gt;</summary>
		<author><name>Lfourrea5593</name></author>
	</entry>
	<entry>
		<id>https://it-wiki.ikoula.com/index.php?title=Come_utilizzare_l%27API_Ikoula&amp;diff=9662&amp;oldid=prev</id>
		<title>Lfourrea5593: Creata pagina con &quot;&lt;span data-link_translate_en_title=&quot;How to use the Ikoula API&quot;  data-link_translate_en_url=&quot;How+to+use+the+Ikoula+API&quot;&gt;&lt;/span&gt;:en:How to use the Ikoula APIen:How to use...&quot;</title>
		<link rel="alternate" type="text/html" href="https://it-wiki.ikoula.com/index.php?title=Come_utilizzare_l%27API_Ikoula&amp;diff=9662&amp;oldid=prev"/>
		<updated>2021-02-15T12:59:51Z</updated>

		<summary type="html">&lt;p&gt;Creata pagina con &amp;quot;&amp;lt;span data-link_translate_en_title=&amp;quot;How to use the Ikoula API&amp;quot;  data-link_translate_en_url=&amp;quot;How+to+use+the+Ikoula+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;a href=&quot;https://en-wiki.ikoula.com/en/How_to_use_the_Ikoula_API&quot; class=&quot;extiw&quot; title=&quot;en:How to use the Ikoula API&quot;&gt;en:How to use the Ikoula APIen&lt;/a&gt;:How to use...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nuova pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;span data-link_translate_en_title=&amp;quot;How to use the Ikoula API&amp;quot;  data-link_translate_en_url=&amp;quot;How+to+use+the+Ikoula+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:How to use the Ikoula API]][[en:How to use the Ikoula API]]&lt;br /&gt;
&amp;lt;span data-link_translate_fr_title=&amp;quot;Comment utiliser l'API d’Ikoula&amp;quot;  data-link_translate_fr_url=&amp;quot;Comment+utiliser+l'API+d’Ikoula&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:fr:Comment utiliser l'API d’Ikoula]][[fr:Comment utiliser l'API d’Ikoula]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;Cómo utilizar la API de Ikoula&amp;quot;  data-link_translate_es_url=&amp;quot;Cómo+utilizar+la+API+de+Ikoula&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Cómo utilizar la API de Ikoula]][[es:Cómo utilizar la API de Ikoula]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;Hoe de Ikoula API te gebruiken?&amp;quot;  data-link_translate_nl_url=&amp;quot;Hoe+de+Ikoula+API+te+gebruiken?&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Hoe de Ikoula API te gebruiken?]][[nl:Hoe de Ikoula API te gebruiken?]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduzione ==&lt;br /&gt;
&lt;br /&gt;
Ikoula dispone di un’API che consente alla realizzazione di azioni sui prodotti associati al vostro conto cliente.&lt;br /&gt;
Ecco l’URL dell’API: https://api.ikoula.com&lt;br /&gt;
&lt;br /&gt;
La documentazione è ora disponibile per ogni prodotto.&lt;br /&gt;
&lt;br /&gt;
== Spiegazioni ==&lt;br /&gt;
&lt;br /&gt;
Per ovvi motivi di sicurezza, l’API di Ikoula richiede un’autenticazione. È basata su un identificativo, una password e una firma:&amp;lt;br /&amp;gt;&lt;br /&gt;
* L’identificativo è l’indirizzo e-mail usato per la connessione al vostro conto Ikoula oppure all’Extranet. Il nome dell’impostazione da trasmettere è sempre &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''login'''&amp;lt;/span&amp;gt; ;&lt;br /&gt;
* La password deve essere criptata tramite una funzione specifica che usa una chiave pubblica messa a disposizione da Ikoula (impostazione &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''crypted_password'''&amp;lt;/span&amp;gt;) e base64_encode ;&lt;br /&gt;
* La firma viene creata secondo delle impostazioni fornite durante la chiamata all’API.&lt;br /&gt;
* Queste impostazioni devono sempre essere passate in GET all’API!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''ATTENZIONE'''&lt;br /&gt;
&lt;br /&gt;
Per i vostri test dell’API, potete ad esempio usare un utente provvisorio specifico per questi test. L’uso della crittografia della password con la chiave pubblica Ikoula è indispensabile in ogni caso di produzione oppure di non-breve termine.&amp;lt;br /&amp;gt;&lt;br /&gt;
Se le chiamate API devono essere usate tramite uno script o un programma, vi consigliamo la creazione di un utente dedicato a tale scopo invece di usare il vostro utente extranet classico.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ci sono quindi due possibilità:&lt;br /&gt;
* Potete creare un sotto-utente direttamente dalla homepage del vostro conto extranet  (Cfr. il Wiki qui sotto per la creazione di un sotto-utente: [[Come creare un account secondario?]]).&lt;br /&gt;
* Potete contattare il nostro supporto per la creazione di un utente Extranet, se ne avete bisogno. &lt;br /&gt;
Attenzione di non dimenticare di dargli i diritti sulle caratteristiche desiderate.&lt;br /&gt;
&lt;br /&gt;
== Chiave di crittografia ==&lt;br /&gt;
&lt;br /&gt;
La chiave pubblica di crittografia della password è disponibile su questo sito: https://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem&lt;br /&gt;
&lt;br /&gt;
== Wrapper PHP ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
&lt;br /&gt;
// #################################################&lt;br /&gt;
// ####    ..:: Ikoula Hosting Services ::..     ###&lt;br /&gt;
// ####	   Wrapper for https://api.ikoula.com	 ###&lt;br /&gt;
// #################################################&lt;br /&gt;
&lt;br /&gt;
class IkoulaAPI {&lt;br /&gt;
&lt;br /&gt;
   /**&lt;br /&gt;
    * Email of Ikoula account&lt;br /&gt;
    * @var string Email account&lt;br /&gt;
    */&lt;br /&gt;
    private static $email = &amp;quot;EMAIL_ACCOUNT_IKOULA&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
   /**&lt;br /&gt;
    * Password of Ikoula account&lt;br /&gt;
    * @var string Password account&lt;br /&gt;
    */&lt;br /&gt;
    private static $password = &amp;quot;PASSWORD_ACCOUNT_IKOULA&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
   /**&lt;br /&gt;
    * Ikoula API URI&lt;br /&gt;
    * @var string Password account&lt;br /&gt;
    */ &lt;br /&gt;
    private static $urlApi = &amp;quot;https://api.ikoula.com/&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
   /** Public key path for encrypt data&lt;br /&gt;
    * @var string Path of public key&lt;br /&gt;
    * @see https://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem&lt;br /&gt;
    */ &lt;br /&gt;
    private static $publicKeyPath = &amp;quot;/path/to/ikoula/public/key/Ikoula.API.RSAKeyPub.pem&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
    /** Fonction for request Ikoula API&lt;br /&gt;
     * @param string $webservice Webservice for data&lt;br /&gt;
     * @param string $format JSON or XML&lt;br /&gt;
     * @param string $type HTTP Type (GET/POST)&lt;br /&gt;
     * @param array $params Params to add for request&lt;br /&gt;
     */&lt;br /&gt;
     public static function requestApi($webservice, $format, $type, $params = [])&lt;br /&gt;
     {&lt;br /&gt;
		// Add connexion information&lt;br /&gt;
		$params['login'] = self::$email;&lt;br /&gt;
		$params['crypted_password'] = base64_encode(self::opensslEncryptPublic(self::$password));&lt;br /&gt;
		$params['format'] = $format;&lt;br /&gt;
&lt;br /&gt;
		// Generate signature&lt;br /&gt;
		$signature = self::createSignature($params);&lt;br /&gt;
&lt;br /&gt;
		// Add signature for call&lt;br /&gt;
		$params['signature'] = $signature;&lt;br /&gt;
&lt;br /&gt;
		// Curl init&lt;br /&gt;
		$ch = curl_init();&lt;br /&gt;
&lt;br /&gt;
		if($ch)&lt;br /&gt;
		{&lt;br /&gt;
			// Create API URI&lt;br /&gt;
			$url = self::$urlApi.$webservice;&lt;br /&gt;
	&lt;br /&gt;
			// Add type request&lt;br /&gt;
			curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $type);&lt;br /&gt;
&lt;br /&gt;
			// If parameters, we encode his &lt;br /&gt;
			if(is_array($params) &amp;amp;&amp;amp; count($params) &amp;gt; 0)&lt;br /&gt;
				$params_str = http_build_query($params);&lt;br /&gt;
&lt;br /&gt;
			// If we use post, fix params&lt;br /&gt;
			if(strcasecmp(&amp;quot;POST&amp;quot;, $type) == 0)&lt;br /&gt;
			{&lt;br /&gt;
				// Fix POST data&lt;br /&gt;
				curl_setopt($ch,CURLOPT_POST, true);&lt;br /&gt;
				curl_setopt($ch,CURLOPT_POSTFIELDS, $params_str);&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
				$url .= (strpos($url,'?') === false ? '?' : '&amp;amp;').$params_str;&lt;br /&gt;
	&lt;br /&gt;
			// Create curl info&lt;br /&gt;
			curl_setopt($ch, CURLOPT_URL, $url);&lt;br /&gt;
			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);&lt;br /&gt;
			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);&lt;br /&gt;
			curl_setopt($ch, CURLOPT_HEADER, 1);&lt;br /&gt;
			curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);&lt;br /&gt;
			curl_setopt($ch, CURLOPT_HEADER, false);&lt;br /&gt;
	&lt;br /&gt;
			// Exec request&lt;br /&gt;
			$data = curl_exec($ch);&lt;br /&gt;
	&lt;br /&gt;
			// Close curl object&lt;br /&gt;
			curl_close($ch);&lt;br /&gt;
	&lt;br /&gt;
			// Return response&lt;br /&gt;
			return($data);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return null;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /** Create signature with params&lt;br /&gt;
     * @param array $params Params to add for request&lt;br /&gt;
     * @return string Signature encoded&lt;br /&gt;
     */&lt;br /&gt;
    private static function createSignature($params = [])&lt;br /&gt;
    {&lt;br /&gt;
        // Signature to send&lt;br /&gt;
        $signature = null;&lt;br /&gt;
&lt;br /&gt;
        // Verify parameters&lt;br /&gt;
        if (count($params) &amp;gt; 0)&lt;br /&gt;
        {&lt;br /&gt;
            // Sort params&lt;br /&gt;
            ksort($params);&lt;br /&gt;
            &lt;br /&gt;
            // Encode params&lt;br /&gt;
            $query = http_build_query($params);&lt;br /&gt;
&lt;br /&gt;
            // Encode &amp;quot;plus &amp;quot;+&amp;quot;&lt;br /&gt;
            $query = str_replace(&amp;quot;+&amp;quot;, &amp;quot;%20&amp;quot;, $query);&lt;br /&gt;
&lt;br /&gt;
            // Transform in lowercase&lt;br /&gt;
            $query = strtolower($query);&lt;br /&gt;
&lt;br /&gt;
            $public_key = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            // Verify if key file is present&lt;br /&gt;
            if (file_exists(self::$publicKeyPath))&lt;br /&gt;
            {&lt;br /&gt;
				// Get public key&lt;br /&gt;
                $public_key = trim(&lt;br /&gt;
                        str_replace(&lt;br /&gt;
                                array(&amp;quot;\n&amp;quot;, '-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----'), &lt;br /&gt;
                                array('', '', ''), &lt;br /&gt;
                                file_get_contents(self::$publicKeyPath)&lt;br /&gt;
                            )&lt;br /&gt;
                        );&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
   			// SHA1 hash&lt;br /&gt;
            $hash = hash_hmac(&amp;quot;SHA1&amp;quot;, $query, $public_key, true);&lt;br /&gt;
&lt;br /&gt;
    		// base64 encode&lt;br /&gt;
            $signature = base64_encode($hash);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    	return $signature;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/** Fonction for crypt Ikoula password&lt;br /&gt;
	 * @param string $password Ikoula account password&lt;br /&gt;
	 * @return mixed Ikoula password encrypted, null if error&lt;br /&gt;
	 */&lt;br /&gt;
	private static function opensslEncryptPublic($password)&lt;br /&gt;
	{&lt;br /&gt;
		// Verify if key file exist&lt;br /&gt;
		if(file_exists(self::$publicKeyPath))&lt;br /&gt;
		{&lt;br /&gt;
			 // Verify if password is not empty&lt;br /&gt;
 			if(!empty($password))&lt;br /&gt;
			{&lt;br /&gt;
				// Get file content&lt;br /&gt;
				$publicKey = openssl_pkey_get_public('file://'.realpath(self::$publicKeyPath));&lt;br /&gt;
	&lt;br /&gt;
				// If we get file content without error&lt;br /&gt;
				if ($publicKey !== FALSE)      &lt;br /&gt;
				{&lt;br /&gt;
					// Encrypt password&lt;br /&gt;
					if(openssl_public_encrypt($password, $crypted, $publicKey) === TRUE)&lt;br /&gt;
						return $crypted;&lt;br /&gt;
					else&lt;br /&gt;
						return NULL;&lt;br /&gt;
				}&lt;br /&gt;
				else&lt;br /&gt;
					return NULL;&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
				return NULL;&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
			return NULL;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Esempi di utilizzo ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Fix JSON header&lt;br /&gt;
header(&amp;quot;Content-type: application/json&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Get Exch schema for prestation&lt;br /&gt;
echo IkoulaAPI::requestApi(&amp;quot;wsexch/schema-subscr&amp;quot;, &amp;quot;json&amp;quot;, &amp;quot;GET&amp;quot;, ['subscr_id' =&amp;gt; 999999999]);&lt;br /&gt;
&lt;br /&gt;
// Get Flex VM for Ikoula Account&lt;br /&gt;
echo IkoulaAPI::requestApi(&amp;quot;wsflex/list&amp;quot;, &amp;quot;json&amp;quot;, &amp;quot;GET&amp;quot;, []);&lt;br /&gt;
&lt;br /&gt;
// Get Flex VM for Ikoula Account&lt;br /&gt;
echo IkoulaAPI::requestApi(&amp;quot;wsflex/list&amp;quot;, &amp;quot;json&amp;quot;, &amp;quot;GET&amp;quot;, []);&lt;br /&gt;
&lt;br /&gt;
// Get Platform list&lt;br /&gt;
echo IkoulaAPI::requestApi(&amp;quot;wsplatform/list&amp;quot;, &amp;quot;json&amp;quot;, &amp;quot;GET&amp;quot;, []);&lt;br /&gt;
&lt;br /&gt;
// Get Platform dossiers&lt;br /&gt;
echo IkoulaAPI::requestApi(&amp;quot;wsplatform/dossiers&amp;quot;, &amp;quot;json&amp;quot;, &amp;quot;GET&amp;quot;, ['platform_id' =&amp;gt; 999999999]);&lt;br /&gt;
&lt;br /&gt;
// Get Billing conso for CloudStack prestation&lt;br /&gt;
echo IkoulaAPI::requestApi(&amp;quot;wscs/conso-for-billing&amp;quot;, &amp;quot;json&amp;quot;, &amp;quot;GET&amp;quot;, ['subscr_id' =&amp;gt; '999999999', 'billing_id' =&amp;gt; '1']);&lt;br /&gt;
&lt;br /&gt;
// Reboot server&lt;br /&gt;
echo IkoulaAPI::requestApi(&amp;quot;wsds/reboot-apc-request&amp;quot;, &amp;quot;json&amp;quot;, &amp;quot;GET&amp;quot;, ['server_ip' =&amp;gt; 'XXX.XXX.XXX.XXX', 'tempo' =&amp;gt; '3']);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aggiunta di funzionalità ==&lt;br /&gt;
&lt;br /&gt;
In caso di richiesta di funzionalità, contattare il supporto tecnico.&lt;/div&gt;</summary>
		<author><name>Lfourrea5593</name></author>
	</entry>
</feed>