{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/bissl-at/json-schema/bissl-at-venues-answer-schema.json",
  "title": "VenuesAnswer",
  "x-generated": "2026-11-02",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/bissl-at-openapi.json#/components/schemas/VenuesAnswer",
  "properties": {
    "attribution": {
      "type": "string"
    },
    "cuisine": {
      "description": "The cuisine kept to, when one was asked for.",
      "type": [
        "string",
        "null"
      ]
    },
    "note": {
      "description": "Why there is nothing, when there is a reason to say.",
      "type": [
        "string",
        "null"
      ]
    },
    "places": {
      "items": {
        "$ref": "#/$defs/PlaceListing"
      },
      "type": "array"
    },
    "total_places": {
      "description": "Places matching, of which `places` holds `limit` from `offset` on.",
      "format": "int64",
      "type": "integer"
    }
  },
  "required": [
    "cuisine",
    "total_places",
    "places",
    "note",
    "attribution"
  ],
  "type": "object",
  "$defs": {
    "Place": {
      "description": "A place to eat or drink, the same in every answer.",
      "properties": {
        "address": {
          "description": "Street, house number, postcode and town; null when bissl has none.",
          "type": [
            "string",
            "null"
          ]
        },
        "area": {
          "description": "Its district or town, to say where it is: \"7. Neubau\", \"Mödling\"; null outside every\ntown bissl knows. No filter takes it.",
          "type": [
            "string",
            "null"
          ]
        },
        "cuisines": {
          "description": "Its cuisines as OpenStreetMap names them: austrian, italian, pizza, vietnamese...",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "distance_m": {
          "description": "Metres from the point asked about (`lat`, `lon`), when one was given.",
          "format": "int64",
          "type": [
            "integer",
            "null"
          ]
        },
        "kind": {
          "description": "Its kind as OpenStreetMap tags it: restaurant, fast_food, cafe, bar, pub,\nbiergarten, ice_cream, food_court, bakery or pastry.",
          "type": "string"
        },
        "lat": {
          "format": "double",
          "type": "number"
        },
        "lon": {
          "format": "double",
          "type": "number"
        },
        "name": {
          "type": "string"
        },
        "open_now": {
          "description": "Open right now by its opening hours (Vienna's time); null when bissl can't read them.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "part_of": {
          "description": "The larger place it is part of, as its own website names it - the hotel, castle or\nclub its restaurant or bar is in: \"Das Schloss an der Eisenstrasse\". Null for none.",
          "type": [
            "string",
            "null"
          ]
        },
        "price_level": {
          "description": "\"€\" to \"€€€€\" from its menu's prices, against places of its kind - a restaurant's\nmains, a café's coffee and cake, a bar's cocktails; null while bissl doesn't know.",
          "type": [
            "string",
            "null"
          ]
        },
        "slug": {
          "description": "bissl's name for the place: what `/v1/venues/{slug}` and `get_venue` take.",
          "type": "string"
        },
        "url": {
          "description": "Its page on bissl, with every menu: link to it.",
          "type": "string"
        }
      },
      "required": [
        "slug",
        "name",
        "part_of",
        "kind",
        "cuisines",
        "address",
        "area",
        "lat",
        "lon",
        "open_now",
        "distance_m",
        "price_level",
        "url"
      ],
      "type": "object"
    },
    "PlaceListing": {
      "description": "A place in the list of places.",
      "properties": {
        "has_menu": {
          "description": "bissl read a menu with prices from its website.",
          "type": "boolean"
        },
        "lunch_today": {
          "description": "It serves a lunch menu today.",
          "type": "boolean"
        },
        "place": {
          "$ref": "#/$defs/Place"
        }
      },
      "required": [
        "place",
        "has_menu",
        "lunch_today"
      ],
      "type": "object"
    }
  }
}