{
  "openapi": "3.1.0",
  "info": {
    "title": "Private Chef Sydney, directory API",
    "version": "2.0.0",
    "summary": "Read-only JSON for the 22 Sydney private chefs listed.",
    "description": "Static, unauthenticated, cacheable JSON describing the Sydney private-chef directory: the market, per-guest pricing by party size, cuisines, areas and each chef’s menus. Prices are recent quotes in AUD, not offers. There is no availability endpoint; every chef is enquired with through their own booking page (links.enquire). Rebuilt with the site; see as_of.",
    "contact": {
      "email": "enquiries@sydneyprivatechef.com",
      "url": "https://www.sydneyprivatechef.com/api"
    },
    "x-as-of": "2026-10-25"
  },
  "servers": [
    {
      "url": "https://www.sydneyprivatechef.com"
    }
  ],
  "paths": {
    "/api/directory.json": {
      "get": {
        "operationId": "getDirectory",
        "summary": "The market in one document: pricing by party size, cuisines, occasion pages, areas, FAQ and a chef shortlist",
        "responses": {
          "200": {
            "description": "Directory",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Directory"
                }
              }
            }
          }
        }
      }
    },
    "/api/chefs.json": {
      "get": {
        "operationId": "listChefs",
        "summary": "Every chef listed, summarised",
        "responses": {
          "200": {
            "description": "Chef list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChefList"
                }
              }
            }
          }
        }
      }
    },
    "/api/chefs/{slug}.json": {
      "get": {
        "operationId": "getChef",
        "summary": "One chef in full: menus priced a head by number of guests, reviews, enquiry link",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "graeme-corlett2",
                "claudio-claudio",
                "lemon-soul-private-chef",
                "emrys-jones",
                "kerem-engin",
                "sergey-bobylev",
                "ben-orora",
                "sara-salamanca",
                "francesca-francesca2",
                "pierre-gaudin",
                "william-poveromo",
                "michele-guarneri",
                "thais-marouelli",
                "jack-allen",
                "michael-canterbury",
                "michael-antonakis",
                "samantha-grainger",
                "caleb-song",
                "phillip-nguyen",
                "min-kim",
                "sahil-sabhlok",
                "lucas-martinelli"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Chef",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Chef"
                }
              }
            }
          },
          "404": {
            "description": "No such chef (HTML not-found page)"
          }
        }
      }
    },
    "/api/status.json": {
      "get": {
        "operationId": "getStatus",
        "summary": "Liveness and build date",
        "responses": {
          "200": {
            "description": "Status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "GuestsPrice": {
        "type": "object",
        "description": "AUD per guest, all-in, for the party size given",
        "properties": {
          "amount": {
            "type": "integer"
          },
          "currency": {
            "type": "string",
            "const": "AUD"
          },
          "guests_min": {
            "type": [
              "integer",
              "null"
            ]
          },
          "guests_max": {
            "type": [
              "integer",
              "null"
            ]
          },
          "guests": {
            "type": "string",
            "description": "The party size in words, e.g. \"13 to 20\""
          }
        }
      },
      "Rating": {
        "type": "object",
        "properties": {
          "value": {
            "type": "number"
          },
          "count": {
            "type": "integer"
          },
          "scale": {
            "type": "integer",
            "const": 5
          }
        }
      },
      "Menu": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "cuisines": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "dish_count": {
            "type": "integer"
          },
          "price_per_guest": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GuestsPrice"
            },
            "description": "One entry per party-size band"
          },
          "courses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "course": {
                  "type": "string"
                },
                "rule": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "dishes": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      },
      "ChefSummary": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "base": {
            "type": "string"
          },
          "cuisines": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "years_cooking": {
            "type": [
              "integer",
              "null"
            ]
          },
          "hook": {
            "type": "string"
          },
          "price_per_guest_from": {
            "$ref": "#/components/schemas/GuestsPrice"
          },
          "price_per_guest_to": {
            "$ref": "#/components/schemas/GuestsPrice"
          },
          "rating": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Rating"
              },
              {
                "type": "null"
              }
            ]
          },
          "occasion_pages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "availability": {
            "type": "string",
            "const": "on_enquiry"
          },
          "page_indexed": {
            "type": "boolean"
          },
          "links": {
            "type": "object",
            "properties": {
              "json": {
                "type": "string",
                "format": "uri",
                "description": "Full record"
              },
              "html": {
                "type": "string",
                "format": "uri",
                "description": "Profile page"
              },
              "enquire": {
                "type": "string",
                "format": "uri",
                "description": "The chef’s own booking page; open it for the user"
              }
            }
          }
        }
      },
      "Chef": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ChefSummary"
          },
          {
            "type": "object",
            "properties": {
              "bio": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "menus": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Menu"
                }
              },
              "reviews": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "author": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "date": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "date"
                    },
                    "rating": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "body": {
                      "type": "string"
                    }
                  }
                }
              },
              "images": {
                "type": "object",
                "properties": {
                  "portrait": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uri"
                  },
                  "dishes": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uri"
                    }
                  }
                }
              },
              "how_to_enquire": {
                "type": "string"
              },
              "as_of": {
                "type": "string",
                "format": "date"
              }
            }
          }
        ]
      },
      "ChefList": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer"
          },
          "chefs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChefSummary"
            }
          },
          "as_of": {
            "type": "string",
            "format": "date"
          }
        }
      },
      "Directory": {
        "type": "object",
        "description": "See /api/directory.json; keys are stable, string values are prose.",
        "properties": {
          "name": {
            "type": "string"
          },
          "market": {
            "type": "object"
          },
          "currency": {
            "type": "string",
            "const": "AUD"
          },
          "chef_count": {
            "type": "integer"
          },
          "price_per_guest": {
            "type": "object"
          },
          "cuisines": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "pages": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "coverage": {
            "type": "object"
          },
          "chefs": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "faq": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "q": {
                  "type": "string"
                },
                "a": {
                  "type": "string"
                }
              }
            }
          },
          "links": {
            "type": "object"
          },
          "how_to_use": {
            "type": "string"
          },
          "as_of": {
            "type": "string",
            "format": "date"
          }
        }
      },
      "Status": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string"
          },
          "api_version": {
            "type": "string"
          },
          "built_at": {
            "type": "string",
            "format": "date-time"
          },
          "as_of": {
            "type": "string",
            "format": "date"
          }
        }
      }
    }
  }
}