Aller au contenu principal

Vue d'ensemble des SDKs

Les SDKs officiels Infoparcelle simplifient l'intégration de l'API dans vos applications en gérant automatiquement l'authentification, la pagination, les erreurs et le rate limiting.

SDKs disponibles

MCP Server

License: MIT TypeScript MCP

Serveur MCP (Model Context Protocol) permettant aux LLMs (Claude, ChatGPT, etc.) d'accéder directement aux données Infoparcelle via 14 outils spécialisés.

Deux méthodes d'utilisation :

  1. MCP Hébergé : Utilisez notre serveur hébergé via OAuth2 (aucune installation requise)
  2. Auto-hébergé : Installez votre propre instance avec clé API
# Auto-hébergement
git clone https://github.com/Rootsud/Infoparcelle-MCP.git
cd Infoparcelle-MCP
npm install
npm run build

Exemple d'utilisation dans Claude :

Trouve-moi des terrains constructibles de plus de 1000m²
dans le département 69 avec un bon accès

Fonctionnalités :

  • ✅ 14 outils MCP (géocodage, parcelles, DVF, DPE, PLU, permis, etc.)
  • ✅ Compatible Claude Desktop, ChatGPT et tous les clients MCP
  • ✅ Mode hébergé (OAuth2) ou auto-hébergé (clé API)
  • ✅ Support HTTP et stdio
  • ✅ Authentification automatique et retry
  • ✅ Accès à toutes les données Infoparcelle

Prérequis :

  • Node.js >= 18.0.0 (pour auto-hébergement)
  • Compte Infoparcelle avec clé API ou OAuth2

Dépôt GitHub : Rootsud/Infoparcelle-MCP

Documentation complète : Guide MCP

PHP SDK

PHP Version License

SDK PHP moderne pour l'API Infoparcelle - Accédez facilement aux données foncières, cadastrales et immobilières françaises.

composer require infoparcelle/php-sdk

Exemple de base :

<?php
use Infoparcelle\InfoparcelleClient;

$client = new InfoparcelleClient('VOTRE_CLE_API');

// Recherche d'adresse
$adresses = $client->geocoding()->search('7 Rue de l\'Elysée Paris');

foreach ($adresses as $adresse) {
echo $adresse->adresseComplete . "\n";
}

// Recherche de parcelles
$parcelles = $client->parcelles()->search([
'code_departement' => '75',
'superficie_min' => 500,
]);

Fonctionnalités :

  • ✅ PHP 8.1+ avec types stricts
  • ✅ PSR-4, PSR-7, PSR-18 compliant
  • ✅ DTOs typés et orienté objet
  • ✅ Pagination automatique par curseur
  • ✅ Gestion d'erreurs avec exceptions détaillées
  • ✅ Client HTTP optimisé (Guzzle 7)
  • ✅ Documentation PHPDoc complète

Prérequis :

  • PHP 8.1 ou supérieur
  • Extension JSON
  • Composer

Dépôt GitHub : Rootsud/Infoparcelle-SDK-PHP

JavaScript/TypeScript SDK

npm version License: MIT TypeScript

SDK JavaScript/TypeScript moderne pour l'API Infoparcelle - Compatible Node.js et navigateurs.

npm install @infoparcelle/sdk
# ou
yarn add @infoparcelle/sdk
# ou
pnpm add @infoparcelle/sdk

Exemple de base :

import { InfoparcelleClient } from '@infoparcelle/sdk';

const client = new InfoparcelleClient('VOTRE_CLE_API');

// Recherche d'adresse
const adresses = await client.geocoding.search({
recherche: "7 Rue de l'Elysée Paris",
limite: 10,
});

// Recherche de parcelles
const parcelles = await client.parcelles.search({
filters: {
code_departement: '75',
superficie_min: 500,
},
limite: 20,
});

Fonctionnalités :

  • ✅ TypeScript avec types stricts
  • ✅ Compatible Node.js ET navigateurs
  • ✅ Tree-shakeable (bundle minimal ~15kb)
  • ✅ Zero dépendances (utilise Fetch API native)
  • ✅ Pagination automatique par curseur
  • ✅ Retry automatique avec backoff
  • ✅ Exceptions typées et informatives
  • ✅ Documentation TSDoc complète

Prérequis :

  • Node.js >= 18.0.0 ou navigateur moderne avec support Fetch
  • TypeScript >= 5.0.0 (pour développement)

Dépôt GitHub : Rootsud/Infoparcelle-SDK-TS

Comparaison des SDKs

FonctionnalitéMCP ServerPHPJavaScript/TypeScript
Authentification✅ OAuth2/API Key
Pagination auto
Retry auto
Types stricts✅ TypeScript
Async/await
Support navigateur
Compatible LLMs✅ Claude, ChatGPT
Mode hébergé
Installation requise❌ (mode hébergé)
DTOs/Types
Zero dépendances
Taille bundleN/AN/A~15kb gzippé

Avantages des SDKs

1. Simplicité d'utilisation

