← Back
Public APINo authentication required

Buvette Status API

Read-only REST endpoints for live open/closed status of buvettes. Responses are cached for 60 seconds.

https://www.buvette.ink/api/v1
GET/api/v1/buvettesReturns all buvettes

Returns 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
    }
  ]
}
GET/api/v1/buvettes/{slug}Single buvette

Returns 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
  }
}

Amenity fields use a tri-state boolean: true = yes, false = no, null = unknown.

Core

idUUID
string
nameDisplay name
string
slugURL-safe identifier
string
descriptionShort description
string | null
updatedAtISO 8601 timestamp
string

Status

isOpenCurrent open/closed status
boolean

Location

addressStreet address
string | null
city
string | null
postalCode
string | null
regionCanton / region
string | null
countryISO country code
string | null
latWGS 84 latitude
number | null
lngWGS 84 longitude
number | null

Contact

phonePhone number
string | null
websiteWebsite URL
string | null
instagramHandleHandle without @
string | null

Schedule

openingHoursPer-day open/close times
object | null
seasonStartSeason open date (YYYY-MM-DD)
string | null
seasonEndSeason close date (YYYY-MM-DD)
string | null

Media

menuFileUrlURL to menu PDF/image
string | null

Amenities

isOutdoorOutdoor seating
boolean | null
nearWaterNear water
boolean | null
hasUmbrellasUmbrellas / shade
boolean | null
hasFoodFood available
boolean | null
hasDrinksDrinks available
boolean | null
dogFriendlyDogs allowed
boolean | null
familyFriendlyFamily friendly
boolean | null
hasToiletsToilets on site
boolean | null
swimmingNearbySwimming nearby
boolean | null
isWheelchairAccessibleWheelchair accessible
boolean | null

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.