Zur Dokumentation springen
CLI

openemail calendar

Jeder Befehl in diesem Namespace, mit seinen Argumenten, Flags und Beispielen.

Befehle

Calendar events found in mail, expanded into occurrences.

Jeder Befehl hier nimmt auch die globalen Flags an, etwa --json, --profile und --dry-run. Zu den globalen Flags

openemail calendar list-events

List one page of event occurrences inside a time window

Geltungsbereichecalendar:readErfordert eine Anmeldung

Aufruf

openemail calendar list-events --from <when> --to <when> [flags]

Expands every event in the workspace into its occurrences between from and to and returns one page of them, sorted by start time and then by event id. A recurring series gives one row per instance in the window, with its excluded dates left out, and every row points back to its event through eventId. The window is required because a repeating series has no end to list up to.

to must be after from and at most 366 days later. A missing from or to is a 422 invalid_parameter, while a value that does not parse, a reversed or overlong window, or an unknown zone is a 400 invalid_parameter naming the field. Both bounds take a Date or an ISO 8601 string, and the SDK converts a Date with toISOString().

timezone is an IANA zone and defaults to UTC on the server. It is used to expand any event stored without a zone of its own, which is what decides the day an all day event lands on.

Add --all to walk every page: a table on a terminal, one JSON object per line when piped or with --ndjson, and one { items, hasMore, nextCursor } document with --json. --max <n> stops after that many items.

Flags

--from <when>

Start of the window. Required.

--to <when>

End of the window, after from and at most 366 days later. Required.

--timezone <value>

IANA zone such as Europe/London, at most 64 characters. Defaults to UTC.

--limit <n>

Occurrences per page, a whole number from 1 to 100. The server defaults to 25.

Standard25
--cursor <value>

The nextCursor of the previous page, sent with the same window. It is opaque, so never build one yourself.

--all

Fetch every page and stream the items as they arrive.

--max <n>

Stop after this many items. Implies --all.

--ndjson

Print every item as one JSON object per line. Implies --all

Beispiele

The required values only
openemail calendar list-events --from 2026-10-01T00:00:00Z --to 2026-10-31T23:59:59Z
With optional flags
openemail calendar list-events --from 2026-10-01T00:00:00Z --to 2026-10-31T23:59:59Z --timezone Europe/London --limit 50
Walk every page and stop after 100 items
openemail calendar list-events --from 2026-10-01T00:00:00Z --to 2026-10-31T23:59:59Z --all --max 100
One JSON object per line when piped
openemail calendar list-events --from 2026-10-01T00:00:00Z --to 2026-10-31T23:59:59Z --all > calendar.ndjson

Auch verfügbar über

API
GET /calendar/events
SDK
calendar.listEvents()

openemail calendar get-event

Read an event with its attendees

Geltungsbereichecalendar:readErfordert eine Anmeldung

Aufruf

openemail calendar get-event <id> [flags]

Returns a stored event with its attendees and their responses. What the server understood from the iCalendar data is structured here: recurrence holds the RRULE text, exdates the excluded instances, organizer the organiser and alarms the reminders as { minutesBefore, action }. The raw iCalendar source is not included, and getEventIcs serves the event as a document.

id is the event id, the eventId on an occurrence, and not the iCalendar uid. A recurring series is one event however many occurrences it has, so start and end describe its first instance. messageId and threadId link the event to mail in the mailbox when there is any.

Attendees come back in the order they were added, each with partstat, role, rsvp, cutype and respondedAt. A narrowed key gets a 404 unless one of the addresses it covers organises the event or is on the attendee list, and a key that holds a whole domain covers every address on it.

Argumente

<id>Erforderlich

Event id, the eventId of an occurrence, such as cal_ followed by 24 hex characters.

Beispiele

openemail calendar get-event cal_8d3f0a2b9c4e41f7a6b5c2d1
Print the raw JSON
openemail calendar get-event cal_8d3f0a2b9c4e41f7a6b5c2d1 --json

Auch verfügbar über

API
GET /calendar/events/{id}
SDK
calendar.getEvent()

openemail calendar get-event-ics

Download an event as an iCalendar document

Geltungsbereichecalendar:readErfordert eine Anmeldung

Aufruf

openemail calendar get-event-ics <id> [flags]

Resolves with the event serialised as an .ics document, as a raw string rather than parsed JSON. The server sends it as text/calendar; charset=utf-8 with a download filename built from the event's uid, and the SDK requests that type and returns the body untouched.

