Skip to content

Latest commit

 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Api

Models

User

{
  "name": "userName",
  "device_id": "Qr2da&y38dba7"
}
ПолеОписаниеТип данных
nameНик пользователяString
device_idСерийный номер устройстваString

Genre

{
  "name": "Комедия"
}
ПолеОписаниеТип данных
nameЖанр фильмаString

Collection

{
  "slug": "dune_2_arrakis",
  "name": "Новинки 2023 года",
  "cover": "https://images.unsplash.com/photo-1719811838849-bf1cb4426c69?q=80&w=3087&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
}
ПолеОписаниеТип данных
slugSlug идентификатор подборкиString
nameИмя подборкиString
coverСсылка на постер подборкиString

Movie

{
  "id": 999,
  "name": "Дюна",
  "poster": "http://www.img.ru/img.jpg"
}
ПолеОписаниеТип данных
idУникальный идентификатор фильмаInteger
nameНазвание фильмаString
posterСсылка на постер фильмаString

MovieDetails

{
  "id": 999,
  "name": "Дюна",
  "description": "Наследник знаменитого дома Атрейдесов...",
  "year": 2021,
  "countries": [
    "Канада",
    "Венгрия"
  ],
  "poster": "http://www.img.ru/img.jpg",
  "alternative_name": "Dune",
  "rating_kp": 8.5,
  "rating_imdb": 6.1,
  "votes_kp": 1000,
  "votes_imdb": 500,
  "movie_length": 155,
  "genres": [
    {
      "name": "Фантастика"
    },
    {
      "name": "Боевик"
    }
  ],
  "directors": [
    "Дени Вильнев"
  ],
  "actors": [
    "Тимоти Шаламе",
    "Оскар Айзек"
  ]
}
ПолеОписаниеТип данных
idУникальный идентификатор фильмаInteger
nameНазвание фильмаString
descriptionОписание фильмаString
yearДата выходаInteger
countriesМассив стран фильма[String]
posterСсылка на постер фильмаString
alternative_nameНазвание фильма на другом языкеString? (Может быть null)
rating_kpОценка на КинопоискеFloat
rating_imdbОценка на ImdbFloat
votes_kpКоличество оценок на КинопоискеInteger
votes_imdbКоличество оценок на ImdbInteger
movie_lengthПродолжительность фильма в минутахInteger
genresМассив жанров фильма[Genre]
directorsМассив режиссеров[String]
actorsМассив актеров[String]

Session

{
  "id": "Q2Nurf9o",
  "users": [
    {
      "device_id": "string",
      "name": "string"
    }
  ],
  "matched_movies": 5,
  "date": "2024-06-22",
  "status": "waiting",
  "session_img": "poster url"
}
ПолеОписаниеТип данных
idУникальный код сеанса, по которому пользователи могут присоединиться (Состоит из 7 символов: 4 буквы и 3 цифры)String
usersМассив пользователей сессии[User]
matched_moviesЧисло совпавших фильмовInteger
dateДата создания сессииString
statusСтатус сессииSessionStatus
session_imgСсылка на постер из любого фильма сессии (в приоритете постеры из фильмов по которым были совпадния с наибвысшей оценкой по кинопоиску, если совпадений не было, то берем постер фильма с наивысшей оценкой по кинопоиску)String

Статусы сессии

Enum: SessionStatus

SessionStatus представляет собой возможные статусы сессии. Эти статусы могут использоваться для отслеживания состояния сессии на различных этапах.

Значения статусов:

  • waiting - Ожидание
  • voting - Голосование
  • closed - Закрыто

Получение списка доступных жанров и подборок

GET /categories

Структура ответа

{
  "genres": [
    {
      "name": "Комедия"
    }
  ],
  "collections": [
    {
      "slug": "dune_2_arrakis",
      "name": "Новинки 2023 года",
      "cover": "http://www.img.ru/img.jpg"
    }
  ]
}
ПолеОписаниеТип данных
genresМассив доступных для выбора жанров[Genre]
collectionsМассив доступных для выбора подборок[Collection]

Создание сеанса для выбора фильмов

POST /create_session

Структура запроса RequestBody

{
  "device_id": "Qr2da&y38dba7",
  "name": "userName",
  "genres": [
    "Комедия"
  ],
  "collections": []
}
ПолеОписаниеТип данных
device_idСерийный номер устройства пользователяString
nameНик пользователяString
genresМассив полей name у модели Genre, выбранных пользователем жанров (может быть пустым, если пользователь выбирает по подборкам)[String]
collectionsМассив полей slug у модели Collection, выбранных пользователем подборок (может быть пустым, если пользователь выбирает по жанрам)[String]

Структура ответа

{
  "session_id": "GIGd281"
}
ПолеОписаниеТип данных
session_idУникальный код сеанса, по которому пользователи могут присоединиться (Состоит из 7 символов: 4 буквы и 3 цифры)String

Подключение к сессии

