Calendar Working Group                                   Derik Stenerson
INTERNET DRAFT                                                  Alec Dun
draft-ietf-calsch-sch-00.txt                                   Microsoft
Expires May 30, 1997                                   November 25, 1996


                 MIME application/calendar Content Type


Status of this Memo

  This document is an Internet-Draft. Internet-Drafts are working
  documents of the Internet Engineering Task Force (IETF), its areas,
  and its working groups. Note that other groups may also distribute
  working documents as Internet-Drafts.

  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."

  To learn the current status of any Internet-Draft, please check the
  "1id-abstracts.txt" listing contained in the Internet- Drafts Shadow
  Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
  munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
  ftp.isi.edu (US West Coast).


Abstract

  This document defines a MIME message format for openly scheduling
  meetings with others across the Internet. This definition is
  independent of any particular scheduling application. A new MIME
  Content-Type "APPLICATION/CALENDAR" is defined to contain scheduling
  data, including appointments, appointment requests for single events,
  appointment requests for recurring events, appointment responses.  The
  scope of this revision of the draft is the MIME format for meeting
  requests and responses. This the "on the wire" format; no attempt is
  made to define the storage format for the calendar information.











Stenerson                                           [Page 1]


Internet-Draft                                      11/25/96



Table of Contents
1. Overview............................................................3
 1.1 Introduction .....................................................3
 1.2 Scope ............................................................3
 1.3 Appointment request/reply semantics ..............................4
2. Application/Calendar content type...................................5
 2.1 Purpose, inheritance .............................................5
 2.2 Registration .....................................................5
 2.3 General usage, issues, restrictions ..............................7
3. Appointment Requests................................................9
 3.1 Description ......................................................9
 3.2 Properties .......................................................9
 3.3 Usage Specifics .................................................28
 3.4 General Examples ................................................39
4. Appointment Responses..............................................42
 4.1 Description .....................................................43
 4.2 Properties ......................................................43
 4.3 Examples ........................................................44
5. Acknowledgements...................................................45
6. Author's Addresses.................................................46




























Stenerson                                           [Page 2]


Internet-Draft                                      11/25/96



1. Overview

1.1 Introduction

  With the recent explosion in Personal Information Management and
  electronic mail based Group Scheduling software, there is a clear and
  present need for a standard means for such software to inter-operate
  across the Internet. Individuals and groups in all parts of the world
  need to be able to communicate schedule information and arrange
  meetings with one another in order to conduct business. Given the ties
  to messaging that exist in the arena of group communication and
  scheduling, the MIME [RFC-1521] message format and its extensible
  architecture is an obvious choice for an infrastructure to base a
  means for transporting calendaring data across the Internet.

  This document defines a standard for using a new MIME Content-Type
  "application/calendar" to encapsulate meeting request and response
  data in a textual format.

  The "application/calendar" Content-Type defines a general framework
  and format for holding calendaring information in a simple "type:
  value" format. This format and value datatype definitions are based on
  the "application/directory" specification as defined in [MIME-DIR].
  Mechanisms are included to specify alternate character set, language,
  encoding and other meta-information. This document also  defines the
  procedure by which particular application/calendar Content-Type
  formats, called profiles, may be defined and registered, and the
  conventions such formats must follow. These profiles will be used to
  help applications processing the data to interpret it correctly. For
  example, profile will be used to define an appointment request and
  another will define an appointment response. It is expected that other
  documents will be produced that define formats for various
  applications.

1.2 Scope

  The scope of this draft is the base definition of the
  application/calendar MIME Content-Type, the definition of the profile
  format for appointment requests and responses, and to discuss the
  issues surrounding these concepts. This the "on the wire" format. No
  attempt is made to outline the storage format for the calendar
  information, the features that a scheduling application should
  support, nor any of the user interface characteristics of such
  calendaring and scheduling applications.




Stenerson                                           [Page 3]


Internet-Draft                                      11/25/96


1.3 Appointment request/reply semantics

1.3.1 Appointment Request

  An appointment is a collection of properties representing a range of
  time on a individual's or group's calendar that is associated with an
  activity or event, often involving interactions with other individuals
  or groups. For example, it may be a 1 hour conference call from 14:00
  to 15:00. Such an scheduled event is created by one individual (the
  organizer) requesting another individual or group (attendees) to
  participate in an activity at a particular time. To encapsulate such a
  request in a MIME message using the "application/calendar" Content-
  Type, we define a REQUEST profile to represent the required collection
  of attributes that make up a appointment request.

  Figure 1 describes the appointment request flow:

         +-------------+
         | Appointment |_____________\ Attendee(s)
         |   Request   |             /
         +-------------+

                Figure 1 : Appointment requests

  An appointment request can be for single event or for one which occurs
  more than once (recurring event). For example, weekly meetings could
  be described using a single appointment with a recurring pattern,
  thereby reducing the storage requirements.

1.3.2 Appointment Response

  Appointment response messages update attendance status for each
  attendee, and are issued by the attendee after receiving an
  appointment request.

  Figure 2 describes the appointment request/response flow:

         +-------------+
         | Appointment |_____________\ Attendee(s)
         |   Request   |             /     |
         +-------------+                   |
                                           |
                                    +-------------+
          Appointment /_____________| Appointment |
            Organizer \             |   Response  |
                                    +-------------+



Stenerson                                           [Page 4]


Internet-Draft                                      11/25/96


                Figure 2 : Appointment response

  Here, the appointment organizer issues an appointment request. The
  attendee receives the request and issues an appointment response back
  to the organizer.

  Note that appointment responses are not required for each appointment
  request, and in some cases, particularly informational appointment
  requests sent to a large group of people, the meeting organizer will
  find responses undesirable.



2. Application/Calendar content type

2.1 Purpose, inheritance

  The purpose of the "application" Content-Type as defined in section
  7.4 of [RFC-1521] is "for data to be processed by mail-based uses of
  application programs." Calendaring and scheduling data falls into this
  category as suggested by [RFC-1521]. The "application/calendar"
  Content-Type is used to hold textual calendaring and scheduling
  information. The MIME Calendar Content Type may utilize any of the
  standard MIME content header fields such as those defined by [RFC
  822], [RFC 1521], and [RFC 1766]

  The definition is fashioned after and borrows heavily from the
  application/directory Content-Type specification as defined in [MIME-
  DIR].

2.2 Registration

  The application/calendar is defined as follows, using the MIME media
  type registration template from [MIME-REG].

  To: ietf-types@uninett.no
  Subject: Registration of MIME media type application/calendar

  MIME media type name: application

  MIME subtype name: calendar

  Required parameters: none

  Optional parameters: charset, profile




Stenerson                                           [Page 5]


Internet-Draft                                      11/25/96


  The "charset" parameter is as defined in [RFC-1521] for other body
  parts. It is used to identify the default character set used within
  the body part. Note that alternate character sets can be specified on
  a per value basis using the "charset" type parameter as specified for
  "contentline" in [MIME-DIR].

  The "profile" parameter is used as a guide to applications
  interpreting the information contained within the body part. It should
  not be used to exclude or require particular pieces of information
  unless a profile definition specifically calls for this behavior. The
  value of the "profile" parameter is defined as follows. Note that
  profile names are case insensitive (i.e., the profile name
  "Appointment" is the same as "APPOINTMENT" and "appointment" and
  "apPointMent").

        profile := x-token / iana-token

        x-token := <The two characters "X-" or "x-" followed,
                    with no intervening white space, by any atom,
                    where atom is from Section 3.3 of RFC 822>

        iana-token := <a publicly-defined extension token, registered

                       with IANA, as specified in Appendix A of this
                       document>

  Specific profiles definitions are discussed in detail in this
  document.

  Encoding considerations: As specified by the Content-Transfer-Encoding
  header field. Note that each value may also have an inline encoding
  associated with it. This encoding is independent of the encoding for
  the body part as a whole (i.e., inline encodings are performed first,
  then Content-Transfer-Encoding is applied to the entire body part).

  Security considerations:  Calendar item information may be public or
  private. This specification does not include any access control
  mechanism to guarantee data privacy on a per-property or per Content-
  Type basis. Also, properties used in this Content-Type may include
  references to Uniform Resource Locators that may be programmed
  resources. Implementers and users of this specification should be
  aware of the network security implications of accepting and parsing
  such information.

  Interoperability considerations: Applications and downstream customers
  of this data must understand the types of information within the
  Content-Type, as defined in this document.



Stenerson                                           [Page 6]


Internet-Draft                                      11/25/96


  Published specification: The published specification is as defined in
  this document.

  Person & email address to contact for further information:

  Derik Stenerson
  Microsoft Corporation
  One Microsoft Way
  Redmond, WA  98052
  USA
  deriks@microsoft.com
  +1.206.936.5522

  Intended usage: COMMON

  Author/Change controller:

  Derik Stenerson
  Microsoft Corporation
  One Microsoft Way

  Redmond, WA  98052
  USA
  deriks@microsoft.com
  +1.206.936.5522

  Alec Dun
  Microsoft Corporation
  One Microsoft Way
  Redmond, WA  98052
  USA
  alecdu@microsoft.com
  +1.206.936.4544


