{"openapi": "3.1.0", "info": {"title": "CELLIO — Льготы под ключ", "version": "0.1.0", "description": "API для подбора мер поддержки и создания заявок"}, "servers": [{"url": "http://www.cellio.su"}], "paths": {"/api/v1/tools/find_company_by_inn": {"post": {"summary": "Поиск компании по ИНН", "description": "Сведения о компании или ИП по ИНН: проверка ИНН, регион, а если доступна ФНС — название, ОГРН, дата регистрации, основной ОКВЭД, категория МСП, город, признак ликвидации. Вызывайте первым, когда пользователь назвал ИНН: затем передайте okved_main и region в match_support_measures. ФИО руководителя не возвращается.", "operationId": "find_company_by_inn", "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"inn": {"type": "string", "pattern": "^\\d{10}(\\d{2})?$", "description": "ИНН компании или ИП (10 или 12 цифр)"}}, "required": ["inn"], "additionalProperties": false}}}}, "responses": {"200": {"description": "Успешный ответ", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/v1/tools/match_support_measures": {"post": {"summary": "Подбор мер поддержки", "description": "Подбирает льготы, субсидии, гранты и другие меры под профиль пользователя. Обязательно нужен тип заявителя (audience). Регион, ОКВЭД и ситуации улучшают точность подбора. Возвращает до limit мер, отсортированных по релевантности.", "operationId": "match_support_measures", "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"audience": {"type": "string", "enum": ["ИП", "ЮЛ", "самозанятый", "физлицо"], "description": "Тип заявителя (обязательно)"}, "region": {"type": "string", "description": "Название региона РФ (например, Москва, Удмуртская Республика)"}, "okved": {"type": "array", "items": {"type": "string"}, "description": "Коды ОКВЭД деятельности (например, ['56', '56.10'])"}, "situations": {"type": "array", "items": {"type": "string", "enum": ["large_family", "young_family", "childbirth", "pregnancy", "low_income", "disability", "svo_participant", "pensioner", "student", "unemployed", "housing", "rural", "youth", "startup", "export", "social_enterprise", "women", "radiation", "fallen_family", "conscript_family", "medicines", "hardship", "repressed", "medical_workers"]}, "description": "Жизненные ситуации заявителя"}, "support_types": {"type": "array", "items": {"type": "string"}, "description": "Типы мер (фильтр по полю 'тип')"}, "query": {"type": "string", "description": "Текстовый запрос для поиска по содержанию меры"}, "money_only": {"type": "boolean", "description": "Показывать только денежные меры"}, "limit": {"type": "integer", "minimum": 1, "maximum": 20, "description": "Количество результатов (по умолчанию 10)"}, "include_closed": {"type": "boolean", "description": "Включить меры с истекшим сроком"}}, "required": ["audience"], "additionalProperties": false}}}}, "responses": {"200": {"description": "Успешный ответ", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/v1/tools/get_measure_details": {"post": {"summary": "Детали меры поддержки", "description": "Возвращает полную информацию о мере: условия, документы, порядок подачи, сроки рассмотрения, основания отказа. Вызывайте после подбора, когда пользователь выбрал конкретную меру.", "operationId": "get_measure_details", "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"measure_id": {"type": "string", "description": "Идентификатор меры из результатов подбора"}}, "required": ["measure_id"], "additionalProperties": false}}}}, "responses": {"200": {"description": "Успешный ответ", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/v1/tools/create_application_draft": {"post": {"summary": "Создать черновик заявки", "description": "Создаёт черновик заявки на меру поддержки: перечень документов и куда подавать. Документы (паспорт, СНИЛС) НЕ принимаются, за человека ничего не подаётся — заявление он подаёт сам. Параметр consent должен быть true только после явного согласия пользователя.", "operationId": "create_application_draft", "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"measure_id": {"type": "string", "description": "Идентификатор меры"}, "applicant": {"type": "object", "properties": {"audience": {"type": "string"}, "region": {"type": "string"}, "inn": {"type": "string"}, "name": {"type": "string"}, "okved": {"type": "string"}, "situations": {"type": "array", "items": {"type": "string"}}, "contact_channel": {"type": "string", "enum": ["telegram", "max", "email", "phone"], "description": "Канал связи (без номера/адреса)"}}, "additionalProperties": false, "description": "Данные заявителя"}, "consent": {"type": "boolean", "description": "true только после явного 'да' пользователя на итоговом вопросе"}, "user_ref": {"type": "string", "description": "Идентификатор пользователя в системе чата"}}, "required": ["measure_id", "consent"], "additionalProperties": false}}}}, "responses": {"200": {"description": "Успешный ответ", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/v1/tools/get_application_status": {"post": {"summary": "Статус заявок", "description": "Возвращает статус черновиков заявок пользователя. Нужен либо draft_id конкретного черновика, либо user_ref для всех черновиков пользователя.", "operationId": "get_application_status", "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"draft_id": {"type": "string", "description": "Идентификатор черновика"}, "user_ref": {"type": "string", "description": "Идентификатор пользователя"}}, "additionalProperties": false}}}}, "responses": {"200": {"description": "Успешный ответ", "content": {"application/json": {"schema": {"type": "object"}}}}}}}}}