> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arzguard.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Особенности Guard Forum

> Собственные методы, дополнительные поля пользователей и тем, совместимость и ограничения установленных дополнений.

Guard Forum использует стандартный REST API XenForo и несколько дополнений. Они добавляют маршруты и меняют отдельные поля или параметры существующих методов.

## Повышение и снятие

Методы `promote/{user_id}/` и `demote/{user_id}/` работают с дополнительными группами пользователя. GET возвращает группы, доступные инициатору для соответствующего действия; POST изменяет назначение.

Нужен scope `user:promote` и разрешения инициатора, предусмотренные дополнением. Наличие scope не заменяет эти проверки. Основная группа и полный административный редактор профиля — отдельные механизмы.

> [!NOTE]
>
> Для снятия указывайте конкретную группу в параметре `group`. В установленной версии отсутствие корректной группы не означает «снять все группы».

## Несколько префиксов темы

MultiPrefix расширяет создание и редактирование тем:

| Данные | Формат |
| - | - |
| Предпочтительный параметр формы | `sv_prefix_ids[]` — массив ID префиксов |
| Совместимый вариант ввода | `prefix_id[]`, когда `sv_prefix_ids` не передан |
| Поле ответа темы | `sv_prefix_ids` — массив ID префиксов |

Дополнение убирает нулевые и недоступные префиксы и проверяет ограничения количества, заданные для раздела. Не используйте скалярный `prefix_id` как универсальную замену массива в интеграции с этой установкой.

Условный фрагмент формы:

```text theme={null}
sv_prefix_ids[]=10&sv_prefix_ids[]=20
```

ID в примере иллюстративные. Доступные префиксы и возможность их применения зависят от раздела и пользователя.

## Дополнительные поля User

| Поле | Тип | Значение |
| - | - | - |
| `time_spent` | integer | Накопленное время активности в секундах, добавленное TimeSpentOnline |
| `user_group_id` | integer | Основная группа; дополнительно включается для ключа с `user:promote` |
| `secondary_group_ids` | integer\[] | Дополнительные группы; дополнительно включаются для ключа с `user:promote` |

### Совместимость `user_title`

В установленной версии Promote при непустом пользовательском звании поле `user_title` может содержать boolean `true` вместо текста. В остальных случаях возвращается строка стандартного звания. Поэтому обрабатывайте тип **string или true** и не передавайте значение напрямую в строковые операции.

```javascript theme={null}
const title = typeof user.user_title === 'string'
  ? user.user_title
  : '';
```

Это известное отличие текущей установки. Поле `custom_title`, когда оно доступно по правам, имеет отдельные правила видимости; не рассчитывайте на его наличие в каждом объекте User.

## Совместимость интеграций

Проверяйте наличие условных полей и используйте `can_*`, когда они предоставлены объектом. Списки, фильтры и права описаны у конкретного метода. Данные из более новых версий XenForo или других дополнений нельзя автоматически считать частью Guard Forum API.

> **[Все методы](/guard-forum/catalog)**
>
> Операции стандартного API и дополнений.

> **[Схемы данных](/guard-forum/models)**
>
> Формат User, Thread и других объектов.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.