2.3 General usage, issues, restrictions

  The "application/calendar" Content-Type is used to hold textual
  calendaring and scheduling information. The MIME Calendar Content Type
  may utilize any of the standard MIME content header fields

  Example:

       Content-Type: application/calendar; charset=iso-8859-1
       Content-Transfer-Encoding: quoted-printable
       Content-Language: de
       Content-ID: <id2@bogus.com>



Stenerson                                           [Page 7]


Internet-Draft                                      11/25/96


2.3.1 Use of the multipart/related Content-Type

  The multipart/related Content-Type can hold the application/calendar
  body part and additional body part(s) for content that already has a
  natural MIME representation. For example, along with the textual
  information describing the event, an appointment request could also
  include a map showing the location in the form of a JPEG image.

  The root body part within the multipart/related body part is specified
  as defined in [RFC-1872] by a "start" parameter, or it is the first
  body part in the absence of such a parameter. The root body part must
  have a Content-Type of "application/calendar". This part holds text
  information, optionally defines the name and source of the
  information, and makes reference to subsequent body parts holding
  additional text and/or non-text item property information via their
  URL Content-IDs as explained in [MIME-DIR]. Body parts referred to do
  not have to be in any particular order.

2.3.2 Body part Content

  In general, the format for the content is as described in the [MIME-
  DIR] "contentline". In simple terms, the content consists of one or
  more CRLF-separated lines. Each "contentline" or property is in the
  form of a simple "type: value" format. Specific exceptions, will be
  covered in detail in this document.

  The collection of "type: value" pairs included in the body part are
  used to define the calendaring data being transmitted. These type
  definitions, once they are defined, can be reused to defined unique
  types calendaring objects that convey specific meaning when
  interpreted together. The Content-Type "profile" parameter is used to
  name this unique object, so applications can properly interpret the
  meaning calendaring data enclosed within the body part. Profiles are
  for appointment requests and responses are defined in this document.

  A application/calendar body part can only contain one calendaring
  object. For example, one appointment request or one appointment
  response per application/calendar body part. If the sending agent
  wishes to enclose multiple requests in a single message, multiple body
  parts should be used, using the multipart/mixed MIME Content-Type.
  This has an added advantage in that if the client is using IMAP as the
  access protocol, it could access individual appointments from the
  message by body part.

  Note that the *types* of the properties (text, d-t, bool) are also
  defined in [MIME-DIR].



Stenerson                                           [Page 8]


Internet-Draft                                      11/25/96



3. Appointment Requests

3.1 Description

  The Appointment REQUEST content profile definition

       Profile name: REQUEST

       Profile purpose: Indicates schema of REQUEST item

       Profile intended usage: COMMON

  Example:

  Content-Type: application/calendar; profile="request"


3.2 Properties

  An Appointment Request is made up of a collections of properties,
  which are grouped logically according to function below.

  Appointment time properties: The appointment time properties describe
  the start and end time of the appointment, including time zone
  information (either explicit or encoded), and optionally including
  recurrence pattern information to describe a repeating event. The time
  properties required for an appointment are:

            Start
            End

  and the Recurrence Pattern property names, all of which are defined
  above in Section 3.2.3:

            RPDescr
            DW
            DM
            DY
            WY
            MY
            HI
            DI
            WI
            MI
            YI
            TStartInst


Stenerson                                           [Page 9]


Internet-Draft                                      11/25/96


            TEndInst
            DStart
            DEnd
            DExcept
            DOrigExcept
            TZID
            TZBias
            TZDstBias
            TZStdBias
            TZStdTrans
            TZDstTrans
            TZDS
            TZSrc
            CalTypeID

  Core appointment properties: These properties are the base components
  that make up an appointment, some of which are optional.

            Description
            Summary
            Location
            Resources
            Confidentiality
            Priority
            Category

  Attendees: Properties that represent the individuals or groups that
  will participate in the activity.

            AttendReq
            AttendOpt
            AttendFyi
            AttendOwner

  Appointment data processing properties: appointment attributes used in
  processing the scheduling data.

            ID
            ApptVersion
            ApptID
            Rsvp
            RequestType


3.2.1 Example: Simple meeting request.




Stenerson                                          [Page 10]


Internet-Draft                                      11/25/96


  This example demonstrates a simple appointment request in the
  application/calendar MIME Content-Type.

     To: Larry <larry@wiseguy.com>, Curly <curly@wiseguy.com>,
      Moe <moe@wiseguy.com>
     From: Shemp <shemp@wiseguy.com >
     Subject: Hey, we need to make some money!
     MIME-Version: 1.0
     Message-ID: <id1@wizeguy.com>
     Content-Type: application/calendar; profile="request"

     Start;value=d-t: 22 Oct 1996 17:00:00 UT
     End;value=d-t: 22 Oct 1996 19:30:00 UT
     ID: <uniquefoo@wizeguy.com>
     Location: Conference Room 3384
     Categories: Business
     Categories: Review
     Summary: A new plan
     Resources: Projector
     Resources: VCR
     Resources: Rubber Mallet
     Description: Let's make a new plan. Any conflicts will be
      resolved the Rubber Mallet. Nuk! Nuk! Nuk!"

  This example shows a simple one time meeting request, using a variety
  of the optional properties.

3.2.2 appointment time properties

  The single instance start and end date time property names are defined
  below:

3.2.2.1 Start

        Name: Start
        Data type: D-T
        Purpose: Start date and time of the item, in UTC.
        Encoding:
        Required: YES
        Multi-valued: SOMETIMES
        Intended usage: COMMON


3.2.2.2 End

        Name: End
        Data type: D-T


Stenerson                                          [Page 11]


Internet-Draft                                      11/25/96


        Purpose: End date and time of the item in UTC.
        Encoding:
        Required: YES
        Multi-valued: SOMETIMES
        Intended usage: COMMON


3.2.3 Recurrence Properties


3.2.3.1 DW

        Name: DW
        Data type: TEXT
        Purpose: (DaysOfWeek) A list of the individual days of the week
               that the appointment can occur.
        Encoding:  Sun, Mon, Tue, Wed, Thu, Fri, Sat.  The values are
               case insensitive and non-localizable.
        Special notes: For example: A recurring weekly Appointment that
               occurs on Monday and Wednesday sets DW equal to "Mon,
               Wed".
        Required: NO
        Multi-valued: ALWAYS
        Intended usage: COMMON


3.2.3.2 DM

        Name: DM
        Data type: INT
        Purpose: (DaysOfMonth)
                 A list of the individual days of the month that the
                 appointment can occur.
        Encoding:  1 to 31 / -31 to -1. 0 is undefined.
        Special notes: Negative values specify an offset from the end
                 of the month.  Negative one is the last day of the
                 month.  For example, a recurring monthly Appointment
                 that occurs on the first and tenth days sets
                 DM equal to "1, 10".
        Required: NO
        Multi-valued: ALWAYS
        Intended usage: COMMON


3.2.3.3 DY

        Name: DY


Stenerson                                          [Page 12]


Internet-Draft                                      11/25/96


        Data type: INT
        Purpose: (DaysOfYear)
                 A list of the individual days of the year that the
                 appointment can occur.
        Encoding:  1 to 366 / -366 to -1. 0 is undefined.
        Special notes: Negative values specify an offset from the end
                 of the year.  Negative one is the last day of the
                 year.  For example, a recurring yearly Appointment
                 that occurs on the forty-first and two hundredth days
                 sets DY equal to "41, 200".
        Required: NO
        Multi-valued: ALWAYS
        Intended usage: LIMITED USE



3.2.3.4 WY

        Name: WY
        Data type: INT
        Purpose: (WeeksOfYear)
                 A list of the individual weeks of the year that the
                 appointment can occur.
        Encoding: 1 - 53
        Special notes: For example, a recurring appointment that occurs
                 in the fourth and twenty-fifth weeks sets WY
                 equal to "4, 25".
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: LIMITED USE


3.2.3.5 MY

        Name: MY
        Data type: INT
        Purpose: (MonthsOfYear)
                 A list of the individual months of the year that the
                 appointment can occur.
        Encoding: 1 - 12
        Special notes: For example, a recurring appointment that occurs
                 in the fourth and tenth months sets MY equal
                 to "4, 10".
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON



Stenerson                                          [Page 13]


Internet-Draft                                      11/25/96



3.2.3.6 HI

        Name: HI
        Data type: TIME
        Purpose: (HourInterval)
                 Interval between hours for a recurrence pattern.
        Encoding:
        Special notes:
                 Time Zone information, if specified as part of time
                 is ignored.
               For example, run security sweep every 45 minutes, HI =
               00:45
        Required: NO
        Multi-valued: NEVER
        Intended usage: COMMON


3.2.3.7 DI

        Name: DI
        Data type: INT
        Purpose: (DayInterval)
                 Interval between days for a recurrence pattern.
        Encoding:
        Special notes: For example, every other day has
                 DI = 2.
        Required: NO
        Multi-valued: NEVER
        Intended usage: COMMON


3.2.3.8 WI

        Name: WI
        Data type: INT
        Purpose: (WeekInterval)
                 Interval between weeks for a recurrence pattern.
        Encoding:
        Special notes: For example, pay day every two weeks has a
                       WI of 2.
                       When the value of WI is 5 and is combined with
                       MI, WI it takes on the meaning of "Last". For
                       Example, to specify the last weekday of the
                       month:
                         WI: 5
                         MI: 1


