{
  "openapi": "3.0.3",
  "info": {
    "title": "Amsterdam Coffeeshop Menus — /api/v1",
    "version": "1.0.0",
    "description": "Read-only static JSON over checked menu data. GET only, CORS `Access-Control-Allow-Origin: *`, cache `public, max-age=300, stale-while-revalidate=86400`. Info only, no sales, 18+."
  },
  "servers": [{ "url": "https://amsterdamcoffeeshopmenus.eu/api/v1" }],
  "paths": {
    "/shops.json": { "get": { "summary": "Shop directory", "responses": { "200": { "description": "shops array" } } } },
    "/leaderboard.json": { "get": { "summary": "Ranked best price per strain", "responses": { "200": { "description": "leaderboard array" } } } },
    "/geo.json": { "get": { "summary": "Geolocated shops", "responses": { "200": { "description": "geo array" } } } },
    "/history.json": { "get": { "summary": "Price points over time", "responses": { "200": { "description": "history array" } } } },
    "/meta.json": { "get": { "summary": "Build meta", "responses": { "200": { "description": "meta object" } } } },
    "/shop-profiles.json": { "get": { "summary": "Per-shop deal stats", "responses": { "200": { "description": "profiles array" } } } }
  }
}