Sans SDK :

// Gérer manuellement l'authentification, les erreurs, la pagination...
const response = await fetch(
'https://app.infoparcelle.fr/api/v1/geocoder/search?recherche=1+Rue+de+Rivoli',
{
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
}
);

if (!response.ok) {
const error = await response.json();
throw new Error(error.message);
}

const data = await response.json();
// Gérer la pagination, les curseurs, etc.

Avec SDK :

// Tout est géré automatiquement
const adresses = await client.geocoding.search({ recherche: '1 Rue de Rivoli' });

2. Gestion automatique des erreurs

Les SDKs lancent des exceptions typées pour chaque type d'erreur.

TypeScript/JavaScript :

import {
InfoparcelleClient,
RateLimitError,
ResourceNotFoundError,
AuthenticationError,
QuotaExceededError,
} from '@infoparcelle/sdk';

try {
const parcelle = await client.parcelles.get('010040000B0064');
} catch (error) {
if (error instanceof ResourceNotFoundError) {
console.error('Ressource non trouvée');
} else if (error instanceof RateLimitError) {
console.error(`Réessayez dans ${error.retryAfter}s`);
} else if (error instanceof AuthenticationError) {
console.error('Clé API invalide');
} else if (error instanceof QuotaExceededError) {
console.error('Quota épuisé');
}
}

PHP :

use Infoparcelle\Exceptions\RateLimitException;
use Infoparcelle\Exceptions\ResourceNotFoundException;
use Infoparcelle\Exceptions\QuotaExceededException;
use Infoparcelle\Exceptions\ApiException;

try {
$parcelle = $client->parcelles()->find('010040000B0064');
} catch (ResourceNotFoundException $e) {
echo "Ressource non trouvée\n";
} catch (RateLimitException $e) {
$retryAfter = $e->getRetryAfter();
echo "Limite dépassée, réessayez dans {$retryAfter}s\n";
} catch (QuotaExceededException $e) {
echo "Quota épuisé\n";
} catch (ApiException $e) {
echo "Erreur API: {$e->getMessage()}\n";
}

3. Pagination transparente

TypeScript/JavaScript :

const parcelles = await client.parcelles.search({
filters: { code_departement: '75' },
limite: 50,
});

console.log(`Résultats: ${parcelles.length}`);
console.log(`Plus de résultats: ${parcelles.hasMore}`);

if (parcelles.hasMore) {
const nextPage = await client.parcelles.search({
filters: { code_departement: '75' },
curseur: parcelles.nextCursor,
limite: 50,
});
}

PHP :

$parcelles = $client->parcelles()->search(
filters: ['code_departement' => '75'],
limite: 50
);

echo "Page 1: {$parcelles->count()} résultats\n";

if ($parcelles->hasNextPage()) {
$nextCursor = $parcelles->getNextCursor();
$nextPage = $client->parcelles()->search(
filters: ['code_departement' => '75'],
limite: 50,
curseur: $nextCursor
);
}

4. Types et autocomplétion

Les SDKs TypeScript et PHP offrent une autocomplétion complète et une vérification de types.

TypeScript :

import { InfoparcelleClient, Geometrie, OrdreTri } from '@infoparcelle/sdk';

const client = new InfoparcelleClient('VOTRE_CLE_API');

// Autocomplétion complète des paramètres
const parcelles = await client.parcelles.search({
filters: {
code_departement: '75',
superficie_min: 500,
},
geometrie: Geometrie.CONTOUR, // Enum typé
ordre_tri: OrdreTri.DESC,
limite: 20,
});

PHP :

use Infoparcelle\Enums\Geometrie;
use Infoparcelle\Enums\OrdreTri;

// Types stricts et autocomplétion IDE
$parcelles = $client->parcelles()->search(
filters: [
'code_departement' => '75',
'superficie_min' => 500,
],
geometrie: Geometrie::CONTOUR,
ordreTri: OrdreTri::DESC,
limite: 20
);

5. Retry automatique

En cas d'erreur temporaire (429, 500, 503), les SDKs réessaient automatiquement avec backoff exponentiel.

TypeScript/JavaScript :

const client = new InfoparcelleClient({
apiKey: 'VOTRE_CLE_API',
maxRetries: 3,
timeout: 30000,
});

// Réessaie automatiquement jusqu'à 3 fois
const parcelles = await client.parcelles.search({
filters: { code_departement: '75' },
});

PHP :

use Infoparcelle\Config\Configuration;

$config = new Configuration(
apiKey: 'VOTRE_CLE_API',
timeout: 30,
maxRetries: 3
);

$client = new InfoparcelleClient($config);

// Retry automatique géré par le client
$parcelles = $client->parcelles()->search(['code_departement' => '75']);

Installation rapide

PHP

Installez le SDK via Composer :

composer require infoparcelle/php-sdk

Configuration :

use Infoparcelle\InfoparcelleClient;
use Infoparcelle\Config\Configuration;

// Configuration simple
$client = new InfoparcelleClient('VOTRE_CLE_API');

