Vue d'ensemble
Ce site expose une API REST pour récupérer les objets Ask Angela en JSON ou GeoJSON. L'API permet de filtrer les données selon différents critères.
Endpoint de base
Format de réponse : JSON ou GeoJSON
Méthode HTTP : GET
CORS : Activé (Access-Control-Allow-Origin: *)
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
format |
string | Non | Format de réponse : geojson (défaut) ou json |
days |
integer | Non | Filtrer les objets modifiés dans les N derniers jours (basé sur le timestamp OSM). Doit être un nombre positif entre 1 et 3650. |
bbox |
string | Non | Bounding box au format min_lon,min_lat,max_lon,max_lat. Exemple : -5,42,10,51 pour la France. |
city |
string | Non | Filtrer par nom de ville (insensible à la casse). Exemple : Paris |
Note : Les paramètres peuvent être combinés. Par exemple : ?days=30&city=Paris&format=json
Exemples d'utilisation
-
Tous les objets en GeoJSON :
https://ask-angela.cipherbliss.com//api/ask-angela.php -
Objets modifiés dans les 7 derniers jours :
https://ask-angela.cipherbliss.com//api/ask-angela.php?days=7 -
Format JSON simple :
https://ask-angela.cipherbliss.com//api/ask-angela.php?format=json -
Objets dans une bounding box (France) :
https://ask-angela.cipherbliss.com//api/ask-angela.php?bbox=-5,42,10,51 -
Objets dans une ville spécifique :
https://ask-angela.cipherbliss.com//api/ask-angela.php?city=Paris -
Combinaison de filtres :
https://ask-angela.cipherbliss.com//api/ask-angela.php?days=30&city=Paris&format=json
Format de réponse
GeoJSON (format=geojson ou par défaut)
Format standard pour les données géographiques, compatible avec la plupart des outils de cartographie.
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [longitude, latitude]
},
"properties": {
"osm_id": 123456,
"osm_type": "node",
"name": "Nom du lieu",
"addr:city": "Ville",
"timestamp": "2024-01-15T10:30:00Z",
"user": "utilisateur_osm"
}
}
],
"metadata": {
"count": 1,
"generated_at": "2024-01-21T12:00:00+00:00",
"source": "OpenStreetMap",
"license": "ODbL"
}
}
JSON simple (format=json)
Format simplifié, liste d'objets sans structure GeoJSON.
{
"objects": [
{
"osm_id": 123456,
"osm_type": "node",
"name": "Nom du lieu",
"city": "Ville",
"longitude": 2.3522,
"latitude": 48.8566,
"timestamp": "2024-01-15T10:30:00Z",
"user": "utilisateur_osm"
}
],
"count": 1,
"generated_at": "2024-01-21T12:00:00+00:00",
"source": "OpenStreetMap",
"license": "ODbL"
}
Utilisation avec cURL
# Récupérer tous les objets
curl "https://ask-angela.cipherbliss.com//api/ask-angela.php"
# Récupérer les objets des 7 derniers jours
curl "https://ask-angela.cipherbliss.com//api/ask-angela.php?days=7"
# Sauvegarder dans un fichier GeoJSON
curl "https://ask-angela.cipherbliss.com//api/ask-angela.php?format=geojson" -o ask-angela.geojson
# Filtrer par ville et sauvegarder
curl "https://ask-angela.cipherbliss.com//api/ask-angela.php?city=Paris&format=json" -o paris-ask-angela.json
Utilisation avec JavaScript
Exemple avec fetch()
// Récupérer les objets des 7 derniers jours
fetch('https://ask-angela.cipherbliss.com//api/ask-angela.php?days=7')
.then(response => response.json())
.then(data => {
console.log(`Nombre d'objets: ${data.metadata.count}`);
data.features.forEach(feature => {
console.log(feature.properties.name);
});
})
.catch(error => {
console.error('Erreur:', error);
});
Exemple avec async/await
async function getAskAngelaObjects(days = null) {
try {
const url = 'https://ask-angela.cipherbliss.com//api/ask-angela.php' + (days ? `?days=${days}` : '');
const response = await fetch(url);
const data = await response.json();
return data;
} catch (error) {
console.error('Erreur:', error);
return null;
}
}
// Utilisation
const data = await getAskAngelaObjects(7);
if (data) {
console.log(`Nombre d'objets: ${data.metadata.count}`);
}
Utilisation avec Python
import requests
import json
# Récupérer tous les objets
response = requests.get('https://ask-angela.cipherbliss.com//api/ask-angela.php')
data = response.json()
print(f"Nombre d'objets: {data['metadata']['count']}")
# Filtrer par ville
response = requests.get('https://ask-angela.cipherbliss.com//api/ask-angela.php?city=Paris')
paris_data = response.json()
# Sauvegarder dans un fichier
with open('ask-angela.geojson', 'w') as f:
json.dump(data, f, indent=2)
Codes de réponse HTTP
| Code | Description |
|---|---|
200 |
Succès - Les données sont retournées |
400 |
Requête invalide - Paramètre incorrect (ex: format invalide) |
404 |
Données non disponibles - Le fichier GeoJSON n'existe pas |
500 |
Erreur serveur - Erreur lors du traitement de la requête |
Limites et performances
- Pas de limite de taux : L'API n'impose pas de limite de requêtes par minute/heure
- Cache : Les données sont mises à jour régulièrement via
make fetch-osm - Taille des réponses : Peut être importante selon le nombre d'objets (plusieurs Mo pour toutes les données)
- Filtrage recommandé : Utilisez les paramètres
days,bboxoucitypour réduire la taille des réponses
Licence et attribution
Les données proviennent d'OpenStreetMap et sont sous licence ODbL.
Le fichier GeoJSON est mis à jour régulièrement via le script make fetch-osm.
Note : Cette API est fournie sans garantie. Les données peuvent ne pas être à jour en temps réel.