API

Все эндпоинты — на https://mvp.vooh.space под префиксом /api (прокси Next.js на movies-api). Параметры — в query string.

GET/health

Проверка процесса и Postgres.

200: ok, signer, postgres. Если базы нет — 503.

Пример
GET https://mvp.vooh.space/api/health

{
  "ok": true,
  "signer": true,
  "postgres": true
}
GET/movies

Список из кэша: поиск, тег, сортировка, пагинация.

ИмяТипПо умолчаниюОписание
qstringПоиск по названию и описанию.
tagstringТочное совпадение тега.
sortstringviewstitle, views, likes, collects, chapters, score, fetched_at.
orderstringdescasc или desc.
pagenumber1Номер страницы, с 1.
limitnumber10Размер страницы, 1–100.

Ответ: items, total, page, pages, tags, synced_at.

Пример
GET https://mvp.vooh.space/api/movies?sort=views&order=desc&page=1&limit=1

{
  "ok": true,
  "items": [
    {
      "id": "65a8cec883959aedd8001107",
      "title": "The Double Life of My Billionaire Husband",
      "cover": "https://v-img.crazymaplestudios.com/v-images/book_cover_batch/200000000000000045/e8922dfe-037f-4b51-bf03-edeb01ec74a9.jpg",
      "description": "Sebastian Klein is a loser and an ex-con. No girl in her right mind would marry him... until you!",
      "views": 524815969,
      "views_text": "524.9M",
      "likes": null,
      "collects": 14701519,
      "chapters": 60,
      "tags": ["Billionaire", "Marriage of Convenience"],
      "genre": 1,
      "book_type": 1,
      "score": 24154,
      "share_text": null,
      "t_book_id": "200000000000000045",
      "have_trailer": true,
      "shelf_id": 41009886,
      "tab_id": 45302,
      "shelf_name": null,
      "display_views": true,
      "fetched_at": "2026-09-17T11:36:13.146454+00:00"
    }
  ],
  "total": 270,
  "page": 1,
  "limit": 1,
  "pages": 270,
  "sort": "views",
  "order": "desc",
  "q": "",
  "tag": "",
  "tags": ["Action", "…", "Zero to Hero"],
  "synced_at": "2026-09-17T11:36:13.146454+00:00",
  "synced_count": 270
}
POST/movies/refresh

Стянуть витрину, записать в Postgres, вернуть список с теми же фильтрами.

Те же query-параметры, что у GET /movies. Тело пустое. При пустом апстриме — 502.

ИмяТипПо умолчаниюОписание
qstringПоиск по названию и описанию.
tagstringТочное совпадение тега.
sortstringviewstitle, views, likes, collects, chapters, score, fetched_at.
orderstringdescasc или desc.
pagenumber1Номер страницы, с 1.
limitnumber10Размер страницы, 1–100.
Пример
POST https://mvp.vooh.space/api/movies/refresh?page=1&limit=1

{
  "ok": true,
  "items": [
    {
      "id": "65a8cec883959aedd8001107",
      "title": "The Double Life of My Billionaire Husband",
      "views": 524816421,
      "views_text": "524.9M",
      "tags": ["Billionaire", "Marriage of Convenience"],
      "fetched_at": "2026-09-17T11:40:02.913207+00:00"
    }
  ],
  "total": 270,
  "page": 1,
  "limit": 1,
  "pages": 270,
  "tags": ["Action", "…", "Zero to Hero"],
  "synced_at": "2026-09-17T11:40:02.913207+00:00",
  "synced_count": 270
}