search mail facebook github rss rss twitter google + cross link

data.gouv.fr - documentation

Resultats de recherche pour ""

Gestion d’un jeu de données par l’API

Cette page documente les principales interactions que vous pouvez avoir avec un jeu de données par l’API.

Il est recommandé d’avoir lu l’introduction avant de consulter cette page.

Tous les exemples qui suivent sont réalisés avec un compte :

  • qui est actif
  • dont la clé d’API est my-api-key
  • qui est membre d’une organization dont l’identifiant est 5bbb6d6cff66bd4dc17bfd5a.

Les exemples portants sur un jeu de données existant utilisent l’identifiant 5bc04b2cff66bd680e499f4a. Ceux portants sur une ressource existante de ce jeu de données utilisent l’identifiant 54d47250-1daf-483b-965a-3013f8c76617.

Pour simplifier la lecture de ces exemples, il y sera fait référence par les variables suivantes pour chaque language:

# Tous les examples CURL sont executés avec cette convention
# CURL doit être installé
export API = 'https://www.data.gouv.fr/api/1'
export API_KEY = 'my-api-key'
export ORG = '5bbb6d6cff66bd4dc17bfd5a'
export DATASET = '5bc04b2cff66bd680e499f4a'
export RESOURCE = '54d47250-1daf-483b-965a-3013f8c76617'
# Tous les examples HTTPie sont executés avec cette convention
# HTTPie doit être installé
export API = 'https://www.data.gouv.fr/api/1'
export API_KEY = 'my-api-key'
export ORG = '5bbb6d6cff66bd4dc17bfd5a'
export DATASET = '5bc04b2cff66bd680e499f4a'
export RESOURCE = '54d47250-1daf-483b-965a-3013f8c76617'
# Tous les examples Python sont executés avec cette convention

import requests  # installé avec `pip install requests`

API = 'https://www.data.gouv.fr/api/1'
API_KEY = 'my-api-key'
ORG = '5bbb6d6cff66bd4dc17bfd5a'
DATASET = '5bc04b2cff66bd680e499f4a'
RESOURCE = '54d47250-1daf-483b-965a-3013f8c76617'
HEADERS = {
    'X-API-KEY': API_KEY,
}


def api_url(path):
    return ''.join(API, path)

Création d’un jeu de données

Pour créer un jeu de données, nous allons utiliser l’API de création de jeu de données.

curl -H "Content-Type:application/json" \
     -H "Accept:application/json" \
     -H "X-Api-Key:$API_KEY" \
     --data '{"title": "my title", "description": "My description", "organization": "$ORG"}' \
     -X POST $API/datasets/
http POST $API/datasets/ \
     X-Api-Key:$API_KEY \
     title="Mon titre" \
     description="Ma description" \
     organization=$ORG
url = api_url('/datasets/')
response = requests.post(url, json={
    'title': 'Mon titre',
    'description': 'Ma description',
    'organization': ORG,
}, headers=HEADERS)

La réponse en JSON contient les metadonnées du jeu de données créé, en particulier l’identifiant et le slug.

La fiche du jeu de données est maintenant créée et il est maintenant possible d’y ajouter des ressources.

Attention : par défaut, un jeu de données créé via l’API est public. Afin de créer et maintenir un jeu de données en privé, il faut mettre l’attribut private: true dans chaque appel à l’API. Sinon, chaque modification d’un jeu de données par l’API va le passer en public.

Ajout d’une ressource

Pour créer une ressource, nous allons utiliser l’API création d’une ressource.

Il existe 2 cas de création de ressource :

  • avec envoi d’un fichier, dit ressource locale ;
  • avec référencement d’un fichier distant, dit ressource distante.

En envoyant un fichier

Nous allons utiliser l’API d’envoi de ressource pour envoyer le fichier.

curl -H "Accept:application/json" \
     -H "X-Api-Key:$API_KEY" \
     -F "file=@/chemin/vers/le/fichier" \
     -X POST $API/datasets/$DATASET/upload/
http -f POST $API/datasets/$DATASET/upload/ \
     X-Api-Key:$API_KEY \
     file@/chemin/vers/le/fichier
url = api_url('/datasets/{}/upload/'.format(DATASET))
response = requests.post(url, files={
    'file': open('/chemin/vers/le/fichier', 'rb'),
}, headers=HEADERS)

La ressource est automatiquement créée et il est possible de modifier a posteriori les metadonnées avec l’API de mise à jour de ressource comme décrit plus bas

En référençant une URL existante

L’API de création de ressource permet de créer une ressource distante. Dans notre cas, un fichier csv hébergé sur l’URL https://url.to/ressource.csv.

curl -H "Content-Type:application/json" \
     -H "Accept:application/json" \
     -H "X-Api-Key:$API_KEY" \
     --data '{"title": "my title", "description": "My description", "type": "main", filetype: "remote", "format": "csv",  "url": "https://url.to/ressource.csv"}' \
     -X POST $API/datasets/$DATASET/resources/
http POST $API/datasets/$DATASET/ressources/ \
     X-Api-Key:$API_KEY \
     title="Mon titre" \
     description="Ma description" \
     url="https://url.to/ressource.csv" \
     type="main" filetype="remote" format="csv"
