Обновить событие calendar.event.update

Scope: calendar

Кто может выполнять метод: любой пользователь

Метод обновляет существующее событие.

Параметры метода

Обязательные параметры отмечены *

Название
тип

Описание

id*
integer

Идентификатор события.

Получить идентификатор можно методом calendar.event.get или calendar.event.get.nearest

type*
string

Тип календаря:

  • user — календарь пользователя
  • group — календарь группы
  • company_calendar — календарь компании

ownerId*
integer

Идентификатор владельца календаря.

Для календаря компании параметр ownerId имеет значение 0

from
datetime|date

Дата и время начала события.

Можно указать дату без времени. Для этого передайте значение Y в параметре skip_time

to
datetime|date

Дата окончания события.

Можно указать дату без времени. Для этого передайте значение Y в параметре skip_time

from_ts
integer

Дата и время в формате timestamp. Можно использовать вместо параметра from

to_ts
integer

Дата и время в формате timestamp. Можно использовать вместо параметра to

section
integer

Идентификатор календаря

name*
string

Название события

skip_time
string

Передать значение даты без времени в параметрах from и to. Возможные значения:

  • Y — использовать только дату
  • N — использовать дату и время

Формат даты по стандарту ISO-8601

timezone_from
string

Часовой пояс даты и времени начала события. По умолчанию — таймзона текущего пользователя.

Значение нужно передавать в виде строки, например, Europe/Riga.

Особенности работы с часовыми поясами

timezone_to
string

Часовой пояс даты и времени окончания события. Значение по умолчанию — таймзона текущего пользователя.

Значение нужно передавать в виде строки, например, Europe/Riga.

Особенности работы с часовыми поясами

description
text

Описание события

color
string

Цвет фона события.

Cимвол # в цвете необходимо передавать в формате unicode — %23

text_color
string

Цвет текста события.

Cимвол # в цвете необходимо передавать в формате unicode — %23

accessibility
string

Доступность на время события:

  • busy — занят
  • absent — отсутствую
  • quest — под вопросом
  • free — свободен

importance
string

Важность события:

  • high — высокая
  • normal — средняя
  • low — низкая

private_event
string

Отметка, что событие частное. Возможные значения:

  • Y — частное
  • N — не частное

recurrence_mode
string

Параметр частичного редактирования повторяемого события. Возможные значения:

  • this — изменения применяются только к текущему событию событию. Обязательно указать current_date_from
  • next — изменения применяются к текущему и ко всем следующим событиями. Обязательно указать current_date_from
  • all — изменения применяются ко всем событиям в цепочке повторений

current_date_from
date

Дата текущего события для частичного редактирования повторяемого события.

Нужен только для recurrence_mode со значениями this или next

rrule
object

Повторяемость события в виде объекта в терминах стандарта iCalendar. Структура описана ниже

is_meeting
string

Признак встречи с участниками события. Возможные значения:

  • Y — встреча с участниками
  • N — встреча без участников

Для встречи с участниками обязательно укажите список участников attendees и организатора события host. Без заполнения этих полей событие создано не будет

location
string

Место проведения

remind
array

Массив объектов с описанием напоминаний о событии. Структура описана ниже

attendees*
array

Список идентификаторов участников события. Поле обязательное, если is_meeting = Y

host*
string

Идентиификатор организатора события. Поле обязательное, если is_meeting = Y

meeting
object

Объект с параметрами встречи. Структура описана ниже

crm_fields
array

Массив идентификаторов объектов CRM для привязки к событию. Чтобы привязать объекты, перечислите их идентификаторы с префиксами:

  • CO_ — компания
  • C_ — контакт
  • L_ — лид
  • D_ — сделка

Особенности работы с часовыми поясами

При работе с датами и временем событий можно использовать два подхода:

  1. Полный формат даты с часовым поясом.

    Используйте формат 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 игнорируются, так как часовой пояс уже указан в дате.

  2. Простой формат даты с отдельными параметрами часового пояса.

    Используйте простой формат в параметрах from и to:

    • 2025-03-20 15:00:00
    • 2025-08-05 10:00:00
    • 2025-08-05T10:00:00

    Укажите часовой пояс в параметрах timezone_from и timezone_to:

    • Europe/Moscow
    • America/New_York
    • Asia/Tokyo

    Если указан только timezone_from, его значение будет использовано и для timezone_to.

Приоритет обработки параметров часового пояса:

  • Высший приоритет. Если в параметрах from и to указан полный формат с часовым поясом, параметры timezone_from и timezone_to игнорируются.
  • Средний приоритет. Если используется простой формат даты и указаны параметры timezone_from и timezone_to, используются они.
  • Низший приоритет. Если формат даты простой и параметры часового пояса не заданы, используется часовой пояс текущего пользователя.

Параметр rrule

Название
тип

Описание

FREQ
string

Частота повторения

  • DAILY — ежедневно
  • WEEKLY — еженедельно
  • MONTHLY — ежемесячно
  • YEARLY — ежегодно

COUNT
integer

Количество повторений

INTERVAL
integer

Интервал между повторениями

BYDAY
array

Дни недели

  • SU — воскресенье
  • MO — понедельник
  • TU — вторник
  • WE — среда
  • TH — четверг
  • FR — пятница
  • SA — суббота

UNTIL
date

Дата окончания повторений

Параметр remind

Название
тип

Описание

type
string

Временной тип напоминания

  • min — минуты
  • hour – часы
  • day — дни

