{"openapi":"3.1.0","info":{"title":"CallBoost Public API","description":"Публичные эндпоинты сайта CallBoost (КоллБуст). Заявки и слоты — без авторизации. Dashboard API (звонки, аналитика) требует JWT — см. /api-docs.","version":"1.0.0","contact":{"name":"CallBoost Support","email":"info@call-boost.xyz","url":"https://call-boost.xyz/support"}},"servers":[{"url":"https://call-boost.xyz"}],"paths":{"/api/health":{"get":{"operationId":"getHealth","summary":"Проверка доступности сервиса","description":"Публичный health-check. Возвращает статус сервиса и метку времени.","responses":{"200":{"description":"Сервис доступен","content":{"application/json":{"schema":{"type":"object","required":["ok","service","version","timestamp"],"properties":{"ok":{"type":"boolean","example":true},"service":{"type":"string","example":"CallBoost"},"version":{"type":"string","example":"1.0.0"},"timestamp":{"type":"string","format":"date-time"}}}}}}}}},"/api/leads/slots":{"get":{"operationId":"getLeadSlots","summary":"Свободные слоты для созвона","description":"Возвращает занятые слоты и рабочие часы (МСК) для формы заявки.","responses":{"200":{"description":"Список слотов","content":{"application/json":{"schema":{"type":"object","required":["taken","startHour","endHour"],"properties":{"taken":{"type":"array","items":{"type":"string"},"example":[]},"startHour":{"type":"integer","example":10},"endHour":{"type":"integer","example":19}}}}}}}}},"/api/leads":{"get":{"operationId":"getLeadsMeta","summary":"Метаданные формы заявки (слоты)","description":"Алиас метаданных слотов — совместимость со старыми клиентами.","responses":{"200":{"description":"Слоты и рабочие часы","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadSlots"}}}}}},"post":{"operationId":"createLead","summary":"Отправить заявку","description":"Создаёт заявку на демо или подключение. Контакт обязателен. Заявка уходит в Telegram команды CallBoost.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadCreate"}}}},"responses":{"201":{"description":"Заявка принята","content":{"application/json":{"schema":{"type":"object","required":["ok"],"properties":{"ok":{"type":"boolean","example":true}}}}}},"400":{"description":"Невалидные данные","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"502":{"description":"Не удалось доставить заявку","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}},"components":{"schemas":{"LeadCreate":{"type":"object","required":["contact"],"properties":{"name":{"type":"string","maxLength":400,"example":"Иван"},"contact":{"type":"string","maxLength":200,"example":"+7 900 000-00-00"},"task":{"type":"string","maxLength":1000,"example":"Нужен AI на входящих звонках"},"slot":{"type":"string","maxLength":32,"example":"2026-08-25T14:00"}}},"LeadSlots":{"type":"object","required":["taken","startHour","endHour"],"properties":{"taken":{"type":"array","items":{"type":"string"}},"startHour":{"type":"integer"},"endHour":{"type":"integer"}}},"ApiError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"VALIDATION_ERROR"},"message":{"type":"string","example":"Контакт обязателен"},"hint":{"type":"string","example":"Передайте поле contact (телефон или email) в JSON-теле POST /api/leads"}}}}}}},"externalDocs":{"description":"Документация CallBoost для разработчиков","url":"https://call-boost.xyz/docs"}}