Api Data Publica
- Limitations de la phase beta
- Les jeux de données disponibles
- URL d’accès à l’API
- Les paramètres de l’API
- Format du résultat
- Filtre de sélection
- Comment obtenir une clef d’API?
- Comment signer le message?
- Simulateur
- Codes d’erreur
- Client et API
Limitations de la phase beta
L’API de DataPublica est en version beta. Durant cette phase, l’accès peut être brièvement interrompu pour des questions de maintenance. Le temps de réponse n’est pas garanti. Data Publica se réserve le droit de bloquer les utilisateurs qui abusent de son utilisation pour mieux servir les autres utilisateurs. Si vous avez des besoins spécifiques, merci de nous contacter.
Les jeux de données disponibles
Les jeux de données disposibles par api sont disponibles à cette adresse
URL d’accès à l’API
L’API de Data Publica est accessible par une interface de type RESTful à l’adresse
api.data-publica.com
Une requête type est du format suivant:
http://api.data-publica/v1/{reference}/{tablename}/content?
filter={filter}&format={format}&key={key}&limit={limit}&
offset={offset}&signature={signature}
Les paramètres de l’API
| Paramètre | Obligatoire | Description |
| key | oui | La clef de l’api (voir comment obtenir une clef d’API?). |
| reference | oui | La référence du jeux de données à interroger (cet élément est décrit sur la fiche descriptive du jeu de données) |
| tablename | oui | Nom de la table du jeu de données à interroger (cet élément est décrit sur la fiche descriptive du jeux de données) |
| format | non (defaut: “json”) | Format de réponse.Supportés: json, csv, excel (défaut : json) |
| limit | non (defaut: 100) | Nombre maximum de lignes à retourner. Par défaut, la valeur est de 100. Le maximum est de 200. Vous pouvez nous contacter pour ajuster ce paramètre en fonction de vos besoins. |
| offset | non (defaut:0) | Nombre de lignes à sauter avant la réponse. La valeur par défaut est 0. |
| filter | non | Filtre de sélection des lignes. Voir Filtre de sélection. |
| signature | oui | Signature du message. Voir Comment signer le message |
Format du résultat
Le format de retour de l’API dépend de la valeur du paramètre “format”. Si celui ci n’est pas précisé, le résultat est sous la forme json conformément à l’exemple ci-dessous.
{
"version": "1",
"nb_results": 1,
"available": 90792,
"offset": 130,
"data": [{
"valeur": 0,
"index": {
"index": "1",
"name": "Reglements de compte entre malfaiteurs"
},
"_l": [43.636646,0.450237],
"geo": {
"name": "Gers",
"geo": "32"
},
"annee": {
"$date": "2001-12-31T23:00:00Z"
}
}]
}
Format json:
- le champs “version” est la version de l’api
- le champs “available” définit le nombre maximum de résultat possible
- le champs “nb_results” est le nombre de résultats renvoyés (dépend du paramètre limit).
- le champs “data” est un tableau avec un élément pour chaque ligne du jeux de données
La description des lignes des jeux de données est accessible sur la fiche de la publication correspondante à chacun d’entre-eux.
Filtre de sélection
Le paramètre "filter" de la requête permet de filtrer les lignes renvoyées par l’api. Il existe deux sortes de filtres: les filtres géolocalisés et les filtres sur les valeurs des colonnes.
Filtre géolocalisé
Lorsque un jeu de donnée est géolocalisé, on peut sélectionner les valeurs de ce jeux autour d’un point géographique. La partie “API” de la fiche d’un jeu de données indique si un tableau est géolocalisé.
Il suffit alors de faire une requête sur le jeu de données avec une condition sur l’attribut “_l” de la manière suivante:
filter={"_l":{"$near":[49.33,0.03]}}
qui retourne les lignes dont la valeur géolocalisée est proche du point à la latitude 49.33 et la longitude 0.03
Filtre sur la valeur d’une colonne
Les filtres permettent d’émettre des conditions sur la valeur d’une colonne. Par exemple
filter={“montant”:{”$lt”:10}} : retourne les lignes dont le montant est inférieur à 10.
Les filtres supportés sont:
- « $lt » qui signifie “<” , « $lte » qui signifie “<=”
- « $gt » qui signifie “>” , « $gte » qui signifie “>=”
- « $eq » qui signifie “=” , « $neq » qui signifie “différent de”
- « $in » qui signifie “parmi les valeurs”
Les filtres peuvent être combinés avec les conditions $or et $and comme dans l’exemple suivant:
filter={"$or":[{"_l":{"$near":[44,6]}},{"valeur":{"$lt":1000}}}
Comment obtenir une clef d’API?
Pour obtenir une clef d’api, vous devez créer un compte sur Data Publica.
Pour cela rendez vous sur la page http://www.data-publica.com/register et, une fois le compte créé, sur “Mes infos” (http://www.data-publica.com/secure/profile) où vous verrez votre clef d’api et le mot de passe pour l’API. Ce mot de passe doit rester secret et ne doit pas être communiqué. Vous pouvez en générer un nouveau si nécessaire.
Comment signer le message?
Pour des questions de sécurité, l’appel à l’API de Data Publica doit être signé. Pour cela, l’utilisateur doit
- Construire une chaîne de caractères en combinant l’url, les paramètres de l’API et leur valeur séparés par une virgule (en ayant préalablement classé les paramètres dans l’ordre alphabétique) puis son mot de passe de l’API. Les paramètres doivent être classés dans l’ordre alphabétique et ajoutés en minuscule.
- Réaliser un hash (SHA1) de cette chaîne de caractère et la passer en paramètre “signature” supplémentaire de l’API
Par exemple, pour la requête suivante:
http://api.data-publica/v1/4232/tableau3/content?filter={"_l":
{"$near":[49.33,0.03]}}&limit=5&key=356a192c7813b04c54574d18c28d46e6395428ab
On construit la chaîne suivante: (en supposant que le mot de passe d’API est 30d87add92e7b27ce4). (Attention, les paramètres ne sont pas encodés pour générer la chaine à signer)
http://api.data-publica/v1/4232/tableau3/content,filter={"_l":
{"$near":[49.33,0.03]}},key=356a192c7813b04c54574d18c28d46e6395428ab,li
mit=5,30d87add92e7b27ce4
La signature de cette chaîne est ajouté en paramètre de la requête
http://api.data-publica/v1/4232/tableau3/content?filter={"_l":
{"$near":[49.33,0.03]}}&key=356a192c7813b04c54574d18c28d46e6395428ab&
limit=5&signature=8c29e5073e0c2e0e79e0ca2d687653e5181e8324
Voir le sectionClient et API de la pour des implémentations en java et pyhton.
Simulateur
Un simulateur de requête est disponible sur la partie API du jeux de données pour les utilisateurs enregistrés. Il permet de construire une URL avec les paramètres nécessaires et de simuler un appel de l’API:

Codes d’erreur
L’API Rest utilise les codes d’erreur HTTP suivants:
| Code | Message | Signification |
| 400 | Bad Request | Le filtre ou un autre paramètre est mal spécifié |
| 401 | Unauthorized | Vous n’avez pas l’autorisation d’accéder à cette ressource |
| 403 | Forbidden | Accès à l’API interdit (erreur d’authentification par la clef) |
| 404 | Not Found | La référence demandée n’existe pas |
| 500 | InternalServerError | Une erreur interne s’est produite |
Client et API
Des clients java et python sont disponibles pour faciliter l’accès aux API. Vous pouvez les retrouver sur GitHub Data Publica Documentation.
| Language | Client et API |
| Python | Client sur GitHub |
| Java | Generation de signature |