url = api_url('/datasets/{}/resources/'.format(DATASET))
response = requests.post(url, json={
    'title': 'Mon titre',
    'description': 'Ma description',
    'url': 'https://url.to/ressource.csv',
    'type': 'main',
    'filetype': 'remote',
    'format': 'csv',
}, headers=HEADERS)

Modification d’un jeu de données

La suite des opérations s’appliquent sur le même jeu de données dont l’identifiant est 5bc04b2cff66bd680e499f4a sur lequel vous avez les permissions nécéssaires à la modification. Ce jeu de données possède une ressource 54d47250-1daf-483b-965a-3013f8c76617 qui est soit distante soit locale suivant les exemples.

Mise à jour des metadonnées de la fiche

Cette requête permet de mettre à jour les métadonnées d’un jeu de données en utilisant l’API de mise à jour de jeu de données

curl -H "Content-Type:application/json" \
     -H "Accept:application/json" \
     -H "X-Api-Key:$API_KEY" \
     --data '{"title": "Nouveau titre", "description": "Nouvelle description"}' \
     -X PUT $API/datasets/$DATASET/
http PUT $API/datasets/$DATASET/ \
     X-Api-Key:$API_KEY \
     title="Nouveau titre" \
     description="Nouvelle description"
url = api_url('/datasets/{}/'.format(DATASET))
response = requests.put(url, json={
    'title': 'Nouveau titre',
    'description': 'Nouvelle description',
}, headers=HEADERS)

Mise à jour des métadonnées d’une ressource

Cette requête permet de mettre à jour les métadonnées d’une ressource en utilisant l’API de mise à jour de ressource

curl -H "Content-Type:application/json" \
     -H "Accept:application/json" \
     -H "X-Api-Key:$API_KEY" \
     --data '{"title": "Nouveau titre", "description": "Nouvelle description"}' \
     -X PUT $API/datasets/$DATASET/resources/$RESOURCE/
http PUT $API/datasets/$DATASET/resources/$RESOURCE/ \
     X-Api-Key:$API_KEY \
     title="Nouveau titre" \
     description="Nouvelle description"
url = api_url('/datasets/{}/resources/{}/'.format(DATASET, RESOUCE))
response = requests.put(url, json={
    'title': 'Nouveau titre',
    'description': 'Nouvelle description',
}, headers=HEADERS)

Remplacer un fichier de ressource

Dans le cas d’une mise à jour de fichier de ressource locale (correction, ajout de données…),il est possible d’utiliser l’API de mise à jour de fichier. L’ancien fichier sera supprimé.

curl -H "Accept:application/json" \
     -H "X-Api-Key:$API_KEY" \
     -F "file=@/chemin/vers/le/nouveau/fichier" \
     -X POST $API/datasets/$DATASET/resources/$RESOURCE/upload/
http -f POST $API/datasets/$DATASET/resources/$RESOURCE/upload/ \
     X-Api-Key:$API_KEY \
     file@/chemin/vers/le/nouveau/fichier
url = api_url('/datasets/{}/resources/{}/upload/'.format(DATASET, RESOURCE))
response = requests.post(url, files={
    'file': open('/chemin/vers/le/nouveau/fichier', 'rb'),
}, headers=HEADERS)

Signaler une mise à jour de fichier distant

Dans le cas d’une ressource distante, lorsque le fichier distant est mis à jour, il est important de le signaler afin que la fiche soit mise à jour et que les usagers le sache.

🚧 Bientôt 🚧

Suppression d’une ressource

l’API de suppression de ressource permet de supprimer une ressource de la fiche d’un jeu de données. Le fichier associé est aussi supprimé.

curl -H "Accept:application/json" \
     -H "X-Api-Key:$API_KEY" \
     -X DELETE $API/datasets/$DATASET/resources/$RESOURCE
http DELETE $API/datasets/$DATASET/ressources/$RESOURCE/ X-Api-Key:$API_KEY
url = api_url('/datasets/{}/resources/{}/'.format(DATASET, RESOURCE))
response = requests.delete(url, headers=HEADERS)

Suppression d’un jeu de données

Pour supprimer un jeu de données, il suffit d’utiliser l’API de suppression de jeu de données:

curl -H "Accept:application/json" \
     -H "X-Api-Key:$API_KEY" \
     -X DELETE $API/datasets/$DATASET/
http DELETE $API/datasets/$DATASET/ X-Api-Key:$API_KEY
url = api_url('/datasets/{}/'.format(DATASET))
response = requests.delete(url, headers=HEADERS)

Le jeu de données est maintenant marqué comme supprimé, il reste visible uniquement par vous et les membres de votre organisation, ainsi que par l’équipe d’administrateur de data.gouv.fr. Il sera purgé (supprimé définitivement de la plateforme), d’ici la fin de la journée.

Restauration d’un jeu de données supprimé par erreur

Tant que le jeu de données n’a pas été purgé, vous avez la possibilité de le restaurer:

🚧 Bientôt 🚧

✎ Editer cette page