Stenerson                                          [Page 14]


Internet-Draft                                      11/25/96


                         DW: Mon, Tue, Wed, Thu, Fri

        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON


3.2.3.9 MI

        Name: MI
        Data type: INT
        Purpose: (MonthInterval)
                 Interval between months for a recurrence pattern.
        Encoding:
        Special notes: For example, a quarterly appointment, every
                  three months, has a MI of 3. Property
                  taxes, due every six months, have a MI
                  of 6.
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON


3.2.3.10 YI

        Name: YI
        Data type: INT
        Purpose: (YearInterval)
                 Interval between years for a recurrence pattern.
        Encoding:
        Special notes: For example, the Summer Olympics have a
                  YI of 4.
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON

3.2.3.11 TStartInst

        Name: TStartInst
        Data type: Time
        Purpose: Start time for the appointment within the recurring
                 pattern.
        Encoding: local time or UTC is acceptable
        Special notes: if absent, the appointment is assumed to start
                 at 00:00:00 on the date specified for DStart.
        Required: NO
        Multi-valued: SOMETIMES


Stenerson                                          [Page 15]


Internet-Draft                                      11/25/96


        Intended usage: COMMON


3.2.3.12 TEndInst

        Name: TEndInst
        Data type: Time
        Purpose: End time for the appointment within the recurring
                 pattern.
        Encoding: local time or UTC is acceptable
        Special notes: if absent, the appointment is assumed to end
                 at 23:59:59 on the date specified for DEnd.
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON


3.2.3.13 DStart

        Name: DStart
        Data type: DATE
        Purpose: Start date for the recurring pattern.
        Encoding: The time zone information is specifically not
                  required in date format. Instead it is specified
                  separately as an unambiguous set of rules that can be
                  interpreted easily by the recipient.  If the time
                  zone is specified in the date format, the time zone
                  rules should have precedence.
        Required: YES
        Multi-valued: NEVER
        Intended usage: COMMON


3.2.3.14 DEnd

        Name: DEnd
        Data type: DATE
        Purpose: End date for the recurrence pattern.
        Encoding: The time zone information is specifically not
                  required in date format. Instead it is specified
                  separately as an unambiguous set of rules that can be
                  interpreted easily by the recipient.  If the time
                  zone is specified in the date format, the time zone
                  rules should have precedence.
        Special notes: DEnd will be used to calculate the number of
                  transitions in and out of DST that must be listed as
                  part of the time zone rules for the recurring


Stenerson                                          [Page 16]


Internet-Draft                                      11/25/96


                  appointment.
        Required: YES
        Multi-valued: NEVER
        Intended usage: COMMON

3.2.3.15 RPDescr

        Name: RPDescr
        Data type: TEXT
        Purpose: Human-readable definition of recurrence pattern.
        Encoding:
        Special notes: Some examples of this string are
                      "Every 3 months, on the 12th day, from 12/1/96"
                      "Every week on Wednesday from 7/10/96 to
                      12/31/96"
                      This property is highly-recommended when sending
                      a recurring appointment request so clients have
                      a text description of the pattern to display.
        Required: NO

        Multi-valued: SOMETIMES
        Intended usage: COMMON


3.2.3.16 DExcept

        Name: DExcept
        Data type: DATE
        Purpose: Instance date of an exception to the recurring
                 pattern.
        Encoding:
        Special notes: An exception is an appointment or appointments
                 that are excluded from a recurrence pattern.
        Required: NO
        Multi-valued: ALWAYS
        Intended usage: COMMON


3.2.3.17 DOrigExcept

        Name: DOrigExcept
        Data type: DATE
        Purpose: Original Instance date of the exception to the
                 recurrence pattern.
        Encoding:
        Required: NO
        Multi-valued: NEVER
        Intended usage: COMMON


Stenerson                                          [Page 17]


Internet-Draft                                      11/25/96




3.2.3.18 StartOfWeek

        Name: StartOfWeek
        Data type: TEXT
        Purpose: A list of the individual days of the week that the
                 week can start on.
        Encoding:  Sun, Mon, Tue, Wed, Thu, Fri, Sat.  The values are
                 case insensitive and non-localizable.
        Special notes: For example:
                       European calendar often start on Monday.
                       This is only required for calculating patterns
                       when the week interval is greater than one.
        Required: NO
        Multi-valued: ALWAYS
        Intended usage: COMMON


3.2.3.19 TZID

        Name: TZID
        Data type: TEXT
        Purpose: An ID that can be used to identify the time zone
                 (could be a name, a number, likely that we want an
                  IANA registry of time zone/daylight rule names)
        Encoding:
        Special Notes:
        Required: NO
        Multi-valued: NEVER
        Intended usage: COMMON


3.2.3.20 TZBias

        Name: TZBias
        Data type: TEXT
        Purpose: time delta from UTC  (e.g. +08:00)
        Encoding: [sign] hour, as defined in [RFC-822]
        Special Notes: if a sign "-" is not specified, it is
                       assumed to be a positive value
        Required: YES
        Multi-valued: NEVER
        Intended usage: COMMON





Stenerson                                          [Page 18]


Internet-Draft                                      11/25/96


3.2.3.21 TZDstBias

        Name: TZDstBias
        Data type: TEXT
        Purpose: time delta used in "Daylight Savings Time",
                 e.g. -01:00 (one hour)
        Encoding: [sign] hour, as defined in [RFC-822]
        Special Notes: if a sign "-" is not specified, it is
                       assumed to be a non-negative value.
                       Can be omitted, if the value is -01:00.
        Required: NO
        Multi-valued: NEVER
        Intended usage: COMMON


3.2.3.22 TZStdBias

        Name: TZStdBias
        Data type: TEXT
        Purpose: time delta used in "Standard Time",
                 e.g. 00:00
        Encoding: [sign] hour, as defined in [RFC-822]
        Special Notes: if a sign "-" is not specified, it is
                       assumed to be a non-negative
                       can be omitted if the value is 0, but should be
                       respected if present
        Required: NO
        Multi-valued: NEVER
        Intended usage: LIMITED USE


3.2.3.23 TZStdTrans

        Name: TZStdTrans
        Data type: D-T (date-time)
        Purpose: a generated list of one or more date-time values that
                 describe the transition to Standard Time for the
                 duration of the recurring pattern.
        Encoding:
        Special Notes: Client implementers may want to restrict the
                 end date for a recurring pattern to limit the number
                 of items in the list.
                 Not required if no transitions are used.
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON



Stenerson                                          [Page 19]


Internet-Draft                                      11/25/96



3.2.3.24 TZDstTrans

        Name: TZDstTrans
        Data type: D-T (date-time)
        Purpose: a generated list of one or more date-time values that
                 describe the transition to Daylight Savings Time
                 for the duration of the recurring pattern.
        Encoding:
        Special Notes: Client implementers may want to restrict the
                 end date for a recurring pattern to limit the number
                 of items in the list.
                 Not required if no transitions are used.
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON


3.2.3.25 TZDS

        Name: TZDS
        Data type: DATE
        Purpose: A date stamp to indicate the freshness of this time
                 zone definition. Could be used by the recipient
                 application to decided whether to use this data or
                 attempt to use a newer rule.
        Encoding:
        Special Notes:
        Required: NO
        Multi-valued: NEVER
        Intended usage: LIMITED USE


3.2.3.26 TZSrc

        Name: TZSrc
        Data type: URL
        Purpose: URL to approved IANA time zone specification
                 information. Using this client may attempt to gather
                 more up to date time zone information.
        Encoding:
        Special Notes:
        Required: NO
        Multi-valued: NEVER
        Intended usage: LIMITED USE




Stenerson                                          [Page 20]


Internet-Draft                                      11/25/96


3.2.3.27 CalTypeID

        Name: CalTypeID
        Data type: TEXT
        Purpose: an identifier for the reference Calendar.  Choice
                 of calendar will affect date specifications and
                 recurrence patterns
        Encoding: one of the following case insensitive values
               "Gregorian".  Other types yet to be defined
        Special Notes: "Gregorian" is assumed if not specified
                       If a unrecognized/unsupported calendar type is
                       received, the client should issue an appropriate
                       error.
                       It is expected that additional calendar types
                       will need to be defined and registered.
        Required: NO
        Multi-valued: NEVER
        Intended usage: COMMON


3.2.4 Core appointment properties


3.2.4.1 Description

        Name: Description
        Data type: TEXT default, URL
        Purpose: A user-specified description of the appointment.
        Encoding:
        Special notes: This property is intended to accommodate more
                       verbose descriptions than the Summary property.
                       For example, it could be used to keep the agenda
                       for a meeting.
                       This property may refer to another MIME body
                       part. In particular, a URL to an HTML body part
                       would give you the ability to have a rich-text
                       description.
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON



3.2.4.2 Summary

        Name: Summary
        Data type: TEXT
        Purpose: A brief description of the appointment


Stenerson                                          [Page 21]


Internet-Draft                                      11/25/96


        Encoding: This property SHOULD NOT include line breaks
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON


3.2.4.3 Location

        Name: Location
        Data type: TEXT
        Purpose: Describes the location of the appointment
        Encoding:
        Special notes: [none]
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON


3.2.4.4 Resources

        Name: Resources
        Data type: TEXT
        Purpose: Contains resources needed for the appointment
        Encoding:
        Special Notes: Possible resources include,
                       Projector
                       VCR
                       Computer
                       Coffee Machine
                       Car
        Required: NO
        Multi-valued: ALWAYS
        Intended usage: COMMON


3.2.4.5 Confidentiality

        Name: Confidentiality
        Data type: TEXT
        Purpose: Rating of appointment's confidentiality.
        Encoding: Three possible values are defined.
                  "Public": Item is viewable by all users, subject to
                            global security restrictions of the system.
                            The item affects free-busy time
                            calculations and display.
                  "Private": Item is not viewable by all users, subject
                            to security restrictions of the system.


Stenerson                                          [Page 22]


Internet-Draft                                      11/25/96


                            The item affects free-busy time
                            calculations and display.
                  "Confidential": Item is not viewable by all users,
                            subject to security restrictions of the
                            system. The item does not affect free-busy
                            time calculations and display.
                  All values are case insensitive.
        Special notes: Absence of this property indicates that the item
                       is "Public".
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON


3.2.4.6 Priority

        Name: Priority
        Data type: INT
        Purpose: Denotes appointment priority
        Encoding: This value should not be negative
        Special Notes: Smaller values denote higher priority.
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON


3.2.4.7 Category

        Name: Category
        Data type: TEXT
        Purpose: Contains appointment categorisations
        Encoding:
        Special Notes: Possible categories include,
                       Education
                       Holiday
                       Meeting
                       Miscellaneous
                       Phone Call
                       Sick Day
                       Special Occasion
                       Travel
                       Vacation
                       Business
                       Personal
        Required: NO
        Multi-valued: ALWAYS
        Intended usage: COMMON


Stenerson                                          [Page 23]


Internet-Draft                                      11/25/96




3.2.5 Attendee properties.


3.2.5.1 AttendReq

        Name: AttendReq
        Data type: TEXT default, URL
        Purpose: Optional property used to list required attendees.
        Encoding:
        Special notes: If the property is absent, it is assumed that
                       the recipients on the [RFC 822]"To:" header
                       are the required recipients.
                       If on the other hand, the property is present,
                       the recipients listed in the "To:" header are
                       ignored.
                    This may be a multi-valued [RFC-822] recipient
                       list, or it may be of type URL, referring to a
                       vCard object, for example, to allow access to
                       more data than just the address.
                        Multiple attendees may be specified by including
                        multiple instances of this property within the
                        MIME calendaring entity.
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON

3.2.5.2 AttendOpt

        Name: AttendOpt
        Data type: TEXT default, URL
        Purpose: Optional property used to list optional attendees.
        Encoding:
        Special notes: If the property is absent, it is assumed that
                       the recipients on the [RFC 822]"Cc:" header
                       are the required recipients.
                       If on the other hand, the property is present,
                       the recipients listed in the "Cc:" header are
                       ignored.
                    This may be a multi-valued [RFC-822] recipient
                       list, or it may be of type URL, referring to a
                       vCard object, for example, to allow access to
                       more data than just the address.
                        Multiple attendees may be specified by including
                        multiple instances of this property within the
                        MIME calendaring entity.


Stenerson                                          [Page 24]


Internet-Draft                                      11/25/96


        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON


3.2.5.3 AttendFyi
  Name: AttendFyi
        Data type: TEXT default, URL
        Purpose: Optional property used to list attendees to receive
                 the request as a "for your information" (FYI)
        Encoding:
        Special notes: If the property is absent, it is assumed that
                       the recipients on the [RFC 822]"Bcc:" header
                       are the required recipients.
                       If on the other hand, the property is present,
                       the recipients listed in the "Bcc:" header are
                       ignored.
                    This may be a multi-valued [RFC-822] recipient
                       list, or it may be of type URL, referring to a
                       vCard object, for example, to allow access to
                       more data than just the address.
                        Multiple attendees may be specified by including
                        multiple instances of this property within the
                        MIME calendaring entity.
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON


3.2.5.4 AttendOwner

        Name: AttendOwner
        Data type: TEXT default, URL
        Purpose: Optional property used to list the owner(s) attendees.
        Encoding:
        Special notes: If the property is absent, there is no owner(s).
                    This may be a multi-valued [RFC-822] recipient
                       list, or it may be of type URL, referring to a
                       vCard object, for example, to allow access to
                       more data than just the address.
                        Multiple attendees may be specified by including
                        multiple instances of this property within the
                        MIME calendaring entity.
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON



Stenerson                                          [Page 25]


Internet-Draft                                      11/25/96



3.2.6 Appointment data processing property name definitions

3.2.6.1 ID

        Name: ID
        Data type: TEXT
        Purpose: Unique ID for the parent item
        Encoding: ID format is the same as MessageID, as described in
                  [RFC 822]
        Special notes: An ID is necessary to correlate responses with
                  appointment requests and recurrence exceptions with
                  parent recurrences.
        Required: NO
        Multi-valued: NEVER
        Intended usage: COMMON


3.2.6.2 ApptVersion

        Name: ApptVersion
        Data type: D-T
        Purpose: Datetime of the last change to the appointment that
                 would invalidate attendee responses prior to the
                 change. An example of such a change is the
                 rescheduling of an appointment.
        Special notes: Absence of this property implies that all
                 attendees' responses are valid.
        Encoding:
        Required: NO
        Multi-valued: NEVER
        Intended usage: COMMON

3.2.6.3 ApptID

        Name: ApptID
        Data type: TEXT
        Purpose: ID of the parent recurring item.
        Special note: If an appointment needs to be rescheduled, the
                      client generates a new appointment request with
                      the ApptID property equal to the original
                      appointment's ID property. Recipients need to
                      verify whether an appointment request is for a
                      new appointment, cancellation, or rescheduled
                      appointment.
        Encoding: ApptID format is the same as MessageID, as
                  described in [RFC 822]


Stenerson                                          [Page 26]


Internet-Draft                                      11/25/96


        Required: NO
        Multi-valued: NEVER
        Intended usage: COMMON


3.2.6.4 Rsvp

        Name: Rsvp
        Data type: BOOL
        Purpose: Flag denoting whether the appointment organizer
                 requests an attendance response from appointment
                 attendees.
        Encoding:
        Special notes: TRUE = response is requested,
                       FALSE = response is not requested.
                       Some appointments do not require
                       attendance tracking or the organizer
                       does not care. This property should
                       be set accordingly.
                       If the property is absent, it is
                       assumed FALSE.
        Required: NO
        Multi-valued: SOMETIMES
        Intended usage: COMMON


3.2.6.5 RequestType

        Name: RequestType
        Data type: TEXT
        Purpose: Indicates the type of the request.
        Encoding: One of the following values:
                  "Request" Request to attend appointment.
                  "Cancel"  Request to cancel appointment.
                  Values are case insensitive.
        Special Notes:  If the value is absent, "Request" is assumed.
        Required: NO
        Multi-valued: NEVER
        Intended usage: COMMON


3.3 Usage Specifics

  Here is some additional information on constructing and sending
  meeting requests.




Stenerson                                          [Page 27]


Internet-Draft                                      11/25/96


3.3.1 Date, Time, and Time zone issues

3.3.1.1 Introduction

  Before defining the collection of properties used to specify the
  appointment, a discussion of the requirements for specifying event
  time is required. Representing the time and date in an unambiguous
  manner such that all recipients can accurately interpret it is
  critical for scheduling applications. The problem of specifying a date
  and time is simple when an event and all attendees are in one
  location. However, when the attendees and location span multiple time
  zones, more care is required to accurately communicate a fixed time
  due to the variety of rules that define these time zones, and is
  additionally complicated by the fact that over time these rules change
  in unpredictable ways (government edict, etc.).


3.3.1.2 Definitions

  Before continuing the discussion, here are some useful definitions:
  .  Local time: The "by the clock time" for your location.
  .  Time zone bias: The time delta from the local time at the zero
     (prime) meridian, usually in hours and minutes, based roughly on
     the difference in longitude of your location and the zero meridian
     (every 15 degrees of longitude represents one hour)
  .  Standard Time (ST) bias: Rarely, if ever used. The time delta used
     in calculating Standard Time.
  .  Daylight Savings Time (DST) bias: The time delta used in
     calculating DST. Usually -60 minutes.
  .  Standard Time Transition: The rule that describes when the
     transition to ST starts.  Can be a pattern such as "Last Sunday in
     October at 2:00:00 AM", or a specific date and time. Not all zones
     switch on the same day and time, in there are 17 or more different
     rules.
  .  Daylight Savings Time Transition: The rule that describes when the
     transition to DST starts.  Can be a pattern such as "First Sunday
     in April at 2:00:00 AM", or a specific date and time.
  .  Coordinated Universal Time (UTC): Often used as a means to specify
     time in a unambiguous manner. UTC = local time + Bias, where Bias
     is either(Time zone bias + ST bias) or (Time zone bias + DST bias).

     For example, UTC for 9am Pacific Standard Time is

       UTC = 0900 + 0800 + 0 = 1700

     And, UTC for 9am Pacific Daylight Savings Time is



Stenerson                                          [Page 28]


Internet-Draft                                      11/25/96


       UTC = 0900 + 0800 + (-0100) = 1600

  .  A note on GMT vs UTC: Greenwich Mean Time (GMT) is a 24 hour
     astronomical time system based on the local time at Greenwich,
     England. GMT can be considered equivalent to Coordinated Universal
     Time (UTC) when fractions of a second are not important. However,
     by international agreement, the term UTC is recommended for all
     general timekeeping applications, and use of the term GMT is
     discouraged.

3.3.1.3 Single Event Date and Time Specification

  Despite the complexity of rules time zones, specifying a single event
  time in an unambiguous manner is fairly simple.  Given that the event
  time needs to be interpreted by user agents in multiple time zones,
  the event time must be described in a manner that allows the recipient
  agent to interpret the time in relation to the recipient's own time
  zone. Specifying the time of the appointment in local time only is not
  workable, in that the recipient agent would have to have accurate
  knowledge of both the event's time zone and his own time zone to
  calculate the correct time value for the recipient's schedule.
  Specifying the event's local time, plus the event's time zone
  information is workable, but requires more data and to be transmitted
  and more calculations required by the recipient. Instead, event
  start/end time and date can be specified by sender in Coordinated
  Universal Time (UTC), calculated based on the current known rules for
  the time zone and the date/time of the event. Then the recipient agent
  need only convert from UTC to its local time using the rules for his
  time zone.

3.3.1.4 Recurring Event Date and Time Specification

  The main issue that requires the event date and time specification for
  recurring events more complicated is that these events may be defined
  such that they cross the boundaries of a daylight transition (ST to
  DST and back).  For example, an recurring appointment at 08:00 should
  remain at 08:00 regardless of the daylight transitions that may
  happen.

  A recurring event can be specified with the following properties. For
  clarity a description is provided with property names in parenthesis
  (). Full definitions of the property names will be covered in section
  3.2.

  1) Event date and time, relative to a particular time zone. Could be
     UTC, but will often be local time. (TStartInst,
     TEndInst, DStart, DEnd, StartOfWeek)


Stenerson                                          [Page 29]


Internet-Draft                                      11/25/96



  2) Time zone Id (TZID): An ID that can be used to identify the time
     zone (could be a name, a number, likely that we want an IANA
     registry of time zone/daylight rule names.  Needs to be defined)

  3) Time zone Rules, composed of the following:
     a) Time zone Bias (TZBias): time delta from UTC  (e.g. 08:00)
     b) Daylight Bias (TZDstBias): time delta used in "Daylight
        Savings Time", e.g. -01:00 (one hour)
     c) Optional Standard Bias (TZStdBias): time delta used in
        "Standard Time". Should be 0 everywhere, but could be non-zero.

  4) Transition Rules, not required if no transitions are in use,
     composed of the following:
     a) Standard Transition (TZStdTrans): a list of absolute date/times
        bounded by the end date of the recurrence pattern
     b) Daylight Transition (TZDstTrans): a list of absolute
        date/times bounded by the end date of the recurrence pattern

  5) Optional Calendar Type identifier (CalTypeID).  Gregorian should be
  assumed if absent.  Alternate calendar types may require alternate
  date/time formats and recurrence pattern definitions.

  6) Optional Time Zone Date Stamp (TZDS): A date stamp to indicate the
  freshness of this time zone definition. Could be used by the recipient
  application to decided whether to use this data or use to a newer
  rule.

  7) Optional URL (TZSrc) to approved IANA time zone specification
  information.  (Client app Use the standard (that we define) for the
  time zone label to translate to a URL.?)

  8) recurrence pattern for the repeating events

  Explanation:

  Given the event time, the time zone bias values, and the transition
  rules, the recipient can accurately translate the event time into the
  proper value for the recipient time zone.  The even time (TStartInst,
  TEndInst) could be either local time or UTC -- given either, it is
  possible to calculate the other provided that the time zone
  information/rules are available.

  The time zone information is specifically not required in date format
  for DStart and DEnd. Instead it is specified separately as an
  unambiguous set of rules that can be interpreted easily by the



Stenerson                                          [Page 30]


Internet-Draft                                      11/25/96


  recipient.  If the time zone is specified in the date format, the time
  zone rules should have precedence.

  Time zone rules assume that UTC = local time + Bias, where Bias is one
  of (Time zone Bias + Std Bias) or (Time zone Bias + Daylight Bias).

  Daylight Bias (TZDstBias) can be omitted, if the value is -0100.

  Standard Bias (TZStdBias) can be omitted if the value is 0, but should
  be respected if present.

  If Time zone (TZBias), Standard (TZStdBias) and Daylight (TZDstBias)
  Bias are 0, the time should be interpreted as UTC.

  Transition Rules (TZStdTrans, TZDstTrans) should be omitted if there
  are no transitions or if a single event is specified.

  The presence of the Calendar Type (CalTypeID) allows the sender to
  express the recurrence pattern in another calendar type (for example
  Hijri). Absence of the Calendar type means Gregorian.  If a recipient
  is unable to handle the calendar type sent, it should do something
  reasonable.

  Recipients of event descriptions MAY make use of the time zone
  identifier TZID (for example, to correct for outdated DST rules), but
  creators of event descriptions SHOULD NOT assume that recipients will
  look at the time zone identifier.

  Recipients of event descriptions MAY make use of the time zone source
  URL (TZSrc) (for example, to correct for outdated DST rules), but
  creators of event descriptions SHOULD NOT assume that recipients will
  look at the time zone source URL identifier.

  Aside: Absence of time zone information altogether in a repeating
  event could indicate that this is a floating event (i.e. not tied to a
  time zone), e.g. I go running at 0700 no matter where I am in the
  world. However, this is NOT specified as valid in this standard as the
  author cannot imagine a situation where group scheduling could make
  use of this feature. However, a feature rich client application may
  allow a user to create such an appointment for personal scheduling.

3.3.1.5 Time zone of meeting

  One interesting aspect of meeting requests is what time zone should be
  used when scheduling the meeting.  This applies to both single and
  recurring meetings.



Stenerson                                          [Page 31]


Internet-Draft                                      11/25/96


  For example, if I schedule a weekly meeting at 9am and in my locale,
  there is no daylight savings time, but in your locale there is, then
  if my time zone was used to schedule the meeting, then the meeting
  would be 9am all the time for me, but 9am during the winter and 8am
  during the summer for you.

  There can be arguments made for the time being always 9am in my time,
  or always 9am in your time.  We could pick an arbitrary rule and say
  that the sender of the meeting's time zone is used, however in the
  case where we are both going to a meeting in another city, we'd
  probably want to use the time zone of where we are meeting.

  Ultimately the time zone that should be used comes down to a
  preference of the organizer and the attendees.  The key requirement is
  that the meeting must occur at the same time for all attendees.  Given
  this, from a coordination standpoint, it is unimportant which time
  zone is used, as long as everyone knows when the meeting is.  As an
  option, the application could allow the user to manually pick the time
  zone that should be used for the meeting.


3.3.1.6 Changes to local time zone shift rules

  Another issue that must be discussed is how to handle changes to time
  zone shift rules.  These don't happen all that often, but they need to
  be discussed.

  For a single event specified in UTC, a time zone shift rule change may
  change the apparent time of the meeting.  For example, if a local
  government changed from using daylight savings time to not using
  daylight savings time, then a meeting scheduled at 9:00am local time
  may change to 8:00am relative to attendees of the meeting who are
  located in the time zone that changed.

  There are a couple recommended ways a change like this can be handled.
  The first would be to prompt the creator of the meeting to reschedule
  the meeting, or allow an attendee of the meeting to ask that the
  meeting be rescheduled.  Another would be to automatically reschedule
  the meeting if the software detected a time zone rule change, although
  this may be problematic if the other attendees are busy at the new
  time.

  For a recurring event, a time zone shift may also change the apparent
  time of the meeting.  The same recommendations for handling time zone
  shift rule changes for single events also will work for recurring
  events.



Stenerson                                          [Page 32]


Internet-Draft                                      11/25/96


  Although this is beyond the scope of this draft, it may also be useful
  for applications to have access to a server from which time zone rule
  information can be easily retrieved.

  Example: UTC and Time Zone Rule change and the ambiguity

  Suppose I'm in Seattle (UTC-0800 Pacific Time) and you are in another
  time zone. I book a conference call with you at 9am on April 30 in
  Seattle. The UTC for April 30 9am is 1600 based on the rules for
  Daylight Savings Time (See example calculations above in the
  definitions). Now suppose that the rule for Seattle's transition to
  DST change after I've booked this appointment such that the transition
  date to DST is now after April 30.  9am on April 30 in Seattle is now
  calculated as 1700 UTC, because the appointment is no longer in DST.
  However, your schedule knows of this appointment by 1600 UTC, not 1700
  UTC, so we're out of synchronization; if I want to  keep this
  appointment I need to adjust my calendar to reflect that this
  appointment is now at 8am my time (1600 UTC using the Standard Time
  rule). I may simply want my schedule to adjust the appointment so that
  the meeting time has effectively changed; after all, when I booked the
  call with you at 1700 UTC, you were available and you are hard to get
  with, so I'll adjust.  On the other hand, if the call requires a
  resource booked for a particular time in my time zone, then I'll want
  the meeting to stay where it is by the clock(9am) and will need to
  reschedule with you.

  Since these rule changes tend to be relatively infrequent, a minimum
  implementation MAY USE the UTC format for specifying time and date for
  single instance appointments.  This specifically does not restrict
  client from sending out the more detailed information to specify the
  event time including time zone deltas and labels used to identify the
  time zone, etc. For example, the time zone information could be
  specified by using the recurring event specification below (i.e. a
  single event is a repeating event with one instance).


