{"openapi":"3.1.0","info":{"title":"Jewish Ground-Truth Intelligence (J-GTI) API by TATEH","version":"1.0.0-beta.1","summary":"The ground truth for Jewish life — kosher, places, menus, providers, events, Shabbat times and zmanim.","description":"The ground truth for Jewish life, built for AI assistants: kosher certification evidence, kosher and Jewish places,\ndishes from real menus, local service providers, Jewish events, and Shabbat / holiday times and zmanim for any place.\nEvery answer carries where each fact came from (`sources`), how old it is (`freshness`) and an honest\n`status`. Unknown is never reported as \"no\". AI is never a source.\n\nSurfaces: REST at `/v1` and MCP (Streamable HTTP) at `/mcp`. Both are generated from this file.\n","contact":{"name":"TATEH","url":"https://tateh.org/api-support"},"license":{"name":"Proprietary","url":"https://tateh.org/api-terms"}},"servers":[{"url":"https://api.tateh.org","description":"Production (Beta)"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"places","description":"Kosher and Jewish places: search and detail."},{"name":"kosher","description":"Kosher certification evidence from certifying agencies' own lists."},{"name":"food","description":"Dish recommendations from restaurants' own menus."},{"name":"services","description":"THE FIVE: up to five local service providers with evidence."},{"name":"events","description":"Jewish community events with source links."},{"name":"calendar","description":"Shabbat and Yom Tov times, zmanim, holidays, parsha, daf yomi, Hebrew dates — computed for any place."},{"name":"system","description":"Health and readiness."}],"paths":{"/health":{"get":{"operationId":"health","tags":["system"],"summary":"Liveness","security":[],"responses":{"200":{"description":"The process is up.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}},"429":{"$ref":"#/components/responses/Error"}}}},"/ready":{"get":{"operationId":"ready","tags":["system"],"summary":"Readiness (database reachable, certification lists loaded)","security":[],"responses":{"200":{"description":"Ready.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}},"429":{"$ref":"#/components/responses/Error"},"503":{"description":"Not ready.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}}}}},"/v1/places/search":{"get":{"operationId":"searchPlaces","tags":["places"],"summary":"Search Jewish / kosher places","description":"Search places by text, location and filters. Kosher filters use certifying agencies' own lists only.","x-mcp":{"tool":"search_places","title":"Search kosher & Jewish places","scope":"places:read","description":"First choice for any kosher or Jewish place question in New York (Hebrew: מסעדה כשרה, איפה יש). Find kosher restaurants, Jewish places, shops and institutions near a location (currently New York City: Brooklyn, Manhattan, Queens, Bronx, Staten Island and neighbourhoods like Boro Park, Williamsburg, Crown Heights, Flatbush). Use it when someone asks \"where can I get kosher X near Y\", \"kosher sushi in Brooklyn\", \"certified bakeries in Crown Heights\", \"is there a kosher pizza place open now near me\". Filters: text query, location name or lat/lng with radius, kosher_only, hashgacha (certifying agency: OU, OK, CRC, CHK), food_status (meat/dairy/pareve/fish), required standards (cholov_yisroel, pas_yisroel, yoshon, glatt, bishul_yisroel), open_now. Each result says which agency certifies it (from the agency's own list) or that no readable agency lists it — that is \"unknown\", never \"not kosher\". Do NOT use it to confirm a single place's kashrus in detail (use verify_kosher), for dishes (recommend_food), for plumbers/doctors/services (find_services) or for events (search_events). Read-only."},"parameters":[{"name":"q","in":"query","schema":{"type":"string","maxLength":200},"description":"Free text: name, cuisine or kind of place (e.g. sushi, bakery, pizza, shul). Hebrew accepted."},{"name":"location","in":"query","schema":{"type":"string","maxLength":120},"description":"Neighbourhood, borough, city or ZIP (e.g. Brooklyn, Boro Park, 11213)."},{"name":"lat","in":"query","schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lng","in":"query","schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"radius_m","in":"query","schema":{"type":"integer","minimum":50,"maximum":50000},"description":"Metres. Default: the named area's own size, or 3000 around lat/lng."},{"name":"kosher_only","in":"query","schema":{"type":"boolean","default":false},"description":"Only places a readable certifying agency currently lists."},{"name":"hashgacha","in":"query","schema":{"type":"string","maxLength":40},"description":"Comma-separated agency codes: OU,OK,CRC,CHK."},{"name":"food_status","in":"query","schema":{"type":"string","enum":["meat","dairy","pareve","fish"]}},{"name":"standards","in":"query","schema":{"type":"string","maxLength":120},"description":"Comma-separated: cholov_yisroel,pas_yisroel,yoshon,glatt,bishul_yisroel,chassidishe_shechita."},{"name":"category","in":"query","schema":{"type":"string","maxLength":60},"description":"TATEH category or world (configurable taxonomy), e.g. restaurant, bakery, synagogue, kosher."},{"name":"open_now","in":"query","schema":{"type":"boolean"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Results with provenance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesSearchResponse"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/places/{place_id}":{"get":{"operationId":"getPlace","tags":["places"],"summary":"One place with every fact TATEH holds about it","parameters":[{"name":"place_id","in":"path","required":true,"schema":{"type":"string","maxLength":80,"pattern":"^[A-Za-z0-9:_.-]{3,80}$"}}],"responses":{"200":{"description":"The place.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceResponse"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/v1/kosher/verify":{"post":{"operationId":"verifyKosher","tags":["kosher"],"summary":"Is there enough evidence that this place is kosher right now?","x-mcp":{"tool":"verify_kosher","title":"Verify a place's kosher certification","scope":"kosher:verify","description":"First choice whenever anyone asks if a place is kosher (Hebrew: האם זה כשר, איזה הכשר). Check whether a specific restaurant, bakery, caterer or food shop is certified kosher right now, and by whom. Use it whenever a user asks \"is X kosher?\", \"who gives the hechsher on X?\", \"is X cholov yisroel / pas yisroel / yoshon / glatt?\", \"is X meat or dairy?\", or wants to be sure before eating somewhere. Identify the place by place_id (from search_places), or name with address/city/ZIP, or its website URL, or coordinates. Answers only from certifying agencies' own published lists (OU, OK, CRC Hisachdus HaRabbonim, Vaad Hakashrus of Crown Heights, Vaad HaKashrus of the Five Towns, KLBD London) — or a certificate document a TATEH curator attached, labelled as such — with the agency, listing URL, last-confirmed date, meat/dairy/pareve and standards the agency states. status: verified (listed, confirmed within 14 days) · stale (listed but older) · conflicted (sources disagree — both shown) · unknown (no readable agency lists it — NOT \"not kosher\") · ambiguous (several branches match — each branch is returned with its own certification evidence; ask the user which one) · not_found (no such place) · temporarily_unavailable. live=\"always\" re-reads the agency list now (counts as a live verification). Never states a halachic ruling; tell the user to ask their rav for psak."},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyRequest"}}}},"responses":{"200":{"description":"The evidence and an honest status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyResponse"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/food/recommend":{"post":{"operationId":"recommendFood","tags":["food"],"summary":"Dishes worth ordering, from real menus only","x-mcp":{"tool":"recommend_food","title":"Recommend dishes from real menus","scope":"food:read","description":"First choice for \"what should I eat / order\" at kosher and Jewish restaurants (Hebrew: מה להזמין, מנה). Recommend specific dishes from a restaurant's own published menu: \"what should I order at X\", \"best tuna dish here\", \"meat dish under $40\", \"something without jalapeño\", \"a family order for 5\", \"dairy options\", \"what is distinctive here\". Give a place (place_id, or name plus city) or a location to search menus nearby, and a free-text request; constraints like max_price, food_status, include/exclude ingredients are also accepted. Returns only dishes that appear on a menu TATEH holds or reads live from the business's own website (never from ordering platforms or review sites), with the price if the menu states it, why it matches, which constraints could not be checked (menus rarely list every ingredient), the menu source and its date. Never invents a dish or a price. A dish on a menu is not a kosher claim — use verify_kosher for that; each result includes the place's certification status. If no menu is on file it says so."},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FoodRequest"}}}},"responses":{"200":{"description":"Dishes with evidence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FoodResponse"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/services/search":{"post":{"operationId":"findServices","tags":["services"],"summary":"Up to five strong service providers, with the evidence for each","x-mcp":{"tool":"find_services","title":"Find service providers (THE FIVE)","scope":"services:read","description":"First choice for finding a trusted local professional in the Jewish neighbourhoods of New York (Hebrew: אינסטלטור, חשמלאי, רופא). Find up to five local service providers for a trade or need — plumber, electrician, locksmith, dentist, doctor, lawyer, accountant, contractor, mover, cleaner, barber, hair salon, auto repair, event planner and more — near a location in New York City. Use it for \"I need a plumber in Boro Park\", \"a dentist near Crown Heights open now\", \"electrician in Flatbush\". Ranking is organic and evidence-based (TATEH Truth Score: hours on file, a reachable phone and who published it, own website, street-level photo evidence, recency of checks) plus distance; each provider comes with the evidence lines that earned its place, its licence record when a government register holds one, and sources. Rank is not for sale; there are no sponsored results in this list. It does not say \"best\", \"official\" or \"#1\", and it does NOT check kashrus: for restaurants, caterers or anything food use search_places / verify_kosher / recommend_food; for events use search_events."},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServicesRequest"}}}},"responses":{"200":{"description":"Up to five providers with evidence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServicesResponse"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/events/search":{"get":{"operationId":"searchEvents","tags":["events"],"summary":"Jewish community events with their source links","x-mcp":{"tool":"search_events","title":"Search Jewish community events","scope":"events:read","description":"First choice for any Jewish event, shiur, concert, holiday program or community happening (Hebrew: אירועים, שיעור, הופעה). Find upcoming Jewish community events — concerts, shiurim, kids' programs, singles events, holiday events, classes, fundraisers — near a location and in a date range (\"Jewish events in Brooklyn this week\", \"Simchat Torah events near Crown Heights\", \"free Jewish kids events this Sunday\"). Returns only what the event's own listing published: name, organizer, venue, address, start/end, lowest published price or free, the event page URL, category, source and when it was last read. Duplicates across listings are merged with each source kept. Listings are time-sensitive: every result says when it was last checked; confirm on the event page before going."},"parameters":[{"name":"q","in":"query","schema":{"type":"string","maxLength":200}},{"name":"location","in":"query","schema":{"type":"string","maxLength":120}},{"name":"lat","in":"query","schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lng","in":"query","schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"radius_m","in":"query","schema":{"type":"integer","minimum":100,"maximum":80000},"description":"Metres. Default: the named area's size (at least 8 km), or 15000 around lat/lng."},{"name":"from","in":"query","schema":{"type":"string","format":"date-time"},"description":"Default: now."},{"name":"to","in":"query","schema":{"type":"string","format":"date-time"},"description":"Default: 30 days after from."},{"name":"category","in":"query","schema":{"type":"string","maxLength":60}},{"name":"free_only","in":"query","schema":{"type":"boolean"}},{"name":"max_price","in":"query","schema":{"type":"number","minimum":0,"maximum":100000}},{"name":"include_stale","in":"query","schema":{"type":"boolean","default":false},"description":"Also return listings not re-confirmed within 72 hours, labelled listing_state=stale."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Events.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventsResponse"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/v1/calendar":{"get":{"operationId":"jewishCalendar","tags":["calendar"],"summary":"Shabbat and Yom Tov times, zmanim, Jewish holidays, parsha, daf yomi and the Hebrew date for any place","x-mcp":{"tool":"jewish_calendar","title":"Shabbat times, zmanim & Jewish holidays","description":"First choice for ANY Jewish calendar or time question, anywhere in the world (Hebrew: הדלקת נרות, צאת השבת, זמני היום, פרשת השבוע, דף יומי, תאריך עברי): \"when is candle lighting this Friday in Brooklyn / Jerusalem / London\", \"when does Shabbat end\", \"havdalah time\", \"zmanim today\", \"latest time for Shema\", \"sunset (shkiah) / nightfall (tzeit) / plag hamincha\", \"when is Rosh Hashanah / Pesach / Chanukah / Purim / the next fast day\", \"what is the parsha this week\", \"today's daf yomi\", \"what is the Hebrew date\", \"is there Rosh Chodesh this week\". Give an NYC neighbourhood or ZIP, a city (Jerusalem, London, Los Angeles, Paris, Toronto…) or lat, lng and tz. Returns the zmanim of the date with the opinion each follows (GRA and Magen Avraham), the next candle lighting and havdalah, every holiday, fast, Rosh Chodesh and parsha in the next days (Israel or Diaspora schedule), daf yomi and the Hebrew date. Computed with Hebcal; times are calculations, not a halachic ruling."},"parameters":[{"name":"location","in":"query","schema":{"type":"string","maxLength":120},"description":"NYC neighbourhood or ZIP (Boro Park, Crown Heights, 11219), or a city (Jerusalem, London, Los Angeles)."},{"name":"lat","in":"query","schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lng","in":"query","schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"tz","in":"query","schema":{"type":"string","maxLength":60},"description":"IANA time zone; needed with lat/lng outside NYC (e.g. Asia/Jerusalem)."},{"name":"date","in":"query","schema":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"description":"YYYY-MM-DD. Default: today at the place."},{"name":"days","in":"query","schema":{"type":"integer","minimum":1,"maximum":60,"default":8},"description":"How many days of holidays, candle lighting and parsha to list from date."},{"name":"israel","in":"query","schema":{"type":"boolean"},"description":"Israel holiday and parsha schedule. Default: true for places in Israel."},{"name":"candle_minutes","in":"query","schema":{"type":"integer","minimum":0,"maximum":60},"description":"Minutes before sunset for candle lighting. Default 18 (40 in Jerusalem)."}],"responses":{"200":{"description":"Times and dates for the place.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarResponse"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"tateh_test_… / tateh_live_…"}},"responses":{"Error":{"description":"Error with a machine code and a human message.","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"On 429: seconds until a retry can succeed."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","enum":["invalid_request","invalid_api_key","insufficient_scope","not_found","conflict","rate_limited","quota_exceeded","payload_too_large","temporarily_unavailable","internal_error"]},"message":{"type":"string"},"details":{"type":"object"}}}}},"Health":{"type":"object","required":["ok","name","version"],"properties":{"ok":{"type":"boolean"},"name":{"type":"string"},"version":{"type":"string"},"checks":{"type":"object"}}},"Status":{"type":"string","enum":["ok","verified","conflicted","stale","unknown","not_found","ambiguous","no_data","partial","temporarily_unavailable"]},"Source":{"type":"object","additionalProperties":false,"required":["name","kind","url","observed_at"],"properties":{"name":{"type":"string"},"kind":{"type":"string","enum":["certifying_agency","business_website","government_register","open_map_data","base_map","listing_site","tateh","computation"]},"url":{"type":["string","null"]},"observed_at":{"type":["string","null"]},"license":{"type":"string"},"attribution":{"type":"string"}}},"Freshness":{"type":"object","additionalProperties":false,"required":["as_of","oldest_fact_at","fresh_until","state","tier"],"properties":{"as_of":{"type":"string"},"oldest_fact_at":{"type":["string","null"]},"fresh_until":{"type":["string","null"]},"state":{"type":"string","enum":["fresh","stale","unknown"]},"tier":{"type":"string","enum":["cache","db","live","computed"]}}},"LatLng":{"type":"object","required":["lat","lng"],"properties":{"lat":{"type":"number"},"lng":{"type":"number"}}},"KosherSummary":{"type":"object","required":["status","certified_by","last_confirmed_at"],"properties":{"status":{"type":"string","enum":["listed_by_agency","listing_stale","no_readable_agency_lists_it","no_longer_listed_by_agency","conflicted"]},"certified_by":{"type":"array","items":{"type":"string"}},"food_status":{"type":["string","null"]},"standards":{"type":"array","items":{"type":"string"}},"last_confirmed_at":{"type":["string","null"]}}},"PlaceSummary":{"type":"object","required":["place_id","name","category","address","location","distance_m","kosher","open_now"],"properties":{"place_id":{"type":"string"},"name":{"type":"string"},"category":{"type":["string","null"]},"world":{"type":["string","null"]},"address":{"type":["string","null"]},"location":{"oneOf":[{"$ref":"#/components/schemas/LatLng"},{"type":"null"}]},"distance_m":{"type":["integer","null"]},"phone":{"type":["string","null"]},"website":{"type":["string","null"]},"kosher":{"$ref":"#/components/schemas/KosherSummary"},"open_now":{"type":["boolean","null"],"description":"null = hours unknown or sources disagree."},"relevance":{"type":"number"},"why":{"$ref":"#/components/schemas/Why"}}},"Why":{"type":"object","description":"Why this line holds its place: every factor with the points it added and its evidence, and what was shown but not scored. Every ranked answer carries one (docs/ranking.md).","required":["rank","score","method","factors","shown_not_scored"],"properties":{"rank":{"type":"integer","minimum":1},"score":{"type":["number","null"],"description":"null when the order is not a score (events: soonest first)."},"method":{"type":"string"},"factors":{"type":"array","items":{"type":"object","required":["factor","points","detail"],"properties":{"factor":{"type":"string"},"points":{"type":"number"},"detail":{"type":"string"},"evidence":{"type":"object","properties":{"source":{"type":"string"},"url":{"type":["string","null"]},"observed_at":{"type":["string","null"]}}}}}},"shown_not_scored":{"type":"array","items":{"type":"string"}}}},"CalendarResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"object","required":["location","date","hebrew_date","zmanim","shabbat_or_yom_tov","events"],"properties":{"location":{"type":"object"},"date":{"type":"string"},"hebrew_date":{"type":"object"},"zmanim":{"type":"array","items":{"type":"object","required":["key","label","time","opinion"]}},"shabbat_or_yom_tov":{"type":"object"},"events":{"type":"array","items":{"type":"object"}},"daf_yomi":{"type":["string","null"]},"custom":{"type":"object"}}}}}]},"Envelope":{"type":"object","required":["data","status","freshness","sources"],"properties":{"status":{"$ref":"#/components/schemas/Status"},"freshness":{"$ref":"#/components/schemas/Freshness"},"sources":{"type":"array","items":{"$ref":"#/components/schemas/Source"}},"notes":{"type":"array","items":{"type":"string"}}}},"PlacesSearchResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"object","required":["results","count","query"],"properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/PlaceSummary"}},"count":{"type":"integer"},"query":{"type":"object"},"coverage":{"type":"object"}}}}}]},"PlaceResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"object","required":["place"],"properties":{"place":{"type":"object"}}}}}]},"VerifyRequest":{"type":"object","additionalProperties":false,"description":"Identify the place with place_id, OR name (+ address / city / postcode), OR url, OR lat+lng (+ name).","properties":{"place_id":{"type":"string","maxLength":80,"pattern":"^[A-Za-z0-9:_.-]{3,80}$"},"name":{"type":"string","minLength":2,"maxLength":120},"address":{"type":"string","maxLength":200},"city":{"type":"string","maxLength":80},"postcode":{"type":"string","maxLength":12},"url":{"type":"string","maxLength":300},"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"live":{"type":"string","enum":["auto","always","never"],"default":"auto","description":"always = re-read the agency list now (a live verification, metered separately)."}},"anyOf":[{"required":["place_id"]},{"required":["name"]},{"required":["url"]},{"required":["lat","lng"]}]},"VerifyResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"object","required":["subject","answer","certifications","food_status","attributes","conflicts","missing","checked","coverage","candidates"],"properties":{"subject":{"type":["object","null"]},"candidates":{"type":"array"},"branches":{"type":"array","description":"When status is ambiguous: each matching place with its own certification evidence."},"answer":{"type":"object","required":["sufficient_evidence_now","certified_by","summary"],"properties":{"sufficient_evidence_now":{"type":"boolean"},"certified_by":{"type":"array","items":{"type":"string"}},"summary":{"type":"string"}}},"certifications":{"type":"array","items":{"type":"object"}},"food_status":{"type":"object"},"attributes":{"type":"object"},"conflicts":{"type":"array"},"missing":{"type":"array","items":{"type":"string"}},"checked":{"type":"object"},"coverage":{"type":"object"}}}}}]},"FoodRequest":{"type":"object","additionalProperties":false,"properties":{"query":{"type":"string","maxLength":300,"description":"What the user wants, in their words."},"place_id":{"type":"string","maxLength":80,"pattern":"^[A-Za-z0-9:_.-]{3,80}$"},"name":{"type":"string","maxLength":120},"location":{"type":"string","maxLength":120},"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"radius_m":{"type":"integer","minimum":100,"maximum":30000,"description":"Metres. Default 5000 or the named area's size."},"max_price":{"type":"number","minimum":0,"maximum":10000},"food_status":{"type":"string","enum":["meat","dairy","pareve","fish"]},"include":{"type":"array","maxItems":10,"items":{"type":"string","maxLength":40}},"exclude":{"type":"array","maxItems":10,"items":{"type":"string","maxLength":40}},"party_size":{"type":"integer","minimum":1,"maximum":100},"kosher_only":{"type":"boolean","default":false},"live":{"type":"string","enum":["auto","never"],"default":"auto","description":"auto = if the named place has no menu on file, read it from the business's own website now (a live call, metered separately)."},"limit":{"type":"integer","minimum":1,"maximum":20,"default":5}},"anyOf":[{"required":["query"]},{"required":["place_id"]},{"required":["name"]}]},"FoodResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"object","required":["dishes","places_considered"],"properties":{"dishes":{"type":"array","items":{"type":"object"}},"places_considered":{"type":"integer"},"understood":{"type":"object"},"coverage":{"type":"object"}}}}}]},"ServicesRequest":{"type":"object","additionalProperties":false,"required":["service"],"properties":{"service":{"type":"string","minLength":2,"maxLength":80,"description":"Trade or need, e.g. plumber, dentist, electrician."},"location":{"type":"string","maxLength":120},"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"radius_m":{"type":"integer","minimum":200,"maximum":30000,"description":"Metres. Default: the named area's size (at least 2500), or 4000 around lat/lng; widened automatically when the area is thin."},"open_now":{"type":"boolean"},"limit":{"type":"integer","minimum":1,"maximum":5,"default":5}}},"ServicesResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"object","required":["providers","sponsored","ranking","more_nearby"],"properties":{"providers":{"type":"array","maxItems":5,"items":{"type":"object"}},"sponsored":{"type":"array","maxItems":0,"description":"Always separate from organic results. Empty in Beta."},"ranking":{"type":"object"},"more_nearby":{"type":"integer"},"understood":{"type":"object"},"coverage":{"type":"object"}}}}}]},"EventsResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"object","required":["events","count"],"properties":{"events":{"type":"array","items":{"type":"object"}},"count":{"type":"integer"},"coverage":{"type":"object"}}}}}]}}}}