POST /connect_session

Структура запроса RequestBody

{
  "session_id": "GIGd281",
  "user": {
    "name": "userName",
    "device_id": "Qr2da&y38dba7"
  }
}
ПолеОписаниеТип данных
session_idУникальный код сеанса, по которому пользователи могут присоединиться (Состоит из 7 символов: 4 буквы и 3 цифры)String
userИнформация о подключаемом пользователеUser

Получение информации о комнате ожидания (сессии) (Периодический запрос)

GET /session_waiting_room

Структура запроса RequestBody

{
  "session_id": "GIGd281"
}
ПолеОписаниеТип данных
session_idУникальный код сеанса, по которому пользователи могут присоединиться (Состоит из 7 символов: 4 буквы и 3 цифры)String
Структура ответа
{
  "users": [
    {
      "device_id": "Qr2da&y38dba7",
      "name": "userName"
    }
  ],
  "matched_movies": 0,
  "date": "2024-09-23",
  "status": "waiting"
}
ПолеОписаниеТип данных
usersМассив пользователей, присоединенных к комнате ожидания[User]
matched_moviesЧисло совпавших фильмовInteger
dateДата создания сессииString
statusСтатус сессииSessionStatus

Информирование о начале сессии от ее создателя

POST /start_session

Структура запроса RequestBody

{
  "session_id": "GIGd281"
}
ПолеОписаниеТип данных
session_idУникальный код сеанса, по которому пользователи могут присоединиться (Состоит из 7 символов: 4 буквы и 3 цифры)String

Информирование о выходе из комнаты ожидания

POST /exit_session

Структура запроса RequestBody

{
  "session_id": "GIGd281",
  "device_id": "Qr2da&y38dba7"
}
ПолеОписаниеТип данных
session_idУникальный код сеанса, по которому пользователи могут присоединиться (Состоит из 7 символов: 4 буквы и 3 цифры)String
device_idСерийный номер устройства пользователя. Если серийный номер равен серийному номеру создателя, оповещаем пользователей об отмене сессииString

Получение списка фильмов в сессии для выбора

GET /api/sessions/[session_id]/movies/

Структура запроса

ПараметрОписание
session_idУникальный код сеанса, по которому пользователи могут присоединиться (Состоит из 7 символов: 4 буквы и 3 цифры)
Структура ответа
{
  "movies": [
    {
      "id": 999,
      "name": "Дюна",
      "description": "Наследник знаменитого дома Атрейдесов...",
      "year": 2021,
      "countries": [
        "Канада",
        "Венгрия"
      ],
      "poster": "http://www.img.ru/img.jpg",
      "alternative_name": "Dune",
      "rating_kp": 8.5,
      "rating_imdb": 6.1,
      "votes_kp": 1000,
      "votes_imdb": 500,
      "movie_length": 155,
      "genres": [
        {
          "name": "Фантастика"
        },
        {
          "name": "Боевик"
        }
      ],
      "directors": [
        "Дени Вильнев"
      ],
      "actors": [
        "Тимоти Шаламе",
        "Оскар Айзек"
      ]
    }
  ]
}
ПолеОписаниеТип данных
moviesМассив фильмов для выбора, отфильтрованный по выбранным жанрам или подборкам[MovieDetails]

Пометка фильма как понравившегося

POST /like

Структура запроса RequestBody

{
  "film_id": "1q3fj38d",
  "device_id": "Qr2da&y38dba7",
  "session_id": "GIGd281"
}
ПолеОписаниеТип данных
film_idId понравившегося фильмаString
device_idСерийный номер устройства пользователя, который пометил фильм как понравившийсяString
session_idУникальный код сеанса, по которому пользователи могут присоединиться (Состоит из 7 символов: 4 буквы и 3 цифры)String

Отмена выбора фильма как понравившегося

POST /revertLikedMovie

Структура запроса RequestBody

{
  "film_id": "1q3fj38d",
  "device_id": "Qr2da&y38dba7",
  "session_id": "GIGd281"
}
ПолеОписаниеТип данных
film_idId фильмаString
device_idСерийный номер устройства пользователя, который отменил свой выборString
session_idУникальный код сеанса, по которому пользователи могут присоединиться (Состоит из 7 символов: 4 буквы и 3 цифры)String

Получение количества совпадений и последнего match фильма (Периодический запрос)

GET /matches

  1. Совпадением фильма считается, когда все участники сессии пометили фильм как понравившийся

Структура запроса RequestBody