3.3.2 Recurrence patterns

3.3.2.1 The Recurrence Model

  The recurrence model is based on specifying one or more restrictions,
  similar to a database query, combined with reference date and time
  information. Each restriction, or pattern, is combined with the next
  pattern using the logical AND operation.

  The use of individual properties to describe components of the pattern
  allows for a wide variety of patterns to be specified without


Stenerson                                          [Page 33]


Internet-Draft                                      11/25/96


  specialised parsing or grammar.  The specification for the recurrence
  patterns is discussed in detail below.

  Five properties are used to denote specific days or months. These are:

       DW // DaysOfWeek
       DM // DaysOfMonth
       DY // DaysOfYear
       WY // WeeksOfYear
       MY // MonthsOfYear

  Five properties describe the interval between instances of the
  pattern.

       HI // HourInterval
       DI // DayInterval
       WI // WeekInterval
       MI // MonthInterval
       YI // YearInterval

  Using these properties, it is possible to describe calendar-based
  recurring patterns. (Examples of non-calendar-based patterns include
  Easter and Winter Solstice which are based on lunar patterns.)

  A unique feature of the above properties is that they may be used in
  combination to represent arbitrarily complex recurrence patterns.

  Recurring patterns have ten properties describing the date and time of
  the recurring item. The Start and End single-instance appointment
  properties are not used.

       TStartInst
       TEndInst
       DStart
       DEnd
       DExcept
       DOrigExcept
       WStart
       TZBias
       TZDstBias
       TZStdBias
       TZStdTrans
       TZDstTrans

  The two time-related fields hold the item's start and end time. The
  two date-related fields cover the start and end dates of the recurring
  pattern. It is required to have a start and end date for a pattern;


Stenerson                                          [Page 34]


Internet-Draft                                      11/25/96


  unbounded patterns are not allowed, however no restriction is set on
  the start or end date. The start of week (WStart) property is used to
  indicate what day of the week your calendar starts on. For example, in
  Europe it is common for calendars to start on Monday. The Exception
  Date and Original Exception Date hold exceptions to the recurring
  pattern.

  The following is used to define the reference calendar to be used for
  calculations of the recurrence patterns. The default is Gregorian. No
  additional calendar types are defined at this time. A registration
  procedure for defining new calendar types will need to be created.

       CalTypeID

  A single property is defined to contain the textual description of the
  pattern

       RPDescr

  All of the above property names are defined in detail in Section 3.2.


3.3.2.2 Examples

  The following examples depict recurring patterns using this model.
  Note that the usage of the value=<valuetype> parameter is optional as
  specified in [MIME-DIR]

  Example 1:
  Christmas Day (December 25th) is described as:

     RPDescr: December 25, every year
     MY: 12
     DM: 25
     YI: 1

  Example 2:
  A weeknight television broadcast is described as:

     DW;value=text: Mon, Tue, Wed, Thu, Fri
     WI;value=int: 1
     TStartInst;value=time: 21:00
     TEndInst;value=time: 22:00
     RPDescr: Monday-Friday, every week, 9:00p.m.-10:00 p.m.


  Example 3:


Stenerson                                          [Page 35]


Internet-Draft                                      11/25/96


  Pay-day, the 15th and last day of the month is described as:

     DM;value=int: 15, -1
     MI;value=int: 1
     TStartInst;value=time: 12:00
     TEndInst;value=time: 12:00
     RPDescr: 15th and last day of the month at noon


  Example 4:
  U.S. Presidential Election Day is described as:

     DM;value=int: 2,3,4,5,6,7,8
     DW: Tue
     MY;value=int: 11
     YI;value=int: 4
     RPDescr: First Tuesday after a Monday in November, every four years

  (Since there must be a Monday in November before the election day, Nov
  1 is disqualified.)

  Example 5:
  A monthly recurring monthly appointment for the first Monday of the
  month that starts on 1 Aug 1996 and ends on 1 Aug 1998, includes time
  zone usage.  Time zone is Pacific (UTC-0800).  Daylight Transition
  Date is First Sunday in April at 2:00:00 AM and
  Standard Transition Date is Last Sunday in October at 2:00:00 AM.
  TZStdBias is defaulted to 0


     TStartInst: 8:00
     TEndInst: 09:00
     DStart: 1 Aug 1996
     DEnd: 31 Aug 1998
     DM: 1,2,3,4,5,6,7
     DW: Mon


3.3.3 Change/cancellation semantics

  Often meetings are rescheduled, cancelled or otherwise changed.  When
  a meeting is changed, the attendees of the meeting need to be notified
  of the change, and their calendars need to be updated.

  The key problem in modifying a meeting is that of matching the new
  meeting with the meeting that exists on the calendars of the
  attendees.  This is solved by specifying both an ID for the meeting


Stenerson                                          [Page 36]


Internet-Draft                                      11/25/96


  (created at the original instantiation of the meeting), a version
  number which indicates which change is the most recent when there are
  multiple changes, and a request type which specifies if the change is
  an updated meeting or if it is a cancellation of the meeting.

3.3.3.1 Changing/cancelling an event.

  When the creator of a meeting wants to change all instances of a
  meeting in some way, then the creator sends a completely updated
  meeting request to all the attendees.  The ApptID of the updated
  request contains the ID specified in the original meeting request.  It
  also has an updated ApptVersion property.

  Attendees receiving the updated meeting request look for the previous
  meeting based on the ApptID of the meeting, and replace the existing
  meeting with the new one if the version stamp is newer than the
  existing version stamp.  The ID of the meeting stays the same as the
  original meeting ID so that further changes can be co-ordinated.

  To cancel a single event, a meeting request is sent where the
  RequestType property is "Cancel".  This meeting need only include the
  ApptID property referring to the ID of the original meeting.

3.3.3.2 Changing/cancelling one instance of a recurring event.

  In the case where I wish to change a single instance of a recurring
  event, a complete new appointment is constructed which is the
  exception.  The appointment gets a new ID, and the ApptID property is
  set to the ID of the original meeting request.  A new ApptVersion is
  constructed for the exception.  The DOrigExcept property is used to
  specify which instance of the recurring event this event is an
  exception to.

  To cancel a single event, a meeting request is sent where the
  RequestType property is "Cancel".  This meeting includes: the ApptID
  property which refers to the ID of the original meeting, and the
  DOrigExcept property which refers to which instance of the recurring
  event this cancellation is an exception to.

3.3.3.3 Complex changes

  There will be some changes that will be fairly complex to express in
  terms of changing a meeting.  In these cases, changes should be
  handled by cancelling the meeting and creating one or more new
  meetings.




Stenerson                                          [Page 37]


Internet-Draft                                      11/25/96


3.3.4 Attendees

  Attendees are defined to be the individuals, groups, or resources that
  are invited to an appointment or event. Each attendee must have an
  address that can be used to deliver the appointment request to. There
  are several classes of attendees, including required, optional, owner,
  organizer, and informational (or FYI).

  Attendees for an appointment can be identified and classified in the
  MIME message in a number of ways. The default mechanism uses the
  "To:", "Cc:" and "Bcc:" message header fields as defined in [RFC-822].
  Individuals, groups and resources are all assumed to be valid
  recipients that can be specified in the format of [RFC-822] address
  message header. Attendees in the "To:" header are "required", those in
  the "Cc:" header are "optional", and the "Bcc:" header contains
  "informational" or FYI attendees. The organizer classification is
  assumed to be the appoint request originator ("From:"). The owner
  classification can not be readily specified in the standard [RFC-822]
  header fields, but can be specified using an alternate mechanism as
  described below.

  Optionally, the various classifications of attendees can be specified
  using the following named properties in the "application/calendar"

  Content-Type: AttendReq, AttendOpt, AttendFyi, and AttendOwner. These
  named properties when used, have precedence over the [RFC-822] header
  fields. When a named Attendee property is used, the semantically
  matching RFC-822 header is ignored.  No special treatment is made for
  individuals, groups, or resources; all are assumed to have a valid
  address. These property names are defined in detail in above.


3.4 General Examples

3.4.1 Example: Minimal appointment request

  This demonstrates a minimal appointment request in the
  application/calendar MIME Content-Type. The appointment has a start
  and end date-time.

     To: Franklin W. Dixon <franklind@bogus.com>
     From: Carolyn Keene <carolynk@bogus.com>
     Subject: Discuss contract issues
     MIME-Version: 1.0
     Message-ID: <id1@bogus.com>
     Content-Type: application/calendar; profile="request"
     Content-ID: <id2@bogus.com>



