# calendar_event_save

Create or Update Calendar Event

## Beschreibung

Create or fully update an event in a calendar you can edit. Creation requires a stable request_id (8–100 characters); reuse it when retrying to avoid duplicates. Updates require event_id and expected_version from a prior read. Supply full event fields; omitted description/location are cleared. For all-day events, use start_on/end_on dates, with end_on exclusive. Timed events require starts_at/ends_at with UTC offsets. Google writes default to this occurrence; explicit all scope updates the master series. Writes never send invitations and do not edit sharing or attendees.

## Zugriff

Zugriffsprofil: `gated`. Module: `calendar`.
Die Freigabe im Profil ersetzt keine Account-, Workspace- oder Rollenberechtigung.

## Parameter

| Name | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `account_id` | string | Ja |  |
| `calendar_id` | string | Ja |  |
| `event_id` | string | Nein |  |
| `request_id` | string | Nein |  |
| `expected_version` | integer | Nein |  |
| `google_meet` | boolean | Nein | Optionally create a Google Meet on a supported Google calendar. Existing meetings are preserved. |
| `reminders` | object | Nein | Optional personal alerts. Omit to preserve. Set useDefault false and overrides [] to remove; up to five popup alerts (also in the owner's oona Inbox) or Google email alerts. Google defaults are available on Google calendars only. |
| `recurrence` | object | Nein | oona or Google calendar repeat rule. Weekdays use ISO Monday=1 through Sunday=7. Omit on update to retain the existing rule. Use frequency none to stop repeating with all/future scope. |
| `series_scope` | string | Nein | Edit this occurrence or all events; Google and native calendars support this and following events; Google future splits reset following exceptions. Other individually edited/cancelled dates are preserved for all. |
| `expected_series_version` | integer | Nein | Required for all/future operations, from a fresh event read. |
| `title` | string | Ja |  |
| `description` | string | Nein |  |
| `location` | string | Nein |  |
| `time_zone` | string | Nein |  |
| `all_day` | boolean | Nein |  |
| `start_on` | string | Nein |  |
| `end_on` | string | Nein |  |
| `starts_at` | string | Nein |  |
| `ends_at` | string | Nein |  |

## Eingabeschema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "account_id": {
      "type": "string"
    },
    "calendar_id": {
      "type": "string"
    },
    "event_id": {
      "type": "string"
    },
    "request_id": {
      "type": "string",
      "minLength": 8,
      "maxLength": 100
    },
    "expected_version": {
      "type": "integer",
      "minimum": 0
    },
    "google_meet": {
      "type": "boolean",
      "description": "Optionally create a Google Meet on a supported Google calendar. Existing meetings are preserved."
    },
    "reminders": {
      "type": "object",
      "properties": {
        "useDefault": {
          "type": "boolean"
        },
        "overrides": {
          "type": "array",
          "maxItems": 5,
          "items": {
            "type": "object",
            "properties": {
              "method": {
                "type": "string",
                "enum": [
                  "popup",
                  "email"
                ]
              },
              "minutes": {
                "type": "integer",
                "minimum": 0,
                "maximum": 40320
              }
            },
            "required": [
              "method",
              "minutes"
            ]
          }
        }
      },
      "description": "Optional personal alerts. Omit to preserve. Set useDefault false and overrides [] to remove; up to five popup alerts (also in the owner's oona Inbox) or Google email alerts. Google defaults are available on Google calendars only."
    },
    "recurrence": {
      "type": "object",
      "properties": {
        "frequency": {
          "type": "string",
          "enum": [
            "none",
            "daily",
            "weekly",
            "monthly",
            "yearly"
          ]
        },
        "interval": {
          "type": "integer",
          "minimum": 1,
          "maximum": 99
        },
        "weekdays": {
          "type": "array",
          "maxItems": 7,
          "items": {
            "type": "integer",
            "minimum": 1,
            "maximum": 7
          }
        },
        "monthly_mode": {
          "type": "string",
          "enum": [
            "date",
            "weekday",
            "last_weekday",
            "last_day"
          ]
        },
        "ends_on": {
          "type": "string"
        },
        "count": {
          "type": "integer",
          "minimum": 1,
          "maximum": 1000
        }
      },
      "description": "oona or Google calendar repeat rule. Weekdays use ISO Monday=1 through Sunday=7. Omit on update to retain the existing rule. Use frequency none to stop repeating with all/future scope."
    },
    "series_scope": {
      "type": "string",
      "enum": [
        "this",
        "all",
        "future"
      ],
      "description": "Edit this occurrence or all events; Google and native calendars support this and following events; Google future splits reset following exceptions. Other individually edited/cancelled dates are preserved for all."
    },
    "expected_series_version": {
      "type": "integer",
      "minimum": 0,
      "description": "Required for all/future operations, from a fresh event read."
    },
    "title": {
      "type": "string",
      "maxLength": 500
    },
    "description": {
      "type": "string",
      "maxLength": 50000
    },
    "location": {
      "type": "string",
      "maxLength": 1000
    },
    "time_zone": {
      "type": "string"
    },
    "all_day": {
      "type": "boolean"
    },
    "start_on": {
      "type": "string"
    },
    "end_on": {
      "type": "string"
    },
    "starts_at": {
      "type": "string"
    },
    "ends_at": {
      "type": "string"
    }
  },
  "required": [
    "account_id",
    "calendar_id",
    "title"
  ],
  "type": "object"
}
```

## Ausgabeschema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "event": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "calendar_id": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": [
            "string",
            "null"
          ]
        },
        "location": {
          "type": [
            "string",
            "null"
          ]
        },
        "starts_at": {
          "type": "string"
        },
        "ends_at": {
          "type": "string"
        },
        "all_day": {
          "type": "boolean"
        },
        "start_on": {
          "type": [
            "string",
            "null"
          ]
        },
        "end_on": {
          "type": [
            "string",
            "null"
          ]
        },
        "time_zone": {
          "type": "string"
        },
        "version": {
          "type": "integer"
        },
        "google_meet_url": {
          "type": [
            "string",
            "null"
          ]
        },
        "conference_status": {
          "type": [
            "string",
            "null"
          ]
        },
        "reminders": {
          "type": "object",
          "properties": {
            "useDefault": {
              "type": "boolean"
            },
            "overrides": {
              "type": "array",
              "maxItems": 5,
              "items": {
                "type": "object",
                "properties": {
                  "method": {
                    "type": "string",
                    "enum": [
                      "popup",
                      "email"
                    ]
                  },
                  "minutes": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 40320
                  }
                },
                "required": [
                  "method",
                  "minutes"
                ]
              }
            }
          }
        },
        "recurrence": {
          "type": "object",
          "properties": {
            "frequency": {
              "type": "string",
              "enum": [
                "none",
                "daily",
                "weekly",
                "monthly",
                "yearly"
              ]
            },
            "interval": {
              "type": "integer",
              "minimum": 1,
              "maximum": 99
            },
            "weekdays": {
              "type": "array",
              "maxItems": 7,
              "items": {
                "type": "integer",
                "minimum": 1,
                "maximum": 7
              }
            },
            "monthly_mode": {
              "type": "string",
              "enum": [
                "date",
                "weekday",
                "last_weekday",
                "last_day"
              ]
            },
            "ends_on": {
              "type": "string"
            },
            "count": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000
            }
          }
        },
        "series_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "series_version": {
          "type": [
            "integer",
            "null"
          ]
        },
        "google_recurrence": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Original Google RRULE/EXDATE/RDATE entries; preserved when recurrence is omitted on updates. Read the event directly for a fresh series version."
        },
        "invitation": {
          "type": "boolean"
        },
        "response_status": {
          "type": [
            "string",
            "null"
          ]
        },
        "organizer": {
          "type": [
            "string",
            "null"
          ]
        },
        "guests": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "email": {
                "type": "string"
              },
              "displayName": {
                "type": "string"
              },
              "responseStatus": {
                "type": "string"
              },
              "optional": {
                "type": "boolean"
              },
              "organizer": {
                "type": "boolean"
              },
              "self": {
                "type": "boolean"
              }
            }
          }
        },
        "can_manage_guests": {
          "type": "boolean"
        },
        "can_edit_reminders": {
          "type": "boolean"
        },
        "can_respond": {
          "type": "boolean"
        },
        "recurring_occurrence": {
          "type": "boolean"
        },
        "writable": {
          "type": "boolean"
        }
      },
      "required": [
        "id",
        "calendar_id",
        "title",
        "starts_at",
        "ends_at",
        "all_day",
        "time_zone",
        "version",
        "invitation",
        "can_respond",
        "recurring_occurrence",
        "writable"
      ]
    }
  },
  "required": [
    "event"
  ],
  "type": "object"
}
```