{
  "session_id": "GIGd281"
}
ПолеОписаниеТип данных
session_idУникальный код сеанса, по которому пользователи могут присоединиться (Состоит из 7 символов: 4 буквы и 3 цифры)String
Структура ответа
{
  "count": 5,
  "last_matched_movie":
  {
    "id": 999,
    "name": "Дюна",
    "description": "Наследник знаменитого дома Атрейдесов...",
    "year": 2021,
    "countries": [
      "Канада",
      "Венгрия"
    ],
    "poster": "http://www.img.ru/img.jpg",
    "alternative_name": "Dune",
    "rating_kp": 8.5,
    "rating_imdb": 6.1,
    "votes_kp": 1000,
    "votes_imdb": 500,
    "movie_length": 155,
    "genres": [
      {
        "name": "Фантастика"
      },
      {
        "name": "Боевик"
      }
    ],
    "directors": [
      "Дени Вильнев"
    ],
    "actors": [
      "Тимоти Шаламе",
      "Оскар Айзек"
    ]
  },
  "is_roulette_start": false
}
ПолеОписаниеТип данных
countКоличество совпаденийInteger
last_matched_movieПоследний совпавший фильм (может быть null, если совпадений ещё не было)MovieDetails
is_roulette_startПризнак начала сценария с рулеткойBoolean

Получение списка совпавших фильмов в сессии

GET /api/sessions/[session_id]/get_matched_movies/

  1. Совпадением фильма считается, когда все участники сессии пометили фильм как понравившийся

Структура запроса

ПараметрОписание
session_idУникальный код сеанса, по которому пользователи могут присоединиться (Состоит из 7 символов: 4 буквы и 3 цифры)
Структура ответа
{
  "movies": [
    {
      "id": 999,
      "name": "Дюна",
      "poster": "http://www.img.ru/img.jpg"
    }
  ]
}
ПолеОписаниеТип данных
moviesМассив совпавших фильмов[Movie]

Получение полной информации о фильме

GET /api/movieDetails/[movie_id]/

ПараметрОписание
movie_idУникальный идентификатор фильма
Структура ответа
{
  "movie":
  {
    "id": 999,
    "name": "Дюна",
    "description": "Наследник знаменитого дома Атрейдесов...",
    "year": 2021,
    "countries": [
      "Канада",
      "Венгрия"
    ],
    "poster": "http://www.img.ru/img.jpg",
    "alternative_name": "Dune",
    "rating_kp": 8.5,
    "rating_imdb": 6.1,
    "votes_kp": 1000,
    "votes_imdb": 500,
    "movie_length": 155,
    "genres": [
      {
        "name": "Фантастика"
      },
      {
        "name": "Боевик"
      }
    ],
    "directors": [
      "Дени Вильнев"
    ],
    "actors": [
      "Тимоти Шаламе",
      "Оскар Айзек"
    ]
  }
}
ПолеОписаниеТип данных
movieПолная информация о фильмеMovieDetails

Получение подробной информации о сессии

GET /api/sessions/[session_id]/

Структура запроса

ПараметрОписание
session_idУникальный код сеанса, по которому пользователи могут присоединиться (Состоит из 7 символов: 4 буквы и 3 цифры)

Структура ответа

{
  "session": {
    "id": "Q2Nurf9o",
    "users": [
      {
        "userId": "string",
        "name": "string"
      }
    ],
    "matched_movies": 5,
    "date": "2024-06-22",
    "status": "waiting",
    "session_img": "poster url"
  }
}
ПолеОписаниеТип данных
sessionДанные сессииSession

Информирование о начале события "Рулетка"

POST /start_roulette

Структура запроса RequestBody

{
  "session_id": "GIGd281",
  "device_id": "Qr2da&y38dba7"
}
ПолеОписаниеТип данных
session_idУникальный код сеанса, по которому пользователи могут присоединиться (Состоит из 7 символов: 4 буквы и 3 цифры)String
device_idСерийный номер устройства пользователя, который инициировал событиеString
Структура ответа
{
  "random_movie_id": "1q3ev4m"
}
ПолеОписаниеТип данных
random_movie_idId выбранного фильма для просмотра случайным образомString

Подключение пользователя к событию "Рулетка"

POST /connect_roulette

Структура запроса RequestBody

{
  "session_id": "GIGd281",
  "device_id": "Qr2da&y38dba7"
}
ПолеОписаниеТип данных
session_idУникальный код сеанса, по которому пользователи могут присоединиться (Состоит из 7 символов: 4 буквы и 3 цифры)String
device_idСерийный номер устройства пользователя, который подключается к событиюString
Структура ответа
{
  "random_movie_id": "1q3ev4m"
}
ПолеОписаниеТип данных
random_movie_idId фильма для просмотра, выбранного случайным образомString

Получение списка пользователей, подключенных к событию "Рулетка" (Периодический запрос)

GET /roulette_users

Структура запроса RequestBody

{
  "session_id": "GIGd281"
}
ПолеОписаниеТип данных
session_idУникальный код сеанса, по которому пользователи могут присоединиться (Состоит из 7 символов: 4 буквы и 3 цифры)String
Структура ответа
{
  "users": [
    {
      "name": "userName",
      "device_id": "Qr2da&y38dba7"
    }
  ]
}
ПолеОписаниеТип данных
usersМассив пользователей, подключенных к событию "Рулетка"[User]

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors