Subject: Full proposal for current issue (i.e., Where to store METHOD info)

From: Bernard Desruisseaux <[email-masked]>
Date: Wed, 12 Jun 2002 11:01:23 -0400

It has been more than two weeks since I gave answers to the
questions that, I believe, need to be addressed in order to
solve the current issue, and there is no other proposal that
obeys to RFC 2445 and RFC 2446, so I propose that the following
text be added to the current draft, and that all the examples
be changed accordingly.  I volunteer to do the editing!

Here are some hightlights of the proposal:

- Allow us to obey to RFC 2445 and RFC 2446 by making use
  of additional components (as was done in draft 05). This
  will avoid the hassle of changing the VERSION number;

- Make the model clear.  Commands are sent in VCOMMAND
  compoents, and results returned in VRESULT components.
  No more commands returned as a result to a command!

- The use of a VITIP component doesn't make query for iTIP
  objects a special case (no change required to CAP-QL);

- Querying on VERSION, PRODID, METHOD as well as X-PROP
  in iTIP objects will be possible, yet straightforward;

- The proposed model can easily be documented with ABNF
  (as in RFC 2445) and restriction tables (as in RFC 2446)
  (i.e., to assert whether a property is required, is optional
  and the number of times it may appear in a VCOMMAND component
  given the value of its CMD property).

I truly believe that my proposal will allow us to move forward
and to start addressing the other issues in the pipeline.

Cheers,
Bernard
-- 
Bernard Desruisseaux                    mailto:[email-masked]
Research & Development                  Tel.  : +1 514 733-8500 x4213
Steltor                                 Fax   : +1 514 733-8878

------------------------------------------------------------------------
X.1 Command Component

   Component Name: "VCOMMAND"

   Purpose: Provide a grouping of component properties that describe a
   CAP command.

   Format Definition: A "VCOMMAND" calendar component is defined by the
   following notation:

        commandc = "BEGIN" ":" "VCOMMAND" CRLF
                   commandprop
                   [ component ]      ; Defined in RFC 2445
                   "END" ":" "VCOMMAND" CRLF

        commandprop = *(

                    ; the following are REQUIRED,
                    ; and MUST NOT occur more than once

                    cmd / cmdid /

                    ; the following are OPTIONAL,
                    ; and MUST NOT occur more than once

                    latency /
                    destination /   ; Used with CMD:MOVE
                    uidcount /      ; Used with CMD:GENERATE-UID
                    identity /      ; Used with CMD:IDENTIFY

                    ; the following are OPTIONAL,
                    ; and MAY occur more than once

                    target / x-prop / iana-prop

                    )

   Description: A "VCOMMAND" calendar component is a grouping of
   component properties, and possibly including other calendar
   components, that represents a CAP command.

   Example: The following is an example of the "VCOMMAND" calendar
   component used to create a meeting in a calendar:

     BEGIN:VCOMMAND
     CMD:CREATE
     CMDID:abcd1234
     LATENCY;ACTION=ABORT:10
     TARGET:cap://cal.host.com/mary-relcalid
     BEGIN:VEVENT
     UID:[email-masked]
     ORGAGNIZER:cap://cal.host.com/mary-relcalid
     ATTENDEE;PARTSTAT=ACCEPTED:cap://cal.host.com/mary-relcalid
    
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:cap://cal.host.com/bob-relcalid
     DTSTART:20010920T180000Z
     DTEND:20010920T190000Z
     SUMMARY:Mary invites Bob
     END:VEVENT
     END:VCOMMAND

   The following is an example of the "VCOMMAND" calendar component used
   to search for a specific meeting in a calendar:

     BEGIN:VCOMMAND
     CMD:SEARCH
     CMDID:abcd1235
     TARGET:cap://cal.host.com/mary-relcalid
     BEGIN:VQUERY
     QUERY:SELECT * FROM VEVENT
      WHERE UID = [email-masked]'
     END:VQUERY
     END:VCOMMAND

------------------------------------------------------------------------
X.2 Result Component

   Component Name: "VRESULT"

   Purpose: Provide a grouping of component properties that describe the
   result of a command.

   Format Definition: A "VRESULT" calendar component is defined by the
   following notation:

        resultc = "BEGIN" ":" "VRESULT" CRLF
                  resultprop
                  component          ; Defined in RFC 2445
                  "END" ":" "VRESULT" CRLF

        resultprop = *(

                   ; the following are REQUIRED,
                   ; and MUST NOT occur more than once

                   cmdid / request-status

                   ; the following are OPTIONAL,
                   ; and MAY occur more than once

                   target / x-prop / iana-prop

                   )

   Description: A "VRESULT" calendar component is a grouping of
   component properties, and possibly including other calendar
   components, that represents the result of a CAP command.  Multiple
   VRESULT components may be returned as a result of a single VCOMMAND
   (e.g., one VRESULT component for each TARGET property specified in
   the submitted VCOMMAND component).

   Example: The following is an example of the "VRESULT" calendar
   component return after a successful creation of a new VEVENT
   in a calendar:

     BEGIN:VRESULT
     CMDID:abcd1234
     REQUEST-STATUS:2.0
     TARGET:cap://cal.host.com/mary-relcalid
     BEGIN:VEVENT
     UID:[email-masked]
     END:VEVENT
     END:VRESULT

   The following is an example of the "VRESULT" calendar component 
   returned after a successful search command for a specific VEVENT:

     BEGIN:VRESULT
     CMDID:abcd1235
     REQUEST-STATUS:2.0
     TARGET:cap://cal.host.com/mary-relcalid
     BEGIN:VEVENT
     UID:[email-masked]
     ORGAGNIZER:cap://cal.host.com/mary-relcalid
     ATTENDEE;PARTSTAT=ACCEPTED:cap://cal.host.com/mary-relcalid
    
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:cap://cal.host.com/bob-relcalid
     DTSTART:20010920T180000Z
     DTEND:20010920T190000Z
     SUMMARY:Mary invites Bob
     END:VEVENT
     END:VRESULT

------------------------------------------------------------------------
X.3 iTIP Component

   Component Name: "VITIP"

   Purpose: Provide a grouping of component properties that describe an
   iTIP message.

   Format Definition: A "VITIP" calendar component is defined by the
   following notation:

        vitipc = "BEGIN" ":" "VITIP" CRLF
                 icalbody        ; Defined in RFC 2445
                 "END" ":" "VITIP" CRLF

   Description: A "VITIP" calendar component is a grouping of component
   properties, and possibly including other calendar components, that
   represents an iTIP message.

   Example: The following is an example of the "VITIP" calendar
   component return after a successful creation of a new VEVENT
   in a calendar:

     BEGIN:VITIP
     VERSION:2.0
     PRODID:-//ACME/DesktopCalendar//EN
     METHOD:REQUEST
     BEGIN:VEVENT
     UID:[email-masked]
     ORGAGNIZER:cap://cal.host.com/mary-relcalid
     ATTENDEE;PARTSTAT=ACCEPTED:cap://cal.host.com/mary-relcalid
    
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:cap://cal.host.com/bob-relcalid
     DTSTART:20010920T180000Z
     DTEND:20010920T190000Z
     SUMMARY:Mary invites Bob
     END:VEVENT
     END:VITIP

------------------------------------------------------------------------
X.4 Command Property

   Property Name: CMD

   Purpose: This property identifies the command in the VCOMMAND
   component.

   Value Type: TEXT

   Property Parameters: Only non-standard property parameters can be
   specified on this property.

   Conformance: This property MUST be specified once in a "VCOMMAND"
   calendar component.

   Description: This property is used in the "VCOMMAND" calendar
   component to specify the command to be performed by the CUA or
   the CS.

   Format Definition: The property is defined by the following notation:

        cmd     = "CMD" cmdparam ":" cmdvalue CRLF

        cmdparam  = *( ";" xparam )

        cmdvalue = ( "GENERATE-UID" /
                     "GET-CAPABILITY" /
                     "IDENTIFY" /
                     "NOOP" /
                     "CREATE" /
                     "MOVE" /
                     "DELETE" /
                     "MODIFY" /
                     "SEARCH" /
                     "ABORT" /
                     "CONTINUE" /
                     x-name /
                     iana-token )

   Example: The following are examples of this property:

        CMD:CREATE

        CMD:MOVE

------------------------------------------------------------------------
X.5 Command Identifier Property

   Property Name: CMDID

   Purpose: This property specifies the identifier for a command
   calendar component.

   Value Type: TEXT

   Property Parameters: Non-standard property parameters can be
   specified on this property.

   Conformance: This property MUST be specified once in a "VCOMMAND"
   calendar component.

   Description: This property is used in the "VCOMMAND" calendar
   component to specify an identifier.

   Format Definition: The property is defined by the following notation:

        cmdid      = "CMDID" cmdidparam ":" text CRLF

        cmdidparam = *( ";" xparam )

   Example: The following is an example of this property:

        CMDID:abcd-123

