Internet DRAFT - draft-ietf-calext-icalendar-jscalendar-extensions

draft-ietf-calext-icalendar-jscalendar-extensions







Calendaring Extensions                                       R. Stepanek
Internet-Draft                                                  FastMail
Intended status: Standards Track                             M. Douglass
Expires: 12 January 2023                                             BCS
                                                            11 July 2022


               iCalendar Format Extension for JSCalendar
          draft-ietf-calext-icalendar-jscalendar-extensions-00

Abstract

   This document defines a set of new properties for iCalendar and
   extends the use of existing ones.  Their primary purpose is to align
   the same set of features between the JSCalendar and iCalendar
   formats, but the new definitions also aim to be useful within just
   the iCalendar format.

Status of This Memo

   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 12 January 2023.

Copyright Notice

   Copyright (c) 2022 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.



Stepanek & Douglass      Expires 12 January 2023                [Page 1]

Internet-Draft       iCalendar JSCalendar Extensions           July 2022


Table of Contents

   1.  Preface . . . . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     2.1.  Requirements Language . . . . . . . . . . . . . . . . . .   2
   3.  New Properties  . . . . . . . . . . . . . . . . . . . . . . .   3
     3.1.  COMP-ID Property  . . . . . . . . . . . . . . . . . . . .   3
     3.2.  SHOW-WITHOUT-TIME Property  . . . . . . . . . . . . . . .   4
   4.  Updated Properties  . . . . . . . . . . . . . . . . . . . . .   4
     4.1.  GEO Property  . . . . . . . . . . . . . . . . . . . . . .   5
   5.  New Parameters  . . . . . . . . . . . . . . . . . . . . . . .   5
     5.1.  CONTENT-ID Parameter  . . . . . . . . . . . . . . . . . .   5
     5.2.  INVITED-BY Parameter  . . . . . . . . . . . . . . . . . .   6
     5.3.  LINK-REL Parameter  . . . . . . . . . . . . . . . . . . .   6
     5.4.  PROP-ID Parameter . . . . . . . . . . . . . . . . . . . .   7
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   7
   7.  Security Considerations . . . . . . . . . . . . . . . . . . .   7
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   7
     8.1.  Normative References  . . . . . . . . . . . . . . . . . .   7
     8.2.  Informative References  . . . . . . . . . . . . . . . . .   8
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   8

1.  Preface

   This document is a work in progress.  The list of new or updated
   properties and parameters is likely to be incomplete.  This section
   is removed from the document before publication.

2.  Introduction

   The JSCalendar [RFC8984] format aims to be an alternative to the
   iCalendar [RFC5545] format for representation of calendar data.  As
   such, it introduces new semantics that are not covered in the current
   definition of iCalendar and its extensions.  Converting calendar data
   between the two formats is defined in [ref-jscalendar-icalendar] with
   the goal of not loosing any semantics during conversion.  In order to
   do so, this document defines a new set of properties for iCalendar
   and extends existing definitions.

2.1.  Requirements Language

   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 BCP
   14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.





Stepanek & Douglass      Expires 12 January 2023                [Page 2]

Internet-Draft       iCalendar JSCalendar Extensions           July 2022


3.  New Properties

3.1.  COMP-ID Property

   Property name:  COMP-ID

   Purpose:  This property uniquely identifies a component among all its
      siblings of the same type.

   Value type:  TEXT, also see Format Definition for value restrictions.

   Conformance:  The property can be specified once in a calendar
      component.

   Property parameters:  IANA and non-standard property parameters can
      be specified on this property.

   Description:  A calendar component may embed multiple components of
      the same type.  For example, a VEVENT component may embed multiple
      VALARM components.  To distinguish these VALARMs among all global
      instances of VALARM calendar components, an application may choose
      to assign a uniquely global UID to each of them.  However, some
      applications or formats such as JSCalendar, do not require
      globally uniqueness.  Instead, they only require uniqueness among
      all instances of calendar components within one parent component.
      This is what the COMP-ID property is for.

      The COMP-ID property identifies a component among all of its
      siblings of the same type.  A valid COMP-ID value must be of 1 and
      a maximum of 255 octets in size, and it MUST only contain the
      ASCII alphanumeric characters (A-Za-z0-9), hyphen (-), and
      underscore (_).  The identifier only has the purpose to uniquely
      identify siblings, its value has no other meaning.  If an
      application makes use of COMP-ID it SHOULD assign a unique
      identifier to each sibling component of the same type within their
      parent component.  The same identifier MAY be used for components
      of a different type, and it MAY also be assigned to a same-typed
      component that is not a sibling.

      Resolving duplicate identifier conflicts is specific to the
      application.  Similarly, handling components where some but not
      all siblings have a COMP-ID is assigned, is application-specific.

   Format definition:  This property is defined by the following
      notation:






