Все ноды/Integrations/Calendar
Записать событие календаря
PUT ресурса iCalendar (создание без etag, обновление с If-Match).
Тип в графе: calendar_put_event
Exec
Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.
Порты можно разделить на исполнение и данные (split ports).
Как попробовать
Минимальный рабочий воркфлоу
- Исполнение
- Данные
- Исполнение + данные
Перед запуском выберите своё подключение или базу знаний — в графе стоит REPLACE_ME.
Как применять
Создаёт ресурс календаря или заменяет его целиком. Для правки одного-двух полей существующего события берите Изменить событие календаря: здесь запись перезаписывает объект полностью, и всё, чего нет в теле, из события исчезнет.
Как это работает
Тело собирается из полей — обязательны «Заголовок» и «Начало» — либо берётся готовым из поля «Тело iCalendar». Непустое сырое тело выигрывает всегда, независимо от переключателя «Тело события»: чтобы вернуться к сборке из полей, очистите его.
Сборщик подставляет UID и DTSTAMP, если их нет: без этих свойств серверы отклоняют событие.
Время без смещения считается UTC, а с заполненным часовым поясом остаётся локальным и уезжает с
TZID. «Событие на весь день» пишет даты вместо времени. Правило повторения задаётся без имени
свойства (FREQ=WEEKLY;BYDAY=MO;COUNT=10); правило без FREQ отвергается до запроса.
Поле «href события» — путь ресурса. Для нового события выберите свободный путь внутри коллекции,
оканчивающийся на .ics.
Пустой ETag означает «создать или перезаписать безусловно». Непустой превращается в условие: если
событие изменилось с момента выдачи токена, сервер ответит 412, а нода остановится с error_code
PRECONDITION_FAILED. На выходе href и etag — новый, назначенный сервером; если сервер
не прислал его в ответе, нода перечитывает ресурс. Цепочка «создать → обновить» берёт
{{ nodes.<put>.output.etag }}.
Частые ошибки
- Запись по существующему адресу стирает поля. Участники, описание, повторение, которых нет в отправленном теле, пропадут. Точечная правка — это патч.
- Пустой UID означает новое событие. Даже по тому же адресу: чтобы обновить существующее, подставьте его UID из Получить событие календаря.
- Участники в теле — не приглашения. Свойство ATTENDEE никого не уведомляет; рассылку делает Планирование в календаре через outbox.
- Тело, сочинённое моделью. В сгенерированном iCalendar обычно нет UID и DTSTAMP, и сервер отвергает такой объект. Отдавайте модели отдельные поля, а тело собирайте нодой.
etagна выходе пустой. Редкий сервер не возвращает токен ни в ответе, ни при перечитывании; тогда следующее обновление придётся делать без проверки на конфликт.
Входы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Calendar storecalendar_store | Данныеdata | — | обязателен |
Выходы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Successoutput | Исполнение + данныеexecute_data | object | |
Erroron_error | Исполнение + данныеexecute_data | — | показывается, когда expose_error_output = true |
Настройки
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
Подключение CalDAVconnection_id | string | "" | Сохранённое подключение CalDAV из воркспейса: простому календарному воркфлоу не нужна отдельная нода CalDAV Config. Нода, подключённая к порту 'calendar_store', имеет приоритет над этим полем. подключение: caldavперекрывается портом: calendar_store |
href событияhref | string | "" | Путь или абсолютный URL объекта календаря — ровно в том виде, в каком его вернула нода Calendar Query или Calendar Multiget ({{ nodes.<query>.output.events[0].href }}). Относительный путь разрешается относительно базового URL подключения. Пример: /remote.php/dav/calendars/user/personal/9f1c-1234.ics Для нового события задайте новый путь внутри коллекции календаря, оканчивающийся на .ics поддерживает шаблоны |
Тело событияbody_mode | string | fields | Как формируется тело iCalendar: из полей ниже или из готового iCalendar-документа. Непустое сырое тело используется независимо от этой настройки. Варианты: |
Заголовокsummary | string | "" | Заголовок события (SUMMARY). Обязателен при сборке из полей. поддерживает шаблоны показывается при body_mode = fields |
Началоdtstart | string | "" | Начало, ISO 8601 (2026-07-01T10:00:00Z) или просто дата (2026-07-01) для события на весь день. Обязательно при сборке из полей. поддерживает шаблоны показывается при body_mode = fields |
Окончаниеdtend | string | "" | Конец, ISO 8601. Пусто — длительность определяет сервер. поддерживает шаблоны показывается при body_mode = fields |
Событие на весь деньall_day | boolean | false | Записать DTSTART/DTEND как даты (VALUE=DATE), а не как время. показывается при body_mode = fields |
Местоlocation | string | "" | Место в свободной форме (LOCATION), например название переговорной или ссылка на встречу. поддерживает шаблоны показывается при body_mode = fields |
Описаниеdescription | string | "" | Текст описания события (DESCRIPTION). поддерживает шаблоны показывается при body_mode = fields |
Тело iCalendarics | string | "" | Готовый iCalendar-документ (VCALENDAR с одним VEVENT). Пока он непустой, он выигрывает у полей выше — очистите его, чтобы вернуться к сборке из полей. Обязан содержать UID и DTSTAMP: без них серверы отклоняют событие. поддерживает шаблоны |
| Дополнительно | |||
ETagetag | string | "" | Токен оптимистичной блокировки из предыдущего Get/Query/Put по этому же ресурсу. Пусто — ресурс создаётся (или перезаписывается безусловно). Если ресурс изменился с момента выдачи токена, сервер отвечает 412, и нода падает с error_code=PRECONDITION_FAILED. Ноды Put/Patch возвращают НОВЫЙ etag, поэтому в цепочке создание → обновление берите {{ nodes.<put>.output.etag }}. поддерживает шаблоны |
Часовой поясtimezone_id | string | "" | Часовой пояс IANA для времени, заданного без смещения, например Europe/Moscow. Пусто — такое время считается UTC. поддерживает шаблоны показывается при body_mode = fields |
Правило повторенияrrule | string | "" | RRULE по RFC 5545 без имени свойства, например FREQ=WEEKLY;BYDAY=MO;COUNT=10. Пусто — одиночное событие. поддерживает шаблоны показывается при body_mode = fields |
Участникиattendees | string | "" | Адреса email через запятую или с новой строки. Записываются как свойства ATTENDEE. поддерживает шаблоны показывается при body_mode = fields |
Организаторorganizer | string | "" | Email организатора (ORGANIZER). Большинство серверов требуют его для приглашений. поддерживает шаблоны показывается при body_mode = fields |
UID событияevent_uid | string | "" | Постоянный идентификатор события. Пусто — будет сгенерирован. Чтобы обновить или отменить существующее событие, укажите его UID. поддерживает шаблоны показывается при body_mode = fields |
Статусevent_status | string | none | Свойство STATUS события. «Не задан» — свойство в событие не пишется. Варианты: показывается при body_mode = fields |
Общие поля
Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.
expose_error_output— Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.split_ports_in— Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.split_ports_out— Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.