count
integer

Числовое значение временного промежутка

Параметр meeting

Название
тип

Описание

notify
boolean

Флаг оповещения о подтверждении или отказе участников

reinvite
boolean

Флаг запроса повторного подтверждения участия при редактировании события

allow_invite
boolean

Флаг разрешения участникам приглашать других в событие

hide_guests
boolean

Флаг скрытия списка участников

Примеры кода

Как использовать примеры в документации

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],"host":2,"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],"host":2,"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
        
try
        {
        	const response = await $b24.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],
        			host: 2,
        			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']
        		}
        	);
        	
        	const result = response.getData().result;
        	console.log('Updated event with ID:', result);
        	// Нужная вам логика обработки данных
        	processResult(result);
        }
        catch( error )
        {
        	console.error('Error:', error);
        }
        
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],
                        'host'            => 2,
                        '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],
                host: 2,
                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],
                'host' => 2,
                '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>';
        

Обработка ответа

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
integer

Идентификатор обновленного события

Название
тип

Описание

result
object

Корневой элемент ответа

originalDate
datetime

Дата начала новой серии повторяемого события

originalDavXmlId
string

Идентификатор события для синхронизации

instanceTz
string

Таймзона события

recEventId
integer

Идентификатор новой серии повторяемого события

id
integer

Идентификатор предыдущей серии повторямого события

Обработка ошибок

HTTP-статус: 400

{
            "error": "",
            "error_description": "Не задан обязательный параметр "ownerId" для метода "calendar.event.update""
        }
        

Название
тип

Описание

error
string

Строковый код ошибки. Может состоять из цифр, латинских букв и знака подчеркивания

error_description
error_description

Текстовое описание ошибки. Описание не предназначено для показа конечному пользователю в необработанном виде

Возможные коды ошибок

Код

Cообщение об ошибке

Описание

Пустая строка

Не задан обязательный параметр "id" для метода "calendar.event.update"

Не передан обязательный параметр id

Пустая строка

Не задан обязательный параметр "ownerId" для метода "calendar.event.update"

Не передан обязательный параметр ownerId

Пустая строка

Не задан обязательный параметр "type" для метода "calendar.event.update"

Не передан обязательный параметр type

Пустая строка

Недопустимое значение параметра "name"

Передан неверный формат данных в поле name

Пустая строка

Недопустимое значение параметра "description"

Передан неверный формат данных в поле description

Пустая строка

Доступ запрещен

Запрещено создание событий в указанном календаре

Пустая строка

Вы задали неверный ID секции календаря или у данного пользователя нет к ней доступа

Передан идентификатор недоступного или несуществующего календаря

Пустая строка

Указан несуществующий тип редактирования повторяемого события

Передан неверное значение поля recurrence_mode

Пустая строка

Список связей события с CRM должен быть массивом

Передан неверный формат данных в поле crm_fields

Пустая строка

При изменении события произошла ошибка

Другая ошибка

Статусы и коды системных ошибок

HTTP-статус: 20x, 40x, 50x

Описанные ниже ошибки могут возникнуть при вызове любого метода

Статус

Код
Текст ошибки

Описание

500

INTERNAL_SERVER_ERROR
Internal server error

Возникла внутренняя ошибка сервера, обратитесь к администратору сервера или в техническую поддержку Битрикс24

500

ERROR_UNEXPECTED_ANSWER
Server returned an unexpected response

Возникла внутренняя ошибка сервера, обратитесь к администратору сервера или в техническую поддержку Битрикс24

503

QUERY_LIMIT_EXCEEDED
Too many requests

Превышен лимит на интенсивность запросов

405

ERROR_BATCH_METHOD_NOT_ALLOWED
Method is not allowed for batch usage

Текущий метод не разрешен для вызова с помощью batch

400

ERROR_BATCH_LENGTH_EXCEEDED
Max batch length exceeded

Превышена максимальная длина параметров, переданных в метод batch

401

NO_AUTH_FOUND
Wrong authorization data

Неверный access-токен или код вебхука

400

INVALID_REQUEST
Https required

Для вызовов методов требуется использовать протокол HTTPS

503

OVERLOAD_LIMIT
REST API is blocked due to overload

REST API заблокирован из-за перегрузки. Это ручная индивидуальная блокировка, для снятия необходимо обращаться в техническую поддержку Битрикс24

403

ACCESS_DENIED
REST API is available only on commercial plans

REST API доступен только на коммерческих планах

403

INVALID_CREDENTIALS
Invalid request credentials

У пользователя, с чьим access-токеном или вебхуком был вызван метод, не хватает прав

404

ERROR_MANIFEST_IS_NOT_AVAILABLE
Manifest is not available

Манифест недоступен

403

insufficient_scope
The request requires higher privileges than provided by the webhook token

Запрос требует более высоких привилегий, чем предоставляет токен вебхука

401

expired_token
The access token provided has expired

Предоставленный access-токен доступа истек

403

user_access_error
The user does not have access to the application

Пользователь не имеет доступа к приложению. Это означает, что приложение установлено, но администратор портала разрешил доступ к этому приложению только конкретным пользователям

500

PORTAL_DELETED
Portal was deleted

Публичная часть сайта закрыта. Чтобы открыть публичную часть сайта на коробочной установке отключите опцию «Временное закрытие публичной части сайта». Путь к настройке: Рабочий стол > Настройки > Настройки продукта > Настройки модулей > Главный модуль > Временное закрытие публичной части сайта