Stepanek & Douglass      Expires 12 January 2023                [Page 3]

Internet-Draft       iCalendar JSCalendar Extensions           July 2022


      comp-id  = "COMP-ID" comp-id-param ":" comp-id-value CRLF

      comp-id-value  = 1*255(ALPHA / DIGIT / "-"/ "_")

      comp-id-param  = *(";" other-param)

   Example(s):
      COMP-ID:m2398

3.2.  SHOW-WITHOUT-TIME Property

   Property name:  SHOW-WITHOUT-TIME

   Purpose:  This property indicates if an event or task should be
      displayed with time information.

   Value type:  BOOLEAN

   Conformance:  The property can be specified once in the VEVENT, VTODO
      or VJOURNAL calendar components.

   Property parameters:  IANA and non-standard property parameters can
      be specified on this property.

   Description:  This indicates that the time is not important to
      display to the user when rendering this calendar object.  An
      example of this is an event that conceptually occurs all day or
      across multiple days, such as "New Year's Day" or "Italy
      Vacation".  While the time component is important for free-busy
      calculations and checking for scheduling clashes, calendars may
      choose to omit displaying it and/or display the object separately
      to other objects to enhance the user's view of their schedule.

   Format definition:  This property is defined by the following
      notation:

      show-without-time  = "SHOW-WITHOUT-TIME" show-without-time-param
                           ":" boolean CRLF

      show-without-time-param  = *(";" other-param)

   Example(s):
      SHOW-WITHOUT-TIME:TRUE

4.  Updated Properties






Stepanek & Douglass      Expires 12 January 2023                [Page 4]

Internet-Draft       iCalendar JSCalendar Extensions           July 2022


4.1.  GEO Property

   This specification modifies the definition of the GEO property to
   allow storing spatial positions in form of URIs using the geo: scheme
   [RFC5870].  The following additions are made to the definition of
   this property, original specified in Section 3.8.1.6 of [RFC5545].

   Value type:  The default value type is FLOAT, where the value MUST be
      two SEMICOLON-separated FLOAT values.  The value type can also be
      set to URI to indicate geo: encoded coordinates.

   Property parameters:  VALUE

   Description:  When the property value is a URI in the geo: scheme,
      then the VALUE property parameter MUST be set to URI.

   Format definition:  This property is defined by the following
      notation:

      geo   = "GEO" geoparam ( ":" geovalue ) /
                             (
                               ";" "VALUE" "=" "URI"
                               ":"  uri ; uri MUST be in the geo: scheme
                             )
                             CRLF

      geoparam   = *(";" other-param)

      geovalue   = float ";" float
             ;Latitude and Longitude components

   Example(s):
      GEO:37.386013;-122.082932
      GEO;VALUE=URI:geo:48.198634,16.371648;crs=wgs84;u=40

5.  New Parameters

5.1.  CONTENT-ID Parameter

   Parameter name:  CONTENT-ID

   Purpose:  This parameter identifies an attachment contents for use
      with styled descriptions.

   Format definition:
      cid-param  = "CONTENT-ID" "=" DQUOTE uri DQUOTE
                     ; uri must be a cid-url defined in RFC 8288




Stepanek & Douglass      Expires 12 January 2023                [Page 5]

Internet-Draft       iCalendar JSCalendar Extensions           July 2022


   Description:  This parameter MAY be set on an "ATTACH" or "IMAGE"
      property.  It assigns the property an identifier that MUST be
      unique within the calendar component.  A calendar component MAY
      include a STYLED-DESCRIPTION property as specified in Section 6.5
      of [RFC9073], and MAY contain HTML text.  URLs in the "cid:"
      scheme referred to by images and other data within that HTML
      description can be resolved to calendar component attachments
      having that content-id.

   Example(s):
      IMAGE;CONTENT-ID="cid:foo@bar.net":
       data:image/jpeg;base64,SGVsbG8sIFdvcmxk..

      STYLED-DESCRIPTION;VALUE=TEXT;FMTTYPE=text/html:
        <html><body><img src="cid:foo@bar.net" alt="foo"/></body></html>

5.2.  INVITED-BY Parameter

   Parameter name:  INVITED-BY

   Purpose:  This parameter specifies which calendar address user
      invited another.

   Format definition:
      inviteby-param  = "INVITED-BY" "=" DQUOTE cal-address DQUOTE

   Description:  This parameter MAY be set on an "ATTENDEE" property,
      specified in Section 3.8.4.1 of [RFC5545].  If set, it identifies
      the participant that invited the calendar user represented by the
      ATTENDEE property to the calendar component.

   Example(s):
      ATTENDEE;INVITED-BY="inviter@example.com":invitee@example.com

