Search by

entreprise-page / api-client

entreprisepage

Client PHP (7.4+) de l'API entreprise.page, basé sur PSR-18 et PSR-17

Package info

github.com/entreprise-page/api-client-php

pkg:composer/entreprise-page/api-client

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.1 2026-11-03 09:24 UTC

This package is not auto-updated.

Last update: 2026-11-04 08:04:43 UTC


README

Client PHP de l'API entreprise.page, construit à partir du swagger de l'API (api/docs/swagger.json).

  • PHP 7.4 ou plus (testé de 7.4 à 8.5).
  • Client HTTP au choix : n'importe quelle implémentation PSR-18 (Symfony HttpClient, Guzzle…) et une fabrique de requêtes PSR-17.
  • Réponses hydratées dans des objets typés (EntreprisePage\ApiClient\Model). PHP 7.4 n'ayant pas de propriétés readonly, leurs propriétés publiques sont marquées @readonly : PHPStan et Psalm signalent toute modification.

Installation

composer require entreprise-page/api-client symfony/http-client nyholm/psr7

N'importe quel couple PSR-18 / PSR-17 convient à la place de symfony/http-client et nyholm/psr7.

Utilisation

use EntreprisePage\ApiClient\Client;
use EntreprisePage\ApiClient\Query\RechercheEntrepriseQuery;

// Le client HTTP et la fabrique de requêtes sont découverts automatiquement s'ils ne sont pas fournis.
$client = new Client('votre-cle-api');

$entreprise = $client->entreprises()->get('443061841');
echo $entreprise->denominationSociale;

$codes = array_map(
    static fn ($activite) => $activite->code,
    $client->activites()->search('plombier')->resultats,
);

// Les critères sont immuables : chaque with…() renvoie une copie.
$resultats = $client->entreprises()->search(
    RechercheEntrepriseQuery::create('*')
        ->withActivites($codes)
        ->withActif(true)
        ->withZone(45.7672724, 4.8340594, 10)
        ->withParPage(50)
);
Méthode Endpoint Clé d'API
entreprises()->get($siren) GET /organisation/entreprise/{siren} oui
entreprises()->search($query) GET /organisation/recherche oui
entreprises()->suggest($query, $limit) GET /organisation/suggestion non
etablissements()->get($siret) GET /organisation/etablissement/{siret} oui
etablissements()->listBySiren($siren, $filtres) GET /organisation/entreprise/{siren}/etablissement oui
annonces()->listBySiren($siren) GET /organisation/entreprise/{siren}/annonce oui
activites()->list() / get($code) GET /dictionnaire/activite[/{code}] non
activites()->search($query) GET /dictionnaire/recherche/activite oui
conventionsCollectives()->list() / get($idcc) GET /dictionnaire/convention-collective[/{code}] non
formesJuridiques()->list() / get($code) GET /dictionnaire/forme-juridique[/{code}] non
compte()->quota() GET /quota oui

Erreurs

Toutes les exceptions implémentent EntreprisePage\ApiClient\Exception\ExceptionInterface.

Exception Cas
BadRequestException, UnauthorizedException, NotFoundException, TooManyRequestsException, ServerException statut HTTP 400, 401/403, 404, 429, 5xx ; toutes étendent ApiException, qui donne accès à la réponse PSR-7
TransportException aucune réponse reçue (réseau, timeout)
UnexpectedResponseException réponse qui ne respecte pas le contrat (JSON invalide, champ manquant ou mal typé)
InvalidArgumentException critères de recherche invalides, détectés avant l'envoi

Intégration Symfony

Le constructeur ne prend que des interfaces PSR : le client se déclare comme un service ordinaire, avec le client HTTP du framework (qui peut être décoré pour le cache, les retries ou les logs).

# config/services.yaml
services:
    entreprise_page.http_client:
        class: Symfony\Component\HttpClient\Psr18Client
        arguments: ['@http_client']

    EntreprisePage\ApiClient\Client:
        arguments:
            $apiKey: '%env(ENTREPRISE_PAGE_API_KEY)%'
            $httpClient: '@entreprise_page.http_client'
            $requestFactory: '@entreprise_page.http_client'