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
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
fromand at most 366 days later. Required.--timezone <value>IANA zone such as
Europe/London, at most 64 characters. Defaults toUTC.--limit <n>Occurrences per page, a whole number from 1 to 100. The server defaults to 25.
Standard25--cursor <value>The
nextCursorof the previous page, sent with the same window. It is opaque, so never build one yourself.--allFetch every page and stream the items as they arrive.
--max <n>Stop after this many items. Implies
--all.--ndjsonPrint every item as one JSON object per line. Implies
--all
Beispiele
openemail calendar list-events --from 2026-10-01T00:00:00Z --to 2026-10-31T23:59:59Zopenemail calendar list-events --from 2026-10-01T00:00:00Z --to 2026-10-31T23:59:59Z --timezone Europe/London --limit 50openemail calendar list-events --from 2026-10-01T00:00:00Z --to 2026-10-31T23:59:59Z --all --max 100openemail calendar list-events --from 2026-10-01T00:00:00Z --to 2026-10-31T23:59:59Z --all > calendar.ndjsonAuch verfügbar über
openemail calendar get-event
Read an event with its attendees
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>ErforderlichEvent id, the
eventIdof an occurrence, such ascal_followed by 24 hex characters.
Beispiele
openemail calendar get-event cal_8d3f0a2b9c4e41f7a6b5c2d1openemail calendar get-event cal_8d3f0a2b9c4e41f7a6b5c2d1 --jsonAuch verfügbar über
openemail calendar get-event-ics
Download an event as an iCalendar document
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>ErforderlichEvent id, the
eventIdof an occurrence.
Flags
-o, --out <file>Write the text to this file instead of printing it
Beispiele
openemail calendar get-event-ics cal_8d3f0a2b9c4e41f7a6b5c2d1openemail calendar get-event-ics cal_8d3f0a2b9c4e41f7a6b5c2d1 --out event.icsAuch verfügbar über
openemail calendar create-event
Put an event on the calendar
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
Dateor ISO 8601 with a zone. Required, here or in--data.--end <when>When it ends, after
startand 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-dayWhether it fills whole days.
startandendthen mark the days.--timezone <value>The IANA zone the event belongs to,
UTCunless you say.--recurrence <value>An RRULE such as
FREQ=WEEKLY;BYDAY=MOwhen it repeats.--attendees <json|@file|->Up to 200 people to invite, each
{ email, name?, optional? }. JSON shaped asArray<CalendarAttendeeInput>, inline or from a file with @path.--reminders <json|@file|->Up to five reminders, each
{ minutesBefore, action? }. JSON shaped asArray<CalendarReminderInput>, inline or from a file with @path.--transparency <value>OPAQUEshows you busy andTRANSPARENTfree.--visibility <value>PUBLIC,PRIVATEorCONFIDENTIAL.--send-invitesFalse 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
bodyas JSON, inline, from a file with @path, or - for standard input. Flags override its keys.
Beispiele
openemail calendar create-event --summary Planning --start 2026-10-12T09:00:00Z --end 2026-10-12T09:30:00Zopenemail calendar create-event --summary Planning --start 2026-10-12T09:00:00Z --end 2026-10-12T09:30:00Z --from [email protected]openemail calendar create-event --data @calendar.jsonAuch verfügbar über
openemail calendar update-event
Change an event
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>ErforderlichEvent id, the
eventIdof an occurrence, such ascal_followed by 24 hex characters.
Flags
--summary <value>The title, 1 to 255 characters.
--start <when>When it starts, a
Dateor ISO 8601 with a zone.--end <when>When it ends, after
startand 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-dayWhether it fills whole days.
startandendthen mark the days.--timezone <value>The IANA zone the event belongs to,
UTCunless you say.--recurrence <value>An RRULE such as
FREQ=WEEKLY;BYDAY=MOwhen it repeats.--attendees <json|@file|->Up to 200 people to invite, each
{ email, name?, optional? }. It replaces the whole list. JSON shaped asArray<CalendarAttendeeInput>, inline or from a file with @path.--reminders <json|@file|->Up to five reminders, each
{ minutesBefore, action? }. JSON shaped asArray<CalendarReminderInput>, inline or from a file with @path.--transparency <value>OPAQUEshows you busy andTRANSPARENTfree.--visibility <value>PUBLIC,PRIVATEorCONFIDENTIAL.--send-invitesFalse 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
patchas JSON, inline, from a file with @path, or - for standard input. Flags override its keys.
Beispiele
openemail calendar update-event cal_3f9a1c7e5b2d48a06c1e9f4b --start 2026-10-12T10:00:00Z --end 2026-10-12T10:30:00Zopenemail calendar update-event cal_3f9a1c7e5b2d48a06c1e9f4b --start 2026-10-12T10:00:00Z --end 2026-10-12T10:30:00Z --jsonAuch verfügbar über
openemail calendar delete-event
Remove an event from the calendar
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>ErforderlichEvent id, the
eventIdof an occurrence, such ascal_followed by 24 hex characters.
Beispiele
openemail calendar delete-event cal_3f9a1c7e5b2d48a06c1e9f4bopenemail calendar delete-event cal_3f9a1c7e5b2d48a06c1e9f4b --yesAuch verfügbar über
openemail calendar cancel-event
Call off a meeting
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>ErforderlichEvent id, the
eventIdof an occurrence, such ascal_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
bodyas JSON, inline, from a file with @path, or - for standard input. Flags override its keys.
Beispiele
openemail calendar cancel-event cal_3f9a1c7e5b2d48a06c1e9f4bopenemail calendar cancel-event cal_3f9a1c7e5b2d48a06c1e9f4b --from [email protected]openemail calendar cancel-event cal_3f9a1c7e5b2d48a06c1e9f4b --yesAuch verfügbar über
openemail calendar respond-to-event
Answer an invitation
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>ErforderlichEvent id, the
eventIdof an occurrence, such ascal_followed by 24 hex characters.
Flags
--response <value>ACCEPTED,DECLINEDorTENTATIVE. 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
bodyas JSON, inline, from a file with @path, or - for standard input. Flags override its keys.
Beispiele
openemail calendar respond-to-event cal_3f9a1c7e5b2d48a06c1e9f4b --response ACCEPTEDopenemail calendar respond-to-event cal_3f9a1c7e5b2d48a06c1e9f4b --data @calendar.json