Stenerson                                          [Page 38]


Internet-Draft                                      11/25/96


     ID: <foo@bogus.com>
     Start;value=d-t: 22 Oct 96 14:00:00 UT
     End;value=d-t: 22 Oct 96 15:00:00 UT


3.4.2 Example: Cancelling a meeting

     To: Larry <larry@wiseguy.com>, Curly <curly@wiseguy.com>,
      Moe <moe@wiseguy.com>
     From: Shemp <shemp@wiseguy.com>
     Subject: Hey, we need to make some money!
     MIME-Version: 1.0
     Message-ID: <id1@wizeguy.com>
     Content-Type: application/calendar; profile="request"

     RequestType: Cancel
     ApptID: <uniquefoo@wizeguy.com>
     Description: Let's just go eat instead.

3.4.3 Example: Recurring appointment request

  This demonstrates a recurring appointment request in the
  application/calendar MIME Content-Type. The recurring pattern
  describes the United States Election Day:

     To: President <president@whitehouse.gov>
     From: Vice President <vice.president@whitehouse.gov>
     Subject: Don't forget to vote!
     MIME-Version: 1.0
     Message-ID: <id1@whitehouse.gov>
     Content-Type: application/calendar; profile="request"
     Content-ID: <id2@whitehouse.gov>

     ID: <foo@bogus.com>
     TStartInst;value=time: 10:00
     TEndInst;value=time: 10:15
     DStart;value=date: 1 Jan 1996
     DEnd;value=date: 1 Jan 2008
     TZID: EST
     TZBias: +05:00
     DM;value=int: 2,3,4,5,6,7,8
     DW: Tue
     MY;value=int: 11
     YI;value=int: 4
     RPDescr: First Tuesday after a Monday in November, every four
      years"



Stenerson                                          [Page 39]


Internet-Draft                                      11/25/96


3.4.4 Recurring appointment with time zone shifts.

  This demonstrates a recurring appointment request in the
  application/calendar MIME Content-Type. The recurring pattern
  describes a monthly recurring monthly appointment for the first Monday
  of the month that starts on 1 Aug 1996 and ends on 1 Aug 1998,
  includes time zone usage.  Time zone is Pacific (UTC-0800).  Daylight
  Transition Date is First Sunday in April at 2:00:00 AM and
  Standard Transition Date is Last Sunday in October at 2:00:00 AM.
  TZStdBias is defaulted to 0

     To: Marketing Team <marketing@bigbiz.com>
     From: Mr Big <mr.big@bigbiz.com>
     Subject: Monthly Review.
     MIME-Version: 1.0
     Message-ID: <id1@bigbiz.com>
     Content-Type: application/calendar; profile="request"
     Content-ID: <id2@bigbiz.com>

     ID: <foomarket@bigbiz.com>
     TStartInst: 8:00
     TEndInst: 09:00
     DStart: 1 Aug 1996
     DEnd: 1 Aug 1998
     DM: 1,2,3,4,5,6,7
     DW: Mon
     TZID: PST
     TZBias: +08:00
     TZDstBias: -01:00
     TZStdTrans: 27 Oct 1996 02:00
     TZDstTrans: 6 Apr 1997 02:00
     TZStdTrans: 26 Oct 1997 02:00
     TZDstTrans: 5 Apr 1998 02:00

3.4.5 Example: One time exception to recurring meeting

     To: President <president@whitehouse.gov>
     From: Vice President <vice.president@whitehouse.gov>
     Subject: Don't forget to vote!
     MIME-Version: 1.0
     Message-ID: <id1@whitehouse.gov>
     Content-Type: application/calendar;
                   profile="request"
     Content-ID: <id2@whitehouse.gov>

     Start;value=d-t: 7 Nov 1996 15:30 UT
     End;value=d-t: 7 Nov 1996 15:45 UT


Stenerson                                          [Page 40]


Internet-Draft                                      11/25/96


     ApptID: <foo@bogus.com>
     DOrigExcept;value=date: 5 Nov 1996
     Summary: Rescheduling due to invasion.


3.4.6 Example: Cancelling an instance of a recurring meeting

     To: President <president@whitehouse.gov>
     From: Vice President <vice.president@whitehouse.gov>
     Subject: Don't forget to vote!
     MIME-Version: 1.0
     Message-ID: <id1@whitehouse.gov>
     Content-Type: application/calendar;
                   profile="request"
     Content-ID: <id2@whitehouse.gov>

     ApptID: <foo@bogus.com>
     Summary: Cancelling due to invasion.
     RequestType: Cancel
     DOrigExcept;value=date: 5 Nov 1996
     Description: There is no time to vote for ourselves this year.


3.4.7 Example: Appointment and message body in the same message.

  This uses the multipart/related Content-Type to add non-textual
  appointment data:

     To: Franklin W. Dixon <franklind@sample.com>
     From: Carolyn Keene <carolynk@sample.com>
     Subject: Discuss contract issues
     MIME-Version: 1.0
     Message-ID: <id1@sample.com>
     Content-Type: multipart/related;
             boundary=fence;
             type="application/calendar";
             start="<id4@sample.com>"
     Content-ID: <id3@sample.com>

     --fence
     Content-Type: application/calendar; profile="request"
     Content-ID: <id4@sample.com>

     Start: 22 Oct 96 14:00:00 UT
     End: 22 Oct 96 15:00:00 UT
     Location: Applegate Building, Suite 410
     Map;value=url: "id5@sample.com"


Stenerson                                          [Page 41]


Internet-Draft                                      11/25/96



     --fence
     Content-Type: image/jpeg
     Content-ID: "id5@sample.com"

     <...image data goes here...>

     --fence--


4. Appointment Responses

4.1 Description

  The Appointment RESPONSE content definition profile.

      Profile name: RESPONSE

      Profile purpose: Indicates schema of RESPONSE items

      Profile special notes: Responses should include as many original
                            appointment request properties as possible.
                            The minimum fields in the response are
                            Response, ApptID, and ApptVersion.  The
                            other fields are included for cases where
                            User Agents do not support automatic
                            correlation of responses.


      Profile intended usage: COMMON


  Example:

  Content-Type: application/calendar; profile="response"


  Profile property names: All defined for appointment request plus:
          ApptResponse


4.2 Properties

4.2.1 ApptResponse

        Name: ApptResponse
        Data type: TEXT
        Purpose: Attendee's response for the Appointment.


Stenerson                                          [Page 42]


Internet-Draft                                      11/25/96


        Encoding: Three values are defined:
                       "Accept": Attendee accepted the
                                 appointment request
                                 and will attend the
                                 appointment.
                       "Decline": Attendee declined the
                                  appointment
                                  request and will not attend
                                  the appointment.
                       "Tentative": Attendee is not sure if he
                                    can attend and has
                                    tentatively accepted the
                                    request, but does not
                                    guarantee he will attend.

                  All values are case insensitive.

        Special notes: Absence of this property indicates that
                       the response is "Accept".
        Required: YES
        Multi-valued: NEVER
        Intended usage: COMMON

4.3 Examples

4.3.1 Example:  Simple appointment response

  This demonstrates an appointment responses.  The minimum fields in the
  response are Response, ApptID, and ApptVersion.  The other fields are
  included for cases where User Agents do not support automatic
  correlation of responses.

     To: Carolyn Keene <carolynk@bogus.com>
     From: Franklin W. Dixon <franklind@bogus.com>
     Subject: Discuss contract issues
     MIME-Version: 1.0
     Message-ID: <id1@bogus.com>
     Content-Type: application/calendar; profile="response"

     Response: ACCEPT
     ApptID: <foo@bogus.com>
     ApptVersion;value=d-t: 21 Oct 96 17:02:34 UT
     Start;value=d-t: 22 Oct 96 17:00:00 UT
     End;value=d-t: 22 Oct 96 18:00:00 UT
     Summary: Let's have a meeting




Stenerson                                          [Page 43]


Internet-Draft                                      11/25/96


4.3.2 Example: decline response to recurring appointment

  This demonstrates an appointment response to a
  recurring appointment or recurring appointment exception
  request:

     To: Carolyn Keene <carolynk@bogus.com>
     From: Franklin W. Dixon <franklind@bogus.com>
     Subject: Discuss contract issues
     MIME-Version: 1.0
     Message-ID: <id1@bogus.com>
     Content-Type: application/calendar; profile="response"

     Response: DECLINE
     ApptID: <foo@bogus.com>
     ApptVersion;value=d-t: 21 Oct 96 17:02:34 PST
     RPDescr: "Every Tuesday"
     Summary: No I can't have a meeting on Tuesdays



4.3.3 Example: Accept response to recurring appointment

  Example demonstrates an appointment response to a
  recurring appointment or recurring appointment exception
  request:

     To: Carolyn Keene <carolynk@bogus.com>
     From: Franklin W. Dixon <franklind@bogus.com>
     Subject: Discuss contract issues
     MIME-Version: 1.0
     Message-ID: <id1@bogus.com>
     Content-Type: application/calendar; profile="response"

     Response: Accept
     ApptVersion;value=d-t: 21 Oct 96 17:02:34 PST
     ApptID: <blah@bogus.com>
     DOrigExcept;value=date: 28 Oct 1996
     Summary: But I can have a meeting on this Tuesday



