This specification modifies the definition of the "UID" property to allow it to be defined in an iCalendar object. The following additions are made to the definition of this property, originally specified in Section 18.104.22.168 of [RFC5545].
This property specifies the persistent, globally unique identifier for the iCalendar object. This can be used, for example, to identify duplicate calendar streams that a client may have been given access to. It can be used in conjunction with the "LAST-MODIFIED" property also specified on the "VCALENDAR" object to identify the most recent version of a calendar.
This property can be specified once in an iCalendar object.
The description of the "UID" property in [RFC5545] contains some recommendations on how the value can be constructed. In particular, it suggests use of host names, IP addresses, and domain names to construct the value. However, this is no longer considered good practice, particularly from a security and privacy standpoint, since use of such values can leak key information about a calendar user or their client and network environment. This specification updates [RFC5545] by stating that "UID" values MUST NOT include any data that might identify a user, host, domain, or any other security- or privacy-sensitive information. It is RECOMMENDED that calendar user agents now generate "UID" values that are hex-encoded random Universally Unique Identifier (UUID) values as defined in Sections 4.4 and 4.5 of [RFC4122].
The following is an example of such a property value:
Additionally, if calendar user agents choose to use other forms of opaque identifiers for the "UID" value, they MUST have a length less than 255 octets and MUST conform to the "iana-token" ABNF syntax defined in Section 3.1 of [RFC5545].