Create, Update & Delete
Create new events, modify existing ones, delete events, and respond to invitations.
POST
/api/access/calendar/eventsBearer TokenCreate Event
Creates a new calendar event.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| calendarId | long | Yes | Target calendar ID (from List Calendars) |
| summary | string | Yes | Event title (max 255 chars) |
| description | string | No | Event description (max 2000 chars) |
| location | string | No | Event location (max 255 chars) |
| from | DateTime | Yes | Start time (UTC) |
| to | DateTime | Yes | End time (UTC) |
| isAllDay | bool | No | All-day event flag (default: false) |
| attendees | string[] | No | List of attendee email addresses |
| recurrence | string[] | No | RFC 5545 RRULE recurrence patterns |
| eventType | string | No | Optional event type |
| sendNotifications | bool | No | Send invitation notifications (default: true) |
{ "calendarId": 123, "summary": "Project Kickoff", "description": "Initial planning meeting for Q2 project", "location": "Room 101", "from": "2026-02-10T09:00:00Z", "to": "2026-02-10T10:00:00Z", "isAllDay": false, "attendees": ["user1@example.com", "user2@example.com"], "recurrence": ["RRULE:FREQ=WEEKLY;COUNT=4"], "sendNotifications": true } Error Responses
| Status | Code | Description |
|---|---|---|
| 400 | — | Validation error (missing required fields, invalid data) |
| 403 | ACCESS_DENIED | Token permissions insufficient |
| 403 | TOKEN_DENIED | Token-level restriction prevents access |
| 403 | TIMEFRAME_DENIED | Event falls outside allowed timeframe |
| 404 | CALENDAR_NOT_FOUND | Calendar not found |
PATCH
/api/access/calendar/events/{eventId}Bearer TokenUpdate Event
Updates an existing calendar event. This is a partial update — only provide the fields you want to change.
Request Body (all optional)
| Field | Type | Description |
|---|---|---|
| summary | string | New title (max 255 chars) |
| description | string | New description (max 2000 chars) |
| location | string | New location (max 255 chars) |
| from | DateTime | New start time (UTC) |
| to | DateTime | New end time (UTC) |
| isAllDay | bool | All-day event flag |
| addAttendees | string[] | Email addresses to add as attendees |
| removeAttendees | string[] | Email addresses to remove from attendees |
| sendNotifications | bool | Send update notifications (default: true) |
{ "summary": "Updated Title", "description": "Updated description", "location": "New Location", "from": "2026-02-10T10:00:00Z", "to": "2026-02-10T11:00:00Z", "addAttendees": ["new@example.com"], "removeAttendees": ["old@example.com"], "sendNotifications": true } DELETE
/api/access/calendar/events/{eventId}Bearer TokenDelete Event
Deletes a calendar event.
Parameters
| Parameter | In | Type | Description |
|---|---|---|---|
| eventId | Path | string (UUID) | Public event ID |
| notifyAttendees | Query | bool | Send cancellation notifications (default: true) |
Response 200 OK
{ "success": true, "message": "Event deleted" } POST
/api/access/calendar/events/{eventId}/respondBearer TokenRespond to Event
Responds to an event invitation (accept, decline, or tentatively accept).
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| status | string | Yes | Response status (see below) |
| comment | string | No | Optional comment with the response |
| sendNotification | bool | No | Send notification to organizer (default: true) |
Valid Status Values
| Value | Description |
|---|---|
accepted | Accept the invitation |
declined | Decline the invitation |
tentative | Tentatively accept |
{ "status": "accepted", "comment": "Looking forward to it!", "sendNotification": true }