5. Acknowledgements

  This document is the result of the collective effort of a large number
  of people on the IETF Calendar Working group mailing list. Although
  any enumeration seems doomed to suffer from egregious omissions, the
  following are among the many contributors to this effort:


Stenerson                                          [Page 44]


Internet-Draft                                      11/25/96



  Darren Shakib
  Alec Dun
  Frank Dawson
  Harald.T.Alvestrand
  Keith Moore
  Pete Resnick
  Ross Finlayson
  Lewis Geer
  Mark Horton
  John C Klensin
  Chris Newman
  Philippe Kahn
  Anik Ganguly
  Ken Shan
  Brian Deen
  Patrik Faltstrom
  Denis BIGORGNE
  Peter O'Leary
  Roger Fajman
  C. Harald Koch
  Hal Howard
  David Boreham
  Ned Freed
  Andrew Shuman
  Nathaniel Borenstein
  Tim Howes
  Andras Salamon
  Bill Bliss
  Theodore Lorek
  Mark Towfiq
  Larry Osterman
  James L. Weiner
  Robert Visnov
  Frederick G.M. Roeber
  William Wyatt
  Mark Handley
  Chuck Grandgent
  William P. Spencer
  Robert Moskowitz
  Steve Carter
  Ian Ferrell


  Format and some descriptions were borrowed from the [MIME-DIR] and
  [MIME-PROP] drafts.



Stenerson                                          [Page 45]


Internet-Draft                                      11/25/96


6. Author's Addresses

  Derik Stenerson

  Microsoft
  One Microsoft Way
  Redmond, WA 98052
  USA
  deriks@microsoft.com
  +1.206.936.5522

  Alec Dun
  Microsoft Corporation
  One Microsoft Way
  Redmond, WA  98052
  USA
  alecdu@microsoft.com
  +1.206.936.4544

   Darren Shakib
   Microsoft
   One Microsoft Way
   Redmond, WA  98052
   darrens@microsoft.com
   +1.206.936.6405

Appendix A Registration of new profiles

  This section defines procedures by which new profiles are registered
  with the IANA and made available to the Internet community. Note that
  non-IANA profiles may be used by bilateral agreement, provided the
  associated profile names follow the "X-" convention defined above.

  The procedures defined here are designed to allow public comment and
  review of new profiles, while posing only a small impediment to the
  definition of new profiles.

  Registration of a new profile is accomplished by the following steps.

Define the profile

  A profile is defined by completing the following template.

        To: [mailing list TBD]
        Subject: Registration of application/calendar MIME profile XXX

        Profile name:



Stenerson                                          [Page 46]


Internet-Draft                                      11/25/96


        Profile purpose:

        Profile property names:

        Profile special notes (optional):

        Profile Intended usage: (one of COMMON, LIMITED USE or
                                OBSOLETE)

        Property Descriptions: (list of property descriptions in
                                following format)

          Name:

          Data type:

          Purpose:

          Encoding:

          Special notes (optional):

          Required: (one of YES, NO)

          Multi-Valued: (one of ALWAYS, NEVER, SOMETIMES)

          Intended usage: (one of COMMON, LIMITED USE or OBSOLETE)

  The explanation of what goes in each field in the template follows.

  Profile name: The name of the profile as it will appear in the
  application/calendar MIME Content-Type "profile" header parameter.

  Profile purpose: The purpose of the profile (e.g., to represent
  information about people, printers, documents, etc.). Give a short but
  clear description.

  Profile property names: The list of property names associated with the
  profile.  This list of names is to be expected but not required in the
  profile.  Other names not mentioned in the profile definition may also
  be present.

  Profile special notes: Any special notes about the profile, how it is
  to be used, etc. This section of the template may also be used to
  define an ordering on the types that appear in the Content-Type, if
  such an ordering is required.



Stenerson                                          [Page 47]


Internet-Draft                                      11/25/96


  Property Descriptions: Precedes the list of property descriptions for
  the profile.  Each property definition starts with the "Name:" tag.

  Name: The name of the property, as it will appear in the body of an
  application/calendar MIME Content-Type "name: value" line to the left
  of the colon ":".

  Data type:  The expected data type for the property.  Possible values
  listed in [MIME-DIR].

  Purpose: The purpose of the property (e.g., to represent a name,postal
  address, IP address, etc.). Give a short but clear description.

  Encoding: The encoding a value of the type must have in the body of an
  application/calendar MIME Content-Type.  This description must be
  precise and must not violate the general encoding rules defined in
  section [MIME-DIR].

  Special notes: Any special notes about the property, how it is to be
  used, etc.

  Required:  YES indicates that the property MUST be present in the
  property list of a item of an item of this type profile.  No indicates
  that this property MAY appear in the property list.

  Multi-Valued:  ALWAYS indicates that the property will expected to be
  multi-valued.  NEVER indicates that the property MUST NOT be multi-
  valued.  SOMETIMES indicates that the property MAY be multi-valued,
  but that most implementations will not make it multi-valued.

  Intended usage: COMMON indicates that most items of this profile will
  include this property.  LIMITED USE indicates that this property will
  rarely be included.  OBSOLETE indicates that use of this property
  SHOULD NOT be used.

Post the profile definition

  The profile description must be posted to the new profile discussion
  list, [mailing list TBD].

Allow a comment period

  Discussion on the new profile must be allowed to take place on the
  list for a minimum of two weeks. Consensus must be reached on the
  profile before submitting the profile for approval




Stenerson                                          [Page 48]


Internet-Draft                                      11/25/96


Submit the profile for approval

  Once the two-week comment period has elapsed, and the proposer is
  convinced consensus has been reached on the profile, the registration
  application should be submitted to the Profile Reviewer for approval.
  The Profile Reviewer is appointed by the Application Area Directors
  and may either accept or reject the profile registration. An accepted
  registration should be passed on by the Profile Reviewer to the IANA
  for inclusion in the official IANA profile registry. The registration
  may be rejected for any of the following reasons. 1) Insufficient
  comment period; 2) Consensus not reached; 3)  Technical deficiencies
  raised on the list or elsewhere have not been addressed. The Profile
  Reviewer's decision to reject a profile may be appealed by the
  proposer to the IESG, or the objections raised can be addressed by the
  proposer and the profile resubmitted.

Appendix B Profile Change Control

  Existing profiles may be changed using the same process by which they
  were registered.

       Define the change

       Post the change

       Allow a comment period

       Submit the profile for approval

  Note that the original author or any other interested party may
  propose a change to an existing profile, but that such changes should
  only be proposed when there are serious omissions or errors in the
  published specification. The Profile Reviewer may object to a change
  if it is not backwards compatible, but is not required to do so.

  Profile definitions can never be deleted from the IANA registry, but
  profiles which are no longer believed to be useful can be declared
  OBSOLETE by a change to their "intended use" field.

References

  [MIME-CSCT], Dawson, Frank, "MIME Calendaring and Scheduling Content
  Type, Internet Draft draft-dawson-csct-00.txt, October 1996

  [MIME-DIR] Howes,T., Smith, M., "A MIME Content-Type for Directory
  Information", Internet-draft-ietf-asid-mime-direct-01.txt, February,
  1996.


Stenerson                                          [Page 49]


Internet-Draft                                      11/25/96



   [MIME-PROP] Shakib, Darren,  "A MIME Content-Type for Tagged Property
   Value Storage", Internet-Draft draft-shakib-mime-prop-00.txt,
   July 1996.

   [MIME-REG] Freed, N.,  Postel,  J.,  "Multipurpose  Internet  Mail
   Extensions (MIME) - Part Four: Registration Procedures", Internet-
   Draft draft-ietf-822ext-mime-reg-02.txt, December 1995.

  [NIST] "Time and Frequency FAQ", National Institute of Standards and
  Technology Time and Frequency Division,  publication on the World Wide
  Web: http://www.boulder.nist.gov


  [RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text
  Messages", STD 11, RFC 822, August 1982.

  [RFC-1521] Borenstein, N., Freed, N., "MIME (Multipurpose Internet
  Mail Extensions) Part One: Mechanisms for Specifying and Describing
  the Format of Internet Message Bodies", RFC 1521, September 1993.

  [RFC-1522] Moore, K., "MIME (Multipurpose Internet Mail Extensions)
  Part  Two: Message  Header Extensions for Non-ASCII Text", RFC 1522,
  September 1993.

  [RFC-1738] Berners-Lee, T., Masinter, L., McCahill, M., "Uniform
  Resource Locators (URL)", RFC 1738, December 1994.

  [RFC 1766] H. Alvestrand, _Tags for the Identification of Languages_,
  UNINETT, RFC 1766, March 1995.

  [RFC-1835]
  Deutsch, et al., "Architecture of the WHOIS++ service", RFC 1835,
  August 1995.

  [RFC-1872] Levinson, E., "The MIME Multipart/Related Content-type,"
  RFC 1872, December 1995.




Expires May 30, 1997







Stenerson                                          [Page 50]