Для разработчиков

Редактирование сотрудника

PUT/users/{id}

Меняет карточку сотрудника: перезаписываются только переданные поля. Идентификаторы дополнительных полей отдаёт GETСписок дополнительных полей.

Запрос применяется целиком: если какое-то поле не прошло проверку, например новый email уже занят, не меняется ничего. Смена почты отправляет письма на прежний и новый адрес. В бесплатном пространстве они идут в тот же суточный лимит, что и приглашения из метода POSTНовый сотрудник, и сверх него ответ 422 с кодом daily_invites_limit.

Поле list_tags заменяет набор тегов целиком, поэтому присылайте вместе с новым тегом и те, что сохраняются. Снятый тег выводит сотрудника из чатов, куда его привёл этот тег, а имя, которого в пространстве ещё нет, создаёт новый тег вместе с назначением.

suspended: true приостанавливает сотрудника: он теряет доступ, но остаётся в чатах, тегах и задачах, а suspended: false возвращает его обратно. Насовсем убирает сотрудника DELETEУдаление сотрудника.

Владельца пространства редактирует только он сам, а его роль меняется лишь на администратора. Перевести обычного сотрудника в гостя нельзя — в обоих случаях ответ 403.

Незнакомое значение роли метод молча пропускает: ответ приходит успешный, а роль остаётся прежней.

У бота метод меняет только имя (first_name), ник, теги и suspended, остальные поля в запросе пропускает. Какой ник и какие теги можно дать боту, сказано у полей nickname и list_tags. Если настройки бота поменялись во время запроса, ответ 422 приходит с кодом bot_changed_concurrently: повторите запрос.

Аватар сотрудника ставят и убирают отдельные методы PUTЗагрузка аватара сотрудника и DELETEУдаление аватара сотрудника.

Параметры пути

id
integer, (int32)
*
Идентификатор пользователя
Пример:12

Тело запроса

application/json
user
object
*
Собранный объект параметров редактируемого сотрудника
first_name
string
Имя
Пример:Олег
Длина:
<= 255 символов
last_name
string
Фамилия
Пример:Петров
Длина:
<= 255 символов
email
string
Электронная почта
Пример:olegpetrov@example.com
Длина:
<= 255 символов
phone_number
string
Телефон
Пример:+79001234567
Длина:
<= 255 символов
nickname
string
Имя пользователя. Ник бота должен оканчиваться на _bot и быть уникальным в пространстве, иначе метод отвечает 422 с ошибкой на поле nickname: invalid или already_exists. Прежний ник бота проверяется, только когда его меняют.
Пример:olegpetrov
Длина:
<= 255 символов
department
string
Департамент
Пример:Отдел разработки
Длина:
<= 255 символов
title
string
Должность
Пример:Старший разработчик
role
string
Уровень доступа
Возможные значения
Пример:user
suspended
boolean
Деактивация пользователя
Пример:false
list_tags[]
array of strings
Массив названий тегов, привязываемых к сотруднику. Список заменяет прежний целиком, пустой снимает все теги. Значение, которое не является массивом непустых строк, игнорируется: теги сотрудника не меняются. В тег можно добавить только бота, которого может добавить в чат любой сотрудник и у которого выключена настройка «Ограничить одним чатом». Если бот этим условиям не отвечает, а в списке есть тег, которого у него ещё нет, метод отвечает 422 на поле group_tags и ничего не меняет: с кодом single_chat_bot_tag_denied, когда бот ограничен одним чатом, и restricted_bot_tag_denied, когда добавлять его в чаты могут не все. Подробнее — в разделе Бот в тегах.
Пример:["Product","Design"]
custom_properties[]
array of objects
Задаваемые дополнительные поля
id
integer, (int32)
*
Идентификатор поля
Пример:1678
value
string
*
Устанавливаемое значение
Пример:Санкт-Петербург
Длина:
<= 768 символов

Ответ

