UtilisateurUtiliser les services de la GéoplateformeChangements et évolutionsGéoplateformeActualitésKeycloakPublicationOrchestrateurEntrepôtGéocodageRecherche
Nouveau service Validateurs + changements sur l’API Entrepôt

Nouveau service Validateurs + changements sur l’API Entrepôt

Modifié le

Diverses modifications sont prévues sur l’API Entrepôt


Changements #

Nouveau service de Validateur #

Ajout d’un service de validation de données qui permet de vérifier si la donnée est conforme à un modèle de validation. Le Swagger du service sera disponible après la livraison : https://data.geopf.fr/validation/swagger-ui/index.html

Définition d’un callback au niveau des exécutions #

Les exécutions, qu’elles soient de vérification ou de traitement, sont les actions sur l’entrepôt qui peuvent prendre du temps et dont la fin est attendue pour passer à la suite du workflow. Pour éviter à une personne de devoir consulter régulièrement un portail, ou un outil de devoir régulièrement interroger l’API, un système de callback est mis en place.

Ce callback est appelé à la fin de l’exécution, en précisant le statut (SUCCESS, ABORTED, FAILURE).

Il peut être défini au niveau de l’exécution, dans le nouveau champ « callback » :

  • à la création :
    • pour les traitements : POST /datastores/{id}/processings/executions
    • pour les vérifications : POST /datastores/{id}/uploads/{id}/close
  • à la modification, si l’exécution n’a pas déjà un statut final : SUCCESS, ABORTED, FAILURE :
    • pour les traitements : PATCH /datastores/{id}/processings/executions/
    • pour les vérifications : PATCH /datastores/{id}/checks/executions/

Plusieurs types de callback ont été identifiés :

  • Un envoi de mail

    {
        "callback": {
            "type": "email",
            "to": ["email1@ign.fr", "email2@ign.fr"],
            "entity_url": "https://cartes.gouv.fr/entrepot//donnees//details?datasheetName=CarHab-Jura"
        }
    }
    • dans « entity_url », les variables autorisées (avec la syntaxe moustache) sont :
      • { datastore } : ID de l’entrepôt
      • { community } : ID de la communauté
      • { execution } : ID de l’exécution
      • { processing } : ID du traitement dans le cas d’une exécution de traitement
      • { check } : ID de la vérification dans le cas d’une exécution de vérification
      • { output } : ID de la livraison ou donnée stockée en sortie
    • Informations envoyées :
      • Sujet : contenant le statut et le nom du traitement
      • Message : contenant l’ID, le statut, le lien vers l’entité (en accord avec le template entity_url fourni, si non fourni, on met l’appel API pour récupérer l’exécution)
  • Un appel à une API

    {
        "callback": {
            "type": "api",
            "method": "POST", // PUT et PATCH aussi acceptés, on veut juste avoir un body
            "url": "https://api.chez.moi/sous/route",
            "query_params": {
                "key1": "value1",
                "key2": "value2"
            },
            "headers": {
                "key1": "value1",
                "key2": "value2"
            }
        }
    }
    • Informations envoyées, dans le body :

      {
          "type": "PROCESSING", // ou "CHECK"
          "id": "{id}",
          "status": "{status}", // SUCCESS, FAILURE ou ABORTED
          "execution_url": "{endpoint api entrepôt}/datastores/{id}/{checks|processings}/executions/{id}",
          "log_url": "{endpoint api entrepôt}/datastores/{id}/{checks|processings}/executions/{id}"
      }

Ajout de routes d’activités des éléments d’un entrepôt #

Des routes permettant de récupérer le flux d’évènements de 3 entités d’un entrepôt ont été ajoutées. Les entités concernées sont les données stockées, livraisons et configurations :

  • GET /datastores/{datastore}/stored_data/activity
  • GET /datastores/{datastore}/uploads/activity
  • GET /datastores/{datastore}/configurations/activity

