Skip to content

Latest commit

 

History

History
executable file
·
304 lines (266 loc) · 13.8 KB

File metadata and controls

executable file
·
304 lines (266 loc) · 13.8 KB

API Администрирования


Модерация

Забанить пользователя

запрос

{
    messageId: number; // Идентификатор сообщения
    reasonId: number; // Идентификатор причины бана
    data?: Object; // Дополнительная информация
}

ответ

[]

Вернёт ошибку если переданные пользователь или причина не существуют, у текущего пользователя нет прав для указанной причины, нет гражданки, повторная заявка на того же пользовтеля с той же причиной, больше 5 заявок за последние 10 минут, текущий пользователь не залогинен или передан неверный токен.

Блокировка пользователя

запрос

{
    userId: number; // Идентификатор пользователя которого нужно заблокировать или разблокировать
    state: boolean; // Статус блокировки, false для снятия
}

ответ

[]

Заблокированный пользователь не проходит проверку токена.
Вернёт ошибку если пользователь не залогинен, передан неверный токен или пользователь не имеет роли blocker.

Проверить забанен ли пользователь

запрос

{
    userId: number; // Идентификатор пользователя, которого нужно проверить
}

ответ

{
    id: number; // Идентификатор бана, 0 для незабаненных
    banned: boolean; // true если забанен, false если не забанен или пользователь не существует
    expire: unixtime; // Время истечения бана, 0 для незабаненных
    reason: number; // Идентификатор причины бана, 0 для незабаненных
}

Если банов несколько, то вернет тот, который заканчивается позднее.
Вернёт ошибку если передан пустой или несуществующий userId.

Получить список банов

запрос

{
    from?: unixtime; // От
    to?: unixtime; // До
    reason?: number; // Фильтр по указанной причине
    banId?: number; // Конкретный номер бана
}

ответ

[
    {
        id: number; // Идентификатор бана
        start: unixtime; // Время начала бана от
        end: unixtime; // Время начала бана до
        reason: Object; // Причина бана, объект из ответа /api/moderation/reasons,
        active: boolean; // Статус бана, false если отменён
        data: [ // Дополнительные данные бана
            { // Сообщение чата
                text: string; // Текст сообщения чата
                attempt: boolean; // Флаг что за сообщение голосовали баном
                accused: boolean; // Флаг что сообщение от забаненного пользователя
            },
            ...
        ]
    },
    ...
]

Список доступен всем залогиненным пользователям. Все, кроме имеющих роль moderator, получают список только своих банов.
В дополнительных данных бана сообщения за которые голосовали баном и несколько сообщений из чата того же канала до забаненных. Для причины бана 'несправедливо обвинил другого' в данных будут находиться причина бана и сообщение другого пользователя, бан по которым был отменён.
Вернёт ошибку если пользователь не залогинен или передан неверный токен.

Получить список причин бана

запрос

{
    content: string; // Тип контента, [chat, moderation]
}

ответ

[
    {
        id: number; // Идентификатор причины
        name: string; // Имя причины
        content: string; // Тип контента
    },
    ...
]

Вернёт ошибку если передан неверный тип контента.

Отменить бан

запрос

{
    ban: number; // Идентификатор бана
}

ответ

[]

Отменяет выбранный бан, при этом выдавая бан всем пользователям которые его ставили.
Вернёт ошибку если бан с указанным идентификатором не существует, пользователь не залогинен, передан неверный токен или пользователь не имеет роли moderator.

Поддержка

Общение ведётся в отдельном канале чата support/<id>, где <id> это идентификатор вопроса. Реальые идентификаторы и имена пользователей(спрашивающего и отвечающих) скрыты и не передаются в запросах по саппорт каналам.
Активными вопросами считаются те, у которых в соответствующем канале чата последнее сообщение от спрашивающего.

Задать вопрос

запрос

{
    category: number; // Идентификатор категории
    question: string; // Текст вопроса
}

ответ

{
    id: number; // Идентификатор вопроса
    time: unixtime; // Время вопроса
    category: Object; // Данные категории, объект из ответа /api/category
    question: string; // Текст вопроса
    active: boolean; // Состояние вопроса, true для только созданного
}

Вернёт ошибку если передан неверный идентификатор категории, текст вопроса пустой, у пользователя есть уже 3 неотвеченных вопроса(без хотя бы одного ответа поддержки), пользователь лишён права задавать вопросы(роль canUseSupport === false), не залогинен или передан неверный токен.

Отключить возможность задавать вопросы

запрос

{
    questionId: number; // Идентификатор вопроса
}

ответ

{}

Снимает с юзера, задавшего вопрос, роль canUseSupport, после чего тот не может задавать вопросы до разбана.
Вернёт ошибку если передан неверный идентификатор вопроса, пользователь не залогинен, передан неверный токен или пользователь не имеет роли support.

Список последних вопросов

запрос

{}

ответ

[
    string, // Идентификатор чат канала вопроса
    ...
]

Вернёт список чат каналов последних вопросов пользователя(10 штук), отсортированных по активности(без ответа поддержки первыми) и времени создания(более поздние первыми).
Вернёт ошибку если пользователь не залогинен или передан неверный токен.

Получить список вопросов

запрос

{
    category?: number; // Идентификатор категории
    from?: unixtime; // Дата начала поиска
    onlyActive?: boolean; // Вернуть только активные вопросы, true по умолчанию
}

ответ

[
    Object, // Данные вопроса, объект из ответа /api/support/ask
    ...
]

Не вернёт вопросы пользователей, у которых стоит запрет на обращение в поддержку.
Вернёт ошибку если передан не верный идентификатор категории, пользователь не залогинен, передан неверный токен или пользователь не имеет роли support.

Безопасность

Список последних логинов

запрос

{}

ответ

[
    {
        ip: string; // IP адрес с которого логинились
        accessTime: unixtime; // Время логина
        firstAccessTime: unixtime; // Время первого логина с этого же IP
        lastAccessTime: unixtime; // Время последнего логина с этого же IP
        userAgent: string; // UserAgent браузера с которого логинились
    },
    ...
]

Возвращает данные 10 последних логинов в аккаунт текущего пользователя.
Вернёт ошибку если пользователь не залогинен или передан неверный токен.

Бан в чате

chatBan
{
    // Данные бана, ответ /api/moderation/check
}

/api/moderation/check
Приходит при получении бана в чате.

Отметка о нарушении в чате

chatBanAttempt
{
    messageId: number; // Идентификатор сообщения
    channel: string; // Идентификатор канала
}

Приходит когда кто-то проголосовал за бан этого сообщения.

Отмена бана в чате

chatBanUndo
{}

Приходит при отмене бана текущего пользователя.