NyplWhatsOnTheMenuDataset is a JSON Structure definition published by New York Public Library What's On The Menu, describing 4 properties. It conforms to the https://json-structure.org/meta/core/v0/# meta-schema.
{
"$schema": "https://json-structure.org/meta/core/v0/#",
"$id": "https://raw.githubusercontent.com/api-evangelist/new-york-public-library-whats-on-the-menu/refs/heads/main/json-structure/new-york-public-library-whats-on-the-menu-dataset-structure.json",
"name": "NyplWhatsOnTheMenuDataset",
"description": "Structural layout of the New York Public Library 'What's on the Menu?' open dataset. The dataset is distributed as four related CSV tables (Menu, MenuPage, MenuItem, Dish) packaged in a gzip archive on Amazon S3. This JSON Structure documents the four entity types, their fields, and the foreign-key relationships that join them.",
"type": "object",
"properties": {
"menus": {
"type": "array",
"description": "Menu.csv — one row per digitized physical menu object.",
"items": { "type": { "$ref": "#/definitions/Menu" } }
},
"menuPages": {
"type": "array",
"description": "MenuPage.csv — one row per digitized page; child of Menu.",
"items": { "type": { "$ref": "#/definitions/MenuPage" } }
},
"menuItems": {
"type": "array",
"description": "MenuItem.csv — one row per transcribed dish-on-page line item; links MenuPage and Dish.",
"items": { "type": { "$ref": "#/definitions/MenuItem" } }
},
"dishes": {
"type": "array",
"description": "Dish.csv — one row per normalized/deduplicated dish with appearance and price statistics.",
"items": { "type": { "$ref": "#/definitions/Dish" } }
}
},
"definitions": {
"Menu": {
"type": "object",
"description": "A single historical menu. Root of the hierarchy.",
"properties": {
"id": { "type": "uint32", "description": "Primary key." },
"name": { "type": "string" },
"sponsor": { "type": "string" },
"event": { "type": "string" },
"venue": { "type": "string" },
"place": { "type": "string" },
"physical_description": { "type": "string" },
"occasion": { "type": "string" },
"notes": { "type": "string" },
"call_number": { "type": "string", "description": "NYPL catalog call number." },
"keywords": { "type": "string" },
"language": { "type": "string" },
"date": { "type": "string", "description": "Issue/use date; precision varies." },
"location": { "type": "string" },
"location_type": { "type": "string" },
"currency": { "type": "string" },
"currency_symbol": { "type": "string" },
"status": { "type": "string", "description": "Transcription status: complete, under review, to transcribe." },
"page_count": { "type": "uint16" },
"dish_count": { "type": "uint16" }
},
"required": ["id"]
},
"MenuPage": {
"type": "object",
"description": "A digitized page of a Menu.",
"properties": {
"id": { "type": "uint32", "description": "Primary key." },
"menu_id": { "type": "uint32", "description": "Foreign key -> Menu.id." },
"page_number": { "type": "uint16" },
"image_id": { "type": "string", "description": "NYPL Digital Collections image id." },
"full_height": { "type": "uint16" },
"full_width": { "type": "uint16" },
"uuid": { "type": "uuid" }
},
"required": ["id", "menu_id"]
},
"MenuItem": {
"type": "object",
"description": "A transcribed line item positioning a Dish on a MenuPage.",
"properties": {
"id": { "type": "uint32", "description": "Primary key." },
"menu_page_id": { "type": "uint32", "description": "Foreign key -> MenuPage.id." },
"dish_id": { "type": "uint32", "description": "Foreign key -> Dish.id." },
"price": { "type": "decimal", "precision": 12, "scale": 3 },
"high_price": { "type": "decimal", "precision": 12, "scale": 3 },
"xpos": { "type": "double", "description": "Normalized x position (0..1) on the page image." },
"ypos": { "type": "double", "description": "Normalized y position (0..1) on the page image." },
"created_at": { "type": "datetime" },
"updated_at": { "type": "datetime" }
},
"required": ["id", "menu_page_id"]
},
"Dish": {
"type": "object",
"description": "A normalized dish aggregating all MenuItem occurrences of the same name.",
"properties": {
"id": { "type": "uint32", "description": "Primary key." },
"name": { "type": "string" },
"description": { "type": "string" },
"menus_appeared": { "type": "uint32" },
"times_appeared": { "type": "int32" },
"first_appeared": { "type": "uint16", "description": "Earliest appearance year; 0 = unknown." },
"last_appeared": { "type": "uint16", "description": "Latest appearance year; 0 = unknown." },
"lowest_price": { "type": "decimal", "precision": 12, "scale": 3 },
"highest_price": { "type": "decimal", "precision": 12, "scale": 3 }
},
"required": ["id", "name"]
}
},
"x-relationships": [
{ "from": "MenuPage.menu_id", "to": "Menu.id", "cardinality": "many-to-one" },
{ "from": "MenuItem.menu_page_id", "to": "MenuPage.id", "cardinality": "many-to-one" },
{ "from": "MenuItem.dish_id", "to": "Dish.id", "cardinality": "many-to-one" }
]
}