Ces requêtes peuvent prendre comme paramètres :

  • before (type « date », par défaut : « NOW ») : permet de filtrer sur les événements ayant eu lieu avant la date indiquée
  • after (type « date », par défaut : « NOW-15jours ») : permet de filtrer sur les événements ayant eu lieu après la date indiquée

Exemple :

/datastores/{datastore}/stored_data/activity
{
    "id": "string",
    "title": "string",
    "subtitle": "string",
    "updated": "2025-08-08T08:40:54.056Z",
    "links": [
        {
            "href": "string",
            "rel": "self",
            "type": "string",
            "title": "string"
        }
    ],
    "rights": "string",
    "author": {
        "name": "string",
        "email": "string"
    },
    "entries": [
        {
            "id": "string",
            "title": "string",
            "subtitle": "string",
            "updated": "2025-08-08T08:40:54.057Z",
            "links": [
                {
                    "href": "string",
                    "rel": "self",
                    "type": "string",
                    "title": "string"
                }
            ],
            "content": "string",
            "categories": [
                {
                    "term": "string",
                    "label": "string"
                }
            ],
            "polygon": {
                "west": 0,
                "south": 0,
                "east": 0,
                "north": 0
            }
        }
    ]
}

Ajout de routes d’activités d’une communauté #

Des routes permettant de récupérer le flux d’évènements d’une communauté ont été ajoutées :

  • GET /communities/{community}/users/activity
  • GET /communities/{community}/permissions/activity

Ces requêtes peuvent prendre comme paramètres :

  • before (type date , par defaut=NOW) : permet de filtrer sur les événements ayant eu lieu avant la date indiquée
  • after (type date , par defaut=NOW-15jours) : permet de filtrer sur les événements ayant eu lieu après la date indiquée

Exemple :

/communities/{community}/users/activity
{
    "id": "string",
    "title": "string",
    "subtitle": "string",
    "updated": "2025-08-08T09:03:54.104Z",
    "links": [
        {
            "href": "string",
            "rel": "self",
            "type": "string",
            "title": "string"
        }
    ],
    "rights": "string",
    "author": {
        "name": "string",
        "email": "string"
    },
    "entries": [
        {
            "id": "string",
            "title": "string",
            "subtitle": "string",
            "updated": "2025-08-08T09:03:54.104Z",
            "links": [
                {
                    "href": "string",
                    "rel": "self",
                    "type": "string",
                    "title": "string"
                }
            ],
            "content": "string",
            "categories": [
                {
                    "term": "string",
                    "label": "string"
                }
            ],
            "polygon": {
                "west": 0,
                "south": 0,
                "east": 0,
                "north": 0
            }
        }
    ]
}

Ajout de la date de rattachement d’un utilisateur à une communauté #

Dans la route de listage des utilisateurs d’une communauté (GET /communities/{community}/users), des dates « creation » et « update » sont ajoutés pour chaque utilisateur.

Le champ creation correspond à la date d’ajout de l’utilisateur à la communauté. Le champ « update » correspond à la dernière modification des droits de l’utilisateur sur la communauté.

Lors de la livraison, une date fixe de création et de modification est ajoutée à chaque utilisateur : 1er janvier 2025.

Les champs « creation » et « update » sont actualisés lors d’un appel « PUT /communities/{community}/users/{user} » pour l’ajout d’un utilisateur.

Le champ « update » est actualisé lors de l’appel « PUT /communities/{community}/users/{user} » pour une modification de droits d’un utilisateur.

Ajout de la notion de « publicité » d’un évènement #

Ajout de la notion de « publicité » d’un évènement pour déterminer si ceux-ci doivent être publics dans la nouvelle route présentée ci-dessous.

Cette notion est représentée par le champ « public_activity » ajouté aux données stockées et offres. Par défaut et pour l’existant, sa valeur est à false.