The document declares METHOD:PUBLISH, and the content type carries no method parameter. That is deliberate: a REQUEST document makes a calendar client offer accept and decline and reply to the organiser, and this endpoint has no authority to invite anyone. Import it to show what the event currently is, not to send an invitation.

It holds one VEVENT with the attendees and their participation status, the recurrence rule, excluded dates and alarms. Lines end in CRLF and long lines are folded. DTSTAMP is the time of the request, so two downloads of an unchanged event differ on that line.

Argumente

<id>Erforderlich

Event id, the eventId of an occurrence.

Flags

-o, --out <file>

Write the text to this file instead of printing it

Beispiele

openemail calendar get-event-ics cal_8d3f0a2b9c4e41f7a6b5c2d1
Save the file
openemail calendar get-event-ics cal_8d3f0a2b9c4e41f7a6b5c2d1 --out event.ics

Auch verfügbar über

API
GET /calendar/events/{id}/ics
SDK
calendar.getEventIcs()

openemail calendar create-event

Put an event on the calendar

Geltungsbereichecalendar:writeErfordert eine Anmeldung

Aufruf

openemail calendar create-event --summary <value> --start <when> --end <when> [flags]
openemail calendar create-event --data <json|@file|-> [flags]

Creates an event, as New event on the Calendar page of the app does. start and end take a Date or ISO 8601 with a zone, and timezone is the IANA zone the event belongs to, which decides what an all-day event means.

With attendees, an invitation goes to each of them by email from from, which has to be an address the key may send as, so the call also needs emails:send. Send sendInvites: false to keep it to your own calendar.

Flags

--summary <value>

The title, 1 to 255 characters. Required, here or in --data.

--start <when>

When it starts, a Date or ISO 8601 with a zone. Required, here or in --data.

--end <when>

When it ends, after start and at most two years later. Required, here or in --data.

--description <value>

Notes about the event, up to 8,000 characters.

--location <value>

Where it is: a room, an address or a link.

--url <value>

A link that belongs to the event.

--all-day

Whether it fills whole days. start and end then mark the days.

--timezone <value>

The IANA zone the event belongs to, UTC unless you say.

--recurrence <value>

An RRULE such as FREQ=WEEKLY;BYDAY=MO when it repeats.

--attendees <json|@file|->

Up to 200 people to invite, each { email, name?, optional? }. JSON shaped as Array<CalendarAttendeeInput>, inline or from a file with @path.

--reminders <json|@file|->

Up to five reminders, each { minutesBefore, action? }. JSON shaped as Array<CalendarReminderInput>, inline or from a file with @path.

--transparency <value>

OPAQUE shows you busy and TRANSPARENT free.

--visibility <value>

PUBLIC, PRIVATE or CONFIDENTIAL.

--send-invites

False keeps the change to your own calendar, and sends nothing.

--from <value>

The address the invitations come from. It has to be one the key may send as.

--data <json|@file|->

The whole body as JSON, inline, from a file with @path, or - for standard input. Flags override its keys.

Beispiele

The required values only
openemail calendar create-event --summary Planning --start 2026-10-12T09:00:00Z --end 2026-10-12T09:30:00Z
With optional flags
openemail calendar create-event --summary Planning --start 2026-10-12T09:00:00Z --end 2026-10-12T09:30:00Z --from [email protected]
Read the whole body from a JSON file
openemail calendar create-event --data @calendar.json

Auch verfügbar über

API
POST /calendar/events
SDK
calendar.createEvent()

openemail calendar update-event

Change an event

Geltungsbereichecalendar:writeErfordert eine Anmeldung

Aufruf

openemail calendar update-event <id> [flags]

Changes an event you organise. A field you leave out keeps its value, and attendees replaces the whole list. Everyone invited gets the updated invitation by email from from, so a change to an event with attendees needs emails:send too, unless --send-invites is false.

Argumente

<id>Erforderlich

Event id, the eventId of an occurrence, such as cal_ followed by 24 hex characters.

Flags

--summary <value>

The title, 1 to 255 characters.

--start <when>

When it starts, a Date or ISO 8601 with a zone.

--end <when>

When it ends, after start and at most two years later.

--description <value>

Notes about the event, up to 8,000 characters.

--location <value>

Where it is: a room, an address or a link.

--url <value>

A link that belongs to the event.

--all-day

Whether it fills whole days. start and end then mark the days.

--timezone <value>

The IANA zone the event belongs to, UTC unless you say.

--recurrence <value>

An RRULE such as FREQ=WEEKLY;BYDAY=MO when it repeats.

--attendees <json|@file|->

