Internet-Draft | iTip participants | December 2024 |
Douglass | Expires 4 June 2025 | [Page] |
This specification defines updates to RFC5546 iTip which allow scheduling using the "PARTICIPANT" calendar components specified in RFC9073.¶
New properties are also defined for use within the "PARTICIPANT" calendar component.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 4 June 2025.¶
Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
This specification details how the "PARTICIPANT" calendar component introduced in [RFC9073] may be used for scheduling in place of [RFC5545] "ATTENDEE" and "ORGANIZER" properties. Additionally, some properties are defined in this specification to be used within the "PARTICIPANT" calendar component.¶
For "VEVENT", "VTODO", "VFREEBUSY", and "VAVAILABILITY" calendar components; the "ORGANIZER" and "ATTENDEE" properties MUST be supplied as specified in [RFC5546]. For new components such as the "VPOLL" calendar component, defined elsewhere, only "PARTICIPANT" calendar components MUST be used. A participant object that takes part in group scheduling MUST have the following characteristics:¶
Scheduling with "PARTICIPANT" calendar components behaves exactly as with "ATTENDEE" and "ORGANIZER" properties. When iTip specifies the setting of "ATTENDEE" or "ORGANIZER" property parameters then the appropriate properties will be set within the "PARTICIPANT" calendar component.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].¶
The notation used in this memo to (re-)define iCalendar elements is the ABNF notation of [RFC5234] as used by [RFC5545]. Any syntax elements shown below that are not explicitly defined in this specification come from iCalendar [RFC5545].¶
Additionally, the following terms are used:¶
Represents an agent that takes part in scheduling or publishing. A participant may be a human, for example an attendee, or a resource, for example a conference room.¶
REPLY-URL¶
This property may be used in scheduling messages to indicate additional reply methods, for example a web-service.¶
URI¶
Non-standard, required or iana parameters can be specified on this property.¶
This property MAY be specified once in any schedulable component.¶
When used in a scheduling message this property indicates an additional or required service that can be used to reply. Typically, this would be a web service of some form.¶
When the "REQUIRED" property parameter is absent then this property provides an alternative to standard iTip based scheduling.¶
When the "REQUIRED" property parameter is present then this property provides the only mechanism by which participants can reply. This allows the implementation of a web-based service without the ability to accept incoming mail for example.¶
This property is defined by the following notation:¶
reply-url = "REPLY-URL" reply-urlparams ":" uri CRLF reply-urlparams = *( (";" requiredparam) / (";" other-param) )¶
This specification redefines the "PARTICIPANT-TYPE" property allowing it to take multiple values and extending those values to align with [RFC8984] roles. There are also changes to the description to clarify its use defining the roles that participant takes.¶
PARTICIPANT-TYPE¶
The value type for this property is TEXT. The allowable values are defined below.¶
Non-standard or iana parameters can be specified on this property.¶
This property MUST be specified once within a "PARTICIPANT" calendar component.¶
This property defines the type of participation, that is the roles the participant takes.
¶
Note that the kind of participant, for example individual or group, is defined in the "KIND" property specified here.¶
Some of the roles are required for the participant to be a "schedulable" object. These are the roles that are shown below.¶
This property is defined by the following notation:¶
participanttype = "PARTICIPANT-TYPE" partvalueparam ":" partvalue *("," partvalue) CRLF partvalue = ("OWNER" / "ATTENDEE" / "OPTIONAL" / "INFORMATIONAL" / "CHAIR" / "ACTIVE" / "INACTIVE" / "SPONSOR" / "CONTACT" / "BOOKING-CONTACT" / "EMERGENCY-CONTACT" / "PUBLICITY-CONTACT" / "PLANNER-CONTACT" / "PERFORMER" / "SPEAKER" / iana-token) ; Other IANA-registered ; values partvalueparam = *(";" other-param)¶
To map [RFC5545] "ROLE" property parameter values to "PARTICIPANT-TYPE" property values use the following.¶
RFC5545 ROLE | PARTICIPANT-TYPE |
---|---|
CHAIR¶ |
CHAIR¶ |
REQ-PARTICIPANT¶ |
ATTENDEE¶ |
OPT-PARTICIPANT¶ |
OPTIONAL¶ |
NON-PARTICIPANT¶ |
INFORMATIONAL¶ |
The following table shows those roles that MUST appear in the "PARTICIPANT-TYPE" property for group-scheduling. Additionally, the mapping for "PARTICIPANT-TYPE" property values to [RFC5545] values are shown.¶
The following properties are defined to be used within the "PARTICIPANT" calendar component during scheduling and take the place of "ATTENDEE" and "ORGANIZER" properties and parameters.¶
KIND¶
This is what kind of entity this participant is, if known.¶
Non-standard or iana parameters can be specified on this property.¶
This property MAY be specified in a "PARTICIPANT" calendar component.¶
When used in a "PARTICIPANT" calendar component this property indicates the kind of entity, individual, group etc.
¶
This property is defined by the following notation:¶
kind = "KIND" kindparams ":" "INDIVIDUAL" ; An individual / "GROUP" ; A group of individuals / "RESOURCE" ; A physical resource / "LOCATION" ; A location resource e.g a room / iana-token CRLF kindparams = *(";" other-param)¶
PARTICIPATION-STATUS¶
This property is used in the "PARTICIPANT" calendar component to indicate the participation status - if any.¶
Non-standard or iana parameters can be specified on this property.¶
This property MAY be specified in a "PARTICIPANT" calendar component.¶
When used in a "PARTICIPANT" calendar component this property indicates what status, if any, the participant has.
¶
This property is defined by the following notation:¶
participation-status = "PARTICIPATION-STATUS" participation-statusparams ":" NEEDS-ACTION / ; No status ; has yet been set by the participant. ACCEPTED / ; The invited ; participant will participate. DECLINED / ; The invited ; participant will not participate. TENTATIVE / ; The invited participant ; may participate. DELEGATED / ; The invited participant ; has delegated their attendance to ; another participant, as specified ; in the PARTICIPATION-DELEGATED-TO property. COMPLETED / ; The assigned task is ; completed. IN-PROCESS / ; The assigned task is ; being worked on. iana-token ("," iana-token) CRLF participation-statusparams = *(";" other-param)¶
PARTICIPATION-DELEGATED-FROM¶
This property is used in the "PARTICIPANT" calendar component to indicate who has delegated their participation to this participant.¶
Non-standard or iana parameters can be specified on this property.¶
This property MAY be specified in a "PARTICIPANT" calendar component 0 or more times.¶
This property specifies a calendar user that has delegated their participation in a group-scheduled component to the calendar user specified by the component.¶
This property is defined by the following notation:¶
participation-delfrom = "PARTICIPATION-DELEGATED-FROM" participation-delfromparams ":" CAL-ADDRESS iana-token ("," iana-token) CRLF participation-delfromparams = *(";" other-param)¶
PARTICIPATION-DELEGATED-TO¶
To specify the calendar user to whom the calendar user specified by the component has delegated participation.¶
Non-standard or iana parameters can be specified on this property.¶
This property MAY be specified in a "PARTICIPANT" calendar component 0 or more times.¶
This property specifies the calendar user that has been delegated participation in a group-scheduled component by the calendar user specified by the component.¶
This property is defined by the following notation:¶
participation-delto = "PARTICIPATION-DELEGATED-TO" participation-deltoparams ":" CAL-ADDRESS iana-token ("," iana-token) CRLF participation-deltoparams = *(";" other-param)¶
MEMBER-OF¶
To specify the group or list membership of the calendar user specified by the component.¶
Non-standard or iana parameters can be specified on this property.¶
This property MAY be specified in a "PARTICIPANT" calendar component 0 or more times.¶
This property identifies the group or list membership for the calendar user specified by the component.¶
This property is defined by the following notation:¶
member-of = "MEMBER-OF" member-ogparams ":" CAL-ADDRESS iana-token ("," iana-token) CRLF memberofparams = *(";" other-param)¶
EXPECT-REPLY¶
If true, the organizer is expecting the participant to notify them of their participation status.¶
Non-standard or iana parameters can be specified on this property.¶
This property MAY be specified once in the "PARTICIPANT" calendar component.¶
This property is defined by the following notation:¶
expect-reply = "EXPECT-REPLY" expect-replyparams ":" ( "TRUE" / "FALSE") CRLF expect-replyparams = *(";" other-param)¶
SCHEDULING-AGENT¶
This is who is responsible for sending scheduling messages with this calendar object to the participant.¶
Non-standard or iana parameters can be specified on this property.¶
This property MAY be specified once in the "PARTICIPANT" calendar component.¶
This property is defined by the following notation:¶
scheduling-agent = "SCHEDULING-AGENT" scheduling-agentparams ":" ( "SERVER" / "CLIENT" / "NONE") CRLF scheduling-agentparams = *(";" other-param)¶
The value MUST be one of the following values from the registry defined in Section 12.4.1 of [RFC6638], or a vendor-specific value.¶
SCHEDULING-FORCE-SEND¶
A client may set the property on a participant to true to request that the server send a scheduling message to the participant when it would not normally do so (e.g., if no significant change is made the object or the scheduleAgent is set to client). The property MUST NOT be stored in the object on the server or appear in a scheduling message.¶
Non-standard or iana parameters can be specified on this property.¶
This property MAY be specified once in the "PARTICIPANT" calendar component.¶
This property is defined by the following notation:¶
scheduling-force-send = "SCHEDULING-FORCE-SEND" scheduling-force-sendparams ":" ( "TRUE" / "FALSE") CRLF scheduling-force-sendparams = *(";" other-param)¶
This property MAY be specified in "PARTICIPANT" calendar components for which the "SCHEDULE-AGENT" property is set to the value "SERVER" or is absent. This property is used to force a server to send a scheduling message to a specific calendar user in situations where the server would not send a scheduling message otherwise (e.g., when no change that warrants the delivery of a new scheduling message was performed on the scheduling object resource). An "Owner" MAY specify this property for a PARTICIPANT with the value "REQUEST" to force a "REQUEST" scheduling message to be sent to the user.¶
Participants who are not the "Owner" MAY specify this property in the "Owner" PARTICIPANT with the value "REPLY" to force a "REPLY" scheduling message to be sent to the "Owner".¶
Servers MUST NOT preserve this property in scheduling object resources, nor include it in any scheduling messages sent as the result of a scheduling operation.¶
Clients MUST NOT include this property in any scheduling messages that they themselves send.¶
Servers MUST set the "SCHEDULING-STATUS" property of the participant to 2.5 (i.e., "Success; unknown, non-standard property value ignored."; see Section 3.6.6 of [RFC5546]) when the "SCHEDULE-FORCE-SEND" property is set to an iana-token value they do not recognize.¶
SCHEDULING-STATUS¶
This is a list of status codes, returned from the processing of the most recent scheduling message sent to this participant. The status codes MUST be valid statcode values as defined in the ABNF in Section 3.8.8.3 of [RFC5545].¶
Servers MUST only add or change this property when they send a scheduling message to the participant. Clients SHOULD NOT change or remove this property if it was provided by the server. Clients MAY add, change, or remove the property for participants where the client is handling the scheduling.This property MUST NOT be included in scheduling messages.¶
Non-standard or iana parameters can be specified on this property.¶
This property MAY be specified in any appropriate component.¶
This property is defined by the following notation:¶
scheduling-status = "SCHEDULING-STATUS" scheduling-statusparams ":" TEXT CRLF scheduling-statusparams = *(";" other-param)¶
SCHEDULING-DTSTAMP¶
This is the timestamp for the most recent response from this participant.¶
This is the updated property of the last response when using iTIP. It can be compared to the updated property in future responses to detect and discard older responses delivered out of order.¶
Non-standard or iana parameters can be specified on this property.¶
This property MAY be specified in any appropriate component.¶
This property is defined by the following notation:¶
scheduling-dtstamp = "SCHEDULING-DTSTAMP" scheduling-dtstampparams ":" DATE-TIME CRLF scheduling-dtstampparams = *(";" other-param)¶
INVITED-BY¶
This is the calendar address of the participant who added this participant to the entity, if known.¶
Non-standard or iana parameters can be specified on this property.¶
This property MAY be specified in any appropriate component.¶
This property is defined by the following notation:¶
invited-by = "INVITED-BY" invited-byparams ":" CAL-ADDRESS CRLF invited-byparams = *(";" other-param)¶
Parameter | iCalendar PARTICIPANT |
---|---|
CN¶ |
|
CUTYPE¶ |
KIND (defined here)¶ |
DELEGATED-FROM¶ |
PARTICIPATION-DELEGATED-FROM Section 4.3¶ |
DELEGATED-TO¶ |
PARTICIPATION-DELEGATED-TO (defined here)¶ |
DIR¶ |
|
LANGUAGE¶ |
LANG (defined here)¶ |
MEMBER¶ |
MEMBER-OF (defined here)¶ |
PARTSTAT¶ |
PARTICIPATION-STATUS (defined here)¶ |
ROLE¶ |
PARTICIPATION-TYPE (updated here)¶ |
RSVP¶ |
EXPECT-REPLY (defined here)¶ |
SENT-BY¶ |
This document defines the following new iCalendar property parameters to be added to the registry defined in Section 8.2.4 of [RFC5545]:¶
This document defines the following new iCalendar properties to be added to the registry defined in Section 8.2.3 of [RFC5545]:¶
Property | Status | Reference |
---|---|---|
EXPECT-REPLY¶ |
Current¶ |
|
INVITED-BY¶ |
Current¶ |
|
KIND¶ |
Current¶ |
|
LANG¶ |
Current¶ |
|
MEMBER-OF¶ |
Current¶ |
|
PARTICIPATION-DELEGATED-FROM¶ |
Current¶ |
|
PARTICIPATION-DELEGATED-TO¶ |
Current¶ |
|
PARTICIPATION-STATUS¶ |
Current¶ |
|
REPLY-URL¶ |
Current¶ |
|
SCHEDULING-AGENT¶ |
Current¶ |
|
SCHEDULING-DTSTAMP¶ |
Current¶ |
|
SCHEDULING-FORCE-SEND¶ |
Current¶ |
|
SCHEDULING-STATUS¶ |
Current¶ |
This updates the participant types registry defined in Section 11.2.1 of [RFC9073]¶
Participant Type | Status | Reference |
---|---|---|
OWNER¶ |
Current¶ |
RFC8984 Section 4.4.6 of [RFC8984]¶ |
ATTENDEE¶ |
Current¶ |
RFC8984 Section 4.4.6 of [RFC8984]¶ |
OPTIONAL¶ |
Current¶ |
RFC8984 Section 4.4.6 of [RFC8984]¶ |
INFORMATIONAL¶ |
Current¶ |
RFC8984 Section 4.4.6 of [RFC8984]¶ |
CHAIR¶ |
Current¶ |
RFC8984 Section 4.4.6 of [RFC8984]¶ |
The authors would like to thank the members of the Calendaring and Scheduling Consortium (CalConnect) for contributing their ideas and support.¶