ipr.programtemplate.masslaunch
Scope:
iprКто может вызывать:
canManageCatalog()иcanManageEmployee(actor, userId)для каждого целевого сотрудника. Подробнее: Модель доступа
Запускает шаблон программы сразу на нескольких сотрудников синхронно, в рамках одного HTTP-запроса. Каждый сотрудник обрабатывается независимо: ошибка по одному сотруднику не прерывает обработку остальных.
HTTP: POST
Побочные эффекты: Создаёт по одной карточке ИПР/ПИС на каждого успешно обработанного сотрудника.
Параметры метода
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
templateId (алиас id) |
int |
да | ID шаблона программы |
userIds |
int[] |
да | ID сотрудников |
users |
object |
нет | Индивидуальные переопределения параметров запуска по сотруднику: { "<userId>": { ...те же поля, что в ipr.programtemplate.launch... } } |
| … | Остальные параметры — те же, что в ipr.programtemplate.launch, и применяются как общие для всех сотрудников (кроме переопределённых через users) |
Возвращаемые данные
| Поле | Тип | Описание |
|---|---|---|
templateId |
int |
ID использованного шаблона |
created |
array |
Успешно созданные карточки: { userId, iprId }[] |
errors |
array |
Ошибки по отдельным сотрудникам: { userId, code, message }[] |
Общий HTTP-статус ответа при этом — успешный (error: null на верхнем уровне конверта), даже если часть сотрудников попала в errors. Проверяйте массив errors, чтобы убедиться, что запуск прошёл на всех нужных сотрудников.
Обработка ошибок
Справочник кодов: error-codes.md.
Ошибки уровня всего вызова (до цикла по сотрудникам):
| Код | Описание |
|---|---|
UNAUTHORIZED |
Пользователь не авторизован |
VALIDATION_ERROR |
Не передан templateId, либо userIds пуст |
PERMISSION_DENIED |
Нет прав управлять шаблонами программ |
INTERNAL_ERROR |
Внутренняя ошибка сервера |
Ошибки по отдельному сотруднику попадают в errors[] с теми же кодами, что и у ipr.programtemplate.launch (NOT_FOUND, PERMISSION_DENIED, IPR_ALREADY_EXISTS, INTERNAL_ERROR), включая случай, когда у актора нет прав на конкретного userId.
Пример запроса (POST)
curl -X POST "https://{портал}/rest/{user_id}/{webhook_code}/ipr.programtemplate.masslaunch.json"
-H "Content-Type: application/json"
-H "Accept: application/json"
--data '{
"templateId": 77,
"userIds": [15, 22, 30],
"users": {
"22": { "managerId": 5 }
}
}'
Пример ответа
{
"result": {
"result": {
"templateId": 77,
"created": [
{ "userId": 15, "iprId": 4201 },
{ "userId": 22, "iprId": 4202 }
],
"errors": [
{ "userId": 30, "code": "IPR_ALREADY_EXISTS", "message": "Active IPR limit reached for this user" }
]
},
"total": null,
"next": null,
"error": null
}
}