API вики
Открытый API только для чтения: статьи, история, поиск и свежие правки в JSON. Для ботов, виджетов, приложений и всего, что придумаете.
Только чтениеТо же, что видит гость: живые страницы и принятые правки. Черновики и правки на проверке не отдаются.
Без ключаРегистрация не нужна. Есть лимит запросов в минуту на адрес, как у самого сайта.
Из браузераЛюбой сайт может звать API напрямую: ответы с Access-Control-Allow-Origin: *.
Базовый адрес
https://beta.filian.wiki/api/v1
Все пути ниже от него. Полное описание для генераторов клиентов: openapi.json
Что есть
| Запрос | Что отдаёт | Параметры |
|---|---|---|
GET / | Вики и список адресов API | |
GET /pages | Живые страницы по адресу, страницами по 50 (до 200) | ns locale limit after |
GET /pages/{path} | Страница: текст Markdown, готовый HTML, категории, переводы, последняя правка | locale format=markdown|html|both |
GET /pages/{path}/history | Принятые правки страницы, новые сверху | locale limit before |
GET /revisions/{id} | Одна принятая правка целиком | |
GET /search | Поиск статей по названию и тексту, с выдержками | q locale all limit offset |
GET /recent | Свежие правки по всей вики | locale limit before |
GET /categories/{key} | Страницы в категории | limit after |
Попробовать
Ссылки ниже открывают настоящие ответы этой вики:
- /pages/shylily
- /pages/shylily?format=html
- /pages/shylily/history?limit=5
- /search?q=shylily
- /recent?limit=10
curl
curl -s "https://beta.filian.wiki/api/v1/pages/shylily" | jq '.title, .revision.created_at'
JavaScript
const res = await fetch("https://beta.filian.wiki/api/v1/search?q=" + encodeURIComponent("shylily"));
const { items } = await res.json();
for (const hit of items) console.log(hit.title, hit.url);
Ответ
Даты в UTC, в формате RFC 3339. Все ссылки в ответах полные, а HTML уже с абсолютными адресами, его можно вставлять куда угодно.
{
"path": "shylily",
"title": "…",
"locale": "ru",
"url": "…",
"revision": { "id": "…", "created_at": "…", "author": { "name": "…" } },
"categories": [{ "key": "…", "name": "…", "url": "…" }],
"translations": [{ "locale": "…", "title": "…", "url": "…" }],
"markdown": "…",
"license": "https://beta.filian.wiki/license"
}
Постранично
У списков есть поле next. Передайте его в after (страницы, категории) или before (история, свежие правки), чтобы получить следующую часть. Когда next пустой, дальше ничего нет.
{ "items": [ … ], "next": "…" }
GET /pages?after=…
GET /pages/{path}/history?before=…
Ошибки
Ошибка всегда приходит в одном виде:
{ "error": { "code": "not_found", "message": "no such page" } }
| HTTP | Когда |
|---|---|
400 | Неверный параметр: в message написано, какой |
404 | Нет такой страницы, правки или категории |
429 | Слишком часто: подождите столько секунд, сколько в Retry-After |
Правила
- Тексты под лицензией вики (https://beta.filian.wiki/license): указывайте источник и ссылку на страницу, поле url есть в каждом ответе.
- Ответы можно кешировать на минуту, так они и помечены. Не опрашивайте чаще, чем нужно.
- Это фанатская вики, не Filian и не её ARG. Не выдавайте данные за официальные.