------------------------------------------------------------------------
X.6 Command Latency Property

   Property Name: LATENCY

   Purpose: This property specifies the maximum latency time in seconds
   for a CAP command.

   Value Type: INTEGER

   Property Parameters: Non-standard property parameters can be
   specified on this property.

   Conformance: This property MAY be specified once in a "VCOMMAND"
   calendar component.

   Description: This property is used in the "VCOMMAND" calendar
   component to specify the maximum latency time in seconds for a
   CAP command.

   Format Definition: The property is defined by the following notation:

        latency      = "LATENCY" latencyparam ":" integer CRLF

        latencyparam = *(

                     ; the following is optional,
                     ; but MUST NOT occur more than once

                     ( ";" actionparam ) /

                     ; the following is optional,
                     ; and MAY occur more than once

                     ( ";" xparam )

                     )

   Example: The following are examples of this property:

        LATENCY:10

        LATENCY;ACTION=ASK:5

------------------------------------------------------------------------
X.7 Action Parameter

   Parameter Name: ACTION

   Purpose: To specify the action that should be taken when the maximum
   latency time is exceeded.

   Format Definition: The property parameter is defined by the following
   notation:

     actionparam  = "ACTION" "=" ( "ABORT" /
                                   "ASK" /
                                   x-name /
                                   iana-token )

   Description: This parameter can be specified on the "LATENCY"
   property.  The parameter specifies whether a command should
   be aborted when the maximum latency time is exceed or if the
   remote peer (e.g., CUA) should be prompted to find out if
   the command should be continued or aborted.

------------------------------------------------------------------------
X.8 Destination Property

   Property Name: DESTINATION

   Purpose: This property specifies the address of a calendar to
   which components should be moved.

   Value Type: CAL-ADDRESS

   Property Parameters: Non-standard property parameters can be
   specified on this property.

   Conformance: This property MAY be specified once in a "VCOMMAND"
   calendar component.

   Description: This property is used in the "VCOMMAND" calendar
   component to specify the address of a calendar to which components
   should be moved as a result of a MOVE command.

   Format Definition: The property is defined by the following notation:

        destination = "DESTINATION" destinationparam ":" integer CRLF

        destinationparam = *( ";" xparam )

   Example: The following is an example of this property:

        DESTINATION:cap://cal.host.com/mary-relcalid

------------------------------------------------------------------------
X.9 Unique Identifier Count Property

   Property Name: UIDCOUNT

   Purpose: This property specifies the number of UID properties
   requested as part of a GENERATE-UID command.

   Value Type: INTEGER

   Property Parameters: Non-standard property parameters can be
   specified on this property.

   Conformance: This property MAY be specified once in a "VCOMMAND"
   calendar component.

   Description: This property is used in the "VCOMMAND" calendar
   component to specify the number of UID properties that must be
   returned as a result of a GENERATE-UID command.

   Format Definition: The property is defined by the following notation:

        uidcount      = "UIDCOUNT" uidcountparam ":" integer CRLF

        uidcountparam = *( ";" xparam )

   Example: The following is an example of this property:

        UIDCOUNT:42

------------------------------------------------------------------------
X.10 Identity Property

   Property Name: IDENTITY

   Purpose: This property specifies a new identity for a CAP session.

   Value Type: UPN

   Property Parameters: Non-standard property parameters can be
   specified on this property.

   Conformance: This property MAY be specified once in a "VCOMMAND"
   calendar component.

   Description: This property is used in the "VCOMMAND" calendar
   component to specify a new identity for a CAP session.

   Format Definition: The property is defined by the following notation:

        identity     = "IDENTITY" identityparam ":" upn CRLF

        identityparam = *( ";" xparam )

   Example: The following are examples of this property:

        IDENTITY:[email-masked]

        IDENTITY:@

------------------------------------------------------------------------

---

From: [email-masked]
Date: Wed, 12 Jun 2002 14:04:06 -0400

Cool. Just checking.  There are so many draft numbers running around, I 
wanted to make sure we were not opening any worm cans.  Glad to see 
activity back on the list - the last thing I want to do is stop it.  Keep 
up the good work!!!!
___________________
Patricia Egen Consulting
www.egenconsulting.com
423-875-2652

Bernard Desruisseaux <[email-masked]>
06/12/02 14:07

        To:     [email-masked]
        cc:     [email-masked]
        Subject:        Re: Full proposal for current issue (i.e., Where to store METHOD info)

[email-masked] wrote:
> 
> Bernard, I thought there were some major issues with Version 05.  Will
> putting these comments back in bring back those issues?

Hi Pat,

Draft 05 was defining a new iCalendar component, VCOMMAND,
to specify CAP commands.

In draft 06 the use of XML allowed use to get rid of the
VCOMMAND component, since the information contained in
this component was now stored in the XML portion.

Following the removal of XML in CAP it is only normal to
bring it back!

Other than the VCOMMAND component, I'm not bringing back
anything else from draft 05.

Cheers,
Bernard