// Configuration avancée
$config = new Configuration(
apiKey: 'VOTRE_CLE_API',
baseUrl: 'https://app.infoparcelle.fr',
timeout: 30,
connectTimeout: 10,
maxRetries: 3
);
$client = new InfoparcelleClient($config);

JavaScript/TypeScript

Installez le SDK via npm, yarn ou pnpm :

npm install @infoparcelle/sdk
# ou
yarn add @infoparcelle/sdk
# ou
pnpm add @infoparcelle/sdk

Configuration :

import { InfoparcelleClient } from '@infoparcelle/sdk';

// Configuration simple
const client = new InfoparcelleClient('VOTRE_CLE_API');

// Configuration avancée
const client = new InfoparcelleClient({
apiKey: 'VOTRE_CLE_API',
baseUrl: 'https://app.infoparcelle.fr',
timeout: 30000,
maxRetries: 3,
});

Exemples d'utilisation

Géocodage

JavaScript/TypeScript :

// Recherche d'adresse
const adresses = await client.geocoding.search({
recherche: "7 Rue de l'Elysée Paris",
limite: 10,
});

for (const adresse of adresses) {
console.log(adresse.adresse_complete);
console.log(`GPS: ${adresse.latitude}, ${adresse.longitude}`);
}

// Géocodage inverse
const adresse = await client.geocoding.reverse({
latitude: 48.8584,
longitude: 2.2945,
});

PHP :

// Recherche d'adresse
$adresses = $client->geocoding()->search('7 Rue de l\'Elysée Paris');

foreach ($adresses as $adresse) {
echo $adresse->adresseComplete . "\n";
echo "GPS: {$adresse->getLatitude()}, {$adresse->getLongitude()}\n";
}

// Géocodage inverse
$parcelles = $client->geocoding()->reverse(48.8584, 2.2945);

Recherche de parcelles

JavaScript/TypeScript :

// Recherche avancée
const parcelles = await client.parcelles.search({
filters: {
code_departement: '75',
superficie_min: 500,
avec_batiment: true,
},
geometrie: Geometrie.CENTRE,
ordre_tri: OrdreTri.DESC,
limite: 20,
});

// Par référence cadastrale
const results = await client.parcelles.findByReference('75056', 'AK', '0042');

// Par proximité
const nearby = await client.parcelles.findNearby(
48.8584,
2.2945,
500, // rayon en mètres
{ avec_batiment: true }
);

PHP :

// Recherche avancée
$parcelles = $client->parcelles()->search(
filters: [
'code_departement' => '75',
'superficie_min' => 500,
'avec_batiment' => true,
],
geometrie: Geometrie::CENTRE,
ordreTri: OrdreTri::DESC,
limite: 20
);

// Par référence cadastrale
$parcelles = $client->parcelles()->findByReference(
codeCommune: '75056',
section: 'AK',
numero: '0042'
);

// Par proximité
$parcelles = $client->parcelles()->findNearby(
latitude: 48.8584,
longitude: 2.2945,
rayon: 500,
additionalFilters: ['avec_batiment' => true]
);

Transactions immobilières (DVF)

JavaScript/TypeScript :

const transactions = await client.dvf.search({
filters: {
code_departement: '75',
date_mutation_min: '2023-01-01',
valeur_fonciere_min: 100000,
},
limite: 50,
});

PHP :

$transactions = $client->dvf()->search(
filters: [
'code_departement' => '75',
'date_mutation_min' => '2023-01-01',
'valeur_fonciere_min' => 200000,
'type_local' => 'Appartement',
],
limite: 50
);

Ressources disponibles

Documentation complète

Consultez les README des SDK pour une documentation détaillée :

  • PHP SDK : Rootsud/Infoparcelle-SDK-PHP

    • Installation et configuration
    • Exemples d'utilisation pour toutes les ressources API
    • Gestion d'erreurs et pagination
    • Notes importantes et limitations
  • JavaScript/TypeScript SDK : Rootsud/Infoparcelle-SDK-TS

    • Installation et configuration
    • Utilisation Node.js et navigateur
    • Exemples TypeScript typés
    • Optimisations et meilleures pratiques

Liens utiles

Contribution

Les SDKs sont sous licence MIT. Les contributions sont les bienvenues !

  • Issues : Signalez des bugs ou proposez des améliorations sur GitHub
  • Pull Requests : Soumettez vos contributions
  • Documentation : Aidez à améliorer les exemples et guides
Recommandation

Nous recommandons vivement l'utilisation des SDKs pour simplifier votre intégration et bénéficier de toutes les fonctionnalités avancées : authentification automatique, gestion des erreurs, pagination transparente, retry automatique et types stricts !

Prochaines étapes

  1. Installez un SDK selon votre langage préféré
  2. Obtenez une clé API sur infoparcelle.fr/compte/api
  3. Consultez les exemples dans les README des SDK
  4. Explorez la documentation API pour découvrir toutes les fonctionnalités disponibles