Обновить событие calendar.event.update
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Scope:
calendarКто может выполнять метод: любой пользователь
Метод обновляет существующее событие.
Параметры метода
Обязательные параметры отмечены *
|
Название |
Описание |
|
id* |
Идентификатор события. Получить идентификатор можно методом calendar.event.get или calendar.event.get.nearest |
|
type* |
Тип календаря:
|
|
ownerId* |
Идентификатор владельца календаря. Для календаря компании параметр |
|
from |
Дата и время начала события. Можно указать дату без времени. Для этого передайте значение |
|
Дата окончания события. Можно указать дату без времени. Для этого передайте значение |
|
|
from_ts |
Дата и время в формате timestamp. Можно использовать вместо параметра |
|
to_ts |
Дата и время в формате timestamp. Можно использовать вместо параметра |
|
section |
Идентификатор календаря |
|
name* |
Название события |
|
skip_time |
Передать значение даты без времени в параметрах
Формат даты по стандарту ISO-8601 |
|
timezone_from |
Часовой пояс даты и времени начала события. По умолчанию — таймзона текущего пользователя. Значение нужно передавать в виде строки, например, |
|
timezone_to |
Часовой пояс даты и времени окончания события. Значение по умолчанию — таймзона текущего пользователя. Значение нужно передавать в виде строки, например, |
|
description |
Описание события |
|
color |
Цвет фона события. Символ |
|
text_color |
Цвет текста события. Символ |
|
accessibility |
Доступность на время события:
|
|
importance |
Важность события:
|
|
private_event |
Отметка, что событие частное. Возможные значения:
|
|
recurrence_mode |
Параметр частичного редактирования повторяемого события. Возможные значения:
|
|
current_date_from |
Дата текущего события для частичного редактирования повторяемого события. Нужен только для |
|
rrule |
Повторяемость события в виде объекта в терминах стандарта iCalendar. Структура описана ниже |
|
is_meeting |
Признак встречи с участниками события. Возможные значения:
Для встречи с участниками передайте список участников |
|
location |
Место проведения |
|
remind |
Массив объектов с описанием напоминаний о событии. Структура описана ниже |
|
attendees |
Список идентификаторов участников события. Если не передать параметр при обновлении встречи, текущий список участников сохранится |
|
host |
Идентификатор организатора события. Передавайте параметр только если встречу обновляет не организатор. В этом случае укажите идентификатор текущего организатора. Если не передать параметр или передать идентификатор другого пользователя, метод вернет ошибку Текущего организатора можно узнать методом calendar.event.getbyid или calendar.event.get. Параметр нельзя использовать для смены организатора существующего события. Чтобы сменить организатора, удалите событие методом calendar.event.delete и создайте новое методом calendar.event.add от имени нужного организатора |
|
meeting |
Объект с параметрами встречи. Структура описана ниже |
|
crm_fields |
Массив идентификаторов объектов CRM для привязки к событию. Чтобы привязать объекты, перечислите их идентификаторы с префиксами:
|
Особенности работы с часовыми поясами
При работе с датами и временем событий можно использовать два подхода:
-
Полный формат даты с часовым поясом.
Используйте формат ISO-8601 с указанием часового пояса в параметрах
fromиto:2025-03-20T15:00:00+02:00— с указанием смещения2025-08-05T10:00:00+11:00— с указанием смещения2025-08-04T23:00:00Z— с указанием UTC
Параметры
timezone_fromиtimezone_toигнорируются, так как часовой пояс уже указан в дате. -
Простой формат даты с отдельными параметрами часового пояса.
Используйте простой формат в параметрах
fromиto:2025-03-20 15:00:002025-08-05 10:00:002025-08-05T10:00:00
Укажите часовой пояс в параметрах
timezone_fromиtimezone_to:Europe/MoscowAmerica/New_YorkAsia/Tokyo
Если указан только
timezone_from, его значение будет использовано и дляtimezone_to.
Приоритет обработки параметров часового пояса:
- Высший приоритет. Если в параметрах
fromиtoуказан полный формат с часовым поясом, параметрыtimezone_fromиtimezone_toигнорируются. - Средний приоритет. Если используется простой формат даты и указаны параметры
timezone_fromиtimezone_to, используются они. - Низший приоритет. Если формат даты простой и параметры часового пояса не заданы, используется часовой пояс текущего пользователя.
Параметр rrule
|
Название |
Описание |
|
FREQ |
Частота повторения
|
|
COUNT |
Количество повторений |
|
INTERVAL |
Интервал между повторениями |
|
BYDAY |
Дни недели
|
|
UNTIL |
Дата окончания повторений |
Параметр remind
|
Название |
Описание |
|
type |
Временной тип напоминания
|
|
count |
Числовое значение временного промежутка |
Параметр meeting
|
Название |
Описание |
|
notify |
Флаг оповещения о подтверждении или отказе участников |
|
reinvite |
Флаг запроса повторного подтверждения участия при редактировании события |
|
allow_invite |
Флаг разрешения участникам приглашать других в событие |
|
hide_guests |
Флаг скрытия списка участников |
Примеры кода
Как использовать примеры в документации
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"id":699,"type":"user","ownerId":2,"name":"Changed Event Name","description":"New description for event","from":"2024-06-17","to":"2024-06-17","skip_time":"Y","section":5,"color":"#9cbe1c","text_color":"#283033","accessibility":"free","importance":"normal","is_meeting":"Y","private_event":"Y","recurrence_mode":"next","current_date_from":"2024-12-04","remind":[{"type":"min","count":10}],"location":"London","attendees":[1,2,3],"meeting":{"notify":true,"reinvite":false,"allow_invite":false,"hide_guests":false},"rrule":{"FREQ":"WEEKLY","BYDAY":["MO","WE"],"COUNT":10,"INTERVAL":1},"crm_fields":["C_5","L_11"]}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/calendar.event.update
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"id":699,"type":"user","ownerId":2,"name":"Changed Event Name","description":"New description for event","from":"2024-06-17","to":"2024-06-17","skip_time":"Y","section":5,"color":"#9cbe1c","text_color":"#283033","accessibility":"free","importance":"normal","is_meeting":"Y","private_event":"Y","recurrence_mode":"next","current_date_from":"2024-12-04","remind":[{"type":"min","count":10}],"location":"London","attendees":[1,2,3],"meeting":{"notify":true,"reinvite":false,"allow_invite":false,"hide_guests":false},"rrule":{"FREQ":"WEEKLY","BYDAY":["MO","WE"],"COUNT":10,"INTERVAL":1},"crm_fields":["C_5","L_11"],"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/calendar.event.update
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
// Shape of the payload returned in result (match the "response handling" section of the page)
type CalendarEventUpdateResult =
| number
| {
originalDate: string
originalDavXmlId: string
instanceTz: string
recEventId: number
id: number
}
try {
const response = await $b24.actions.v2.call.make<CalendarEventUpdateResult>({
method: 'calendar.event.update',
params: {
id: 699,
type: 'user',
ownerId: 2,
name: 'Changed Event Name',
description: 'New description for event',
from: '2024-06-17',
to: '2024-06-17',
skip_time: 'Y',
section: 5,
color: '#9cbe1c',
text_color: '#283033',
accessibility: 'free',
importance: 'normal',
is_meeting: 'Y',
private_event: 'Y',
recurrence_mode: 'next',
current_date_from: '2024-12-04',
remind: [
{
type: 'min',
count: 10,
},
],
location: 'London',
attendees: [1, 2, 3],
meeting: {
notify: true,
reinvite: false,
allow_invite: false,
hide_guests: false,
},
rrule: {
FREQ: 'WEEKLY',
BYDAY: ['MO', 'WE'],
COUNT: 10,
INTERVAL: 1,
},
crm_fields: ['C_5', 'L_11'],
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info('Updated calendar event:', result)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function updateCalendarEvent() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'calendar.event.update',
params: {
id: 699,
type: 'user',
ownerId: 2,
name: 'Changed Event Name',
description: 'New description for event',
from: '2024-06-17',
to: '2024-06-17',
skip_time: 'Y',
section: 5,
color: '#9cbe1c',
text_color: '#283033',
accessibility: 'free',
importance: 'normal',
is_meeting: 'Y',
private_event: 'Y',
recurrence_mode: 'next',
current_date_from: '2024-12-04',
remind: [
{
type: 'min',
count: 10,
},
],
location: 'London',
attendees: [1, 2, 3],
meeting: {
notify: true,
reinvite: false,
allow_invite: false,
hide_guests: false,
},
rrule: {
FREQ: 'WEEKLY',
BYDAY: ['MO', 'WE'],
COUNT: 10,
INTERVAL: 1,
},
crm_fields: ['C_5', 'L_11'],
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info('Updated calendar event:', result)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', updateCalendarEvent)
</script>
try {
$response = $b24Service
->core
->call(
'calendar.event.update',
[
'id' => 699,
'type' => 'user',
'ownerId' => 2,
'name' => 'Changed Event Name',
'description' => 'New description for event',
'from' => '2024-06-17',
'to' => '2024-06-17',
'skip_time' => 'Y',
'section' => 5,
'color' => '#9cbe1c',
'text_color' => '#283033',
'accessibility' => 'free',
'importance' => 'normal',
'is_meeting' => 'Y',
'private_event' => 'Y',
'recurrence_mode' => 'next',
'current_date_from' => '2024-12-04',
'remind' => [
[
'type' => 'min',
'count' => 10
]
],
'location' => 'London',
'attendees' => [1, 2, 3],
'meeting' => [
'notify' => true,
'reinvite' => false,
'allow_invite' => false,
'hide_guests' => false,
],
'rrule' => [
'FREQ' => 'WEEKLY',
'BYDAY' => ['MO', 'WE'],
'COUNT' => 10,
'INTERVAL' => 1,
],
'crm_fields' => ['C_5', 'L_11']
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
// Нужная вам логика обработки данных
processData($result);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error updating calendar event: ' . $e->getMessage();
}
BX24.callMethod(
'calendar.event.update',
{
id: 699,
type: 'user',
ownerId: 2,
name: 'Changed Event Name',
description: 'New description for event',
from: '2024-06-17',
to: '2024-06-17',
skip_time: 'Y',
section: 5,
color: '#9cbe1c',
text_color: '#283033',
accessibility: 'free',
importance: 'normal',
is_meeting: 'Y',
private_event: 'Y',
recurrence_mode: 'next',
current_date_from: '2024-12-04',
remind: [
{
type: 'min',
count: 10
}
],
location: 'London',
attendees: [1, 2, 3],
meeting: {
notify: true,
reinvite: false,
allow_invite: false,
hide_guests: false,
},
rrule: {
FREQ: 'WEEKLY',
BYDAY: ['MO', 'WE'],
COUNT: 10,
INTERVAL: 1,
},
crm_fields: ['C_5', 'L_11']
}
);
require_once('crest.php');
$result = CRest::call(
'calendar.event.update',
[
'id' => 699,
'type' => 'user',
'ownerId' => 2,
'name' => 'Changed Event Name',
'description' => 'New description for event',
'from' => '2024-06-17',
'to' => '2024-06-17',
'skip_time' => 'Y',
'section' => 5,
'color' => '#9cbe1c',
'text_color' => '#283033',
'accessibility' => 'free',
'importance' => 'normal',
'is_meeting' => 'Y',
'private_event' => 'Y',
'recurrence_mode' => 'next',
'current_date_from' => '2024-12-04',
'remind' => [
[
'type' => 'min',
'count' => 10
]
],
'location' => 'London',
'attendees' => [1, 2, 3],
'meeting' => [
'notify' => true,
'reinvite' => false,
'allow_invite' => false,
'hide_guests' => false,
],
'rrule' => [
'FREQ' => 'WEEKLY',
'BYDAY' => ['MO', 'WE'],
'COUNT' => 10,
'INTERVAL' => 1,
],
'crm_fields' => ['C_5', 'L_11']
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "calendar.event.update", b24.Params{
"id": 699,
"type": "user",
"ownerId": 2,
"name": "Changed Event Name",
"description": "New description for event",
"from": "2024-06-17",
"to": "2024-06-17",
"skip_time": "Y",
"section": 5,
"color": "#9cbe1c",
"text_color": "#283033",
"accessibility": "free",
"importance": "normal",
"is_meeting": "Y",
"private_event": "Y",
"recurrence_mode": "next",
"current_date_from": "2024-12-04",
"remind": []b24.Params{
{
"type": "min",
"count": 10,
},
},
"location": "London",
"attendees": []int{1, 2, 3},
"meeting": b24.Params{
"notify": true,
"reinvite": false,
"allow_invite": false,
"hide_guests": false,
},
"rrule": b24.Params{
"FREQ": "WEEKLY",
"BYDAY": []string{"MO", "WE"},
"COUNT": 10,
"INTERVAL": 1,
},
"crm_fields": []string{"C_5", "L_11"},
})
if err != nil {
return fmt.Errorf("calendar.event.update: %w", err)
}
var value b24.ID
if err := json.Unmarshal(res.Result, &value); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println("результат:", value)
Обработка ответа
HTTP-статус: 200
{
"result": 1246,
"time": {
"start": 1733318565.183275,
"finish": 1733318565.695058,
"duration": 0.5117831230163574,
"processing": 0.29406094551086426,
"date_start": "2024-12-04T13:22:45+00:00",
"date_finish": "2024-12-04T13:22:45+00:00"
}
}
{
"result": {
"originalDate": "12/24/2024 05:59:00 pm",
"originalDavXmlId": "20241205T124346Z-e3ccab8aebc16d0c5cccecb63fef2bc3@b24evo.lan",
"instanceTz": "Europe/Riga",
"recEventId": 1261,
"id": 1260
},
"time": {
"start": 1733402626.139122,
"finish": 1733402626.740063,
"duration": 0.6009409427642822,
"processing": 0.3765721321105957,
"date_start": "2024-12-05T12:43:46+00:00",
"date_finish": "2024-12-05T12:43:46+00:00"
}
}
Возвращаемые данные
|
Название |
Описание |
|
result |
Идентификатор обновленного события |
|
Название |
Описание |
|
result |
Корневой элемент ответа |
|
originalDate |
Дата начала новой серии повторяемого события |
|
originalDavXmlId |
Идентификатор события для синхронизации |
|
instanceTz |
Таймзона события |
|
recEventId |
Идентификатор новой серии повторяемого события |
|
id |
Идентификатор предыдущей серии повторямого события |
Обработка ошибок
HTTP-статус: 400
{
"error": "",
"error_description": "Не задан обязательный параметр \"ownerId\" для метода \"calendar.event.update\""
}
|
Название |
Описание |
|
error |
Строковый код ошибки. Может состоять из цифр, латинских букв и знака подчеркивания |
|
error_description |
Текстовое описание ошибки. Описание не предназначено для показа конечному пользователю в необработанном виде |
Возможные коды ошибок
|
Код |
Сообщение об ошибке |
Описание |
|
Пустое значение |
Не задан обязательный параметр "id" для метода "calendar.event.update" |
Не передан обязательный параметр |
|
Пустое значение |
Не задан обязательный параметр "ownerId" для метода "calendar.event.update" |
Не передан обязательный параметр |
|
Пустое значение |
Не задан обязательный параметр "type" для метода "calendar.event.update" |
Не передан обязательный параметр |
|
Пустое значение |
Недопустимое значение параметра "name" |
Передан неверный формат данных в поле |
|
Пустое значение |
Недопустимое значение параметра "description" |
Передан неверный формат данных в поле |
|
Пустое значение |
Доступ запрещен |
Запрещено изменение событий в указанном календаре |
|
Пустое значение |
Вы задали неверный ID секции календаря или у данного пользователя нет к ней доступа |
Передан идентификатор недоступного или несуществующего календаря |
|
Пустое значение |
Указан несуществующий тип редактирования повторяемого события |
Передано неверное значение поля |
|
Пустое значение |
Список связей события с CRM должен быть массивом |
Передан неверный формат данных в поле |
|
Пустое значение |
При изменении события произошла ошибка |
Другая ошибка |
Статусы и коды системных ошибок
HTTP-статус: 20x, 40x, 50x
Описанные ниже ошибки могут возникнуть при вызове любого метода
|
Статус |
Код |
Описание |
|
|
|
Возникла внутренняя ошибка сервера, обратитесь к администратору сервера или в техническую поддержку Битрикс24 |
|
|
|
Возникла внутренняя ошибка сервера, обратитесь к администратору сервера или в техническую поддержку Битрикс24 |
|
|
|
Превышен лимит на интенсивность запросов |
|
|
|
Метод заблокирован из-за превышения лимита на ресурсоемкость запросов. Блокировка снимается автоматически через 10 минут |
|
|
|
Текущий метод не разрешен для вызова с помощью batch |
|
|
|
Превышена максимальная длина параметров, переданных в метод batch |
|
|
|
Неверный access-токен или код вебхука |
|
|
|
Для вызовов методов требуется использовать протокол HTTPS |
|
|
|
REST API заблокирован из-за перегрузки. Это ручная индивидуальная блокировка, для снятия необходимо обращаться в техническую поддержку Битрикс24 |
|
|
|
REST API доступен только на коммерческих планах |
|
|
|
У пользователя, с чьим access-токеном или вебхуком был вызван метод, не хватает прав |
|
|
|
Манифест недоступен |
|
|
|
Запрос требует более высоких привилегий, чем предоставляет токен вебхука |
|
|
|
Предоставленный access-токен доступа истек |
|
|
|
Пользователь не имеет доступа к приложению. Это означает, что приложение установлено, но администратор портала разрешил доступ к этому приложению только конкретным пользователям |
|
|
|
Публичная часть сайта закрыта. Чтобы открыть публичную часть сайта на коробочной установке отключите опцию «Временное закрытие публичной части сайта». Путь к настройке: Рабочий стол > Настройки > Настройки продукта > Настройки модулей > Главный модуль > Временное закрытие публичной части сайта |