Основы API
Модели
Модели данных из ответов API. У каждой модели — таблица свойств и методы, которые с ней работают. Возвращают модель не все из них: удаление и действия вроде закрепления или архивации отвечают 204 без тела, а у отдельных методов своя форма ответа, описанная на их странице.
Методы POSTПолучение подписи, ключа и других параметров, POSTЗагрузка файла, GETСкачивание файла, POSTОтзыв токена и POSTОткрытие представления не связаны ни с одной моделью, поэтому своего раздела у них нет. Первые два отвечают параметрами загрузки и пустым телом, третий — самим файлом, отзыв — пустым объектом, а открытие представления — ответом
201 без тела.Дополнительное поле
GET
Токен доступа
GET
Токен сотрудника
POST
Статус пользователя
GETPUTDELETE
Аватар
PUTDELETE
Сотрудник
POSTGETPUTDELETE
Тег
POSTGETPUTDELETE
Чат
POSTGETPUTDELETE
Экспорт сообщений
POSTGET
Тред
POSTGET
Сообщение
POSTGETPUTDELETE
Реакция на сообщение
POSTGETDELETE
Напоминание
POSTGETPUTDELETE
Черновик
POSTGETPUTDELETE
Ответ на отправку формы
POST
Параметры бота
POSTGETPUTDELETE
Бот в методах самого бота
POSTPUT
Токен бота
POSTGETPUTDELETE
Каталог прав бота
GET
Параметры бота пространства
GET
Событие исходящего вебхука
GETDELETE
Ссылка на поток событий
GET
Событие аудита
GET
Дополнительное поле
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | integer(int32) | Идентификатор поля | 1678 |
| name | string | Название поля | "Город" |
| data_type | CustomPropertyDataType | Тип поля | "string" |
Токен доступа
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | integer(int64) | Идентификатор токена | 4827 |
| token | string | Маскированный токен (видны первые 8 и последние 4 символа) | "cH5kR9mN...x7Qp" |
| name | string| null | Имя токена. У входа из CLI это имя устройства, у токена внешнего приложения — имя приложения. null, если имени нет, например у токена, который сотрудник выдал боту на экране согласия. | "Мой API токен" |
| user_id | integer(int64) | Идентификатор владельца токена | 12 |
| scopes | array of OAuthScope | Список скоупов токена | [ "messages:read", "chats:read" ] |
| created_at | string(date-time) | Дата создания токена | "2025-01-15T10:30:00.000Z" |
| revoked_at | string(date-time)| null | Дата отзыва токена. Всегда null: по отозванному токену метод возвращает 401. | null |
| expires_in | integer(int32)| null | Время жизни токена в секундах. У входа из CLI и у токена внешнего приложения, которому сотрудник выдал доступ, здесь 3600: токен живёт час и продлевается токеном обновления, CLI делает это сам. У остальных токенов null: они бессрочные. | null |
| last_used_at | string(date-time)| null | Дата последнего использования токена. null, пока по токену не было ни одного запроса. Обновляется не чаще раза в минуту, поэтому может отставать. | "2025-02-24T14:20:00.000Z" |
| authorized_at | string(date-time)| null | Дата входа из CLI или выдачи доступа внешнему приложению. При продлении токена не меняется. У остальных токенов null. | null |
Токен сотрудника
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| access_token | string | Токен сотрудника. Передаётся в заголовке Authorization: Bearer при запросах от его имени. | "pato_bm90X2FfcmVhbF90b2tlbg" |
| token_type | string | Тип токена, всегда Bearer | "Bearer" |
| refresh_token | string | Токен обновления. Токен сотрудника бессрочный, поэтому обновлять его не нужно. | "cmVmcmVzaF9ub3RfcmVhbA" |
| scope | string | Выданные права через пробел. Набор берётся из настроек бота. | "chats:read messages:read tasks:read tasks:create" |
| created_at | integer(int64) | Время выдачи токена в формате Unix time, в секундах | 1790242260 |
Статус пользователя
- GETСтатус сотрудника
- GETСвой статус
- PUTНовый свой статус
- PUTНовый статус сотрудника
- DELETEУдаление своего статуса
- DELETEУдаление статуса сотрудника
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| emoji | string | Emoji символ статуса | "🎮" |
| title | string | Текст статуса | "Очень занят" |
| expires_at | string(date-time)| null | Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. null, если срок не задан — такой статус не сбрасывается автоматически. | "2024-04-08T10:00:00.000Z" |
| is_away | boolean | Режим «Нет на месте» | false |
| away_message | object| null | Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. null, если текст не задан. | {
"text": "Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @Олег Петров."
} |
Аватар
- PUTЗагрузка своего аватара
- DELETEУдаление своего аватара
- PUTЗагрузка аватара сотрудника
- DELETEУдаление аватара сотрудника
- PUTЗагрузка аватара чата
- DELETEУдаление аватара чата
- PUTЗагрузка аватара бота
- DELETEУдаление аватара бота
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| image_url | string | URL аватара | "https://files.example.com/uploads/0001/0001/image.jpg" |
Сотрудник
- POSTНовый сотрудник
- GETСвой профиль
- GETИнформация о сотруднике
- GETСписок сотрудников
- GETСписок сотрудников тега
- GETСписок участников чата
- GETПоиск сотрудников
- PUTРедактирование сотрудника
- DELETEУдаление сотрудника
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | integer(int32) | Идентификатор пользователя | 12 |
| first_name | string| null | Имя. Возвращается null, пока приглашённый сотрудник не завершил регистрацию (invite_status со значением sent). | "Олег" |
| last_name | string| null | Фамилия. Если не заполнена, возвращается null или пустая строка. | "Петров" |
| nickname | string | Имя пользователя | "olegpetrov" |
| string| null | Электронная почта. В чужой карточке приходит null, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. | "olegp@example.com" | |
| phone_number | string| null | Телефон. В чужой карточке приходит null, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. | "+79001234567" |
| department | string| null | Департамент. Если не указан, возвращается null или пустая строка. | "Продукт" |
| title | string| null | Должность. Если не указана, возвращается null или пустая строка. | "CIO" |
| role | UserRole | Уровень доступа | "admin" |
| suspended | boolean | Деактивация пользователя | false |
| invite_status | InviteStatus | Статус приглашения | "confirmed" |
| inviter_id | integer(int32)| null | Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает null, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. | 185 |
| list_tags | array of string | Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. | [ "Product", "Design" ] |
| custom_properties | array of CustomProperty | Дополнительные поля сотрудника | [
{
"id": 1678,
"name": "Город",
"data_type": "string",
"value": "Санкт-Петербург"
}
] |
| user_status | UserStatus| null | Статус. null, если у сотрудника не установлен статус. | {
"emoji": "🎮",
"title": "Очень занят",
"expires_at": "2024-04-08T10:00:00.000Z",
"is_away": false,
"away_message": {
"text": "Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @Олег Петров."
}
} |
| bot | boolean | Является ботом | false |
| sso | boolean | Использует ли пользователь SSO | false |
| created_at | string(date-time) | Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ | "2020-06-08T09:32:57.000Z" |
| last_activity_at | string(date-time)| null | Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. null, если сотрудник ещё ни разу не заходил в Пачку или не заходил после смены почты — в этом случае invite_status возвращает sent. | "2025-01-20T13:40:07.000Z" |
| time_zone | string| null | Часовой пояс пользователя. null, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. | "Europe/Moscow" |
| image_url | string| null | Ссылка на скачивание аватарки пользователя. null, если аватарка не загружена. | "https://app.pachca.com/users/12/photo.jpg" |
Тег
- POSTНовый тег
- POSTДобавление тегов
- GETИнформация о теге
- GETСписок тегов
- PUTРедактирование тега
- DELETEИсключение тега из чата
- DELETEУдаление тега
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | integer(int32) | Идентификатор тега | 9111 |
| name | string | Название тега | "Design" |
| users_count | integer(int32) | Количество сотрудников, которые имеют этот тег | 6 |
Чат
- POSTНовый чат
- POSTДобавление участников
- GETИнформация о чате
- GETСписок чатов
- GETСписок чатов пространства
- GETПоиск чатов
- PUTРедактирование чата
- PUTАрхивация чата
- PUTРазархивация чата
- PUTОтметка чата непрочитанным
- PUTРедактирование роли участника
- DELETEВыход из чата
- DELETEИсключение участника
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | integer(int32) | Идентификатор созданного чата | 334 |
| name | string | Название беседы или канала. У личного чата пустая строка, а в методе GETПоиск чатов у него приходит полное имя собеседника, в чате с самим собой — имя владельца токена. | "🤿 aqua" |
| created_at | string(date-time) | Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ | "2021-08-28T15:56:53.000Z" |
| owner_id | integer(int32) | Идентификатор пользователя, создавшего чат | 185 |
| member_ids | array of integer | Массив идентификаторов пользователей, участников | [ 185, 186, 187 ] |
| group_tag_ids | array of integer | Массив идентификаторов тегов, участников | [ 9111 ] |
| channel | boolean | Является каналом | true |
| archived | boolean | Находится в архиве | false |
| personal | boolean | Является личным чатом | false |
| public | boolean | Открытый доступ | false |
| last_message_at | string(date-time) | Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ | "2021-08-28T15:56:53.000Z" |
| meet_room_url | string | Ссылка на Видеочат | "https://meet.pachca.com/aqua-94bb21b5" |
| avatar_url | string| null | Ссылка на аватар чата. null, если аватар не задан. | "https://files.example.com/uploads/0001/0001/image.jpg" |
Экспорт сообщений
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | integer(int32) | Идентификатор экспорта | 22322 |
Тред
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | integer(int64) | Идентификатор треда. Чтобы написать в тред, передайте его в entity_id метода POSTНовое сообщение с entity_type: "thread". | 265142 |
| chat_id | integer(int64) | Идентификатор чата треда. По нему читают сообщения треда методом GETСписок сообщений чата и работают с его участниками. | 2637266155 |
| message_id | integer(int64)| null | Идентификатор сообщения, к которому был создан тред. null для самостоятельного треда, созданного без привязки к сообщению. | 154332686 |
| message_chat_id | integer(int64)| null | Идентификатор чата сообщения. null для самостоятельного треда, созданного без привязки к сообщению. | 2637266154 |
| updated_at | string(date-time) | Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ | "2023-02-01T19:20:47.204Z" |
Сообщение
- POSTНовое сообщение
- POSTЗакрепление сообщения
- POSTДобавление сообщения в важные
- POSTUnfurl (разворачивание ссылок)
- GETИнформация о сообщении
- GETСписок сообщений чата
- GETСписок важных сообщений
- GETПоиск сообщений
- GETСписок прочитавших сообщение
- PUTРедактирование сообщения
- DELETEОткрепление сообщения
- DELETEУдаление сообщения из важных
- DELETEУдаление сообщения
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | integer(int32) | Идентификатор сообщения | 194275 |
| entity_type | MessageEntityType | Тип сущности, к которой относится сообщение | "discussion" |
| entity_id | integer(int32) | Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя) | 334 |
| chat_id | integer(int32) | Идентификатор чата, в котором находится сообщение | 334 |
| root_chat_id | integer(int32) | Идентификатор корневого чата. Для сообщения в треде — идентификатор чата, где находится родительское сообщение треда. У самостоятельного треда родительского сообщения нет, и root_chat_id совпадает с chat_id, как у обычных сообщений. Сообщение треда узнают по entity_type: "thread". | 334 |
| content | string | Текст сообщения | "Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)" |
| user_id | integer(int32) | Идентификатор пользователя, создавшего сообщение | 12 |
| created_at | string(date-time) | Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ | "2021-08-28T15:57:23.000Z" |
| url | string | Прямая ссылка на сообщение | "https://app.pachca.com/chats/334?message=194275" |
| files | array of File | Прикрепленные файлы | [
{
"id": 3560,
"key": "attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png",
"name": "congrat.png",
"file_type": "image",
"url": "https://files.example.com/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?X-Amz-Expires=604800&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"
}
] |
| voice_content | VoiceContent| null | Данные голосового сообщения. Заполняется только для голосовых сообщений (file_type файла — voice), иначе null. | {
"duration_ms": 5400,
"waveform": "4,8,12,20,16,10,6,3",
"transcript": "Привет, посмотри пожалуйста последний отчёт",
"transcript_status": "success"
} |
| buttons | array of array of Button| null | Массив строк, каждая из которых представлена массивом кнопок. null, если при отправке поле buttons не передавали, и у удалённого сообщения. Пустые buttons при отправке или правке приходят как []: сообщение без кнопок узнают и по null, и по пустому массиву. | [
[
{
"text": "Подробнее"
}
]
] |
| thread | object| null | Тред, созданный к этому сообщению. null, если тред не создан, а также у сообщений, которые сами находятся внутри треда. | {
"id": 265142,
"chat_id": 2637266155
} |
| forwarding | Forwarding| null | Информация о пересланном сообщении. null, если сообщение не является пересланным. | {
"original_message_id": 194275,
"original_chat_id": 334,
"author_id": 12,
"original_created_at": "2025-01-15T10:30:00.000Z",
"original_thread_id": null,
"original_thread_message_id": null,
"original_thread_parent_chat_id": null
} |
| parent_message_id | integer(int32)| null | Идентификатор сообщения, к которому написан ответ. null, если сообщение не является ответом на другое сообщение. | null |
| display_avatar_url | string| null | Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. null, если бот не переопределял значение при отправке. | null |
| display_name | string| null | Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. null, если бот не переопределял значение при отправке. | null |
| changed_at | string(date-time)| null | Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Заполняется уже при создании сообщения и обычно отличается от created_at на доли секунды или больше: у created_at доли секунды всегда нулевые. null у сообщений, отправленных до появления этого поля. | "2021-08-28T16:10:00.000Z" |
| deleted_at | string(date-time)| null | Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. null у неудалённых сообщений. В списке сообщений удалённые не возвращаются. | null |
| important | boolean | Сообщение в разделе «Важное» владельца токена. У токена бота всегда false. | false |
Реакция на сообщение
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| user_id | integer(int32) | Идентификатор пользователя, который добавил реакцию | 12 |
| created_at | string(date-time) | Дата и время добавления реакции (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ | "2024-01-20T10:30:00.000Z" |
| code | string | Emoji символ реакции | "👍" |
| name | string | Название emoji реакции | ":+1::skin-tone-1:" |
Напоминание
- POSTНовое напоминание
- GETИнформация о напоминании
- GETСписок напоминаний
- PUTРедактирование напоминания
- DELETEУдаление напоминания
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | integer(int32) | Идентификатор напоминания | 22283 |
| kind | TaskKind | Тип | "reminder" |
| content | string | Описание | "Забрать со склада 21 заказ" |
| due_at | string(date-time)| null | Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. null, если срок не задан. | "2020-06-05T09:00:00.000Z" |
| priority | integer(int32) | Приоритет | 2 |
| user_id | integer(int32) | Идентификатор пользователя-создателя напоминания | 12 |
| chat_id | integer(int32)| null | Идентификатор чата, к которому привязано напоминание. null, если напоминание не привязано к чату. | 334 |
| status | TaskStatus | Статус напоминания | "undone" |
| created_at | string(date-time) | Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ | "2020-06-04T10:37:57.000Z" |
| performer_ids | array of integer | Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные» | [ 12 ] |
| all_day | boolean | Напоминание на весь день: true, если при создании передан all_day: true или срок стоит ровно на 23:59:59. Веб-версия Пачки показывает напоминание без времени только по такому сроку, а при другом времени срока показывает это время. | false |
| custom_properties | array of CustomProperty | Дополнительные поля напоминания | [
{
"id": 1678,
"name": "Город",
"data_type": "string",
"value": "Санкт-Петербург"
}
] |
Черновик
- POSTНовый черновик
- GETИнформация о черновике
- GETСписок черновиков
- PUTРедактирование черновика
- DELETEУдаление черновика
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | integer(int32) | Идентификатор черновика | 4821 |
| entity_type | MessageEntityType| null | Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником | "discussion" |
| entity_id | integer(int32)| null | Идентификатор того, что названо в entity_type: беседы или канала, треда либо сотрудника | 334 |
| chat_id | integer(int32)| null | Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда. | 334 |
| content | string | Текст черновика. У черновика из одних вложений приходит пустая строка, а не null. | "Отчёт за неделю: продажи выросли на 10%" |
| parent_message_id | integer(int32)| null | Идентификатор сообщения, ответом на которое уйдёт черновик. null, если это не ответ. | 196093 |
| files | array of File | Прикреплённые файлы | [
{
"id": 3560,
"key": "attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png",
"name": "congrat.png",
"file_type": "image",
"url": "https://files.example.com/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?X-Amz-Expires=604800&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"
}
] |
| voice_content | VoiceContent| null | Голосовое сообщение. null, если голосового вложения нет. Расшифровка в transcript и её статус в transcript_status у черновика всегда null — она запускается после отправки. | {
"duration_ms": 5400,
"waveform": "4,8,12,20,16,10,6,3",
"transcript": "Привет, посмотри пожалуйста последний отчёт",
"transcript_status": "success"
} |
| schedule | DraftSchedule| null | Расписание отправки. null у обычного черновика. | {
"start_date": "2026-09-17T12:00:00.000Z",
"end_date": "2026-12-31T12:00:00.000Z",
"repetition": {
"interval": "weekly"
}
} |
| next_send_at | string(date-time)| null | Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. null у обычного черновика. | "2026-09-17T12:00:00.000Z" |
| created_at | string(date-time) | Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ | "2026-09-16T10:00:00.000Z" |
| updated_at | string(date-time) | Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ | "2026-09-16T10:00:00.000Z" |
Ответ на отправку формы
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| success | boolean | Признак успешной обработки | true |
Параметры бота
- POSTНовый бот
- GETСписок ботов
- GETИнформация о боте
- PUTРедактирование бота
- DELETEУдаление бота
- POSTРотация токена бота
- POSTРотация секрета клиента
Методы POSTНовый бот и POSTРотация токена бота возвращают эту модель вместе с токеном бота в поле access_token. Токен приходит один раз, а при создании бота с empty: true его в ответе нет.
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | integer(int32) | Идентификатор бота (совпадает с user_id бота) | 1738816 |
| name | string | Имя бота | "Бот задач" |
| nickname | string | Никнейм бота | "tasks_bot" |
| avatar_url | string| null | Ссылка на аватар бота. null, если аватар не задан. | "https://files.example.com/uploads/0001/0001/image.jpg" |
| creator_id | integer(int32)| null | Идентификатор сотрудника, создавшего бота. null, если создатель не записан. | 12 |
| created_at | string(date-time) | Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ | "2025-05-15T14:30:00.000Z" |
| authorized_users_count | integer(int32) | Сколько сотрудников авторизовали бота | 3 |
| last_used_at | string(date-time)| null | Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. null, если такого не было. Использование токена учитывается не чаще раза в минуту. | "2025-05-15T14:30:00.000Z" |
| webhook | BotWebhook | Объект параметров вебхука | {
"name": "Бот задач",
"nickname": "tasks_bot",
"outgoing_url": "https://example.com/tasks/new",
"events": [
"message_new"
],
"trigger_on": "commands",
"commands": [
"/task"
],
"scopes": [
"messages:create"
],
"template": "Заказ от {{ client }} на сумму {{ amount }} ₽",
"template_engine": "liquid",
"challenge_key": "challenge",
"link_preview_enabled": true,
"ignore_self_messages": false,
"events_history_enabled": false,
"single_chat": false,
"can_edit": [
"admin"
],
"who_can_add": "creator",
"kind": "simple",
"unfurl_domains": [
"example.com"
],
"last_request_at": "2025-05-15T14:30:00.000Z"
} |
| oauth_client_enabled | boolean | Включена ли у бота авторизация от имени сотрудника | true |
| oauth_client | BotOAuthClient| null | Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в oauth_client_enabled. У бота без токенов может прийти null. | {
"client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY",
"client_secret_preview": "cH5kR9mN...x7Qp",
"confidential": true,
"redirect_uris": [
"https://example.com/oauth/callback"
],
"scopes": [
"messages:read",
"messages:create"
]
} |
| promo | BotPromo| null | Страница бота в витрине. null, если авторизация у бота выключена. | {
"description": "Собирает сводку по задачам Jira и присылает её в чат",
"published": true,
"promo_images": [
{
"key": "attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png",
"url": "https://files.example.com/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"
}
]
} |
| permissions | BotPermissions | Что вы можете делать с этим ботом | {
"update_oauth_client": true,
"recreate_token": true,
"destroy": true
} |
| client_secret | string | Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. | "dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA" |
Бот в методах самого бота
Ротация собственного токена возвращает эту модель вместе с новым токеном в поле access_token, он приходит один раз.
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | integer(int32) | Идентификатор бота (совпадает с user_id бота) | 1738816 |
| oauth_client | BotOAuthClient| null | Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией. У бота без токенов может прийти null. | {
"client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY",
"client_secret_preview": "cH5kR9mN...x7Qp",
"confidential": true,
"redirect_uris": [
"https://example.com/oauth/callback"
],
"scopes": [
"messages:read",
"messages:create"
]
} |
| webhook | BotSelfWebhook | Объект параметров вебхука | {
"name": "Бот задач",
"nickname": "tasks_bot",
"outgoing_url": "https://example.com/tasks/new",
"events": [
"message_new"
],
"trigger_on": "commands",
"commands": [
"/task"
],
"scopes": [
"messages:create"
],
"template": "Заказ от {{ client }} на сумму {{ amount }} ₽",
"template_engine": "liquid",
"challenge_key": "challenge",
"link_preview_enabled": true,
"ignore_self_messages": false,
"events_history_enabled": false,
"single_chat": false,
"can_edit": [
"admin"
],
"who_can_add": "creator"
} |
Токен бота
- GETСписок токенов бота
- POSTНовый токен бота
- PUTИзменение токена бота
- POSTПеревыпуск токена бота
- DELETEУдаление токена бота
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | integer(int64) | Идентификатор токена | 4827 |
| token | string | Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена. | "cH5kR9mN...x7Qp" |
| name | string| null | Имя токена. null у токена, выпущенного без имени. | "Сервер уведомлений" |
| user_id | integer(int64) | Идентификатор бота, которому принадлежит токен | 1738816 |
| scopes | array of string | Права токена | [ "messages:create", "chats:read" ] |
| created_at | string(date-time) | Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ | "2025-01-15T10:30:00.000Z" |
| revoked_at | string(date-time)| null | Дата отзыва токена. Всегда null: отозванные токены в ответ не попадают. | null |
| expires_in | integer(int32)| null | Время жизни токена в секундах. У токенов бота null: они бессрочные. | null |
| last_used_at | string(date-time)| null | Дата последнего использования токена. null, пока по токену не было ни одного запроса. Обновляется не чаще раза в минуту, поэтому может отставать. | "2025-02-24T14:20:00.000Z" |
| authorized_at | string(date-time)| null | Дата авторизации. У токенов бота null. | null |
Каталог прав бота
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| scopes | array of BotScopeCatalogItem | Права, доступные боту | [
{
"id": "messages:create",
"title": "Отправка сообщений",
"group": "messages",
"preset": [
"admin"
]
}
] |
| groups | array of BotScopeCatalogGroup | Категории прав | [
{
"id": "messages",
"title": "Сообщения",
"description": "Работа с сообщениями"
}
] |
| presets | array of BotScopeCatalogPreset | Готовые наборы прав | [
{
"id": "read-only",
"title": "Только чтение"
}
] |
Параметры бота пространства
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | integer(int32) | Идентификатор бота (совпадает с user_id бота) | 1738816 |
| oauth_client | BotOAuthClient| null | Параметры авторизации от имени сотрудника. null у бота, недоступного вам для редактирования. Может прийти и у бота с выключенной авторизацией, а у бота без токенов может прийти null. | {
"client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY",
"client_secret_preview": "cH5kR9mN...x7Qp",
"confidential": true,
"redirect_uris": [
"https://example.com/oauth/callback"
],
"scopes": [
"messages:read",
"messages:create"
]
} |
| webhook | CompanyBotWebhook | Объект параметров вебхука | {
"name": "Бот задач",
"nickname": "tasks_bot",
"outgoing_url": "https://example.com/tasks/new",
"events": [
"message_new"
],
"trigger_on": "commands",
"commands": [
"/task"
],
"scopes": [
"messages:create"
],
"template": "Заказ от {{ client }} на сумму {{ amount }} ₽",
"template_engine": "liquid",
"challenge_key": "challenge",
"link_preview_enabled": true,
"ignore_self_messages": false,
"events_history_enabled": false,
"single_chat": false,
"can_edit": [
"admin"
],
"who_can_add": "creator"
} |
Событие исходящего вебхука
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | string | Идентификатор события | "01KAJZ2XDSS2S3DSW9EXJZ0TBV" |
| event_type | string | Тип события: значение из events бота, например message_new. У отправленной формы — view_submit, она приходит с подпиской на button_click. | "message_new" |
| payload | WebhookPayloadUnion | Объект вебхука | {
"type": "message",
"id": 1245817,
"event": "new",
"entity_type": "discussion",
"entity_id": 5678,
"content": "Текст сообщения",
"user_id": 2345,
"created_at": "2025-05-15T14:30:00.000Z",
"url": "https://app.pachca.com/chats/9012?message=1245817",
"chat_id": 9012,
"webhook_timestamp": 1747574400
} |
| created_at | string(date-time) | Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ | "2025-05-15T14:30:00.000Z" |
Ссылка на поток событий
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| url | string | Ссылка на поток событий в формате Server-Sent Events. Открывается без токена, поэтому храните её как секрет. | "https://api.pachca.com/events?signed_stream=d2ViaG9vay1ldmVudHMvMTczODgxNi8x&jid=eyJhbGciOiJIUzI1NiJ9.eyJ3ZWJob29rX2lkIjoxfQ.c2lnbmF0dXJl" |
| expires_at | string(date-time) | Дата и время, до которых действует ссылка (ISO-8601, UTC+0): от одного до двух часов после запроса. В этот момент сервер присылает disconnect и закрывает подключение по ней. | "2026-10-27T13:00:00.000Z" |
Событие аудита
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| id | string | Уникальный идентификатор события | "a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14" |
| created_at | string(date-time) | Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ | "2025-05-15T14:30:00.000Z" |
| event_key | AuditEventKey | Ключ типа события | "user_login" |
| entity_id | string | Идентификатор затронутой сущности | "98765" |
| entity_type | string | Тип затронутой сущности | "User" |
| actor_id | string | Идентификатор пользователя, выполнившего действие. У событий user_role_changed, user_chat_join, user_chat_leave, user_added_to_tag и user_removed_from_tag это сотрудник, которого коснулось изменение, а кто его выполнил, приходит в details: в initiator_id или inviter_id. | "98765" |
| actor_type | string | Тип актора | "User" |
| details | AuditEventDetailsUnion | Дополнительные детали события. Структура зависит от значения event_key — см. описания значений поля event_key. Для событий без деталей возвращается пустой объект. | — |
| ip_address | string| null | IP-адрес запроса, в котором произошло действие. У событий видеозвонков это обычно адрес видеосервера, а не участника звонка. null, если событие записано вне HTTP-запроса. | "192.168.1.100" |
| user_agent | string| null | User agent клиента, обрезается до 255 символов. У событий видеозвонков это обычно user agent видеосервера. null, если событие записано вне HTTP-запроса. | "Pachca/3.60.0 (build:15; iOS 18.5.0) Alamofire/5.0.0" |