Full proposal for current issue (i.e., Where to store METHOD info)
Bernard Desruisseaux <bernard <at> steltor.com>
2002-06-12 15:01:23 GMT
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:bernard <at> steltor.com
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:20010919T103000Z-123401 <at> host.com
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 = '20010919T103000Z-123401 <at> host.com'
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:20010919T103000Z-123401 <at> host.com
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:20010919T103000Z-123401 <at> host.com
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:20010919T103000Z-123401 <at> host.com
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:bill <at> cal.example.com
IDENTITY: <at>
------------------------------------------------------------------------