{"openapi":"3.0.0","info":{"title":"Топ серверов л2 API","description":"API для получения информации о серверах Lineage 2, отзывах и рейтингах","version":"2.0.0","contact":{"name":"Администрация","url":"https://zerokulasite.ru/contacts","email":"admin@zerokulasite.ru"},"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"}},"servers":[{"url":"https://zerokulasite.ru/api","description":"Production API"}],"tags":[{"name":"Серверы","description":"Операции с серверами Lineage 2"},{"name":"Отзывы","description":"Операции с отзывами игроков"},{"name":"AI","description":"Специальные эндпоинты для AI-агентов"}],"paths":{"/servers":{"get":{"summary":"Получить список серверов","description":"Возвращает список всех активных серверов с полными характеристиками. Поддерживает фильтрацию по версии, статусу и поиск по названию.","operationId":"getServers","tags":["Серверы"],"parameters":[{"name":"version","in":"query","schema":{"type":"string","enum":["Interlude","High Five","Essence","Classic"]},"description":"Фильтр по версии хроник"},{"name":"status","in":"query","schema":{"type":"string","enum":["VIP","Открыт"]},"description":"Фильтр по статусу"},{"name":"search","in":"query","schema":{"type":"string"},"description":"Поиск по названию сервера"},{"name":"limit","in":"query","schema":{"type":"integer","default":50,"maximum":100},"description":"Максимальное количество серверов в ответе"}],"responses":{"200":{"description":"Успешный ответ","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Server"}}}}}}}},"/servers/{id}":{"get":{"summary":"Получить детальную информацию о сервере","description":"Возвращает полную информацию о сервере, включая все рейты и статистику","operationId":"getServerById","tags":["Серверы"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"ID или slug сервера"}],"responses":{"200":{"description":"Успешный ответ","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerDetail"}}}},"404":{"description":"Сервер не найден"}}}},"/servers/{id}/reviews":{"get":{"summary":"Получить отзывы о сервере","description":"Возвращает список отзывов игроков с пагинацией и статистикой","operationId":"getServerReviews","tags":["Отзывы"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"ID сервера"},{"name":"page","in":"query","schema":{"type":"integer","default":1,"minimum":1},"description":"Номер страницы"},{"name":"limit","in":"query","schema":{"type":"integer","default":5,"maximum":20},"description":"Количество отзывов на странице"},{"name":"sort","in":"query","schema":{"type":"string","enum":["newest","oldest","rating_high","rating_low","helpful"]},"default":"newest","description":"Сортировка отзывов"}],"responses":{"200":{"description":"Успешный ответ","content":{"application/json":{"schema":{"type":"object","properties":{"reviews":{"type":"array","items":{"$ref":"#/components/schemas/Review"}},"stats":{"$ref":"#/components/schemas/ReviewStats"},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}}}},"post":{"summary":"Оставить отзыв о сервере","description":"Добавляет новый отзыв игрока. Требуется проверка на лимит (не более 5 отзывов в день с одного IP).","operationId":"createReview","tags":["Отзывы"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"ID сервера"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewCreate"}}}},"responses":{"201":{"description":"Отзыв создан и отправлен на модерацию","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"review":{"$ref":"#/components/schemas/Review"}}}}}},"400":{"description":"Некорректные данные"},"429":{"description":"Превышен лимит отзывов (5 в день)"}}}},"/reviews/{reviewId}/helpful":{"post":{"summary":"Оценить полезность отзыва","description":"Голосование за полезность отзыва. Можно отменить голосование повторным нажатием.","operationId":"markHelpful","tags":["Отзывы"],"parameters":[{"name":"reviewId","in":"path","required":true,"schema":{"type":"string"},"description":"ID отзыва"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"helpful":{"type":"boolean","description":"true - полезно, false - бесполезно"}}}}}},"responses":{"200":{"description":"Голос учтён","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"helpful":{"type":"integer"},"notHelpful":{"type":"integer"},"userVoted":{"type":"string","enum":["helpful","notHelpful",null]}}}}}}}}},"/stats/summary":{"get":{"summary":"Получить общую статистику","description":"Возвращает сводную статистику по серверам и отзывам","operationId":"getStats","tags":["AI"],"responses":{"200":{"description":"Успешный ответ","content":{"application/json":{"schema":{"type":"object","properties":{"totalServers":{"type":"integer"},"vipServers":{"type":"integer"},"openServers":{"type":"integer"},"totalReviews":{"type":"integer"},"averageRating":{"type":"number"},"popularVersions":{"type":"array","items":{"type":"object","properties":{"version":{"type":"string"},"count":{"type":"integer"}}}}}}}}}}}},"/ai/summary":{"get":{"summary":"Быстрый ответ для AI-агентов","description":"Краткая информация о проекте и доступных данных для AI-агентов","operationId":"getAiSummary","tags":["AI"],"responses":{"200":{"description":"Успешный ответ","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"total_servers":{"type":"integer"},"vip_servers":{"type":"integer"},"versions":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string"},"count":{"type":"integer"}}}},"last_updated":{"type":"string","format":"date-time"},"api_docs":{"type":"string","format":"uri"},"webmcp":{"type":"string","format":"uri"},"llms":{"type":"string","format":"uri"}}}}}}}}}},"components":{"schemas":{"Server":{"type":"object","properties":{"_id":{"type":"string","example":"67f8a1b2c3d4e5f6a7b8c9d0"},"name":{"type":"string","example":"Scryde L2 x1000"},"slug":{"type":"string","example":"scryde-l2"},"version":{"type":"string","enum":["Interlude","High Five","Essence","Classic"],"example":"High Five"},"status":{"type":"string","enum":["VIP","Открыт"],"example":"VIP"},"exp":{"type":"string","example":"x1000"},"adena":{"type":"string","example":"x1000"},"drop":{"type":"string","example":"x1000"},"spoil":{"type":"string","example":"x1000"},"spoilChance":{"type":"string","example":"x1"},"sealstone":{"type":"string","example":"x1"},"raidBossExp":{"type":"string","example":"x1"},"raidBossDrop":{"type":"string","example":"x1"},"epicRaidBossDrop":{"type":"string","example":"x1"},"questAdena":{"type":"string","example":"x1"},"quest":{"type":"string","example":"x1"},"questExp":{"type":"string","example":"x1"},"openingDate":{"type":"string","format":"date","example":"2026-07-24"},"website":{"type":"string","format":"uri","example":"https://scryde6.b-cdn.host"},"description":{"type":"string","example":"Стабильный PvP-сервер High Five"},"rating":{"type":"object","properties":{"average":{"type":"number","example":4.8},"count":{"type":"integer","example":2150}}},"createdAt":{"type":"string","format":"date-time"}}},"ServerDetail":{"allOf":[{"$ref":"#/components/schemas/Server"},{"type":"object","properties":{"rating":{"type":"object","properties":{"average":{"type":"number"},"count":{"type":"integer"},"distribution":{"type":"object","properties":{"1":{"type":"integer"},"2":{"type":"integer"},"3":{"type":"integer"},"4":{"type":"integer"},"5":{"type":"integer"}}}}},"similarServers":{"type":"array","items":{"$ref":"#/components/schemas/Server"}}}}]},"Review":{"type":"object","properties":{"_id":{"type":"string"},"authorName":{"type":"string","example":"Игрок_228"},"rating":{"type":"number","minimum":1,"maximum":5,"example":5},"title":{"type":"string","maxLength":100,"example":"Отличный сервер!"},"content":{"type":"string","maxLength":1520,"example":"Играю уже год, всё нравится..."},"pros":{"type":"string","maxLength":300,"example":"Стабильный онлайн, честная администрация"},"cons":{"type":"string","maxLength":300,"example":"Мало PvE контента"},"helpful":{"type":"integer","example":42},"notHelpful":{"type":"integer","example":5},"userVotedHelpful":{"type":"boolean"},"userVotedNotHelpful":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}}},"ReviewCreate":{"type":"object","required":["authorName","rating","title","content"],"properties":{"authorName":{"type":"string","maxLength":50,"example":"Игрок_228"},"rating":{"type":"number","minimum":1,"maximum":5,"example":5},"title":{"type":"string","maxLength":100,"example":"Отличный сервер!"},"content":{"type":"string","maxLength":1520,"example":"Играю уже год, всё нравится..."},"pros":{"type":"string","maxLength":300,"example":"Стабильный онлайн"},"cons":{"type":"string","maxLength":300,"example":"Мало PvE"}}},"ReviewStats":{"type":"object","properties":{"averageRating":{"type":"number"},"totalReviews":{"type":"integer"},"distribution":{"type":"object","properties":{"1":{"type":"integer"},"2":{"type":"integer"},"3":{"type":"integer"},"4":{"type":"integer"},"5":{"type":"integer"}}}}},"Pagination":{"type":"object","properties":{"page":{"type":"integer"},"limit":{"type":"integer"},"total":{"type":"integer"},"pages":{"type":"integer"}}}}}}