- Пользователь
POST
P
/api/user
Данные пользователяPOST
P
/api/user/list
Данные списка пользователейPOST
P
/api/user/current
Данные текущего пользователяPOST
RA
/api/user/full
Полные данные пользователяPOST
C
/api/user/login
ЛогинPOST
P
/api/user/logout
ЛогаутPOST
A
/api/user/settings
Получить или установить настройки текущего пользователяPOST
P
/api/user/forgot
Запрос на сброс пароляPOST
P
/api/user/restore
Установка пароляPOST
RA
/api/user/roles/list
Список пользователей с рольюPOST
RA
/api/user/roles/set
Изменить роль пользователя
- Категория
- Стрим
- Чат
- Фильтр
- Подписки
- Игноры
- Мастерстримеры
- Расписание
- Майлстоуны
- Сезоны соревнования
- Дополнительные вызовы
запрос
{
id: <int|null>, // Идентификатор пользователя
name: <string|null> // Имя пользователя
}
ответ
{
id: <int>, // Идентификатор пользователя
name: <string>, // Имя пользователя
block: <bool> // Статус блокировки, false по умолчанию
}
Может быть передан любой из параметров запроса.
Вернёт ошибку если пользователь с таким идентификатором или именем не найден.
запрос
{
ids: <array> [ // Массив пользователей
<int>, // Идентификатор пользователя
...
]
}
ответ
[
<obj>, // Объект из ответа /api/user
...
]
/api/user
Вернёт данные для всех существующих пользователей. Порядок в ответе может не совпадать с порядком идентификаторов в запросе.
запрос
{}
ответ, если токена авторизации нет или он неверный
{
guest: true,
settings: <obj>, // Настройки пользователя по умолчанию, объект из ответа /api/user/settings
roles: <obj> // Роли пользователя, значения по умолчанию, см. ниже
}
ответ, если токен авторизации верен
{
guest: false,
id: <int>, // Идентификатор пользователя
name: <string>, // Имя пользователя
block: <bool>, // Статус блокировки, false по умолчанию
settings: <obj>, // Настройки пользователя, объект из ответа /api/user/settings
roles: <obj> { // Роли пользователя
support: <bool>, // Сапорт, false по умолчанию
canUseSupport: <bool>, // Возможность задавать вопрос саппортам и присоединяться к чат каналам вопросов, true по умолчанию
moderator: <bool>, // Модератор, false по умолчанию
citizen: <int>, // Сила голоса гражданской модерации, 2 по умолчанию
twitch: <bool>, // Привязка твитч аккаунта, false по умолчанию
blocker: <bool>, // Возможность блокировать аккаунт пользователя, false по умолчанию
masterstreamer: <bool>, // Мастерстример, false по умолчанию
smiler: <bool>, // Возможность редактировать смайлы, false по умолчанию
roleAdmin: <bool>, // Возможность редактировать роли других пользователей, false по умолчанию
schedule: <bool>, // Возможность изменять своё расписание, false по умолчанию
seasoner: <bool> // Возможность управлять сезонами соревнования, false по умолчанию
}
}
запрос
{
id: <int|null>, // Идентификатор пользователя
name: <string|null> // Имя пользователя
}
ответ
{
id: <int>, // Идентификатор пользователя
name: <string>, // Имя пользователя
block: <bool>, // Статус блокировки, false по умолчанию
roles: <string>, // Роли пользователя, объект из ответа /api/user/current
settings: <string> // Настройки пользователя, объект из ответа /api/user/settings
}
/api/user/current
, /api/user/settings
Может быть передан любой из параметров запроса.
Вернёт ошибку если пользователь не имеет роли roleAdmin
, запрашиваемый пользователь с таким идентификатором или именем не найден.
запрос
{
name: <string>, // Имя пользлователя
password: <string>, // Пароль пользователя
recaptchaResponse: <string> // Строка ответа Рекапчи
}
ответ
{
token: <string>, // Строка с токеном
current: <obj> // Данные пользователя, объект из ответа /api/user/current
}
Работает только на funstream.tv из-за использования Рекапчи.
При успешном логине высталяется http-only кука, необходимая для прелоада funstream.tv.
Вернёт ошибку если пользователь с таким именем и паролем не найден или капча не верна.
запрос
{}
ответ
[]
Уничтожает куку, установленную при логине.
Вернёт ошибку если передан неверный токен.
запрос и ответ идентичны
{
stream: <obj> {
autostart: <bool>, // Автостарт плеера стрима, true по умолчанию,
player: <string>, // Предпочитаемый плеер, по умолчанию пусто, приоретный плеер twitch.tv
skipmain: <bool> // Пропускать главную страницу при прямом открытии ссылки funstream.tv, false по умолчанию
},
chat: <obj> {
smiles: <bool>, // Показывать смайлы, true по умолчанию"
images: <bool>, // Показывать миниатюру картинок в чате, false по умолчанию
fontsize: <int>, // Размер шрифта чата, 12 по умолчанию
namecolor: <int>, // Номер цвета ника, 0 по умолчанию
mychannels: <array of strings>, // Список идентификаторов закрепленных каналов пользователя, пустой массив по умолчанию
theme: <string>, // Тема формления чата, 'sc2tv' по умолчанию
disablenamecolor: <bool>, // Отключить цветные ники, false по умолчанию
thirdparty: <bool>, // Показывать сообщения Твича и Гудгейма, true по умолчанию
favoritesmiles: <array of strings>, // Список кодов избранных смайлов, пустой массив по умолчанию
thirdpartydontmask: <bool>, // Не затемнять сообщения с других сервисов, false по умолчанию
imagesgif: <bool>, // Отображать анимированные картинки, true по умолчанию
submode: <string>, // Сабмод режим чата своего стрима, [none | level], none по умолчанию
totalignore: <bool> // Режим полного игнора, false по умолчанию
}
}
В параметрах запроса могут отсутствовать любые поля или все сразу.
Все переданные в параметрах запроса настройки будут сохранены для текущего пользователя.
Вернёт ошибку если токена авторизации нет, он неверен, или указаны ошибочные настройки.
запрос
{
email: <string> // Почта аккаунта к которому необходимо сбросить пароль
}
ответ
[]
Если был указан верный почтовый адрес, то отправляет на него письмо с новым паролем и ссылкой по которой пароль будет установлен.
запрос
{
code: <string> // Код по которому соответствующему аккаунту будет установлен новый пароль(присланный на почту)
}
ответ
{
// Данные логина, ответ /api/user/login
}
/api/user/login
Вернёт ошибку если был передан неверный или использованный код, или не найден пользователь по коду.
запрос
{
role: <string> // Название роли
}
ответ
[
<obj> // Данные пользователя, объект из ответа /api/user
...
]
/api/user
Вернёт ошибку если пользователь не имеет роли roleAdmin
.
запрос
{
userId: <int>, // Идентификатор пользователя
role: <string>, // Название роли
value: <bool|int> // Новое значение роли
}
ответ
[]
Вернёт ошибку если пользователь не имеет роли roleAdmin
, передан неверный идентификатор пользователя или значение роли не bool|int.
запрос
{
content: <string>, // Тип контента, [stream, support]
id: <int|null>, // Идентификатор категории
slug: <string|null>, // Короткое имя категории
options: <object|null> {
subCategories: <bool|null>, // Включая 1 уровень подкатегорий, false, по умолчанию
contentAmount: <bool|null> // Включая количество контента, false по умолчанию
}
}
ответ
{
id: <int>, // Идентификатор категории
slug: <string>, // Короткое имя категории
name: <string>, // Полное имя категории
subCategories: <array|null>, // Подкатегории, массив объектов с полями id, slug, name и contentAmount(если выставленна соответствующая опция)
contentAmount: <int|null> // Количество контента
}
Корневая категория для любого контента ищется по slug: 'top'
.
Вернёт ошибку если категория с таким id или slug не найдена.
запрос
{
id: <int|null>, // Идентификатор стрима
owner: <string|null>, // Имя стримера
options: <obj|null> {
players: <bool|null> // Вернуть плееры стрима, false по умолчанию
}
}
ответ
{
id: <int>, // Идентификатор стрима
owner: <obj>, // Данные стримера, объект из ответа /api/user
name: <string>, // Заголовок стрима
description: <string>, // Описание стрима
category: <obj>, // Категория стрима, объект из ответа /api/category
image: <string>, // Относительная ссылка на картинку заставки
thumbnail: <string>, // Относительная ссылка на картинку превью
adult: <bool>, // Флаг 18+
start_at: <int>, // Время начала стрима, unixtime, 0 по умолчанию
rating: <int>, // Текущий рейтинг стрима
players: <array|null> [ // Активные(онлайн) плееры стрима
{
name: <string>, // Сервис плеера
channel: <string>, // Имя канала плеера
code: <string> // HTML код плеера с учётом настроек пользователя
},
...
]
}
Вернёт ошибку если стрима с данным id или именем стримера не существует.
запрос
{
id: <int> // Идентификатор стрима
}
ответ
{
url: <string> // Ссылка на видео превью
}
Вернёт ссылку на видео превью если у стрима есть Twitch или GoodGame плеер.
запрос
{
channels: <array> [ // Список каналов
<string>, // Идентификатор канала
...
]
}
ответ
[
{
id: <string>, // Идентификатор канала
name: <string>, // Имя канала
user: <obj|null> // Владелец канала, объект из ответа /api/user
},
...
]
Вернёт ошибку если хотя бы один из переданных идентификаторов неверен или список каналов пуст.
запрос
{}
ответ
[
<string>, // Идентификатор канала
...
]
Возвращает последние 30 приват каналов пользователя. Сортировка по последнему сообщению. На данный момент не фильтрует приваты с заигноренными пользователями, необходимо делать это вручную.
Вернёт ошибку если пользователь не залогинен или передан неверный токен.
запрос
{
content: <string>, // Тип контента, [stream]
type: <string>, // Тип фильтра, [all, my]
category: <obj> { // Категория, любой из параметров
id: <int|null>, // Идентификатор категории
slug: <string|null> // Короткое имя категории, top для верхней
}
}
ответ
{
category: <obj> {
parent: <obj|null>, // Родительская категория относительно переданной, объект из ответа /api/category
current: <obj>, // Данные переданной категории, объект из ответа /api/category с contentAmount=true, subCategories=true с добавленным полем 'weight' для каждой категории
},
content: <array> [
<obj>, // Данные соотвествующего элемента контента, см ниже
...
]
}
Вернёт список стримов, отсортированных по текущему рейтингу. Поле weight <int>
у категорий(текущей и дочерних) это суммарный теукщий рейтинг стримов в этой категории. Сортировка дочерних категорий по этому параметру.
Если тип my
то вернёт список онлайн стримов из избранного пользрвателя
Вернёт ошибку если переданы неверные данные каегории, контент или тип.
Вернёт ошибку если передан тип my
и пользователь не залогинен или передан неверный токен.
запрос
{
content: <string>, // Тип контента, [stream]
category: <obj> { // Категория, любой из параметров
id: <int|null>, // Идентификатор категории
slug: <string|null> // Короткое имя категории, top для верхней
},
amount: <int> // Количество элементов в ответе
}
ответ
{
content: <array> [
<obj> // Данные соотвествующего элемента контента, см ниже
...,
]
}
Вернёт top-{amount} стримов, отсортированных по рейтингу.
Вернёт ошибку если переданы неверные данные категории или контент.
В ответе запросов фильтра у элемента контента есть обязательные поля(присутствуют всегда)
{
id: <int>, // Идентификатор элемента контента
owner: <obj>, // Владелец, объект из ответа /api/user
name: <string>, // Название
adult: <bool>, // Флаг 18+
rating: <int> // Рейтинг
}
И необязательные, зависят от типа контента
{
// stream
description: <string>, // Описание
image: <string>, // Ссылка на картинку стрима
thumbnail: <string>, // Ссылка на превью стрима
start_at: <int>, // Время начала стрима, unixtime
// room
}
запрос
{
content: <string>, // Тип контента, [stream]
id: <int> // Идентификатор элемента контента
}
ответ
[]
Вернёт ошибку если передан неверный тип контента, элемент контента не существует, пользователь не залогинен или передан неверный токен.
запрос
{
content: <string> // Тип контента, [stream]
}
ответ
{
amount: <int> // Количество активных подписок
}
Вернёт количество активных(онлайн) элементов в подписках у пользователя.
Вернёт ошибку если передан наверный тип контента, пользователь не залогинен или передан неверный токен.
запрос
{
content: <string>, // Тип контента, [stream]
id: <int> // Идентификатор элемента контента
}
ответ
{
result: <bool> // true в случае наличия подписки
}
Вернёт ошибку если передан неверный тип контента, элемент контента не существует, пользователь не залогинен или передан неверный токен.
запрос
{
content: <string> // Тип контента, [stream]
}
ответ
[
<obj>, // Данные элемента контента, объект из ответа /api/stream
...
]
В данный момент работает неверно.
Вернёт ошибку если передан наверный тип контента, пользователь не залогинен или передан неверный токен.
запрос
{
content: <string>, // Тип контента, [stream]
id: <int> // Идентификатор элемента контента
}
ответ
[]
Вернёт ошибку если передан неверный тип контента, элемент контента не существует, пользователь не залогинен или передан неверный токен.
запрос
{
content: <string> // Тип контента, [stream]
}
ответ
[
<obj>, // Данные юзера, объект из ответа /api/user
...
]
Вернёт список подписчиков на текущего юзера, если он является стримером(имеет запись о стриме в бд).
Вернёт ошибку если передан наверный тип контента, пользователь не залогинен или передан неверный токен.
запрос
{
content: <string>, // Тип контента, [stream, chat]
item: <int> // Идентификатор элемента контента
}
ответ
[]
Вернёт ошибку если передан неверный тип контента, элемент контента не существует, пользователь не залогинен или передан неверный токен.
запрос
{
content: <string>, // Тип контента, [stream, chat]
item: <int> // Идентификатор элемента контента
}
ответ
{
ignored: <bool> // true если в игноре
}
Вернёт ошибку если передан неверный тип контента, элемент контента не существует, пользователь не залогинен или передан неверный токен.
запрос
{
content: <string>, // Тип контента, [stream, chat]
}
ответ
[
{
content: <string>, // Тип контента, [stream, chat]
item: <int> // Идентификатор элемента контента
},
...
]
Вернёт ошибку если передан наверный тип контента, пользователь не залогинен или передан неверный токен.
запрос
{
content: <string>, // Тип контента, [stream, chat]
item: <int> // Идентификатор элемента контента
}
ответ
[]
Вернёт ошибку если передан неверный тип контента, элемент контента не существует, пользователь не залогинен или передан неверный токен.
запрос
{}
ответ
[
<obj> { // Данные мастерстримера
userId: <int>, // Идентификатор пользователя
icon: <string|null>, // Полная ссылка на иконку, если она есть
smiles: <array> [ // Список смайлов
<obj>, // Данные смайла, объект из ответа /api/smile
...,
]
],
...
]
/api/smile
Список мастерстримеров, у которых одобрен хотя бы один смайл.
запрос
{}
ответ
[
<obj> { // Данные выбранной пользователем иконки
userId: <int>, // Идентификатор пользователя
streamerId: <int>, // Идентификатор стримера, если это иконка мастерстримера, иначе 0
icon: <string>, // Полная ссылка на выбранную иконку
],
...
]
Список пользователей, выбравших конкретную иконку, с данными этой иконки. Если streamerId
0, то у пользователя выбрана кастомная иконка не связанная с мастерстримерами. Если пользователь не выбирал конкретную иконку, то независимо от наличия доступных ему иконок, его нет в этом списке.
запрос
{}
ответ
[
<obj> { // Данные записи в расписании
description: <string>, // Описание
time: <int>, // Время начала, unixtime
user: <int> // Данные стримера, объект из ответа /api/user
],
...
]
запрос
{}
ответ
[
// Тот же формат ответа что в запросе /api/schedule/get
]
/api/schedule/get
Вернёт ошибку если текущий пользователь не имеет роли schedule
.
запрос
{
schedule: [ // Новое расписание
<obj> { // Данные записи в расписании
description: <string>, // Описание
time: <int> // Время начала, unixtime
},
...
]
}
ответ
{}
Вернёт ошибку если текущий пользователь не имеет роли schedule
.
запрос
{
streamerId: <int> // Идентификатор стримера
}
ответ
{
startPoint: <int>, // Время отсчёта собираемого доната, unixtime
donatedAmount: <float>, // Собранный донат с указанного времени
milestones: [ // Список майлстоунов
<obj> { // Данные майлстоуна
active: <bool>, // Флаг активного майлстоуна, false если собрано/выполнено
amount: <float>, // Необходимая сумма с времени отсчёта
description: <string>, // Описание майлстоуна
url: <string> // Ссылка на запись выполненнного майлстоуна
},
...
]
}
Вернёт ошибку если стример не выставил время отсчёта.
запрос
{}
ответ
{
startPoint: <int>, // Время отсчёта собираемого доната, unixtime
milestones: [ // Список майлстоунов
// Массив milestones из ответа /api/milestone/get
]
}
/api/milestone/get
Майлстоуны текущего пользователя.
запрос
{
startPoint: <int>, // Время отсчёта собираемого доната, unixtime
milestones: [ // Список майлстоунов
// Массив milestones из ответа /api/milestone/get
]
}
ответ
[]
/api/milestone/get
Вернёт ошибку если не указано любое из полей майлстоунов.
запрос
{}
ответ
{
start: <int>, // Время начала сезона, unixtime
end: <int>, // Время завершения сезона, для активного 0, unixtime
active: <bool> // Статус сезона
}
Вернёт ошибку если сейчас нет активного сезона(:wtf:)
запрос
{}
ответ
[]
Вернёт ошибку если есть активный сезон.
запрос
{}
ответ
[]
Вернёт ошибку если нет активного сезона.
запрос
{}
ответ
[
<obj> { // Участник соревнования
user: <obj>, // Данные стримера, объект из ответа /api/user
amount: <float>, // Собранная за сезон сумма
nodeId: <int> // nodeId sc2tv для ссылки на стрим /node/<nodeId>
},
...
]
/api/user
Список участников отсортирован по собранной сумме по уменьшению.
Вернёт ошибку если нет активного сезона.
запрос
{
command: <array> [ // Массив запросов
<array> [ // Запрос
<string>, // Урл запроса, например /api/user
<obj> // Параметры запроса
],
...
]
}
ответ
[
<array> [ // Результат соответствующего запроса
<string>, // Урл запроса, например /api/user
<obj>, // Параметры запроса
<obj|array>, // Ответ на запрос
<bool> // Статус запроса, true на успешное выполнение
],
...
]
Позволяет получить результаты нескольких запросов за один.
Для каждого запроса возвращает массив с его данными, статусом выполнения и результатом. Индекс ответа соответствует индексу в массиве запросов.
Если запрос дал ошибку, то в ответе на этот запрос будет объект ошибки и статус false.