Published

CalConnect Administrative

CC/A 0402:2004
July 2004 CalConnect Interoperability Test Results Spreadsheet
TC IOPTEST
CalConnect Administrative




Foreword

This document incorporates by reference the CalConnect Intellectual Property Rights, Appropriate Usage, Trademarks and Disclaimer of Warranty for External (Public) Documents as located at

http://www.calconnect.org/documents/disclaimerpublic.pdf.

July 2004 CalConnect Interoperability Test Results Spreadsheet

1.  Spreadsheet

RFC 2445Internet Calendaring and Scheduling Core Object Specification
Feature SetRequirementConditionV1V2
2.3 International ConsiderationsMUSTIf a non-US-ASCII compatible character set is used, appropriate code-point from that character set MUST be chosen insteadYY
4.1 Content LinesSHOULD NOTLines of text SHOULD NOT be longer than 75 octets, excluding the line breakYY
4.1 Content LinesSHOULDLong content lines SHOULD be split into a multiple line representations using a line “folding” techniqueYY
4.1.1 List and Field SeparatorsMUSTValues in a list of values MUST be separated by a COMMA character (US-ASCII decimal 44).NN
4.1.1 List and Field SeparatorsMUSTStructured property values MUST have their value parts separated by a SEMICOLON character (US-ASCII decimal 59)NN
4.1.1 List and Field SeparatorsMUSTEach property parameter in a list of property parameters MUST be separated by a SEMICOLON character (US-ASCII decimal 59).NN
4.1.1 List and Field SeparatorsMUSTProperty parameters with values containing a COLON, a SEMICOLON or a COMMA character MUST be placed in quoted textNN
4.1.3 Binary ContentSHOULDBinary content information in an iCalendar object SHOULD be referenced using a URI within a property valueYN
4.1.3 Binary ContentMUSTBinary content information placed external to the iCalendar object MUST be referenced by a uniform resource identifier (URI)YN
4.2 Property ParametersMUSTProperty parameter values that contain the COLON (US-ASCII decimal 58), SEMICOLON (US-ASCII decimal 59) or COMMA (US-ASCII decimal 44) character separators MUST be specified as quoted-string text valueYY
4.2 Property ParametersMUST NOTProperty parameter values MUST NOT contain the DOUBLE-QUOTE (US-ASCII decimal 22) character.YY?
4.2.1 Alternate Text RepresentationMUSTA property specifying alternate text representation parameter MUST also include a value that reflects the default representation of the text valueYN
4.2.1 Alternate Text RepresentationMUSTThe individual URI parameter values MUST each be specified in a quoted-stringYN
4.2.4 DelegatorsMUSTThe value of the DELEGATED-FROM parameter MUST be a MAILTO URI as defined in IETF RFC 1738YN
4.2.4 DelegatorsMUSTThe individual calendar address parameter values MUST each be specified in a quoted-string.YN
4.2.5 DelegateesMUSTThe value of the DELEGATED-TO parameter MUST be a MAILTO URI as defined in IETF RFC 1738.YN
4.2.5 DelegateesMUSTThe individual calendar address parameter values MUST each be specified in a quoted-string.YN
4.2.6 Directory Entry ReferenceMUSTThe individual URI parameter values of DIR= MUST each be specified in a quoted-string.?N
4.2.7 Inline EncodingMUSTIf the value type parameter is “;VALUE=BINARY”, then the inline encoding parameter MUST be specified with the value “;ENCODING=BASE64”YN
4.2.8 Format TypeMUSTThe parameter value of FMTTYPE=MUST be the TEXT for either an IANA registered content type or a non-standard content typeYN
4.2.11 Group or List MembershipMUSTThe individual calendar address parameter values MUST each be specified in a quoted-string.N?N
4.2.12 Participation StatusMUSTThe values to PARTSTAT=MUST match one of the values allowed for the given calendar component.YY
4.2.18 Sent ByMUSTThe parameter value of SENT-BY MUST be a MAILTO URI as defined in IETF RFC 1738.YN
4.2.18 Sent ByMUSTThe individual calendar address parameter values MUST each be specified in a quoted-string.YN
4.2.19 Time Zone IdentifierMUSTThe parameter MUST be specified on the “DTSTART”, “DTEND”, “DUE”, “EXDATE” and “RDATE” properties when either a DATE-TIME or TIME value type is specified and when the value is not either a UTC or a “floating” timeYY
4.2.19 Time Zone IdentifierMUSTAn individual “VTIMEZONE” calendar component MUST be specified for each unique “TZID” parameter value specified in the iCalendar objectYY
4.2.19 Time Zone IdentifierMUST NOTThe TZID property parameter MUST NOT be applied to DATE-TIME or TIME properties whose time values are specified in UTC.YY
4.2.20 Value Data TypesMUSTThe property values MUST be of a single value type.YY
4.2.20 Value Data TypesMUSTIf the property’s value is the default value type, then this parameter need not be specified. However, if the property’s default value type is overridden by some other allowable value type, then this parameter MUST be specifiedYY
4.3.1 BinaryMUSTProperty values with this value type MUST also include the inline encoding parameter sequence of “;ENCODING=BASE64”.YN
4.3.3 Calendar User AddressMUSTWhen used to address an Internet email transport address for a calendar user, the value MUST be a MAILTO URI, as defined by IETF RFC 1738YY
4.3.5 Date-TimeMUST NOTThe form of date and time with UTC offset MUST NOT be used.YY
4.3.5 Date-TimeSHOULDThe recipient of an iCalendar object with a property value consisting of a local time, without any relative time zone information, SHOULD interpret the value as being fixed to whatever time zone the ATTENDEE is in at any given momentYY
4.3.5 Date-TimeSHOULDFloating time SHOULD only be used where that is the reasonable behaviorYY
4.3.5 Date-TimeMUSTIn most cases, a fixed time is desired. To properly communicate a fixed time in a property value, either UTC time or local time with time zone reference MUST be specifiedYY
4.3.5 Date-TimeMUST NOTThe TZID property parameter MUST NOT be applied to DATE-TIME properties whose time values are specified in UTCYY
4.3.5 Date-TimeMUST ONLYA time value MUST ONLY specify 60 seconds when specifying the periodic “leap second” in the time value?Y
4.3.9 Period of TimeMUSTThe start of the period MUST be before the end of the period.??
4.3.10 Recurrence RuleMUSTIndividual rule parts MUST only be specified onceYY
4.3.10 Recurrence RuleMUSTThe FREQ rule part identifies the type of recurrence rule. This rule part MUST be specified in the recurrence ruleYY
4.3.10 Recurrence RuleMUSTIf UNTIL is specified as a date-time value, then it MUST be specified in an UTC time format.YY
4.3.10 Recurrence RuleMUSTBYSETPOS MUST only be used in conjunction with another BYxxx rule partYY?
4.3.11 TextMUSTAn intentional formatted text line break MUST only be included in a “TEXT” property value by representing the line break with the character sequence of BACKSLASH (US-ASCII decimal 92), followed by a LATIN SMALL LETTER N (US-ASCII decimal 110) or a LATIN CAPITAL LETTER N (US-ASCII decimal 78), that is “\n” or “\N”YY
4.3.12 TimeMUST NOTThe form of time with UTC offset MUST NOT be used.YY
4.3.12 TimeSHOULDThe recipient of an iCalendar object with a property value consisting of a local time, without any relative time zone information, SHOULD interpret the value as being fixed to whatever time zone the ATTENDEE is in at any given momentYY
4.3.12 TimeSHOULDFloating time SHOULD only be used where that is reasonable behaviorYY
4.3.12 TimeMUSTTo properly communicate a fixed time in a property value, either UTC time or local time with time zone reference MUST be specified.YY
4.3.12 TimeMUST NOTThe TZID property parameter MUST NOT be applied to TIME properties whose time values are specified in UTCYY
4.3.14 UTC OffsetMUSTThe PLUS SIGN character MUST be specified for positive UTC offsets (i.e., ahead of UTC).YY
4.4 iCalendar ObjectMUSTThe first line and last line of the iCalendar object MUST contain a pair of iCalendar object delimiter stringsYY
4.6 Calendar ComponentsMUSTAn iCalendar object MUST include the “PRODID” and “VERSION” calendar properties.YY
4.6 Calendar ComponentsMUST NOT‘calscale’ and ‘method’ are optional, but MUST NOT occur more than onceYY
4.6 Calendar ComponentsMUSTAn iCalendar object MUST include at least one calendar component.YY?
4.6.1 Event ComponentMUST NOTthe following are optional, but MUST NOT occur more than once: class / created / description / dtstart / geo / last-mod / location / organizer / priority / dtstamp / seq / status / summary / transp / uid / url / recuridYY
4.6.1 Event ComponentMUST NOTeither ‘dtend’ or ‘duration’ may appear in a ‘eventprop’, but ‘dtend’ and ‘duration’ MUST NOT occur in the same ‘eventprop’YY
4.6.1 Event ComponentMAYthe following are optional, and MAY occur more than once: attach / attendee / categories / comment / contact / exdate / exrule / rstatus / related / resources / rdate / rrule / x-proYY
4.6.2 To-do ComponentMUST NOTthe following are optional, but MUST NOT occur more than once: class / completed / created / description / dtstamp / dtstart / geo / last-mod / location / organizer / percent / priority / recurid / seq / status / summary / uid / urYY
4.6.2 To-do ComponentMUST NOTeither ‘due’ or ‘duration’ may appear in a ‘todoprop’, but ‘due’ and ‘duration’ MUST NOT occur in the same ‘todoprop’YY
4.6.2 To-do ComponentMAYthe following are optional, and MAY occur more than once: attach / attendee / categories / comment / contact / exdate / exrule / rstatus / related / resources / rdate / rrule / x-proYY
4.6.3 Journal ComponentMUST NOTthe following are optional, but MUST NOT occur more than once: class / created / description / dtstart / dtstamp / last-mod / organizer / recurid / seq / status / summary / uid / urlNN
4.6.3 Journal ComponentMAYthe following are optional, and MAY occur more than once: attach / attendee / categories / comment / contact / exdate / exrule / related / rdate / rrule / rstatus / x-proNN
4.6.3 Journal ComponentMUST NOTThe “VJOURNAL” calendar component cannot be nested within another calendar componentNN
4.6.4 Free/Busy ComponentMUST NOTthe following are optional, but MUST NOT occur more than once: contact / dtstart / dtend / duration / dtstamp / organizer / uid / urlNY
4.6.4 Free/Busy ComponentMAYthe following are optional, and MAY occur more than once: attendee / comment / freebusy / rstatus / x-propNY
4.6.4 Free/Busy ComponentMUST NOTThe recurrence properties (“RRULE”, “EXRULE”, “RDATE”, “EXDATE”) are not permitted within a “VFREEBUSY” calendar component. Any recurring events are resolved into their individual busy time periods using the “FREEBUSY” propertyNY
4.6.5 Time Zone ComponentMUST NOT‘tzid’ is required, but MUST NOT occur more than onceYY
4.6.5 Time Zone ComponentMUST NOT‘last-mod’ and ‘tzurl’ are optional, but MUST NOT occur more than onceYY
4.6.5 Time Zone ComponentMUSTone of ‘standardc’ or ‘daylightc’ MUST occur and each MAY occur more than onceYY
4.6.5 Time Zone ComponentMAYthe following is optional, and MAY occur more than once: x-propYY
4.6.5 Time Zone ComponentMAYMultiple “VTIMEZONE” calendar components can exist in an iCalendar object.YY
4.6.5 Time Zone ComponentMUSTIf multiple “VTIMEZONE” calendar components exist in an iCalendar object, each “VTIMEZONE” MUST represent a unique time zone definitionYY
4.6.5 Time Zone ComponentMUSTThe “VTIMEZONE” calendar component MUST be present if the iCalendar object contains an RRULE that generates dates on both sides of a time zone shiftYY
4.6.5 Time Zone ComponentMAYA “VTIMEZONE” calendar component can be present if the iCalendar object does not contain such an RRULE that generates dates on both sides of a time zone shift.YY
4.6.5 Time Zone ComponentMUSTIf a RRULE that generates dates on both sides of a time zone shift is present, there MUST be valid time zone information for all recurrence instancesYY
4.6.5 Time Zone ComponentMUSTThe “VTIMEZONE” calendar component MUST include the “TZID” property and at least one definition of a standard or daylight component.YY
4.6.5 Time Zone ComponentMUSTThe standard or daylight component MUST include the “DTSTART”, “TZOFFSETFROM” and “TZOFFSETTO” properties.YY
4.6.5 Time Zone ComponentMUSTAn individual “VTIMEZONE” calendar component MUST be specified for each unique “TZID” parameter value specified in the iCalendar object.YY
4.6.5 Time Zone ComponentSHOULDTZURL SHOULD refer to a resource that is accessible by anyone who might need to interpret the object.NN
4.6.5 Time Zone ComponentSHOULD NOTTZURL SHOULD NOT normally be a file: URL or other URL that is not widely-accessible.NN
4.6.6 Alarm ComponentREQUIRED‘action’ and ‘trigger’ are both REQUIRED, but MUST NOT occur more than onceNN
4.6.6 Alarm ComponentMUST NOT‘duration’ and ‘repeat’ are both optional, and MUST NOT occur more than once each, but if one occurs, so MUST the otherNN
4.6.6 Alarm ComponentMUST NOTthe following is optional, but MUST NOT occur more than once: attachNN
4.6.6 Alarm ComponentMAYthe following is optional, and MAY occur more than once: x-propNN
4.6.6 Alarm ComponentREQUIREDthe following are all REQUIRED, but MUST NOT occur more than once: action / description / triggerNN
4.6.6 Alarm ComponentMUST NOT‘duration’ and ‘repeat’ are both optional, and MUST NOT occur more than once each, but if one occurs, so MUST the otherNN
4.6.6 Alarm ComponentMAYthe following is optional, and MAY occur more than once: x-propNN
4.6.6 Alarm ComponentREQUIREDthe following are all REQUIRED, but MUST NOT occur more than once: action / description / trigger / summaryNN
4.6.6 Alarm ComponentREQUIREDthe following is REQUIRED, and MAY occur more than once: attendeeNN
4.6.6 Alarm ComponentMUST NOT‘duration’ and ‘repeat’ are both optional, and MUST NOT occur more than once each, but if one occurs, so MUST the otherNN
4.6.6 Alarm ComponentMAYthe following are optional, and MAY occur more than once: attach / x-propNN
4.6.6 Alarm ComponentREQUIREDthe following are all REQUIRED, but MUST NOT occur more than once: action / attach / triggerNN
4.6.6 Alarm ComponentMUST NOT‘duration’ and ‘repeat’ are both optional, and MUST NOT occur more than once each, but if one occurs, so MUST the otherNN
4.6.6 Alarm ComponentMUST NOT‘description’ is optional, and MUST NOT occur more than onceNN
4.6.6 Alarm ComponentMAYthe following is optional, and MAY occur more than once: x-propNN
4.6.6 Alarm ComponentMUSTThe “VALARM” calendar component MUST include the “ACTION” and “TRIGGER” properties.NN
4.6.6 Alarm ComponentMUSTWhen the action is “AUDIO”, the alarm can also include one and only one “ATTACH” property, which MUST point to a sound resource, which is rendered when the alarm is triggered.NN
4.6.6 Alarm ComponentMUSTWhen the action is “DISPLAY”, the alarm MUST also include a “DESCRIPTION” property, which contains the text to be displayed when the alarm is triggered.NN
4.6.6 Alarm ComponentMUSTWhen the action is “EMAIL”, the alarm MUST include a “DESCRIPTION” property, which contains the text to be used as the message body, a “SUMMARY” property, which contains the text to be used as the message subject, and one or more “ATTENDEE” properties, which contain the email address of attendees to receive the message.NN
4.6.6 Alarm ComponentMAYIt can also include one or more “ATTACH” properties, which are intended to be sent as message attachments.NN
4.6.6 Alarm ComponentMUSTWhen the action is “PROCEDURE”, the alarm MUST include one and only one “ATTACH” property, which MUST point to a procedure resource, which is invoked when the alarm is triggered.NN
4.6.6 Alarm ComponentMUSTThe “VALARM” calendar component MUST only appear within either a “VEVENT” or “VTODO” calendar component.NN
4.6.6 Alarm ComponentMUST NOT“VALARM” calendar components cannot be nested.NN
4.6.6 Alarm ComponentMUSTIn an alarm set to trigger on the “START” of an event or to-do, the “DTSTART” property MUST be present in the associated event or to-do.NY
4.6.6 Alarm ComponentMUSTIn an alarm in a “VEVENT” calendar component set to trigger on the “END” of the event, either the “DTEND” property MUST be present, or the “DTSTART” and “DURATION” properties MUST both be present.N
4.6.6 Alarm ComponentMUSTIn an alarm in a “VTODO” calendar component set to trigger on the “END” of the to-do, either the “DUE” property MUST be present, or the “DTSTART” and “DURATION” properties MUST both be present.NY
4.6.6 Alarm ComponentMUSTA definition of an alarm with a repeating trigger MUST include both the “DURATION” and “REPEAT” properties.N
4.6.6 Alarm ComponentMUSTBoth “DURATION” and “REPEAT” properties MUST be present in order to specify a repeating alarm. If one of these two properties is absent, then the alarm will not repeat beyond the initial trigger.NY
4.6.6 Alarm ComponentMUSTThe “ACTION” property MUST specify one and only one of “AUDIO”, “DISPLAY”, “PROCEDURE”, “EMAIL”.NY
4.6.6 Alarm ComponentMUSTIn an AUDIO alarm, if the optional “ATTACH” property is included, it MUST specify an audio sound resource.NY
4.6.6 Alarm ComponentMUSTFor an “EMAIL” alarm, the “DESCRIPTION” property of the “VALARM” calendar component MUST be used as the body text of the message, and the “SUMMARY” property MUST be used as the subject text.NY
4.6.6 Alarm ComponentSHOULDAny “ATTACH” properties in the “VALARM” calendar component SHOULD be sent as attachments to the message.NY
4.6.6 Alarm ComponentMUSTIn a PROCEDURE alarm, the “ATTACH” property in the “VALARM” calendar component MUST specify a procedure or program that is intended to be invoked as the alarm effect.NY
4.6.6 Alarm ComponentSHOULDWhile a very useful alarm capability, the PROCEDURE type of alarm SHOULD be treated by the “Calendar User Agent” as a potential security risk.NY
4.7 Calendar PropertiesSHOULDCalendar Properties SHOULD be specified after the “BEGIN:VCALENDAR” property and prior to any calendar component.YY
4.7.2 MethodMUSTWhen used in a MIME message entity, the value of this property MUST be the same as the Content-Type “method” parameter value. This property can only appear once within the iCalendar object.YY
4.7.2 MethodMUSTIf either the “METHOD” property or the Content-Type “method” parameter is specified, then the other MUST also be specified.YY
4.7.2 MethodMUST NOTIf this property is not present in the iCalendar object, then a scheduling transaction MUST NOT be assumed.YY
4.7.3 Product IdentifierMUSTThe property MUST be specified once in an iCalendar object.YY
4.7.3 Product IdentifierSHOULDThe vendor of the implementation SHOULD assure that this is a globally unique identifier; using some technique such as an FPI value, as defined in ISO 9070.YY
4.7.3 Product IdentifierSHOULD NOTThis property SHOULD not be used to alter the interpretation of an iCalendar object beyond the semantics specified in this memo.YY
4.7.4 VersionMUSTThis property MUST be specified by an iCalendar object, but MUST only be specified once.YY
4.8.1.1 AttachmentMUSTthe following is optional, but MUST NOT occur more than once: fmttypeparamYN
4.8.1.1 AttachmentMAYthe following is optional, and MAY occur more than once: xparamYN
4.8.1.2 CategoriesMUST NOTthe following is optional, but MUST NOT occur more than once: languageparamNY
4.8.1.2 CategoriesMAYthe following is optional, and MAY occur more than once: xparamNY
4.8.1.4 CommentMUST NOTthe following are optional, but MUST NOT occur more than once: altrepparam, languageparamYY
4.8.1.4 CommentMAYthe following is optional, and MAY occur more than once: xparamYY
4.8.1.5 DescriptionMUST NOTthe following are optional, but MUST NOT occur more than once: altrepparam, languageparamYY
4.8.1.5 DescriptionMAYthe following is optional, and MAY occur more than once: xparamYY
4.8.1.6 Geographic PositionMUSTThe value MUST be two SEMICOLON separated FLOAT values.YY
4.8.1.7 LocationMUSTthe following are optional, but MUST NOT occur more than once: altrepparam, languageparamYY
4.8.1.7 LocationMAYthe following is optional, and MAY occur more than once: xparamYY
4.8.1.10 ResourcesMUST NOTthe following are optional, but MUST NOT occur more than once: altrepparam, languageparamYY
4.8.1.10 ResourcesMAYthe following is optional, and MAY occur more than once: xparamYY
4.8.1.12 SummaryMUST NOTthe following are optional, but MUST NOT occur more than once: altrepparam, languageparamYY
4.8.1.12 SummaryMAYthe following is optional, and MAY occur more than once: xparamYY
4.8.2.1 Date/Time CompletedMUSTThe date and time MUST be in a UTC format.YY
4.8.2.2 Date/Time EndMUST NOTthe following are optional, but MUST NOT occur more than once: “VALUE” “=” (“DATETIME” / “DATE”)), tzidparamYY
4.8.2.2 Date/Time EndMAYthe following is optional, and MAY occur more than once: xparamYY
4.8.2.3 Date/Time DueMUST NOTthe following are optional, but MUST NOT occur more than once: “VALUE” “=” (“DATETIME” / “DATE”)), tzidparamYN
4.8.2.3 Date/Time DueMAYthe following is optional, and MAY occur more than once: xparamYN
4.8.2.4 Date/Time StartMUSTThe time value MUST be one of the forms defined for the DATE-TIME value type.YY
4.8.2.4 Date/Time StartMUST NOTthe following are optional, but MUST NOT occur more than once: “VALUE” “=” (“DATETIME” / “DATE”)), tzidparamYY
4.8.2.4 Date/Time StartMAYthe following is optional, and MAY occur more than once: xparamYY
4.8.2.6 Free/Busy TimeMUSTThe date and time values MUST be in an UTC time format.NY?
4.8.2.6 Free/Busy TimeMUSTthe following is optional, but MUST NOT occur more than once: fbtypeparamNY
4.8.2.6 Free/Busy TimeMAYthe following is optional, and MAY occur more than once: xparamNY
4.8.2.7 Time TransparencySHOULDEvents that consume actual time for the individual or resource associated with the calendar SHOULD be recorded as OPAQUE, allowing them to be detected by free-busy time searches.YY
4.8.2.7 Time TransparencySHOULDOther events, which do not take up the individual’s (or resource’s) time SHOULD be recorded as TRANSPARENT, making them invisible to free-busy time searches.YY
4.8.3.1 Time Zone IdentifierMUSTThis property MUST be specified in a “VTIMEZONE” calendar component.YY
4.8.3.2 Time Zone NameMUST NOTthe following is optional, but MUST NOT occur more than once: languageparamYY
4.8.3.2 Time Zone NameMAYthe following is optional, and MAY occur more than once: xparamYY
4.8.3.3 Time Zone Offset FromMUSTThis property MUST be specified in a “VTIMEZONE” calendar component.YY
4.8.3.4 Time Zone Offset ToMUSTThis property MUST be specified in a “VTIMEZONE” calendar component.YY
4.8.4.1 AttendeeMUSTThis property MUST be specified in an iCalendar object that specifies a group scheduled calendar entity.YY
4.8.4.1 AttendeeMUST NOTThis property MUST NOT be specified in an iCalendar object when publishing the calendar information.YN
4.8.4.1 AttendeeMUSTThe property MUST only be specified within calendar components to specify participants, non-participants and the chair of a group scheduled calendar entity.YY
4.8.4.1 AttendeeMUST NOTThe ROLE, PARSTAT, RSVP, CUTYPE, etc. MUST NOT be specified in an “ATTENDEE” property in a “VFREEBUSY” or “VALARM” calendar component.YY
4.8.4.1 AttendeeMUSTA recipient delegated a request MUST inherit the RSVP and ROLE values from the attendee that delegated the request to them.YN
4.8.4.1 AttendeeMUST NOTthe following are optional, but MUST NOT occur more than once: cutypeparam, memberparam, roleparam, partstatparam, rsvpparam, deltoparam, delfromparam, sentbyparam, cnparam, dirparam, languageparamYY
4.8.4.1 AttendeeMAYthe following is optional, and MAY occur more than once: xparamYY
4.8.4.2 ContactMUSTthe following are optional, but MUST NOT occur more than once: altrepparam, languageparamYY
4.8.4.2 ContactMAYthe following is optional, and MAY occur more than once: xparamYY
4.8.4.3 OrganizerMUSTThis property MUST be specified in an iCalendar object that specifies a group scheduled calendar entity.YY
4.8.4.3 OrganizerMUSTThis property MUST be specified in an iCalendar object that specifies the publication of a calendar user’s busy time.NY
4.8.4.3 OrganizerMUST NOTThis property MUST NOT be specified in an iCalendar object that specifies only a time zone definition or that defines calendar entities that are not group scheduled entities, but are entities only on a single user’s calendar.NN
4.8.4.3 OrganizerMUST NOTthe following are optional, but MUST NOT occur more than once: cnparam, dirparam, sentbyparam, languageparamYY
4.8.4.3 OrganizerMAYthe following is optional, and MAY occur more than once: xparamYY
4.8.4.4 Recurrence IDMUSTIf the value of the “DTSTART” property is a DATE type value, then the value MUST be the calendar date for the recurrence instance.YY
4.8.4.4 Recurrence IDMUST NOTthe following are optional, but MUST NOT occur more than once: “VALUE” “=” (“DATETIME” / “DATE”), tzidparam, rangeparamYY
4.8.4.4 Recurrence IDMAYthe following is optional, and MAY occur more than once: xparamYY
4.8.4.5 Related ToMUST NOTthe following is optional, but MUST NOT occur more than once: reltypeparamNN
4.8.4.5 Related ToMAYthe following is optional, and MAY occur more than once: xparamNN
4.8.4.7 Unique IdentifierMUSTThe property MUST be specified in the “VEVENT”, “VTODO”, “VJOURNAL” or “VFREEBUSY” calendar components.YY
4.8.4.7 Unique IdentifierMUSTThe UID itself MUST be a globally unique identifier.YY
4.8.4.7 Unique IdentifierMUSTThe generator of the identifier MUST guarantee that the identifier is unique.YY
4.8.4.7 Unique IdentifierMUSTImplementations MUST be able to receive and persist values of at least 255 characters for this property.YY
4.8.5.1 Exception Date/TimesMUSTThe “EXDATE” property can be used to exclude the value specified in “DTSTART”. However, in such cases the original “DTSTART” date MUST still be maintained by the calendaring and scheduling system because the original “DTSTART” value has inherent usage dependencies by other properties such as the “RECURRENCE-ID”.YY
4.8.5.1 Exception Date/TimesMUST NOTthe following are optional, but MUST NOT occur more than once: “VALUE” “=” (“DATETIME” / “DATE”), tzidparamYY
4.8.5.1 Exception Date/TimesMAYthe following is optional, and MAY occur more than once: xparamYY
4.8.5.3 Recurrence Date/TimesMUST NOTthe following are optional, but MUST NOT occur more than once: “VALUE” “=” (“DATETIME” / “DATE” / “PERIOD”), tzidparamYY
4.8.5.3 Recurrence Date/TimesMAYthe following is optional, and MAY occur more than once: xparamYY
4.8.5.4 Recurrence RuleMUSTAny duration associated with the iCalendar object applies to all members of the generated recurrence set. Any modified duration for specific recurrences MUST be explicitly specified using the “RDATE” property.YY
4.8.6.1 ActionMUSTThis property MUST be specified once in a “VALARM” calendar component.YY
4.8.6.3 TriggerMUSTThe value type can be set to a DATE-TIME value type, in which case the value MUST specify a UTC formatted DATE-TIME value.N
4.8.6.3 TriggerMUSTThe trigger relationship property parameter MUST only be specified when the value type is DURATION.NY
4.8.6.3 TriggerMUSTThis property MUST be specified in the “VALARM” calendar component.NY
4.8.6.3 TriggerMUSTIf a value type of DATE-TIME is specified, then the property value MUST be specified in the UTC time format.NN
4.8.6.3 TriggerMUSTIf the trigger is set relative to START, then the “DTSTART” property MUST be present in the associated “VEVENT” or “VTODO” calendar component.NY
4.8.6.3 TriggerMUSTIf an alarm is specified for an event with the trigger set relative to the END, then the “DTEND” property or the “DSTART” and “DURATION” properties MUST be present in the associated “VEVENT” calendar component.NN
4.8.6.3 TriggerMUSTIf the alarm is specified for a to-do with a trigger set relative to the END, then either the “DUE” property or the “DSTART” and “DURATION” properties MUST be present in the associated “VTODO” calendar component.NY
4.8.6.3 TriggerMUST NOTthe following are optional, but MUST NOT occur more than once: “VALUE” “=” “DURATION”, trigrelparamNY
4.8.6.3 TriggerMAYthe following is optional, and MAY occur more than once: xparamNY
4.8.6.3 TriggerREQUIREDthe following is REQUIRED, but MUST NOT occur more than once: “VALUE” “=” “DATETIME”N?
4.8.7.2 Date/Time StampMUSTThis property MUST be included in the “VEVENT”, “VTODO”, “VJOURNAL” or “VFREEBUSY” calendar components.YY
4.8.7.2 Date/Time StampMUSTThe value MUST be specified in the UTC time format.YY
4.8.7.4 Sequence NumberMUSTWhen the “Organizer” makes changes to one of the following properties, the sequence number MUST be incremented: “DTSTART”, “DTEND”, “DUE”, “RDATE”, “RRULE”, “EXDATE”, “EXRULE”, “STATUS”YY
4.8.7.4 Sequence NumberMUSTThe “Organizer” CUA MUST increment the sequence number when ever it makes changes to properties in the calendar component that the “Organizer” deems will jeopardize the validity of the participation status of the “Attendees”.??
4.8.8.2 Request StatusMUST NOTthe following is optional, but MUST NOT occur more than once: languageparmYY
4.8.8.2 Request StatusMAYthe following is optional, and MAY occur more than once: xparamYY
6 Recommended PracticesMUST NOT2. A calendar entry with a “DTSTART” property but no “DTEND” property does not take up any time. It is intended to represent an event that is associated with a given calendar date and time of day, such as an anniversary. Since the event does not take up any time, it MUST NOT be used to record busy time no matter what the value for the “TRANSP” property.YY
6 Recommended PracticesSHOULD4. When the combination of the “RRULE” and “RDATE” properties on an iCalendar object produces multiple instances having the same start date/time, they should be collapsed to, and considered as, a single instance.YY
RFC 2446iCalendar Transport-Independent Interoperability Protocol
Feature SetRequirementConditionV1V2
3.1 Common Component RestrictionsMUSTCALSCALE 0 or 1NN
3.1 Common Component RestrictionsMUSTPRODID MUST appearYY
3.1 Common Component RestrictionsMUSTVERSION MUST be 2.0YY
3.1 Common Component RestrictionsMUSTVTIMEZONE MUST contain specified required valuesYY
3.1 Common Component RestrictionsMUSTVALARM MUST contain specified required valuesYN
3.2.1 VEVENT PUBLISHMUSTMUST contain specified required valuesNY
3.2.1 VEVENT PUBLISHMUSTMUST contain “Organizer”NY
3.2.1 VEVENT PUBLISHMUST NOTMUST NOT contain “Attendees”NY
3.2.2 VEVENT REQUESTMUSTMUST contain specified required valuesYY
3.2.2.1 Rescheduling an EventMUSTMUST contain existing “UID” but incremented “SEQUENCE” or higher “DTSTAMP”YY
3.2.2.2 Updating or Reconfirmation of an EventMUSTMUST contain existing “UID” and current “SEQUENCE”YY
3.2.2.3 Delegating an Event to another CUMUST“Delegator” MUST forward VEVENT REQUEST to “Delegate” showing the “Delegate” as an “Atendee”YN
3.2.2.3 Delegating an Event to another CUMUST“Delegator” MUST send VEVENT REPLY to “Organizer” showing “Deletator’s” “Atendee” parstat as “delegated” plus “delegated-to” valueYN
3.2.2.3 Delegating an Event to another CUMUST“Delegate” MUST send VEVENT REPLY to “Organizer” showing “delegated-from” valueYN
3.2.2.6 Forwarding to An Uninvited CUMAYIf the “Organizer” decides not to add the uninvited CU no further action is required, however the “Organizer” MAY send the uninvited CU a “CANCEL” message.NN
3.2.2.6 Forwarding to An Uninvited CUMUST NOTWhen forwarding a “REQUEST” to another CU, the forwarding “Attendee” MUST NOT make changes to the VEVENT property set.NN
3.2.3 VEVENT REPLYMUST NOTThe optional properties of the original VEVENT REQUEST MUST NOT be changed from those of the original request. If property changes are desired the COUNTER message must be used.YY?
3.2.4 VEVENT ADDMUSTThe “UID” MUST be that of an existing VEVENT.YY
3.2.4 VEVENT ADDSHOULDIf the “UID” property value in the “ADD” is not found on the recipient’s calendar, then the recipient SHOULD send a “REFRESH” to the “Organizer” in order to be updated with the latest version of the “VEVENT”.YY?
3.2.4 VEVENT ADDSHOULDIf an “Attendee” implementation does not support the “ADD” method it should respond with a “REQUEST-STATUS” value of 3.14 and ask for a “REFRESH”.YY
3.2.4 VEVENT CANCELMUSTTo cancel the complete range of recurring event, the “UID” property value for the event MUST be specified and a “RECURRENCE-ID” MUST NOT be specified in the “CANCEL” method.NY
3.2.4 VEVENT CANCELMUSTIn order to cancel an individual instance of the event, the “RECURRENCE-ID” property value for the event MUST be specified in the “CANCEL” method.YY
3.2.4 VEVENT CANCELMUSTCanceling multiple VEVENT instances MUST be done with either “RECURRENCE-ID” and “RANGE” OR multiple “RECURRENCE-ID” values.YY
3.2.4 VEVENT CANCELMUSTWhen a “VEVENT” is cancelled, the “SEQUENCE” property value MUST be incremented.N?Y
3.3 Methods For VFREEBUSY ComponentsMUSTThis document only addresses the transfer of busy time information. Applications desiring free time information MUST infer this from available busy time information.NY
3.3 Methods For VFREEBUSY ComponentsMAYThe busy time information within the iCalendar object MAY be grouped into more than one “VFREEBUSY” calendar component.NN
3.3 Methods For VFREEBUSY ComponentsMAYThe “FREEBUSY” property value MAY include a list of values, separated by the COMMA character ([US-ASCII] decimal 44).NN
3.3 Methods For VFREEBUSY ComponentsMAYAlternately, multiple busy time periods MAY be specified with multiple instances of the “FREEBUSY” property.NN
3.3 Methods For VFREEBUSY ComponentsMUSTBoth forms MUST be supported by implementations conforming to this document.NN
3.3 Methods For VFREEBUSY ComponentsSHOULD NOTDuplicate busy time periods SHOULD NOT be specified in an iCalendar objectNY
3.3 Methods For VFREEBUSY ComponentsMAYHowever, two different busy time periods MAY overlap.NY
3.3 Methods For VFREEBUSY ComponentsSHOULD“FREEBUSY” properties should be sorted such that their values are in ascending order, based on the start time, and then the end time, with the earliest periods first.NY
3.3.1 VFREEBUSY PUBLISHMUSTThe “ATTENDEE” property must be specified in the busy time information. The value is the CU address of the originator of the busy time information.NY
3.3.2 VFREEBUSY `REQUESTSHOULDIf the originator of the “REQUEST” method is not authorized to make a busy time request on the recipient’s calendar system, then an exception message SHOULD be returned in a “REPLY” method, but no busy time data need be returned.NN
3.3.3 VFREEBUSY REPLYMAYThe “REPLY” method may also be used to respond to an unsuccessful “REQUEST” method. Depending on the “REQUEST-STATUS” value, no busy time information may be returned.NN
3.4.1 VTODO PUBLISHMUSTVTODO PUBLISH MUST have an “Organizer”?N
3.4.1 VTODO PUBLISHMUST NOTVTODO PUBLISH MUST NOT have “Attendees”?N
3.4.1 VTODO PUBLISHMAYThe “Organizer” MAY subsequently update (with another “PUBLISH” method), add instances to (with an “ADD” method), or cancel (with a “CANCEL” method) a previously published “VTODO” calendar component.?N
3.4.2 VTODO REQUESTMAYVTODO REQUEST MAY be a new request or a rescheduling of a VTODO depending on the values of the “UID”, “SEQUENCE”, and “DTSTAMP” properties.YN
3.4.2.3 REQUEST for Delegating a VTODOMUST NOTAn “Attendee” of a “VTODO” calendar component MUST NOT delegate to the “Organizer” of the event.YN
3.4.2.3 REQUEST for Delegating a VTODOMUSTThe “Delegator” of a “VTODO” calendar component MUST forward the existing “REQUEST” method for a “VTODO” calendar component to the “Delegate”.YN
3.4.2.3 REQUEST for Delegating a VTODOMUSTThe “VTODO” calendar component description MUST include the “Delegator’s” up-to-date “VTODO” calendar component definition.YN
3.4.2.3 REQUEST for Delegating a VTODOMUSTThe “REQUEST” method MUST also include an “ATTENDEE” property with the calendar address of the “Delegate”.YN
3.4.2.3 REQUEST for Delegating a VTODOMUSTThe “Delegator” MUST also send a “REPLY” method back to the “Organizer” with the “Delegator’s” “Attendee” property “partstat” parameter value set to “DELEGATED”.YN
3.4.2.3 REQUEST for Delegating a VTODOMUSTThe “delegated-to” parameter MUST be included with the calendar address of the “Delegate”.YN
3.4.2.3 REQUEST for Delegating a VTODOSHOULDThe “REPLY” method from the “Delegate” SHOULD include the “ATTENDEE” property with their calendar address and the “delegated-from” parameter with the value of the “Delegator’s” calendar address.YN
3.4.2.3 REQUEST for Delegating a VTODOMUSTThe delegation “REQUEST” method MUST assign a value for the “RSVP” property parameter associated with the “Delegator’s” “Attendee” property to that of the “Delegate’s” “ATTENDEE” property. For example if the “Delegator’s” “ATTENDEE” property specifies “RSVP=TRUE”, then the “Delegate’s” “ATTENDEE” property MUST specify “RSVP=TRUE”.YN
3.4.2.4 REQUEST Forwarded To An Uninvited Calendar UserMAYAn “Attendee” assigned a “VTODO” calendar component may send the “VTODO” calendar component to another new CU, not previously associated with the “VTODO” calendar component.NN
3.4.2.4 REQUEST Forwarded To An Uninvited Calendar UserMAYThe new CU can send a “REPLY” to the “Organizer” of the “VTODO” calendar component.NN
3.4.2.4 REQUEST Forwarded To An Uninvited Calendar UserMAYThe “Organizer” MAY send the CU a “CANCEL” message to indicate that they will not be added to the to-do.NN
3.4.3 VTODO REPLYMUSTWhen used to provide a delegation response, the “Delegator” MUST include the calendar address of the “Delegate” in the “delegated-to” parameter of the “Delegator’s” “ATTENDEE” property.YN
3.4.3 VTODO REPLYMUSTThe “Delegate” MUST include the calendar address of the “Delegator” on the “delegated-from” parameter of the “Delegate’s” “ATTENDEE” property.YN
3.4.3 VTODO REPLYMAYThe “REPLY” method MAY also be used to respond to an unsuccessful “VTODO” calendar component “REQUEST” method.YN
3.4.3 VTODO REPLYMAYThe “Organizer” of a “VTODO” calendar component MAY receive a “REPLY” method from a “Calendar User” not in the original “REQUEST”. This uninvited “Attendee” MAY be accepted, or the “Organizer” MAY cancel the “VTODO” calendar component for the uninvited “Attendee” by sending them a “CANCEL” method.YN
3.4.4 VTODO ADDSHOULDIf the “UID” property value in the “ADD” is not found on the recipient’s calendar, then the recipient SHOULD send a “REFRESH” to the “Organizer” in order to be updated with the latest version of the “VTODO”. If an “Attendee” implementation does not support the “ADD” method it should respond with a “REQUEST-STATUS” value of 5.3 and ask for a “REFRESH”.YN
3.4.5 VTODO CANCELMUSTTo cancel the complete range of a recurring “VTODO” calendar component, the “UID” property value for the “VTODO” calendar component MUST be specified and a “RECURRENCE-ID” MUST NOT be specified in the “CANCEL” method.YN
3.4.5 VTODO CANCELMUSTIn order to cancel an individual instance of a recurring “VTODO” calendar component, the “RECURRENCE-ID” property value for the “VTODO” calendar component MUST be specified in the “CANCEL” method.YN
3.4.5 VTODO CANCELMUSTWhen a “VTODO” is cancelled, the “SEQUENCE” property value MUST be incremented.NN
3.4.6 VTODO REFRESHMAYThe “Organizer” of the “VTODO” calendar component MAY use this method to request an updated status from the “Attendees”.NN
3.4.6 VTODO REFRESHMUSTThe “REFRESH” method MUST specify the “UID” property corresponding to the “VTODO” calendar component needing update.NN
3.4.6 VTODO REFRESHMUSTA refresh of a recurrence instance of a “VTODO” calendar component may be requested by specifying the “RECURRENCE-ID” property corresponding to the associated “VTODO” calendar component. The “Organizer” responds with the latest description and rendition of the “VTODO” calendar component. In most cases this will be a REQUEST unless the “VTODO” has been cancelled, in which case the ORGANIZER MUST send a “CANCEL”. This method is intended to facilitate machine processing of requests for updates to a “VTODO” calendar component.NN
3.4.7 VTODO COUNTERSHOULDThe “Organizer” accepts the counter proposal by sending all of the “Attendees” of the “VTODO” calendar component a “REQUEST” method rescheduling the “VTODO” calendar component. In the latter case, the “Organizer” SHOULD reset the individual “RSVP” property parameter values to TRUE on each “ATTENDEE” property; in order to force a response by the “Attendees”.YN
3.5.1 VJOURNAL PUBLISHMUSTVJOURNAL PUBLISH MUST have an “Organizer”.NN
3.5.1 VJOURNAL PUBLISHMUST NOTVJOURNAL PUBLISH MUST NOT have “Attendees”.NN
3.5.1 VJOURNAL PUBLISHMAYThe “Organizer” MAY subsequently update (with another “PUBLISH” method) or cancel (with a “CANCEL” method) a previously published journal entry.NN
3.5.2 VJOURNAL ADDMAYIf the “UID” property value in the “ADD” is not found on the recipient’s calendar, then the recipient MAY treat the “ADD” as a “PUBLISH”.NN
3.5.3 VJOURNAL CANCELMUSTTo cancel the complete range of a recurring journal entry, the “UID” property value for the journal entry MUST be specified and a “RECURRENCE-ID” property MUST NOT be specified in the “CANCEL” method.NN
3.5.3 VJOURNAL CANCELMUSTIn order to cancel an individual instance of the journal entry, the “RECURRENCE-ID” property value for the journal entry MUST be specified in the “CANCEL” method.NN
3.5.3 VJOURNAL CANCELMUSTWhen a “VJOURNAL” is cancelled, the “SEQUENCE” property value MUST be incremented.NN
3.6 Status RepliesMAYVarious optional responses MAY be added to the various Status Replies to explain the particular Status valueYY
3.7.2 Attendee Property ConsiderationsMUSTThe “ORGANIZER” property is required on published events, to-dos, and journal entries for two reasons. First, only the “Organizer” is allowed to update and redistribute an event or to-do component. It follows that the “ORGANIZER” property MUST be present in the event, to-do, or journal entry component so that the CUA has a basis for authorizing an update. Second, it is prudent to provide a point of contact for anyone who receives a published component in case of problems.YY
3.7.2 Attendee Property ConsiderationsMAYThere are valid <rfc822>> addresses that represent groups. Sending email to such an address results in mail being sent to multiple recipients. Such an address may be used as the value of an “ATTENDEE” property.YY
3.7.2 Attendee Property ConsiderationsMUST

Look for attendees where “TYPE=GROUP” or “TYPE=UNKNOWN”. The CUA then determines if the “Calendar User” is a member of one of these groups. If so, the “REPLY” method sent to the “Organizer” MUST contain a new “ATTENDEE” property in which:

  1. the “type” property parameter is set to INDIVIDUAL

  2. the “member” property parameter is set to the name of the group

NN
5 Application Protocol FallbacksSHOULDApplications that support this memo are not required to support the entire protocol. The following describes how methods and properties SHOULD “fallback” in applications that do not support the complete protocol.YY
RFC 2447iCalendar Message-Based Interoperability Protocol
Feature SetRequirementConditionV1V2
2.2.1 AuthorizationSHOULDImplementations of iMIP SHOULD verify the authenticity of the creator of an iCalendar object before taking any action. The methods for doing this are presented later in this document.YY
2.3 IETF RFC 822 AddressesMUSTThe calendar address specified within the “ATTENDEE” property in an iCalendar object MUST be a fully qualified, IETF RFC 822 address specification for the corresponding “Organizer” or “Attendee” of the “VEVENT” or “VTODO”.YY
2.3 IETF RFC 822 AddressesMUSTThe addresses of “Organizers” or “Attendees” MUST be ascertained by opening the “text/calendar” MIME body part and examining the “ATTENDEE” and “ORGANIZER” properties.YN
2.4 Content TypeMUSTA MIME body part containing content information that conforms to this document MUST have an IETF RFC 2045 “Content-Type” value of text/calendar”.YY
2.4 Content TypeMUSTThe IETF RFC 2045 “Content-Type” header field must also include the type parameter “method”. The value MUST be the same as the value of the “METHOD” calendar property within the iCalendar object. This means that a MIME message containing multiple iCalendar objects with different method values must be further encapsulated with a “multipart/mixed” MIME entity. This will allow each of the iCalendar objects to be encapsulated within their own “text/calendar” MIME entity.YY
2.4 Content TypeMUSTA “charset” parameter MUST be present if the iCalendar object contains characters that are not part of the US-ASCII character set. IETF RFC 2046 discusses the selection of an appropriate “charset” value.YY
2.4 Content TypeSHOULDIn order to permit the information in the scheduling message to be understood by MIME user agents (UA) that do not support the “text/calendar” content type, scheduling messages SHOULD be sent with an alternative, human-readable form of the information.YY
2.5 Content-Transfer-EncodingSHOULDA transfer encoding SHOULD be used for iCalendar objects containing any characters that are not part of the US-ASCII character set.YY
2.6 Content-DispositionSHOULDThe handling of a MIME part should be based on its IETF RFC 2045 “Content-Type”. However, this is not guaranteed to work in all environments. Some environments handle MIME attachments based on their file type or extension. To operate correctly in these environments, implementations may wish to include a “Content-Disposition” property to define a file name.YY
3 Security ConsiderationsMUSTCompliant applications MUST support signing and encrypting text/calendar attachments using a mechanism based on Security Multiparts for MIME IETF RFC 1847 to facilitate the authentication the originator of the iCalendar object.NN
3 Security ConsiderationsMAYImplementations MAY provide a means for users to disable signing and encrypting.NN
3 Security ConsiderationsMUST1. The iCalendar object MUST be signed by the “Organizer” sending an update or the “Attendee” sending a reply.NN
3 Security ConsiderationsSHOULDTo address the confidentiality security threats, signed iMIP messages SHOULD be encrypted by a mechanism based on Security Multiparts for MIME IETF RFC 1847.NN
3 Security ConsiderationsMUSTImplementations MUST provide mechanisms for the “Calendar Users” to make that decision before applying changes from someone working on behalf of a “Calendar User”.NN

Bibliography

[1]  IETF RFC 1738, T. BERNERS-LEE, L. MASINTER and M. MCCAHILL. Uniform Resource Locators (URL). 1994. RFC Publisher. https://www.rfc-editor.org/info/rfc1738.

[2]  IETF RFC 822, D. CROCKER. STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES. 1982. RFC Publisher. https://www.rfc-editor.org/info/rfc822.

[3]  IETF RFC 1847, J. GALVIN, S. MURPHY, S. CROCKER and N. FREED. Security Multiparts for MIME: Multipart/Signed and Multipart/Encrypted. 1995. RFC Publisher. https://www.rfc-editor.org/info/rfc1847.

[4]  IETF RFC 2045, N. FREED and N. BORENSTEIN. Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies. 1996. RFC Publisher. https://www.rfc-editor.org/info/rfc2045.

[5]  IETF RFC 2046, N. FREED and N. BORENSTEIN. Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. 1996. RFC Publisher. https://www.rfc-editor.org/info/rfc2046.

[6]  ISO 9070, International Organization for Standardization. Information processing — SGML support facilities — Registration procedures for public text owner identifiers. First edition. Geneva. https://www.iso.org/standard/16644.html.