ipr.event.add
Scope:
iprКто может вызывать: Пользователь с правом редактировать каталог мероприятий (
canEdit: администратор, HR или правоelement_editна инфоблок каталога). Подробнее: Модель доступа
Создаёт мероприятие в каталоге. Даты проведения добавляются отдельно: ipr.event.date.add.
HTTP: POST
Побочные эффекты: Создаёт элемент инфоблока каталога. Тексты сохраняются так же, как из интерфейса (экранированными), API отдаёт их в исходном виде.
Параметры метода
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
name |
string |
да | Название, 1..255 символов |
sectionId |
int |
да | ID категории каталога (см. ipr.event.section.list) |
hostId |
int |
да | ID ведущего — активный пользователь |
description |
string |
нет | Описание |
durationMinutes |
int |
нет | Длительность даты проведения по умолчанию, > 0; при создании по умолчанию 60 |
remindMinutes |
int[] |
нет | Напоминания по умолчанию; только значения, заведённые в списке свойства REMIND каталога |
requiredCompetenceIds |
int[] |
нет | Обязательные компетенции (существующие элементы каталога компетенций) |
recommendedCompetenceIds |
int[] |
нет | Рекомендованные компетенции; не должны пересекаться с обязательными |
placeRoomId |
int |
нет | Переговорная календаря. Нельзя вместе с непустым place |
place |
string |
нет | Текст места проведения |
active |
bool |
нет | По умолчанию true |
xmlId |
string |
нет | Ключ идемпотентности: 1..255 символов, не только цифры. Если мероприятие с таким xmlId уже есть, возвращается оно с created: false, остальные параметры игнорируются |
Для безопасных повторов (ретраи, повторная загрузка данных) всегда передавайте xmlId: без него каждый вызов создаёт новое мероприятие. Поиск по xmlId и создание выполняются под блокировкой, поэтому повторы безопасны и при параллельных вызовах: создаётся ровно одно мероприятие, остальные вызовы получают его с created: false.
Возвращаемые данные
Мероприятие плюс created (true — создано, false — найдено по xmlId).
| Поле | Тип | Описание |
|---|---|---|
id |
int |
ID мероприятия каталога |
xmlId |
string |
Внешний код (ключ идемпотентности) |
name |
string |
Название |
description |
string |
Описание (в ipr.event.list не возвращается) |
active |
bool |
false — предложение сотрудника, ещё не одобренное |
sectionId |
int|null |
ID категории |
hostId |
int|null |
ID ведущего |
durationMinutes |
int|null |
Длительность даты проведения по умолчанию, минут |
remindMinutes |
int[] |
Напоминания по умолчанию, минут до начала |
requiredCompetenceIds |
int[] |
Обязательные компетенции каталога |
recommendedCompetenceIds |
int[] |
Рекомендованные компетенции каталога |
place |
object |
{roomId, text} — переговорная календаря либо текст места |
link |
string |
Ссылка (из предложения) |
price |
string |
Стоимость (из предложения) |
createdBy |
int |
Автор записи |
dateCreate / timestampX |
string |
Даты создания и изменения, ISO 8601 |
Обработка ошибок
Справочник кодов: error-codes.md.
| Код | Описание |
|---|---|
UNAUTHORIZED |
Пользователь не авторизован |
VALIDATION_ERROR |
details.reason: required (нет name / sectionId / hostId), name, section, host, duration, remind, competence, competence_overlap, place, xml_id |
PERMISSION_DENIED |
Нет права canEdit |
INTERNAL_ERROR |
events_not_configured, event_save_failed |
Пример запроса (POST)
curl -X POST "https://{портал}/rest/{user_id}/{webhook_code}/ipr.event.add.json"
-H "Content-Type: application/json"
-H "Accept: application/json"
--data '{
"name": "Переговоры: продвинутый уровень",
"sectionId": 12,
"hostId": 8,
"durationMinutes": 120,
"remindMinutes": [
15,
60
],
"requiredCompetenceIds": [
301
],
"place": "Переговорная 2",
"xmlId": "crm-2026-01"
}'
Пример ответа
{
"result": {
"result": {
"id": 501,
"xmlId": "crm-2026-01",
"name": "Переговоры: продвинутый уровень",
"description": "Тренинг для менеджеров",
"active": true,
"sectionId": 12,
"hostId": 8,
"durationMinutes": 120,
"remindMinutes": [
15,
60
],
"requiredCompetenceIds": [
301
],
"recommendedCompetenceIds": [
302
],
"place": {
"roomId": null,
"text": "Переговорная 2"
},
"link": "",
"price": "",
"createdBy": 1,
"dateCreate": "2026-10-12T10:00:00+03:00",
"timestampX": "2026-10-12T10:00:00+03:00",
"created": true
},
"total": null,
"next": null,
"error": null
}
}