Spécifications techniques de chacune des API :
- Paramètres d’appels
- Détail de la réponse JSON
- Codes erreurs
Voici la liste des fondamentaux techniques à mettre en place pour le bon fonctionnement de l’API Entreprise :
💡 Pour mieux comprendre l’API Entreprise avant de demander un accès, vous pouvez utiliser notre environnement de test.
Les limites de volumétrie sur API Entreprise se décomposent en deux règles principales :
Un plafond général par IP de 1000 requêtes/minute.
Une volumétrie par jeton par groupe d’endpoints :
- 1er groupe : Les endpoints renvoyant du JSON constituent un premier groupe. Vous pouvez effectuer jusqu’à 250 requêtes/min/jeton sur ce groupe.
- 2ème groupe : Les endpoints transmettant des documents constituent un autre groupe. La volumétrie maximale d’appel concernant ce groupe est de 50 requêtes/min/jeton.
- Exceptions : Certains endpoints échappent à cette règle et présentent une volumétrie spécifique par endpoint. Il s’agit notamment de l’API attestation fiscale de la DGFIP, de l’API dépréciée Actes de l’INPI ou encore des API effectifs du GIP-MDS. Comme pour toutes les API du bouquet, la volumétrie exacte figure dans le header.
Dans toutes les réponses de nos API, le header vous transmet des informations sur la volumétrie :
Champs du header | Signification | Format |
---|---|---|
RateLimit-Limit |
La limite concernant l’endpoint appelé, soit le nombre de requête/minute. | Nombre |
RateLimit-Remaining |
Le nombre d’appels restants durant la période courante d’une minute. | Nombre |
RateLimit-Reset |
La fin de la période courante. | Timestamp |
Exemple :
Considérons un endpoint ayant une limite de 50 appels /minute.
Vous faîtes un premier appel à 10h00 pile, et effectuez un second appel 20 secondes plus tard, puis un troisième 10 secondes plus tard, vous aurez les valeurs suivantes :
RateLimit-Limit
: 50 ;RateLimit-Remaining
: 47 (50 moins les 3 appels effectués) ;RateLimit-Reset
: [Timestamp correspondant au jour présent à 10h01]. Le premier appel initialise le compteur (à 10h00 pile), la période se termine 1min plus tard.Vous pouvez donc jusqu’à 10h01 pile effectuer 47 appels, le compteur sera réinitialisé à 50 à ce moment-là.
Si vous dépassez le nombre d’appels autorisés (RateLimit-Remaining = 0
), le serveur répondra avec le status 429
sur tous les appels suivants dans la même période.
Le header associé à ce code erreur 429
sera accompagné :
Champs du header | Signification | Format |
---|---|---|
RateLimit-Limit |
La limite concernant l’endpoint appelé, soit le nombre de requête/minute. | Nombre |
RateLimit-Remaining |
Le nombre d’appels restants durant la période courante d’une minute. | Nombre |
RateLimit-Reset |
La fin de la période courante. | Timestamp |
Uniquement pour le header associé au code erreur 429 Retry-after |
Décompte du nombre de secondes restantes avant la prochaine période | Secondes |
Vous pouvez donc utiliser les champs du header pour optimiser votre consommation de l’API Entreprise.
En cas de non prise en compte des codes erreurs 429
ou en cas de dépassement de la limite de volumétrie globale, votre IP sera temporairement bannie de nos serveurs pour une durée fixe et non révocable de 12h. Si vous avez plusieurs jetons, tous seront donc bloqués pendant ce laps de temps.
Les appels depuis une IP bannie ne renvoient pas de codes HTTP, le serveur ne répond tout simplement pas.
Vous pouvez en revanche vérifier si vous avez dépassé ce seuil depuis votre compte utilisateur.
ℹ️ Au bout de ces 12 heures, vos accès sont automatiquement rétablis ; il est donc inutile d’écrire au support.
Nous vous invitons à prendre les mesures nécessaires car le dépassement intervient généralement chez nos utilisateurs lorsque leur programme n’a pas été correctement configuré.
Pour les appels de traitement de masse, il est souhaitable que vous fassiez vos batchs automatiques la nuit ou durant les heures creuses afin de ne pas affecter la qualité du service pour le reste des usagers.
Le timeout est le temps d’attente maximal de réponse à une requête. Il vous permet de ne pas immobiliser votre logiciel en le laissant bloqué sur un appel sans réponse.
De façon générale, nous vous recommandons un timeout :
De même, pour ne pas immobiliser nos serveurs, nous attendons les réponses de nos fournisseurs un maximum de 10 secondes avant de vous les retransmettre. Si ce délai d’attente est dépassé un code erreur HTTP 504
vous sera renvoyé.
API Entreprise utilise DHIMYOTIS comme organisme de délivrance de ses certificats SSL principaux ainsi que Let’s Encrypt pour certains services secondaires.
Il est conseillé d’ajouter ces Autorités de Certifications (AC) à votre base de confiance si vous en avez une. Une solution idéale est d’utiliser un paquet d’autorités mises à jour automatiquement (Mozilla par exemple)
API Entreprise utilise des certificats multi-domaines ; c’est-à-dire avec un “nom courant” (common name - CN) et plusieurs “noms alternatifs du sujet” (subject alternatives names - SAN), soyez certains que vos outils fonctionnent correctement avec.
Toutes les réponse de l’API Entreprise sont envoyées avec un code HTTPS. Ces codes permettent de se renseigner sur le statut de l’appel, et sont harmonisés pour l’ensemble des API quelque soir le fournisseur de données.
Pour en savoir plus sur les codes HTTPS, cet article de Wikipedia constitue une bonne base explicative.
Code HTTPS | Signification |
---|---|
200 |
Tout va bien. |
Code HTTP | Signification |
---|---|
400 |
Mauvaise requête – La syntaxe de votre requête est erronée. |
401 |
Non autorisé – Votre token est invalide ou manquant. |
403 |
Interdit – Le serveur a compris votre requête mais refuse de l’exécuter car votre jeton ne vous donne pas accès à cette ressource. |
404 |
Non trouvé – La ressource (l’entreprise, le certificat, …) demandée n’a pas été trouvée. Cette erreur intervient par exemple lors de l’entrée d’un numéro de SIREN qui n’existe pas, mais bien plus fréquemment lorsque l’entreprise qu’il designe est en dehors du périmètre de l’endpoint. ⚠️ Veuillez bien vérifier si l’entité appelée correspond au périmètre décrit dans la documentation métier de l’API. |
422 |
Entité non traitable – Le format de la donnée passée en paramètre n’est pas accepté. Par exemple, si vous entrez 20 chiffres dans le paramètre SIREN, votre requête est automatiquement rejetée, car un SIREN fait obligatoirement 9 chiffres. |
451 |
Indisponible pour raisons légales - ce code est spécifiquement renvoyé lorsque vous demandez les informations d’une entreprise ou d’un établissement non diffusible au travers des endpoints entreprises et etablissements de l’INSEE, sans avoir utilisé l’option d’appel spécifique. Pour en savoir plus, consultez la documentation de cet endpoint dans le catalogue de données. |
Code HTTP | Signification |
---|---|
500 |
Erreur interne à API Entreprise – Une erreur interne du serveur d’API Entreprise est survenue. Consultez votre compte utilisateur, l’historique de l’incident devrait y être affiché ; ainsi que les actions à venir. |
502 |
Erreur interne fournisseur – Une erreur interne du serveur du ou des fournisseurs est survenue. Consultez votre compte utilisateur, l’historique de l’incident devrait y être affiché ; ainsi que les actions à venir. |
503 |
Service non disponible – Le service est temporairement indisponible ou en maintenance. Pour connaître l’historique de disponibilité et les incidents type de l’endpoint, vous pouvez consulter le catalogue de données. |
504 |
Intermédiaire hors délai – Le(s) producteur(s) de données ont mis trop de temps à répondre. Notre temps d’attente, nous permettant de ne pas immobiliser le serveur sur un appel sans réponse, est fixé à 10 secondes et a été dépassé. |
Tous les codes erreur HTTPS sont accompagnés de codes plus précis, spécifiques à chaque situation d’erreur. Une explication en toutes lettres est également donnée dans la payload. Enfin, dans certains cas, une métadonnée actionnable est disponible.
Dans l’exemple ci-dessous, la clé retry_in
permet justement de relancer un appel après le nombre de secondes indiquées.
Exemple de payload d’un code HTTPS 502 :
{ "errors": [ { "code": "04501", "title": "Analyse de la situation du compte en cours", "detail": "La situation de l'entreprise requiert une analyse manuelle d'un agent de l'URSSAF. Une >demande d'analyse vient d'être envoyée, cela prend au maximum 2 jours.", "meta": { "provider": "ACOSS", "retry_in": 172800 } } ] }
Retrouvez tous les codes erreurs pour chaque endpoint dans notre swagger, partie “Response samples”.
La liste des codes spécifiques à chaque endpoint y est disponible.
API Entreprise vous permet d’accéder à des données protégées. C’est pourquoi, dans un objectif de traçabilité, nous vous demandons de renseigner dans chacune de vos requêtes, non seulement un jeton d’accès, mais aussi certaines informations qualifiant votre requête.
⚠️ Ces paramètres sont obligatoires. Les appels ne comportant pas ces paramètres sont rejetés, et un code erreur vous est renvoyé.
Pour chaque endpoint, nous précisons dans le swagger, rubrique “Query parameters” les paramètres obligatoires spécifiques, ci-dessous une explication détaillée des éléments à fournir pour chaque paramètre de traçabilité :
Paramètre | Information à renseigner |
---|---|
&context=CadreDeLaRequête |
Le cadre de la requête Par exemple : aides publiques, marchés publics ou gestion d’un référentiel tiers utilisé pour tel type d’application. |
&recipient=BénéficaireDeL'Appel |
Le bénéficiaire de l’appel Ce paramètre permet la traçabilité de l’appel et doit correspondre au SIRET de l’organisation publique habilitée à utiliser la donnée. Si vous êtes une collectivité ou une administration, ce paramètre doit donc être votre numéro de SIRET. Si vous êtes un éditeur, il s’agit du SIRET de l’organisation publique cliente demandant la donnée. Une vérification est effectuée par API Entreprise pour refuser tout format qui ne serait pas un numéro de SIRET et pour refuser un SIRET qui serait identique à l’entité appelée. |
&object= RaisonDeL'AppelOuIdentifiant |
La raison de l’appel ou l’identifiant de la procédure. L’identifiant peut être interne à votre organisation ou bien un numéro de marché publique, un nom de procédure ; l’essentiel est que celui-ci vous permette de tracer et de retrouver les informations relatives à l’appel. En effet, vous devez pouvoir justifier de la raison d’un appel auprès du fournisseur de données. Description courte (< 50 caractères). |
Il est fréquent que les API évoluent et que, par conséquent, de nouvelles versions soient publiées.
La version majeure V.3 de l’API Entreprise permet de créer facilement de nouvelles versions, tout en gardant les précédentes, rendant ainsi accessibles rapidement les évolutions qu’API Entreprise obtient de ses fournisseurs.
Les montés de version d’une API interviennent pour toute évolution, c’est-à-dire :
l’ajout d’un nouveau champ par le fournisseur de la donnée ;
Par exemple : Ajout du champ “économie sociale et solidaire” lors d’une évolution mineure par l’Insee.
la transformation de la structure de l’API par le fournisseur de la donnée ;
Par exemple : Sortie d’une évolution majeure chez le fournisseur donnée.
l’ajout d’une fonctionnalité par API Entreprise
Par exemple : Délivrance d’un nouveau champ “Certification valide” pour une API qui ne renvoyait avant que l’URL de téléchargement de l’attestation.
Pour comprendre comment monter en version, consultez la rubrique suivante.
Depuis la V.3 de l’API Entreprise, les anciennes versions sont maintenues par le service API Entreprise tant que cela est possible.
En pratique, cela signifie que :
Depuis la version 3 de l’API Entreprise, toutes les API peuvent évoluer indépendamment les unes des autres. Les anciennes versions (à partir de la V.3) restent donc toujours disponibles si le fournisseur de la donnée continue de transmettre les informations.
Depuis la version 3, le numéro de version est un paramètre de l’appel et non plus une valeur fixe pour toutes les API comme en version 1 et 2 (Les versions 1 et 2 sont définitivement dépréciées, la version 1 étant déjà fermée et la version 2 fermant le 30 juin 2023).
Exemple d’utilisation du paramètre d’appel de version :
Imaginons un exemple fictif : l’API documents, cette API est disponible en v.3 et une nouvelle version est sortie, la V.4.
Pour appeler la version souhaitée, il vous faudra directement inscrire le numéro de la version dans l’URL :https://entreprise.api.gouv.fr/v3/...
pour la V.3 ouhttps://entreprise.api.gouv.fr/v4/...
pour la V.4.
📩 Une lettre d’information annonce systématiquement les nouvelles évolutions. Vous pouvez vous abonner ici.
API Entreprise met à disposition un ensemble de routes de “pings” permettant de récupérer l’état des services fournis par les différents fournisseurs de données.
L’ensemble des routes est disponible à l’adresse suivante: Routes de pings (format JSON).
Pour chacune de ces routes, l’équipe d’API Entreprise effectue des vérifications spécifiques au fournisseur, permettant d’être au plus près de la réalité quand à la santé dudît fournisseur.
Chacune de ces routes renvoi un json sous le format suivant:
{
"status": "ok",
"last_update": "2023-11-03T12:24:07.185+01:00",
"last_ok_status": "2023-11-03T12:24:07.185+01:00"
}
Avec:
status
, string
, qui peut avoir 3 valeurs: ok
quand tout est OK, bad_gateway
quand il y a un souci, unknown
quand on ne peut pas déterminer le status ;last_update
, datetime
, date de la dernière mise à jour: pour éviter de surcharger nos systèmes nous effectuons de la mise en cache sur les pings ;last_ok_update
, datetime
, date de la dernière mise à jour en OK: permet de savoir depuis quand le service est en défaut.A noter que le status http est à 200 pour ok
et unknown
, 502 pour bad_gateway
: cela permet à nos systèmes de monitoring de ne pas lever d’alertes en cas de données insuffisantes (et ainsi éviter des potentiels faux positifs).
Nous vous conseillons de passer par ces routes de surveillances, et ceci pour plusieurs raisons:
bad gateway
d’une route de ping a de forte chance d’être un vrai positif, contrairement à un échec sur les endpoints qui peut être dû à des erreurs réseaux/temporaires.Pour connaître la liste des APIs auxquelles vous avez le droit avec votre jeton d’accès, vous pouvez le vérifier avec l’API /privileges
.
Si vous gérez les tokens pour vos utilisateurs, vous pouvez aussi utiliser cette API pour vérifier les droits associés à leurs tokens.
https://entreprise.api.gouv.fr/v2/privileges?token=LeTokenATester
Le paramètre d’appel à renseigner est le token dont vous souhaitez connaître les droits.
Exemple de réponse JSON :
{ "privileges": [ "attestations_agefiph", [...] "actes_bilans_inpi" ] }
La réponse JSON renvoie la liste des API autorisées. Retrouvez-leurs spécifications techniques dans le Swagger.
L’API Entreprise propose un environnement de test ou bac à sable pour vous permettre de tester le branchement de l’API avec votre système d’informations.
💡 L’environnement de test est une fonctionnalité à destination des usagers techniques. Si vous êtes un profil métier, veuillez vous référer aux fiches métier de chaque API disponibles depuis le catalogue.
Les informations essentielles du bac à sable :
Une URL : L’‘environnement de staging est appelable avec https://staging.entreprise.api.gouv.fr
.
Les jetons d’accès : Pour être fidèle au fonctionnement de l’API en production, cet environnement de test nécessite aussi un jeton d’accès, mais celui-ci, contrairement aux jetons de production, est public car la donnée renvoyée en bac à sable est fictive. Un jeton ayant tous les droits est accessible ici. Pour générer un jeton spécifique, veuillez vous référer à ce tutoriel.
Les données fictives de réponse : Les données retournées par cet environnement de test sont totalement fictives et disponibles depuis ce dépôt.
Pour rappel, le fichier OpenAPI est disponible depuis le swagger, avec le bouton “Download” situé en début de page.
Pour en savoir plus, veuillez consulter le README du dépôt Github.
Seule la personne ayant fait la demande d’habilitation a accès au token, au travers du compte utilisateur API Entreprise.
Si vous avez réalisé la demande d’habilitation, vous pouvez récupérer vos tokens ou jetons d’accès directement depuis votre compte.
Si vous n’avez pas réalisé la demande d’habilitation mais que vous êtes la personne en charge d’intégrer l’API Entreprise, la personne ayant effectué la demande d’habilitation peut vous transmettre le token de façon sécurisée depuis son compte, en cliquant sur le bouton “Transmettre le jeton à mon équipe technique”. Vous recevrez alors, par e-mail, un lien d’une durée de 4 heures vous donnant accès au jeton.
⚠️ L’utilisation de cette fonctionnalité du compte utilisateur doit avoir pour unique objectif la transmission sécurisée de la clé aux services techniques qui intégreront l’API Entreprise. Le jeton JWT ne doit jamais être transmis par e-mail.
Après avoir récupéré votre jeton, vous pouvez faire un premier appel de test.
Utilisez l’environnement de production documenté (Swagger), disponible sur api.gouv.fr.
Il permet, à l’aide d’un token d’authentification valide 🔑, d’effectuer directement depuis le navigateur des tests de l’API. Les données confidentielles restent bien protégées. Vous y trouverez aussi la spécification technique téléchargeable sous format YAML afin de pouvoir accélérer le développement de vos outils d’interfaçage avec API Entreprise.
⚠️ Attention, pour rappel, vous ne devez jamais copier-coller un token dans la barre de recherche classique d’un moteur de recherche ou dans un e-mail. Pour récupérer votre jeton de façon sécurisée, consultez cette rubrique.
Chaque URL de requête est spécifiée dans le Swagger,
https://entreprise.api.gouv.fr/v3/attestation_fiscales_dgfip/SirenDeL’Entreprise?token=📝&user_id=📝&context=📝&recipient=📝&object=📝
Éléments composant la requête | État | Exemples |
---|---|---|
Domaine (ou préfixe) qui conduit à l’API de façon sécurisée |
prédéfini par endpoint | https://entreprise.api.gouv.fr |
Numéro de la version (par défaut désormais en V3) |
prédéfini par endpoint | /v3 |
Nom de la donnée recherchée (ou endpoint) |
prédéfini par endpoint | /attestation_fiscale_dgfip |
Identité de l’établissement concerné (souvent SIREN ou SIRET) |
à choisir 📝 | /SIRENouSIRETdeL'Etablissement |
Votre jeton d’accès | à renseigner 📝 | ?token=JetonD'Habilitation |
Des paramètres de traçabilité | à renseigner 📝 | &context=CadreDeLaRequête ℹ️ Plus d’informations disponibles dans la partie Instruire les paramètres de traçabilité |
Une fois que vous avez fait un premier appel, celui-ci est répertorié dans votre compte utilisateur, dans la page détaillée de l’habilitation concernée, au niveau du jeton. Un lien vous permet d’accéder aux statistiques.
Documentation en construction 🚧
Dès l’intégration d’API Entreprise, prenez un temps pour vous assurer d’être informé de la disponibilité de nos API :
Le service ne répond plus ? consultez cette rubrique de notre FAQ.
Abonnez-vous aux notifications par e-mail depuis notre page de statut.
Ajoutez des routes de pings pour automatiser la surveillance des API par vous-même. Plutôt que de consulter ponctuellement notre page de statuts, vous pouvez vous branchez directement à nos routes afin d’avoir un suivi encore plus précis. Pour en savoir plus, consulter la rubrique surveiller l’état des fournisseurs.
Pour comprendre comment prolonger votre jeton, consultez cette rubrique de notre FAQ.
Placeholder