La valeur de ce champ peut être modifiée grâce à ses routes :

  • PATCH /datastores/{datastore}/stored_data/
  • POST /datastores/{datastore}/configurations/{configuration}/offerings
  • PATCH /datastores/{datastore}/offerings/

/datastores/{datastore}/stored_data/{stored_data}

{
    "name": "string",
    "open": true,
    "description": "string",
    "edition": {
        "from": "2025-08-08",
        "to": "2025-08-08"
    },
    "extent": {},
    "extra": {},
    "public_activity": true
}

Ajout d’une route d’activité publique d’une communauté #

Une route permet de récupérer le flux d’évènements publics d’une communauté : GET /communities/{technical_name}/activity

Les paramètres possibles de la requêtes sont :

  • before (type date , par defaut=NOW) : permet de filtrer sur les entitées créées avant la date indiquée
  • after (type date , par defaut=NOW-15jours) : permet de filtrer sur les entitées créées après la date indiquée

Seuls la création et la modification des données stockées et des offerings qui ont un champ « public_activity » à « true » sont affichées dans le flux.

/communities/{technical_name}/activity
{
    "id": "string",
    "title": "string",
    "subtitle": "string",
    "updated": "2025-08-08T09:29:15.762Z",
    "links": [
        {
            "href": "string",
            "rel": "self",
            "type": "string",
            "title": "string"
        }
    ],
    "rights": "string",
    "author": {
        "name": "string",
        "email": "string"
    },
    "entries": [
        {
            "id": "string",
            "title": "string",
            "subtitle": "string",
            "updated": "2025-08-08T09:29:15.762Z",
            "links": [
                {
                    "href": "string",
                    "rel": "self",
                    "type": "string",
                    "title": "string"
                }
            ],
            "content": "string",
            "categories": [
                {
                    "term": "string",
                    "label": "string"
                }
            ],
            "polygon": {
                "west": 0,
                "south": 0,
                "east": 0,
                "north": 0
            }
        }
    ]
}

Permission de la suppression d’une livraison au statut UNSTABLE #

La suppression d’une livraison au statut UNSTABLE est maintenant possible avec la route :

/datastores/{datastore}/uploads/{upload}

API de téléchargement d’un fichier d’une livraison #

Mise en place d’une API permettant de récupérer un fichier contenu dans une livraison.

Le paramètre à préciser dans la requête :

  • path : Le "chemin" relatif du fichier souhaité au sein de la livraison en request param

/datastores/{datastore}/uploads/{upload}/data

En sortie, le fichier demandé est téléchargé.

Changement API modification d’une livraison #

Pour la route API « PATCH /datastores/{datastore}/uploads/{upload} », il est maintenant possible de modifier le SRS de la livraison dans le request body de l’API.

Ignorer les fichiers préfixés par le double underscore « __ » lors des vérifications et traitements #

Afin d’améliorer la maintenabilité du système, les fichiers préfixés par le double underscore « __ » sont ignorés lors des vérifications de la livraison et lors des traitements. En conséquence, par exemple, pour la génération d’une donnée stockée « ARCHIVE » depuis une livraison « ARCHIVE », les fichiers « ignorés » présents dans la livraison ne se retrouvent pas dans la donnée stockée.

Correction de bugs #

  • [ENTREPOT] Correction de mauvais filtrage sur les noms de livraison lorsque le nom contenait un underscore « _ »
  • [ENTREPOT] Correction d’un bug où le nombre de résultats était différent sur la route « /api/datastores/{datastore}/permissions » selon l’utilisation ou non du paramètre « sort »
  • [ENTREPOT] Pour les lignes API « GET /datastores/{datastore}/uploads/{upload}/data » et « GET /datastores/{datastore}/statics/{static}/file », correction du « content-type » renvoyé : pour le gpkg, retourne « application/geopackage+sqlite3 » et, si le MIME type n’est pas connu, renvoie « application/octet-stream »

Paramètres d'affichage

Choisissez un thème pour personnaliser l’apparence du site.