{"openapi":"3.1.0","info":{"title":"Preparty public preliminary catering quotes","version":"0.3","description":"Все форматы действующего конструктора и несколько приёмов в одном КП. Создание КП не подтверждает заказ. Без контактов и CRM."},"servers":[{"url":"https://menu.preparty-catering.ru"}],"paths":{"/agents/quotes":{"post":{"operationId":"preparePrepartyQuote","summary":"Подготовить клиентское КП","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["brief","request_key"],"properties":{"brief":{"type":"object","additionalProperties":false,"properties":{"event_date":{"type":"string","format":"date"},"guests":{"type":"integer","minimum":1,"maximum":1000},"meal_time":{"type":"string","enum":["Утро","День","Вечер"]},"density":{"type":"string","enum":["light","medium","heavy"]},"service":{"type":"boolean"},"dishware":{"type":["string","null"],"enum":["Крафт","Фарфор",null],"description":"Крафт, Фарфор или null — явно без нашей посуды. Поле обязательно. Фарфор требует обслуживания."},"duration_minutes":{"type":"integer","minimum":1,"maximum":10080},"budget_total":{"type":"number","exclusiveMinimum":0,"maximum":10000000},"budget_level":{"type":"string","enum":["Бюджетно","Средне","Дорого"],"default":"Средне"},"menu_comment":{"type":"string","maxLength":2000},"drinks_comment":{"type":"string","maxLength":2000},"location_zone":{"type":"string","enum":["inside_mkad","outside_mkad","unknown"]},"format":{"type":"string","enum":["Welcome","Завтрак","Коктейль","Кофе-брейк","Фуршет"]},"furniture":{"type":"boolean","default":false},"hot_appetizers":{"type":"boolean","default":false},"meals":{"type":"array","minItems":1,"maxItems":6,"items":{"type":"object","additionalProperties":false,"required":["format","guests","time","density"],"properties":{"format":{"type":"string","enum":["Welcome","Завтрак","Коктейль","Кофе-брейк","Фуршет"]},"guests":{"type":"integer","minimum":1,"maximum":1000},"time":{"type":"string","enum":["Утро","День","Вечер"]},"density":{"type":"string","enum":["light","medium","heavy"]},"hot_appetizers":{"type":"boolean","default":false}}}}},"required":["event_date","service","dishware","duration_minutes"],"oneOf":[{"required":["meals"],"not":{"anyOf":[{"required":["guests"]},{"required":["meal_time"]},{"required":["density"]},{"required":["format"]}]}},{"required":["guests","meal_time","density"],"not":{"required":["meals"]}}],"allOf":[{"if":{"properties":{"service":{"const":false}},"required":["service"]},"then":{"properties":{"dishware":{"enum":["Крафт",null]},"furniture":{"const":false}}}}]},"request_key":{"type":"string","minLength":1,"maxLength":128}}}}}},"responses":{"200":{"description":"Предварительный расчёт: client_quote_url, brief, result, budget и customer_notes. Все предупреждения обязательно показать клиенту."},"422":{"description":"Недостающие или недопустимые поля"},"429":{"description":"Лимит запросов; повторить позже или обратиться к менеджеру"}}}},"/agents/check":{"post":{"operationId":"checkPrepartyBrief","summary":"Получить недостающие поля","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["brief"],"properties":{"brief":{"type":"object","additionalProperties":false,"properties":{"event_date":{"type":"string","format":"date"},"guests":{"type":"integer","minimum":1,"maximum":1000},"meal_time":{"type":"string","enum":["Утро","День","Вечер"]},"density":{"type":"string","enum":["light","medium","heavy"]},"service":{"type":"boolean"},"dishware":{"type":["string","null"],"enum":["Крафт","Фарфор",null],"description":"Крафт, Фарфор или null — явно без нашей посуды. Поле обязательно. Фарфор требует обслуживания."},"duration_minutes":{"type":"integer","minimum":1,"maximum":10080},"budget_total":{"type":"number","exclusiveMinimum":0,"maximum":10000000},"budget_level":{"type":"string","enum":["Бюджетно","Средне","Дорого"],"default":"Средне"},"menu_comment":{"type":"string","maxLength":2000},"drinks_comment":{"type":"string","maxLength":2000},"location_zone":{"type":"string","enum":["inside_mkad","outside_mkad","unknown"]},"format":{"type":"string","enum":["Welcome","Завтрак","Коктейль","Кофе-брейк","Фуршет"]},"furniture":{"type":"boolean","default":false},"hot_appetizers":{"type":"boolean","default":false},"meals":{"type":"array","minItems":1,"maxItems":6,"items":{"type":"object","additionalProperties":false,"required":["format","guests","time","density"],"properties":{"format":{"type":"string","enum":["Welcome","Завтрак","Коктейль","Кофе-брейк","Фуршет"]},"guests":{"type":"integer","minimum":1,"maximum":1000},"time":{"type":"string","enum":["Утро","День","Вечер"]},"density":{"type":"string","enum":["light","medium","heavy"]},"hot_appetizers":{"type":"boolean","default":false}}}}},"required":["event_date","service","dishware","duration_minutes"],"oneOf":[{"required":["meals"],"not":{"anyOf":[{"required":["guests"]},{"required":["meal_time"]},{"required":["density"]},{"required":["format"]}]}},{"required":["guests","meal_time","density"],"not":{"required":["meals"]}}],"allOf":[{"if":{"properties":{"service":{"const":false}},"required":["service"]},"then":{"properties":{"dishware":{"enum":["Крафт",null]},"furniture":{"const":false}}}}]}}}}}},"responses":{"200":{"description":"Бриф проверен: ok=true и нормализованный brief. КП, цены и клиентской ссылки здесь нет. Для создания КП вызвать POST /agents/quotes.","content":{"application/json":{"schema":{"type":"object","required":["ok","brief"],"properties":{"ok":{"const":true},"brief":{"type":"object","additionalProperties":false,"properties":{"event_date":{"type":"string","format":"date"},"guests":{"type":"integer","minimum":1,"maximum":1000},"meal_time":{"type":"string","enum":["Утро","День","Вечер"]},"density":{"type":"string","enum":["light","medium","heavy"]},"service":{"type":"boolean"},"dishware":{"type":["string","null"],"enum":["Крафт","Фарфор",null],"description":"Крафт, Фарфор или null — явно без нашей посуды. Поле обязательно. Фарфор требует обслуживания."},"duration_minutes":{"type":"integer","minimum":1,"maximum":10080},"budget_total":{"type":"number","exclusiveMinimum":0,"maximum":10000000},"budget_level":{"type":"string","enum":["Бюджетно","Средне","Дорого"],"default":"Средне"},"menu_comment":{"type":"string","maxLength":2000},"drinks_comment":{"type":"string","maxLength":2000},"location_zone":{"type":"string","enum":["inside_mkad","outside_mkad","unknown"]},"format":{"type":"string","enum":["Welcome","Завтрак","Коктейль","Кофе-брейк","Фуршет"]},"furniture":{"type":"boolean","default":false},"hot_appetizers":{"type":"boolean","default":false},"meals":{"type":"array","minItems":1,"maxItems":6,"items":{"type":"object","additionalProperties":false,"required":["format","guests","time","density"],"properties":{"format":{"type":"string","enum":["Welcome","Завтрак","Коктейль","Кофе-брейк","Фуршет"]},"guests":{"type":"integer","minimum":1,"maximum":1000},"time":{"type":"string","enum":["Утро","День","Вечер"]},"density":{"type":"string","enum":["light","medium","heavy"]},"hot_appetizers":{"type":"boolean","default":false}}}}},"required":["event_date","service","dishware","duration_minutes"],"oneOf":[{"required":["meals"],"not":{"anyOf":[{"required":["guests"]},{"required":["meal_time"]},{"required":["density"]},{"required":["format"]}]}},{"required":["guests","meal_time","density"],"not":{"required":["meals"]}}],"allOf":[{"if":{"properties":{"service":{"const":false}},"required":["service"]},"then":{"properties":{"dishware":{"enum":["Крафт",null]},"furniture":{"const":false}}}}]}}}}}},"422":{"description":"Ошибка брифа или отсутствуют обязательные поля; спросить клиента, не подставлять значения.","content":{"application/json":{"schema":{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"string"},"missing_fields":{"type":"array","items":{"type":"string"}}}}}}},"429":{"description":"Лимит запросов; повторить позже или обратиться к менеджеру"}}}},"/agents/requirements":{"get":{"operationId":"prepartyQuoteRequirements","summary":"Схема и границы запроса","responses":{"200":{"description":"Схема брифа и подключения"}}}},"/agents/quotes/{quote_id}":{"get":{"operationId":"getPrepartyQuote","parameters":[{"in":"path","name":"quote_id","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{32}$"}}],"responses":{"200":{"description":"Сохранённое КП"},"404":{"description":"КП не найдено"}}}}}}