Все ноды/Integrations/Calendar

Записать событие календаря

PUT ресурса iCalendar (создание без etag, обновление с If-Match).

Записать событие календаря
Calendar storeSuccess
Error

Тип в графе: calendar_put_event

Exec

Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.

Порты можно разделить на исполнение и данные (split ports).

Как попробовать

Минимальный рабочий воркфлоу

Вход
Записать событие календаря
Конфигурация CalDAV
Выход
  • Исполнение
  • Данные
  • Исполнение + данные
Нажмите «Скопировать ноды», откройте редактор и нажмите Ctrl+V на холсте.

Перед запуском выберите своё подключение или базу знаний — в графе стоит 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_dataobject
Erroron_errorИсполнение + данныеexecute_data

показывается, когда expose_error_output = true

Настройки

ПолеТипПо умолчаниюОписание
Подключение CalDAVconnection_idstring""

Сохранённое подключение CalDAV из воркспейса: простому календарному воркфлоу не нужна отдельная нода CalDAV Config. Нода, подключённая к порту 'calendar_store', имеет приоритет над этим полем.

подключение: caldavперекрывается портом: calendar_store

href событияhrefstring""

Путь или абсолютный URL объекта календаря — ровно в том виде, в каком его вернула нода Calendar Query или Calendar Multiget ({{ nodes.<query>.output.events[0].href }}). Относительный путь разрешается относительно базового URL подключения. Пример: /remote.php/dav/calendars/user/personal/9f1c-1234.ics Для нового события задайте новый путь внутри коллекции календаря, оканчивающийся на .ics

поддерживает шаблоны

Тело событияbody_modestringfields

Как формируется тело iCalendar: из полей ниже или из готового iCalendar-документа. Непустое сырое тело используется независимо от этой настройки.

Варианты: fields — Собрать из полей, raw — Сырой iCalendar

Заголовокsummarystring""

Заголовок события (SUMMARY). Обязателен при сборке из полей.

поддерживает шаблоны

показывается при body_mode = fields

Началоdtstartstring""

Начало, ISO 8601 (2026-07-01T10:00:00Z) или просто дата (2026-07-01) для события на весь день. Обязательно при сборке из полей.

поддерживает шаблоны

показывается при body_mode = fields

Окончаниеdtendstring""

Конец, ISO 8601. Пусто — длительность определяет сервер.

поддерживает шаблоны

показывается при body_mode = fields

Событие на весь деньall_daybooleanfalse

Записать DTSTART/DTEND как даты (VALUE=DATE), а не как время.

показывается при body_mode = fields

Местоlocationstring""

Место в свободной форме (LOCATION), например название переговорной или ссылка на встречу.

поддерживает шаблоны

показывается при body_mode = fields

Описаниеdescriptionstring""

Текст описания события (DESCRIPTION).

поддерживает шаблоны

показывается при body_mode = fields

Тело iCalendaricsstring""

Готовый iCalendar-документ (VCALENDAR с одним VEVENT). Пока он непустой, он выигрывает у полей выше — очистите его, чтобы вернуться к сборке из полей. Обязан содержать UID и DTSTAMP: без них серверы отклоняют событие.

поддерживает шаблоны

Дополнительно
ETagetagstring""

Токен оптимистичной блокировки из предыдущего Get/Query/Put по этому же ресурсу. Пусто — ресурс создаётся (или перезаписывается безусловно). Если ресурс изменился с момента выдачи токена, сервер отвечает 412, и нода падает с error_code=PRECONDITION_FAILED. Ноды Put/Patch возвращают НОВЫЙ etag, поэтому в цепочке создание → обновление берите {{ nodes.<put>.output.etag }}.

поддерживает шаблоны

Часовой поясtimezone_idstring""

Часовой пояс IANA для времени, заданного без смещения, например Europe/Moscow. Пусто — такое время считается UTC.

поддерживает шаблоны

показывается при body_mode = fields

Правило повторенияrrulestring""

RRULE по RFC 5545 без имени свойства, например FREQ=WEEKLY;BYDAY=MO;COUNT=10. Пусто — одиночное событие.

поддерживает шаблоны

показывается при body_mode = fields

Участникиattendeesstring""

Адреса email через запятую или с новой строки. Записываются как свойства ATTENDEE.

поддерживает шаблоны

показывается при body_mode = fields

Организаторorganizerstring""

Email организатора (ORGANIZER). Большинство серверов требуют его для приглашений.

поддерживает шаблоны

показывается при body_mode = fields

UID событияevent_uidstring""

Постоянный идентификатор события. Пусто — будет сгенерирован. Чтобы обновить или отменить существующее событие, укажите его UID.

поддерживает шаблоны

показывается при body_mode = fields

Статусevent_statusstringnone

Свойство STATUS события. «Не задан» — свойство в событие не пишется.

Варианты: none — Не задан, CONFIRMED — Подтверждено, TENTATIVE — Предварительно, CANCELLED — Отменено

показывается при body_mode = fields

Общие поля

Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.

  • expose_error_output — Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.
  • split_ports_in — Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.
  • split_ports_out — Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.