{"openapi":"3.1.0","info":{"title":"Public API - News Portal","description":"Публичное API для доступа к новостям и контенту","version":"1.0.0"},"servers":[{"url":"/public-api"}],"paths":{"/public/content/{api_token}/view/{slug}":{"get":{"tags":["Public Content API"],"summary":"Get Content Slug","description":"Получить HTML контент обогащенной новости по slug.\n\n## Параметры:\n- **api_token**: API токен пользователя\n- **slug**: Уникальный идентификатор новости\n\n## Возвращает:\nHTML контент новости для отображения","operationId":"get_content_slug_public_content__api_token__view__slug__get","parameters":[{"name":"api_token","in":"path","required":true,"schema":{"type":"string","title":"Api Token"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichedNewsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/public/content/{api_token}/enriched_news":{"get":{"tags":["Public Content API"],"summary":"Get News List","description":"Получить список обогащенных новостей.\n\n## Параметры:\n- **api_token**: API токен пользователя\n- **page**: Номер страницы (начиная с 1)\n- **per_page**: Количество элементов на странице (1-100)\n\n## Возвращает:\nПагинированный список обогащенных новостей","operationId":"get_news_list_public_content__api_token__enriched_news_get","parameters":[{"name":"api_token","in":"path","required":true,"schema":{"type":"string","title":"Api Token"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Номер страницы","default":1,"title":"Page"},"description":"Номер страницы"},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Количество элементов на странице","default":20,"title":"Per Page"},"description":"Количество элементов на странице"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichedNewsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/public/content/{api_token}/sitemap.xml":{"get":{"tags":["Public Content API","SEO"],"summary":"Get Sitemap Xml","description":"Генерирует sitemap.xml для SEO продвижения сайта через публичный API.\n\n## Описание:\n\nЭтот эндпоинт генерирует sitemap.xml в формате XML, который включает:\n- Все основные страницы сайта (главная, о компании, кейсы, тарифы)\n- Все опубликованные новости текущего пользователя с флагом is_published=True\n\n## Требует авторизации:\n\n- Необходим валидный API токен в URL пути\n- Возвращает только новости, принадлежащие пользователю с указанным токеном\n\n## Возвращает:\n\n- XML файл sitemap.xml с правильными заголовками для кэширования\n\n## Примечания:\n\n- Генерация происходит быстро с использованием оптимизированных запросов к БД\n- Результат кэшируется на 1 час для улучшения производительности\n- Включает все необходимые SEO метаданные (изображения, новости, мобильная версия)\n- Новости фильтруются по пользователю с указанным API токеном для безопасности","operationId":"get_sitemap_xml_public_content__api_token__sitemap_xml_get","parameters":[{"name":"api_token","in":"path","required":true,"schema":{"type":"string","title":"Api Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"EnrichedNewsListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EnrichedNewsResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page","description":"Номер страницы"},"per_page":{"type":"integer","title":"Per Page","description":"Количество элементов на странице"},"pages":{"type":"integer","title":"Pages","description":"Общее количество страниц"}},"type":"object","required":["items","total","page","per_page","pages"],"title":"EnrichedNewsListResponse","description":"Схема для списка обогащенных новостей"},"EnrichedNewsResponse":{"properties":{"enriched_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enriched Title"},"enriched_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enriched Text"},"html_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Html Content"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"meta_keywords":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Keywords"},"meta_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Description"},"is_published":{"type":"boolean","title":"Is Published","default":false},"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"news_id":{"type":"integer","title":"News Id"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"rewrite_input_tokens":{"type":"integer","title":"Rewrite Input Tokens","default":0},"rewrite_output_tokens":{"type":"integer","title":"Rewrite Output Tokens","default":0},"rewrite_cost":{"type":"number","title":"Rewrite Cost","default":0.0},"html_input_tokens":{"type":"integer","title":"Html Input Tokens","default":0},"html_output_tokens":{"type":"integer","title":"Html Output Tokens","default":0},"html_cost":{"type":"number","title":"Html Cost","default":0.0},"total_tokens_used":{"type":"integer","title":"Total Tokens Used","default":0},"total_cost":{"type":"number","title":"Total Cost","default":0.0},"original_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Title"},"original_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Text"},"original_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Url"},"original_rating":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Original Rating"},"original_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Original Date"}},"type":"object","required":["id","user_id","news_id","created_at","updated_at"],"title":"EnrichedNewsResponse","description":"Схема ответа для обогащенной новости"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}