OK Intégrer OKLÉON

1 · Se brancher

Deux appels suffisent pour savoir où l'on met les pieds : /ping dit si la clé est bonne, /espace dit ce que cet espace ouvre à cette clé. Le résultat ci-dessous est obtenu à l'instant, en direct.

GET /ping 200

Clé
Integration OKLEON
Arrivée par
integration_okleon
Portées
biens:read · locataires:read · proprietaires:read · occupations:read · artisans:read · sinistres:read · types:read · permis:read

La clé elle-même n'est jamais affichée : elle ne quitte pas le serveur.

GET /espace 200

Espace
Agence Test Immobilier bac à sable
Collections lisibles
artisans · biens · devis · locataires · occupations · permis · proprietaires · sinistres · types
Quota
120 appels / minute · 20 000 / jour
Écriture
ouverte
Statut d'un dossier
déduit — il ne se pose pas

À retenir

Le code qui a fait ces appels — src/ClientOkleon.php
/**
 * GET sur une route de l'API. Rend le JSON décodé.
 * Lève une ErreurOkleon si l'API répond une erreur.
 */
public function get(string $route, array $params = []): array
{
    $url = rtrim($this->base, '/') . $route;
    if ($params) $url .= '?' . http_build_query($params);
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 15,
        CURLOPT_HTTPHEADER     => [
            // X-Api-Key plutôt qu'Authorization : certains hébergements PHP
            // retirent l'en-tête Authorization en route. X-Api-Key ne dépend
            // d'aucun réglage serveur — c'est le choix qui marche partout.
            'X-Api-Key: ' . $this->cle,
            'Accept: application/json',
            'User-Agent: okleon-demo-integration/1.0',
        ],
    ]);
    $corps  = curl_exec($ch);
    $http   = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $reseau = curl_error($ch);
    $this->appels++;
    if ($corps === false || $reseau !== '') {
        throw new ErreurOkleon('reseau', 'Réseau : ' . $reseau, 0);
    }
    $json = json_decode((string)$corps, true);
    // Toutes les erreurs de l'API ont la même forme : { "error": { "code", "message" } }.
    // ⭐ Se brancher sur le CODE, jamais sur le message : le code est un contrat,
    // le message peut être reformulé.
    if ($http >= 400) {
        $code = (string)($json['error']['code'] ?? 'http_' . $http);
        $msg  = (string)($json['error']['message'] ?? 'Erreur HTTP ' . $http);
        throw new ErreurOkleon($code, $msg, $http);
    }
    if (!is_array($json)) {
        throw new ErreurOkleon('reponse_illisible', 'Réponse qui n\'est pas du JSON.', $http);
    }
    return $json;
}