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
          }
        }
        

См. также

Предыдущая