200OK
The request has succeeded.
data
object
*
Сотрудник
id
integer, (int32)
*
Идентификатор пользователя
Пример:12
first_name
nullablestring
*
Имя. Возвращается null, пока приглашённый сотрудник не завершил регистрацию (invite_status со значением sent).
Пример:Олег
Длина:
<= 255 символов
last_name
nullablestring
*
Фамилия. Если не заполнена, возвращается null или пустая строка.
Пример:Петров
Длина:
<= 255 символов
nickname
string
*
Имя пользователя
Пример:olegpetrov
Длина:
<= 255 символов
email
nullablestring
*
Электронная почта. В чужой карточке приходит null, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.
Пример:olegp@example.com
Длина:
<= 255 символов
phone_number
nullablestring
*
Телефон. В чужой карточке приходит null, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.
Пример:+79001234567
Длина:
<= 255 символов
department
nullablestring
*
Департамент. Если не указан, возвращается null или пустая строка.
Пример:Продукт
Длина:
<= 255 символов
title
nullablestring
*
Должность. Если не указана, возвращается null или пустая строка.
Пример:CIO
role
string
*
Уровень доступа
Возможные значения
Пример:admin
suspended
boolean
*
Деактивация пользователя
Пример:false
invite_status
string
*
Статус приглашения
Возможные значения
Пример:confirmed
inviter_id
nullableinteger, (int32)
*
Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает null, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.
Пример:185
list_tags[]
array of strings
*
Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым.
Пример:["Product","Design"]
custom_properties[]
array of objects
*
Дополнительные поля сотрудника
id
integer, (int32)
*
Идентификатор поля
Пример:1678
name
string
*
Название поля
Пример:Город
Длина:
<= 32 символов
data_type
string
*
Тип поля
Возможные значения
Пример:string
value
nullablestring
*
Значение. Возвращается null, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.
Пример:Санкт-Петербург
Длина:
<= 768 символов
user_status
nullableobject
*
Статус. null, если у сотрудника не установлен статус.
emoji
string
*
Emoji символ статуса
Пример:🎮
title
string
*
Текст статуса
Пример:Очень занят
Длина:
<= 50 символов
expires_at
nullablestring, (date-time)
*
Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. null, если срок не задан — такой статус не сбрасывается автоматически.
Пример:2024-04-08T10:00:00.000Z
is_away
boolean
*
Режим «Нет на месте»
Пример:false
away_message
nullableobject
*
Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. null, если текст не задан.
text
string
*
Текст сообщения
Пример:Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.
Длина:
<= 1024 символов
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
nullablestring, (date-time)
*
Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. null, если сотрудник ещё ни разу не заходил в Пачку — в этом случае invite_status возвращает sent.
Пример:2025-01-20T13:40:07.000Z
time_zone
nullablestring
*
Часовой пояс пользователя. null, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.
Пример:Europe/Moscow
Длина:
<= 32 символов
image_url
nullablestring
*
Ссылка на скачивание аватарки пользователя. null, если аватарка не загружена.
Пример:https://app.pachca.com/users/12/photo.jpg
Редактирование сотрудника
pachca users update 12 \  --first-name=Олег \  --last-name=Петров \  --email=olegpetrov@example.com \  --phone-number=+79001234567 \  --nickname=olegpetrov \  --department='Отдел разработки' \  --title='Старший разработчик' \  --role=user \  --no-suspended \  --list-tags='["Product","Design"]' \  --custom-properties='[{"id":1678,"value":"Санкт-Петербург"}]' \  --json \  --token YOUR_ACCESS_TOKEN
Ответ 200
{  "data": {    "id": 12,    "first_name": "Олег",    "last_name": "Петров",    "nickname": "olegpetrov",    "email": "olegp@example.com",    "phone_number": "+79001234567",    "department": "Продукт",    "title": "CIO",    "role": "admin",    "suspended": false,    "invite_status": "confirmed",    "inviter_id": 185,    "list_tags": [      "Product",      "Design"    ],    "custom_properties": [      {        "id": 1678,        "name": "Город",        "data_type": "string",        "value": "Санкт-Петербург"      }    ],    "user_status": {      "emoji": "🎮",      "title": "Очень занят",      "expires_at": "2024-04-08T10:00:00.000Z",      "is_away": false,      "away_message": {        "text": "Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov."      }    },    "bot": false,    "sso": false,    "created_at": "2020-06-08T09:32:57.000Z",    "last_activity_at": "2025-01-20T13:40:07.000Z",    "time_zone": "Europe/Moscow",    "image_url": "https://app.pachca.com/users/12/photo.jpg"  }}