<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://fr-wiki.ikoula.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mschmit52a93</id>
	<title>Ikoula Wiki - Contributions de l’utilisateur [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://fr-wiki.ikoula.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mschmit52a93"/>
	<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/fr/Sp%C3%A9cial:Contributions/Mschmit52a93"/>
	<updated>2026-04-11T05:56:12Z</updated>
	<subtitle>Contributions de l’utilisateur</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Comment_utiliser_l%27API_d%E2%80%99Ikoula&amp;diff=34122</id>
		<title>Comment utiliser l'API d’Ikoula</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Comment_utiliser_l%27API_d%E2%80%99Ikoula&amp;diff=34122"/>
		<updated>2024-04-17T13:34:39Z</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_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;
&amp;lt;span data-link_translate_it_title=&amp;quot;Come utilizzare l'API Ikoula&amp;quot;  data-link_translate_it_url=&amp;quot;Come+utilizzare+l'API+Ikoula&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Come utilizzare l'API Ikoula]][[it:Come utilizzare l'API Ikoula]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Comment utiliser l'API d'IKOULA ?&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|keywords=these,are,your,keywords&lt;br /&gt;
|description=Ikoula possède une API permettant de réaliser des actions sur les produits associés à votre compte client. Découvrez dans cet article comment utiliser correctement cet API.&lt;br /&gt;
|image=Uploaded_file.png&lt;br /&gt;
|image_alt=Wiki Logo&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Ikoula dispose d'une API permettant de réaliser des actions sur les produits associés à votre compte client.&lt;br /&gt;
Voici l'URL de l'API: https://api.ikoula.com&lt;br /&gt;
&lt;br /&gt;
La documentation est disponible directement pour chaque produit.&lt;br /&gt;
&lt;br /&gt;
==Explications==&lt;br /&gt;
Pour des raisons évidentes de {{Template:Sécurité}}, l'API Ikoula exige une authentification. Celle-ci est basée sur un identifiant, un mot de passe et une signature :&amp;lt;br /&amp;gt;&lt;br /&gt;
* L'identifiant est l'adresse e-mail utilisée pour la connexion à votre compte Ikoula ou à l'Extranet. Le nom du paramètre pour le transmettre est toujours  &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''login'''&amp;lt;/span&amp;gt; ;&lt;br /&gt;
* Le mot de passe quant à lui doit être chiffré via une fonction spécifique utilisant une clé publique fournie par Ikoula (paramètre  &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''crypted_password'''&amp;lt;/span&amp;gt;) et base64_encode ;&lt;br /&gt;
* La signature est générée en fonction des paramètres fournis lors de l'appel à l'API.&lt;br /&gt;
* Ces paramètres doivent toujours être passés en GET à l'API !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''ATTENTION :'''&lt;br /&gt;
&lt;br /&gt;
Pour vos tests de l'API, vous pouvez, par exemple, utiliser un utilisateur temporaire dédié à ces tests.&lt;br /&gt;
L'utilisation du chiffrement de mot de passe avec la clé publique Ikoula est indispensable dans tout contexte de production ou non-court terme.&amp;lt;br /&amp;gt;&lt;br /&gt;
Si les appels API sont voués à être utilisés via un script ou un programme, nous vous recommandons la création d'un utilisateur dédié à cet effet plutôt que d'utiliser votre utilisateur extranet classique.&amp;lt;br /&amp;gt;&lt;br /&gt;
Deux possibilités s'offrent à vous :&lt;br /&gt;
* Créer un sous-utilisateur directement depuis la page d'accueil de votre compte extranet (Voir le WIKI ci-après pour la création de sous-utilisateur: [[Comment créer des sous-utilisateurs via l'extranet d'Ikoula]]).&lt;br /&gt;
* Contacter notre support pour la création d'un utilisateur Extranet si besoin&lt;br /&gt;
Attention à ne pas oublier de lui mettre les droits sur les prestations souhaitées.&lt;br /&gt;
&lt;br /&gt;
== Clé de chiffrement ==&lt;br /&gt;
&lt;br /&gt;
La clé publique de chiffrement du mot de passe est disponible à l'adresse suivante: 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;
	 * @param array|null $body&lt;br /&gt;
	 * @param bool $jsonBody&lt;br /&gt;
     */&lt;br /&gt;
    public static function requestApi($webservice, $format, $method, $params = [], $body = null, $jsonBody = false)&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;
		// 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;
			$url .= (str_contains($url, '?') ? '&amp;amp;' : '?') . http_build_query($params);&lt;br /&gt;
	&lt;br /&gt;
			// Add type request&lt;br /&gt;
			curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);&lt;br /&gt;
