Introduction
Titre : API DATAtourisme
Version : 1.0.0
Description : Cette API permet d'accéder aux points d'intérêt (POIs). Elle offre des fonctionnalités de recherche, de filtrage et de récupération des détails des POIs.
URL du serveur : /v1
Authentification
L'API utilise une clé d'authentification unique pour sécuriser les requêtes. Vous pouvez fournir cette clé de deux manières.
Méthode 1 : En-tête HTTP (Recommandée)
Incluez la clé dans l'en-tête X-API-Key de votre requête.
X-API-Key: votre_clé_api_unique
Méthode 2 : Paramètre de requête
Ajoutez la clé comme paramètre api_key dans l'URL de votre requête.
GET /v1/catalog?api_key=votre_clé_api_unique
Lister et rechercher les POIs
GET/catalog
Récupère une liste paginée de l'ensemble des points d'intérêt disponibles, avec de nombreuses options de filtrage et de recherche.
Paramètres de requête
| Nom | Type | Description |
|---|---|---|
filters |
string | Expression de filtres avancée. Voir la section dédiée. |
search |
string | Terme(s) de recherche plein texte. Ex: château. |
lang |
string | Langue(s) pour les champs multilingues. Ex: fr,en. Voir la section dédiée.
|
sort |
string | Champs de tri. Ex: lastUpdate[desc]. Voir la section
dédiée.
|
page |
integer | Numéro de la page. Défaut: 1. Voir la section
Pagination.
|
page_size |
integer | Nombre d'éléments par page. Défaut: 20, Max: 250. |
type, insee, etc. |
string | Filtres spécifiques. Voir les thésaurus pour les valeurs possibles. |
Réponse (200 OK)
La réponse est un objet JSON structuré avec deux clés principales :
{
"objects": [ ... ],
"meta": { ... }
}
objects: Un tableau contenant la liste des objets POI pour la page actuelle. La structure détaillée de chaque objet est disponible dans la section Schéma POI.meta: Un objet contenant les métadonnées de pagination. Voir la section Schéma Metadata pour plus de détails.
Endpoints Pré-filtrés
Ces endpoints sont des raccourcis vers /catalog avec un filtre pré-appliqué
sur le type de POI. Ils acceptent tous les mêmes paramètres que /catalog.
GET /placeOfInterest
: Liste des Lieux d'intérêt.
GET /entertainmentAndEvent : Liste des Fêtes et Manifestations.
GET /tour : Liste
des itinéraires.
GET /product : Liste
des produits.
Détail d'un POI
GET/catalog/{uuid}
Récupère les informations détaillées d'un point d'intérêt spécifique à partir de son UUID.
Paramètres de chemin
| Nom | Type | Description |
|---|---|---|
uuid |
string | Requis. L'identifiant unique du POI. |
Obtenir un Thésaurus
GET/thesaurus/{code}
Récupère les valeurs contrôlées (termes) pour un thésaurus donné, utiles pour construire des filtres précis.
Paramètres de chemin
| Nom | Type | Description |
|---|---|---|
code |
string | Requis. Identifiant du thésaurus. Valeurs possibles : Theme,
Amenity, PeopleAudience, LocomotionMode, DifficultyLevel,
Rating, PointOfInterestClass.
|
Syntaxe du paramètre lang
Ce paramètre permet de spécifier la langue des champs traduisibles dans la réponse.
- Syntaxe : Une liste de codes de langue (ex:
fr,en) séparés par des virgules. - Valeur par défaut : Si le paramètre est omis, la réponse inclura le français
(
fr) et l'anglais (en). - Valeur spéciale `*` : Utilisez
lang=*pour recevoir toutes les langues disponibles pour un champ.
# Demander les POIs avec les champs en français et espagnol
GET /v1/catalog?lang=fr,es
Syntaxe du paramètre filters
Le paramètre filters offre une syntaxe puissante pour construire des requêtes complexes
en combinant plusieurs conditions.
Opérateurs de filtre
Les opérateurs sont placés entre crochets [] après le nom du champ. Ils sont insensibles
à la casse.
| Opérateur | Description | Exemple |
|---|---|---|
[eq] |
Égal à (par défaut) | type[eq]=PlaceOfInterest |
[ne] |
Différent de | amenity[ne]=Wifi |
[gt] |
Supérieur à | hasReview.hasReviewValue[gt]=3 |
[gte] |
Supérieur ou égal à | offers.priceSpecification.minPrice[gte]=10.50 |
[lt] |
Inférieur à | lastUpdate[lt]=2023-01-01 |
[lte] |
Inférieur ou égal à | tourDistance[lte]=5000 |
[in] |
Inclus dans une liste (valeurs séparées par ,) |
isLocatedAt.address.hasAddressCity.isPartOfDepartment.insee[in]=35,22 |
[nin] |
Non inclus dans une liste | type[nin]=Hotel,Restaurant |
[between] |
Compris entre deux bornes (incluses) | lastUpdate[between]=2023-01-01,2023-12-31 |
[text] |
Recherche plein texte sur un champ | label[text]="château" |
[geo_distance] |
Recherche géographique par distance | isLocatedAt.geo[geo_distance]=... |
[geo_bounding] |
Recherche géographique par zone | isLocatedAt.geo[geo_bounding]=... |
Combinaison d'expressions
Utilisez les opérateurs logiques AND et OR pour combiner des filtres. Les
parenthèses () sont supportées pour gérer les priorités.
# Restaurants avec Wifi OU Parking
type=Restaurant AND (isEquippedWith=Wifi OR isEquippedWith=CarPark)
Syntaxe des opérateurs géospatiaux
Ces opérateurs permettent de rechercher des POIs en fonction de leur localisation géographique.
Opérateur [geo_distance]
Recherche les POIs dans un rayon donné autour d'un point central.
- Format :
lat,lon,distanceunité - Unités supportées :
m,km,mi,yd,ft,in,cm,mm. - Contraintes : La latitude doit être entre -90 et 90, la longitude entre -180 et 180, et la distance doit être positive.
# POIs à moins de 10km de Rennes
filters=isLocatedAt.geo[geo_distance]=48.1173,-1.6778,10km
Opérateur [geo_bounding]
Recherche les POIs dans une boîte rectangulaire définie par ses coins supérieur-gauche et inférieur-droit.
- Format :
top_left_lat,top_left_lon,bottom_right_lat,bottom_right_lon - Contraintes :
top_left_latdoit être supérieur àbottom_right_lat, ettop_left_londoit être inférieur àbottom_right_lon.
# POIs dans un quartier de Rennes
filters=isLocatedAt.geo[geo_bounding]=48.118,-1.675,48.115,-1.670
Syntaxe du paramètre sort
Le paramètre sort permet de trier les résultats. Vous pouvez trier par un ou plusieurs
champs, y compris des champs imbriqués.
Opérateurs de tri
| Opérateur | Description | Exemple |
|---|---|---|
[asc] |
Ordre ascendant (par défaut) | sort=label[asc] ou sort=label |
[desc] |
Ordre descendant | sort=lastUpdate[desc] |
Tri sur plusieurs champs
Séparez les champs par une virgule ,. Le tri est appliqué dans l'ordre de la liste.
# Trier par département (croissant), puis par date de mise à jour (décroissant)
sort=isLocatedAt.address.hasAddressCity.isPartOfDepartment.insee,lastUpdate[desc]
Pagination
Pour naviguer dans de grands ensembles de résultats, l'API utilise un système de pagination.
Recommandation : Pour des performances optimales et un accès à l'ensemble des
résultats, il est fortement conseillé d'utiliser les liens next et
previous fournis dans l'objet meta de la réponse.
Attention : L'utilisation directe du paramètre page peut être lente et
est limitée aux 10 000 premiers résultats. Au-delà, l'utilisation des liens next
est obligatoire.
Schéma POI (PointOfInterest)
Ceci est la structure complète et hiérarchique d'un objet POI. Cliquez sur les propriétés pour déplier leur contenu.
Schéma Metadata
L'objet meta accompagne chaque réponse de liste et contient les informations de
pagination.
{
"total": 15320,
"page": 1,
"page_size": 20,
"total_pages": 766,
"next": "/v1/catalog?page=2...",
"previous": null
}
| Propriété | Type | Description |
|---|---|---|
total |
integer | Nombre total de résultats pour la requête. |
page |
integer | Numéro de la page actuelle. |
page_size |
integer | Nombre d'éléments par page. |
total_pages |
integer | Nombre total de pages. |
next |
string | null | URL de la page suivante, ou null si c'est la dernière. |
previous |
string | null | URL de la page précédente, ou null si c'est la première. |