calendar.event.update
Обновить событие
Описание
Метод обновляет существующее событие.
Параметры
id
integer
обязательный
Идентификатор события.
Получить идентификатор можно методом calendar.event.get или calendar.event.get.nearest
type
string
обязательный
Тип календаря:
- user — календарь пользователя
- group — календарь группы
- company_calendar — календарь компании
ownerId
integer
обязательный
Идентификатор владельца календаря.
Для календаря компании параметр ownerId имеет значение 0
from
datetime
необязательный
Дата и время начала события.
Можно указать дату без времени. Для этого передайте значение Y в параметре skip_time
to
datetime
необязательный
Дата окончания события.
Можно указать дату без времени. Для этого передайте значение 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
необязательный
Цвет фона события.
Символ # в цвете необходимо передавать в формате unicode — %23
text_color
string
необязательный
Цвет текста события.
Символ # в цвете необходимо передавать в формате 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
location
string
необязательный
Место проведения
remind
array
необязательный
Массив объектов с описанием напоминаний о событии. Структура описана ниже
attendees
array
необязательный
Список идентификаторов участников события.
Если передать is_meeting = Y и не передать attendees, список участников будет очищен. Если не передавать is_meeting, текущий список участников сохранится
host
integer
необязательный
Идентификатор организатора события.
Передавайте параметр только если встречу обновляет не организатор. В этом случае укажите идентификатор текущего организатора. Если не передать параметр или передать идентификатор другого пользователя, метод вернет ошибку Доступ запрещен.
Идентификатор текущего организатора можно узнать в ответе методов calendar.event.getbyid и calendar.event.get в поле MEETING_HOST.
Параметр нельзя использовать для смены организатора существующего события. Чтобы сменить организатора, удалите событие методом calendar.event.delete и создайте новое методом calendar.event.add от имени нужного организатора
meeting
object
необязательный
Объект с параметрами встречи. Структура описана ниже
crm_fields
array
необязательный
Массив идентификаторов объектов CRM для привязки к событию. Чтобы привязать объекты, перечислите их идентификаторы с префиксами:
- CO_ — компания
- C_ — контакт
- L_ — лид
- D_ — сделка
Параметр 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],"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>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
try:
bitrix_response = client.calendar.event.update(
bitrix_id=699,
type="user",
owner_id=2,
name="Changed Event Name",
description="New description for event",
from_date="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",
],
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {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],
'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"
}
}
Обработка ошибок
HTTP-статус: 400
{
"error": "",
"error_description": "Не задан обязательный параметр \"ownerId\" для метода \"calendar.event.update\""
}
| Код | Описание | Значение |
|---|---|---|
| — | Не задан обязательный параметр "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 |
| — | При изменении события произошла ошибка | Другая ошибка |

