<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://it-wiki.ikoula.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mschmit52a93</id>
	<title>It Ikoula wiki - Contributi utente [it]</title>
	<link rel="self" type="application/atom+xml" href="https://it-wiki.ikoula.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mschmit52a93"/>
	<link rel="alternate" type="text/html" href="https://it-wiki.ikoula.com/it/Speciale:Contributi/Mschmit52a93"/>
	<updated>2026-04-11T04:58:25Z</updated>
	<subtitle>Contributi utente</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</id>
		<title>Come utilizzare l'API Ikoula</title>
		<link rel="alternate" type="text/html" href="https://it-wiki.ikoula.com/index.php?title=Come_utilizzare_l%27API_Ikoula&amp;diff=9664"/>
		<updated>2021-02-22T15:48:12Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93: &lt;/p&gt;
&lt;hr /&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;
&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;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;
		// Fix params to lowercase for generate signature correctly&lt;br /&gt;
		$params = array_change_key_case($params);&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>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://it-wiki.ikoula.com/index.php?title=Pagina_principale&amp;diff=5686</id>
		<title>Pagina principale</title>
		<link rel="alternate" type="text/html" href="https://it-wiki.ikoula.com/index.php?title=Pagina_principale&amp;diff=5686"/>
		<updated>2015-12-11T11:14:15Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93: Redirect alla pagina Speciale:Categorie&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Speciale:Categorie]]&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
</feed>