Up to 200 people to invite, each { email, name?, optional? }. It replaces the whole list. JSON shaped as Array<CalendarAttendeeInput>, inline or from a file with @path.

--reminders <json|@file|->

Up to five reminders, each { minutesBefore, action? }. JSON shaped as Array<CalendarReminderInput>, inline or from a file with @path.

--transparency <value>

OPAQUE shows you busy and TRANSPARENT free.

--visibility <value>

PUBLIC, PRIVATE or CONFIDENTIAL.

--send-invites

False keeps the change to your own calendar, and sends nothing.

--from <value>

The address the invitations come from. It has to be one the key may send as.

--data <json|@file|->

The whole patch as JSON, inline, from a file with @path, or - for standard input. Flags override its keys.

Beispiele

With optional flags
openemail calendar update-event cal_3f9a1c7e5b2d48a06c1e9f4b --start 2026-10-12T10:00:00Z --end 2026-10-12T10:30:00Z
Print the raw JSON
openemail calendar update-event cal_3f9a1c7e5b2d48a06c1e9f4b --start 2026-10-12T10:00:00Z --end 2026-10-12T10:30:00Z --json

Auch verfügbar über

API
PATCH /calendar/events/{id}
SDK
calendar.updateEvent()

openemail calendar delete-event

Remove an event from the calendar

Geltungsbereichecalendar:writeErfordert eine Anmeldung
Fragt nach einer Bestätigung

Aufruf

openemail calendar delete-event <id> [flags]

Removes an event for good, as Remove does in the app. Nobody else is told, so call off a meeting with others in it with cancelEvent instead.

Argumente

<id>Erforderlich

Event id, the eventId of an occurrence, such as cal_ followed by 24 hex characters.

Beispiele

openemail calendar delete-event cal_3f9a1c7e5b2d48a06c1e9f4b
Skip the confirmation, for scripts
openemail calendar delete-event cal_3f9a1c7e5b2d48a06c1e9f4b --yes

Auch verfügbar über

API
DELETE /calendar/events/{id}
SDK
calendar.deleteEvent()

openemail calendar cancel-event

Call off a meeting

Geltungsbereichecalendar:writeErfordert eine Anmeldung
Fragt nach einer Bestätigung

Aufruf

openemail calendar cancel-event <id> [flags]

Cancels a meeting you organise, as Cancel meeting does in the app. It stays on the calendar with status CANCELLED, and everyone invited is told it is off by email from from, so a meeting with attendees also needs emails:send.

Argumente

<id>Erforderlich

Event id, the eventId of an occurrence, such as cal_ followed by 24 hex characters.

Flags

--from <value>

The address the cancellation comes from. It has to be one the key may send as.

--data <json|@file|->

The whole body as JSON, inline, from a file with @path, or - for standard input. Flags override its keys.

Beispiele

The required values only
openemail calendar cancel-event cal_3f9a1c7e5b2d48a06c1e9f4b
With optional flags
openemail calendar cancel-event cal_3f9a1c7e5b2d48a06c1e9f4b --from [email protected]
Skip the confirmation, for scripts
openemail calendar cancel-event cal_3f9a1c7e5b2d48a06c1e9f4b --yes

Auch verfügbar über

API
POST /calendar/events/{id}/cancel
SDK
calendar.cancelEvent()

openemail calendar respond-to-event

Answer an invitation

Geltungsbereichecalendar:writeemails:sendErfordert eine Anmeldung

Aufruf

openemail calendar respond-to-event <id> --response <value> [flags]
openemail calendar respond-to-event <id> --data <json|@file|-> [flags]

Accepts, declines or tentatively accepts an invitation, as the buttons of an invitation do in the app. The answer goes to the organiser by email from the invited address the key may send as, or from --responding-as when the invitation went to more than one of yours, so it needs emails:send as well.

Argumente

<id>Erforderlich

Event id, the eventId of an occurrence, such as cal_ followed by 24 hex characters.

Flags

--response <value>

ACCEPTED, DECLINED or TENTATIVE. Required, here or in --data.

--responding-as <value>

Which of your invited addresses answers, when there is more than one.

--data <json|@file|->

The whole body as JSON, inline, from a file with @path, or - for standard input. Flags override its keys.

Beispiele

openemail calendar respond-to-event cal_3f9a1c7e5b2d48a06c1e9f4b --response ACCEPTED
Read the whole body from a JSON file
openemail calendar respond-to-event cal_3f9a1c7e5b2d48a06c1e9f4b --data @calendar.json

Auch verfügbar über

API
POST /calendar/events/{id}/respond
SDK
calendar.respondToEvent()