&lt;br /&gt;
			// If we use post, fix params&lt;br /&gt;
			if(in_array($method, ['POST', 'PUT', 'DELETE'], true))&lt;br /&gt;
			{&lt;br /&gt;
				if($body !== null)&lt;br /&gt;
				{&lt;br /&gt;
					if(!$jsonBody)&lt;br /&gt;
					{&lt;br /&gt;
						curl_setopt($ch, CURLOPT_POST, true);&lt;br /&gt;
						curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($body));&lt;br /&gt;
					}&lt;br /&gt;
					else&lt;br /&gt;
					{&lt;br /&gt;
						curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-type: application/json']);&lt;br /&gt;
						curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&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;
    /** 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;
==Exemples d'utilisation==&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;
== Ajout de fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
En cas de demande de fonctionnalité, contactez le support technique.&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Comment_cr%C3%A9er_des_sous-utilisateurs_via_l%27extranet_d%27Ikoula&amp;diff=30158</id>
		<title>Comment créer des sous-utilisateurs via l'extranet d'Ikoula</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Comment_cr%C3%A9er_des_sous-utilisateurs_via_l%27extranet_d%27Ikoula&amp;diff=30158"/>
		<updated>2021-02-22T15:56:06Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_fr_title=&amp;quot;Comment créer des sous-utilisateurs ?&amp;quot;  data-link_translate_fr_url=&amp;quot;Comment créer des sous-utilisateurs ?&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:fr:Comment créer des sous-utilisateurs ?]][[fr:Comment créer des sous-utilisateurs ?]]&lt;br /&gt;
&amp;lt;span data-link_translate_he_title=&amp;quot;כיצד ליצור חשבון משנה?&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%9B%D7%99%D7%A6%D7%93+%D7%9C%D7%99%D7%A6%D7%95%D7%A8+%D7%97%D7%A9%D7%91%D7%95%D7%9F+%D7%9E%D7%A9%D7%A0%D7%94%3F&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:כיצד ליצור חשבון משנה?]][[he:כיצד ליצור חשבון משנה?]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Cum de a crea un sub-cont?&amp;quot;  data-link_translate_ro_url=&amp;quot;Cum+de+a+crea+un+sub-cont%3F&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Cum de a crea un sub-cont?]][[ro:Cum de a crea un sub-cont?]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Как создать суб-аккаунт?&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%9A%D0%B0%D0%BA+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C+%D1%81%D1%83%D0%B1-%D0%B0%D0%BA%D0%BA%D0%B0%D1%83%D0%BD%D1%82%3F&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Как создать суб-аккаунт?]][[ru:Как создать суб-аккаунт?]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Jak stworzyć konto podrzędne?&amp;quot;  data-link_translate_pl_url=&amp;quot;Jak+stworzy%C4%87+konto+podrz%C4%99dne%3F&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Jak stworzyć konto podrzędne?]][[pl:Jak stworzyć konto podrzędne?]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;サブアカウントを作成する方法?&amp;quot;  data-link_translate_ja_url=&amp;quot;%E3%82%B5%E3%83%96%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%3F&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:サブアカウントを作成する方法?]][[ja:サブアカウントを作成する方法?]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;كيفية إنشاء حساب فرعي؟&amp;quot;  data-link_translate_ar_url=&amp;quot;%D9%83%D9%8A%D9%81%D9%8A%D8%A9+%D8%A5%D9%86%D8%B4%D8%A7%D8%A1+%D8%AD%D8%B3%D8%A7%D8%A8+%D9%81%D8%B1%D8%B9%D9%8A%D8%9F&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:كيفية إنشاء حساب فرعي؟]][[ar:كيفية إنشاء حساب فرعي؟]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;如何创建一个子账户？&amp;quot;  data-link_translate_zh_url=&amp;quot;%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%AD%90%E8%B4%A6%E6%88%B7%EF%BC%9F&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:如何创建一个子账户？]][[zh:如何创建一个子账户？]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;So ein Unterkonto erstellen?&amp;quot;  data-link_translate_de_url=&amp;quot;So+ein+Unterkonto+erstellen%3F&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:So ein Unterkonto erstellen?]][[de:So ein Unterkonto erstellen?]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;Hoe maak je een subaccount?&amp;quot;  data-link_translate_nl_url=&amp;quot;Hoe+maak+je+een+subaccount%3F&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Hoe maak je een subaccount?]][[nl:Hoe maak je een subaccount?]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;Come creare un account secondario?&amp;quot;  data-link_translate_it_url=&amp;quot;Come+creare+un+account+secondario%3F&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Come creare un account secondario?]][[it:Come creare un account secondario?]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;Como criar uma subconta?&amp;quot;  data-link_translate_pt_url=&amp;quot;Como+criar+uma+subconta%3F&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:Como criar uma subconta?]][[pt:Como criar uma subconta?]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;¿Cómo crear una subcuenta?&amp;quot;  data-link_translate_es_url=&amp;quot;%C2%BFC%C3%B3mo+crear+una+subcuenta%3F&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:¿Cómo crear una subcuenta?]][[es:¿Cómo crear una subcuenta?]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;How to create a sub-account?&amp;quot;  data-link_translate_en_url=&amp;quot;How+to+create+a+sub-account%3F&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:How to create a sub-account?]][[en:How to create a sub-account?]]&lt;br /&gt;
&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ru&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ja&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;zh&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;de&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;nl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;it&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ru&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ja&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;zh&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;de&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;nl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;it&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ru&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ja&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;zh&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;de&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;nl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;it&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ru&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ja&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;zh&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;de&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;nl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;it&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ru&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ja&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;zh&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;de&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;nl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;it&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ru&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ja&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;zh&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;de&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;nl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;it&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;he&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ru&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ja&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;zh&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;ro&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;de&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;nl&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;it&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;pt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span data-link_translate=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Comment créer des sous-utilisateurs via l'extranet d'Ikoula&lt;br /&gt;
&lt;br /&gt;
==Déroulé==&lt;br /&gt;
* Connectez-vous à  [https://extranet.ikoula.com votre extranet Ikoula]&lt;br /&gt;
* Rendez-vous dans l'onglet  [https://extranet.ikoula.com/index.php?r=site/sub-user '''''Gestion des sous-utilisateurs''''']&lt;br /&gt;
* Une fois sur la page, cliquez sur &amp;quot;Ajouter un utilisateur&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:sous utili.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Saisir les informations pour l'utilisateur&lt;br /&gt;
&lt;br /&gt;
[[Fichier:add compte.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Une fois votre sous-utilisateur créé, vous pouvez modifier les informations de celui-ci quand vous le souhaitez.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:compte.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Dans cette page, vous pouvez activer ou désactiver le compte quand vous le souhaitez. C'est également ici que vous allez donner les droits d'accès au prestations pour cet utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:modif.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Une fois les modifications effectuées, il suffit de cliquer sur le bouton &amp;quot;Modifier l'utilisateur&amp;quot; pour valider les modifications&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cet article vous a semblé utile ? &amp;lt;vote /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Contribuer]] [[Catégorie:Linux]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Plesk]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Extranet]]&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Accueil&amp;diff=30157</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Accueil&amp;diff=30157"/>
		<updated>2021-02-22T15:53:42Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : /*  Liste des catégories principales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_en_title=&amp;quot;Special:Categories&amp;quot;  data-link_translate_en_url=&amp;quot;Special:Categories&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:Special:Categories]][[en:Special:Categories]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;Especial:Categorías&amp;quot;  data-link_translate_es_url=&amp;quot;Especial:Categorías&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Especial:Categorías]][[es:Especial:Categorías]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;Speciale:Categorie&amp;quot;  data-link_translate_it_url=&amp;quot;Speciale:Categorie&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Speciale:Categorie]][[it:Speciale:Categorie]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;Speciaal:Categorieën&amp;quot;  data-link_translate_nl_url=&amp;quot;Speciaal:Categorieën&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Speciaal:Categorieën]][[nl:Speciaal:Categorieën]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;Spezial:Kategorien&amp;quot;  data-link_translate_de_url=&amp;quot;Spezial:Kategorien&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:Spezial:Kategorien]][[de:Spezial:Kategorien]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;Especial:Categorias&amp;quot;  data-link_translate_pt_url=&amp;quot;Especial:Categorias&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:Especial:Categorias]][[pt:Especial:Categorias]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Служебная:Категории&amp;quot;  data-link_translate_ru_url=&amp;quot;Служебная:Категории&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Служебная:Категории]][[ru:Служебная:Категории]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Specjalna:Kategorie&amp;quot;  data-link_translate_pl_url=&amp;quot;Specjalna:Kategorie&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Specjalna:Kategorie]][[pl:Specjalna:Kategorie]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Special:Categorii&amp;quot;  data-link_translate_ro_url=&amp;quot;Special:Categorii&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Special:Categorii]][[ro:Special:Categorii]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;特殊:页面分类&amp;quot;  data-link_translate_zh_url=&amp;quot;特殊:页面分类&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:特殊:页面分类]][[zh:特殊:页面分类]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;特別:カテゴリ&amp;quot;  data-link_translate_ja_url=&amp;quot;特別:カテゴリ&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:特別:カテゴリ]][[ja:特別:カテゴリ]]&lt;br /&gt;
&amp;lt;span data-link_translate_he_title=&amp;quot;מיוחד:קטגוריות&amp;quot;  data-link_translate_he_url=&amp;quot;מיוחד:קטגוריות&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:מיוחד:קטגוריות]][[he:מיוחד:קטגוריות]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;خاص:تصنيفات&amp;quot;  data-link_translate_ar_url=&amp;quot;خاص:تصنيفات&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:خاص:تصنيفات]][[ar:خاص:تصنيفات]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Wiki Ikoula sur nos différents services d'hébergement&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=wiki ikoula,ikoula wiki,base de connaissance ikoula&lt;br /&gt;
|description=Wiki Ikoula sur nos différents services d'hébergement&lt;br /&gt;
|og:type=article&lt;br /&gt;
|og:image=https://en-wiki.ikoula.com/resources/assets/logo_ikwiki.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;intro&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;i class=&amp;quot;fa fa-wikipedia-w&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Bienvenue sur la page wiki d'IKOULA  !===&lt;br /&gt;
Que vous soyez client chez nous en quête d'informations sur nos produits, ou juste curieux d'en savoir plus sur le monde de l'Internet et plus particulièrement sur le Cloud et ses subtilités, cet espace est fait pour vous !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parce que l'entraide et le partage des connaissances sont des valeurs fortes chez '''IKOULA''', nos geek specialists et nos équipes support ont préparé des fiches techniques et des tutoriels pour maîtriser l'ensemble des prestations que nous proposons, et plus encore !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Obtenir un nom de domaine, déployer une VM, commander un serveur dédié, se connecter à son interface client ou encore appréhender toutes les fonctionnalités de '''CLOUD IKOULA ONE''', voici quelques-uns des nombreux thèmes abordés ici !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Différentes catégories ont été créées. Chacune d'elles regroupent plusieurs articles balayant tous les points importants et nécessaires à connaître pour pouvoir profiter au maximum des services et produits '''IKOULA'''. &lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;faqs&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Foire aux questions :&amp;lt;/strong&amp;gt; Retrouvez ici les réponses aux questions les plus fréquentes &amp;lt;div class=&amp;quot;lienfaqs&amp;quot;&amp;gt;'''[https://fr-wiki.ikoula.com/fr/Foire_aux_questions&amp;lt;span style=&amp;quot;color:white;&amp;quot;&amp;gt;voir toutes les questions&amp;lt;/span&amp;gt;]'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;publier&amp;quot;&amp;gt;&lt;br /&gt;
=== &amp;lt;i class=&amp;quot;fa fa-book fa-fw&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; IKOULA veut publier vos tutoriaux !===&lt;br /&gt;
Aidez nous à construire une base de connaissances, riche et compréhensible, autour de nos solutions. &lt;br /&gt;
&lt;br /&gt;
Pas besoin d'être un auteur expérimenté : il vous suffit d'avoir des compétences techniques et l'envie de les partager. &lt;br /&gt;
Chaque article étant soumis à modération, nos techniciens vous aideront à la rédaction.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;lien&amp;quot;&amp;gt;&lt;br /&gt;
'''[https://fr-wiki.ikoula.com/fr/Ajouter_un_tutoriel&amp;lt;span style=&amp;quot;color:white;&amp;quot;&amp;gt;Soumettez vos articles maintenant !&amp;lt;/span&amp;gt;]'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;i class=&amp;quot;fa fa-sitemap fa-fw&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Liste des catégories principales===&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;lienhome&amp;quot;&amp;gt;&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:Serveur_d%C3%A9di%C3%A9 Serveur dédié]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:Synology Serveur Synology]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:FLEX Serveur Flex]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:Cloud_priv%C3%A9 Cloud Privé]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:Cloud_public Cloud Public]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:Acronis_Backup Acronis Backup]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;lienhome&amp;quot;&amp;gt;&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:H%C3%A9bergement_mutualis%C3%A9 Hébergement mutualisé]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:IkeepInCloud IkeepInCloud]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:Hosted_Exchange Hosted Exchange]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:R1Soft R1Soft]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:Cloudstack Cloudstack]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:IPv6 IPv6]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;lienhome&amp;quot;&amp;gt;&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:Plesk Plesk]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:Extranet Extranet]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:API API]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:Linux Linux]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:Windows Windows]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:Domaines Nom de domaine]&lt;br /&gt;
*[https://fr-wiki.ikoula.com/fr/Cat%C3%A9gorie:Mail Mail]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both&amp;quot;&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;lien article&amp;quot;&amp;gt;&lt;br /&gt;
'''[https://fr-wiki.ikoula.com/fr/Sp%C3%A9cial:Cat%C3%A9gories &amp;lt;span style=&amp;quot;color:white;&amp;quot;&amp;gt;Voir toutes nos categories&amp;lt;/span&amp;gt;]'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both&amp;quot;&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=G%C3%A9n%C3%A9ration_de_la_signature&amp;diff=30156</id>
		<title>Génération de la signature</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=G%C3%A9n%C3%A9ration_de_la_signature&amp;diff=30156"/>
		<updated>2021-02-22T15:52:47Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_fr_title=&amp;quot;Génération de la signature&amp;quot;  data-link_translate_fr_url=&amp;quot;Génération de la signature&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:fr:Génération de la signature]][[fr:Génération de la signature]]&lt;br /&gt;
&amp;lt;span data-link_translate_he_title=&amp;quot;הדור חתימה&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%94%D7%93%D7%95%D7%A8+%D7%97%D7%AA%D7%99%D7%9E%D7%94&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:הדור חתימה]][[he:הדור חתימה]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Generația semnături&amp;quot;  data-link_translate_ro_url=&amp;quot;Genera%C8%9Bia+semn%C4%83turi&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Generația semnături]][[ro:Generația semnături]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Создание подписи&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%B8&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Создание подписи]][[ru:Создание подписи]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Generowanie podpisu&amp;quot;  data-link_translate_pl_url=&amp;quot;Generowanie+podpisu&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Generowanie podpisu]][[pl:Generowanie podpisu]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;署名の生成&amp;quot;  data-link_translate_ja_url=&amp;quot;%E7%BD%B2%E5%90%8D%E3%81%AE%E7%94%9F%E6%88%90&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:署名の生成]][[ja:署名の生成]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;توليد التوقيع&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%AA%D9%88%D9%84%D9%8A%D8%AF+%D8%A7%D9%84%D8%AA%D9%88%D9%82%D9%8A%D8%B9&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:توليد التوقيع]][[ar:توليد التوقيع]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;签名生成&amp;quot;  data-link_translate_zh_url=&amp;quot;%E7%AD%BE%E5%90%8D%E7%94%9F%E6%88%90&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:签名生成]][[zh:签名生成]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;Die Signatur-generation&amp;quot;  data-link_translate_de_url=&amp;quot;Die+Signatur-generation&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:Die Signatur-generation]][[de:Die Signatur-generation]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;De handtekening generatie&amp;quot;  data-link_translate_nl_url=&amp;quot;De+handtekening+generatie&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:De handtekening generatie]][[nl:De handtekening generatie]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;La generazione della firma&amp;quot;  data-link_translate_it_url=&amp;quot;La+generazione+della+firma&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:La generazione della firma]][[it:La generazione della firma]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;A geração de assinatura&amp;quot;  data-link_translate_pt_url=&amp;quot;A+gera%C3%A7%C3%A3o+de+assinatura&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:A geração de assinatura]][[pt:A geração de assinatura]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;La generación de una firma&amp;quot;  data-link_translate_es_url=&amp;quot;La+generaci%C3%B3n+de+una+firma&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:La generación de una firma]][[es:La generación de una firma]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;The signature generation&amp;quot;  data-link_translate_en_url=&amp;quot;The+signature+generation&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:The signature generation]][[en:The signature generation]]&lt;br /&gt;
&amp;lt;!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#REDIRECT [[Comment_utiliser_l'API_d’Ikoula]]&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Architectures_REST_%26_WebService&amp;diff=30155</id>
		<title>Architectures REST &amp; WebService</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Architectures_REST_%26_WebService&amp;diff=30155"/>
		<updated>2021-02-22T15:52:41Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_fr_title=&amp;quot;Architectures REST &amp;amp; WebService&amp;quot;  data-link_translate_fr_url=&amp;quot;Architectures REST &amp;amp; WebService&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:fr:Architectures REST &amp;amp; WebService]][[fr:Architectures REST &amp;amp; WebService]]&lt;br /&gt;
&amp;lt;span data-link_translate_he_title=&amp;quot;ארכיטקטורות WebService ומנוחה&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%90%D7%A8%D7%9B%D7%99%D7%98%D7%A7%D7%98%D7%95%D7%A8%D7%95%D7%AA+WebService+%D7%95%D7%9E%D7%A0%D7%95%D7%97%D7%94&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:ארכיטקטורות WebService ומנוחה]][[he:ארכיטקטורות WebService ומנוחה]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;ODIHNĂ şi WebService arhitecturi&amp;quot;  data-link_translate_ro_url=&amp;quot;ODIHN%C4%82+%C5%9Fi+WebService+arhitecturi&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:ODIHNĂ şi WebService arhitecturi]][[ro:ODIHNĂ şi WebService arhitecturi]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Отдых и WebService архитектуры&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%9E%D1%82%D0%B4%D1%8B%D1%85+%D0%B8+WebService+%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D1%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Отдых и WebService архитектуры]][[ru:Отдых и WebService архитектуры]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Architektury REST i WebService&amp;quot;  data-link_translate_pl_url=&amp;quot;Architektury+REST+i+WebService&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Architektury REST i WebService]][[pl:Architektury REST i WebService]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;休息と web サービスのアーキテクチャ&amp;quot;  data-link_translate_ja_url=&amp;quot;%E4%BC%91%E6%81%AF%E3%81%A8+web+%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:休息と web サービスのアーキテクチャ]][[ja:休息と web サービスのアーキテクチャ]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;أبنية الراحة وخدمة ويب&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%A3%D8%A8%D9%86%D9%8A%D8%A9+%D8%A7%D9%84%D8%B1%D8%A7%D8%AD%D8%A9+%D9%88%D8%AE%D8%AF%D9%85%D8%A9+%D9%88%D9%8A%D8%A8&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:أبنية الراحة وخدمة ويب]][[ar:أبنية الراحة وخدمة ويب]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;休息和 web 服务的体系结构&amp;quot;  data-link_translate_zh_url=&amp;quot;%E4%BC%91%E6%81%AF%E5%92%8C+web+%E6%9C%8D%E5%8A%A1%E7%9A%84%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:休息和 web 服务的体系结构]][[zh:休息和 web 服务的体系结构]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;REST- und WebService-Architekturen&amp;quot;  data-link_translate_de_url=&amp;quot;REST-+und+WebService-Architekturen&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:REST- und WebService-Architekturen]][[de:REST- und WebService-Architekturen]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;RUST en WebService platforms&amp;quot;  data-link_translate_nl_url=&amp;quot;RUST+en+WebService+platforms&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:RUST en WebService platforms]][[nl:RUST en WebService platforms]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;Architetture di resto e WebService&amp;quot;  data-link_translate_it_url=&amp;quot;Architetture+di+resto+e+WebService&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Architetture di resto e WebService]][[it:Architetture di resto e WebService]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;Arquiteturas de descanso e WebService&amp;quot;  data-link_translate_pt_url=&amp;quot;Arquiteturas+de+descanso+e+WebService&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:Arquiteturas de descanso e WebService]][[pt:Arquiteturas de descanso e WebService]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;Arquitecturas de resto y WebService&amp;quot;  data-link_translate_es_url=&amp;quot;Arquitecturas+de+resto+y+WebService&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Arquitecturas de resto y WebService]][[es:Arquitecturas de resto y WebService]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;REST and WebService architectures&amp;quot;  data-link_translate_en_url=&amp;quot;REST+and+WebService+architectures&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:REST and WebService architectures]][[en:REST and WebService architectures]]&lt;br /&gt;
&amp;lt;!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#REDIRECT [[Comment_utiliser_l'API_d’Ikoula]]&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Authentification_et_s%C3%A9curit%C3%A9&amp;diff=30154</id>
		<title>Authentification et sécurité</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Authentification_et_s%C3%A9curit%C3%A9&amp;diff=30154"/>
		<updated>2021-02-22T15:52:30Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_fr_title=&amp;quot;Authentification et sécurité&amp;quot;  data-link_translate_fr_url=&amp;quot;Authentification et sécurité&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:fr:Authentification et sécurité]][[fr:Authentification et sécurité]]&lt;br /&gt;
&amp;lt;span data-link_translate_he_title=&amp;quot;אבטחה ואימות&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%90%D7%91%D7%98%D7%97%D7%94+%D7%95%D7%90%D7%99%D7%9E%D7%95%D7%AA&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:אבטחה ואימות]][[he:אבטחה ואימות]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Autentificare și securitate&amp;quot;  data-link_translate_ro_url=&amp;quot;Autentificare+%C8%99i+securitate&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Autentificare și securitate]][[ro:Autentificare și securitate]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Проверка подлинности и безопасность&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0+%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8+%D0%B8+%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Проверка подлинности и безопасность]][[ru:Проверка подлинности и безопасность]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Uwierzytelniania i zabezpieczeń&amp;quot;  data-link_translate_pl_url=&amp;quot;Uwierzytelniania+i+zabezpiecze%C5%84&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Uwierzytelniania i zabezpieczeń]][[pl:Uwierzytelniania i zabezpieczeń]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;認証とセキュリティ&amp;quot;  data-link_translate_ja_url=&amp;quot;%E8%AA%8D%E8%A8%BC%E3%81%A8%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:認証とセキュリティ]][[ja:認証とセキュリティ]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;الأمان والمصادقة&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%A7%D9%84%D8%A3%D9%85%D8%A7%D9%86+%D9%88%D8%A7%D9%84%D9%85%D8%B5%D8%A7%D8%AF%D9%82%D8%A9&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:الأمان والمصادقة]][[ar:الأمان والمصادقة]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;身份验证和安全&amp;quot;  data-link_translate_zh_url=&amp;quot;%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E5%92%8C%E5%AE%89%E5%85%A8&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:身份验证和安全]][[zh:身份验证和安全]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;Authentifizierung und Sicherheit&amp;quot;  data-link_translate_de_url=&amp;quot;Authentifizierung+und+Sicherheit&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:Authentifizierung und Sicherheit]][[de:Authentifizierung und Sicherheit]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;Verificatie en beveiliging&amp;quot;  data-link_translate_nl_url=&amp;quot;Verificatie+en+beveiliging&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Verificatie en beveiliging]][[nl:Verificatie en beveiliging]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;Autenticazione e protezione&amp;quot;  data-link_translate_it_url=&amp;quot;Autenticazione+e+protezione&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Autenticazione e protezione]][[it:Autenticazione e protezione]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;Autenticação e segurança&amp;quot;  data-link_translate_pt_url=&amp;quot;Autentica%C3%A7%C3%A3o+e+seguran%C3%A7a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:Autenticação e segurança]][[pt:Autenticação e segurança]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;Autenticación y seguridad&amp;quot;  data-link_translate_es_url=&amp;quot;Autenticaci%C3%B3n+y+seguridad&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Autenticación y seguridad]][[es:Autenticación y seguridad]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;Authentication and security&amp;quot;  data-link_translate_en_url=&amp;quot;Authentication+and+security&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:Authentication and security]][[en:Authentication and security]]&lt;br /&gt;
&amp;lt;!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Authentification et sécurité&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|keywords=these,are,your,keywords&lt;br /&gt;
|description=Découvrez dans cet article à quoi correspond l'authentification à l'API Ikoula et quelles en sont les politiques de sécurité.&lt;br /&gt;
|image=Uploaded_file.png&lt;br /&gt;
|image_alt=Wiki Logo&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
#REDIRECT [[Comment_utiliser_l'API_d’Ikoula]]&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Comment_utiliser_l%27API_d%E2%80%99Ikoula&amp;diff=30153</id>
		<title>Comment utiliser l'API d’Ikoula</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Comment_utiliser_l%27API_d%E2%80%99Ikoula&amp;diff=30153"/>
		<updated>2021-02-22T15:51:09Z</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_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;
&amp;lt;span data-link_translate_it_title=&amp;quot;Come utilizzare l'API Ikoula&amp;quot;  data-link_translate_it_url=&amp;quot;Come+utilizzare+l'API+Ikoula&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Come utilizzare l'API Ikoula]][[it:Come utilizzare l'API Ikoula]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Comment utiliser l'API d'IKOULA ?&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|keywords=these,are,your,keywords&lt;br /&gt;
|description=Ikoula possède une API permettant de réaliser des actions sur les produits associés à votre compte client. Découvrez dans cet article comment utiliser correctement cet API.&lt;br /&gt;
|image=Uploaded_file.png&lt;br /&gt;
|image_alt=Wiki Logo&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Ikoula dispose d'une API permettant de réaliser des actions sur les produits associés à votre compte client.&lt;br /&gt;
Voici l'URL de l'API: https://api.ikoula.com&lt;br /&gt;
&lt;br /&gt;
La documentation est disponible directement pour chaque produit.&lt;br /&gt;
&lt;br /&gt;
==Explications==&lt;br /&gt;
Pour des raisons évidentes de {{Template:Sécurité}}, l'API Ikoula exige une authentification. Celle-ci est basée sur un identifiant, un mot de passe et une signature :&amp;lt;br /&amp;gt;&lt;br /&gt;
* L'identifiant est l'adresse e-mail utilisée pour la connexion à votre compte Ikoula ou à l'Extranet. Le nom du paramètre pour le transmettre est toujours  &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''login'''&amp;lt;/span&amp;gt; ;&lt;br /&gt;
* Le mot de passe quant à lui doit être chiffré via une fonction spécifique utilisant une clé publique fournie par Ikoula (paramètre  &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''crypted_password'''&amp;lt;/span&amp;gt;) et base64_encode ;&lt;br /&gt;
* La signature est générée en fonction des paramètres fournis lors de l'appel à l'API.&lt;br /&gt;
* Ces paramètres doivent toujours être passés en GET à l'API !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''ATTENTION :'''&lt;br /&gt;
&lt;br /&gt;
Pour vos tests de l'API, vous pouvez, par exemple, utiliser un utilisateur temporaire dédié à ces tests.&lt;br /&gt;
L'utilisation du chiffrement de mot de passe avec la clé publique Ikoula est indispensable dans tout contexte de production ou non-court terme.&amp;lt;br /&amp;gt;&lt;br /&gt;
Si les appels API sont voués à être utilisés via un script ou un programme, nous vous recommandons la création d'un utilisateur dédié à cet effet plutôt que d'utiliser votre utilisateur extranet classique.&amp;lt;br /&amp;gt;&lt;br /&gt;
Deux possibilités s'offrent à vous :&lt;br /&gt;
* Créer un sous-utilisateur directement depuis la page d'accueil de votre compte extranet (Voir le WIKI ci-après pour la création de sous-utilisateur: [[Comment créer des sous-utilisateurs via l'extranet d'Ikoula]]).&lt;br /&gt;
* Contacter notre support pour la création d'un utilisateur Extranet si besoin&lt;br /&gt;
Attention à ne pas oublier de lui mettre les droits sur les prestations souhaitées.&lt;br /&gt;
&lt;br /&gt;
== Clé de chiffrement ==&lt;br /&gt;
&lt;br /&gt;
La clé publique de chiffrement du mot de passe est disponible à l'adresse suivante: 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;
==Exemples d'utilisation==&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;
== Ajout de fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
En cas de demande de fonctionnalité, contactez le support technique.&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=30152</id>
		<title>Exemples d'utilisation de l'API</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=30152"/>
		<updated>2021-02-22T15:50:20Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_fr_title=&amp;quot;Exemples d'utilisation de l'API&amp;quot;  data-link_translate_fr_url=&amp;quot;Exemples d'utilisation de l'API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:fr:Exemples d'utilisation de l'API]][[fr:Exemples d'utilisation de l'API]]&lt;br /&gt;
&amp;lt;span data-link_translate_he_title=&amp;quot;דוגמאות לשימוש ה-API&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%93%D7%95%D7%92%D7%9E%D7%90%D7%95%D7%AA+%D7%9C%D7%A9%D7%99%D7%9E%D7%95%D7%A9+%D7%94-API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:דוגמאות לשימוש ה-API]][[he:דוגמאות לשימוש ה-API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Exemple de utilizare a API&amp;quot;  data-link_translate_ro_url=&amp;quot;Exemple+de+utilizare+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Exemple de utilizare a API]][[ro:Exemple de utilizare a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Примеры использования API&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Примеры использования API]][[ru:Примеры использования API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Przykłady użycia interfejsu API&amp;quot;  data-link_translate_pl_url=&amp;quot;Przyk%C5%82ady+u%C5%BCycia+interfejsu+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Przykłady użycia interfejsu API]][[pl:Przykłady użycia interfejsu API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;API を使用しての例&amp;quot;  data-link_translate_ja_url=&amp;quot;API+%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%AE%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:API を使用しての例]][[ja:API を使用しての例]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;أمثلة لاستخدام API&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%A3%D9%85%D8%AB%D9%84%D8%A9+%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:أمثلة لاستخدام API]][[ar:أمثلة لاستخدام API]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;使用该 API 的示例&amp;quot;  data-link_translate_zh_url=&amp;quot;%E4%BD%BF%E7%94%A8%E8%AF%A5+API+%E7%9A%84%E7%A4%BA%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:使用该 API 的示例]][[zh:使用该 API 的示例]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;Beispiele für die Verwendung der API&amp;quot;  data-link_translate_de_url=&amp;quot;Beispiele+f%C3%BCr+die+Verwendung+der+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:Beispiele für die Verwendung der API]][[de:Beispiele für die Verwendung der API]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;Voorbeelden van het gebruik van de API&amp;quot;  data-link_translate_nl_url=&amp;quot;Voorbeelden+van+het+gebruik+van+de+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Voorbeelden van het gebruik van de API]][[nl:Voorbeelden van het gebruik van de API]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;Esempi di utilizzo dell'API&amp;quot;  data-link_translate_it_url=&amp;quot;Esempi+di+utilizzo+dell%27API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Esempi di utilizzo dell'API]][[it:Esempi di utilizzo dell'API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;Exemplos de como usar a API&amp;quot;  data-link_translate_pt_url=&amp;quot;Exemplos+de+como+usar+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:Exemplos de como usar a API]][[pt:Exemplos de como usar a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;Ejemplos de uso de la API&amp;quot;  data-link_translate_es_url=&amp;quot;Ejemplos+de+uso+de+la+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Ejemplos de uso de la API]][[es:Ejemplos de uso de la API]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;Examples of using the API&amp;quot;  data-link_translate_en_url=&amp;quot;Examples+of+using+the+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:Examples of using the API]][[en:Examples of using the API]]&lt;br /&gt;
&lt;br /&gt;
#REDIRECT [[Comment_utiliser_l'API_d’Ikoula]]&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=30151</id>
		<title>Exemples d'utilisation de l'API</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=30151"/>
		<updated>2021-02-22T15:50:00Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_fr_title=&amp;quot;Exemples d'utilisation de l'API&amp;quot;  data-link_translate_fr_url=&amp;quot;Exemples d'utilisation de l'API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:fr:Exemples d'utilisation de l'API]][[fr:Exemples d'utilisation de l'API]]&lt;br /&gt;
&amp;lt;span data-link_translate_he_title=&amp;quot;דוגמאות לשימוש ה-API&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%93%D7%95%D7%92%D7%9E%D7%90%D7%95%D7%AA+%D7%9C%D7%A9%D7%99%D7%9E%D7%95%D7%A9+%D7%94-API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:דוגמאות לשימוש ה-API]][[he:דוגמאות לשימוש ה-API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Exemple de utilizare a API&amp;quot;  data-link_translate_ro_url=&amp;quot;Exemple+de+utilizare+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Exemple de utilizare a API]][[ro:Exemple de utilizare a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Примеры использования API&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Примеры использования API]][[ru:Примеры использования API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Przykłady użycia interfejsu API&amp;quot;  data-link_translate_pl_url=&amp;quot;Przyk%C5%82ady+u%C5%BCycia+interfejsu+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Przykłady użycia interfejsu API]][[pl:Przykłady użycia interfejsu API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;API を使用しての例&amp;quot;  data-link_translate_ja_url=&amp;quot;API+%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%AE%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:API を使用しての例]][[ja:API を使用しての例]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;أمثلة لاستخدام API&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%A3%D9%85%D8%AB%D9%84%D8%A9+%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:أمثلة لاستخدام API]][[ar:أمثلة لاستخدام API]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;使用该 API 的示例&amp;quot;  data-link_translate_zh_url=&amp;quot;%E4%BD%BF%E7%94%A8%E8%AF%A5+API+%E7%9A%84%E7%A4%BA%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:使用该 API 的示例]][[zh:使用该 API 的示例]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;Beispiele für die Verwendung der API&amp;quot;  data-link_translate_de_url=&amp;quot;Beispiele+f%C3%BCr+die+Verwendung+der+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:Beispiele für die Verwendung der API]][[de:Beispiele für die Verwendung der API]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;Voorbeelden van het gebruik van de API&amp;quot;  data-link_translate_nl_url=&amp;quot;Voorbeelden+van+het+gebruik+van+de+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Voorbeelden van het gebruik van de API]][[nl:Voorbeelden van het gebruik van de API]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;Esempi di utilizzo dell'API&amp;quot;  data-link_translate_it_url=&amp;quot;Esempi+di+utilizzo+dell%27API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Esempi di utilizzo dell'API]][[it:Esempi di utilizzo dell'API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;Exemplos de como usar a API&amp;quot;  data-link_translate_pt_url=&amp;quot;Exemplos+de+como+usar+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:Exemplos de como usar a API]][[pt:Exemplos de como usar a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;Ejemplos de uso de la API&amp;quot;  data-link_translate_es_url=&amp;quot;Ejemplos+de+uso+de+la+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Ejemplos de uso de la API]][[es:Ejemplos de uso de la API]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;Examples of using the API&amp;quot;  data-link_translate_en_url=&amp;quot;Examples+of+using+the+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:Examples of using the API]][[en:Examples of using the API]]&lt;br /&gt;
&lt;br /&gt;
[[Comment_utiliser_l'API_d’Ikoula]]&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Comment_utiliser_l%27API_d%E2%80%99Ikoula&amp;diff=30150</id>
		<title>Comment utiliser l'API d’Ikoula</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Comment_utiliser_l%27API_d%E2%80%99Ikoula&amp;diff=30150"/>
		<updated>2021-02-22T15:46:40Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : /* Wrapper PHP */&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_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;
&amp;lt;span data-link_translate_it_title=&amp;quot;Come utilizzare l'API Ikoula&amp;quot;  data-link_translate_it_url=&amp;quot;Come+utilizzare+l'API+Ikoula&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Come utilizzare l'API Ikoula]][[it:Come utilizzare l'API Ikoula]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Comment utiliser l'API d'IKOULA ?&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|keywords=these,are,your,keywords&lt;br /&gt;
|description=Ikoula possède une API permettant de réaliser des actions sur les produits associés à votre compte client. Découvrez dans cet article comment utiliser correctement cet API.&lt;br /&gt;
|image=Uploaded_file.png&lt;br /&gt;
|image_alt=Wiki Logo&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Ikoula dispose d'une API permettant de réaliser des actions sur les produits associés à votre compte client.&lt;br /&gt;
Voici l'URL de l'API: https://api.ikoula.com&lt;br /&gt;
&lt;br /&gt;
La documentation est disponible directement pour chaque produit.&lt;br /&gt;
&lt;br /&gt;
==Explications==&lt;br /&gt;
Pour des raisons évidentes de {{Template:Sécurité}}, l'API Ikoula exige une authentification. Celle-ci est basée sur un identifiant, un mot de passe et une signature :&amp;lt;br /&amp;gt;&lt;br /&gt;
* L'identifiant est l'adresse e-mail utilisée pour la connexion à votre compte Ikoula ou à l'Extranet. Le nom du paramètre pour le transmettre est toujours  &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''login'''&amp;lt;/span&amp;gt; ;&lt;br /&gt;
* Le mot de passe quant à lui doit être chiffré via une fonction spécifique utilisant une clé publique fournie par Ikoula (paramètre  &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''crypted_password'''&amp;lt;/span&amp;gt;) et base64_encode ;&lt;br /&gt;
* La signature est générée en fonction des paramètres fournis lors de l'appel à l'API.&lt;br /&gt;
* Ces paramètres doivent toujours être passés en GET à l'API !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''ATTENTION :'''&lt;br /&gt;
&lt;br /&gt;
Pour vos tests de l'API, vous pouvez, par exemple, utiliser un utilisateur temporaire dédié à ces tests.&lt;br /&gt;
L'utilisation du chiffrement de mot de passe avec la clé publique Ikoula est indispensable dans tout contexte de production ou non-court terme.&amp;lt;br /&amp;gt;&lt;br /&gt;
Si les appels API sont voués à être utilisés via un script ou un programme, nous vous recommandons la création d'un utilisateur dédié à cet effet plutôt que d'utiliser votre utilisateur extranet classique.&amp;lt;br /&amp;gt;&lt;br /&gt;
Deux possibilités s'offrent à vous :&lt;br /&gt;
* Créer un sous-utilisateur directement depuis la page d'accueil de votre compte extranet (Voir le WIKI ci-après pour la création de sous-utilisateur: [[Comment créer des sous-utilisateurs via l'extranet d'Ikoula]]).&lt;br /&gt;
* Contacter notre support pour la création d'un utilisateur Extranet si besoin&lt;br /&gt;
Attention à ne pas oublier de lui mettre les droits sur les prestations souhaitées.&lt;br /&gt;
&lt;br /&gt;
== Clé de chiffrement ==&lt;br /&gt;
&lt;br /&gt;
La clé publique de chiffrement du mot de passe est disponible à l'adresse suivante: 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;
==Exemples d'utilisation==&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;
== Ajout de fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
En cas de demande de fonctionnalité, contactez le support technique.&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Comment_utiliser_l%27API_d%E2%80%99Ikoula&amp;diff=30068</id>
		<title>Comment utiliser l'API d’Ikoula</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Comment_utiliser_l%27API_d%E2%80%99Ikoula&amp;diff=30068"/>
		<updated>2021-02-04T08:49:12Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : Page créée avec « == Introduction ==  Ikoula dispose d'une API permettant de réaliser des actions sur les produits associés à votre compte client. Voici l'URL de l'API: https://api.ikoul... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Ikoula dispose d'une API permettant de réaliser des actions sur les produits associés à votre compte client.&lt;br /&gt;
Voici l'URL de l'API: https://api.ikoula.com&lt;br /&gt;
&lt;br /&gt;
La documentation est disponible directement pour chaque produit.&lt;br /&gt;
&lt;br /&gt;
==Explications==&lt;br /&gt;
Pour des raisons évidentes de {{Template:Sécurité}}, l'API Ikoula exige une authentification. Celle-ci est basée sur un identifiant, un mot de passe et une signature :&amp;lt;br /&amp;gt;&lt;br /&gt;
* L'identifiant est l'adresse e-mail utilisée pour la connexion à votre compte Ikoula ou à l'Extranet. Le nom du paramètre pour le transmettre est toujours  &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''login'''&amp;lt;/span&amp;gt; ;&lt;br /&gt;
* Le mot de passe quant à lui doit être chiffré via une fonction spécifique utilisant une clé publique fournie par Ikoula (paramètre  &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''crypted_password'''&amp;lt;/span&amp;gt;) et base64_encode ;&lt;br /&gt;
* La signature est générée en fonction des paramètres fournis lors de l'appel à l'API.&lt;br /&gt;
* Ces paramètres doivent toujours être passés en GET à l'API !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''ATTENTION :'''&lt;br /&gt;
&lt;br /&gt;
Pour vos tests de l'API, vous pouvez, par exemple, utiliser un utilisateur temporaire dédié à ces tests.&lt;br /&gt;
L'utilisation du chiffrement de mot de passe avec la clé publique Ikoula est indispensable dans tout contexte de production ou non-court terme.&amp;lt;br /&amp;gt;&lt;br /&gt;
Si les appels API sont voués à être utilisés via un script ou un programme, nous vous recommandons la création d'un utilisateur dédié à cet effet plutôt que d'utiliser votre utilisateur extranet classique.&amp;lt;br /&amp;gt;&lt;br /&gt;
Deux possibilités s'offrent à vous :&lt;br /&gt;
* Créer un sous-utilisateur directement depuis la page d'accueil de votre compte extranet (Voir le WIKI ci-après pour la création de sous-utilisateur: [[Comment créer des sous-utilisateurs via l'extranet d'Ikoula]]).&lt;br /&gt;
* Contacter notre support pour la création d'un utilisateur Extranet si besoin&lt;br /&gt;
Attention à ne pas oublier de lui mettre les droits sur les prestations souhaitées.&lt;br /&gt;
&lt;br /&gt;
== Clé de chiffrement ==&lt;br /&gt;
&lt;br /&gt;
La clé publique de chiffrement du mot de passe est disponible à l'adresse suivante: 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;
==Exemples d'utilisation==&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;
== Ajout de fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
En cas de demande de fonctionnalité, contactez le support technique.&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Test_Traduction&amp;diff=28488</id>
		<title>Test Traduction</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Test_Traduction&amp;diff=28488"/>
		<updated>2020-07-24T12:08:30Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : Page créée avec « Test traduction »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Test traduction&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Fichier:Ikoula_Logo.png&amp;diff=26866</id>
		<title>Fichier:Ikoula Logo.png</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Fichier:Ikoula_Logo.png&amp;diff=26866"/>
		<updated>2019-08-13T06:37:02Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Vider_son_cache&amp;diff=26811</id>
		<title>Vider son cache</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Vider_son_cache&amp;diff=26811"/>
		<updated>2019-08-05T13:02:49Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_fr_title=&amp;quot;Vider son cache&amp;quot;  data-link_translate_fr_url=&amp;quot;Vider son cache&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:fr:Vider son cache]][[fr:Vider son cache]]&lt;br /&gt;
&amp;lt;span data-link_translate_he_title=&amp;quot;לרוקן את המטמון&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%9C%D7%A8%D7%95%D7%A7%D7%9F+%D7%90%D7%AA+%D7%94%D7%9E%D7%98%D7%9E%D7%95%D7%9F&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:לרוקן את המטמון]][[he:לרוקן את המטמון]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Goliţi cache-ul său&amp;quot;  data-link_translate_ro_url=&amp;quot;Goli%C5%A3i+cache-ul+s%C4%83u&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Goliţi cache-ul său]][[ro:Goliţi cache-ul său]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Очистить кэш&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%9E%D1%87%D0%B8%D1%81%D1%82%D0%B8%D1%82%D1%8C+%D0%BA%D1%8D%D1%88&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Очистить кэш]][[ru:Очистить кэш]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Opróżnienia pamięci podręcznej&amp;quot;  data-link_translate_pl_url=&amp;quot;Opr%C3%B3%C5%BCnienia+pami%C4%99ci+podr%C4%99cznej&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Opróżnienia pamięci podręcznej]][[pl:Opróżnienia pamięci podręcznej]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;إفراغ ذاكرة التخزين المؤقتة&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%A5%D9%81%D8%B1%D8%A7%D8%BA+%D8%B0%D8%A7%D9%83%D8%B1%D8%A9+%D8%A7%D9%84%D8%AA%D8%AE%D8%B2%D9%8A%D9%86+%D8%A7%D9%84%D9%85%D8%A4%D9%82%D8%AA%D8%A9&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:إفراغ ذاكرة التخزين المؤقتة]][[ar:إفراغ ذاكرة التخزين المؤقتة]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;清空其缓存&amp;quot;  data-link_translate_zh_url=&amp;quot;%E6%B8%85%E7%A9%BA%E5%85%B6%E7%BC%93%E5%AD%98&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:清空其缓存]][[zh:清空其缓存]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;そのキャッシュを空に&amp;quot;  data-link_translate_ja_url=&amp;quot;%E3%81%9D%E3%81%AE%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%82%92%E7%A9%BA%E3%81%AB&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:そのキャッシュを空に]][[ja:そのキャッシュを空に]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;Leeren Sie ihren cache&amp;quot;  data-link_translate_de_url=&amp;quot;Leeren+Sie+ihren+cache&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:Leeren Sie ihren cache]][[de:Leeren Sie ihren cache]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Afin d'alléger certaines requêtes effectuées par les ordinateurs, un système de cache DNS, de mise en mémoire des adresses contactées, a été mis en place.&amp;lt;br&amp;gt;Ce système peut poser certains problèmes lorsque les adresses mises en cache ne sont plus disponibles sur le réseau et que le cache n'a pas été actualisé.&lt;br /&gt;
&lt;br /&gt;
== Vider son cache ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFCC99;&amp;quot;&amp;gt; '''Note''': Pensez à redémarrer votre ordinateur après le vidage du cache DNS.&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Pour vider votre cache sous un environnement Linux il vous suffit d'ouvrir un terminal, tapez ensuite la commande suivante :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; /etc/rc.d/init.d/nscd restart &amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
ou&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; service nscd restart &amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
En relançant le service NSCD le cache DNS sous Linux est vidé.&lt;br /&gt;
=== Mac OS X===&lt;br /&gt;
Pour vider votre cache sous un environnement Mac OS X, tapez dans un terminal:&lt;br /&gt;
==== Version Leopard ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; dscacheutil -flushcache &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== Autres versions ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; lookupd -flushcache &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Le cache DNS sous Mac est maintenant vidé.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
Pour vider votre cache sous un environnement Windows, ouvrez un terminal de commande en ouvrant le menu Démarrer -&amp;gt; Exécuter puis tapez cmd :&lt;br /&gt;
Dans la fenêtre du terminal qui est apparue tapez:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; ipconfig /flushdns &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Voilà votre cache DNS sous windows est maintenant vidé.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #FFCC99;&amp;quot;&amp;gt; '''Note''': Pensez à redémarrer votre ordinateur après le vidage du cache DNS.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Windows]]&lt;br /&gt;
[[Catégorie:Linux]]&lt;br /&gt;
[[Catégorie:Mac OS]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=22110</id>
		<title>Exemples d'utilisation de l'API</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=22110"/>
		<updated>2016-12-23T12:57:05Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_he_title=&amp;quot;דוגמאות לשימוש ה-API&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%93%D7%95%D7%92%D7%9E%D7%90%D7%95%D7%AA+%D7%9C%D7%A9%D7%99%D7%9E%D7%95%D7%A9+%D7%94-API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:דוגמאות לשימוש ה-API]][[he:דוגמאות לשימוש ה-API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Exemple de utilizare a API&amp;quot;  data-link_translate_ro_url=&amp;quot;Exemple+de+utilizare+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Exemple de utilizare a API]][[ro:Exemple de utilizare a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Примеры использования API&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Примеры использования API]][[ru:Примеры использования API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Przykłady użycia interfejsu API&amp;quot;  data-link_translate_pl_url=&amp;quot;Przyk%C5%82ady+u%C5%BCycia+interfejsu+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Przykłady użycia interfejsu API]][[pl:Przykłady użycia interfejsu API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;API を使用しての例&amp;quot;  data-link_translate_ja_url=&amp;quot;API+%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%AE%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:API を使用しての例]][[ja:API を使用しての例]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;أمثلة لاستخدام API&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%A3%D9%85%D8%AB%D9%84%D8%A9+%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:أمثلة لاستخدام API]][[ar:أمثلة لاستخدام API]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;使用该 API 的示例&amp;quot;  data-link_translate_zh_url=&amp;quot;%E4%BD%BF%E7%94%A8%E8%AF%A5+API+%E7%9A%84%E7%A4%BA%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:使用该 API 的示例]][[zh:使用该 API 的示例]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;Beispiele für die Verwendung der API&amp;quot;  data-link_translate_de_url=&amp;quot;Beispiele+f%C3%BCr+die+Verwendung+der+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:Beispiele für die Verwendung der API]][[de:Beispiele für die Verwendung der API]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;Voorbeelden van het gebruik van de API&amp;quot;  data-link_translate_nl_url=&amp;quot;Voorbeelden+van+het+gebruik+van+de+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Voorbeelden van het gebruik van de API]][[nl:Voorbeelden van het gebruik van de API]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;Esempi di utilizzo dell'API&amp;quot;  data-link_translate_it_url=&amp;quot;Esempi+di+utilizzo+dell%27API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Esempi di utilizzo dell'API]][[it:Esempi di utilizzo dell'API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;Exemplos de como usar a API&amp;quot;  data-link_translate_pt_url=&amp;quot;Exemplos+de+como+usar+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:Exemplos de como usar a API]][[pt:Exemplos de como usar a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;Ejemplos de uso de la API&amp;quot;  data-link_translate_es_url=&amp;quot;Ejemplos+de+uso+de+la+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Ejemplos de uso de la API]][[es:Ejemplos de uso de la API]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;Examples of using the API&amp;quot;  data-link_translate_en_url=&amp;quot;Examples+of+using+the+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:Examples of using the API]][[en:Examples of using the API]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Comment utiliser l'API à travers quelques exemples concrets et fonctionnels.&lt;br /&gt;
&lt;br /&gt;
==Fonctions pour les exemples==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Chemin local vers la clé publique téléchargée sur https://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem&lt;br /&gt;
define('API_PUB_KEY_PATH', dirname(__FILE__) . '/Ikoula.API.RSAKeyPub.pem');&lt;br /&gt;
&lt;br /&gt;
// Fonction de chiffrement du mot de passe via la clé publique Ikoula&lt;br /&gt;
function opensslEncryptPublic($password)&lt;br /&gt;
{&lt;br /&gt;
	// Vérification de la présence de la clé publique&lt;br /&gt;
	if(file_exists(API_PUB_KEY_PATH))&lt;br /&gt;
	{&lt;br /&gt;
		if(!empty($password))&lt;br /&gt;
		{&lt;br /&gt;
			// on récupère la clé public&lt;br /&gt;
			$publicKey = openssl_pkey_get_public('file://'.realpath(API_PUB_KEY_PATH));&lt;br /&gt;
&lt;br /&gt;
// S'il n'y as pas eu d'erreurs lors de la récupération de la clé publique, on continue&lt;br /&gt;
			if ($publicKey !== FALSE)      &lt;br /&gt;
			{&lt;br /&gt;
				// Si chiffrement clé publique OK&lt;br /&gt;
				if(openssl_public_encrypt($password, $crypted, $publicKey) === TRUE)   &lt;br /&gt;
				{&lt;br /&gt;
					// Renvoie du mot de passe crypté&lt;br /&gt;
					return $crypted;       &lt;br /&gt;
				}&lt;br /&gt;
				else&lt;br /&gt;
				{&lt;br /&gt;
					return NULL;&lt;br /&gt;
				}&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;
	{&lt;br /&gt;
		echo(&amp;quot;Erreur - la clé publique n'est pas présente.\n&amp;quot;);&lt;br /&gt;
		return NULL;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Fontction de création de la signature en fonction des paramètres présents&lt;br /&gt;
function createSignature($params=array())&lt;br /&gt;
{&lt;br /&gt;
    $signature = null;&lt;br /&gt;
&lt;br /&gt;
// Si il y a au moins un paramètre&lt;br /&gt;
    if (count($params) &amp;gt; 0)&lt;br /&gt;
    {&lt;br /&gt;
        //debug('create signature');&lt;br /&gt;
        //debug($params);&lt;br /&gt;
        &lt;br /&gt;
        // Triage des paramètres dans le sens croissant&lt;br /&gt;
        ksort($params);&lt;br /&gt;
        &lt;br /&gt;
        // Encodage des paramètres&lt;br /&gt;
        $query = http_build_query($params);&lt;br /&gt;
&lt;br /&gt;
// Encodage des signes &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;
// Transformation de la chaîne de caractères en minuscule&lt;br /&gt;
        $query = strtolower($query);&lt;br /&gt;
&lt;br /&gt;
$public_key = &amp;quot;&amp;quot;;&lt;br /&gt;
        // Si le fichier existe, on va récupérer la clé&lt;br /&gt;
        if (file_exists(API_PUB_KEY_PATH))&lt;br /&gt;
        {&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(API_PUB_KEY_PATH)&lt;br /&gt;
                        )&lt;br /&gt;
                    );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
// Hashage des paramètres&lt;br /&gt;
        $hash = hash_hmac(&amp;quot;SHA1&amp;quot;, $query, $public_key, true);&lt;br /&gt;
&lt;br /&gt;
// Encodage en base64&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 facilitant l'envoie des requêtes vers l'API Ikoula&lt;br /&gt;
function send_request ($rest, $url_param, $params=array())&lt;br /&gt;
{&lt;br /&gt;
	// initialisation de CURL&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	if($ch)&lt;br /&gt;
	{&lt;br /&gt;
		// Si on a des info on utilise l'api REST sinon on utilise l'api standard (WebService)&lt;br /&gt;
		if($rest)&lt;br /&gt;
			$url = &amp;quot;https://api.ikoula.com/rest/&amp;quot; . $url_param;&lt;br /&gt;
		else &lt;br /&gt;
			$url = &amp;quot;https://api.ikoula.com/?r=&amp;quot; . $url_param;&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
// si on est en REST on rajoute le type d'appel (POST,DELETE,PUT,GET,...) sinon on passe en POST&lt;br /&gt;
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ($rest)?$rest:&amp;quot;POST&amp;quot;);&lt;br /&gt;
		// Si il y a des paramètres on les rajoute dans la requête&lt;br /&gt;
		if(is_array($params) &amp;amp;&amp;amp; count($params) &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			$params_str = http_build_query($params);&lt;br /&gt;
		}&lt;br /&gt;
		if($rest=='POST')&lt;br /&gt;
		{&lt;br /&gt;
			// on rentre le nom de paramètre présent dans la requête&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;
		{&lt;br /&gt;
			$url .= (strpos($url,'?') === false ? '?' : '&amp;amp;').$params_str;&lt;br /&gt;
		}&lt;br /&gt;
			&lt;br /&gt;
		// On ajoute l'url&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;
		// on vire les en-tête HTTP pour avoir directement le retour&lt;br /&gt;
		curl_setopt($ch, CURLOPT_HEADER, false);&lt;br /&gt;
	   &lt;br /&gt;
		// exécution de la requête&lt;br /&gt;
		$data = curl_exec($ch);&lt;br /&gt;
	   &lt;br /&gt;
		// fermeture de l'objet&lt;br /&gt;
		curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
// retourne la réponse&lt;br /&gt;
		return($data);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Appels API==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Login&lt;br /&gt;
$login = 'mail@test.com';&lt;br /&gt;
&lt;br /&gt;
// On crypte le mot de passe&lt;br /&gt;
$crypted_password = base64_encode(opensslEncryptPublic('MOT_DE_PASSE_A_CRYPTER'));&lt;br /&gt;
&lt;br /&gt;
// Liste des VM - retour en JSON&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsflex/vmlist',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','vm/list',$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Informations d'une VM - retour en XML&lt;br /&gt;
//liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'xml', 'subscr_id' =&amp;gt; 12345);&lt;br /&gt;
//on génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
//on ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
//on fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsflex/vminfo',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','vm/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Information sur une prestation Exchange&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'subscr_id' =&amp;gt; 12345);&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsexch/getschemasubscrexchange',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','exch/schemasubscrexchange/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Ajouter une BAL Exchange&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'email_bal' =&amp;gt; 'new_bal@domain.tld', 'orga_id' =&amp;gt; 'orga_id', 'display_name' =&amp;gt; 'Name for Bal', 'mail_send_installation' =&amp;gt; 'emailto_reveive_info@domain.tld', 'password_bal' =&amp;gt; 'PASSWORD_BAL');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsexch/addbalexchange',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('POST','exch/addbalexchange/'.$parameters['email_bal'].'/'.$parameters['password_bal'].'/'.urlencode($parameters['display_name']).'/'.$parameters['orga_id'], $parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Changer le password d'une BAL Exchange&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'email_bal' =&amp;gt; 'sousclient4@orga31.ex10.biz', 'password_bal' =&amp;gt; 'r7ttlJOKYQZd');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsexch/ChangeExchangePassword',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('POST','exch/changeexchangepassword/'.$parameters['email_bal'].'/'.$parameters['password_bal'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Récupérer les prestations IKIC du compte&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsikic/GetListIkic',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','ikic/list/',$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Récupérer les statistiques d'une prestation&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'subscr_id' =&amp;gt; 12345);&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsikic/datastats',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','ikic/datastats/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Récupération des plateformes&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
$data = send_request(false,'wsplatform/GetPlatformList',$parameters);&lt;br /&gt;
$data2 = send_request('GET','platform/list/',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Récupération des webscenarios&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'platform_id' =&amp;gt; 000);&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
$data = send_request(false,'wsplatform/GetPlatformWebscenarios',$parameters);&lt;br /&gt;
$data2 = send_request('GET','platform/webscenarios/'.$parameters['platform_id'],$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Récupération des détails d'une plateforme&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'platform_id' =&amp;gt; 000);&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
$data = send_request(false,'wsplatform/GetPlatformDetails',$parameters);&lt;br /&gt;
$data2 = send_request('GET','platform/details/'.$parameters['platform_id'],$parameters);&lt;br /&gt;
&lt;br /&gt;
// Récupération des prestations R1Soft&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
$data = send_request(false,'wsr1soft/GetR1softList',$parameters);&lt;br /&gt;
$data2 = send_request('GET','r1soft/list/',$parameters);&lt;br /&gt;
&lt;br /&gt;
// Récupération des détails d'une prestation R1Soft&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'subscr_id' =&amp;gt; 9999999);&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
$data = send_request(false,'wsr1soft/GetR1softSubscr',$parameters);&lt;br /&gt;
$data2 = send_request('GET','r1soft/details/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
&lt;br /&gt;
// Récupération des prestations SSL&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
$data = send_request(false,'wsssl/GetSslList',$parameters);&lt;br /&gt;
$data2 = send_request('GET','ssl/list/',$parameters);&lt;br /&gt;
&lt;br /&gt;
// Récupération des détails d'une prestation SSL&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'subscr_id' =&amp;gt; 9999999);&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
$data = send_request(false,'wsssl/GetSslSubscr',$parameters);&lt;br /&gt;
$data2 = send_request('GET','ssl/details/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
&lt;br /&gt;
// Récupération des prestations HEB&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
$data = send_request(false,'wsheb/GetHebList',$parameters);&lt;br /&gt;
$data2 = send_request('GET','heb/list/',$parameters);&lt;br /&gt;
&lt;br /&gt;
// Récupération des détails d'une prestation HEB&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'subscr_id' =&amp;gt; 9999999);&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
$data = send_request(false,'wsheb/GetHebSubscr',$parameters);&lt;br /&gt;
$data2 = send_request('GET','heb/details/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
&lt;br /&gt;
// Récupération des prestations NDD&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
$data = send_request(false,'wsndd/GetNddList',$parameters);&lt;br /&gt;
$data2 = send_request('GET','ndd/list/',$parameters);&lt;br /&gt;
&lt;br /&gt;
// Récupération des détails d'une prestation NDD&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'subscr_id' =&amp;gt; 9999999);&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
$data = send_request(false,'wsndd/GetNddSubscr',$parameters);&lt;br /&gt;
$data2 = send_request('GET','ndd/details/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Erreurs usuelles==&lt;br /&gt;
;Permission Denied&lt;br /&gt;
: Signifie que l'utilisateur utilisé dans l'API n'a pas le droit d'accéder à l'information demandée ou d'effectuer l'action souhaitée.&lt;br /&gt;
;Unable to decrypt password&lt;br /&gt;
: Signifie que le paramètre '''crypted_password''' a été mal crypté ou corrompu.&lt;br /&gt;
;Invalid credentials&lt;br /&gt;
: Signifie que l'authentification a échoué et que l'utilisateur n'est donc pas reconnu.&lt;br /&gt;
;Invalid or missing signature&lt;br /&gt;
: Signifie que la signature n'est pas présente dans les paramètres reçus par l'API, ou que celle-ci est invalide.&lt;br /&gt;
&amp;lt;br /&amp;gt;D'autres remontées d'erreurs sont possibles mais seront contextuelles en fonction de la fonctionnalité souhaitée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Fin de l'article --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Cet article vous a semblé utile ? &amp;lt;vote /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Placez ici la ou les catégories auxquelles se rapporte votre article. Une ligne par catégorie. Ex: &lt;br /&gt;
[[Catégorie:Contribuer]]&lt;br /&gt;
[[Catégorie:Linux]] --&amp;gt;&lt;br /&gt;
[[Catégorie:API]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Gestion SEO. Indiquez les informations manquantes --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=22013</id>
		<title>Exemples d'utilisation de l'API</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=22013"/>
		<updated>2016-11-29T14:03:14Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_he_title=&amp;quot;דוגמאות לשימוש ה-API&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%93%D7%95%D7%92%D7%9E%D7%90%D7%95%D7%AA+%D7%9C%D7%A9%D7%99%D7%9E%D7%95%D7%A9+%D7%94-API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:דוגמאות לשימוש ה-API]][[he:דוגמאות לשימוש ה-API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Exemple de utilizare a API&amp;quot;  data-link_translate_ro_url=&amp;quot;Exemple+de+utilizare+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Exemple de utilizare a API]][[ro:Exemple de utilizare a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Примеры использования API&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Примеры использования API]][[ru:Примеры использования API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Przykłady użycia interfejsu API&amp;quot;  data-link_translate_pl_url=&amp;quot;Przyk%C5%82ady+u%C5%BCycia+interfejsu+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Przykłady użycia interfejsu API]][[pl:Przykłady użycia interfejsu API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;API を使用しての例&amp;quot;  data-link_translate_ja_url=&amp;quot;API+%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%AE%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:API を使用しての例]][[ja:API を使用しての例]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;أمثلة لاستخدام API&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%A3%D9%85%D8%AB%D9%84%D8%A9+%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:أمثلة لاستخدام API]][[ar:أمثلة لاستخدام API]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;使用该 API 的示例&amp;quot;  data-link_translate_zh_url=&amp;quot;%E4%BD%BF%E7%94%A8%E8%AF%A5+API+%E7%9A%84%E7%A4%BA%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:使用该 API 的示例]][[zh:使用该 API 的示例]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;Beispiele für die Verwendung der API&amp;quot;  data-link_translate_de_url=&amp;quot;Beispiele+f%C3%BCr+die+Verwendung+der+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:Beispiele für die Verwendung der API]][[de:Beispiele für die Verwendung der API]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;Voorbeelden van het gebruik van de API&amp;quot;  data-link_translate_nl_url=&amp;quot;Voorbeelden+van+het+gebruik+van+de+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Voorbeelden van het gebruik van de API]][[nl:Voorbeelden van het gebruik van de API]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;Esempi di utilizzo dell'API&amp;quot;  data-link_translate_it_url=&amp;quot;Esempi+di+utilizzo+dell%27API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Esempi di utilizzo dell'API]][[it:Esempi di utilizzo dell'API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;Exemplos de como usar a API&amp;quot;  data-link_translate_pt_url=&amp;quot;Exemplos+de+como+usar+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:Exemplos de como usar a API]][[pt:Exemplos de como usar a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;Ejemplos de uso de la API&amp;quot;  data-link_translate_es_url=&amp;quot;Ejemplos+de+uso+de+la+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Ejemplos de uso de la API]][[es:Ejemplos de uso de la API]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;Examples of using the API&amp;quot;  data-link_translate_en_url=&amp;quot;Examples+of+using+the+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:Examples of using the API]][[en:Examples of using the API]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Comment utiliser l'API à travers quelques exemples concrets et fonctionnels.&lt;br /&gt;
&lt;br /&gt;
==Fonctions pour les exemples==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Chemin local vers la clé publique téléchargée sur https://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem&lt;br /&gt;
define('API_PUB_KEY_PATH', dirname(__FILE__) . '/Ikoula.API.RSAKeyPub.pem');&lt;br /&gt;
&lt;br /&gt;
// Fonction de chiffrement du mot de passe via la clé publique Ikoula&lt;br /&gt;
function opensslEncryptPublic($password)&lt;br /&gt;
{&lt;br /&gt;
	// Vérification de la présence de la clé publique&lt;br /&gt;
	if(file_exists(API_PUB_KEY_PATH))&lt;br /&gt;
	{&lt;br /&gt;
		if(!empty($password))&lt;br /&gt;
		{&lt;br /&gt;
			// on récupère la clé public&lt;br /&gt;
			$publicKey = openssl_pkey_get_public('file://'.realpath(API_PUB_KEY_PATH));&lt;br /&gt;
&lt;br /&gt;
// S'il n'y as pas eu d'erreurs lors de la récupération de la clé publique, on continue&lt;br /&gt;
			if ($publicKey !== FALSE)      &lt;br /&gt;
			{&lt;br /&gt;
				// Si chiffrement clé publique OK&lt;br /&gt;
				if(openssl_public_encrypt($password, $crypted, $publicKey) === TRUE)   &lt;br /&gt;
				{&lt;br /&gt;
					// Renvoie du mot de passe crypté&lt;br /&gt;
					return $crypted;       &lt;br /&gt;
				}&lt;br /&gt;
				else&lt;br /&gt;
				{&lt;br /&gt;
					return NULL;&lt;br /&gt;
				}&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;
	{&lt;br /&gt;
		echo(&amp;quot;Erreur - la clé publique n'est pas présente.\n&amp;quot;);&lt;br /&gt;
		return NULL;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Fontction de création de la signature en fonction des paramètres présents&lt;br /&gt;
function createSignature($params=array())&lt;br /&gt;
{&lt;br /&gt;
    $signature = null;&lt;br /&gt;
&lt;br /&gt;
// Si il y a au moins un paramètre&lt;br /&gt;
    if (count($params) &amp;gt; 0)&lt;br /&gt;
    {&lt;br /&gt;
        //debug('create signature');&lt;br /&gt;
        //debug($params);&lt;br /&gt;
        &lt;br /&gt;
        // Triage des paramètres dans le sens croissant&lt;br /&gt;
        ksort($params);&lt;br /&gt;
        &lt;br /&gt;
        // Encodage des paramètres&lt;br /&gt;
        $query = http_build_query($params);&lt;br /&gt;
&lt;br /&gt;
// Encodage des signes &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;
// Transformation de la chaîne de caractères en minuscule&lt;br /&gt;
        $query = strtolower($query);&lt;br /&gt;
&lt;br /&gt;
$public_key = &amp;quot;&amp;quot;;&lt;br /&gt;
        // Si le fichier existe, on va récupérer la clé&lt;br /&gt;
        if (file_exists(API_PUB_KEY_PATH))&lt;br /&gt;
        {&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(API_PUB_KEY_PATH)&lt;br /&gt;
                        )&lt;br /&gt;
                    );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
// Hashage des paramètres&lt;br /&gt;
        $hash = hash_hmac(&amp;quot;SHA1&amp;quot;, $query, $public_key, true);&lt;br /&gt;
&lt;br /&gt;
// Encodage en base64&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 facilitant l'envoie des requêtes vers l'API Ikoula&lt;br /&gt;
function send_request ($rest, $url_param, $params=array())&lt;br /&gt;
{&lt;br /&gt;
	// initialisation de CURL&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	if($ch)&lt;br /&gt;
	{&lt;br /&gt;
		// Si on a des info on utilise l'api REST sinon on utilise l'api standard (WebService)&lt;br /&gt;
		if($rest)&lt;br /&gt;
			$url = &amp;quot;https://api.ikoula.com/rest/&amp;quot; . $url_param;&lt;br /&gt;
		else &lt;br /&gt;
			$url = &amp;quot;https://api.ikoula.com/?r=&amp;quot; . $url_param;&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
// si on est en REST on rajoute le type d'appel (POST,DELETE,PUT,GET,...) sinon on passe en POST&lt;br /&gt;
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ($rest)?$rest:&amp;quot;POST&amp;quot;);&lt;br /&gt;
		// Si il y a des paramètres on les rajoute dans la requête&lt;br /&gt;
		if(is_array($params) &amp;amp;&amp;amp; count($params) &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			$params_str = http_build_query($params);&lt;br /&gt;
		}&lt;br /&gt;
		if($rest=='POST')&lt;br /&gt;
		{&lt;br /&gt;
			// on rentre le nom de paramètre présent dans la requête&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;
		{&lt;br /&gt;
			$url .= (strpos($url,'?') === false ? '?' : '&amp;amp;').$params_str;&lt;br /&gt;
		}&lt;br /&gt;
			&lt;br /&gt;
		// On ajoute l'url&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;
		// on vire les en-tête HTTP pour avoir directement le retour&lt;br /&gt;
		curl_setopt($ch, CURLOPT_HEADER, false);&lt;br /&gt;
	   &lt;br /&gt;
		// exécution de la requête&lt;br /&gt;
		$data = curl_exec($ch);&lt;br /&gt;
	   &lt;br /&gt;
		// fermeture de l'objet&lt;br /&gt;
		curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
// retourne la réponse&lt;br /&gt;
		return($data);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Appels API==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Login&lt;br /&gt;
$login = 'mail@test.com';&lt;br /&gt;
&lt;br /&gt;
// On crypte le mot de passe&lt;br /&gt;
$crypted_password = base64_encode(opensslEncryptPublic('MOT_DE_PASSE_A_CRYPTER'));&lt;br /&gt;
&lt;br /&gt;
// Liste des VM - retour en JSON&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsflex/vmlist',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','vm/list',$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Informations d'une VM - retour en XML&lt;br /&gt;
//liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'xml', 'subscr_id' =&amp;gt; 12345);&lt;br /&gt;
//on génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
//on ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
//on fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsflex/vminfo',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','vm/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Information sur une prestation Exchange&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'subscr_id' =&amp;gt; 12345);&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsexch/getschemasubscrexchange',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','exch/schemasubscrexchange/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Ajouter une BAL Exchange&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'email_bal' =&amp;gt; 'new_bal@domain.tld', 'orga_id' =&amp;gt; 'orga_id', 'display_name' =&amp;gt; 'Name for Bal', 'mail_send_installation' =&amp;gt; 'emailto_reveive_info@domain.tld', 'password_bal' =&amp;gt; 'PASSWORD_BAL');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsexch/addbalexchange',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('POST','exch/addbalexchange/'.$parameters['email_bal'].'/'.$parameters['password_bal'].'/'.urlencode($parameters['display_name']).'/'.$parameters['orga_id'], $parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Changer le password d'une BAL Exchange&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'email_bal' =&amp;gt; 'sousclient4@orga31.ex10.biz', 'password_bal' =&amp;gt; 'r7ttlJOKYQZd');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsexch/ChangeExchangePassword',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('POST','exch/changeexchangepassword/'.$parameters['email_bal'].'/'.$parameters['password_bal'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Récupérer les prestations IKIC du compte&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsikic/GetListIkic',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','ikic/list/',$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Récupérer les statistiques d'une prestation&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'subscr_id' =&amp;gt; 12345);&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsikic/datastats',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','ikic/datastats/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Récupération des plateformes&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
$data = send_request(false,'wsplatform/GetPlatformList',$parameters);&lt;br /&gt;
$data2 = send_request('GET','platform/list/',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Récupération des webscenarios&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'platform_id' =&amp;gt; 000);&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
$data = send_request(false,'wsplatform/GetPlatformWebscenarios',$parameters);&lt;br /&gt;
$data2 = send_request('GET','platform/webscenarios/'.$parameters['platform_id'],$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Récupération des détails d'une plateforme&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'platform_id' =&amp;gt; 000);&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
$data = send_request(false,'wsplatform/GetPlatformDetails',$parameters);&lt;br /&gt;
$data2 = send_request('GET','platform/details/'.$parameters['platform_id'],$parameters);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Erreurs usuelles==&lt;br /&gt;
;Permission Denied&lt;br /&gt;
: Signifie que l'utilisateur utilisé dans l'API n'a pas le droit d'accéder à l'information demandée ou d'effectuer l'action souhaitée.&lt;br /&gt;
;Unable to decrypt password&lt;br /&gt;
: Signifie que le paramètre '''crypted_password''' a été mal crypté ou corrompu.&lt;br /&gt;
;Invalid credentials&lt;br /&gt;
: Signifie que l'authentification a échoué et que l'utilisateur n'est donc pas reconnu.&lt;br /&gt;
;Invalid or missing signature&lt;br /&gt;
: Signifie que la signature n'est pas présente dans les paramètres reçus par l'API, ou que celle-ci est invalide.&lt;br /&gt;
&amp;lt;br /&amp;gt;D'autres remontées d'erreurs sont possibles mais seront contextuelles en fonction de la fonctionnalité souhaitée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Fin de l'article --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Cet article vous a semblé utile ? &amp;lt;vote /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Placez ici la ou les catégories auxquelles se rapporte votre article. Une ligne par catégorie. Ex: &lt;br /&gt;
[[Catégorie:Contribuer]]&lt;br /&gt;
[[Catégorie:Linux]] --&amp;gt;&lt;br /&gt;
[[Catégorie:API]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Gestion SEO. Indiquez les informations manquantes --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=21960</id>
		<title>Exemples d'utilisation de l'API</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=21960"/>
		<updated>2016-10-19T11:39:48Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : /* Appels API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_he_title=&amp;quot;דוגמאות לשימוש ה-API&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%93%D7%95%D7%92%D7%9E%D7%90%D7%95%D7%AA+%D7%9C%D7%A9%D7%99%D7%9E%D7%95%D7%A9+%D7%94-API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:דוגמאות לשימוש ה-API]][[he:דוגמאות לשימוש ה-API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Exemple de utilizare a API&amp;quot;  data-link_translate_ro_url=&amp;quot;Exemple+de+utilizare+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Exemple de utilizare a API]][[ro:Exemple de utilizare a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Примеры использования API&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Примеры использования API]][[ru:Примеры использования API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Przykłady użycia interfejsu API&amp;quot;  data-link_translate_pl_url=&amp;quot;Przyk%C5%82ady+u%C5%BCycia+interfejsu+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Przykłady użycia interfejsu API]][[pl:Przykłady użycia interfejsu API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;API を使用しての例&amp;quot;  data-link_translate_ja_url=&amp;quot;API+%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%AE%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:API を使用しての例]][[ja:API を使用しての例]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;أمثلة لاستخدام API&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%A3%D9%85%D8%AB%D9%84%D8%A9+%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:أمثلة لاستخدام API]][[ar:أمثلة لاستخدام API]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;使用该 API 的示例&amp;quot;  data-link_translate_zh_url=&amp;quot;%E4%BD%BF%E7%94%A8%E8%AF%A5+API+%E7%9A%84%E7%A4%BA%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:使用该 API 的示例]][[zh:使用该 API 的示例]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;Beispiele für die Verwendung der API&amp;quot;  data-link_translate_de_url=&amp;quot;Beispiele+f%C3%BCr+die+Verwendung+der+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:Beispiele für die Verwendung der API]][[de:Beispiele für die Verwendung der API]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;Voorbeelden van het gebruik van de API&amp;quot;  data-link_translate_nl_url=&amp;quot;Voorbeelden+van+het+gebruik+van+de+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Voorbeelden van het gebruik van de API]][[nl:Voorbeelden van het gebruik van de API]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;Esempi di utilizzo dell'API&amp;quot;  data-link_translate_it_url=&amp;quot;Esempi+di+utilizzo+dell%27API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Esempi di utilizzo dell'API]][[it:Esempi di utilizzo dell'API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;Exemplos de como usar a API&amp;quot;  data-link_translate_pt_url=&amp;quot;Exemplos+de+como+usar+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:Exemplos de como usar a API]][[pt:Exemplos de como usar a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;Ejemplos de uso de la API&amp;quot;  data-link_translate_es_url=&amp;quot;Ejemplos+de+uso+de+la+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Ejemplos de uso de la API]][[es:Ejemplos de uso de la API]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;Examples of using the API&amp;quot;  data-link_translate_en_url=&amp;quot;Examples+of+using+the+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:Examples of using the API]][[en:Examples of using the API]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Comment utiliser l'API à travers quelques exemples concrets et fonctionnels.&lt;br /&gt;
&lt;br /&gt;
==Fonctions pour les exemples==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Chemin local vers la clé publique téléchargée sur https://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem&lt;br /&gt;
define('API_PUB_KEY_PATH', dirname(__FILE__) . '/Ikoula.API.RSAKeyPub.pem');&lt;br /&gt;
&lt;br /&gt;
// Fonction de chiffrement du mot de passe via la clé publique Ikoula&lt;br /&gt;
function opensslEncryptPublic($password)&lt;br /&gt;
{&lt;br /&gt;
	// Vérification de la présence de la clé publique&lt;br /&gt;
	if(file_exists(API_PUB_KEY_PATH))&lt;br /&gt;
	{&lt;br /&gt;
		if(!empty($password))&lt;br /&gt;
		{&lt;br /&gt;
			// on récupère la clé public&lt;br /&gt;
			$publicKey = openssl_pkey_get_public('file://'.realpath(API_PUB_KEY_PATH));&lt;br /&gt;
&lt;br /&gt;
// S'il n'y as pas eu d'erreurs lors de la récupération de la clé publique, on continue&lt;br /&gt;
			if ($publicKey !== FALSE)      &lt;br /&gt;
			{&lt;br /&gt;
				// Si chiffrement clé publique OK&lt;br /&gt;
				if(openssl_public_encrypt($password, $crypted, $publicKey) === TRUE)   &lt;br /&gt;
				{&lt;br /&gt;
					// Renvoie du mot de passe crypté&lt;br /&gt;
					return $crypted;       &lt;br /&gt;
				}&lt;br /&gt;
				else&lt;br /&gt;
				{&lt;br /&gt;
					return NULL;&lt;br /&gt;
				}&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;
	{&lt;br /&gt;
		echo(&amp;quot;Erreur - la clé publique n'est pas présente.\n&amp;quot;);&lt;br /&gt;
		return NULL;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Fontction de création de la signature en fonction des paramètres présents&lt;br /&gt;
function createSignature($params=array())&lt;br /&gt;
{&lt;br /&gt;
    $signature = null;&lt;br /&gt;
&lt;br /&gt;
// Si il y a au moins un paramètre&lt;br /&gt;
    if (count($params) &amp;gt; 0)&lt;br /&gt;
    {&lt;br /&gt;
        //debug('create signature');&lt;br /&gt;
        //debug($params);&lt;br /&gt;
        &lt;br /&gt;
        // Triage des paramètres dans le sens croissant&lt;br /&gt;
        ksort($params);&lt;br /&gt;
        &lt;br /&gt;
        // Encodage des paramètres&lt;br /&gt;
        $query = http_build_query($params);&lt;br /&gt;
&lt;br /&gt;
// Encodage des signes &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;
// Transformation de la chaîne de caractères en minuscule&lt;br /&gt;
        $query = strtolower($query);&lt;br /&gt;
&lt;br /&gt;
$public_key = &amp;quot;&amp;quot;;&lt;br /&gt;
        // Si le fichier existe, on va récupérer la clé&lt;br /&gt;
        if (file_exists(API_PUB_KEY_PATH))&lt;br /&gt;
        {&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(API_PUB_KEY_PATH)&lt;br /&gt;
                        )&lt;br /&gt;
                    );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
// Hashage des paramètres&lt;br /&gt;
        $hash = hash_hmac(&amp;quot;SHA1&amp;quot;, $query, $public_key, true);&lt;br /&gt;
&lt;br /&gt;
// Encodage en base64&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 facilitant l'envoie des requêtes vers l'API Ikoula&lt;br /&gt;
function send_request ($rest, $url_param, $params=array())&lt;br /&gt;
{&lt;br /&gt;
	// initialisation de CURL&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	if($ch)&lt;br /&gt;
	{&lt;br /&gt;
		// Si on a des info on utilise l'api REST sinon on utilise l'api standard (WebService)&lt;br /&gt;
		if($rest)&lt;br /&gt;
			$url = &amp;quot;https://api.ikoula.com/rest/&amp;quot; . $url_param;&lt;br /&gt;
		else &lt;br /&gt;
			$url = &amp;quot;https://api.ikoula.com/?r=&amp;quot; . $url_param;&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
// si on est en REST on rajoute le type d'appel (POST,DELETE,PUT,GET,...) sinon on passe en POST&lt;br /&gt;
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ($rest)?$rest:&amp;quot;POST&amp;quot;);&lt;br /&gt;
		// Si il y a des paramètres on les rajoute dans la requête&lt;br /&gt;
		if(is_array($params) &amp;amp;&amp;amp; count($params) &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			$params_str = http_build_query($params);&lt;br /&gt;
		}&lt;br /&gt;
		if($rest=='POST')&lt;br /&gt;
		{&lt;br /&gt;
			// on rentre le nom de paramètre présent dans la requête&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;
		{&lt;br /&gt;
			$url .= (strpos($url,'?') === false ? '?' : '&amp;amp;').$params_str;&lt;br /&gt;
		}&lt;br /&gt;
			&lt;br /&gt;
		// On ajoute l'url&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;
		// on vire les en-tête HTTP pour avoir directement le retour&lt;br /&gt;
		curl_setopt($ch, CURLOPT_HEADER, false);&lt;br /&gt;
	   &lt;br /&gt;
		// exécution de la requête&lt;br /&gt;
		$data = curl_exec($ch);&lt;br /&gt;
	   &lt;br /&gt;
		// fermeture de l'objet&lt;br /&gt;
		curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
// retourne la réponse&lt;br /&gt;
		return($data);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Appels API==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Login&lt;br /&gt;
$login = 'mail@test.com';&lt;br /&gt;
&lt;br /&gt;
// On crypte le mot de passe&lt;br /&gt;
$crypted_password = base64_encode(opensslEncryptPublic('MOT_DE_PASSE_A_CRYPTER'));&lt;br /&gt;
&lt;br /&gt;
// Liste des VM - retour en JSON&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsflex/vmlist',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','vm/list',$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Informations d'une VM - retour en XML&lt;br /&gt;
//liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'xml', 'subscr_id' =&amp;gt; 12345);&lt;br /&gt;
//on génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
//on ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
//on fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsflex/vminfo',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','vm/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Information sur une prestation Exchange&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'subscr_id' =&amp;gt; 12345);&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsexch/getschemasubscrexchange',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','exch/schemasubscrexchange/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Ajouter une BAL Exchange&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'email_bal' =&amp;gt; 'new_bal@domain.tld', 'orga_id' =&amp;gt; 'orga_id', 'display_name' =&amp;gt; 'Name for Bal', 'mail_send_installation' =&amp;gt; 'emailto_reveive_info@domain.tld', 'password_bal' =&amp;gt; 'PASSWORD_BAL');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsexch/addbalexchange',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('POST','exch/addbalexchange/'.$parameters['email_bal'].'/'.$parameters['password_bal'].'/'.urlencode($parameters['display_name']).'/'.$parameters['orga_id'], $parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Changer le password d'une BAL Exchange&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'email_bal' =&amp;gt; 'sousclient4@orga31.ex10.biz', 'password_bal' =&amp;gt; 'r7ttlJOKYQZd');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsexch/ChangeExchangePassword',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('POST','exch/changeexchangepassword/'.$parameters['email_bal'].'/'.$parameters['password_bal'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Récupérer les prestations IKIC du compte&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsikic/GetListIkic',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','ikic/list/',$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Récupérer les statistiques d'une prestation&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'subscr_id' =&amp;gt; 12345);&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsikic/datastats',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','ikic/datastats/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Erreurs usuelles==&lt;br /&gt;
;Permission Denied&lt;br /&gt;
: Signifie que l'utilisateur utilisé dans l'API n'a pas le droit d'accéder à l'information demandée ou d'effectuer l'action souhaitée.&lt;br /&gt;
;Unable to decrypt password&lt;br /&gt;
: Signifie que le paramètre '''crypted_password''' a été mal crypté ou corrompu.&lt;br /&gt;
;Invalid credentials&lt;br /&gt;
: Signifie que l'authentification a échoué et que l'utilisateur n'est donc pas reconnu.&lt;br /&gt;
;Invalid or missing signature&lt;br /&gt;
: Signifie que la signature n'est pas présente dans les paramètres reçus par l'API, ou que celle-ci est invalide.&lt;br /&gt;
&amp;lt;br /&amp;gt;D'autres remontées d'erreurs sont possibles mais seront contextuelles en fonction de la fonctionnalité souhaitée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Fin de l'article --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Cet article vous a semblé utile ? &amp;lt;vote /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Placez ici la ou les catégories auxquelles se rapporte votre article. Une ligne par catégorie. Ex: &lt;br /&gt;
[[Catégorie:Contribuer]]&lt;br /&gt;
[[Catégorie:Linux]] --&amp;gt;&lt;br /&gt;
[[Catégorie:API]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Gestion SEO. Indiquez les informations manquantes --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=21959</id>
		<title>Exemples d'utilisation de l'API</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=21959"/>
		<updated>2016-10-19T11:37:42Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : /* Appels API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_he_title=&amp;quot;דוגמאות לשימוש ה-API&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%93%D7%95%D7%92%D7%9E%D7%90%D7%95%D7%AA+%D7%9C%D7%A9%D7%99%D7%9E%D7%95%D7%A9+%D7%94-API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:דוגמאות לשימוש ה-API]][[he:דוגמאות לשימוש ה-API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Exemple de utilizare a API&amp;quot;  data-link_translate_ro_url=&amp;quot;Exemple+de+utilizare+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Exemple de utilizare a API]][[ro:Exemple de utilizare a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Примеры использования API&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Примеры использования API]][[ru:Примеры использования API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Przykłady użycia interfejsu API&amp;quot;  data-link_translate_pl_url=&amp;quot;Przyk%C5%82ady+u%C5%BCycia+interfejsu+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Przykłady użycia interfejsu API]][[pl:Przykłady użycia interfejsu API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;API を使用しての例&amp;quot;  data-link_translate_ja_url=&amp;quot;API+%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%AE%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:API を使用しての例]][[ja:API を使用しての例]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;أمثلة لاستخدام API&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%A3%D9%85%D8%AB%D9%84%D8%A9+%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:أمثلة لاستخدام API]][[ar:أمثلة لاستخدام API]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;使用该 API 的示例&amp;quot;  data-link_translate_zh_url=&amp;quot;%E4%BD%BF%E7%94%A8%E8%AF%A5+API+%E7%9A%84%E7%A4%BA%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:使用该 API 的示例]][[zh:使用该 API 的示例]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;Beispiele für die Verwendung der API&amp;quot;  data-link_translate_de_url=&amp;quot;Beispiele+f%C3%BCr+die+Verwendung+der+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:Beispiele für die Verwendung der API]][[de:Beispiele für die Verwendung der API]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;Voorbeelden van het gebruik van de API&amp;quot;  data-link_translate_nl_url=&amp;quot;Voorbeelden+van+het+gebruik+van+de+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Voorbeelden van het gebruik van de API]][[nl:Voorbeelden van het gebruik van de API]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;Esempi di utilizzo dell'API&amp;quot;  data-link_translate_it_url=&amp;quot;Esempi+di+utilizzo+dell%27API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Esempi di utilizzo dell'API]][[it:Esempi di utilizzo dell'API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;Exemplos de como usar a API&amp;quot;  data-link_translate_pt_url=&amp;quot;Exemplos+de+como+usar+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:Exemplos de como usar a API]][[pt:Exemplos de como usar a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;Ejemplos de uso de la API&amp;quot;  data-link_translate_es_url=&amp;quot;Ejemplos+de+uso+de+la+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Ejemplos de uso de la API]][[es:Ejemplos de uso de la API]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;Examples of using the API&amp;quot;  data-link_translate_en_url=&amp;quot;Examples+of+using+the+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:Examples of using the API]][[en:Examples of using the API]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Comment utiliser l'API à travers quelques exemples concrets et fonctionnels.&lt;br /&gt;
&lt;br /&gt;
==Fonctions pour les exemples==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Chemin local vers la clé publique téléchargée sur https://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem&lt;br /&gt;
define('API_PUB_KEY_PATH', dirname(__FILE__) . '/Ikoula.API.RSAKeyPub.pem');&lt;br /&gt;
&lt;br /&gt;
// Fonction de chiffrement du mot de passe via la clé publique Ikoula&lt;br /&gt;
function opensslEncryptPublic($password)&lt;br /&gt;
{&lt;br /&gt;
	// Vérification de la présence de la clé publique&lt;br /&gt;
	if(file_exists(API_PUB_KEY_PATH))&lt;br /&gt;
	{&lt;br /&gt;
		if(!empty($password))&lt;br /&gt;
		{&lt;br /&gt;
			// on récupère la clé public&lt;br /&gt;
			$publicKey = openssl_pkey_get_public('file://'.realpath(API_PUB_KEY_PATH));&lt;br /&gt;
&lt;br /&gt;
// S'il n'y as pas eu d'erreurs lors de la récupération de la clé publique, on continue&lt;br /&gt;
			if ($publicKey !== FALSE)      &lt;br /&gt;
			{&lt;br /&gt;
				// Si chiffrement clé publique OK&lt;br /&gt;
				if(openssl_public_encrypt($password, $crypted, $publicKey) === TRUE)   &lt;br /&gt;
				{&lt;br /&gt;
					// Renvoie du mot de passe crypté&lt;br /&gt;
					return $crypted;       &lt;br /&gt;
				}&lt;br /&gt;
				else&lt;br /&gt;
				{&lt;br /&gt;
					return NULL;&lt;br /&gt;
				}&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;
	{&lt;br /&gt;
		echo(&amp;quot;Erreur - la clé publique n'est pas présente.\n&amp;quot;);&lt;br /&gt;
		return NULL;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Fontction de création de la signature en fonction des paramètres présents&lt;br /&gt;
function createSignature($params=array())&lt;br /&gt;
{&lt;br /&gt;
    $signature = null;&lt;br /&gt;
&lt;br /&gt;
// Si il y a au moins un paramètre&lt;br /&gt;
    if (count($params) &amp;gt; 0)&lt;br /&gt;
    {&lt;br /&gt;
        //debug('create signature');&lt;br /&gt;
        //debug($params);&lt;br /&gt;
        &lt;br /&gt;
        // Triage des paramètres dans le sens croissant&lt;br /&gt;
        ksort($params);&lt;br /&gt;
        &lt;br /&gt;
        // Encodage des paramètres&lt;br /&gt;
        $query = http_build_query($params);&lt;br /&gt;
&lt;br /&gt;
// Encodage des signes &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;
// Transformation de la chaîne de caractères en minuscule&lt;br /&gt;
        $query = strtolower($query);&lt;br /&gt;
&lt;br /&gt;
$public_key = &amp;quot;&amp;quot;;&lt;br /&gt;
        // Si le fichier existe, on va récupérer la clé&lt;br /&gt;
        if (file_exists(API_PUB_KEY_PATH))&lt;br /&gt;
        {&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(API_PUB_KEY_PATH)&lt;br /&gt;
                        )&lt;br /&gt;
                    );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
// Hashage des paramètres&lt;br /&gt;
        $hash = hash_hmac(&amp;quot;SHA1&amp;quot;, $query, $public_key, true);&lt;br /&gt;
&lt;br /&gt;
// Encodage en base64&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 facilitant l'envoie des requêtes vers l'API Ikoula&lt;br /&gt;
function send_request ($rest, $url_param, $params=array())&lt;br /&gt;
{&lt;br /&gt;
	// initialisation de CURL&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	if($ch)&lt;br /&gt;
	{&lt;br /&gt;
		// Si on a des info on utilise l'api REST sinon on utilise l'api standard (WebService)&lt;br /&gt;
		if($rest)&lt;br /&gt;
			$url = &amp;quot;https://api.ikoula.com/rest/&amp;quot; . $url_param;&lt;br /&gt;
		else &lt;br /&gt;
			$url = &amp;quot;https://api.ikoula.com/?r=&amp;quot; . $url_param;&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
// si on est en REST on rajoute le type d'appel (POST,DELETE,PUT,GET,...) sinon on passe en POST&lt;br /&gt;
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ($rest)?$rest:&amp;quot;POST&amp;quot;);&lt;br /&gt;
		// Si il y a des paramètres on les rajoute dans la requête&lt;br /&gt;
		if(is_array($params) &amp;amp;&amp;amp; count($params) &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			$params_str = http_build_query($params);&lt;br /&gt;
		}&lt;br /&gt;
		if($rest=='POST')&lt;br /&gt;
		{&lt;br /&gt;
			// on rentre le nom de paramètre présent dans la requête&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;
		{&lt;br /&gt;
			$url .= (strpos($url,'?') === false ? '?' : '&amp;amp;').$params_str;&lt;br /&gt;
		}&lt;br /&gt;
			&lt;br /&gt;
		// On ajoute l'url&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;
		// on vire les en-tête HTTP pour avoir directement le retour&lt;br /&gt;
		curl_setopt($ch, CURLOPT_HEADER, false);&lt;br /&gt;
	   &lt;br /&gt;
		// exécution de la requête&lt;br /&gt;
		$data = curl_exec($ch);&lt;br /&gt;
	   &lt;br /&gt;
		// fermeture de l'objet&lt;br /&gt;
		curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
// retourne la réponse&lt;br /&gt;
		return($data);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Appels API==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Login&lt;br /&gt;
$login = 'mail@test.com';&lt;br /&gt;
&lt;br /&gt;
// On crypte le mot de passe&lt;br /&gt;
$crypted_password = base64_encode(opensslEncryptPublic('MOT_DE_PASSE_A_CRYPTER'));&lt;br /&gt;
&lt;br /&gt;
// Liste des VM - retour en JSON&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsflex/vmlist',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','vm/list',$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Informations d'une VM - retour en XML&lt;br /&gt;
//liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'xml', 'subscr_id' =&amp;gt; 12345);&lt;br /&gt;
//on génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
//on ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
//on fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsflex/vminfo',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','vm/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Information sur une prestation Exchange&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'subscr_id' =&amp;gt; 12345);&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsexch/getschemasubscrexchange',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','exch/schemasubscrexchange/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Ajouter une BAL Exchange&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'email_bal' =&amp;gt; 'new_bal@domain.tld', 'orga_id' =&amp;gt; 'orga_id', 'display_name' =&amp;gt; 'Name for Bal', 'mail_send_installation' =&amp;gt; 'emailto_reveive_info@domain.tld', 'password_bal' =&amp;gt; 'PASSWORD_BAL');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsexch/getschemasubscrexchange',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','exch/schemasubscrexchange/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Changer le password d'une BAL Exchange&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'email_bal' =&amp;gt; 'sousclient4@orga31.ex10.biz', 'password_bal' =&amp;gt; 'r7ttlJOKYQZd');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsexch/ChangeExchangePassword',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('POST','exch/changeexchangepassword/'.$parameters['email_bal'].'/'.$parameters['password_bal'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Récupérer les prestations IKIC du compte&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsikic/GetListIkic',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','ikic/list/',$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
// Récupérer les statistiques d'une prestation&lt;br /&gt;
// Liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json', 'subscr_id' =&amp;gt; 12345);&lt;br /&gt;
// On génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
// On ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
// On fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsikic/datastats',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','ikic/datastats/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Erreurs usuelles==&lt;br /&gt;
;Permission Denied&lt;br /&gt;
: Signifie que l'utilisateur utilisé dans l'API n'a pas le droit d'accéder à l'information demandée ou d'effectuer l'action souhaitée.&lt;br /&gt;
;Unable to decrypt password&lt;br /&gt;
: Signifie que le paramètre '''crypted_password''' a été mal crypté ou corrompu.&lt;br /&gt;
;Invalid credentials&lt;br /&gt;
: Signifie que l'authentification a échoué et que l'utilisateur n'est donc pas reconnu.&lt;br /&gt;
;Invalid or missing signature&lt;br /&gt;
: Signifie que la signature n'est pas présente dans les paramètres reçus par l'API, ou que celle-ci est invalide.&lt;br /&gt;
&amp;lt;br /&amp;gt;D'autres remontées d'erreurs sont possibles mais seront contextuelles en fonction de la fonctionnalité souhaitée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Fin de l'article --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Cet article vous a semblé utile ? &amp;lt;vote /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Placez ici la ou les catégories auxquelles se rapporte votre article. Une ligne par catégorie. Ex: &lt;br /&gt;
[[Catégorie:Contribuer]]&lt;br /&gt;
[[Catégorie:Linux]] --&amp;gt;&lt;br /&gt;
[[Catégorie:API]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Gestion SEO. Indiquez les informations manquantes --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=21958</id>
		<title>Exemples d'utilisation de l'API</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=21958"/>
		<updated>2016-10-19T09:44:35Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : /* Fonctions pour les exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_he_title=&amp;quot;דוגמאות לשימוש ה-API&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%93%D7%95%D7%92%D7%9E%D7%90%D7%95%D7%AA+%D7%9C%D7%A9%D7%99%D7%9E%D7%95%D7%A9+%D7%94-API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:דוגמאות לשימוש ה-API]][[he:דוגמאות לשימוש ה-API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Exemple de utilizare a API&amp;quot;  data-link_translate_ro_url=&amp;quot;Exemple+de+utilizare+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Exemple de utilizare a API]][[ro:Exemple de utilizare a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Примеры использования API&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Примеры использования API]][[ru:Примеры использования API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Przykłady użycia interfejsu API&amp;quot;  data-link_translate_pl_url=&amp;quot;Przyk%C5%82ady+u%C5%BCycia+interfejsu+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Przykłady użycia interfejsu API]][[pl:Przykłady użycia interfejsu API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;API を使用しての例&amp;quot;  data-link_translate_ja_url=&amp;quot;API+%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%AE%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:API を使用しての例]][[ja:API を使用しての例]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;أمثلة لاستخدام API&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%A3%D9%85%D8%AB%D9%84%D8%A9+%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:أمثلة لاستخدام API]][[ar:أمثلة لاستخدام API]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;使用该 API 的示例&amp;quot;  data-link_translate_zh_url=&amp;quot;%E4%BD%BF%E7%94%A8%E8%AF%A5+API+%E7%9A%84%E7%A4%BA%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:使用该 API 的示例]][[zh:使用该 API 的示例]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;Beispiele für die Verwendung der API&amp;quot;  data-link_translate_de_url=&amp;quot;Beispiele+f%C3%BCr+die+Verwendung+der+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:Beispiele für die Verwendung der API]][[de:Beispiele für die Verwendung der API]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;Voorbeelden van het gebruik van de API&amp;quot;  data-link_translate_nl_url=&amp;quot;Voorbeelden+van+het+gebruik+van+de+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Voorbeelden van het gebruik van de API]][[nl:Voorbeelden van het gebruik van de API]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;Esempi di utilizzo dell'API&amp;quot;  data-link_translate_it_url=&amp;quot;Esempi+di+utilizzo+dell%27API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Esempi di utilizzo dell'API]][[it:Esempi di utilizzo dell'API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;Exemplos de como usar a API&amp;quot;  data-link_translate_pt_url=&amp;quot;Exemplos+de+como+usar+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:Exemplos de como usar a API]][[pt:Exemplos de como usar a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;Ejemplos de uso de la API&amp;quot;  data-link_translate_es_url=&amp;quot;Ejemplos+de+uso+de+la+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Ejemplos de uso de la API]][[es:Ejemplos de uso de la API]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;Examples of using the API&amp;quot;  data-link_translate_en_url=&amp;quot;Examples+of+using+the+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:Examples of using the API]][[en:Examples of using the API]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Comment utiliser l'API à travers quelques exemples concrets et fonctionnels.&lt;br /&gt;
&lt;br /&gt;
==Fonctions pour les exemples==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Chemin local vers la clé publique téléchargée sur https://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem&lt;br /&gt;
define('API_PUB_KEY_PATH', dirname(__FILE__) . '/Ikoula.API.RSAKeyPub.pem');&lt;br /&gt;
&lt;br /&gt;
// Fonction de chiffrement du mot de passe via la clé publique Ikoula&lt;br /&gt;
function opensslEncryptPublic($password)&lt;br /&gt;
{&lt;br /&gt;
	// Vérification de la présence de la clé publique&lt;br /&gt;
	if(file_exists(API_PUB_KEY_PATH))&lt;br /&gt;
	{&lt;br /&gt;
		if(!empty($password))&lt;br /&gt;
		{&lt;br /&gt;
			// on récupère la clé public&lt;br /&gt;
			$publicKey = openssl_pkey_get_public('file://'.realpath(API_PUB_KEY_PATH));&lt;br /&gt;
&lt;br /&gt;
// S'il n'y as pas eu d'erreurs lors de la récupération de la clé publique, on continue&lt;br /&gt;
			if ($publicKey !== FALSE)      &lt;br /&gt;
			{&lt;br /&gt;
				// Si chiffrement clé publique OK&lt;br /&gt;
				if(openssl_public_encrypt($password, $crypted, $publicKey) === TRUE)   &lt;br /&gt;
				{&lt;br /&gt;
					// Renvoie du mot de passe crypté&lt;br /&gt;
					return $crypted;       &lt;br /&gt;
				}&lt;br /&gt;
				else&lt;br /&gt;
				{&lt;br /&gt;
					return NULL;&lt;br /&gt;
				}&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;
	{&lt;br /&gt;
		echo(&amp;quot;Erreur - la clé publique n'est pas présente.\n&amp;quot;);&lt;br /&gt;
		return NULL;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Fontction de création de la signature en fonction des paramètres présents&lt;br /&gt;
function createSignature($params=array())&lt;br /&gt;
{&lt;br /&gt;
    $signature = null;&lt;br /&gt;
&lt;br /&gt;
// Si il y a au moins un paramètre&lt;br /&gt;
    if (count($params) &amp;gt; 0)&lt;br /&gt;
    {&lt;br /&gt;
        //debug('create signature');&lt;br /&gt;
        //debug($params);&lt;br /&gt;
        &lt;br /&gt;
        // Triage des paramètres dans le sens croissant&lt;br /&gt;
        ksort($params);&lt;br /&gt;
        &lt;br /&gt;
        // Encodage des paramètres&lt;br /&gt;
        $query = http_build_query($params);&lt;br /&gt;
&lt;br /&gt;
// Encodage des signes &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;
// Transformation de la chaîne de caractères en minuscule&lt;br /&gt;
        $query = strtolower($query);&lt;br /&gt;
&lt;br /&gt;
$public_key = &amp;quot;&amp;quot;;&lt;br /&gt;
        // Si le fichier existe, on va récupérer la clé&lt;br /&gt;
        if (file_exists(API_PUB_KEY_PATH))&lt;br /&gt;
        {&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(API_PUB_KEY_PATH)&lt;br /&gt;
                        )&lt;br /&gt;
                    );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
// Hashage des paramètres&lt;br /&gt;
        $hash = hash_hmac(&amp;quot;SHA1&amp;quot;, $query, $public_key, true);&lt;br /&gt;
&lt;br /&gt;
// Encodage en base64&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 facilitant l'envoie des requêtes vers l'API Ikoula&lt;br /&gt;
function send_request ($rest, $url_param, $params=array())&lt;br /&gt;
{&lt;br /&gt;
	// initialisation de CURL&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	if($ch)&lt;br /&gt;
	{&lt;br /&gt;
		// Si on a des info on utilise l'api REST sinon on utilise l'api standard (WebService)&lt;br /&gt;
		if($rest)&lt;br /&gt;
			$url = &amp;quot;https://api.ikoula.com/rest/&amp;quot; . $url_param;&lt;br /&gt;
		else &lt;br /&gt;
			$url = &amp;quot;https://api.ikoula.com/?r=&amp;quot; . $url_param;&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
// si on est en REST on rajoute le type d'appel (POST,DELETE,PUT,GET,...) sinon on passe en POST&lt;br /&gt;
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ($rest)?$rest:&amp;quot;POST&amp;quot;);&lt;br /&gt;
		// Si il y a des paramètres on les rajoute dans la requête&lt;br /&gt;
		if(is_array($params) &amp;amp;&amp;amp; count($params) &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			$params_str = http_build_query($params);&lt;br /&gt;
		}&lt;br /&gt;
		if($rest=='POST')&lt;br /&gt;
		{&lt;br /&gt;
			// on rentre le nom de paramètre présent dans la requête&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;
		{&lt;br /&gt;
			$url .= (strpos($url,'?') === false ? '?' : '&amp;amp;').$params_str;&lt;br /&gt;
		}&lt;br /&gt;
			&lt;br /&gt;
		// On ajoute l'url&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;
		// on vire les en-tête HTTP pour avoir directement le retour&lt;br /&gt;
		curl_setopt($ch, CURLOPT_HEADER, false);&lt;br /&gt;
	   &lt;br /&gt;
		// exécution de la requête&lt;br /&gt;
		$data = curl_exec($ch);&lt;br /&gt;
	   &lt;br /&gt;
		// fermeture de l'objet&lt;br /&gt;
		curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
// retourne la réponse&lt;br /&gt;
		return($data);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Appels API==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//login&lt;br /&gt;
$login = 'mail@test.com';&lt;br /&gt;
//on crypte le mot de passe&lt;br /&gt;
$crypted_password = base64_encode(opensslEncryptPublic('MOT_DE_PASSE_A_CRYPTER'));&lt;br /&gt;
//liste des VM - retour en JSON&lt;br /&gt;
&lt;br /&gt;
//liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
//on génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
//on ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
//on fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsflex/vmlist',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','vm/list',$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
//informations d'une VM - retour en XML&lt;br /&gt;
&lt;br /&gt;
//liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'xml', 'subscr_id' =&amp;gt; 12345);&lt;br /&gt;
//on génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
//on ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
//on fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsflex/vminfo',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','vm/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Erreurs usuelles==&lt;br /&gt;
;Permission Denied&lt;br /&gt;
: Signifie que l'utilisateur utilisé dans l'API n'a pas le droit d'accéder à l'information demandée ou d'effectuer l'action souhaitée.&lt;br /&gt;
;Unable to decrypt password&lt;br /&gt;
: Signifie que le paramètre '''crypted_password''' a été mal crypté ou corrompu.&lt;br /&gt;
;Invalid credentials&lt;br /&gt;
: Signifie que l'authentification a échoué et que l'utilisateur n'est donc pas reconnu.&lt;br /&gt;
;Invalid or missing signature&lt;br /&gt;
: Signifie que la signature n'est pas présente dans les paramètres reçus par l'API, ou que celle-ci est invalide.&lt;br /&gt;
&amp;lt;br /&amp;gt;D'autres remontées d'erreurs sont possibles mais seront contextuelles en fonction de la fonctionnalité souhaitée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Fin de l'article --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Cet article vous a semblé utile ? &amp;lt;vote /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Placez ici la ou les catégories auxquelles se rapporte votre article. Une ligne par catégorie. Ex: &lt;br /&gt;
[[Catégorie:Contribuer]]&lt;br /&gt;
[[Catégorie:Linux]] --&amp;gt;&lt;br /&gt;
[[Catégorie:API]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Gestion SEO. Indiquez les informations manquantes --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=G%C3%A9n%C3%A9ration_de_la_signature&amp;diff=21957</id>
		<title>Génération de la signature</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=G%C3%A9n%C3%A9ration_de_la_signature&amp;diff=21957"/>
		<updated>2016-10-19T09:42:23Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_he_title=&amp;quot;הדור חתימה&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%94%D7%93%D7%95%D7%A8+%D7%97%D7%AA%D7%99%D7%9E%D7%94&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:הדור חתימה]][[he:הדור חתימה]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Generația semnături&amp;quot;  data-link_translate_ro_url=&amp;quot;Genera%C8%9Bia+semn%C4%83turi&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Generația semnături]][[ro:Generația semnături]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Создание подписи&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%B8&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Создание подписи]][[ru:Создание подписи]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Generowanie podpisu&amp;quot;  data-link_translate_pl_url=&amp;quot;Generowanie+podpisu&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Generowanie podpisu]][[pl:Generowanie podpisu]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;署名の生成&amp;quot;  data-link_translate_ja_url=&amp;quot;%E7%BD%B2%E5%90%8D%E3%81%AE%E7%94%9F%E6%88%90&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:署名の生成]][[ja:署名の生成]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;توليد التوقيع&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%AA%D9%88%D9%84%D9%8A%D8%AF+%D8%A7%D9%84%D8%AA%D9%88%D9%82%D9%8A%D8%B9&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:توليد التوقيع]][[ar:توليد التوقيع]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;签名生成&amp;quot;  data-link_translate_zh_url=&amp;quot;%E7%AD%BE%E5%90%8D%E7%94%9F%E6%88%90&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:签名生成]][[zh:签名生成]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;Die Signatur-generation&amp;quot;  data-link_translate_de_url=&amp;quot;Die+Signatur-generation&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:Die Signatur-generation]][[de:Die Signatur-generation]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;De handtekening generatie&amp;quot;  data-link_translate_nl_url=&amp;quot;De+handtekening+generatie&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:De handtekening generatie]][[nl:De handtekening generatie]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;La generazione della firma&amp;quot;  data-link_translate_it_url=&amp;quot;La+generazione+della+firma&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:La generazione della firma]][[it:La generazione della firma]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;A geração de assinatura&amp;quot;  data-link_translate_pt_url=&amp;quot;A+gera%C3%A7%C3%A3o+de+assinatura&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:A geração de assinatura]][[pt:A geração de assinatura]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;La generación de una firma&amp;quot;  data-link_translate_es_url=&amp;quot;La+generaci%C3%B3n+de+una+firma&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:La generación de una firma]][[es:La generación de una firma]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;The signature generation&amp;quot;  data-link_translate_en_url=&amp;quot;The+signature+generation&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:The signature generation]][[en:The signature generation]]&lt;br /&gt;
&amp;lt;!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Lors d'un appel à l'API, comme indiqué dans le Wiki de l'authentification, une signature est obligatoire. Elle est générée '''en fonction de l'ensemble des paramètres fournis lors de l'appel'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Pour des raisons techniques, les paramètres d'authentification doivent ''pour l'instant'' toujours être transmises via la méthode HTTP GET.&lt;br /&gt;
&lt;br /&gt;
==Exemple== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Définition des paramètres&lt;br /&gt;
$data[&amp;quot;login&amp;quot;] = &amp;quot;mail@example.com&amp;quot;;&lt;br /&gt;
$data[&amp;quot;password&amp;quot;] = &amp;quot;dh4=674j_G&amp;quot;; // Mot de passe non chiffré&lt;br /&gt;
// D&amp;quot;autres paramètres peuvent êtres ajoutés en fonction de l&amp;quot;appel à l&amp;quot;API&lt;br /&gt;
// $data[&amp;quot;autre_parametre&amp;quot;] = &amp;quot;valeur&amp;quot;;&lt;br /&gt;
// $data[&amp;quot;autre_parametre_2&amp;quot;] = &amp;quot;valeur_2&amp;quot;;&lt;br /&gt;
// $data[&amp;quot;...&amp;quot;] = &amp;quot;...&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
// Triage des paramètres dans l'ordre croissant&lt;br /&gt;
ksort($data);&lt;br /&gt;
 &lt;br /&gt;
// Encodage des paramètres&lt;br /&gt;
$query = http_build_query($data);&lt;br /&gt;
 &lt;br /&gt;
// Encodage des signes plus&lt;br /&gt;
$query = str_replace(&amp;quot;+&amp;quot;, &amp;quot;%20&amp;quot;, $query);&lt;br /&gt;
 &lt;br /&gt;
// Transformation de la chaîne de caractères en minuscule&lt;br /&gt;
$query = strtolower($query);&lt;br /&gt;
 &lt;br /&gt;
// Clé publique d'Ikoula (cf. lien ci-dessus)&lt;br /&gt;
$public_key=&amp;quot;MIIBIjAN...&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
// Hashage des paramètres&lt;br /&gt;
$hash = hash_hmac(&amp;quot;SHA1&amp;quot;, $query, $public_key, true);&lt;br /&gt;
 &lt;br /&gt;
// Encodage en base64, puis encodage en URL selon RFC 3986&lt;br /&gt;
$signature = rawurlencode(base64_encode($hash));&lt;br /&gt;
 &lt;br /&gt;
// ==&amp;gt; $signature contient alors la signature finale&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Une fois la signature générée, il faut la passer en paramètre (en plus de tous les autres paramètres) à l'appel API.&amp;lt;br /&amp;gt;&lt;br /&gt;
En suivant l'exemple précédent, les paramètres à passer auraient donc été :&amp;lt;br /&amp;gt;&lt;br /&gt;
* login = &amp;quot;mail@example.com&amp;quot; ;&lt;br /&gt;
* password = &amp;quot;dh4=674j_G&amp;quot; ;&lt;br /&gt;
* signature = $signature.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Fin de l'article --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Cet article vous a semblé utile ? &amp;lt;vote /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Placez ici la catégorie à laquelle se rapporte votre article. Ex: [[Catégorie:Contribuer]] --&amp;gt;&lt;br /&gt;
[[Catégorie:API]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Gestion SEO. Indiquez les informations manquantes --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Architectures_REST_%26_WebService&amp;diff=21956</id>
		<title>Architectures REST &amp; WebService</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Architectures_REST_%26_WebService&amp;diff=21956"/>
		<updated>2016-10-19T09:41:02Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_he_title=&amp;quot;ארכיטקטורות WebService ומנוחה&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%90%D7%A8%D7%9B%D7%99%D7%98%D7%A7%D7%98%D7%95%D7%A8%D7%95%D7%AA+WebService+%D7%95%D7%9E%D7%A0%D7%95%D7%97%D7%94&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:ארכיטקטורות WebService ומנוחה]][[he:ארכיטקטורות WebService ומנוחה]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;ODIHNĂ şi WebService arhitecturi&amp;quot;  data-link_translate_ro_url=&amp;quot;ODIHN%C4%82+%C5%9Fi+WebService+arhitecturi&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:ODIHNĂ şi WebService arhitecturi]][[ro:ODIHNĂ şi WebService arhitecturi]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Отдых и WebService архитектуры&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%9E%D1%82%D0%B4%D1%8B%D1%85+%D0%B8+WebService+%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D1%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Отдых и WebService архитектуры]][[ru:Отдых и WebService архитектуры]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Architektury REST i WebService&amp;quot;  data-link_translate_pl_url=&amp;quot;Architektury+REST+i+WebService&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Architektury REST i WebService]][[pl:Architektury REST i WebService]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;休息と web サービスのアーキテクチャ&amp;quot;  data-link_translate_ja_url=&amp;quot;%E4%BC%91%E6%81%AF%E3%81%A8+web+%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:休息と web サービスのアーキテクチャ]][[ja:休息と web サービスのアーキテクチャ]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;أبنية الراحة وخدمة ويب&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%A3%D8%A8%D9%86%D9%8A%D8%A9+%D8%A7%D9%84%D8%B1%D8%A7%D8%AD%D8%A9+%D9%88%D8%AE%D8%AF%D9%85%D8%A9+%D9%88%D9%8A%D8%A8&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:أبنية الراحة وخدمة ويب]][[ar:أبنية الراحة وخدمة ويب]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;休息和 web 服务的体系结构&amp;quot;  data-link_translate_zh_url=&amp;quot;%E4%BC%91%E6%81%AF%E5%92%8C+web+%E6%9C%8D%E5%8A%A1%E7%9A%84%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:休息和 web 服务的体系结构]][[zh:休息和 web 服务的体系结构]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;REST- und WebService-Architekturen&amp;quot;  data-link_translate_de_url=&amp;quot;REST-+und+WebService-Architekturen&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:REST- und WebService-Architekturen]][[de:REST- und WebService-Architekturen]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;RUST en WebService platforms&amp;quot;  data-link_translate_nl_url=&amp;quot;RUST+en+WebService+platforms&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:RUST en WebService platforms]][[nl:RUST en WebService platforms]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;Architetture di resto e WebService&amp;quot;  data-link_translate_it_url=&amp;quot;Architetture+di+resto+e+WebService&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Architetture di resto e WebService]][[it:Architetture di resto e WebService]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;Arquiteturas de descanso e WebService&amp;quot;  data-link_translate_pt_url=&amp;quot;Arquiteturas+de+descanso+e+WebService&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:Arquiteturas de descanso e WebService]][[pt:Arquiteturas de descanso e WebService]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;Arquitecturas de resto y WebService&amp;quot;  data-link_translate_es_url=&amp;quot;Arquitecturas+de+resto+y+WebService&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Arquitecturas de resto y WebService]][[es:Arquitecturas de resto y WebService]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;REST and WebService architectures&amp;quot;  data-link_translate_en_url=&amp;quot;REST+and+WebService+architectures&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:REST and WebService architectures]][[en:REST and WebService architectures]]&lt;br /&gt;
&amp;lt;!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Avec quelle architecture l'API est-elle compatible ?&lt;br /&gt;
&lt;br /&gt;
==Explication==&lt;br /&gt;
L'API Ikoula propose une approche suivant deux architectures : WebService &amp;amp; REST.&lt;br /&gt;
&lt;br /&gt;
==WebService==&lt;br /&gt;
L'architecture WebService s'utilise :&lt;br /&gt;
* Soit en GET (en formatant les paramètres directement dans l'URI) '''obligatoire pour les paramètres d'authentification''' ;&lt;br /&gt;
* Soit en POST (en passant les paramètres en tableau de données) ;&lt;br /&gt;
* Soit en mixant les deux (paramètres présents en GET et en POST).&lt;br /&gt;
&amp;lt;br /&amp;gt;Voici quelques exemples :&lt;br /&gt;
;Lister les VM d'un compte&lt;br /&gt;
: https://api.ikoula.com/index.php?r=wsflex/vmlist&amp;amp;login=mail@example.com&amp;amp;crypted_password=encrypted_password&amp;amp;signature=xxxxxxxxxxxxxxxxxxxxxxxxxxx&lt;br /&gt;
;Récupération des informations d'une VM en utilisant son nom&lt;br /&gt;
: https://api.ikoula.com/index.php?r=wsflex/vminfo&amp;amp;login=mail@example.com&amp;amp;crypted_password=encrypted_password&amp;amp;vm_name=1234hpv56789&amp;amp;signature=xxxxxxxxxxxxxxxxxxxxxxxxxxx&lt;br /&gt;
&lt;br /&gt;
==REST==&lt;br /&gt;
L'architecture REST s'utilise en formatant les paramètres dans l'URI et la méthode HTTP adéquate à l'action désirée.&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici quelques exemples :&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Retourne le statut de la VM &amp;quot;vmid&amp;quot;&lt;br /&gt;
: GET /rest/vm/:vmid&lt;br /&gt;
;Démarre la VM &amp;quot;vmid&amp;quot;&lt;br /&gt;
: POST /rest/vm/:vmid/status/start&lt;br /&gt;
;Supprime le snapshot &amp;quot;snapshotName&amp;quot; de la VM &amp;quot;vmid&amp;quot;&lt;br /&gt;
: DELETE /rest/vm/:vmid/snapshot/:snapshotName&lt;br /&gt;
&lt;br /&gt;
En passant les paramètres d'authentification (voir WIKI sur l'[[Authentification_et_sécurité|Authentification et la sécurité]] pour plus de détails), voici un exemple d'URL :&amp;lt;br /&amp;gt;&lt;br /&gt;
https://api.ikoula.com/rest/vm/list?login=mail@example.com&amp;amp;crypted_password=encrypted_password&amp;amp;signature=xxxxxxxxxxxxxxxxxxxxxxxxxxx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Fin de l'article --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Cet article vous a semblé utile ? &amp;lt;vote /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Placez ici la ou les catégories auxquelles se rapporte votre article. Une ligne par catégorie. Ex: &lt;br /&gt;
[[Catégorie:Contribuer]]&lt;br /&gt;
[[Catégorie:Linux]] --&amp;gt;&lt;br /&gt;
[[Catégorie:API]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Gestion SEO. Indiquez les informations manquantes --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=21955</id>
		<title>Exemples d'utilisation de l'API</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Exemples_d%27utilisation_de_l%27API&amp;diff=21955"/>
		<updated>2016-10-19T09:40:21Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_he_title=&amp;quot;דוגמאות לשימוש ה-API&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%93%D7%95%D7%92%D7%9E%D7%90%D7%95%D7%AA+%D7%9C%D7%A9%D7%99%D7%9E%D7%95%D7%A9+%D7%94-API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:דוגמאות לשימוש ה-API]][[he:דוגמאות לשימוש ה-API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Exemple de utilizare a API&amp;quot;  data-link_translate_ro_url=&amp;quot;Exemple+de+utilizare+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Exemple de utilizare a API]][[ro:Exemple de utilizare a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Примеры использования API&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Примеры использования API]][[ru:Примеры использования API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Przykłady użycia interfejsu API&amp;quot;  data-link_translate_pl_url=&amp;quot;Przyk%C5%82ady+u%C5%BCycia+interfejsu+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Przykłady użycia interfejsu API]][[pl:Przykłady użycia interfejsu API]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;API を使用しての例&amp;quot;  data-link_translate_ja_url=&amp;quot;API+%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%AE%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:API を使用しての例]][[ja:API を使用しての例]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;أمثلة لاستخدام API&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%A3%D9%85%D8%AB%D9%84%D8%A9+%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:أمثلة لاستخدام API]][[ar:أمثلة لاستخدام API]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;使用该 API 的示例&amp;quot;  data-link_translate_zh_url=&amp;quot;%E4%BD%BF%E7%94%A8%E8%AF%A5+API+%E7%9A%84%E7%A4%BA%E4%BE%8B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:使用该 API 的示例]][[zh:使用该 API 的示例]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;Beispiele für die Verwendung der API&amp;quot;  data-link_translate_de_url=&amp;quot;Beispiele+f%C3%BCr+die+Verwendung+der+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:Beispiele für die Verwendung der API]][[de:Beispiele für die Verwendung der API]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;Voorbeelden van het gebruik van de API&amp;quot;  data-link_translate_nl_url=&amp;quot;Voorbeelden+van+het+gebruik+van+de+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Voorbeelden van het gebruik van de API]][[nl:Voorbeelden van het gebruik van de API]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;Esempi di utilizzo dell'API&amp;quot;  data-link_translate_it_url=&amp;quot;Esempi+di+utilizzo+dell%27API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Esempi di utilizzo dell'API]][[it:Esempi di utilizzo dell'API]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;Exemplos de como usar a API&amp;quot;  data-link_translate_pt_url=&amp;quot;Exemplos+de+como+usar+a+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:Exemplos de como usar a API]][[pt:Exemplos de como usar a API]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;Ejemplos de uso de la API&amp;quot;  data-link_translate_es_url=&amp;quot;Ejemplos+de+uso+de+la+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Ejemplos de uso de la API]][[es:Ejemplos de uso de la API]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;Examples of using the API&amp;quot;  data-link_translate_en_url=&amp;quot;Examples+of+using+the+API&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:Examples of using the API]][[en:Examples of using the API]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Comment utiliser l'API à travers quelques exemples concrets et fonctionnels.&lt;br /&gt;
&lt;br /&gt;
==Fonctions pour les exemples==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Chemin local vers la clé publique téléchargée sur http://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem&lt;br /&gt;
define('API_PUB_KEY_PATH', dirname(__FILE__) . '/Ikoula.API.RSAKeyPub.pem');&lt;br /&gt;
&lt;br /&gt;
// Fonction de chiffrement du mot de passe via la clé publique Ikoula&lt;br /&gt;
function opensslEncryptPublic($password)&lt;br /&gt;
{&lt;br /&gt;
	// Vérification de la présence de la clé publique&lt;br /&gt;
	if(file_exists(API_PUB_KEY_PATH))&lt;br /&gt;
	{&lt;br /&gt;
		if(!empty($password))&lt;br /&gt;
		{&lt;br /&gt;
			// on récupère la clé public&lt;br /&gt;
			$publicKey = openssl_pkey_get_public('file://'.realpath(API_PUB_KEY_PATH));&lt;br /&gt;
&lt;br /&gt;
// S'il n'y as pas eu d'erreurs lors de la récupération de la clé publique, on continue&lt;br /&gt;
			if ($publicKey !== FALSE)      &lt;br /&gt;
			{&lt;br /&gt;
				// Si chiffrement clé publique OK&lt;br /&gt;
				if(openssl_public_encrypt($password, $crypted, $publicKey) === TRUE)   &lt;br /&gt;
				{&lt;br /&gt;
					// Renvoie du mot de passe crypté&lt;br /&gt;
					return $crypted;       &lt;br /&gt;
				}&lt;br /&gt;
				else&lt;br /&gt;
				{&lt;br /&gt;
					return NULL;&lt;br /&gt;
				}&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;
	{&lt;br /&gt;
		echo(&amp;quot;Erreur - la clé publique n'est pas présente.\n&amp;quot;);&lt;br /&gt;
		return NULL;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Fontction de création de la signature en fonction des paramètres présents&lt;br /&gt;
function createSignature($params=array())&lt;br /&gt;
{&lt;br /&gt;
    $signature = null;&lt;br /&gt;
&lt;br /&gt;
// Si il y a au moins un paramètre&lt;br /&gt;
    if (count($params) &amp;gt; 0)&lt;br /&gt;
    {&lt;br /&gt;
        //debug('create signature');&lt;br /&gt;
        //debug($params);&lt;br /&gt;
        &lt;br /&gt;
        // Triage des paramètres dans le sens croissant&lt;br /&gt;
        ksort($params);&lt;br /&gt;
        &lt;br /&gt;
        // Encodage des paramètres&lt;br /&gt;
        $query = http_build_query($params);&lt;br /&gt;
&lt;br /&gt;
// Encodage des signes &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;
// Transformation de la chaîne de caractères en minuscule&lt;br /&gt;
        $query = strtolower($query);&lt;br /&gt;
&lt;br /&gt;
$public_key = &amp;quot;&amp;quot;;&lt;br /&gt;
        // Si le fichier existe, on va récupérer la clé&lt;br /&gt;
        if (file_exists(API_PUB_KEY_PATH))&lt;br /&gt;
        {&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(API_PUB_KEY_PATH)&lt;br /&gt;
                        )&lt;br /&gt;
                    );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
// Hashage des paramètres&lt;br /&gt;
        $hash = hash_hmac(&amp;quot;SHA1&amp;quot;, $query, $public_key, true);&lt;br /&gt;
&lt;br /&gt;
// Encodage en base64&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 facilitant l'envoie des requêtes vers l'API Ikoula&lt;br /&gt;
function send_request ($rest, $url_param, $params=array())&lt;br /&gt;
{&lt;br /&gt;
	// initialisation de CURL&lt;br /&gt;
	$ch = curl_init();&lt;br /&gt;
	if($ch)&lt;br /&gt;
	{&lt;br /&gt;
		// Si on a des info on utilise l'api REST sinon on utilise l'api standard (WebService)&lt;br /&gt;
		if($rest)&lt;br /&gt;
			$url = &amp;quot;https://api.ikoula.com/rest/&amp;quot; . $url_param;&lt;br /&gt;
		else &lt;br /&gt;
			$url = &amp;quot;https://api.ikoula.com/?r=&amp;quot; . $url_param;&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
// si on est en REST on rajoute le type d'appel (POST,DELETE,PUT,GET,...) sinon on passe en POST&lt;br /&gt;
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ($rest)?$rest:&amp;quot;POST&amp;quot;);&lt;br /&gt;
		// Si il y a des paramètres on les rajoute dans la requête&lt;br /&gt;
		if(is_array($params) &amp;amp;&amp;amp; count($params) &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			$params_str = http_build_query($params);&lt;br /&gt;
		}&lt;br /&gt;
		if($rest=='POST')&lt;br /&gt;
		{&lt;br /&gt;
			// on rentre le nom de paramètre présent dans la requête&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;
		{&lt;br /&gt;
			$url .= (strpos($url,'?') === false ? '?' : '&amp;amp;').$params_str;&lt;br /&gt;
		}&lt;br /&gt;
			&lt;br /&gt;
		// On ajoute l'url&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;
		// on vire les en-tête HTTP pour avoir directement le retour&lt;br /&gt;
		curl_setopt($ch, CURLOPT_HEADER, false);&lt;br /&gt;
	   &lt;br /&gt;
		// exécution de la requête&lt;br /&gt;
		$data = curl_exec($ch);&lt;br /&gt;
	   &lt;br /&gt;
		// fermeture de l'objet&lt;br /&gt;
		curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
// retourne la réponse&lt;br /&gt;
		return($data);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Appels API==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//login&lt;br /&gt;
$login = 'mail@test.com';&lt;br /&gt;
//on crypte le mot de passe&lt;br /&gt;
$crypted_password = base64_encode(opensslEncryptPublic('MOT_DE_PASSE_A_CRYPTER'));&lt;br /&gt;
//liste des VM - retour en JSON&lt;br /&gt;
&lt;br /&gt;
//liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'json');&lt;br /&gt;
//on génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
//on ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
//on fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsflex/vmlist',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','vm/list',$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
&lt;br /&gt;
//informations d'une VM - retour en XML&lt;br /&gt;
&lt;br /&gt;
//liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)&lt;br /&gt;
$parameters = array('login' =&amp;gt; $login, 'crypted_password' =&amp;gt; $crypted_password, 'format' =&amp;gt; 'xml', 'subscr_id' =&amp;gt; 12345);&lt;br /&gt;
//on génère la signature&lt;br /&gt;
$signature = createSignature($parameters);&lt;br /&gt;
//on ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API&lt;br /&gt;
$parameters['signature'] = $signature;&lt;br /&gt;
//on fait l'appel API&lt;br /&gt;
$data = send_request(false,'wsflex/vminfo',$parameters);&lt;br /&gt;
print_r($data); //appel WebService&lt;br /&gt;
$data2 = send_request('GET','vm/'.$parameters['subscr_id'],$parameters);&lt;br /&gt;
print_r($data2); //appel REST&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Erreurs usuelles==&lt;br /&gt;
;Permission Denied&lt;br /&gt;
: Signifie que l'utilisateur utilisé dans l'API n'a pas le droit d'accéder à l'information demandée ou d'effectuer l'action souhaitée.&lt;br /&gt;
;Unable to decrypt password&lt;br /&gt;
: Signifie que le paramètre '''crypted_password''' a été mal crypté ou corrompu.&lt;br /&gt;
;Invalid credentials&lt;br /&gt;
: Signifie que l'authentification a échoué et que l'utilisateur n'est donc pas reconnu.&lt;br /&gt;
;Invalid or missing signature&lt;br /&gt;
: Signifie que la signature n'est pas présente dans les paramètres reçus par l'API, ou que celle-ci est invalide.&lt;br /&gt;
&amp;lt;br /&amp;gt;D'autres remontées d'erreurs sont possibles mais seront contextuelles en fonction de la fonctionnalité souhaitée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Fin de l'article --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Cet article vous a semblé utile ? &amp;lt;vote /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Placez ici la ou les catégories auxquelles se rapporte votre article. Une ligne par catégorie. Ex: &lt;br /&gt;
[[Catégorie:Contribuer]]&lt;br /&gt;
[[Catégorie:Linux]] --&amp;gt;&lt;br /&gt;
[[Catégorie:API]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Gestion SEO. Indiquez les informations manquantes --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Authentification_et_s%C3%A9curit%C3%A9&amp;diff=21954</id>
		<title>Authentification et sécurité</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Authentification_et_s%C3%A9curit%C3%A9&amp;diff=21954"/>
		<updated>2016-10-19T09:39:18Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_he_title=&amp;quot;אבטחה ואימות&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%90%D7%91%D7%98%D7%97%D7%94+%D7%95%D7%90%D7%99%D7%9E%D7%95%D7%AA&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:אבטחה ואימות]][[he:אבטחה ואימות]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Autentificare și securitate&amp;quot;  data-link_translate_ro_url=&amp;quot;Autentificare+%C8%99i+securitate&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Autentificare și securitate]][[ro:Autentificare și securitate]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Проверка подлинности и безопасность&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0+%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8+%D0%B8+%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Проверка подлинности и безопасность]][[ru:Проверка подлинности и безопасность]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Uwierzytelniania i zabezpieczeń&amp;quot;  data-link_translate_pl_url=&amp;quot;Uwierzytelniania+i+zabezpiecze%C5%84&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Uwierzytelniania i zabezpieczeń]][[pl:Uwierzytelniania i zabezpieczeń]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;認証とセキュリティ&amp;quot;  data-link_translate_ja_url=&amp;quot;%E8%AA%8D%E8%A8%BC%E3%81%A8%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:認証とセキュリティ]][[ja:認証とセキュリティ]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;الأمان والمصادقة&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%A7%D9%84%D8%A3%D9%85%D8%A7%D9%86+%D9%88%D8%A7%D9%84%D9%85%D8%B5%D8%A7%D8%AF%D9%82%D8%A9&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:الأمان والمصادقة]][[ar:الأمان والمصادقة]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;身份验证和安全&amp;quot;  data-link_translate_zh_url=&amp;quot;%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E5%92%8C%E5%AE%89%E5%85%A8&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:身份验证和安全]][[zh:身份验证和安全]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;Authentifizierung und Sicherheit&amp;quot;  data-link_translate_de_url=&amp;quot;Authentifizierung+und+Sicherheit&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:Authentifizierung und Sicherheit]][[de:Authentifizierung und Sicherheit]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;Verificatie en beveiliging&amp;quot;  data-link_translate_nl_url=&amp;quot;Verificatie+en+beveiliging&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Verificatie en beveiliging]][[nl:Verificatie en beveiliging]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;Autenticazione e protezione&amp;quot;  data-link_translate_it_url=&amp;quot;Autenticazione+e+protezione&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Autenticazione e protezione]][[it:Autenticazione e protezione]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;Autenticação e segurança&amp;quot;  data-link_translate_pt_url=&amp;quot;Autentica%C3%A7%C3%A3o+e+seguran%C3%A7a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:Autenticação e segurança]][[pt:Autenticação e segurança]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;Autenticación y seguridad&amp;quot;  data-link_translate_es_url=&amp;quot;Autenticaci%C3%B3n+y+seguridad&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Autenticación y seguridad]][[es:Autenticación y seguridad]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;Authentication and security&amp;quot;  data-link_translate_en_url=&amp;quot;Authentication+and+security&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:Authentication and security]][[en:Authentication and security]]&lt;br /&gt;
&amp;lt;!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Comment s'authentifier à l'API Ikoula et les politiques de {{Template:Sécurité}} ?&lt;br /&gt;
&lt;br /&gt;
==Explications==&lt;br /&gt;
Pour des raisons évidentes de {{Template:Sécurité}}, l'API Ikoula exige une authentification. Celle-ci est basée sur un identifiant, un mot de passe et une signature :&amp;lt;br /&amp;gt;&lt;br /&gt;
* L'identifiant est l'adresse e-mail utilisée pour la connexion à votre compte Ikoula ou à l'extranet. Le nom du paramètre pour le transmettre est toujours  &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''login'''&amp;lt;/span&amp;gt; ;&lt;br /&gt;
* Le mot de passe quant à lui peut être, soit fourni en texte clair (paramètre  &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''password'''&amp;lt;/span&amp;gt;), soit chiffré via une fonction spécifique utilisant une clé publique fournie par Ikoula (paramètre  &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''crypted_password'''&amp;lt;/span&amp;gt;) et base64_encode ;&lt;br /&gt;
* La signature est générée en fonction des paramètres fournis lors de l'appel à l'API (voir la procédure de génération de la signature ==&amp;gt; [[Génération_de_la_signature|Génération de la signature]]).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Ces paramètres doivent toujours être passés en GET à l'API !'''&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;ATTENTION :&amp;lt;br /&amp;gt;&lt;br /&gt;
Le passage du mot de passe en texte clair est fourni pour faciliter la prise en main de l'API et fait office de debug. Pour vos tests de l'API, vous pouvez, par exemple, utiliser un utilisateur temporaire dédié à ces tests et vous authentifier avec son mot de passe en clair (voir le Wiki ci-après pour la création de sous-utilisateur: https://support.ikoula.com/index-1-2-2835.html).&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
L'utilisation du chiffrement de mot de passe avec la clé publique Ikoula est indispensable dans tout contexte de production ou non-court terme.&amp;lt;br /&amp;gt;&lt;br /&gt;
Si les appels API sont voués à être utilisés via un script ou un programme, nous vous recommandons la création d'un utilisateur dédié à cet effet plutôt que d'utiliser votre utilisateur extranet classique.&amp;lt;br /&amp;gt;&lt;br /&gt;
Deux possibilités s'offrent à vous :&amp;lt;br /&amp;gt;&lt;br /&gt;
* Contacter notre support pour la création d'un utilisateur extranet ;&lt;br /&gt;
* Créer un sous-utilisateur directement depuis la page d'accueil de votre compte extranet (Voir le WIKI ci-après pour la création de sous-utilisateur: https://support.ikoula.com/index-1-2-2835.html).&lt;br /&gt;
Attention à ne pas oublier '''de lui mettre les droits sur les prestations souhaitées'''.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
;La clé publique de chiffrement du mot de passe est disponible à l'adresse suivante:&lt;br /&gt;
: https://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem&lt;br /&gt;
&lt;br /&gt;
==Exemples==&lt;br /&gt;
Pour cet exemple, le login sera &amp;quot;ikoulasupport&amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
Pour crypter le mot de passe, voici un exemple de fonction utilisant la clé publique {{Template:IKoula}} :&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Chemin local vers la clef publique téléchargée à http://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem&lt;br /&gt;
define('API_PUB_KEY_PATH', dirname(__FILE__) . '/Ikoula.API.RSAKeyPub.pem');&lt;br /&gt;
 &lt;br /&gt;
// Fonction de cryptage du mot de passe via la clef publique Ikoula&lt;br /&gt;
function opensslEncryptPublic($password)&lt;br /&gt;
{&lt;br /&gt;
        // Vérification de la présence de la clef publique&lt;br /&gt;
        if(file_exists(API_PUB_KEY_PATH))&lt;br /&gt;
        {&lt;br /&gt;
                if(!empty($password))&lt;br /&gt;
                {&lt;br /&gt;
                        // on récupére la clef public&lt;br /&gt;
                        $publicKey = openssl_pkey_get_public('file://'.realpath(API_PUB_KEY_PATH));&lt;br /&gt;
 &lt;br /&gt;
                        // Si il n'y a pas eu d'erreur lors de la récupération de la clef publique on continue&lt;br /&gt;
                        if ($publicKey !== FALSE)      &lt;br /&gt;
                        {&lt;br /&gt;
                                // Si chiffrement clef publique OK&lt;br /&gt;
                                if(openssl_public_encrypt($password, $crypted, $publicKey) === TRUE)   &lt;br /&gt;
                                {&lt;br /&gt;
                                        // Renvoie du passe crypté&lt;br /&gt;
                                        return $crypted;       &lt;br /&gt;
                                }&lt;br /&gt;
                                else&lt;br /&gt;
                                {&lt;br /&gt;
                                        return NULL;&lt;br /&gt;
                                }&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;
        {&lt;br /&gt;
                echo(&amp;quot;Erreur la clée public n'est pas présente.\n&amp;quot;);&lt;br /&gt;
                return NULL;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
// Utilisation de la fonction de cryptage&lt;br /&gt;
$password_crypt = opensslEncryptPublic(&amp;quot;Mot de passe non crypté&amp;quot;);&lt;br /&gt;
if($password_crypt != NULL)&lt;br /&gt;
        echo &amp;quot;OK Mot de passe crypté: &amp;quot;.$password_crypt;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Erreur lors du cryptage du mot de passe.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// ==&amp;gt; $password_crypt contient donc le mot de passe crypté&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Une fois le mot de passe crypté et la signature cryptée, on peut donc faire l'appel API avec comme paramètres (si on suit l'exemple ci-dessus) :&amp;lt;br /&amp;gt;&lt;br /&gt;
* login = ikoulasupport ;&lt;br /&gt;
* crypted_password = base64_encode($password_crypt) ; &lt;br /&gt;
* signature = signature générée (voir la procédure de génération de la signature ==&amp;gt; [[Génération_de_la_signature|Génération de la signature]]).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''NB : N'oubliez pas d'url_encoder chaque paramètre passé !'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Fin de l'article --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Cet article vous a semblé utile ? &amp;lt;vote /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Placez ici la catégorie à laquelle se rapporte votre article. Ex: [[Categorie:Contribuer]] --&amp;gt;&lt;br /&gt;
[[Catégorie:API]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Gestion SEO. Indiquez les informations manquantes --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Authentification_et_s%C3%A9curit%C3%A9&amp;diff=21952</id>
		<title>Authentification et sécurité</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Authentification_et_s%C3%A9curit%C3%A9&amp;diff=21952"/>
		<updated>2016-10-19T09:38:35Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span data-link_translate_he_title=&amp;quot;אבטחה ואימות&amp;quot;  data-link_translate_he_url=&amp;quot;%D7%90%D7%91%D7%98%D7%97%D7%94+%D7%95%D7%90%D7%99%D7%9E%D7%95%D7%AA&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:he:אבטחה ואימות]][[he:אבטחה ואימות]]&lt;br /&gt;
&amp;lt;span data-link_translate_ro_title=&amp;quot;Autentificare și securitate&amp;quot;  data-link_translate_ro_url=&amp;quot;Autentificare+%C8%99i+securitate&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ro:Autentificare și securitate]][[ro:Autentificare și securitate]]&lt;br /&gt;
&amp;lt;span data-link_translate_ru_title=&amp;quot;Проверка подлинности и безопасность&amp;quot;  data-link_translate_ru_url=&amp;quot;%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0+%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8+%D0%B8+%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ru:Проверка подлинности и безопасность]][[ru:Проверка подлинности и безопасность]]&lt;br /&gt;
&amp;lt;span data-link_translate_pl_title=&amp;quot;Uwierzytelniania i zabezpieczeń&amp;quot;  data-link_translate_pl_url=&amp;quot;Uwierzytelniania+i+zabezpiecze%C5%84&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pl:Uwierzytelniania i zabezpieczeń]][[pl:Uwierzytelniania i zabezpieczeń]]&lt;br /&gt;
&amp;lt;span data-link_translate_ja_title=&amp;quot;認証とセキュリティ&amp;quot;  data-link_translate_ja_url=&amp;quot;%E8%AA%8D%E8%A8%BC%E3%81%A8%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ja:認証とセキュリティ]][[ja:認証とセキュリティ]]&lt;br /&gt;
&amp;lt;span data-link_translate_ar_title=&amp;quot;الأمان والمصادقة&amp;quot;  data-link_translate_ar_url=&amp;quot;%D8%A7%D9%84%D8%A3%D9%85%D8%A7%D9%86+%D9%88%D8%A7%D9%84%D9%85%D8%B5%D8%A7%D8%AF%D9%82%D8%A9&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:ar:الأمان والمصادقة]][[ar:الأمان والمصادقة]]&lt;br /&gt;
&amp;lt;span data-link_translate_zh_title=&amp;quot;身份验证和安全&amp;quot;  data-link_translate_zh_url=&amp;quot;%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E5%92%8C%E5%AE%89%E5%85%A8&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:zh:身份验证和安全]][[zh:身份验证和安全]]&lt;br /&gt;
&amp;lt;span data-link_translate_de_title=&amp;quot;Authentifizierung und Sicherheit&amp;quot;  data-link_translate_de_url=&amp;quot;Authentifizierung+und+Sicherheit&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:de:Authentifizierung und Sicherheit]][[de:Authentifizierung und Sicherheit]]&lt;br /&gt;
&amp;lt;span data-link_translate_nl_title=&amp;quot;Verificatie en beveiliging&amp;quot;  data-link_translate_nl_url=&amp;quot;Verificatie+en+beveiliging&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:nl:Verificatie en beveiliging]][[nl:Verificatie en beveiliging]]&lt;br /&gt;
&amp;lt;span data-link_translate_it_title=&amp;quot;Autenticazione e protezione&amp;quot;  data-link_translate_it_url=&amp;quot;Autenticazione+e+protezione&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:it:Autenticazione e protezione]][[it:Autenticazione e protezione]]&lt;br /&gt;
&amp;lt;span data-link_translate_pt_title=&amp;quot;Autenticação e segurança&amp;quot;  data-link_translate_pt_url=&amp;quot;Autentica%C3%A7%C3%A3o+e+seguran%C3%A7a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:pt:Autenticação e segurança]][[pt:Autenticação e segurança]]&lt;br /&gt;
&amp;lt;span data-link_translate_es_title=&amp;quot;Autenticación y seguridad&amp;quot;  data-link_translate_es_url=&amp;quot;Autenticaci%C3%B3n+y+seguridad&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:es:Autenticación y seguridad]][[es:Autenticación y seguridad]]&lt;br /&gt;
&amp;lt;span data-link_translate_en_title=&amp;quot;Authentication and security&amp;quot;  data-link_translate_en_url=&amp;quot;Authentication+and+security&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[:en:Authentication and security]][[en:Authentication and security]]&lt;br /&gt;
&amp;lt;!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Comment s'authentifier à l'API Ikoula et les politiques de {{Template:Sécurité}} ?&lt;br /&gt;
&lt;br /&gt;
==Explications== &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Pour des raisons évidentes de {{Template:Sécurité}}, l'API Ikoula exige une authentification. Celle-ci est basée sur un identifiant, un mot de passe et une signature :&amp;lt;br /&amp;gt;&lt;br /&gt;
* L'identifiant est l'adresse e-mail utilisée pour la connexion à votre compte Ikoula ou à l'extranet. Le nom du paramètre pour le transmettre est toujours  &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''login'''&amp;lt;/span&amp;gt; ;&lt;br /&gt;
* Le mot de passe quant à lui peut être, soit fourni en texte clair (paramètre  &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''password'''&amp;lt;/span&amp;gt;), soit chiffré via une fonction spécifique utilisant une clé publique fournie par Ikoula (paramètre  &amp;lt;span class=&amp;quot;notranslate&amp;quot;&amp;gt;'''crypted_password'''&amp;lt;/span&amp;gt;) et base64_encode ;&lt;br /&gt;
* La signature est générée en fonction des paramètres fournis lors de l'appel à l'API (voir la procédure de génération de la signature ==&amp;gt; [[Génération_de_la_signature|Génération de la signature]]).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Ces paramètres doivent toujours être passés en GET à l'API !'''&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;ATTENTION :&amp;lt;br /&amp;gt;&lt;br /&gt;
Le passage du mot de passe en texte clair est fourni pour faciliter la prise en main de l'API et fait office de debug. Pour vos tests de l'API, vous pouvez, par exemple, utiliser un utilisateur temporaire dédié à ces tests et vous authentifier avec son mot de passe en clair (voir le Wiki ci-après pour la création de sous-utilisateur: https://support.ikoula.com/index-1-2-2835.html).&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
L'utilisation du chiffrement de mot de passe avec la clé publique Ikoula est indispensable dans tout contexte de production ou non-court terme.&amp;lt;br /&amp;gt;&lt;br /&gt;
Si les appels API sont voués à être utilisés via un script ou un programme, nous vous recommandons la création d'un utilisateur dédié à cet effet plutôt que d'utiliser votre utilisateur extranet classique.&amp;lt;br /&amp;gt;&lt;br /&gt;
Deux possibilités s'offrent à vous :&amp;lt;br /&amp;gt;&lt;br /&gt;
* Contacter notre support pour la création d'un utilisateur extranet ;&lt;br /&gt;
* Créer un sous-utilisateur directement depuis la page d'accueil de votre compte extranet (Voir le WIKI ci-après pour la création de sous-utilisateur: https://support.ikoula.com/index-1-2-2835.html).&lt;br /&gt;
Attention à ne pas oublier '''de lui mettre les droits sur les prestations souhaitées'''.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
;La clé publique de chiffrement du mot de passe est disponible à l'adresse suivante:&lt;br /&gt;
: https://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem&lt;br /&gt;
&lt;br /&gt;
==Exemples== &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Pour cet exemple, le login sera &amp;quot;ikoulasupport&amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
Pour crypter le mot de passe, voici un exemple de fonction utilisant la clé publique {{Template:IKoula}} :&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Chemin local vers la clef publique téléchargée à http://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem&lt;br /&gt;
define('API_PUB_KEY_PATH', dirname(__FILE__) . '/Ikoula.API.RSAKeyPub.pem');&lt;br /&gt;
 &lt;br /&gt;
// Fonction de cryptage du mot de passe via la clef publique Ikoula&lt;br /&gt;
function opensslEncryptPublic($password)&lt;br /&gt;
{&lt;br /&gt;
        // Vérification de la présence de la clef publique&lt;br /&gt;
        if(file_exists(API_PUB_KEY_PATH))&lt;br /&gt;
        {&lt;br /&gt;
                if(!empty($password))&lt;br /&gt;
                {&lt;br /&gt;
                        // on récupére la clef public&lt;br /&gt;
                        $publicKey = openssl_pkey_get_public('file://'.realpath(API_PUB_KEY_PATH));&lt;br /&gt;
 &lt;br /&gt;
                        // Si il n'y a pas eu d'erreur lors de la récupération de la clef publique on continue&lt;br /&gt;
                        if ($publicKey !== FALSE)      &lt;br /&gt;
                        {&lt;br /&gt;
                                // Si chiffrement clef publique OK&lt;br /&gt;
                                if(openssl_public_encrypt($password, $crypted, $publicKey) === TRUE)   &lt;br /&gt;
                                {&lt;br /&gt;
                                        // Renvoie du passe crypté&lt;br /&gt;
                                        return $crypted;       &lt;br /&gt;
                                }&lt;br /&gt;
                                else&lt;br /&gt;
                                {&lt;br /&gt;
                                        return NULL;&lt;br /&gt;
                                }&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;
        {&lt;br /&gt;
                echo(&amp;quot;Erreur la clée public n'est pas présente.\n&amp;quot;);&lt;br /&gt;
                return NULL;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
// Utilisation de la fonction de cryptage&lt;br /&gt;
$password_crypt = opensslEncryptPublic(&amp;quot;Mot de passe non crypté&amp;quot;);&lt;br /&gt;
if($password_crypt != NULL)&lt;br /&gt;
        echo &amp;quot;OK Mot de passe crypté: &amp;quot;.$password_crypt;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Erreur lors du cryptage du mot de passe.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// ==&amp;gt; $password_crypt contient donc le mot de passe crypté&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conclusion== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Une fois le mot de passe crypté et la signature cryptée, on peut donc faire l'appel API avec comme paramètres (si on suit l'exemple ci-dessus) :&amp;lt;br /&amp;gt;&lt;br /&gt;
* login = ikoulasupport ;&lt;br /&gt;
* crypted_password = base64_encode($password_crypt) ; &lt;br /&gt;
* signature = signature générée (voir la procédure de génération de la signature ==&amp;gt; [[Génération_de_la_signature|Génération de la signature]]).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''NB : N'oubliez pas d'url_encoder chaque paramètre passé !'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Fin de l'article --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Cet article vous a semblé utile ? &amp;lt;vote /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Placez ici la catégorie à laquelle se rapporte votre article. Ex: [[Categorie:Contribuer]] --&amp;gt;&lt;br /&gt;
[[Catégorie:API]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Gestion SEO. Indiquez les informations manquantes --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Mod%C3%A8le:Domaine&amp;diff=14422</id>
		<title>Modèle:Domaine</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Mod%C3%A8le:Domaine&amp;diff=14422"/>
		<updated>2015-12-04T15:35:20Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : Page créée avec « [https://express.ikoula.com/fr/nom-de-domaine domaine] »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://express.ikoula.com/fr/nom-de-domaine domaine]&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Acc%C3%A9der_aux_vues_de_CRM_gr%C3%A2ce_%C3%A0_un_utilisateur_SQL_local&amp;diff=11762</id>
		<title>Accéder aux vues de CRM grâce à un utilisateur SQL local</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Acc%C3%A9der_aux_vues_de_CRM_gr%C3%A2ce_%C3%A0_un_utilisateur_SQL_local&amp;diff=11762"/>
		<updated>2015-10-28T16:25:17Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : Accéder aux vues de CRM grâce à un utilisateur SQL local&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Cette article va vous informer sur comment accéder aux vues de &amp;lt;span class='notranslate'&amp;gt;CRM&amp;lt;/span&amp;gt; (&amp;lt;span class='notranslate'&amp;gt;FilteredNameView&amp;lt;/span&amp;gt;) en utilisant un compte local sur le serveur &amp;lt;span class='notranslate'&amp;gt;SQL&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Pré-requis== &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Pour pouvoir accéder à ces vues, il vous faut:&lt;br /&gt;
&lt;br /&gt;
* Un utilisateur &amp;lt;span class='notranslate'&amp;gt;Active Directory&amp;lt;/span&amp;gt; dédié à &amp;lt;span class='notranslate'&amp;gt;CRM&amp;lt;/span&amp;gt;&lt;br /&gt;
* Un compte local sur &amp;lt;span class='notranslate'&amp;gt;SQL Server&amp;lt;/span&amp;gt; dédié à cette tâche&lt;br /&gt;
* Un accès au compte Super Administrateur de &amp;lt;span class='notranslate'&amp;gt;SQL Server&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Problèmatique== &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;span class='notranslate'&amp;gt;CRM&amp;lt;/span&amp;gt; bloque l'utilisation des vues si l’utilisateur n'a pas le rôle de lecture, donc l'utilisateur local ne fonctionne pas, ainsi que le compte Super Administrateur du serveur &amp;lt;span class='notranslate'&amp;gt;SQL&amp;lt;/span&amp;gt;. C'est une sécurité intégrée à &amp;lt;span class='notranslate'&amp;gt;CRM&amp;lt;/span&amp;gt;. Il faut partie du domaine et être inséré dans &amp;lt;span class='notranslate'&amp;gt;CRM&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Procédure== &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Pour avoir accès aux vues, il faut ajouter une procédure &amp;lt;span class='notranslate'&amp;gt;SQL&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Voici la procédure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SET ANSI_NULLS ON&lt;br /&gt;
GO&lt;br /&gt;
SET QUOTED_IDENTIFIER ON&lt;br /&gt;
GO&lt;br /&gt;
CREATE PROCEDURE AccessViewCRMLocal&lt;br /&gt;
AS&lt;br /&gt;
BEGIN&lt;br /&gt;
    EXEC sp_addrolemember N'CRMReaderRole', N'VOTRE_UTILISATEUR_LOCAL'&lt;br /&gt;
    DECLARE @uid uniqueidentifier&lt;br /&gt;
    SELECT @uid = SystemUserId FROM dbo.SystemUserBase WHERE FullName = 'LE_NOM_DU_COMPTE_CRM'&lt;br /&gt;
    SET CONTEXT_INFO @uid&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut exécuter cette procédure avec le compte Super Administrateur afin qu'elle soit crée sur le serveur &amp;lt;span class='notranslate'&amp;gt;SQL&amp;lt;/span&amp;gt; de &amp;lt;span class='notranslate'&amp;gt;CRM&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Exemple: Accéder au contenu des vues grâce à &amp;lt;span class='notranslate'&amp;gt;PHP&amp;lt;/span&amp;gt;== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Cet exemple va vous permettre d'accéder aux comptes stockés dans &amp;lt;span class='notranslate'&amp;gt;CRM&amp;lt;/span&amp;gt; via le &amp;lt;span class='notranslate'&amp;gt;Framework Yii&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// On stocke la connexion à CRM via le handler de connexion de Yii&lt;br /&gt;
$connexionCrm = Yii::app()-&amp;gt;db_crm;&lt;br /&gt;
&lt;br /&gt;
// On éxécute la procédure pour avoir accès aux vues&lt;br /&gt;
$connexionCrm-&amp;gt;createCommand(&amp;quot;EXECUTE AccessViewCRMLocal&amp;quot;)-&amp;gt;execute();&lt;br /&gt;
&lt;br /&gt;
// On récupère les comptes stockés dans CRM&lt;br /&gt;
$query = &amp;quot;SELECT accountid, name, address1_addresstypecode, address1_city, address1_line1, address1_line2, address1_line3 FROM FilteredAccount&amp;quot;&lt;br /&gt;
$accounts = $connexionCrm-&amp;gt;createCommand($query)-&amp;gt;queryAll();&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vos comptes client sont désormais dans la variable &amp;lt;span class='notranslate'&amp;gt;$accounts&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Conclusion== &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Grâce à cet article, vous pourrez désormais accéder aux vues dans  &amp;lt;span class='notranslate'&amp;gt;CRM&amp;lt;/span&amp;gt;, et ainsi éviter de refaire les jointures faites de base.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Fin de l'article --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Cet article vous a semblé utile ? &amp;lt;vote /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commentaire --&amp;gt;&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Placez ci-dessous la ou les catégories auxquelles se rapporte votre article. Ex: [[Catégorie:CRM]] --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
	<entry>
		<id>https://fr-wiki.ikoula.com/index.php?title=Acc%C3%A9der_%C3%A0_l%27API_REST_de_CRM_2015_On-Premise_en_PHP&amp;diff=11700</id>
		<title>Accéder à l'API REST de CRM 2015 On-Premise en PHP</title>
		<link rel="alternate" type="text/html" href="https://fr-wiki.ikoula.com/index.php?title=Acc%C3%A9der_%C3%A0_l%27API_REST_de_CRM_2015_On-Premise_en_PHP&amp;diff=11700"/>
		<updated>2015-10-20T16:05:43Z</updated>

		<summary type="html">&lt;p&gt;Mschmit52a93 : Accéder à l'API REST de CRM 2015 On-Premise en PHP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Cette article va vous permettre d’accéder à l'&amp;lt;span class='notranslate'&amp;gt;API&amp;lt;/span&amp;gt; &amp;lt;span class='notranslate'&amp;gt;REST&amp;lt;/span&amp;gt; de &amp;lt;span class='notranslate'&amp;gt;CRM&amp;lt;/span&amp;gt; 2015 On-Premise avec le langage &amp;lt;span class='notranslate'&amp;gt;PHP&amp;lt;/span&amp;gt;. Il faut que votre &amp;lt;span class='notranslate'&amp;gt;CRM&amp;lt;/span&amp;gt; soit relié avec &amp;lt;span class='notranslate'&amp;gt;Active DIrectory&amp;lt;/span&amp;gt; et être en possession du nom de votre organisation sur &amp;lt;span class='notranslate'&amp;gt;CRM&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Définir ses variables de travail== &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// CRM Server&lt;br /&gt;
define('CRM_SERVER', 'NOM_DU_SERVEUR_CRM');&lt;br /&gt;
&lt;br /&gt;
// CRM Organization&lt;br /&gt;
define('CRM_ORG_NAME', 'NOM_DE_LORGANISATION');&lt;br /&gt;
&lt;br /&gt;
// CRM WSDL&lt;br /&gt;
define('CRM_WSDL', 'http://'.CRM_SERVER.'/'.CRM_ORG_NAME.'/XRMServices/2011/OrganizationData.svc');&lt;br /&gt;
&lt;br /&gt;
// Active Directory&lt;br /&gt;
define('AD_DOMAIN_CONTROLER', &amp;quot;NOM_DU_SERVEUR_AD&amp;quot;);&lt;br /&gt;
define(&amp;quot;NTLM_LOGIN&amp;quot;, &amp;quot;User&amp;quot;);&lt;br /&gt;
define(&amp;quot;NTLM_PASSWORD&amp;quot;, &amp;quot;password&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Récupérer des informations== &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur cette exemple, on va récupérer des informations sur un compte.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// On crée l'URL de l'API REST&lt;br /&gt;
$url = CRM_WSDL.&amp;quot;/AccountSet(guid'GUID_DU_COMPTE')&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// On initialise notre connexion à l'API&lt;br /&gt;
$ch = curl_init();&lt;br /&gt;
curl_setopt($ch, CURLOPT_USERPWD, NTLM_LOGIN. ':' . NTLM_PASSWORD);&lt;br /&gt;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);&lt;br /&gt;
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);&lt;br /&gt;
curl_setopt($ch, CURLOPT_URL, $url);&lt;br /&gt;
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);&lt;br /&gt;
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);&lt;br /&gt;
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);&lt;br /&gt;
curl_setopt($ch, CURLINFO_HEADER_OUT, true);&lt;br /&gt;
curl_setopt($ch, CURLOPT_FAILONERROR, 0);&lt;br /&gt;
curl_setopt($ch, CURLOPT_MAXREDIRS, 100);&lt;br /&gt;
				&lt;br /&gt;
// On crée nos headers&lt;br /&gt;
$headers = array(&amp;quot;Content-Type:application/json; charset=utf-8&amp;quot;, &amp;quot;Accept:application/json&amp;quot;);&lt;br /&gt;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);&lt;br /&gt;
								&lt;br /&gt;
// On récupère le contenu&lt;br /&gt;
$account = curl_exec($ch);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Grâce à ceci, vous récupérez votre compte en données &amp;lt;span class='notranslate'&amp;gt;JSON&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mettre à jour des informations== &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur cette exemple, on va mettre à jour l'email sur un compte.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// On crée notre objet à mettre à  jour&lt;br /&gt;
$account = array();&lt;br /&gt;
$account['EMailAddress1']  = &amp;quot;adresse@domain.tld&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// On encode en JSON&lt;br /&gt;
$account = json_encode($account);&lt;br /&gt;
&lt;br /&gt;
// On crée l'URL de l'API REST&lt;br /&gt;
$url = CRM_WSDL.&amp;quot;/AccountSet(guid'GUID_DU_COMPTE')&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// On initialise notre connexion à l'API&lt;br /&gt;
$ch = curl_init();&lt;br /&gt;
curl_setopt($ch, CURLOPT_USERPWD, NTLM_LOGIN. ':' . NTLM_PASSWORD);&lt;br /&gt;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);&lt;br /&gt;
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);&lt;br /&gt;
curl_setopt($ch, CURLOPT_URL, $url);&lt;br /&gt;
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);&lt;br /&gt;
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);&lt;br /&gt;
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);&lt;br /&gt;
curl_setopt($ch, CURLINFO_HEADER_OUT, true);&lt;br /&gt;
curl_setopt($ch, CURLOPT_FAILONERROR, 0);&lt;br /&gt;
curl_setopt($ch, CURLOPT_MAXREDIRS, 100);&lt;br /&gt;
curl_setopt($ch, CURLOPT_POST, 1);&lt;br /&gt;
&lt;br /&gt;
// On crée nos headers&lt;br /&gt;
$headers = array(&amp;quot;X-HTTP-Method: MERGE&amp;quot;, &amp;quot;Content-Type:application/json; charset=utf-8&amp;quot;, &amp;quot;Accept:application/json&amp;quot;);&lt;br /&gt;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);&lt;br /&gt;
		&lt;br /&gt;
// On l'envoi via CURL&lt;br /&gt;
curl_setopt($ch, CURLOPT_POSTFIELDS, $account);&lt;br /&gt;
&lt;br /&gt;
// On récupère le contenu&lt;br /&gt;
$response = curl_exec($ch);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Code de retour de l'&amp;lt;span class='notranslate'&amp;gt;API&amp;lt;/span&amp;gt;== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lors d'une erreur, l'&amp;lt;span class='notranslate'&amp;gt;API&amp;lt;/span&amp;gt; renvoie un tableau en &amp;lt;span class='notranslate'&amp;gt;JSON&amp;lt;/span&amp;gt; avec le code d'erreur et l'erreur pour aider lors du debug. Lors d'une mise à jour ou d'une suppression, si tout c'est correctement passé, l'&amp;lt;span class='notranslate'&amp;gt;API&amp;lt;/span&amp;gt; renvoie une variable égale à &amp;lt;span class='notranslate'&amp;gt;NULL&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Conclusion== &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Grâce à cet article, vous pouvez désormais vous connecter à l'&amp;lt;span class='notranslate'&amp;gt;API&amp;lt;/span&amp;gt; de &amp;lt;span class='notranslate'&amp;gt;CRM&amp;lt;/span&amp;gt; 2015 pour y faire de la consultation ou de la modification.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Fin de l'article --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Cet article vous a semblé utile ? &amp;lt;vote /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commentaire --&amp;gt;&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Placez ci-dessous la ou les catégories auxquelles se rapporte votre article. Ex: [[Catégorie:Contribuer]] [[Catégorie:Linux]] --&amp;gt;&lt;br /&gt;
[[Catégorie:CRM]]&lt;/div&gt;</summary>
		<author><name>Mschmit52a93</name></author>
	</entry>
</feed>