Read-only REST endpoints for live open/closed status of buvettes. Responses are cached for 60 seconds.
Base URL
https://www.buvette.ink/api/v1Endpoints
/api/v1/buvettesReturns all buvettesReturns the full list ordered by name.
{
"buvettes": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Buvette du Lac",
"slug": "buvette-du-lac",
"description": "Lakeside bar open in summer",
"updatedAt": "2025-06-01T12:34:56.000Z",
"isOpen": true,
"address": "Quai de la Buvette 1",
"city": "Lausanne",
"postalCode": "1000",
"region": "Vaud",
"country": "CH",
"lat": 46.5197,
"lng": 6.6323,
"phone": "+41 79 123 45 67",
"website": "https://example.ch",
"instagramHandle": "buvettedulaclausanne",
"openingHours": {
"mon": {
"open": "10:00",
"close": "22:00",
"enabled": true
}
},
"seasonStart": "2025-05-01",
"seasonEnd": "2025-09-30",
"menuFileUrl": "https://example.ch/menu.pdf",
"isOutdoor": true,
"nearWater": true,
"hasUmbrellas": null,
"hasFood": true,
"hasDrinks": true,
"dogFriendly": false,
"familyFriendly": true,
"hasToilets": null,
"swimmingNearby": true,
"isWheelchairAccessible": false
}
]
}/api/v1/buvettes/{slug}Single buvetteReturns a single buvette by its slug. Returns 404 if not found.
{
"buvette": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Buvette du Lac",
"slug": "buvette-du-lac",
"description": "Lakeside bar open in summer",
"updatedAt": "2025-06-01T12:34:56.000Z",
"isOpen": true,
"address": "Quai de la Buvette 1",
"city": "Lausanne",
"postalCode": "1000",
"region": "Vaud",
"country": "CH",
"lat": 46.5197,
"lng": 6.6323,
"phone": "+41 79 123 45 67",
"website": "https://example.ch",
"instagramHandle": "buvettedulaclausanne",
"openingHours": {
"mon": {
"open": "10:00",
"close": "22:00",
"enabled": true
}
},
"seasonStart": "2025-05-01",
"seasonEnd": "2025-09-30",
"menuFileUrl": "https://example.ch/menu.pdf",
"isOutdoor": true,
"nearWater": true,
"hasUmbrellas": null,
"hasFood": true,
"hasDrinks": true,
"dogFriendly": false,
"familyFriendly": true,
"hasToilets": null,
"swimmingNearby": true,
"isWheelchairAccessible": false
}
}Response fields (30 total)
Amenity fields use a tri-state boolean: true = yes, false = no, null = unknown.
Core
idUUIDstringnameDisplay namestringslugURL-safe identifierstringdescriptionShort descriptionstring | nullupdatedAtISO 8601 timestampstringStatus
isOpenCurrent open/closed statusbooleanLocation
addressStreet addressstring | nullcitystring | nullpostalCodestring | nullregionCanton / regionstring | nullcountryISO country codestring | nulllatWGS 84 latitudenumber | nulllngWGS 84 longitudenumber | nullContact
phonePhone numberstring | nullwebsiteWebsite URLstring | nullinstagramHandleHandle without @string | nullSchedule
openingHoursPer-day open/close timesobject | nullseasonStartSeason open date (YYYY-MM-DD)string | nullseasonEndSeason close date (YYYY-MM-DD)string | nullMedia
menuFileUrlURL to menu PDF/imagestring | nullAmenities
isOutdoorOutdoor seatingboolean | nullnearWaterNear waterboolean | nullhasUmbrellasUmbrellas / shadeboolean | nullhasFoodFood availableboolean | nullhasDrinksDrinks availableboolean | nulldogFriendlyDogs allowedboolean | nullfamilyFriendlyFamily friendlyboolean | nullhasToiletsToilets on siteboolean | nullswimmingNearbySwimming nearbyboolean | nullisWheelchairAccessibleWheelchair accessibleboolean | nullCaching
All responses include Cache-Control: public, max-age=60, stale-while-revalidate=300. Data is fresh within 60 seconds and served stale for up to 5 minutes while revalidating.