> ## 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 API, условные поля, пагинация, время и связи между ресурсами.

API возвращает объекты пользователей, разделов и содержимого. Название типа в справочнике, например `Thread` или `User`, указывает на соответствующую схему ниже.

<CardGroup cols={2}>
  <Card title="Объект User" icon="user" href="/guard-forum/models/users">
    User и определения пользовательских полей.
  </Card>

  <Card title="Темы и сообщения" icon="messages" href="/guard-forum/models/content">
    Thread, Post, Poll, префиксы и поля тем.
  </Card>

  <Card title="Разделы" icon="folder-tree" href="/guard-forum/models/nodes">
    Node и данные конкретных типов разделов.
  </Card>

  <Card title="Записи профиля" icon="address-card" href="/guard-forum/models/profile">
    ProfilePost и ProfilePostComment.
  </Card>

  <Card title="Диалоги и уведомления" icon="envelope" href="/guard-forum/models/conversations">
    Conversation, ConversationMessage и UserAlert.
  </Card>

  <Card title="Вложения" icon="paperclip" href="/guard-forum/models/attachments">
    Attachment: файл и его метаданные.
  </Card>
</CardGroup>

## Обозначения типов

| Тип | Значение |
| - | - |
| `string` | Строка UTF-8 |
| `integer` | Целое число; допустимый диапазон зависит от поля |
| `boolean` | `true` или `false` |
| `object` | JSON-объект; ключи и значения определяются полем |
| `array` | Массив; тип элементов описывается у поля |
| `User[]`, `Thread[]` и подобные | Массив объектов указанной схемы |
| `true` | Успешная отметка действия, например `success: true` |

ID объектов XenForo передаются как целые числа. Это не Discord ID из API Kalenich Stats: типы идентификаторов у разных сервисов не следует смешивать.

## Условные поля и связи

Состав объекта зависит от способа запроса и прав пользовательского контекста. Например, тема может содержать вложенный `User`, а подробный ответ — дополнительные сведения о профиле. Связи `Thread`, `Forum`, `Attachments`, `ProfileUser` и другие включаются по правилам метода и контекста.

Поля `can_*` описывают доступность действий для текущего пользователя. Это полезная подсказка интерфейсу, но при выполнении действия сервер проверяет права заново.

<Note>
  Отсутствие поля, `null`, пустая коллекция и числовой `0` имеют разный смысл. Проверяйте наличие условного поля, прежде чем обращаться к нему.
</Note>

## Время

Unix timestamp в API XenForo выражается в **секундах**. В JavaScript для создания `Date` умножайте его на `1000`:

```javascript theme={null}
const publishedAt = new Date(post.post_date * 1000);
```

Для некоторых временных полей `0` означает отсутствие события или срока. Проверяйте описание конкретного поля: например, `read_date: 0` у уведомления означает, что оно ещё не прочитано.

`time_spent` — длительность в секундах, а не временная отметка. Её не нужно преобразовывать в календарную дату.

## Пагинация

Методы с постраничной выдачей возвращают объект `pagination`:

```json Условный пример theme={null}
{
  "pagination": {
    "current_page": 1,
    "last_page": 3,
    "per_page": 20,
    "shown": 20,
    "total": 45
  }
}
```

| Поле | Описание |
| - | - |
| `current_page` | Текущая страница; при пустой коллекции может быть `0` |
| `last_page` | Последняя страница; `0` при отсутствии результатов |
| `per_page` | Число элементов на странице для этого метода |
| `shown` | Число элементов, включённых в текущую страницу |
| `total` | Общее число результатов |

Не фиксируйте размер страницы для всего API: он зависит от метода и настроек форума. Наличие пагинации проверяйте в описании конкретной операции.

## Текст и HTML

Поле `message` содержит исходный текст публикации, а `message_parsed` — его HTML-представление. Назначение этих полей различается; выбирайте подходящее для своего интерфейса и его правил обработки HTML.

## Особенности дополнений

В Guard Forum тип `User` дополнен `time_spent`, а темы — `sv_prefix_ids`. Поле `user_title` в текущей установленной версии может быть `true` вместо строки. Совместимость этих полей и работа собственных методов описаны в разделе [«Особенности форума»](/guard-forum/extensions).


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