5.3.  LINK-REL Parameter

   Parameter name:  LINK-REL

   Purpose:  This parameter defines how an attachment relates to
      calendar component.

   Format definition:
      linkrel-param  = "LINK-REL" "=" paramtext
                         ; one of Link Relation Types registered in
                         ; the IANA Link Relations Registry (RFC 8288)

   Description:  This parameter MAY be set on an "ATTACH" or "IMAGE"




Stepanek & Douglass      Expires 12 January 2023                [Page 6]

Internet-Draft       iCalendar JSCalendar Extensions           July 2022


      property.  It indicates how the contents of the attachment or
      image relate to the calendar component this property is part of.
      For the list of available relations, see the Link Relation Types
      in the IANA Link Relations Registry [RFC8288].

   Example(s):
      ATTACH;LINK-REL=payment:https://example.com/donate

5.4.  PROP-ID Parameter

   Parameter name:  PROP-ID

   Purpose:  This parameter identifies a property among all its siblings
      of the same type.

   Format definition:
      prop-id-param  = "PROP-ID" "=" 1*255(ALPHA / DIGIT / "-"/ "_")

   Description:  This parameter uniquely identifies a property among all
      of its siblings with the same name within a calendar component.  A
      valid PROP-ID value must be of 1 and a maximum of 255 octets in
      size, and it MUST only contain the ASCII alphanumeric characters
      (A-Za-z0-9), hyphen (-), and underscore (_).  The identifier only
      has the purpose to uniquely identify siblings, its value has no
      other meaning.  If an application makes use of PROP-ID it SHOULD
      assign a unique identifier to each sibling property of the same
      name within their embedding component.  The same identifier MAY be
      used for properties of a different name, and it MAY also be
      assigned to a same-named property that is not a sibling.

      Resolving duplicate identifier conflicts is specific to the
      application.  Similarly, handling properties where some but not
      all siblings have a PROP-ID is assigned, is application-specific.

   Example(s):
      ATTACH;PROP-ID=a983:https://example.com/something

6.  IANA Considerations

   This section will be filled at a later stage.

7.  Security Considerations

   This section will be filled at a later stage.

8.  References

8.1.  Normative References



Stepanek & Douglass      Expires 12 January 2023                [Page 7]

Internet-Draft       iCalendar JSCalendar Extensions           July 2022


   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC5545]  Desruisseaux, B., Ed., "Internet Calendaring and
              Scheduling Core Object Specification (iCalendar)",
              RFC 5545, DOI 10.17487/RFC5545, September 2009,
              <https://www.rfc-editor.org/info/rfc5545>.

   [RFC5870]  Mayrhofer, A. and C. Spanring, "A Uniform Resource
              Identifier for Geographic Locations ('geo' URI)",
              RFC 5870, DOI 10.17487/RFC5870, June 2010,
              <https://www.rfc-editor.org/info/rfc5870>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

   [RFC8288]  Nottingham, M., "Web Linking", RFC 8288,
              DOI 10.17487/RFC8288, October 2017,
              <https://www.rfc-editor.org/info/rfc8288>.

   [RFC8984]  Jenkins, N. and R. Stepanek, "JSCalendar: A JSON
              Representation of Calendar Data", RFC 8984,
              DOI 10.17487/RFC8984, July 2021,
              <https://www.rfc-editor.org/info/rfc8984>.

   [RFC9073]  Douglass, M., "Event Publishing Extensions to iCalendar",
              RFC 9073, DOI 10.17487/RFC9073, August 2021,
              <https://www.rfc-editor.org/info/rfc9073>.

8.2.  Informative References

   [ref-jscalendar-icalendar]
              "JSCalendar: Converting from and to iCalendar",
              <https://datatracker.ietf.org/doc/draft-ietf-calext-
              jscalendar-icalendar/>.

Authors' Addresses

   Robert Stepanek
   FastMail
   PO Box 234, Collins St West
   Melbourne  VIC 8007
   Australia
   Email: rsto@fastmailteam.com




Stepanek & Douglass      Expires 12 January 2023                [Page 8]

Internet-Draft       iCalendar JSCalendar Extensions           July 2022


   Michael Douglass
   Bedework Commercial Services
   226 3rd Street
   Troy, NY 12180
   United States of America
   Email: mdouglass@bedework.com
   URI:   http://bedework.com












































Stepanek & Douglass      Expires 12 January 2023                [Page 9]