{"openapi":"3.1.0","jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","info":{"title":"ФинПерезагрузка — AI Agent API","version":"1.0.0","description":"Публичный профиль юридической практики и приём заявок. Не является бронированием времени или юридической консультацией. Явное согласие клиента обязательно. Не передавайте паспортные, банковские данные или документы.\n\nEN: Public legal practice profile and consultation request intake. Not appointment booking or legal advice. Obtain explicit client consent. Do not send identity documents, banking details or sensitive files."},"servers":[{"url":"https://finperezagruzka.ru"}],"security":[],"paths":{"/api/public/agent/profile":{"get":{"operationId":"getLegalPracticeProfile","summary":"Профиль, услуги и свежие статьи\n\nEN: Profile, services and recent articles","description":"Возвращает актуальные условия первичного разбора, график связи по Москве и до 5 свежих опубликованных статей. Цена null означает, что стоимость согласовывается отдельно.\n\nEN: Returns initial review terms, Moscow contact hours and up to five recent published articles. A null price means pricing requires individual agreement.","responses":{"200":{"description":"Профиль / Profile","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Profile"}}}},"503":{"description":"Журнал временно недоступен / Journal temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/public/agent/consultation":{"post":{"operationId":"submitConsultationRequest","summary":"Передать заявку с согласия клиента\n\nEN: Submit a request with client consent","description":"Сначала получите явное разрешение пользователя передать имя, контакт и краткое описание задачи юристу по политике /privacy. Передайте consent: true только после согласия. Лимит 5 заявок за 15 минут с одного IP. confirmed означает, что заявка сохранена; время разговора и стоимость не подтверждены. При 503 сохранение может быть неопределённым: не повторяйте автоматически, свяжитесь через /contacts. Не обещайте результат дела.\n\nEN: Obtain explicit permission to share name, contact and case summary under /privacy first. Set consent: true only after consent. Limit: 5 requests per IP per 15 minutes. confirmed acknowledges a stored request, not a booked slot or agreed price. A 503 may have uncertain persistence: do not retry automatically; contact /contacts. Never promise legal outcomes.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsultationInput"},"example":{"client_name":"Анна","contact":"anna@example.com","category":"general_jurisdiction","case_summary":"Нужно обсудить имущественный спор и документы перед подачей иска.","preferred_time":"В будний день после 15:00 по Москве","agent_name":"AI assistant","consent":true}}}},"responses":{"201":{"description":"Приём заявки подтверждён, время не забронировано / Request received, no appointment booked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Receipt"}}}},"400":{"description":"Некорректный JSON, данные или отсутствует согласие / Invalid JSON, data or consent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Тело больше 16 КБ / Body exceeds 16 KB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Нужен application/json / application/json required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Лимит исчерпан / Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Ожидание в секундах / Delay in seconds","schema":{"type":"integer","const":900}}}},"503":{"description":"Приём временно недоступен / Intake temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"ConsultationInput":{"type":"object","additionalProperties":false,"required":["client_name","contact","category","case_summary","consent"],"properties":{"client_name":{"type":"string","description":"Имя клиента, без паспортных данных\n\nEN: Client name, no identity document data","minLength":2,"maxLength":100},"contact":{"type":"string","description":"Телефон (7–15 цифр), email, Telegram @username (5–32 символа) или https://t.me/username\n\nEN: Phone (7–15 digits), email, Telegram @username (5–32 characters) or https://t.me/username","minLength":3,"maxLength":255},"category":{"type":"string","enum":["b2b_bankruptcy","auctions","general_jurisdiction","personal_bankruptcy","other"],"description":"b2b_bankruptcy: бизнес/банкротство юрлиц; auctions: торги; general_jurisdiction: общая юрисдикция; personal_bankruptcy: банкротство граждан; other: другое\n\nEN: b2b_bankruptcy: corporate bankruptcy; auctions: asset auctions; general_jurisdiction: general jurisdiction disputes; personal_bankruptcy: personal bankruptcy; other: other"},"case_summary":{"type":"string","description":"Краткая суть дела. Не включайте чувствительные сведения и документы\n\nEN: Brief case summary. No sensitive data or documents","minLength":10,"maxLength":3000},"preferred_time":{"type":"string","description":"Желаемое время связи; не гарантирует слот. Укажите часовой пояс\n\nEN: Preferred contact time, not a guaranteed slot. Include timezone","minLength":0,"maxLength":200,"default":""},"agent_name":{"type":"string","description":"Название отправившего ИИ-агента, необязательно\n\nEN: Submitting AI agent name, optional","minLength":1,"maxLength":100},"consent":{"type":"boolean","const":true,"description":"Явное согласие клиента на передачу и обработку данных по /privacy\n\nEN: Explicit client consent to data sharing and processing under /privacy"}}},"Receipt":{"type":"object","additionalProperties":false,"required":["ok","status","request_id","next_step"],"properties":{"ok":{"const":true},"status":{"const":"confirmed"},"request_id":{"type":"string","format":"uuid","description":"Номер заявки / Request ID"},"next_step":{"type":"string","description":"Следующий шаг; юрист согласует время / Next step; lawyer arranges contact","minLength":0,"maxLength":3000}}},"Error":{"type":"object","required":["ok","code","detail"],"properties":{"ok":{"const":false},"code":{"type":"string","description":"Машиночитаемый код / Machine-readable error code","minLength":0,"maxLength":3000},"detail":{"type":"string","description":"Понятное описание, без персональных данных / Explanation without personal data","minLength":0,"maxLength":3000}}},"Service":{"type":"object","required":["category","name","description"],"properties":{"category":{"type":"string","enum":["b2b_bankruptcy","auctions","general_jurisdiction","personal_bankruptcy"]},"name":{"type":"string","description":"Название услуги / Service name","minLength":0,"maxLength":3000},"description":{"type":"string","description":"Направление работы / Practice scope","minLength":0,"maxLength":3000}}},"Article":{"type":"object","required":["title","url","excerpt","category","is_demo","created_at"],"properties":{"title":{"type":"string","description":"Заголовок / Title","minLength":0,"maxLength":3000},"url":{"type":"string","format":"uri"},"excerpt":{"type":["string","null"]},"category":{"type":"string","description":"Рубрика / Category","minLength":0,"maxLength":3000},"is_demo":{"type":"boolean","description":"Демонстрационный материал, не клиентский кейс / Demonstration, not a client case"},"created_at":{"type":"string","format":"date-time"}}},"Profile":{"type":"object","required":["name","expert","website","navigator_url","services","initial_review","intake_schedule","consultation","openapi_url","recent_articles"],"properties":{"name":{"type":"string","description":"Название практики / Practice name","minLength":0,"maxLength":3000},"expert":{"type":"object","required":["name","education","summary","language","region"],"properties":{"name":{"type":"string","description":"Эксперт: name / Expert name","minLength":0,"maxLength":3000},"education":{"type":"string","description":"Эксперт: education / Expert education","minLength":0,"maxLength":3000},"summary":{"type":"string","description":"Эксперт: summary / Expert summary","minLength":0,"maxLength":3000},"language":{"type":"string","description":"Эксперт: language / Expert language","minLength":0,"maxLength":3000},"region":{"type":"string","description":"Эксперт: region / Expert region","minLength":0,"maxLength":3000}}},"website":{"type":"string","format":"uri"},"navigator_url":{"type":"string","format":"uri"},"openapi_url":{"type":"string","format":"uri"},"services":{"type":"array","items":{"$ref":"#/components/schemas/Service"}},"initial_review":{"type":"object","required":["format","pricing","currency","price"],"properties":{"format":{"type":"string","description":"Формат разбора / Review format","minLength":0,"maxLength":3000},"pricing":{"type":"string","description":"Условия стоимости / Pricing terms","minLength":0,"maxLength":3000},"currency":{"const":"RUB"},"price":{"type":["number","null"],"description":"null: по согласованию / individually agreed"}}},"intake_schedule":{"type":"object","required":["applications","timezone","contact_hours"],"properties":{"applications":{"const":"24/7"},"timezone":{"const":"Europe/Moscow"},"contact_hours":{"type":"string","description":"Пн–Пт 09:00–19:00, выходные по согласованию / Mon–Fri 09:00–19:00, weekends by agreement","minLength":0,"maxLength":3000}}},"consultation":{"type":"object","required":["endpoint","consent_required","privacy_url","confirmation"],"properties":{"endpoint":{"type":"string","format":"uri"},"consent_required":{"const":true},"privacy_url":{"type":"string","format":"uri"},"confirmation":{"type":"string","description":"confirmed подтверждает заявку, не слот / confirmed acknowledges intake, not booking","minLength":0,"maxLength":3000}}},"recent_articles":{"type":"array","maxItems":5,"items":{"$ref":"#/components/schemas/Article"}}}}}}}