Aller au contenu principal

Endpoints - Villes

Les endpoints de villes permettent d'accéder aux informations sur les villes et leurs configurations.

Liste des villes

Récupère la liste de toutes les villes actives avec leurs données complètes.

Requête

GET /public/cities

Réponse

[
{
"id": "city-uuid",
"name": "Paris",
"country": "France",
"population": 2161000,
"status": "ACTIF",
"outOfTheBins": "Les déchets volumineux doivent être déposés en déchetterie...",
"presentationOfBins": "Présentez vos bacs la veille au soir...",
"returnOfBins": "Rentrez vos bacs après la collecte...",
"respectOfCalendar": "Il est important de respecter le calendrier...",
"holidays": "Les jours fériés peuvent modifier les jours de collecte...",
"cityGroup": {
"id": "group-uuid",
"name": "Paris Métropole",
"type": "METROPOLE"
},
"wasteTypes": [
{
"id": "waste-type-uuid",
"name": "Verre",
"description": "Bouteilles et bocaux en verre",
"instructions": "Vider et rincer avant de jeter",
"color": "#2E7D32",
"colorLight": "#4CAF50",
"icon": "glass",
"imageUrl": "https://...",
"details": [
{
"id": "detail-uuid",
"material": "Bouteille en verre",
"description": "Bouteille en verre transparent ou coloré",
"instructions": "Retirer les bouchons et capsules",
"imageUrl": "https://..."
}
]
}
],
"wasteCollectionPlaces": [
{
"id": "place-uuid",
"name": "Centre-ville",
"collectionDays": [
{
"id": "day-uuid",
"name": "Lundi",
"wasteTypeId": "waste-type-uuid",
"description": "Collecte du verre",
"biweekly": false,
"startDate": "2024-01-01T00:00:00.000Z"
}
],
"exceptions": [
{
"id": "exception-uuid",
"dateFrom": "2024-12-25T00:00:00.000Z",
"dateTo": "2024-12-25T23:59:59.999Z",
"wasteTypeId": "waste-type-uuid",
"name": "Noël",
"description": "Pas de collecte le jour de Noël"
}
],
"attachedLocations": [
{
"id": "location-uuid",
"name": "Rue de la Paix",
"reference": "REF001",
"latitude": 48.8566,
"longitude": 2.3522
}
]
}
],
"challenges": [
{
"id": "challenge-uuid",
"name": "Apprenti Trieur",
"description": "Apprenez les bases du tri",
"enabled": true,
"startDate": "2024-01-01T00:00:00.000Z",
"endDate": null,
"order": 1,
"series": [
{
"id": "serie-uuid",
"name": "Série 1",
"description": "Première série de questions",
"order": 1,
"quizQuestions": [
{
"id": "question-uuid",
"material": "Bouteille en plastique",
"question": "Dans quel bac dois-je jeter cette bouteille ?",
"correctWasteTypeId": "waste-type-uuid",
"order": 1
}
]
}
],
"badge": {
"id": "badge-uuid",
"name": "Apprenti Trieur",
"description": "Vous avez complété votre premier challenge",
"icon": "star",
"imageUrl": "https://..."
}
}
],
"recyclingPoints": [
{
"id": "point-uuid",
"name": "Déchetterie Centre",
"address": "123 Rue Example",
"latitude": 48.8566,
"longitude": 2.3522,
"openingHours": "Lun-Ven: 9h-18h"
}
],
"quizQuestions": [
{
"id": "quiz-uuid",
"material": "Bouteille en plastique",
"question": "Dans quel bac dois-je jeter cette bouteille ?",
"correctWasteTypeId": "waste-type-uuid",
"order": 1
}
]
}
]

Exemple d'utilisation

const response = await fetch('https://api.wast-o.org/public/cities');
const cities = await response.json();

// Trouver une ville par nom
const paris = cities.find(city => city.name === 'Paris');
console.log(paris.wasteTypes);

Détails d'une ville

Récupère les détails complets d'une ville spécifique par son ID.

Requête

GET /public/cities/:id

Paramètres

  • id (string, requis) : Identifiant unique de la ville (UUID)

Réponse

La réponse est identique à un élément de la liste des villes (voir ci-dessus).

Exemple d'utilisation

const cityId = 'city-uuid';
const response = await fetch(`https://api.wast-o.org/public/cities/${cityId}`);
const city = await response.json();

console.log(`Ville: ${city.name}`);
console.log(`Types de déchets: ${city.wasteTypes.length}`);
console.log(`Lieux de collecte: ${city.wasteCollectionPlaces.length}`);

Codes d'erreur

  • 404 Not Found : La ville avec l'ID spécifié n'existe pas ou n'est pas active

Groupes de villes

Récupère la liste de tous les groupes de villes (communautés de communes, métropoles, etc.).

Requête

GET /public/city-groups

Réponse

[
{
"id": "group-uuid",
"name": "Paris Métropole",
"type": "METROPOLE",
"code": "PM",
"siren": "123456789",
"cities": [
{
"id": "city-uuid",
"name": "Paris",
"country": "France",
"population": 2161000
}
],
"_count": {
"cities": 1
}
}
]

Exemple d'utilisation

const response = await fetch('https://api.wast-o.org/public/city-groups');
const cityGroups = await response.json();

// Trouver toutes les villes d'un groupe
const metropole = cityGroups.find(group => group.name === 'Paris Métropole');
console.log(`Villes dans la métropole: ${metropole.cities.length}`);

Schémas de données

City

interface City {
id: string;
name: string;
country: string;
population?: number;
status: 'ACTIF' | 'NON_ACTIF';
outOfTheBins?: string;
presentationOfBins?: string;
returnOfBins?: string;
respectOfCalendar?: string;
holidays?: string;
cityGroup?: {
id: string;
name: string;
type: string;
};
wasteTypes: WasteType[];
wasteCollectionPlaces: WasteCollectionPlace[];
challenges: Challenge[];
recyclingPoints: RecyclingPoint[];
quizQuestions: QuizQuestion[];
}

WasteType

interface WasteType {
id: string;
name: string;
description?: string;
instructions?: string;
color?: string;
colorLight?: string;
icon?: string;
imageUrl?: string;
details?: WasteTypeDetail[];
}

interface WasteTypeDetail {
id: string;
material: string;
description?: string;
instructions?: string;
imageUrl?: string;
}

WasteCollectionPlace

interface WasteCollectionPlace {
id: string;
name: string;
collectionDays: WasteCollectionDay[];
exceptions: WasteCollectionException[];
attachedLocations?: AttachedLocation[];
}

interface WasteCollectionDay {
id: string;
name: string; // "Lundi", "Mardi", etc.
wasteTypeId: string;
description?: string;
biweekly?: boolean;
startDate?: string;
}

interface WasteCollectionException {
id: string;
dateFrom: string;
dateTo?: string;
wasteTypeId: string;
name?: string;
description?: string;
}