Старт: сайт с поиском

Для сайта, где человек задаёт фильтры и открывает страницу анкет. Пропуск страницы — не отказ. Если у вас колода по одной анкете — это приложение-листалка.

Ключ API живёт только на сервере.

Что хранить у себя

Поле Зачем
network_id ответ PUT /v1/members/{ваш id}
match_id разговор с человеком из сети
next_after если события забираете сами
фильтры смотрящего возраст, цель, язык, рост, радиус — у себя, в каждый запрос ленты

Фильтры в запрос не записывают анкету. Анкета по-прежнему задаёт, кого человек может видеть. Запрос может только сузить.

Согласие и анкета

Как у листалки: переключатель выключен по умолчанию, PUT при включении и правке, consent.network: false при выключении, DELETE при удалении. Тексты — в Анкеты и согласия.

Возраст в анкете (age_min, age_max) — взаимный диапазон. Фильтр поиска его не расширяет.

Страница поиска

curl "https://api.pereval.dating/v1/members/user-123/feed?limit=20&age_min=28&age_max=35&intent=serious&language=ru" \
  -H "Authorization: Bearer $PEREVAL_API_KEY"
Параметр Что будет
age_min, age_max Пересечение с диапазоном анкеты. Пустое пересечение — пустая страница и 200, не ошибка. В запросе age_min больше age_max — 422
intent Одна цель из анкеты смотрящего: serious, casual, friendship, arrangement. Чужая цель — 422
language Код ISO 639-1, две буквы. Общий язык или согласие обоих на другие языки остаются обязательными
gender Только противоположный пол смотрящего. Свой пол — 422
radius_km, height_min, height_max, verified_only, lat, lon Как в ленте

Отметьте на карточке, что анкета из сети «Перевал». Переведённое описание пометьте и дайте оригинал. videos[].poster — кадр ролика: его можно показать и не скачивая файл. Воспроизведение с url по желанию, без звука, пока посетитель не включил звук у всех роликов сразу.

Следующая страница

В ответе есть next_cursor, пока страница может быть не последней. Следующий запрос — те же фильтры и cursor=<next_cursor>. Курсора в ответе нет — страницы кончились. Кривой cursor — 422.

Повтор того же запроса без курсора возвращает тех же людей и не тратит лимит.

Дизлайк на эту схему не нужен. Он прячет человека на 30 дней и нужен только если посетитель явно отказал («не показывать»). Прокрутка и «следующая страница» дизлайком не являются.

Лимит

200 разных людей в сутки (UTC) на одного вашего пользователя, вместе с лентой «Весь мир», если она есть. Сколько новых ещё можно показать — remaining_today. Уже показанные сегодня приходят снова и остаток не уменьшают. На нуле новые люди пропадают, уже показанные сегодня остаются: сетку можно обновить.

Сообщение без взаимного лайка сеть не принимает. Лайк с карточки — POST /v1/likes. Дальше мэтч и переписка, как в листалке.

Готово, когда

  • Фильтры на сайте уходят в запрос ленты и не шире анкеты смотрящего.
  • Страницы идут по next_cursor. Повтор страницы не уменьшает remaining_today.
  • Прокрутка не шлёт дизлайк. Дизлайк есть только на явном отказе.
  • На нуле лимита новые люди не появляются, уже открытые сегодня открываются снова.
  • Лайк, мэтч и сообщения работают. Без мэтча написать нельзя.
  • На карточке видно приложение человека. Перевод помечен.

Свои анкеты в эту ленту не придут: своих вы показываете своим поиском. Перед боем — тестовый контур.

Непонятно? Напишите разработчику

Ответ и продолжение переписки — на сайте по секретной ссылке, которую вы получите после отправки. Входящая почта не принимается.