One branding module (types::brand!) supplies the name to every protocol greeting, the HTTP realm, the startup banner, Received headers, the user agent, the IMAP ID response and calendar PRODIDs. The sign-in and calendar pages take ihasmail's palette and font and the INBUXA logo, and calendar emails embed the INBUXA lockup. Default calendar and address book names follow. Protocol identifiers (urn:stalwart:jmap, vnd.stalwart Sieve extensions) and upstream copyright notices are unchanged.
265 lines
6.4 KiB
Plaintext
265 lines
6.4 KiB
Plaintext
# Events stored without a VTIMEZONE component, as created over JMAP
|
|
|
|
# The REQUEST carries a generated definition for every referenced TZID
|
|
> put [email protected] [email protected]
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example/ExampleCalendarClient//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:[email protected]
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:[email protected]
|
|
DTSTAMP:20260801T190000Z
|
|
DTSTART;TZID=Europe/Berlin:20261110T160000
|
|
DTEND;TZID=Europe/Berlin:20261110T170000
|
|
SUMMARY:Berlin meeting
|
|
UID:[email protected]
|
|
SEQUENCE:0
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
from: [email protected]
|
|
to: [email protected]
|
|
summary: invite
|
|
summary.attendee: Participants([ItipParticipant { email: "[email protected]", name: None, is_organizer: true }, ItipParticipant { email: "[email protected]", name: Some("B"), is_organizer: false }])
|
|
summary.dtstart: Time(ItipTime { start: 1794322800, tz_id: 433 })
|
|
summary.summary: Text("Berlin meeting")
|
|
BEGIN:VCALENDAR
|
|
METHOD:REQUEST
|
|
PRODID:-//INBUXA//INBUXA Server//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
SUMMARY:Berlin meeting
|
|
DTEND;TZID=Europe/Berlin:20261110T170000
|
|
DTSTART;TZID=Europe/Berlin:20261110T160000
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B;PARTSTAT=NEEDS-ACTION:mailto:b@ex
|
|
ample.com
|
|
ORGANIZER:mailto:[email protected]
|
|
UID:[email protected]
|
|
DTSTAMP:0
|
|
SEQUENCE:0
|
|
END:VEVENT
|
|
BEGIN:VTIMEZONE
|
|
TZID:Europe/Berlin
|
|
BEGIN:STANDARD
|
|
DTSTART:20251231T010000
|
|
TZNAME:CET
|
|
TZOFFSETFROM:+0100
|
|
TZOFFSETTO:+0100
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:20260329T020000
|
|
TZNAME:CEST
|
|
TZOFFSETFROM:+0100
|
|
TZOFFSETTO:+0200
|
|
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
|
|
END:DAYLIGHT
|
|
BEGIN:STANDARD
|
|
DTSTART:20261025T030000
|
|
TZNAME:CET
|
|
TZOFFSETFROM:+0200
|
|
TZOFFSETTO:+0100
|
|
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
|
|
END:STANDARD
|
|
END:VTIMEZONE
|
|
END:VCALENDAR
|
|
|
|
> send
|
|
|
|
# The REPLY sent by an attendee carries a definition of its own
|
|
> put [email protected] [email protected]
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example/ExampleCalendarClient//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:[email protected]
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B;PARTSTAT=ACCEPTED:mailto:[email protected]
|
|
DTSTAMP:20260801T190000Z
|
|
DTSTART;TZID=Europe/Berlin:20261110T160000
|
|
DTEND;TZID=Europe/Berlin:20261110T170000
|
|
SUMMARY:Berlin meeting
|
|
UID:[email protected]
|
|
SEQUENCE:1
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
from: [email protected]
|
|
to: [email protected]
|
|
summary: rsvp ACCEPTED
|
|
summary.attendee: Participants([ItipParticipant { email: "[email protected]", name: None, is_organizer: true }, ItipParticipant { email: "[email protected]", name: Some("B"), is_organizer: false }])
|
|
summary.dtstart: Time(ItipTime { start: 1794322800, tz_id: 433 })
|
|
summary.summary: Text("Berlin meeting")
|
|
BEGIN:VCALENDAR
|
|
METHOD:REPLY
|
|
PRODID:-//INBUXA//INBUXA Server//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
SUMMARY:Berlin meeting
|
|
DTEND;TZID=Europe/Berlin:20261110T170000
|
|
DTSTART;TZID=Europe/Berlin:20261110T160000
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B;PARTSTAT=ACCEPTED:mailto:b@exampl
|
|
e.com
|
|
ORGANIZER:mailto:[email protected]
|
|
UID:[email protected]
|
|
DTSTAMP:0
|
|
SEQUENCE:1
|
|
REQUEST-STATUS:2.0;Success
|
|
END:VEVENT
|
|
BEGIN:VTIMEZONE
|
|
TZID:Europe/Berlin
|
|
BEGIN:STANDARD
|
|
DTSTART:20251231T010000
|
|
TZNAME:CET
|
|
TZOFFSETFROM:+0100
|
|
TZOFFSETTO:+0100
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:20260329T020000
|
|
TZNAME:CEST
|
|
TZOFFSETFROM:+0100
|
|
TZOFFSETTO:+0200
|
|
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
|
|
END:DAYLIGHT
|
|
BEGIN:STANDARD
|
|
DTSTART:20261025T030000
|
|
TZNAME:CET
|
|
TZOFFSETFROM:+0200
|
|
TZOFFSETTO:+0100
|
|
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
|
|
END:STANDARD
|
|
END:VTIMEZONE
|
|
END:VCALENDAR
|
|
|
|
> send
|
|
|
|
# The CANCEL carries one too
|
|
> delete [email protected] [email protected]
|
|
|
|
> expect
|
|
from: [email protected]
|
|
to: [email protected]
|
|
summary: cancel
|
|
summary.dtstart: Time(ItipTime { start: 1794322800, tz_id: 433 })
|
|
summary.summary: Text("Berlin meeting")
|
|
BEGIN:VCALENDAR
|
|
METHOD:CANCEL
|
|
PRODID:-//INBUXA//INBUXA Server//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
STATUS:CANCELLED
|
|
SUMMARY:Berlin meeting
|
|
DTEND;TZID=Europe/Berlin:20261110T170000
|
|
DTSTART;TZID=Europe/Berlin:20261110T160000
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B;PARTSTAT=ACCEPTED;SCHEDULE-STATUS
|
|
=2.0:mailto:[email protected]
|
|
ORGANIZER:mailto:[email protected]
|
|
UID:[email protected]
|
|
DTSTAMP:0
|
|
SEQUENCE:1
|
|
END:VEVENT
|
|
BEGIN:VTIMEZONE
|
|
TZID:Europe/Berlin
|
|
BEGIN:STANDARD
|
|
DTSTART:20251231T010000
|
|
TZNAME:CET
|
|
TZOFFSETFROM:+0100
|
|
TZOFFSETTO:+0100
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:20260329T020000
|
|
TZNAME:CEST
|
|
TZOFFSETFROM:+0100
|
|
TZOFFSETTO:+0200
|
|
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
|
|
END:DAYLIGHT
|
|
BEGIN:STANDARD
|
|
DTSTART:20261025T030000
|
|
TZNAME:CET
|
|
TZOFFSETFROM:+0200
|
|
TZOFFSETTO:+0100
|
|
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
|
|
END:STANDARD
|
|
END:VTIMEZONE
|
|
END:VCALENDAR
|
|
|
|
> send
|
|
|
|
# A definition already present in the object is neither replaced nor duplicated
|
|
> put [email protected] [email protected]
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example/ExampleCalendarClient//EN
|
|
VERSION:2.0
|
|
BEGIN:VTIMEZONE
|
|
TZID:Europe/Berlin
|
|
BEGIN:STANDARD
|
|
DTSTART:19701025T030000
|
|
TZOFFSETFROM:+0200
|
|
TZOFFSETTO:+0100
|
|
TZNAME:CET
|
|
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:19700329T020000
|
|
TZOFFSETFROM:+0100
|
|
TZOFFSETTO:+0200
|
|
TZNAME:CEST
|
|
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
|
END:DAYLIGHT
|
|
END:VTIMEZONE
|
|
BEGIN:VEVENT
|
|
ORGANIZER:mailto:[email protected]
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:mailto:[email protected]
|
|
DTSTAMP:20260801T190000Z
|
|
DTSTART;TZID=Europe/Berlin:20261110T160000
|
|
DTEND;TZID=Europe/Berlin:20261110T170000
|
|
SUMMARY:Berlin meeting
|
|
UID:[email protected]
|
|
SEQUENCE:0
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
from: [email protected]
|
|
to: [email protected]
|
|
summary: invite
|
|
summary.attendee: Participants([ItipParticipant { email: "[email protected]", name: None, is_organizer: true }, ItipParticipant { email: "[email protected]", name: Some("B"), is_organizer: false }])
|
|
summary.dtstart: Time(ItipTime { start: 1794322800, tz_id: 433 })
|
|
summary.summary: Text("Berlin meeting")
|
|
BEGIN:VCALENDAR
|
|
METHOD:REQUEST
|
|
PRODID:-//INBUXA//INBUXA Server//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
SUMMARY:Berlin meeting
|
|
DTEND;TZID=Europe/Berlin:20261110T170000
|
|
DTSTART;TZID=Europe/Berlin:20261110T160000
|
|
ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B;PARTSTAT=NEEDS-ACTION:mailto:b@ex
|
|
ample.com
|
|
ORGANIZER:mailto:[email protected]
|
|
UID:[email protected]
|
|
DTSTAMP:0
|
|
SEQUENCE:0
|
|
END:VEVENT
|
|
BEGIN:VTIMEZONE
|
|
TZID:Europe/Berlin
|
|
BEGIN:STANDARD
|
|
DTSTART:19701025T030000
|
|
TZNAME:CET
|
|
TZOFFSETFROM:+0200
|
|
TZOFFSETTO:+0100
|
|
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:19700329T020000
|
|
TZNAME:CEST
|
|
TZOFFSETFROM:+0100
|
|
TZOFFSETTO:+0200
|
|
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
|
|
END:DAYLIGHT
|
|
END:VTIMEZONE
|
|
END:VCALENDAR
|
|
|
|
> send
|
|
|