draft-ietf-calsch-cap-09.txt   draft-ietf-calsch-cap-10.txt 
Network Working Group D. Royer Network Working Group D. Royer
Internet-Draft INET-Consulting Internet-Draft INET-Consulting
Expires: May 4, 2003 G. Babics Expires: August 28, 2003 G. Babics
Oracle Oracle
P. Hill P. Hill
Massachusetts Institute of Massachusetts Institute of
Technology Technology
S. Mansour S. Mansour
AOL/Netscape AOL/Netscape
November 3, 2002 February 27, 2003
Calendar Access Protocol (CAP) Calendar Access Protocol (CAP)
draft-ietf-calsch-cap-09.txt draft-ietf-calsch-cap-10
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026. all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet- other groups may also distribute working documents as Internet-
Drafts. Drafts.
skipping to change at page 1, line 38 skipping to change at page 1, line 38
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at http:// The list of current Internet-Drafts can be accessed at http://
www.ietf.org/ietf/1id-abstracts.txt. www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on May 4, 2003. This Internet-Draft will expire on August 28, 2003.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2002). All Rights Reserved. Copyright (C) The Internet Society (2003). All Rights Reserved.
Abstract Abstract
The Calendar Access Protocol (CAP) is an Internet protocol described The Calendar Access Protocol (CAP) is an Internet protocol described
in this memo that permits a Calendar User (CU) to utilize a Calendar in this memo that permits a Calendar User (CU) to utilize a Calendar
User Agent (CUA) to access an [iCAL] based Calendar Store (CS). User Agent (CUA) to access an [iCAL] based Calendar Store (CS).
The CAP definition is based on requirements identified by the The CAP definition is based on requirements identified by the
Internet Engineering Task Force (IETF) Calendaring and Scheduling Internet Engineering Task Force (IETF) Calendaring and Scheduling
(CALSCH) Working Group. More information about the IETF CALSCH (CALSCH) Working Group. More information about the IETF CALSCH
Working Group activities can be found on the IMC web site at http:// Working Group activities can be found on the IMC web site at http://
www.imc.org/ietf-calendar and at the IETF web site at http:// www.imc.org/ietf-calendar and at the IETF web site at http://
www.ietf.org/html.charters/calsch-charter.html [1]. Refer to the www.ietf.org/html.charters/calsch-charter.html [1]. Refer to the
references within this memo for further information on how to access references within this memo for further information on how to access
these various documents. these various documents.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . 5 1. Introduction . . . . . . . . . . . . . . . . . . . . . . 6
1.1 Formatting Conventions . . . . . . . . . . . . . . . . . 5 1.1 Formatting Conventions . . . . . . . . . . . . . . . . . 6
1.2 Related Documents . . . . . . . . . . . . . . . . . . . 6 1.2 Related Documents . . . . . . . . . . . . . . . . . . . 7
1.3 Definitions . . . . . . . . . . . . . . . . . . . . . . 7 1.3 Definitions . . . . . . . . . . . . . . . . . . . . . . 8
2. Additions to iCalendar . . . . . . . . . . . . . . . . . 12 2. Additions to iCalendar . . . . . . . . . . . . . . . . . 13
2.1 New Value Types (summary) . . . . . . . . . . . . . . . 13 2.1 New Value Types (summary) . . . . . . . . . . . . . . . 15
2.1.1 New Parameters (summary) . . . . . . . . . . . . . . . . 14 2.1.1 New Parameters (summary) . . . . . . . . . . . . . . . . 15
2.1.2 New Properties (summary) . . . . . . . . . . . . . . . . 15 2.1.2 New Properties (summary) . . . . . . . . . . . . . . . . 16
2.1.3 New Components (summary) . . . . . . . . . . . . . . . . 17 2.1.3 New Components (summary) . . . . . . . . . . . . . . . . 18
2.2 Relationship of RFC-2446 (ITIP) and CAP . . . . . . . . 18 2.2 Relationship of RFC-2446 (ITIP) and CAP . . . . . . . . 19
3. CAP Design . . . . . . . . . . . . . . . . . . . . . . . 20 3. CAP Design . . . . . . . . . . . . . . . . . . . . . . . 22
3.1 System Model . . . . . . . . . . . . . . . . . . . . . . 20 3.1 System Model . . . . . . . . . . . . . . . . . . . . . . 22
3.2 Calendar Store Object Model . . . . . . . . . . . . . . 20 3.2 Calendar Store Object Model . . . . . . . . . . . . . . 22
3.3 Protocol Model . . . . . . . . . . . . . . . . . . . . . 21 3.3 Protocol Model . . . . . . . . . . . . . . . . . . . . . 23
3.3.1 Use of BEEP, MIME and iCalendar . . . . . . . . . . . . 22 3.3.1 Use of BEEP, MIME and iCalendar . . . . . . . . . . . . 24
4. Security Model . . . . . . . . . . . . . . . . . . . . . 24 4. Security Model . . . . . . . . . . . . . . . . . . . . . 26
4.1 Calendar User and UPNs . . . . . . . . . . . . . . . . . 24 4.1 Calendar User and UPNs . . . . . . . . . . . . . . . . . 26
4.1.1 UPNs and Certificates . . . . . . . . . . . . . . . . . 24 4.1.1 UPNs and Certificates . . . . . . . . . . . . . . . . . 26
4.1.2 Anonymous Users and Authentication . . . . . . . . . . . 25 4.1.2 Anonymous Users and Authentication . . . . . . . . . . . 27
4.1.3 User Groups . . . . . . . . . . . . . . . . . . . . . . 25 4.1.3 User Groups . . . . . . . . . . . . . . . . . . . . . . 27
4.2 Access Rights . . . . . . . . . . . . . . . . . . . . . 26 4.2 Access Rights . . . . . . . . . . . . . . . . . . . . . 28
4.2.1 Access Control and NOCONFLICT . . . . . . . . . . . . . 26 4.2.1 Access Control and NOCONFLICT . . . . . . . . . . . . . 28
4.2.2 Calendar Access Right (VCAR) . . . . . . . . . . . . . . 26 4.2.2 Predefined VCARs . . . . . . . . . . . . . . . . . . . . 28
4.2.3 Predefined VCARs . . . . . . . . . . . . . . . . . . . . 27 4.2.3 Decreed VCARs . . . . . . . . . . . . . . . . . . . . . 30
4.2.4 Decreed VCARs . . . . . . . . . . . . . . . . . . . . . 28 4.3 CAP Session Identity . . . . . . . . . . . . . . . . . . 31
4.3 CAP Session Identity . . . . . . . . . . . . . . . . . . 29 5. CAP URL and Calendar Address . . . . . . . . . . . . . . 32
5. CAP URL and Calendar Address . . . . . . . . . . . . . . 31 6. New Value Types . . . . . . . . . . . . . . . . . . . . 34
6. New Value Types . . . . . . . . . . . . . . . . . . . . 33 6.1 Property Value Data Types . . . . . . . . . . . . . . . 34
6.1 Property Value Data Types . . . . . . . . . . . . . . . 33 6.1.1 CAL-QUERY Value Type . . . . . . . . . . . . . . . . . . 34
6.1.1 CAL-QUERY Value Type . . . . . . . . . . . . . . . . . . 33 6.1.1.1 [NOT] CAL-OWNERS() . . . . . . . . . . . . . . . . . . . 39
6.1.1.1 [NOT] CAL-OWNERS() . . . . . . . . . . . . . . . . . . . 38 6.1.1.2 CURRENT-TARGET() . . . . . . . . . . . . . . . . . . . . 40
6.1.1.2 CURRENT-TARGET() . . . . . . . . . . . . . . . . . . . . 39 6.1.1.3 PARAM() . . . . . . . . . . . . . . . . . . . . . . . . 40
6.1.1.3 PARAM() . . . . . . . . . . . . . . . . . . . . . . . . 39 6.1.1.4 SELF() . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.1.1.4 SELF() . . . . . . . . . . . . . . . . . . . . . . . . . 39 6.1.1.5 STATE() . . . . . . . . . . . . . . . . . . . . . . . . 41
6.1.1.5 STATE() . . . . . . . . . . . . . . . . . . . . . . . . 40 6.1.1.6 Ordering of Results . . . . . . . . . . . . . . . . . . 41
6.1.1.6 Ordering of Results . . . . . . . . . . . . . . . . . . 40 6.1.1.7 Date sorting order . . . . . . . . . . . . . . . . . . . 42
6.1.1.7 Date sorting order . . . . . . . . . . . . . . . . . . . 40 6.1.1.8 Use of single quote . . . . . . . . . . . . . . . . . . 42
6.1.1.8 Use of single quote . . . . . . . . . . . . . . . . . . 41 6.1.1.9 Comparing DATE and DATE-TIME values . . . . . . . . . . 42
6.1.1.9 Comparing DATE and DATE-TIME values . . . . . . . . . . 41 6.1.1.10 DTEND and DURATION . . . . . . . . . . . . . . . . . . . 43
6.1.1.10 DTEND and DURATION . . . . . . . . . . . . . . . . . . . 42 6.1.1.11 [NOT] LIKE . . . . . . . . . . . . . . . . . . . . . . . 45
6.1.1.11 [NOT] LIKE . . . . . . . . . . . . . . . . . . . . . . . 44 6.1.1.12 Empty vs. NULL . . . . . . . . . . . . . . . . . . . . . 46
6.1.1.12 Empty vs. NULL . . . . . . . . . . . . . . . . . . . . . 45 6.1.1.13 [NOT] IN . . . . . . . . . . . . . . . . . . . . . . . . 46
6.1.1.13 [NOT] IN . . . . . . . . . . . . . . . . . . . . . . . . 45 6.1.1.14 DATE-TIME and TIME values in a WHEN clause . . . . . . . 47
6.1.1.14 DATE-TIME and TIME values in a WHEN clause . . . . . . . 46 6.1.1.15 Multiple contained components . . . . . . . . . . . . . 48
6.1.1.15 Multiple contained components . . . . . . . . . . . . . 47 6.1.1.16 Example, Query by UID . . . . . . . . . . . . . . . . . 48
6.1.1.16 Example, Query by UID . . . . . . . . . . . . . . . . . 47 6.1.1.17 Query by Date-Time range . . . . . . . . . . . . . . . . 49
6.1.1.17 Query by Date-Time range . . . . . . . . . . . . . . . . 48 6.1.1.18 Query for all Unprocessed Entries . . . . . . . . . . . 49
6.1.1.18 Query for all Unprocessed Entries . . . . . . . . . . . 48 6.1.1.19 Query with Subset of Properties by Date/Time . . . . . . 50
6.1.1.19 Query with Subset of Properties by Date/Time . . . . . . 49 6.1.1.20 Query with Components and Alarms In A Range . . . . . . 50
6.1.1.20 Query with Components and Alarms In A Range . . . . . . 49 6.1.2 UPN Value Type . . . . . . . . . . . . . . . . . . . . . 51
6.1.2 UPN Value Type . . . . . . . . . . . . . . . . . . . . . 50 6.1.3 UPN-FILTER Value . . . . . . . . . . . . . . . . . . . . 52
6.1.3 UPN-FILTER Value . . . . . . . . . . . . . . . . . . . . 51 7. New Parameters . . . . . . . . . . . . . . . . . . . . . 55
7. New Parameters . . . . . . . . . . . . . . . . . . . . . 53 7.1 ACTION Parameter . . . . . . . . . . . . . . . . . . . . 55
7.1 ENABLE Parameter . . . . . . . . . . . . . . . . . . . . 53 7.2 ENABLE Parameter . . . . . . . . . . . . . . . . . . . . 55
7.2 LOCAL Parameter . . . . . . . . . . . . . . . . . . . . 53 7.3 ID Parameter . . . . . . . . . . . . . . . . . . . . . . 56
8. New Properties . . . . . . . . . . . . . . . . . . . . . 55 7.4 LATENCY Parameter . . . . . . . . . . . . . . . . . . . 57
8.1 ALLOW-CONFLICT Property . . . . . . . . . . . . . . . . 55 7.5 LOCAL Parameter . . . . . . . . . . . . . . . . . . . . 58
8.2 ATT-COUNTER Property . . . . . . . . . . . . . . . . . . 55 7.6 LOCALIZE Parameter . . . . . . . . . . . . . . . . . . . 58
8.3 CALID Property . . . . . . . . . . . . . . . . . . . . . 56 7.7 OPTIONS Parameter . . . . . . . . . . . . . . . . . . . 59
8.4 CALMASTER Property . . . . . . . . . . . . . . . . . . . 57 8. New Properties . . . . . . . . . . . . . . . . . . . . . 61
8.5 CARID Property . . . . . . . . . . . . . . . . . . . . . 57 8.1 ALLOW-CONFLICT Property . . . . . . . . . . . . . . . . 61
8.6 CSID Property . . . . . . . . . . . . . . . . . . . . . 58 8.2 ATT-COUNTER Property . . . . . . . . . . . . . . . . . . 61
8.7 DECREED Property . . . . . . . . . . . . . . . . . . . . 59 8.3 CALID Property . . . . . . . . . . . . . . . . . . . . . 62
8.8 DEFAULT-CHARSET Property . . . . . . . . . . . . . . . . 59 8.4 CALMASTER Property . . . . . . . . . . . . . . . . . . . 63
8.9 DEFAULT-LOCALE Property . . . . . . . . . . . . . . . . 60 8.5 CAP-VERSION Property . . . . . . . . . . . . . . . . . . 63
8.10 DEFAULT-TZID Property . . . . . . . . . . . . . . . . . 61 8.6 CARID Property . . . . . . . . . . . . . . . . . . . . . 64
8.11 DEFAULT-VCARS Property . . . . . . . . . . . . . . . . . 62 8.7 CAR-LEVEL Property . . . . . . . . . . . . . . . . . . . 65
8.12 DENY Property . . . . . . . . . . . . . . . . . . . . . 63 8.8 COMPONENTS Property . . . . . . . . . . . . . . . . . . 65
8.13 EXPAND property . . . . . . . . . . . . . . . . . . . . 63 8.9 CSID Property . . . . . . . . . . . . . . . . . . . . . 67
8.14 GRANT Property . . . . . . . . . . . . . . . . . . . . . 64 8.10 DECREED Property . . . . . . . . . . . . . . . . . . . . 68
8.15 MAXDATE Property . . . . . . . . . . . . . . . . . . . . 65 8.11 DEFAULT-CHARSET Property . . . . . . . . . . . . . . . . 68
8.16 MINDATE Property . . . . . . . . . . . . . . . . . . . . 65 8.12 DEFAULT-LOCALE Property . . . . . . . . . . . . . . . . 69
8.17 MULTIPART Property . . . . . . . . . . . . . . . . . . . 66 8.13 DEFAULT-TZID Property . . . . . . . . . . . . . . . . . 70
8.18 NAME Property . . . . . . . . . . . . . . . . . . . . . 67 8.14 DEFAULT-VCARS Property . . . . . . . . . . . . . . . . . 71
8.19 OWNER Property . . . . . . . . . . . . . . . . . . . . . 68 8.15 DENY Property . . . . . . . . . . . . . . . . . . . . . 72
8.20 PERMISSION Property . . . . . . . . . . . . . . . . . . 69 8.16 EXPAND property . . . . . . . . . . . . . . . . . . . . 72
8.21 QUERY property . . . . . . . . . . . . . . . . . . . . . 69 8.17 GRANT Property . . . . . . . . . . . . . . . . . . . . . 73
8.22 QUERYID property . . . . . . . . . . . . . . . . . . . . 70 8.18 ITIP-VERSION Property . . . . . . . . . . . . . . . . . 74
8.23 REQUEST-STATUS property . . . . . . . . . . . . . . . . 71 8.19 MAX-COMP-SIZE Property . . . . . . . . . . . . . . . . . 75
8.24 RESTRICTION Property . . . . . . . . . . . . . . . . . . 72 8.20 MAXDATE Property . . . . . . . . . . . . . . . . . . . . 75
8.25 SCOPE Property . . . . . . . . . . . . . . . . . . . . . 73 8.21 MINDATE Property . . . . . . . . . . . . . . . . . . . . 76
8.26 TARGET Property . . . . . . . . . . . . . . . . . . . . 73 8.22 MULTIPART Property . . . . . . . . . . . . . . . . . . . 77
8.27 TRANSP Property . . . . . . . . . . . . . . . . . . . . 74 8.23 NAME Property . . . . . . . . . . . . . . . . . . . . . 77
9. New Components . . . . . . . . . . . . . . . . . . . . . 76 8.24 OWNER Property . . . . . . . . . . . . . . . . . . . . . 78
9.1 VAGENDA Component . . . . . . . . . . . . . . . . . . . 76 8.25 PERMISSION Property . . . . . . . . . . . . . . . . . . 79
9.2 VCALSTORE Component . . . . . . . . . . . . . . . . . . 78 8.26 QUERY property . . . . . . . . . . . . . . . . . . . . . 79
9.3 VCAR Component . . . . . . . . . . . . . . . . . . . . . 81 8.27 QUERYID property . . . . . . . . . . . . . . . . . . . . 80
9.4 VRIGHT Component . . . . . . . . . . . . . . . . . . . . 84 8.28 REQUEST-STATUS property . . . . . . . . . . . . . . . . 81
9.5 VREPLY Component . . . . . . . . . . . . . . . . . . . . 85 8.29 QUERY-LEVEL Property . . . . . . . . . . . . . . . . . . 82
9.6 VQUERY Component . . . . . . . . . . . . . . . . . . . . 85 8.30 RECUR-ACCEPTED Property . . . . . . . . . . . . . . . . 83
10. Commands and Responses . . . . . . . . . . . . . . . . . 87 8.31 RECUR-LIMIT Property . . . . . . . . . . . . . . . . . . 83
10.1 CAP Commands (CMD) . . . . . . . . . . . . . . . . . . . 87 8.32 RECUR-EXPAND Property . . . . . . . . . . . . . . . . . 84
10.1.1 Bounded Latency . . . . . . . . . . . . . . . . . . . . 88 8.33 RESTRICTION Property . . . . . . . . . . . . . . . . . . 85
10.1.2 ABORT Command . . . . . . . . . . . . . . . . . . . . . 91 8.34 SCOPE Property . . . . . . . . . . . . . . . . . . . . . 86
10.1.3 CONTINUE Command . . . . . . . . . . . . . . . . . . . . 92 8.35 STORES-EXPANDED Property . . . . . . . . . . . . . . . . 86
10.1.4 CREATE Command . . . . . . . . . . . . . . . . . . . . . 93 8.36 TARGET Property . . . . . . . . . . . . . . . . . . . . 87
10.1.5 DELETE Command . . . . . . . . . . . . . . . . . . . . . 99 8.37 TRANSP Property . . . . . . . . . . . . . . . . . . . . 88
10.2 GENERATE-UID Command . . . . . . . . . . . . . . . . . . 102 9. New Components . . . . . . . . . . . . . . . . . . . . . 90
10.3 GET-CAPABILITY Command . . . . . . . . . . . . . . . . . 104 9.1 VAGENDA Component . . . . . . . . . . . . . . . . . . . 90
10.4 IDENTIFY Command . . . . . . . . . . . . . . . . . . . . 108 9.2 VCALSTORE Component . . . . . . . . . . . . . . . . . . 92
10.5 MODIFY Command . . . . . . . . . . . . . . . . . . . . . 111 9.3 VCAR Component . . . . . . . . . . . . . . . . . . . . . 94
10.6 MOVE Command . . . . . . . . . . . . . . . . . . . . . . 115 9.4 VRIGHT Component . . . . . . . . . . . . . . . . . . . . 97
10.7 REPLY Response to a Command . . . . . . . . . . . . . . 118 9.5 VREPLY Component . . . . . . . . . . . . . . . . . . . . 98
10.8 SEARCH Command . . . . . . . . . . . . . . . . . . . . . 119 9.6 VQUERY Component . . . . . . . . . . . . . . . . . . . . 98
10.9 SET-LOCALE Command . . . . . . . . . . . . . . . . . . . 122 10. Commands and Responses . . . . . . . . . . . . . . . . . 101
10.10 TIMEOUT Command . . . . . . . . . . . . . . . . . . . . 124 10.1 CAP Commands (CMD) . . . . . . . . . . . . . . . . . . . 101
10.11 Response Codes . . . . . . . . . . . . . . . . . . . . . 125 10.1.1 Bounded Latency . . . . . . . . . . . . . . . . . . . . 102
11. Object Registration . . . . . . . . . . . . . . . . . . 128 10.1.2 ABORT Command . . . . . . . . . . . . . . . . . . . . . 105
11.1 Registration of New and Modified Entities . . . . . . . 128 10.1.3 CONTINUE Command . . . . . . . . . . . . . . . . . . . . 105
11.2 Post the item definition . . . . . . . . . . . . . . . . 128 10.1.4 CREATE Command . . . . . . . . . . . . . . . . . . . . . 107
11.3 Allow a comment period . . . . . . . . . . . . . . . . . 128 10.1.5 DELETE Command . . . . . . . . . . . . . . . . . . . . . 112
11.4 Release a new RFC . . . . . . . . . . . . . . . . . . . 128 10.2 GENERATE-UID Command . . . . . . . . . . . . . . . . . . 115
12. BEEP and CAP . . . . . . . . . . . . . . . . . . . . . . 129 10.3 GET-CAPABILITY Command . . . . . . . . . . . . . . . . . 117
12.1 BEEP Profile Registration . . . . . . . . . . . . . . . 129 10.4 IDENTIFY Command . . . . . . . . . . . . . . . . . . . . 120
12.2 BEEP Exchange Styles . . . . . . . . . . . . . . . . . . 129 10.5 MODIFY Command . . . . . . . . . . . . . . . . . . . . . 122
13. IANA Considerations . . . . . . . . . . . . . . . . . . 130 10.6 MOVE Command . . . . . . . . . . . . . . . . . . . . . . 127
14. Security Considerations . . . . . . . . . . . . . . . . 131 10.7 REPLY Response to a Command . . . . . . . . . . . . . . 130
Authors' Addresses . . . . . . . . . . . . . . . . . . . 132 10.8 SEARCH Command . . . . . . . . . . . . . . . . . . . . . 131
A. Acknowledgments . . . . . . . . . . . . . . . . . . . . 134 10.9 SET-LOCALE Command . . . . . . . . . . . . . . . . . . . 134
B. Bibliography . . . . . . . . . . . . . . . . . . . . . . 135 10.10 TIMEOUT Command . . . . . . . . . . . . . . . . . . . . 136
Full Copyright Statement . . . . . . . . . . . . . . . . 137 10.11 Response Codes . . . . . . . . . . . . . . . . . . . . . 136
11. Object Registration . . . . . . . . . . . . . . . . . . 139
11.1 Registration of New and Modified Entities . . . . . . . 139
11.2 Post the item definition . . . . . . . . . . . . . . . . 139
11.3 Allow a comment period . . . . . . . . . . . . . . . . . 139
11.4 Release a new RFC . . . . . . . . . . . . . . . . . . . 139
12. BEEP and CAP . . . . . . . . . . . . . . . . . . . . . . 140
12.1 BEEP Profile Registration . . . . . . . . . . . . . . . 140
12.2 BEEP Exchange Styles . . . . . . . . . . . . . . . . . . 140
13. IANA Considerations . . . . . . . . . . . . . . . . . . 141
14. Security Considerations . . . . . . . . . . . . . . . . 142
Authors' Addresses . . . . . . . . . . . . . . . . . . . 143
A. Acknowledgments . . . . . . . . . . . . . . . . . . . . 145
B. Bibliography . . . . . . . . . . . . . . . . . . . . . . 146
Full Copyright Statement . . . . . . . . . . . . . . . . 148
1. Introduction 1. Introduction
This document specifies how a Calendar CUA interacts with a CS to This document specifies how a Calendar CUA interacts with a CS to
manage calendar information. In particular, it specifies how to manage calendar information. In particular, it specifies how to
query, create, modify, and delete iCalendar components (e.g., events, query, create, modify, and delete iCalendar components (e.g., events,
to-dos, or daily journal entries). It further specifies how to to-dos, or daily journal entries). It further specifies how to
search for available busy time information. Synchronization with search for available busy time information. Synchronization with
CUAs is not covered. CUAs is not covered.
CAP is specified as a BEEP "profile". As such, many aspects of the CAP is specified as a [BEEP] "profile". As such, many aspects of the
protocol (e.g., authentication and privacy) are provided within protocol (e.g., authentication and privacy) are provided within
[BEEP]. The protocol data units leverage the standard iCalendar [BEEP]. The protocol data units leverage the standard iCalendar
format [iCAL] to convey calendar related information. format [iCAL] to convey calendar related information.
CAP can also be used to store and fetch [iTIP] objects and when those CAP can also be used to store and fetch [iTIP] objects and when those
objects are used in this memo, they mean exactly the same as defined objects are used in this memo, they mean exactly the same as defined
in [iTIP]. When iCalendar objects are transfered between the CUA and in [iTIP]. When iCalendar objects are transferred between the CUA
a CS, some additional properties and parameters may be added and the and a CS, some additional properties and parameters may be added and
CUA is responsible for correctly generating iCalendar objects to non the CUA is responsible for correctly generating iCalendar objects to
CAP processes. non CAP processes.
The definition of new components, properties, parameter's, and value The definition of new components, properties, parameter's, and value
types are broken into two parts. The first part summarizes and types are broken into two parts. The first part summarizes and
defined the new objects. The second part provides the detail and any defined the new objects. The second part provides the detail and any
ABNF for those objects. ABNF for those objects.
1.1 Formatting Conventions 1.1 Formatting Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" and "OPTIONAL" in this
skipping to change at page 7, line 14 skipping to change at page 8, line 14
other, how they interact with end users, and how the standards and other, how they interact with end users, and how the standards and
protocols are used. protocols are used.
This memo does not attempt to repeat the specification of concepts This memo does not attempt to repeat the specification of concepts
and definitions from these other memos. Where possible, references and definitions from these other memos. Where possible, references
are made to the memo that provides for the specification of these are made to the memo that provides for the specification of these
concepts and definitions. concepts and definitions.
1.3 Definitions 1.3 Definitions
BOOKED - An obect in the calendar store has one of three conceptual BOOKED - An object in the calendar store has one of three conceptual
states. It is "UNPROCESSED" state, "BOOKED" state or marked as states. It is in the "UNPROCESSED" state, "BOOKED" state, or
"DELETED" state. How the implementation stores the state of any marked for deletion which is the "DELETED" state. How the
object is not a protocol issues and is not discussed. An object implementation stores the state of any object is not a protocol
can be said to be booked, unprocessed, or marked for delete. issues and is not discussed. An object can be said to be booked,
unprocessed, or marked for delete.
1. An "UNPROCESSED" state scheduling object has been stored in 1. An "UNPROCESSED" state scheduling object has been stored in
the calendar store but has not been acted on by a CU or CUA. the calendar store but has not been acted on by a CU or CUA.
All scheduled entries are [iTIP] objects. All [iTIP] objects All scheduled entries are [iTIP] objects. All [iTIP] objects
in the store are not in the "BOOKED" state. To retrieve any in the store are not in the "BOOKED" state. To retrieve any
[iTIP] object, simply do a query asking for any objects that [iTIP] object, simply do a query asking for any objects that
were stored in the "UNPROCESSED" state. were stored in the "UNPROCESSED" state.
2. A "BOOKED" state entry is stored with the "CREATE" command. 2. A "BOOKED" state entry is stored with the "CREATE" command.
It is an object that has been acted on by a CU or CUA and It is an object that has been acted on by a CU or CUA and
skipping to change at page 8, line 14 skipping to change at page 9, line 15
properties that make up the contents of a calendar. properties that make up the contents of a calendar.
Calendar Access Protocol (CAP) - The standard Internet protocol that Calendar Access Protocol (CAP) - The standard Internet protocol that
permits a CUA to access and manipulate calendars residing on a permits a CUA to access and manipulate calendars residing on a
Calendar Store. (this memo) Calendar Store. (this memo)
Calendar Access Rights (VCAR) - The mechanism for specifying the CAP Calendar Access Rights (VCAR) - The mechanism for specifying the CAP
operations ("PERMISSION") that a particular calendar user ("UPN") operations ("PERMISSION") that a particular calendar user ("UPN")
is granted or denied permission to perform on a given calendar is granted or denied permission to perform on a given calendar
object ("SCOPE"). The calendar access rights are specified with a object ("SCOPE"). The calendar access rights are specified with a
"VCAR" component. "VCAR" component. (Section 9.3.
Calendar Address - Also See Calendar URL - they are one in the same Calendar Address - Also See Calendar URL - they are one in the same
for CAP addresses. The calendar address can also be the value to for CAP addresses. The calendar address can also be the value to
the "ATTENDEE" and "ORGANIZER" properties as defined in [iCAL]. the "ATTENDEE" and "ORGANIZER" properties as defined in [iCAL].
Calendar URL - A calendar URL is a URL defined in this memo that Calendar URL - A calendar URL is a URL defined in this memo that
specifies the address of a CS or Calendar. specifies the address of a CS or Calendar.
Component- Any object that conforms to the iCalendar object format Component- Any object that conforms to the iCalendar object format
and that is either defined in an internet draft, registered with and that is either defined in an internet draft, registered with
skipping to change at page 9, line 19 skipping to change at page 10, line 21
Calendar Store as defined in this memo. This memo does not Calendar Store as defined in this memo. This memo does not
specify how the CS is implemented. specify how the CS is implemented.
Calendar Server - An implementation of a Calendar Store (CS) that Calendar Server - An implementation of a Calendar Store (CS) that
manages one or more calendars. manages one or more calendars.
Calendar Store Identifier (CSID) - The globally unique identifier Calendar Store Identifier (CSID) - The globally unique identifier
for an individual CS. A CSID consists of the host and port for an individual CS. A CSID consists of the host and port
portions of a "Common Internet Scheme Syntax" part of a URL, as portions of a "Common Internet Scheme Syntax" part of a URL, as
defined by [URL]. The CSID excludes any reference to a specific defined by [URL]. The CSID excludes any reference to a specific
calendar. calendar. (Section 8.9)
Calendar Store Components - Components maintained in a CS specify a Calendar Store Components - Components maintained in a CS specify a
grouping of calendar store-wide information. grouping of calendar store-wide information.
Calendar Store Properties - Properties maintained in a Calendar Calendar Store Properties - Properties maintained in a Calendar
Store calendar store-wide information. Store calendar store-wide information.
Calendar User (CU) - An entity (often biological) that uses a Calendar User (CU) - An entity (often biological) that uses a
calendaring system. calendaring system.
Calendar User Agent (CUA) - The client application that a CU Calendar User Agent (CUA) - The client application that a CU
utilizes to access and manipulate a calendar. utilizes to access and manipulate a calendar.
CAP Session - An open communication channel between a CUA and a CAP Session - An open communication channel between a CUA and a CS.
Calendar Server. If the CAP session is authenticated, the CU is If the CAP session is authenticated, the CU is "authenticated" and
"authenticated" and it is an "authenticated CAP session". it is an "authenticated CAP session".
Contained Component / Contained Properties - A component or property Contained Component / Contained Properties - A component or property
that is contained inside of another component. A "VALARM" that is contained inside of another component. A "VALARM"
component for example may be contained inside of a "VEVENT" component for example may be contained inside of a "VEVENT"
component. And a "TRIGGER" property could be a contained property component. And a "TRIGGER" property could be a contained property
of a "VALARM" component. of a "VALARM" component.
Delegate - A CU (sometimes called the delegatee) who has been Delegate - A CU (sometimes called the delegatee) who has been
assigned participation in a scheduled component (e.g., VEVENT) by assigned participation in a scheduled component (e.g., VEVENT) by
one of the attendees in the scheduled component (sometimes called one of the attendees in the scheduled component (sometimes called
skipping to change at page 9, line 51 skipping to change at page 11, line 4
of a "VALARM" component. of a "VALARM" component.
Delegate - A CU (sometimes called the delegatee) who has been Delegate - A CU (sometimes called the delegatee) who has been
assigned participation in a scheduled component (e.g., VEVENT) by assigned participation in a scheduled component (e.g., VEVENT) by
one of the attendees in the scheduled component (sometimes called one of the attendees in the scheduled component (sometimes called
the delegator). An example of a delegate is a team member told to the delegator). An example of a delegate is a team member told to
go to a particular meeting in place of another Attendee who is go to a particular meeting in place of another Attendee who is
unable to attend. unable to attend.
Designate - A CU who is authorized to act on behalf of another CU. Designate - A CU who is authorized to act on behalf of another CU.
An example of a designate is an assistant. An example of a designate is an assistant.
Experiential - The CUA and CS may implement experimental extensions Experimental - The CUA and CS may implement experimental extensions
to the protocol. They also might have experimental components, to the protocol. They also might have experimental components,
properties, and parameters. These extensions MUST start with "x-" properties, and parameters. These extensions MUST start with "x-"
(or "X-") and should include a vendor prefix (such as "x-myvendor- (or "X-") and should include a vendor prefix (such as "x-myvendor-
"). There is no guarantee that these experimental extensions will "). There is no guarantee that these experimental extensions will
interoperate with other implementations. There is no guarantee interoperate with other implementations. There is no guarantee
that they will not interact in unpredictable ways with other that they will not interact in unpredictable ways with other
vendor experimental extensions. Implementations should limit vendor experimental extensions. There is no guarantee that the
same specific experimental extension is not used my multiple
vendors in incompatible ways. Implementations should limit
sending those extensions to other implementations. sending those extensions to other implementations.
Object - A generic name for any component, property, parameter, or Object - A generic name for any component, property, parameter, or
value type to be used in iCalendar. value type to be used in iCalendar.
Overlapped Booking - A policy which indicates whether or not Overlapped Booking - A policy which indicates whether or not
components with a "TRANSP" property not set to "TRANSPARENT- components with a "TRANSP" property not set to "TRANSPARENT-
NOCONFLICT" or "OPAQUE-NOCONFLICT" value can overlap one another. NOCONFLICT" or "OPAQUE-NOCONFLICT" value can overlap one another.
When the policy is applied to a calendar it indicates whether or When the policy is applied to a calendar it indicates whether or
not the time span of any component (VEVENT, VTODO, ...) in the not the time span of any component (VEVENT, VTODO, ...) in the
skipping to change at page 11, line 14 skipping to change at page 12, line 17
User Group (UG) - A collection of Calendar Users and/or User Groups. User Group (UG) - A collection of Calendar Users and/or User Groups.
These groups are expanded by the CS and may reside either locally These groups are expanded by the CS and may reside either locally
or in an external database or directory. The group membership may or in an external database or directory. The group membership may
be fixed or dynamic over time. be fixed or dynamic over time.
Username - A name which denotes a Calendar User within a Realm. Username - A name which denotes a Calendar User within a Realm.
This is part of a UPN. This is part of a UPN.
User Principal Name (UPN) - A unique identifier that denotes a CU or User Principal Name (UPN) - A unique identifier that denotes a CU or
a group of CU. A UPN is a RFC 822 compliant email address, with a group of CU. (Section 6.1.2)
exceptions listed below, and in most cases it is deliverable to
the CU. In some cases it is identical to the CU's well known
email address. A CU's UPN MUST never be an e-mail address that is
deliverable to a different person as there is no requirement that
a person's UPN MUST BE their e-mail address. A UPN is formatted
as a user name followed by "@" followed by a Realm in the form of
a valid, and unique, DNS domain name. The user name MUST BE
unique within the Realm. In it's simplest form it looks like
"user@example.com".
In certain cases a UPN will not be RFC 822 compliant. When
anonymous authentication is used, or anonymous authorization is
being defined, the special UPN "@" will be used. When
authentication MUST BE used, but unique identity MUST BE obscured,
a UPN of the form @DNS-domain-name may be used. For example,
"@example.com".
2. Additions to iCalendar 2. Additions to iCalendar
Several new components, properties, parameters, and value types are Several new components, properties, parameters, and value types are
added in CAP. This section summarizes those new objects. added in CAP. This section summarizes those new objects.
This memo extends the properties that can go into 'calprops' as This memo extends the properties that can go into 'calprops' as
defined in [iCAL] section 4.6 page 51 to allow [iTIP] objects defined in [iCAL] section 4.6 page 51 to allow [iTIP] objects
transmitted between a CAP aware CUA and the CS to contain the transmitted between a CAP aware CUA and the CS to contain the
"TARGET" and "CMD" properties. This memo does not address how a CUA "TARGET" and "CMD" properties. This memo does not address how a CUA
skipping to change at page 12, line 33 skipping to change at page 13, line 33
; These are optional, but MUST NOT occur ; These are optional, but MUST NOT occur
; more than once. ; more than once.
; ;
calscale / calscale /
method / method /
cmd / cmd /
; These are optional, and may occur more ; These are optional, and may occur more
; than once. ; than once.
; ;
target / target / other-props )
iana-prop /
x-prop other-props = *(x-prop) *(iana-prop) *(x-prop)
iana-prop = ; Any property registered by IANA directly or
; included in an RFC that may be applied to
; the component and within the rules published.
x-prop = ; As defined in [iCAL]
Another change is that the 'component' part of the 'icalbody' ABNF as Another change is that the 'component' part of the 'icalbody' ABNF as
described in [iCAL] section 4.6 is optional when sending a command as described in [iCAL] section 4.6 is optional when sending a command as
shown in the following updated ABNF: shown in the following updated ABNF:
icalbody = calprops component icalbody = calprops component
; If the "VCALENDAR" component contains the "CMD" ; If the "VCALENDAR" component contains the "CMD"
; component then the 'component' is optional: ; property then the 'component' is optional:
; ;
/ calprops ; Which MUST include a "CMD" property / calprops ; Which MUST include a "CMD" property
In addition a problem exists with the control of "VALARM" components In addition a problem exists with the control of "VALARM" components
and their "TRIGGER" properties. A CU may wish to set their own alarm and their "TRIGGER" properties. A CU may wish to set their own alarm
(local alarms) on components. These local alarms are not to be (local alarms) on components. These local alarms are not to be
forwarded to other CUs, CUAs, or CSs as are the "SEQUENCE" property forwarded to other CUs, CUAs, or CSs as are the "SEQUENCE" property
and the "ENABLE" parameter. So for the protocol between a CUA and a and the "ENABLE" parameter. So for the protocol between a CUA and a
CS, the following changes apply to the CAP protocol from [iCAL] CS, the following changes apply to the CAP protocol from [iCAL]
section "4.6.6" page 67: section 4.6.6 page 67:
alarmc = "BEGIN" ":" "VALARM" CRLF alarmc = "BEGIN" ":" "VALARM" CRLF
alarm-seq alarm-seq
iana-prop other-props
(audioprop / dispprop / emailprop / procprop) (audioprop / dispprop / emailprop / procprop)
"END" ":" "VALARM" CRLF "END" ":" "VALARM" CRLF
alarm-seq = "SEQUENCE" alarmseqparam ":" integer CRLF alarm-seq = "SEQUENCE" alarmseqparams ":" posint0 CRLF
alarmseqparam = *( ";" xparam) alarmseqparams = other-params [";" local-param] other-params
/ ";" local-param
; Where DIGIT is defined in [iCAL]
;
posint0 = 1*DIGIT
posint1 = posintfirst 1*DIGIT
; A number starting with 1 through 9.
;
posintfirst = %x31-39
other-params = *(";" xparam) *(";" iana-params) *(";" xparam)
iana-params = ; Any parameter registered by IANA directly or
; included in an RFC that may be applied to
; the property and within the rules published.
The CUA adds a "SEQUENCE" property to each "VALARM" component as it The CUA adds a "SEQUENCE" property to each "VALARM" component as it
books the component. This property along with the "LOCAL" and books the component. This property along with the "LOCAL" and
"ENABLE" parameters allow the CUA to uniquely identify any VALARM in "ENABLE" parameters allow the CUA to uniquely identify any VALARM in
any component. The CUA should remove those before forwarding to non any component. The CUA should remove those before forwarding to non
CAP aware CUAs (including [iMIP] CUAs). CAP aware CUAs (including [iMIP] CUAs).
In addition, if a CUA wished to ignore a "TRIGGER" property in a In addition, if a CUA wished to ignore a "TRIGGER" property in a
"VALARM" component that was supplied to it by the "Organizer", the "VALARM" component that was supplied to it by the "Organizer", the
CUA needs a common way to tag that trigger as disabled. So for the CUA needs a common way to tag that trigger as disabled. So for the
protocol between a CUA and a CS, the following is a modification to protocol between a CUA and a CS, the following is a modification to
[iCAL] section "4.8.6.3" page 127: [iCAL] section 4.8.6.3 page 127:
trigger = "TRIGGER" 1*(";" enable-param) (trigrel / trigabs) trigger = "TRIGGER" 1*(";" enable-param) (trigrel / trigabs)
Section 7.1 and Section 7.2. Section 7.2 and Section 7.5.
These additions will be transmitted between a CS and a CAP aware CUA. These additions will be transmitted between a CS and a CAP aware CUA.
So the "VERSION" value will remain at "2.0" as no existing [iTIP] or So the "VERSION" value will remain at "2.0" as no existing [iTIP] or
[iMIP] implementation will be effected. [iMIP] implementation will be effected.
2.1 New Value Types (summary) 2.1 New Value Types (summary)
UPN The UPN value type is text value type restricted to only UPN UPN The UPN value type is text value type restricted to only UPN
values. (Section 6.1.2) values. (Section 6.1.2)
UPN-FILTER Like the UPN value type, but also includes filter rules UPN-FILTER Like the UPN value type, but also includes filter rules
that allow wildcards. (Section 6.1.3) that allow wildcards. (Section 6.1.3)
CALQUERY The "CAL-QUERY" (Section 6.1.1) value type is a query syntax
that is used by the CUA to specify the rules that apply to a CAP
command. In the case of "SEARCH" command the query language is
used to fetch objects from the CS. When used with the "DELETED"
command, the selected objects are deleted from the CS. "CAL-
QUERY" value type can also be used with "MOVE" and "MODIFY"
commands.
2.1.1 New Parameters (summary)
ENABLE - CALQUERY The "CAL-QUERY" value type is a query syntax that is used by
the CUA to specify the rules that apply to a CAP command.
(Section 6.1.1)
The "ENABLE" parameter in CAP is used to tag a "TRIGGER" property 2.1.1 New Parameters (summary)
in a component as disabled or enabled. This is used when a
scheduling request arrives and the CU wishes to ignore the trigger
time included. (Section 7.1).
Formal Definition: The "ENABLE" parameter is defined by the ACTION - The "ACTION" parameter informs the endpoint if it should
following notation: abort or ask to continue on timeout. (Section 7.1).
enable-param = "ENABLE" "=" ("TRUE" / "FALSE") ENABLE - The "ENABLE" parameter in CAP is used to tag a "TRIGGER"
property in a component as disabled or enabled. (Section 7.2).
LOCAL - ID - The "ID" parameter specifies a unique identifier to be used for
any outstanding commands.
The "LOCAL" parameter in CAP is used to tag a "SEQUENCE" property LATENCY - The "LATENCY" parameter supplies the timeout value for
in a "VALARM" component to signify that a VALARM is local or to be command completion to the other endpoint. (Section 7.4).
distributed. (Section 7.2).
For example, when inviting others to an event, the "Organizer's" LOCAL - The "LOCAL" parameter in CAP is used to tag a "SEQUENCE"
booked "VEVENT" component might contain "VALARM" components, and property in a "VALARM" component to signify that a VALARM is local
those "VALARM" component might be 'alarm be 5 minutes before the or to be distributed. (Section 7.5).
meeting'. However other "Attendees" may have to set their own
"VALARM" components for the same event (assuming they reply that
they will be attending). So, by tagging the "VALARM" component as
local the CUA MUST never forward those local "VALARM" components
to other CS's or CUAs.
The CUA can not simply delete any "VALARM components where the CU LOCALIZE - The "LOCALIZE" parameter specifies the locale to be used
is not the "Organizer". If it did, any [iTIP] "COUNTER" method in error and warning messages.
would result in the "Organizer" thinking that the "Attendee"
wished to also counter with removing those "VALARM" components.
And in addition, any update to an existing component would re-
create those "VALARM" components in the "Attendees" CS.
Formal Definition: The "LOCAL" parameter is defined by the OPTIONS - The "OPTIONS" parameter passes optional information for
following notation: the command being sent.
local-param = "LOCAL" "=" ("TRUE" / "FALSE") SEQUENCE - When the "SEQUENCE" parameter is used in a "VALARM"
component it uniquely identifies the instances of the "VALARM"
within a component.
2.1.2 New Properties (summary) 2.1.2 New Properties (summary)
ALLOW-CONFLICT - Some entries in a calendar might not be valid if ALLOW-CONFLICT - Some entries in a calendar might not be valid if
other entries were allowed to overlap the same time span. Renting other entries were allowed to overlap the same time span.
a car for example. It would not make sense to allow two (Section 8.1)
reservations for the same car at the same time. The "ALLOW-
CONFLICT" property takes a boolean value. If FALSE, then
conflicts are not allowed. (Section 8.1)
ATT-COUNTER - When storing a "METHOD" property with the "COUNTER" ATT-COUNTER - When storing a "METHOD" property with the "COUNTER"
method, there needs to be a way to remember who sent the COUNTER. method, there needs to be a way to remember who sent the COUNTER.
The ATT-COUNTER property MUST BE added to all "COUNTER" [iTIP] (Section 8.2)
components by the CUA before storing in a CS. (Section 8.2)
CSID - Each CS needs its own unique identifier. The "CSID" property CAP-VERSIN - The version of CAP the implementation supports.
is the official unique identifier for the CS. If the BEEP (Section 8.5)
'serverName' attribute was supplied in the BEEP 'start' message,
then the CSID will be mapped to the virtual host name supplied and CAR-LEVEL - The level of calendar access level supported. (Section
the host name part of the CSID MUST BE the same as the 8.7)
'serverName' value. This allows one CS implementation to service
multiple virtual hosts. CS's are not required to support virtual COMPONENTS - The list of components supported. (Section 8.8)
hosting. If a CS does not support virtual hosting then it must
ignore the BEEP 'serverName' attribute. (Section 8.6) CSID - The Calendar Store IDentifier (CSID) uniquely identifies a
CAP server. (Section 8.9)
CALID - Each calendar within a CS needs to be uniquely identifiable. CALID - Each calendar within a CS needs to be uniquely identifiable.
The "CALID" property identifies a unique calendar within a CS. It The "CALID" property identifies a unique calendar within a CS. It
can be a full CALID or a relative CALID. (Section 8.3) can be a full CALID or a relative CALID. (Section 8.3)
CALMASTER - The "CALMASTER" property specifies the contact CALMASTER - The "CALMASTER" property specifies the contact
information for the CS. (Section 8.4) information for the CS. (Section 8.4)
CARID - Access rights can be saved and fetched by unique ID - the CARID - Access rights can be saved and fetched by unique ID - the
"CARID" property. (Section 8.5) "CARID" property. (Section 8.6)
CMD - The CAP commands, as well as replies are transmitted using the CMD - The CAP commands, as well as replies are transmitted using the
"CMD" property. (Section 10.1) "CMD" property. (Section 10.1)
DECREED - Some access rights are not changeable by the CUA. When DECREED - Some access rights are not changeable by the CUA. When
that is the case, the "DECREED" property value in the "VCAR" that is the case, the "DECREED" property value in the "VCAR"
component will be TRUE. (Section 8.7) component will be TRUE. (Section 8.10)
DEFAULT-CHARSET - The list of charsets supported by the CS. The DEFAULT-CHARSET - The list of charsets supported by the CS. The
first entry MUST BE the default for the CS. (Section 8.8) first entry MUST BE the default for the CS. (Section 8.11)
DEFAULT-LOCALE - The list of locales supported by the CS. The first DEFAULT-LOCALE - The list of locales supported by the CS. The first
entry in the list is the default locale. (Section 8.9) entry in the list is the default locale. (Section 8.12)
DEFAULT-TZID - This is the list of known timezones supported. The DEFAULT-TZID - This is the list of known timezones supported. The
first entry is the default. (Section 8.10) first entry is the default. (Section 8.13)
DEFAULT-VCARS - A list of the "CARID" properties that will be used DEFAULT-VCARS - A list of the "CARID" properties that will be used
to create new calendars. (Section 8.11) to create new calendars. (Section 8.14)
DENY - The UPNs listed in the "DENY" property of a "VCAR" component DENY - The UPNs listed in the "DENY" property of a "VCAR" component
will denied access as described in the "VRIGHT" component. will denied access as described in the "VRIGHT" component.
(Section 8.12) (Section 8.15)
EXPAND - This property tells the CS if the query reply should expand EXPAND - This property tells the CS if the query reply should expand
components into multiple instances. The default is FALSE. components into multiple instances. The default is FALSE.
(Section 8.13) (Section 8.16)
GRANT - The UPNs listed in the "GRANT" property of a "VCAR" GRANT - The UPNs listed in the "GRANT" property of a "VCAR"
component will allowed access as described in the "VRIGHT" component will allowed access as described in the "VRIGHT"
component. (Section 8.14) component. (Section 8.17)
MAXDATE - The maximum date supported by the CS. (Section 8.15) ITIP-VERSION - The version of [iTIP] supported. (Section 8.18)
MINDATE - The minimum date supported by the CS. (Section 8.16) MAXDATE - The maximum date supported by the CS. (Section 8.20)
MAX-COMP-SIZE - The largest component size allowed in the
implementation including attachments. (Section 8.19)
MINDATE - The minimum date supported by the CS. (Section 8.21)
MULTIPART - Passed in the capability messages to indicate which MIME MULTIPART - Passed in the capability messages to indicate which MIME
multipart types the sender supports. (Section 8.17) multipart types the sender supports. (Section 8.22)
NAME - Several storeable components such as "VCAR" and "VQUERY" may NAME - The "NAME" property is used to add locale specific
have the "NAME" property contained in them to describe in various descriptions into components. (Section 8.23)
locals the purpose of the component. Components may have multiple
"NAME" properties each with a unique "LANGUAGE" parameter.
(Section 8.18)
OWNER - Each calendar has at least one "OWNER" property. (xref OWNER - Each calendar has at least one "OWNER" property. (xref
target="OWNER"/>) Related to the "CAL-OWNERS()" (Section 6.1.1.1) target="OWNER"/>) Related to the "CAL-OWNERS()" (Section 6.1.1.1)
query clause. query clause.
PERMISSION - This property specifies the permission being granted or PERMISSION - This property specifies the permission being granted or
denied. Examples are the "SEARCH" and "MODIFY" values. (Section denied. Examples are the "SEARCH" and "MODIFY" values. (Section
8.20) 8.25)
QUERY - Used to hold the CAL-QUERY (Section 8.21) for the component. QUERY - Used to hold the CAL-QUERY (Section 8.26) for the component.
QUERYID - A unique id for a stored query. (Section 8.27)
QUERY-LEVEL - The level of the query language supported. (Section
8.29)
RECUR-ACCEPTED - If the implementation support recurrence rules.
(Section 8.30)
RECUR-EXPAND - If the implementation support expanding recurrence
rules. (Section 8.32)
RECUR-LIMIT - Any maximum limit on the number of instances the
implementation will expand recurring objects. (Section 8.31)
QUERYID - A unique id for a stored query. (Section 8.22)
REQUEST-STATUS - The [iCAL] "REQUEST-STATUS" property is extended to REQUEST-STATUS - The [iCAL] "REQUEST-STATUS" property is extended to
include new error numbers. (Section 8.23) include new error numbers. (Section 8.28)
RESTRICTION - In the final check when granting calendar access RESTRICTION - In the final check when granting calendar access
requests, the CS test the results to the value of the requests, the CS test the results to the value of the
"RESTRICTION" property in the corresponding "VRIGHT" component to "RESTRICTION" property in the corresponding "VRIGHT" component to
determine if the access meets that restriction. (Section 8.24) determine if the access meets that restriction. (Section 8.33)
SCOPE - The "SCOPE" property is used in "VRIGHT"s component to SCOPE - The "SCOPE" property is used in "VRIGHT"s component to
select the subset of data that may be acted upon when checking select the subset of data that may be acted upon when checking
access rights. (Section 8.25) access rights. (Section 8.34)
STORES-EXPANDED - Specifies if the implementation stores recurring
object expanded or not. (Section 8.35)
TARGET - The new "VCALENDAR" component property "TARGET" (Section TARGET - The new "VCALENDAR" component property "TARGET" (Section
8.26) is used to specify which calendar(s) will be the subject of 8.36) is used to specify which calendar(s) will be the subject of
the CAP command. the CAP command.
TRANSP - This is a modification the [iCAL] "TRANSP" property and it TRANSP - This is a modification the [iCAL] "TRANSP" property and it
allows more values. The new values are related to conflict allows more values. The new values are related to conflict
control. (Section 8.27) control. (Section 8.37)
2.1.3 New Components (summary) 2.1.3 New Components (summary)
VAGENDA - CAP allows the fetching and storing of the entire contents VAGENDA - CAP allows the fetching and storing of the entire contents
of a calendar. The "VCALENDAR" component is not sufficient to of a calendar. The "VCALENDAR" component is not sufficient to
encapsulate all of the needed data that describes a calendar. The encapsulate all of the needed data that describes a calendar. The
"VAGENDA" component is the encapsulating object for an entire "VAGENDA" component is the encapsulating object for an entire
calendar. (Section 9.1) calendar. (Section 9.1)
VCALSTORE - Each CS contains one or more calendars (VAGENDAs), the VCALSTORE - Each CS contains one or more calendars (VAGENDAs), the
"VCALSTORE" component is the encapsulating object that can hold "VCALSTORE" component is the encapsulating object that can hold
all of the "VAGENDA" components along with any components and all of the "VAGENDA" components along with any components and
properties that are unique to the store level. (Section 9.2) properties that are unique to the store level. (Section 9.2)
VCAR - Calendar Access Rights are specified and encapsulated in the VCAR - Calendar Access Rights are specified and encapsulated in the
new iCalendar "VCAR" (Section 9.3) component. The "VCAR" new iCalendar "VCAR" component. The "VCAR" component holds some
component holds some new properties and at least one "VRIGHT" new properties and at least one "VRIGHT" component. (Section 9.3)
component.
VRIGHT - (Section 9.4) This component encapsulates a set of VRIGHT - This component encapsulates a set of instructions to the CS
instructions to the CS that define the rights or restrictions that define the rights or restrictions needed. (Section 9.4)
needed.
VREPLY - (Section 9.5) This component encapsulates a set of data VREPLY - This component encapsulates a set of data that can consist
that can consist of an arbitrary amounts of properties and of an arbitrary amounts of properties and components. Its
components. Its contents is dependent on the command that was contents is dependent on the command that was issued. (Section
issued. 9.5)
VQUERY - The search operation makes use of a new component, called VQUERY - The search operation makes use of a new component, called
"VQUERY" (Section 9.6) and a new value type "CAL-QUERY" (Section "VQUERY" and a new value type "CAL-QUERY" (Section 6.1.1). The
6.1.1). The "VQUERY" component is used to fetch objects from the "VQUERY" component is used to fetch objects from the CS. (Section
CS. 9.6)
2.2 Relationship of RFC-2446 (ITIP) and CAP 2.2 Relationship of RFC-2446 (ITIP) and CAP
[iTIP] describes scheduling methods which result in indirect [iTIP] describes scheduling methods which result in indirect
manipulation of components. In CAP, the "CREATE" command is used to manipulation of components. In CAP, the "CREATE" command is used to
deposit entities into the store. Other CAP commands such as deposit entities into the store. Other CAP commands such as
"DELETE", "MODIFY" and "MOVE" command values provide direct "DELETE", "MODIFY" and "MOVE" command values provide direct
manipulation of components. In the CAP calendar store model, manipulation of components. In the CAP calendar store model,
scheduling messages are conceptually kept separate from other scheduling messages are conceptually kept separate from other
components by their state. components by their state.
All scheduling operations and are as define in [iTIP]. This memo All scheduling operations and are as define in [iTIP]. This memo
makes no changes to any of the workflow described in [iTIP]. In this makes no changes to any of the workflow described in [iTIP]. In this
memo referring to the presence of the "METHOD" property in an object memo referring to the presence of the "METHOD" property in an object
is the same as saying an [iTIP] object. is the same as saying an [iTIP] object.
A CUA may create a "BOOKED" state object by depositing a iCalendar A CUA may create a "BOOKED" state object by depositing an iCalendar
object into the store. This is done by depositing an object that object into the store. This is done by depositing an object that
does not have a "METHOD" property. The CS then knows to set the does not have a "METHOD" property. The CS then knows to set the
state of the object to the "BOOKED" state. If the object has a state of the object to the "BOOKED" state. If the object has a
"METHOD" property then the object is stored in the "UNPROCESSED" "METHOD" property then the object is stored in the "UNPROCESSED"
state. state.
If existing "UNPROCESSED" state objects exist in the CS for the same If existing "UNPROCESSED" state objects exist in the CS for the same
UID then a CUA may wish to consolidate the objects in to one "BOOKED" UID then a CUA may wish to consolidate the objects in to one "BOOKED"
state object. The CUA would fetch the "UNPROCESSED" state objects state object. The CUA would fetch the "UNPROCESSED" state objects
for that UID and process them in the CUA as described in [iTIP]. for that UID and process them in the CUA as described in [iTIP].
skipping to change at page 20, line 18 skipping to change at page 22, line 18
The system model describes the high level components of a calendar The system model describes the high level components of a calendar
system and how they interact with each other. system and how they interact with each other.
CAP is used by a CUA to send commands to and receive responses from a CAP is used by a CUA to send commands to and receive responses from a
CS. CS.
The CUA prepares a [MIME] encapsulated command, sends it to the CS, The CUA prepares a [MIME] encapsulated command, sends it to the CS,
and receives a [MIME] encapsulated response. The calendaring related and receives a [MIME] encapsulated response. The calendaring related
information within these messages are represented by iCalendar information within these messages are represented by iCalendar
objects. In addition the "GET-CAPABIBILITY" command can be sent from objects. In addition the "GET-CAPABILITY" command can be sent from
the CS to the CUA. the CS to the CUA.
There are two distinct protocols in operation to accomplish this There are two distinct protocols in operation to accomplish this
exchange. [BEEP] is the transport protocol is used to move these exchange. [BEEP] is the transport protocol is used to move these
encapsulations between a CUA and a CS. CAP's [BEEP] profile defines encapsulations between a CUA and a CS. CAP's [BEEP] profile defines
the application protocol where the content and semantics of the the application protocol where the content and semantics of the
messages sent between the CUA and the CS are specified. messages sent between the CUA and the CS are specified.
3.2 Calendar Store Object Model 3.2 Calendar Store Object Model
skipping to change at page 21, line 44 skipping to change at page 23, line 44
. . . .
Calendars within a Calendar Store are identified by their unique Calendars within a Calendar Store are identified by their unique
Relative CALID. Relative CALID.
3.3 Protocol Model 3.3 Protocol Model
CAP uses beep as the transport and authentication protocol. CAP uses beep as the transport and authentication protocol.
The initial charset MUST BE UTF-8 for the session in an unknown The initial charset MUST BE UTF-8 for the session in an unknown
locale. If the CS supplied the BEEP 'localize' attribute in the BEEP locale. If the CS supplied the [BEEP] 'localize' attribute in the
'greeting' then the CUA may tell the CS to switch locales for the [BEEP] 'greeting' then the CUA may tell the CS to switch locales for
session by issuing the "SET-LOCALE" CAP command and supplying one of the session by issuing the "SET-LOCALE" CAP command and supplying one
the locales supplied by the BEEP 'localize' attribute. If supplied of the locales supplied by the [BEEP] 'localize' attribute. If
the first locale supplied in the BEEP 'localize' attribute MUST BE supplied the first locale supplied in the [BEEP] 'localize' attribute
the default locale of the CS. The locale is switched only after a MUST BE the default locale of the CS. The locale is switched only
successful reply. after a successful reply.
The "DEFAULT-CHARSET" property of the CS contains the list of The "DEFAULT-CHARSET" property of the CS contains the list of
charsets supported by the CS with the first value being the default charsets supported by the CS with the first value being the default
for new calendars. If the CUA wishes to switch to one of those for new calendars. If the CUA wishes to switch to one of those
charsets for the session, the CUA issues the "SET-LOCALE" command. charsets for the session, the CUA issues the "SET-LOCALE" command.
The CUA would have to first perform a "GET-CAPABILITY" command on the The CUA would have to first perform a "GET-CAPABILITY" command on the
CS to get the list of charsets supported by the CS. The charset is CS to get the list of charsets supported by the CS. The charset is
switched only after a successful reply. switched only after a successful reply.
The CUA may switch locales and charsets as needed. There is no The CUA may switch locales and charsets as needed. There is no
requirement that a CS support multiple locales or charsets. requirement that a CS support multiple locales or charsets.
3.3.1 Use of BEEP, MIME and iCalendar 3.3.1 Use of BEEP, MIME and iCalendar
CAP uses the BEEP application protocol over TCP. (refer to [BEEP] CAP uses the [BEEP] application protocol over TCP. (refer to [BEEP]
and [BEEPTCP] for more information). The default port that the and [BEEPTCP] for more information). The default port that the CS
Calendar Server listens for connections is on user port 1026. listens for connections is on user port 1026.
The BEEP data exchanged in CAP is a iCalendar MIME content that fully The [BEEP] data exchanged in CAP is a iCalendar MIME content that
conforms to [iCAL] iCalendar format. fully conforms to [iCAL] iCalendar format.
This example tells the CS to generate and return 10 UIDs to be used This example tells the CS to generate and return 10 UIDs to be used
by the CUA. (Note throughout this memo, 'C:' refers to what the CUA by the CUA. Note throughout this memo, 'C:' refers to what the CUA
sends, 'S:' refers to what the CS sends, 'I:' refers to what the sends, 'S:' refers to what the CS sends, 'I:' refers to what the
initiator sends, and 'L:' refers to what the listener sends. Where initiator sends, and 'L:' refers to what the listener sends. Where
initiator and responder are used as defined in [BEEP].) initiator and listener are used as defined in [BEEP].
C: MSG 1 2 . 432 62 C: MSG 1 2 . 432 62
C: Content-Type: text/calendar C: Content-Type: text/calendar
C: C:
C: BEGIN:VCALENDAR C: BEGIN:VCALENDAR
C: VERSION:2.0 C: VERSION:2.0
C: PRODID:-//someone's prodid C: PRODID:-//someone's prodid
C: CMD;ID=unique-per-cua-123;OPTIONS=10:GENERATE-UID C: CMD;ID=unique-per-cua-123;OPTIONS=10:GENERATE-UID
C: END:VCALENDAR C: END:VCALENDAR
NOTE: The following examples will not include the BEEP header and NOTE: The following examples will not include the [BEEP] header and
footer information. Only the iCalendar objects that are sent between footer information. Only the iCalendar objects that are sent between
the CUA and CS will be shown as the BEEP payload boundaries are the CUA and CS will be shown as the [BEEP] payload boundaries are
independent of CAP. independent of CAP.
The commands listed below are used to manipulate or access the data The commands listed below are used to manipulate or access the data
on the calendar store: on the calendar store:
ABORT - Sent to halt the processing of any command except ABORT. ABORT - Sent to halt the processing of some of the commands.
(Section 10.1.2) (Section 10.1.2)
CONTINUE - Sent to continue processing a command that has had its CONTINUE - Sent to continue processing a command that has had its
specified timeout time reached. (Section 10.1.3) specified timeout time reached. (Section 10.1.3)
CREATE - Create a new object on the CS. This can be implied for CREATE - Create a new object on the CS. This can be implied for
[iTIP] objects. Initiated by the CUA only. (Section 10.1.4) [iTIP] objects. Initiated by the CUA only. (Section 10.1.4)
SET-LOCALE - Tell the CS to use any named locale and charset SET-LOCALE - Tell the CS to use any named locale and charset
supplied. Initiated by the CUA only. (Section 10.9) supplied. Initiated by the CUA only. (Section 10.9)
DELETE - Delete objects from the CS. Initiated by the CUA only. DELETE - Delete objects from the CS. Initiated by the CUA only.
Can also be used to mark a object for deletion. (Section 10.1.5) Can also be used to mark an object for deletion. (Section 10.1.5)
GENERATE-UID - Generate one or more unique ids. Initiated by the GENERATE-UID - Generate one or more unique ids. Initiated by the
CUA only. (Section 10.2) CUA only. (Section 10.2)
GET-CAPABILITY - Query the capabilities the other end point of the GET-CAPABILITY - Query the capabilities the other end point of the
session. (Section 10.3) session. (Section 10.3)
IDENTIFY - Set a new identity for the session. Initiated by the CUA IDENTIFY - Set a new identity for the session. Initiated by the CUA
only. (Section 10.4) only. (Section 10.4)
skipping to change at page 24, line 7 skipping to change at page 26, line 7
(Section 10.7) (Section 10.7)
SEARCH - Search for components. Initiated by the CUA only. SEARCH - Search for components. Initiated by the CUA only.
(Section 10.8) (Section 10.8)
TIMEOUT - Sent when a specified amount of time has lapsed and a TIMEOUT - Sent when a specified amount of time has lapsed and a
command has not finished. (Section 10.10) command has not finished. (Section 10.10)
4. Security Model 4. Security Model
The BEEP transport performs all session authentication. The [BEEP] transport performs all session authentication.
4.1 Calendar User and UPNs 4.1 Calendar User and UPNs
A CU is an entity that can be authenticated. It is represented in A CU is an entity that can be authenticated. It is represented in
CAP as a UPN, which is a key part of access rights. The UPN CAP as a UPN, which is a key part of access rights. The UPN
representation is independent of the authentication mechanism used representation is independent of the authentication mechanism used
during a particular CUA/CS interaction. This is because UPNs are during a particular CUA/CS interaction. This is because UPNs are
used within VCARs. If the UPN were dependent on the authentication used within VCARs. If the UPN were dependent on the authentication
mechanism, a VCAR could not be consistently evaluated. A CU may use mechanism, a VCAR could not be consistently evaluated. A CU may use
one mechanism while using one CUA but the same CU may use a different one mechanism while using one CUA but the same CU may use a different
skipping to change at page 26, line 47 skipping to change at page 28, line 47
conflicts with an immutable "VCAR" components must fail. conflicts with an immutable "VCAR" components must fail.
4.2.1 Access Control and NOCONFLICT 4.2.1 Access Control and NOCONFLICT
The "TRANSP" property can take on values "TRANSPARENT-NOCONFLICT" and The "TRANSP" property can take on values "TRANSPARENT-NOCONFLICT" and
"OPAQUE-NOCONFLICT" that prohibit other components from overlapping "OPAQUE-NOCONFLICT" that prohibit other components from overlapping
it. This setting overrides access. The "ALLOW-CONFLICT" CS, it. This setting overrides access. The "ALLOW-CONFLICT" CS,
Calendar or component setting may also prevent overlap, returning an Calendar or component setting may also prevent overlap, returning an
error code "6.3". error code "6.3".
4.2.2 Calendar Access Right (VCAR) 4.2.2 Predefined VCARs
Access rights within CAP are specified with the "VCAR" component,
"RIGHTS" value type and the "GRANT", "DENY" and "CARID" properties.
Properties within an iCalendar object are unordered. This also is
the case for the "VCAR" component properties.
4.2.3 Predefined VCARs
Predefined calendar access CARIDs that MUST BE implemented are: Predefined calendar access CARIDs that MUST BE implemented are:
CARID:READBUSYTIMEINFO - Specifies the "GRANT" and "DENY" rules that CARID:READBUSYTIMEINFO - Specifies the "GRANT" and "DENY" rules that
allow UPNs to search "VFREEBUSY" components. An example allow UPNs to search "VFREEBUSY" components. An example
definition for this VCAR is: definition for this VCAR is:
BEGIN:VCAR BEGIN:VCAR
CARID:READBUSYTIMEINFO CARID:READBUSYTIMEINFO
BEGIN:VRIGHT BEGIN:VRIGHT
skipping to change at page 28, line 4 skipping to change at page 29, line 36
PERMISSION:CREATE PERMISSION:CREATE
RESTRICTION:SELECT VEVENT FROM VAGENDA WHERE METHOD = 'REQUEST' RESTRICTION:SELECT VEVENT FROM VAGENDA WHERE METHOD = 'REQUEST'
RESTRICTION:SELECT VTODO FROM VAGENDA WHERE METHOD = 'REQUEST' RESTRICTION:SELECT VTODO FROM VAGENDA WHERE METHOD = 'REQUEST'
RESTRICTION:SELECT VJOURNAL FROM VAGENDA WHERE METHOD = 'REQUEST' RESTRICTION:SELECT VJOURNAL FROM VAGENDA WHERE METHOD = 'REQUEST'
END:VRIGHT END:VRIGHT
END:VCAR END:VCAR
CARID:UPDATEPARTSTATUS - Grants to authenticated users the right to CARID:UPDATEPARTSTATUS - Grants to authenticated users the right to
modify the instances of the "ATTENDEE" property set to one of modify the instances of the "ATTENDEE" property set to one of
their calendar addresses in any components for any booked their calendar addresses in any components for any booked
component containing a "ATTENDEE" property. This allows (or component containing an "ATTENDEE" property. This allows (or
denies) a CU the ability to update their own participation status denies) a CU the ability to update their own participation status
in a calendar where they might not otherwise have "MODIFY" command in a calendar where they might not otherwise have "MODIFY" command
access. They are not allowed to change the "ATTENDEE" property access. They are not allowed to change the "ATTENDEE" property
value. An example definition for this VCAR is (This example only value. An example definition for this VCAR is (This example only
effects the "VEVENT" components): affects the "VEVENT" components):
BEGIN:VCAR BEGIN:VCAR
CARID:UPDATEPARTSTATUS CARID:UPDATEPARTSTATUS
BEGIN:VRIGHT BEGIN:VRIGHT
GRANT:* GRANT:*
PERMISSION:MODIFY PERMISSION:MODIFY
SCOPE:SELECT ATTENDEE FROM VEVENT SCOPE:SELECT ATTENDEE FROM VEVENT
WHERE ATTENDEE = SELF() WHERE ATTENDEE = SELF()
AND ORGANIZER = CURRENT-TARGET() AND ORGANIZER = CURRENT-TARGET()
AND STATE() = 'BOOKED' AND STATE() = 'BOOKED'
skipping to change at page 28, line 37 skipping to change at page 30, line 31
BEGIN:VCAR BEGIN:VCAR
CARID:DEFAULTOWNER CARID:DEFAULTOWNER
BEGIN:VRIGHT BEGIN:VRIGHT
GRANT:CAL-OWNERS() GRANT:CAL-OWNERS()
PERMISSION:* PERMISSION:*
SCOPE:SELECT * FROM VAGENDA SCOPE:SELECT * FROM VAGENDA
END:VRIGHT END:VRIGHT
END:VCAR END:VCAR
4.2.4 Decreed VCARs 4.2.3 Decreed VCARs
A CS MAY choose to implement and allow persistent immutable VCARs A CS MAY choose to implement and allow persistent immutable VCARs
that may be configured by the CS administrator. A reply from the CS that may be configured by the CS administrator. A reply from the CS
may dynamically create "VCAR" components that are decreed depending may dynamically create "VCAR" components that are decreed depending
on the implementation. To the CUA any "VCAR" component with the on the implementation. To the CUA any "VCAR" component with the
"DECREED" property set to "TRUE" can not be changed by the currently "DECREED" property set to "TRUE" can not be changed by the currently
authenticated UPN, and depending on the implementation and other authenticated UPN, and depending on the implementation and other
"VCAR" components; might not be able to be changed by any UPN using "VCAR" components; might not be able to be changed by any UPN using
CAP, and never when the CUA gets a "DECREED:TRUE" VCAR. CAP, and never when the CUA gets a "DECREED:TRUE" VCAR.
skipping to change at page 29, line 27 skipping to change at page 31, line 18
For example; an implementation or a CS administrator may wish to For example; an implementation or a CS administrator may wish to
define a VCAR that will always allow the calendar owners to have full define a VCAR that will always allow the calendar owners to have full
access to their own calendars. access to their own calendars.
Decreed "VCAR" components MUST BE readable by the calendar owner in Decreed "VCAR" components MUST BE readable by the calendar owner in
standard "VCAR" component format. standard "VCAR" component format.
4.3 CAP Session Identity 4.3 CAP Session Identity
A BEEP session has an associated set of authentication credentials, A [BEEP] session has an associated set of authentication credentials,
from which is derived a UPN. This UPN is the identity of the CAP from which is derived a UPN. This UPN is the identity of the CAP
session, and is used to determine access rights for the session. session, and is used to determine access rights for the session.
The CUA may change the identity of a CAP session by calling the The CUA may change the identity of a CAP session by calling the
"IDENTIFY" command. The Calendar Server only permits the operation "IDENTIFY" command. The CS only permits the operation if the
if the session's authentication credentials are good for the session's authentication credentials are good for the requested
requested identity. The method of checking this permission is identity. The method of checking this permission is implementation
implementation dependent, but may be thought of as a mapping from dependent, but may be thought of as a mapping from authentication
authentication credentials to UPNs. The "IDENTIFY" command allows a credentials to UPNs. The "IDENTIFY" command allows a single set of
single set of authentication credentials to choose from multiple authentication credentials to choose from multiple identities, and
identities, and allows multiple sets of authentication credentials to allows multiple sets of authentication credentials to assume the same
assume the same identity. identity.
For anonymous access the identity of the session is "@". A UPN with For anonymous access the identity of the session is "@". A UPN with
a null Username and null Realm is anonymous. A UPN with a null a null Username and null Realm is anonymous. A UPN with a null
Username, but non-null Realm, such as "@foo.com" may be used to mean Username, but non-null Realm, such as "@foo.com" may be used to mean
any identity from that Realm, which is useful to grant access rights any identity from that Realm, which is useful to grant access rights
to all users in a given Realm. A UPN with a non-null Username and to all users in a given Realm. A UPN with a non-null Username and
null Realm, such as "bob@" could be a security risk and MUST NOT be null Realm, such as "bob@" could be a security risk and MUST NOT be
used. used.
Since the UPN includes Realm information it may be used to govern Since the UPN includes Realm information it may be used to govern
skipping to change at page 33, line 46 skipping to change at page 34, line 46
you can ONLY have one component, OR one "VAGENDA" component OR you can ONLY have one component, OR one "VAGENDA" component OR
one "VCALSTORE" component in the "FROM" clause. one "VCALSTORE" component in the "FROM" clause.
4. Everything in the "SELECT" clause and "WHERE" clauses in MUST BE 4. Everything in the "SELECT" clause and "WHERE" clauses in MUST BE
from the same component type, or "VAGENDA" component OR from the same component type, or "VAGENDA" component OR
"VCALSTORE" component in the "FROM" clause. "VCALSTORE" component in the "FROM" clause.
5. When multiple "QUERY" properties are supplied in a single 5. When multiple "QUERY" properties are supplied in a single
"VQUERY" component, the results returned are the same as the "VQUERY" component, the results returned are the same as the
results returned for multiple "VQUERY" components having each a results returned for multiple "VQUERY" components having each a
single "QUERY" property and the results are return in the same single "QUERY" property.
order as the "VQUERY" properties were specified in the original
command.
6. The '.' is used to separate the table name (component) and column 6. The '.' is used to separate the table name (component) and column
name (property or component) when selecting a property that is name (property or component) when selecting a property that is
contained inside of a component that is targeted in the TARGET contained inside of a component that is targeted in the TARGET
property. property.
7. A contained component without a '.' is not the same as 7. A contained component without a '.' is not the same as
"component-name.*". If given as "component-name" (no dot) the "component-name.*". If given as "component-name" (no dot) the
encapsulating BEGIN/END statement will be supplied for encapsulating BEGIN/END statement will be supplied for
"component-name".: "component-name".:
skipping to change at page 37, line 5 skipping to change at page 38, line 5
; A component name ('comp-name') of an existing component ; A component name ('comp-name') of an existing component
; contained inside of the 'comp-name' used in the "FROM" ; contained inside of the 'comp-name' used in the "FROM"
; clause. ; clause.
; ;
; SELECT VALARM FROM VEVENT ... ; SELECT VALARM FROM VEVENT ...
; ;
; OR ; OR
; ;
; A component name ('comp-name') of an existing ; A component name ('comp-name') of an existing
; component contained inside of the 'comp-name' used ; component contained inside of the 'comp-name' used
; in the "FROM" clause folowed by a property ; in the "FROM" clause followed by a property
; name ('cap-prop') to be selected from that component. ; name ('cap-prop') to be selected from that component.
; (comp-name "." cap-prop) ; (comp-name "." cap-prop)
; ;
; SELECT VALARM.TRIGGER FROM VEVENT ... ; SELECT VALARM.TRIGGER FROM VEVENT ...
cap-col = comp-name cap-col = comp-name
/ comp-name "." cap-prop / comp-name "." cap-prop
comp-name = "VEVENT" / "VTODO" / "VJOURNAL" / "VFREEBUSY" comp-name = "VEVENT" / "VTODO" / "VJOURNAL" / "VFREEBUSY"
/ "VALARM" / "DAYLIGHT" / "STANDARD" / "VAGENDA" / "VALARM" / "DAYLIGHT" / "STANDARD" / "VAGENDA"
skipping to change at page 38, line 36 skipping to change at page 39, line 36
; described in the notes below in order for them not ; described in the notes below in order for them not
; to be treated as wildcard characters. ; to be treated as wildcard characters.
cap-oper = "=" cap-oper = "="
/ "!=" / "!="
/ "<" / "<"
/ ">" / ">"
/ "<=" / "<="
/ ">=" / ">="
SP = ; A single white space ascii character SP = ; A single white space ASCII character
; (value in HEX %x20). ; (value in HEX %x20).
x-comp = ; As defined in RFC 2445 section 4.6 x-comp = ; As defined in [iCAL] section 4.6
iana-comp = ; As defined in RFC 2445 section 4.6 iana-comp = ; As defined in [iCAL] section 4.6
6.1.1.1 [NOT] CAL-OWNERS() 6.1.1.1 [NOT] CAL-OWNERS()
This function returns the list of "OWNER" properties for the named This function returns the list of "OWNER" properties for the named
calendar when used in the "SELECT" clause. calendar when used in the "SELECT" clause.
If called as 'CAL-OWNERS()', it is equivalent to the comma separated If called as 'CAL-OWNERS()', it is equivalent to the comma separated
list of all of the owners of the calendar that match the provided list of all of the owners of the calendar that match the provided
"TARGET" property value. If the target is a "VCALSTORE", it returns "TARGET" property value. If the target is a "VCALSTORE", it returns
the "CALMASTER" property. the "CALMASTER" property.
skipping to change at page 39, line 31 skipping to change at page 40, line 31
6.1.1.3 PARAM() 6.1.1.3 PARAM()
Used in a CAL-QUERY. Returns the value of the named parameter from Used in a CAL-QUERY. Returns the value of the named parameter from
the named property. If there are multiple properties in the object, the named property. If there are multiple properties in the object,
then PARAM() returns a comma separated list of parameter values. If then PARAM() returns a comma separated list of parameter values. If
needed each value can be quoted or contain backslash escaped needed each value can be quoted or contain backslash escaped
contents. contents.
When used in a "SELECT" clause, it returns the entire property and When used in a "SELECT" clause, it returns the entire property and
all of that propertiies parameters (the result is not limited to the all of that properties parameters (the result is not limited to the
supplied parameter). If the property does not contain the named supplied parameter). If the property does not contain the named
parameter, then the property is not returned (It could however be parameter, then the property is not returned (It could however be
returned as a result of another "SELECT" clause value.) If multiple returned as a result of another "SELECT" clause value.) If multiple
properties of the supplied name have the named parameter, all properties of the supplied name have the named parameter, all
properties with that named parameter are returned. properties with that named parameter are returned.
When used in the "WHERE" clause, a match is true when the parameter When used in the "WHERE" clause, a match is true when the parameter
value is "IN" or "LIKE" compare clause according to the supplied value is "IN" or "LIKE" compare clause according to the supplied
WHERE values. If multiple named properties contain the named WHERE values. If multiple named properties contain the named
parameter, then each parameter value is compared to the condition and parameter, then each parameter value is compared to the condition and
if any match, then the results would be true for that condition the if any match, then the results would be true for that condition the
same as if only one had existed. same as if only one had existed.
6.1.1.4 SELF() 6.1.1.4 SELF()
Used in a CAL-QUERY "WHERE" clause. Returns the UPN of the currently Used in a CAL-QUERY "WHERE" clause. Returns the UPN of the currently
authenticated UPN. authenticated UPN.
6.1.1.5 STATE() 6.1.1.5 STATE()
Returns one of three values, 'BOOKED', 'UNPROCESSED', or 'DELETED' Returns one of three values, "BOOKED", "UNPROCESSED", or "DELETED"
depending on the state of the object. Used in a CAL-QUERY "WHERE" depending on the state of the object. Used in a CAL-QUERY "WHERE"
clause. clause. Where "DELETED" is a component in the marked for delete
state. Components that have been removed from the store are never
returned.
6.1.1.6 Ordering of Results 6.1.1.6 Ordering of Results
Sorting will take place in the order the columns are supplied in the Sorting will take place in the order the columns are supplied in the
QUERY command. The CS MUST sort at least the first column. The CS QUERY command. The CS MUST sort at least the first column. The CS
MAY sort additional columns. MAY sort additional columns.
Float and integer values MUST BE sorted by their numeric value. This Float and integer values MUST BE sorted by their numeric value. This
means the result of a sort on an integer value type will be: means the result of a sort on an integer value type will be:
skipping to change at page 41, line 35 skipping to change at page 42, line 39
A component with a DATE and no TIME value is returned before objects A component with a DATE and no TIME value is returned before objects
with both a DATE and TIME value when the dates of those two (or more) with both a DATE and TIME value when the dates of those two (or more)
objects are the same, sorted by date. objects are the same, sorted by date.
6.1.1.8 Use of single quote 6.1.1.8 Use of single quote
All literal values are surrounded by single quotes ('), not double All literal values are surrounded by single quotes ('), not double
quotes ("), and not without any quotes. If the value contains quotes quotes ("), and not without any quotes. If the value contains quotes
or any other ESCAPED-CHAR, they MUST BE backslash escaped as or any other ESCAPED-CHAR, they MUST BE backslash escaped as
described in section "4.3.11 Text" of RFC2445. Any "LIKE" clause described in section 4.3.11 "Text" of [iCAL]. Any "LIKE" clause
wildcard characters that are part of any literal data that is wildcard characters that are part of any literal data that is
preceded by a "LIKE" clause and is not intended to mean wildcard preceded by a "LIKE" clause and is not intended to mean wildcard
search, MUST BE escaped as described in note (7) below. search, MUST BE escaped as described in note (7) below.
6.1.1.9 Comparing DATE and DATE-TIME values 6.1.1.9 Comparing DATE and DATE-TIME values
When comparing "DATE-TIME" values to "DATE" values and when comparing When comparing "DATE-TIME" values to "DATE" values and when comparing
"DATE" values to "DATE-TIME" values, the result will be true if the "DATE" values to "DATE-TIME" values, the result will be true if the
"DATE" value is on the same day as the "DATE-TIME" value. And they "DATE" value is on the same day as the "DATE-TIME" value. And they
are compared in UTC no matter what time zone the data may actual have are compared in UTC no matter what time zone the data may actual have
skipping to change at page 42, line 21 skipping to change at page 43, line 21
(in UTC) (in UTC-4) (in UTC) (in UTC-4)
20020304T003456Z 20020205T003456 FALSE 20020304T003456Z 20020205T003456 FALSE
(in UTC-0) (in UTC-7) (in UTC-0) (in UTC-7)
When the "DATE" value or "DATE-TIME" value is not associated with a When the "DATE" value or "DATE-TIME" value is not associated with a
time zone, then the CS will compare the value assuming that the no time zone, then the CS will compare the value assuming that the no
time zone values are in the calendars default time zone. time zone values are in the calendars default time zone.
When comparing "DATE" values and "DATE-TIME" values with the "LIKE" When comparing "DATE" values and "DATE-TIME" values with the "LIKE"
clause the comparison will be done as if the value is a RFC2445 DATE clause the comparison will be done as if the value is a [iCAL] DATE
or DATE-TIME string value. or DATE-TIME string value.
LIKE '2002%' will match anything in the year 2002. LIKE '2002%' will match anything in the year 2002.
LIKE '200201%' will match anything in January 2002. LIKE '200201%' will match anything in January 2002.
LIKE '%T000000' will match anything at midnight. LIKE '%T000000' will match anything at midnight.
LIKE '____01__T%' will match anything for any year or LIKE '____01__T%' will match anything for any year or
time that is in January. time that is in January.
skipping to change at page 43, line 8 skipping to change at page 44, line 8
property supplied "DTEND" value or any range of values supplied by property supplied "DTEND" value or any range of values supplied by
the "QUERY" property. the "QUERY" property.
When a "QUERY" property contains a "DURATION" value, then the CS MUST When a "QUERY" property contains a "DURATION" value, then the CS MUST
also evaluate any existing "DTEND" property values and determine if also evaluate any existing "DTEND" property values and determine if
they have an effective duration that matches the "QUERY" property they have an effective duration that matches the "QUERY" property
value supplied "DURATION" value or any range of values supplied by value supplied "DURATION" value or any range of values supplied by
the "QUERY" property. the "QUERY" property.
As "DTEND" value is the first time that is excluded from a components As "DTEND" value is the first time that is excluded from a components
time range, any "DURATION" value supplied by the "QUERY" poperty time range, any "DURATION" value supplied by the "QUERY" property
value that is exactly one second less than the "DTEND" property value value that is exactly one second less than the "DTEND" property value
MUST match the QUERY. And if the "DURATION" property value ends MUST match the QUERY. And if the "DURATION" property value ends
exactly at the computed DTEND it MUST NOT match. exactly at the computed DTEND it MUST NOT match.
Any "DTEND" value supplied by the "QUERY" property that is exactly Any "DTEND" value supplied by the "QUERY" property that is exactly
one second more than an end time computed from a DURATION MUST match one second more than an end time computed from a DURATION MUST match
the QUERY. Any end time that is computed from a DURATION that the QUERY. Any end time that is computed from a DURATION that
exactly matches the supplied DTEND MUST NOT match. exactly matches the supplied DTEND MUST NOT match.
Given a meeting room reserved with a component that contains (date- Given a meeting room reserved with a component that contains (date-
skipping to change at page 49, line 12 skipping to change at page 50, line 12
The following example fetches all "VEVENT" and "VTODO" components in The following example fetches all "VEVENT" and "VTODO" components in
the "BOOKED" state. the "BOOKED" state.
BEGIN:VQUERY BEGIN:VQUERY
QUERYID:Fetch All Booked VEVENT and VTODO components QUERYID:Fetch All Booked VEVENT and VTODO components
QUERY:SELECT * FROM VEVENT WHERE STATE() = 'BOOKED' QUERY:SELECT * FROM VEVENT WHERE STATE() = 'BOOKED'
QUERY:SELECT * FROM VTODO WHERE STATE() = 'BOOKED' QUERY:SELECT * FROM VTODO WHERE STATE() = 'BOOKED'
END:VQUERY END:VQUERY
The following fetches the "UID" property for all "VEVENT" and The following fetches the "UID" property for all "VEVENT" and "VTODO"
"fVTODO" components that have been marked for delete. components that have been marked for delete.
BEGIN:VQUERY BEGIN:VQUERY
QUERYID:Fetch UIDs of marked for delete VEVENTs and VTODOs QUERYID:Fetch UIDs of marked for delete VEVENTs and VTODOs
QUERY:SELECT UID FROM VEVENT WHERE STATE() = 'DELETE' QUERY:SELECT UID FROM VEVENT WHERE STATE() = 'DELETE'
QUERY:SELECT UID FROM VTODO WHERE STATE() = 'DELETE' QUERY:SELECT UID FROM VTODO WHERE STATE() = 'DELETE'
END:VQUERY END:VQUERY
In the examples above they were bunched into groups of similar In the examples above they were bunched into groups of similar
queries. They could be performed all at once by having all of the queries. They could be performed all at once by having all of the
"QUERY" properties in one BEGIN/END "VQUERY" component. The replies "QUERY" properties in one BEGIN/END "VQUERY" component.
MUST BE in the same order as the supplied "QUERY" properties.
6.1.1.19 Query with Subset of Properties by Date/Time 6.1.1.19 Query with Subset of Properties by Date/Time
In this example only the named properties will be selected and all In this example only the named properties will be selected and all
booked and non-booked components will be selected that have a booked and non-booked components will be selected that have a
"DTSTART" value from February 1st to February 10th 2000 (in UTC). "DTSTART" value from February 1st to February 10th 2000 (in UTC).
BEGIN:VQUERY BEGIN:VQUERY
QUERY:SELECT UID,DTSTART,DESCRIPTION,SUMMARY FROM VEVENT QUERY:SELECT UID,DTSTART,DESCRIPTION,SUMMARY FROM VEVENT
WHERE DTSTART >= '20000201T000000Z' WHERE DTSTART >= '20000201T000000Z'
skipping to change at page 50, line 29 skipping to change at page 51, line 29
Formal Definition: The value type is defined by the following Formal Definition: The value type is defined by the following
notation: notation:
upn = "@" upn = "@"
/ [ dot-atom-text ] "@" dot-atom-text / [ dot-atom-text ] "@" dot-atom-text
; dot-atom-text is defined in RFC 2822 ; dot-atom-text is defined in RFC 2822
Description: This data type is an identifier that denotes a CU or a Description: This data type is an identifier that denotes a CU or a
group of CU. group of CU. A UPN is a RFC 822 compliant email address, with
exceptions listed below, and in most cases it is deliverable to the
CU. In some cases it is identical to the CU's well known email
address. A CU's UPN MUST never be an e-mail address that is
deliverable to a different person as there is no requirement that a
person's UPN MUST BE their e-mail address. A UPN is formatted as a
user name followed by "@" followed by a Realm in the form of a valid,
and unique, DNS domain name. The user name MUST BE unique within the
Realm. In it's simplest form it looks like "user@example.com".
In certain cases a UPN will not be RFC 822 compliant. When anonymous
authentication is used, or anonymous authorization is being defined,
the special UPN "@" will be used. When authentication MUST BE used,
but unique identity MUST BE obscured, a UPN of the form @DNS-domain-
name may be used. For example, "@example.com".
Example: Example:
The following is a UPN for a CU: The following is a UPN for a CU:
jdoe@acme.com jdoe@example.com
The following is a UPN for a group of CU: The following is a example of a UPN that could be for a group of CU:
staff@acme.com staff@example.com
The following is a UPN for an anonymous CU belonging to a specific The following is a UPN for an anonymous CU belonging to a specific
realm: realm or when used as a UPN-FILTER it specifies that it applies to
all UPNs in a specific realm:
@acme.com @example.com
The following is a UPN for an anonymous CU: The following is a UPN for an anonymous CU:
@ @
6.1.3 UPN-FILTER Value 6.1.3 UPN-FILTER Value
Value Name: UPN-FILTER Value Name: UPN-FILTER
Purpose: This value type is used to identify values that contain a Purpose: This value type is used to identify values that contain a
user principal name filter. user principal name filter.
Formal Definition: The value type is defined by the following Formal Definition: The value type is defined by the following
notation: notation:
; NOTE: "CAL-OWNERS(cal-address)" ; NOTE: "CAL-OWNERS(cal-address)"
; and "NOT CAL-OWNERS(cal-addres)" ; and "NOT CAL-OWNERS(cal-address)"
; are both NOT allowed below. ; are both NOT allowed below.
; ;
upn-filter = "CAL-OWNERS()" / upn-filter = "CAL-OWNERS()" /
"NOT CAL-OWNERS()" / "NOT CAL-OWNERS()" /
"*" / "*" /
[ "*" / dot-atom-text ] "@" ( "*" / dot-atom-text ) [ "*" / dot-atom-text ] "@" ( "*" / dot-atom-text )
; dot-atom-text is defined in RFC 2822 ; dot-atom-text is defined in RFC 2822
Description: The value is used to match user principal names (UPNs). Description: The value is used to match user principal names (UPNs).
For "CAL-OWNERS()" and "NOT CAL-OWNERS()", see Section 8.19. For "CAL-OWNERS()" and "NOT CAL-OWNERS()", see Section 8.24.
* Matches all UPNs. * Matches all UPNs.
@ Matches the UPN of anonymous CUs @ Matches the UPN of anonymous CUs
belonging to the null realm belonging to the null realm
@* Matches the UPN of anonymous CUs @* Matches the UPN of anonymous CUs
belonging to any non-null realm belonging to any non-null realm
@realm Matches the UPN of anonymous CUs @realm Matches the UPN of anonymous CUs
skipping to change at page 53, line 4 skipping to change at page 54, line 6
belonging to the specified realm belonging to the specified realm
user@realm Matches the UPN of the specified CU user@realm Matches the UPN of the specified CU
belonging to the specified realm belonging to the specified realm
user@* Not allowed. user@* Not allowed.
Example: The following are examples of this value type: Example: The following are examples of this value type:
DENY:NON CAL-OWNERS() DENY:NON CAL-OWNERS()
DENY:@hackers.example.com
GRANT:sam@example.com
7. New Parameters 7. New Parameters
7.1 ENABLE Parameter 7.1 ACTION Parameter
Parameter Name: ACTION
Purpose: This parameter indicates the action to be taken when a
timeout occurs.
Value Type: TEXT
Conformance: This property can be specified in the "CMD" property.
When present in a "CMD" property the "ACTION" parameter specifies the
action to be taken when the command timeout expires.
Formal Definition: The parameter is defined by the following
notation:
action-param = ";" "ACTION" "=" ( "ASK" / "ABORT" )
; If 'action-param' is supplied then
; 'latency-param' MUST BE supplied.
Example: The following is an example of this parameter:
CMD;LATENCY=10;ACTION=ASK:CREATE
7.2 ENABLE Parameter
Parameter Name: ENABLE Parameter Name: ENABLE
Purpose: This parameter indicates whether or not the "TRIGGER" Purpose: This parameter indicates whether or not the "TRIGGER"
property in a "VALARM" component should be ignored. property in a "VALARM" component should be ignored.
Value Type: BOOLEAN Value Type: BOOLEAN
Conformance: This property can be specified in the "TRIGGER" Conformance: This property can be specified in the "TRIGGER"
properties. properties.
skipping to change at page 53, line 29 skipping to change at page 56, line 11
Description: When a non owner sends an [iTIP] "REQUEST" to a calendar Description: When a non owner sends an [iTIP] "REQUEST" to a calendar
that object might contain a "VALARM" component. The owner may wish that object might contain a "VALARM" component. The owner may wish
to have local control over their own CUA and when or how alarms are to have local control over their own CUA and when or how alarms are
triggered. triggered.
A CUA may add the "ENABLE" parameter to any "TRIGGER" property before A CUA may add the "ENABLE" parameter to any "TRIGGER" property before
booking the component. If the "ENABLE" parameter is set to "FALSE", booking the component. If the "ENABLE" parameter is set to "FALSE",
then the alarm will be ignored by the CUA. If set to "TRUE", or if then the alarm will be ignored by the CUA. If set to "TRUE", or if
the "ENABLE" property is not in the "TRIGGER" property, the alarm is the "ENABLE" property is not in the "TRIGGER" property, the alarm is
enabled. The CUA should remove the "ENABLE" parameter before enabled. The CUA should remove the "ENABLE" parameter before
forwarding the component to a non-cap CUA. forwarding the component to a non-CAP CUA.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
enable-param = "ENABLE" "=" boolean enable-param = "ENABLE" "=" boolean
Example: The following is an example of this property for a "VAGENDA" Example: The following is an example of this property for a "VAGENDA"
component: component:
TRIGGER;ENABLE=FALSE;RELATED=END:PT5M TRIGGER;ENABLE=FALSE;RELATED=END:PT5M
7.2 LOCAL Parameter 7.3 ID Parameter
Parameter Name: ID
Purpose: When used in a "CMD" component provides a unique identifier.
Value Type: TEXT
Conformance: This parameter can be specified in the "CMD" property.
Description: If there is more than one command sent then the "ID"
parameter is used to uniquely identify the command.
A CUA may add the "ID" parameter to any "CMD" property before sending
the command. There must not be more than one outstanding command
tagged with the same "ID" parameter value.
Formal Definition: The property is defined by the following notation:
id-param = ";" "ID" "=" unique-id
; The text value supplied is a unique value
; shared between the CUA and CS to uniquely
; identify the instance of command in the
; the current CUA session. The value has
; no meaning to other CUAs or other sessions.
unique-id = ; text
Example: The following is an example of this parameter component:
CMD;UD=some-unique-value:CREATE
7.4 LATENCY Parameter
Parameter Name: LATENCY
Purpose: This parameter indicates time in seconds for when a timeout
occurs.
Value Type: TEXT
Conformance: This property can be specified in the "CMD" property.
When present in a "CMD" property the "LATENCY" parameter specifies
the time in sections when the command timeout expires.
Formal Definition: The parameter is defined by the following
notation:
latency-param = ";" "LATENCY" "=" latency-sec
; The value supplied in the time in seconds.
; If 'latency-param' is supplied then
; 'action-param' MUST BE supplied.
latency-sec = posint1
Example: The following is an example of this parameter:
CMD;LATENCY=10;ACTION=ASK:CREATE
7.5 LOCAL Parameter
Parameter Name: LOCAL Parameter Name: LOCAL
Purpose: Indicates if the "VALARM" component should be exported to Purpose: Indicates if the "VALARM" component should be exported to
any non-organizer calendar. any non-organizer calendar.
Value Type: BOOLEAN Value Type: BOOLEAN
Conformance: This parameter can be specified in the "SEQUENCE" Conformance: This parameter can be specified in the "SEQUENCE"
properties in a "VALARM" component. properties in a "VALARM" component.
Description: When a non owner sends an [iTIP] "REQUEST" to a calendar Description: When a non owner sends an [iTIP] "REQUEST" to a calendar
that object might contain a "VALARM" component. The owner may wish that object might contain a "VALARM" component. The owner may wish
to have local control over their own CUA and when or how alarms are to have local control over their own CUA and when or how alarms are
triggered. triggered.
A CUA may add the "LOCAL" parameter to the "SEQUENCE" property before A CUA may add the "LOCAL" parameter to the "SEQUENCE" property before
booking the component. If the "LOCAL" parameter is set to "FALSE", booking the component. If the "LOCAL" parameter is set to "FALSE",
skipping to change at page 54, line 14 skipping to change at page 58, line 26
Conformance: This parameter can be specified in the "SEQUENCE" Conformance: This parameter can be specified in the "SEQUENCE"
properties in a "VALARM" component. properties in a "VALARM" component.
Description: When a non owner sends an [iTIP] "REQUEST" to a calendar Description: When a non owner sends an [iTIP] "REQUEST" to a calendar
that object might contain a "VALARM" component. The owner may wish that object might contain a "VALARM" component. The owner may wish
to have local control over their own CUA and when or how alarms are to have local control over their own CUA and when or how alarms are
triggered. triggered.
A CUA may add the "LOCAL" parameter to the "SEQUENCE" property before A CUA may add the "LOCAL" parameter to the "SEQUENCE" property before
booking the component. If the "LOCAL" parameter is set to "FALSE", booking the component. If the "LOCAL" parameter is set to "FALSE",
then the alarm MUST NOT be forwarded to any non organizer calendar. then the alarm MUST NOT be forwarded to any other calender. If set
If set to "TRUE", or of the "LOCAL" property is not in the "SEQUENCE" to "TRUE", or of the "LOCAL" property is not in the "SEQUENCE"
property, the alarm is global. The CUA should remove the "LOCAL" property, the alarm is global. The CUA should remove the "LOCAL"
parameter before forwarding the component to a non-cap CUA and to non parameter before forwarding the component to a non-cap CUA other
organizer calendars. calendars.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
local-param = "LOCAL" "=" boolean local-param = "LOCAL" "=" boolean
Example: The following is an example of this property for a "VAGENDA" Example: The following is an example of this parameter:
component:
SEQUENCE;LOCAL=TRUE:4 SEQUENCE;LOCAL=TRUE:4
7.6 LOCALIZE Parameter
Parameter Name: LOCALIZE
Purpose: If provided the "LOCALIZE" parameter specifies the desired
language for error and warning messages.
Value Type: TEXT
Conformance: This parameter can be specified in the "CMD" properties.
When the "LOCALIZE" parameter is supplied then its value MUST BE one
of the values listed in the initial [BEEP] greeting 'localize'
attribute.
A CUA may add the "LOCAL" parameter to the "LOCALIZE" parameter to
the "CMD" property to specify the language of any error or warning
messages.
Formal Definition: The property is defined by the following notation:
localize-param = ";" "LOCALIZE" "=" beep-localize
; The value supplied MUST BE one value from the initial
; [BEEP] greeting 'localize' attribute specifying
; the locale to use for error messages during
; this instance of the command sent.
beep-localize = ; text
Example: The following is an example of this parameter:
CMD;LOCALIZE=fr_CA:CREATE
7.7 OPTIONS Parameter
Parameter Name: OPTIONS
Purpose: If provided the "OPTIONS" parameter specifies some "CMD"
property specific options.
Value Type: TEXT
Conformance: This parameter can be specified in the "CMD" properties.
A CUA adds the "OPTIONS" parameter to the "LOCALIZE" parameter to the
"CMD" property when the command needs extra values.
Formal Definition: The property is defined by the following notation:
option-param = ";" "OPTIONS" "=" cmd-specific
cmd-specific = ; The value supplied is dependent on the
; CMD value. See the specific CMDs for the
; correct values to use for each CMD.
Example: The following is an example of this parameter:
CMD;OPTIONS=10:GENERATE-UID
8. New Properties 8. New Properties
8.1 ALLOW-CONFLICT Property 8.1 ALLOW-CONFLICT Property
Property Name: ALLOW-CONFLICT Property Name: ALLOW-CONFLICT
Purpose: This property indicates whether or not the calendar and CS Purpose: This property indicates whether or not the calendar and CS
supports component conflicts. That is, whether or not any of the supports component conflicts. That is, whether or not any of the
components in the calendar can overlap. components in the calendar can overlap.
skipping to change at page 55, line 34 skipping to change at page 61, line 34
conflict. That is, if their expanded instances may share the same conflict. That is, if their expanded instances may share the same
time or overlap the same time periods. If it has a value of TRUE, time or overlap the same time periods. If it has a value of TRUE,
then conflicts are allowed. If FALSE, the no two components may then conflicts are allowed. If FALSE, the no two components may
conflict. conflict.
If FALSE in the "VCALSTORE" component, then all "VAGENDA" component If FALSE in the "VCALSTORE" component, then all "VAGENDA" component
"ALLOW-CONFLICT" property values MUST BE false in the CS. "ALLOW-CONFLICT" property values MUST BE false in the CS.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
allow-conflict = "ALLOW-CONFLICT" allow-conflict = "ALLOW-CONFLICT" other-params ":" boolean CRLF
*(";" xparam) ":" boolean CRLF
Example: The following is an example of this property for a "VAGENDA" Example: The following is an example of this property for a "VAGENDA"
component: component:
ALLOW-CONFLICT:FALSE ALLOW-CONFLICT:FALSE
8.2 ATT-COUNTER Property 8.2 ATT-COUNTER Property
Property Name: ATT-COUNTER Property Name: ATT-COUNTER
skipping to change at page 56, line 17 skipping to change at page 62, line 17
When storing a "METHOD" property with the "COUNTER" method, there When storing a "METHOD" property with the "COUNTER" method, there
needs to be a way to remember who sent the COUNTER. The ATT-COUNTER needs to be a way to remember who sent the COUNTER. The ATT-COUNTER
property MUST BE added to all "COUNTER" [iTIP] components by the CUA property MUST BE added to all "COUNTER" [iTIP] components by the CUA
before storing in a CS. before storing in a CS.
Description: This property is used to identify the CAL-ADDRESS of the Description: This property is used to identify the CAL-ADDRESS of the
entity that sent the "COUNTER" [iTIP] object. entity that sent the "COUNTER" [iTIP] object.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
attcounter = "ATT-COUNTER" *(";" xparam) ":" cal-address CRLF attcounter = "ATT-COUNTER" other-params ":" cal-address CRLF
Examples: Examples:
ATT-COUNTER:cap:example.com/Doug ATT-COUNTER:cap:example.com/Doug
ATT-COUNTER:mailto:Doug@Example.com ATT-COUNTER:mailto:Doug@Example.com
8.3 CALID Property 8.3 CALID Property
Property Name: CALID Property Name: CALID
skipping to change at page 56, line 39 skipping to change at page 62, line 39
specified on this property. specified on this property.
Conformance: This property can be specified in the "VAGENDA" Conformance: This property can be specified in the "VAGENDA"
component. component.
Description: This property is used to specify a fully qualified Description: This property is used to specify a fully qualified
calid. calid.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
CALID = "CALID" *(";" xparam) ":" calid CRLF CALID = "CALID" other-params ":" calid CRLF
Example: Example:
CALID:cap://cal.example.com/sdfifgty4321 CALID:cap://cal.example.com/sdfifgty4321
8.4 CALMASTER Property 8.4 CALMASTER Property
Property Name: CALMASTER Property Name: CALMASTER
Purpose: The property specifies an e-mail address of a person Purpose: The property specifies an e-mail address of a person
skipping to change at page 57, line 26 skipping to change at page 63, line 26
Conformance: The property can be specified in a "VCALSTORE" Conformance: The property can be specified in a "VCALSTORE"
component. component.
Description: The parameter value SHOULD BE a MAILTO URI as defined in Description: The parameter value SHOULD BE a MAILTO URI as defined in
[URL]. It MUST BE a contact URI such as a MAILTO URI and not a home [URL]. It MUST BE a contact URI such as a MAILTO URI and not a home
page or file URI that describes how to contact the calmasters. page or file URI that describes how to contact the calmasters.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
calmaster = "CALMASTER" *(";" xparam) ":" uri CRLF calmaster = "CALMASTER" other-params ":" uri CRLF
uri = IANA registered uri and defined by RFC 2445 uri = ; IANA registered uri as defined in [iCAL]
Example: The following is an example of this property: Example: The following is an example of this property:
CALMASTER:mailto:administrator@example.com CALMASTER:mailto:administrator@example.com
8.5 CARID Property 8.5 CAP-VERSION Property
Property Name: CAP-VERSION
Purpose: This property specifies the version of CAP supported.
Value Type: TEXT
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: This property is specified in the "VREPLY" component
that is sent in response to a "GET-CAPABILITY" command.
Description: This specifies the version of CAP that the endpoint
supports. The list is a comma separated list of RFC numbers
supported. The list MUST contain at least XXXX (NOTE 'XXXX' WILL BE
REPLACED WITH THE RFC NUMBER OF THIS DOCUMENT).
Formal Definition: The property is defined by the following notation:
cap-version = "CAP-VERSION" other-params ":" text CRLF
Example: The following are examples of this property:
CAP-VERSION:XXXX
8.6 CARID Property
Property Name: CARID Property Name: CARID
Purpose: This property specifies the identifier for an access right Purpose: This property specifies the identifier for an access right
component. component.
Value Type: TEXT Value Type: TEXT
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: This property MUST BE specified once in a "VCAR" Conformance: This property MUST BE specified once in a "VCAR"
component. component.
Description: This property is used in the "VCAR" component to specify Description: This property is used in the "VCAR" component to specify
an identifier. A "CARID" property value is unique per container. an identifier. A "CARID" property value is unique per container.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
carid = "CARID" *(";" xparam) ":" text CRLF carid = "CARID" other-params ":" text CRLF
Example: The following are examples of this property: Example: The following are examples of this property:
CARID:xyzzy-007 CARID:xyzzy-007
CARID:User Rights CARID:User Rights
8.6 CSID Property 8.7 CAR-LEVEL Property
Property Name: CAR-LEVEL
Purpose: The property specifies the level of VCAR supported.
Value Type: TEXT
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: The property can be specified in a "VREPLY" component
that is sent in response to a "GET-CAPABILITY" command.
Description: The value is one from a list of "CAR-NONE", "CAR-MIN",
or "CAR-FULL-1". If "CAR-FULL-1" is supplied then "CAR-MIN" is also
available. A "CAR-MIN" implementation only supported the "DEFAULT-
VCARS" property values listed in the "VCALSTORE" component and a
"CAR-MIN" implementation does not support the creation or
modification of "VCAR" components from the CUA.
Formal Definition: The property is defined by the following notation:
car-level = "CAR-LEVEL" ":" other-params : car-level-values
car-level-values = ( "CAR-NONE" / "CAR-MIN" / "CAR-FULL-1"
/ other-levels )
other-levels = ; Any name published in an RFC for a "CAR-LEVEL"
; property value.
Example: The following is an example of this property:
CAR-LEVEL:CAR-FULL-1
8.8 COMPONENTS Property
Property Name: COMPONENTS
Purpose: The property specifies a the list of components supported by
the endpoint.
Value Type: TEXT
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: The property can be specified in a "VREPLY" component in
response to a "GET-CAPABILITY" command.
Description: A comma separated list of components supported by the
endpoint. If not in the list sent from the endpoint then they are
not supported by that endpoint. Sending an unsupported component
results in unpredictable results. This includes any components
inside of other components (VALARM for example). It MUST include at
least VCALSTORE, VCALENDAR, VTIMEZONE, STANDARD, DAYLIGHT, VREPLY,
and VAGENDA and at least one of VEVENT, VTODO, or VJOURNAL. The
recommened list is "VCALSTORE,VCALENDAR,VREPLY,VAGENDA,
VEVENT,VALARM,VTIMEZONE,VJOURNAL,VTODO, DAYLIGHT,STANDARD"
Formal Definition: The property is defined by the following notation:
components = "COMPONENTS" other-params ":" comp-list CRLF
; All of the following MUST BE supplied in any order.
;
comp-list-req = "VCALSTORE" "," "VCALENDAR" "," "VTIMEZONE" ","
"VREPLY", "VAGENDA", "STANDARD", "DAYLIGHT"
; At least one MUST BE supplied. The same value
; MUST NOT occur more than once.
;
comp-list-min = ( "," "VEVENT") / ( "," "VTODO") / ( "," "VJOURNAL" )
; The same value MUST NOT occur
; more than once.
;
comp-list-opt = ( "," "VFREEBUSY" ) / ( "," "VALARM" )
( "," "VCAR" ) / ( "," "VQUERY" )
( "," x-comp ) / ( "," iana-comp )
comp-list = comp-list-req 1*3comp-list-min *comp-list-opt
*("," comp-list-names) comp-name
Example: The following is an example of this property:
COMPONENTS:VCALSTORE,VCALENDAR,VREPLY,VAGENDA,
VEVENT,VALARM,VTIMEZONE,VJOURNAL,VTODO,
DAYLIGHT,STANDARD"
8.9 CSID Property
Property Name: CSID Property Name: CSID
Purpose: The property specifies a the globally unique identifier for Purpose: The property specifies a the globally unique identifier for
the calendar store. the calendar store.
Value Type: URI Value Type: URI
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: The property can be specified in a "VCALSTORE" Conformance: The property can be specified in a "VCALSTORE"
component. component.
Description: The identifier MUST BE globally unique. Description: The identifier MUST BE globally unique. Each CS needs
its own unique identifier. The "CSID" property is the official
unique identifier for the CS. If the [BEEP] 'serverName' attribute
was supplied in the [BEEP] 'start' message, then the CSID will be
mapped to the virtual host name supplied and the host name part of
the CSID MUST BE the same as the 'serverName' value. This allows one
CS implementation to service multiple virtual hosts. CS's are not
required to support virtual hosting. If a CS does not support
virtual hosting then it must ignore the [BEEP] 'serverName'
attribute.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
csid = "CSID" *(";" xparam) ":" capurl CRLF csid = "CSID" other-params ":" capurl CRLF
Example: The following is an example of this property: Example: The following is an example of this property:
CSID:cap://calendar.example.com CSID:cap://calendar.example.com
8.7 DECREED Property 8.10 DECREED Property
Property Name: DECREED Property Name: DECREED
Purpose: This property specifies if an access right calendar Purpose: This property specifies if an access right calendar
component is decreed or not. component is decreed or not.
Value Type: BOOLEAN Value Type: BOOLEAN
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: This property MAY be specified once in a "VCAR" Conformance: This property MAY be specified once in a "VCAR"
component. component.
Description: This property is used in the "VCAR" component to specify Description: This property is used in the "VCAR" component to specify
whether the component is decreed or not. whether the component is decreed or not. If the "DECREED" property
value is "true" then the CUA will be unable to change the contents of
the "VCAR" component and any attempt will fail with an error.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
decreed = "DECREED" *(";" xparam) ":" boolean CRLF decreed = "DECREED" other-params ":" boolean CRLF
Example: The following is an example of this property: Example: The following is an example of this property:
DECREED:TRUE DECREED:TRUE
8.8 DEFAULT-CHARSET Property 8.11 DEFAULT-CHARSET Property
Property Name: DEFAULT-CHARSET Property Name: DEFAULT-CHARSET
Purpose: This property indicates the default charset. Purpose: This property indicates the default charset.
Value Type: TEXT Value Type: TEXT
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: This property can be specified in "VAGENDA" and Conformance: This property can be specified in "VAGENDA" and
"VCALSTORE" calendar component. "VCALSTORE" calendar component.
Description: In a "VAGENDA" component, this property is used to Description: In a "VAGENDA" component this property is used to
indicate the charset of calendar. If not specified, the default is indicate the charset of calendar. If not specified, the default is
the first value in the "VCALSTORE" components "DEFAULT-CHARSET" the first value in the "VCALSTORE" components "DEFAULT-CHARSET"
property value list. The value MUST BE an IANA registered character property value list. The value MUST BE an IANA registered character
set as defined in [CHARREG]. set as defined in [CHARREG].
In a "VCALSTORE" component it is a comma separated list of charsets In a "VCALSTORE" component it is a comma separated list of charsets
supported by the CS. The first entry is the default entry for all supported by the CS. The first entry is the default entry for all
newly created "VAGENDA" components. The "UTF-8" value MUST BE in the newly created "VAGENDA" components. The "UTF-8" value MUST BE in the
"VCALSTORE" component "DEFAULT-CHARSET" property list. All compliant "VCALSTORE" component "DEFAULT-CHARSET" property list. All compliant
CAP implementations must support the "UTF-8" charset. CAP implementations (CS and CUA) MUST support the "UTF-8" charset.
If a charset name contains a comma (,), then that comma must be If a charset name contains a comma (,), then that comma must be
backslashed escaped in the value. backslashed escaped in the value.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
default-charset = "DEFAULT-CHARSET" *(";" xparam) default-charset = "DEFAULT-CHARSET" other-params ":" text
":" text CRLF *( "," text) CRLF
Example: The following is an example of this property for a "VAGENDA" Example: The following is an example of this property for a "VAGENDA"
component: component:
DEFAULT-CHARSET:Shift_JIS,UTF-8 DEFAULT-CHARSET:Shift_JIS,UTF-8
8.9 DEFAULT-LOCALE Property 8.12 DEFAULT-LOCALE Property
Property Name: DEFAULT-LOCALE Property Name: DEFAULT-LOCALE
Purpose: This property specifies the default language for text Purpose: This property specifies the default language for text
values. values.
Value Type: TEXT Value Type: TEXT
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
skipping to change at page 61, line 9 skipping to change at page 70, line 11
is used to indicate the locale of the calendar. The full locale is used to indicate the locale of the calendar. The full locale
SHOULD be used. The default and minimum locale is POSIX (aka the 'C' SHOULD be used. The default and minimum locale is POSIX (aka the 'C'
locale). locale).
In a "VCALSTORE" component it is a comma separated list of locales In a "VCALSTORE" component it is a comma separated list of locales
supported by the CS. The first value in the list is the default for supported by the CS. The first value in the list is the default for
all newly created VAGENDAs. "POSIX" MUST BE in the list. all newly created VAGENDAs. "POSIX" MUST BE in the list.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
default-locale = "DEFAULT-LOCALE" *(";" xparam) default-locale = "DEFAULT-LOCALE" other-params ":" language
":" language CRLF *( "," language) CRLF
language = Text identifying a locale, as defined in [CHARPOL] language = Text identifying a locale, as defined in [CHARPOL]
Example: The following is an example of this property: Example: The following is an example of this property:
DEFAULT-LOCALE:en-US.iso-8859-1,POSIX DEFAULT-LOCALE:en-US.iso-8859-1,POSIX
8.10 DEFAULT-TZID Property 8.13 DEFAULT-TZID Property
Property Name: DEFAULT-TZID Property Name: DEFAULT-TZID
Purpose: This property specifies the text value that specifies the Purpose: This property specifies the text value that specifies the
default time zone for a calendar. time zones.
Value Type: TEXT Value Type: TEXT
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: This property may be specified once in a "VAGENDA" and Conformance: This property may be specified once in a "VAGENDA" and
"VCALSTORE" components. "VCALSTORE" components.
Description: In a "VAGENDA" component it is the value of the time Description: A multi valued property that lists the known time zones.
zone for the calendar. This time zone is used when as the localtime The first is the default. Where "TZID" property values are the same
for object that contain a date or date-time value without a time as the "TZID" property as defined in [iCAL].
zone.
In a "VCALSTORE" component it is a comma separated list of TZIDs If in a "VCALSTORE" component it is a comma separated list of TZIDs
known to the CS. Where "TZID" property values are the same as the known to the CS. The entry is used as the default TZID list for all
"TZID" property as defined in [iCAL]. The first entry in the list is newly created calendars. The list MUST contain at least "UTC". A
used as the default TZID for all newly created calendars. The list "VCALSTORE" components MUST have one "VTIMEZONE" component contained
MUST contain at least "UTC". in it for each value in the "DEFAULT-TZID" property value.
If in a "VAGENDA" component it is a comma separated list of "TZID"
property values naming the time zones known to the calendar. The
first time zone in the list is the default and is used as the
localtime for objects that contain a date or date-time value without
a time zone. All "VAGENDA" components MUST have one "VTIMEZONE"
component contained for each value in the "DEFAULT-TZID" property
value.
If a "TZID" property value contains a comma (,), the comma must be If a "TZID" property value contains a comma (,), the comma must be
backslash escaped. backslash escaped.
Formal Definition: This property is defined by the following Formal Definition: This property is defined by the following
notation: notation:
default-tzid = "DEFAULT-TZID" *(";" xparam) default-tzid = "DEFAULT-TZID" other-params
":" [tzidprefix] text CRLF ":" [tzidprefix] text
*("," [tzidprefix] text) CRLF
Example: The following is an example of this property: Example: The following is an example of this property:
DEFAULT-TZID:US/Eastern,UTC DEFAULT-TZID:US/Eastern,UTC
8.11 DEFAULT-VCARS Property 8.14 DEFAULT-VCARS Property
Property Name: DEFAULT-VCARS Property Name: DEFAULT-VCARS
Purpose: This property is used to specify the "CARID" property ids of Purpose: This property is used to specify the "CARID" property ids of
the default "VCAR" components for newly created "VAGENDA" components. the default "VCAR" components for newly created "VAGENDA" components.
Value Type: TEXT Value Type: TEXT
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
skipping to change at page 62, line 40 skipping to change at page 72, line 5
"DEFAULTOWNER". "DEFAULTOWNER".
Description: This property is used in the "VCALSTORE" component to Description: This property is used in the "VCALSTORE" component to
specify the "CARID" value of the "VCAR" components that MUST BE specify the "CARID" value of the "VCAR" components that MUST BE
copied into now "VAGENDA" components at creation time by the CS. All copied into now "VAGENDA" components at creation time by the CS. All
"DEFAULT-VCAR" values must have "VCARS" components stored in the "DEFAULT-VCAR" values must have "VCARS" components stored in the
"VCALSTORE". "VCALSTORE".
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
def-vcars = "DEFAULT-VCARS" *(";" xparam) ":" text def-vcars = "DEFAULT-VCARS" other-params ":" text
*( "," text ) CRLF *( "," text ) CRLF
Example: The following is an example of this property: Example: The following is an example of this property:
DEFAULT-VCARS:READBUSYTIMEINFO,REQUESTONLY, DEFAULT-VCARS:READBUSYTIMEINFO,REQUESTONLY,
UPDATEPARTSTATUS,DEFAULTOWNER UPDATEPARTSTATUS,DEFAULTOWNER
8.12 DENY Property 8.15 DENY Property
Property Name: DENY Property Name: DENY
Purpose: This property identifies the UPN(s) being denied access in Purpose: This property identifies the UPN(s) being denied access in
the "VRIGHT" component. the "VRIGHT" component.
Value Type: UPN-FILTER Value Type: UPN-FILTER
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: This property can be specified in "VRIGHT" components. Conformance: This property can be specified in "VRIGHT" components.
Description: This property is used in the "VRIGHT" component to Description: This property is used in the "VRIGHT" component to
define the CU or UG being denied access. define the CU or UG being denied access.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
deny = "DENY" *(";" xparam) ":" upn-filter CRLF deny = "DENY" other-params ":" upn-filter CRLF
Example: The following are examples of this property: Example: The following are examples of this property:
DENY:* DENY:*
DENY:bob@example.com DENY:bob@example.com
8.13 EXPAND property 8.16 EXPAND property
Property Name: EXPAND Property Name: EXPAND
Purpose: This property is to notify the CS if it should or should not Purpose: This property is to notify the CS if it should or should not
expand any component with recurrence rules into multiple instances in expand any component with recurrence rules into multiple instances in
a query reply. a query reply.
Value Type: BOOLEAN Value Type: BOOLEAN
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: This property can be specified in "VQUERY" components. Conformance: This property can be specified in "VQUERY" components.
skipping to change at page 64, line 10 skipping to change at page 73, line 17
Value Type: BOOLEAN Value Type: BOOLEAN
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: This property can be specified in "VQUERY" components. Conformance: This property can be specified in "VQUERY" components.
Description: If a CUA wishes to see all of the instances of a Description: If a CUA wishes to see all of the instances of a
recurring component the CUA sets EXPAND=TRUE in the "VQUERY" recurring component the CUA sets EXPAND=TRUE in the "VQUERY"
component. If not specified, the default is FALSE. component. If not specified, the default is FALSE. Note that if the
CS has its "RECUR-EXPAND" CS property value set to false then the
"EXPAND" property will be ignored and the result will be as if the
"EXPAND" value was set to false.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
expand = "EXPAND" *(";" xparam) ":" ("TRUE" / "FALSE") CRLF expand = "EXPAND" other-params ":" ("TRUE" / "FALSE") CRLF
Example: The following are examples of this property: Example: The following are examples of this property:
EXPAND:FALSE EXPAND:FALSE
EXPAND:TRUE EXPAND:TRUE
8.14 GRANT Property 8.17 GRANT Property
Property Name: GRANT Property Name: GRANT
Purpose: This property identifies the UPN(s) being granted access in Purpose: This property identifies the UPN(s) being granted access in
the "VRIGHT" component. the "VRIGHT" component.
Value Type: UPN-FILTER Value Type: UPN-FILTER
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: This property can be specified in "VRIGHT" calendar Conformance: This property can be specified in "VRIGHT" calendar
components. components.
Description: This property is used in the "VRIGHT" component to Description: This property is used in the "VRIGHT" component to
specify the CU or UG being granted access. specify the CU or UG being granted access.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
grant = "GRANT" *(";" xparam) ":" upn-filter CRLF grant = "GRANT" other-params ":" upn-filter CRLF
Example: The following are examples of this property: Example: The following are examples of this property:
GRANT:* GRANT:*
GRANT:bob@example.com GRANT:bob@example.com
8.15 MAXDATE Property 8.18 ITIP-VERSION Property
Property Name: ITIP-VERSION
Purpose: This property specifies the version of ITIP supported.
Value Type: TEXT
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: This property is specified in the "VREPLY" component
that is sent in response to a "GET-CAPABILITY" command.
Description: This specifies the version of ITIP that the endpoint
supports. The list is a comma separated list of RFC numbers
supported. The list MUST contain at least 2446.
Formal Definition: The property is defined by the following notation:
itip-version = "ITIP-VERSION" other-params ":" text CRLF
Example: The following are examples of this property:
ITIP-VERSION:2446
8.19 MAX-COMP-SIZE Property
Property Name: MAX-COMP-SIZE
Purpose: This property specifies the largest size of any object
accepted.
Value Type: TEXT
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: This property is specified in the "VREPLY" component
that is sent in response to a "GET-CAPABILITY" command.
Description: A positive integer value that specifies the size of the
largest iCalendar object that can be accepted in octets. Objects
larger than this will be rejected. A value of zero (0) means no
limit. This is also the maximum value of any [BEEP] payload that
will be accepted or sent.
Formal Definition: The property is defined by the following notation:
max-comp-size = "MAX-COMP-SIZE" other-params ":" posint0 CRLF
Example: The following are examples of this property:
MAX-COMP-SIZE:1024
8.20 MAXDATE Property
Property Name: MAXDATE Property Name: MAXDATE
Purpose: This property specifies the date/time in the future beyond Purpose: This property specifies the date/time in the future beyond
which the CS cannot represent. which the CS or CUA cannot represent.
Value Type: DATE-TIME Value Type: DATE-TIME
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: The property can be specified in the "VCALSTORE" Conformance: The property can be specified in the "VCALSTORE"
component. component.
Description: The date and time MUST BE a UTC value and end with 'Z'. Description: The date and time MUST BE a UTC value and end with 'Z'.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
maxdate = "MAXDATE" *(";" xparam) ":" date-time CRLF maxdate = "MAXDATE" other-params ":" date-time CRLF
Example: The following is an example of this property: Example: The following is an example of this property:
MAXDATE:20990101T000000Z MAXDATE:20990101T000000Z
8.16 MINDATE Property 8.21 MINDATE Property
Property Name: MINDATE Property Name: MINDATE
Purpose: This property specifies the date/time in the past prior to Purpose: This property specifies the date/time in the past prior to
which the server cannot represent. which the server cannot represent.
Value Type: DATE-TIME Value Type: DATE-TIME
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: The property can be specified in the "VCALSTORE" Conformance: The property can be specified in the "VCALSTORE"
component. component.
Description: The date and time MUST BE a UTC value and end with 'Z'. Description: The date and time MUST BE a UTC value and end with 'Z'.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
mindate = "MINDATE" *(";" xparam) ":" date-time CRLF mindate = "MINDATE" other-params ":" date-time CRLF
Example: The following is an example of this property: Example: The following is an example of this property:
MINDATE:19710101T000000Z MINDATE:19710101T000000Z
8.17 MULTIPART Property 8.22 MULTIPART Property
Property Name: MULTIPART Property Name: MULTIPART
Purpose: This property provides a comma separated list of supported Purpose: This property provides a comma separated list of supported
MIME multipart types supported by the sender. MIME multipart types supported by the sender.
Value Type: TEXT Value Type: TEXT
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: This property can be specified in a component. Conformance: This property can be specified in a component.
Description: This property is used in the in the "GET-CAPABILITY" Description: This property is used in the in the "GET-CAPABILITY"
comamnd reply to indicated the MIME multipart types supported. A CS command reply to indicated the MIME multipart types supported. A CS
and CUS SHOULD support all registered MIME multipart types. and CUA SHOULD support all registered MIME multipart types.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
name = "MULTIPART" nameparam ":" text CRLF name = "MULTIPART" other-params ":" text *( "," text) CRLF
nameparam = *(
; the following is optional,
; and MAY occur more than once
( ";" xparam )
)
Example: The following is an example of this property: Example: The following is an example of this property:
MULTIPART:related,alternate,mixed MULTIPART:related,alternate,mixed
8.18 NAME Property 8.23 NAME Property
Property Name: NAME Property Name: NAME
Purpose: This property provides a localizable display name for a Purpose: This property provides a localizable display name for a
component. component.
Value Type: TEXT Value Type: TEXT
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
skipping to change at page 68, line 7 skipping to change at page 78, line 12
localizable display name. If more than one "NAME" properties are in localizable display name. If more than one "NAME" properties are in
a component, then they MUST have unique "LANG" parameters. If the a component, then they MUST have unique "LANG" parameters. If the
"LANG" parameter is not supplied, then it defaults to the "VAGENDA" "LANG" parameter is not supplied, then it defaults to the "VAGENDA"
default if the component is in a "VAGENDA", or the "VCALSTORE" default if the component is in a "VAGENDA", or the "VCALSTORE"
default if the component is stored at the "VCALSTORE" level. default if the component is stored at the "VCALSTORE" level.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
name = "NAME" nameparam ":" text CRLF name = "NAME" nameparam ":" text CRLF
nameparam = *( nameparam = other-params [ ";" languageparam ] other-params
; the following is optional,
; but MUST NOT occur more than once
( ";" languageparam ) /
; the following is optional,
; and MAY occur more than once
( ";" xparam )
)
languageparam = ; As defined in [iCAL]. languageparam = ; As defined in [iCAL].
Example: The following is an example of this property: Example: The following is an example of this property:
NAME:Restrict Guests From Creating VALARMs On VEVENTs NAME:Restrict Guests From Creating VALARMs On VEVENTs
8.19 OWNER Property 8.24 OWNER Property
Property Name: OWNER Property Name: OWNER
Purpose: The property specifies an owner of the component. Purpose: The property specifies an owner of the component.
Value Type: UPN Value Type: UPN
Property Parameters: Non-standard, alternate text representation and Property Parameters: Non-standard, alternate text representation and
language property parameters can be specified on this property. language property parameters can be specified on this property.
Conformance: The property MUST BE specified at in a "VAGENDA" Conformance: The property MUST BE specified at in a "VAGENDA"
component. component.
Description: A multi-instanced property indicating the calendar Description: A multi-instanced property indicating the calendar
owner. owner.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
owner = "OWNER" *(";" xparam) ":" upn CRLF owner = "OWNER" other-params ":" upn CRLF
Example: The following is an example of this property: Example: The following is an example of this property:
OWNER:jsmith@acme.com OWNER:jsmith@example.com
OWNER:jdoe@acme.com OWNER:jdough@example.com
8.20 PERMISSION Property 8.25 PERMISSION Property
Property Name: PERMISSION Property Name: PERMISSION
Purpose: This property defines a permission that is granted or denied Purpose: This property defines a permission that is granted or denied
in a "VRIGHT" component. in a "VRIGHT" component.
Value Type: TEXT Value Type: TEXT
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: This property can be specified in "VRIGHT" components. Conformance: This property can be specified in "VRIGHT" components.
Description: This property is used in the "VRIGHT" component to Description: This property is used in the "VRIGHT" component to
define a permission that is granted or denied. define a permission that is granted or denied.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
perm = "PERMISSION" *(";" xparam) ":" permvalue CRLF perm = "PERMISSION" other-params ":" permvalue CRLF
permvalue = ( "SEARCH" / "CREATE" / "DELETE" / "MODIFY" / all ) permvalue = ( "SEARCH" / "CREATE" / "DELETE" / "MODIFY" / all )
all = "*" all = "*"
Example: The following is an example of this property: Example: The following is an example of this property:
PERMISSION:SEARCH PERMISSION:SEARCH
8.21 QUERY property 8.26 QUERY property
Property Name: QUERY Property Name: QUERY
Purpose: Specifies the query for the component. Purpose: Specifies the query for the component.
Value Type: CAL-QUERY Value Type: CAL-QUERY
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: This property can be specified in "VQUERY" components. Conformance: This property can be specified in "VQUERY" components.
Description: A "QUERY" is used to specify the "CAL-QUERY" (Section Description: A "QUERY" is used to specify the "CAL-QUERY" (Section
6.1.1 for the query. 6.1.1 for the query.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
query = "QUERY" *(";" xparam) ":" cal-query CRLF query = "QUERY" other-params ":" cal-query CRLF
Example: The following is an example of this property: Example: The following is an example of this property:
QUERY:SELECT * FROM VEVENT QUERY:SELECT * FROM VEVENT
8.22 QUERYID property 8.27 QUERYID property
Property Name: QUERYID Property Name: QUERYID
Purpose: Specifies a unique ID for a query in the targeted container. Purpose: Specifies a unique ID for a query in the targeted container.
Value Type: TEXT Value Type: TEXT
Property Parameters: Non-standard property parameters are specified Property Parameters: Non-standard property parameters are specified
on this property. on this property.
Conformance: This property can be specified in "VQUERY" components. Conformance: This property can be specified in "VQUERY" components.
Description: A "QUERYID" property is used to specify the unique id Description: A "QUERYID" property is used to specify the unique id
for a stored query. A "QUERYID" property value is unique per for a stored query. A "QUERYID" property value is unique per
container. container.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
queryid = "QUERYID" *(";" xparam) ":" text CRLF queryid = "QUERYID" other-params ":" text CRLF
Example: The following are examples of this property: Example: The following are examples of this property:
QUERYID:Any Text String QUERYID:Any Text String
QUERYID:fetchUnProcessed QUERYID:fetchUnProcessed
8.23 REQUEST-STATUS property 8.28 REQUEST-STATUS property
This description is a revision of the "REQUEST-STATUS" property for This description is a revision of the "REQUEST-STATUS" property for
VCALENDAR version 2.0. The 'statdesc' is optional and the 'extdata' VCALENDAR version 2.0. The 'statdesc' is optional and the 'extdata'
may be included when 'statdesc' is not provided. may be included when 'statdesc' is not provided.
rstatus = "REQUEST-STATUS" rstatparam ":" rstatus = "REQUEST-STATUS" rstatparam ":"
statcode ";" *(statdesc ) ";" *(extdata) statcode ";" *(statdesc ) ";" *(extdata)
rstatparam = *( rstatparam = other-params [";" languageparm] other-params
; the following is optional,
; but MUST NOT occur more than once
(";" languageparm) /
; the following is optional,
; and MAY occur more than once
(";" xparam)
)
statcode = 1*DIGIT *("." 1*DIGIT) statcode = 1*DIGIT *("." 1*DIGIT)
;Hierarchical, numeric return status code ;Hierarchical, numeric return status code
statdesc = text statdesc = text
;An optional textual status description, content is ;An optional textual status description, content is
;decided by the implementor. May be empty. ;decided by the implementer. May be empty.
extdata = text extdata = text
; Textual exception data. For example, the offending ; Textual exception data. For example, the offending
; property name and value or complete property line. ; property name and value or complete property line.
Example: The following are some possible examples of this property. Example: The following are some possible examples of this property.
The COMMA and SEMICOLON separator characters in the property value The COMMA and SEMICOLON separator characters in the property value
are BACKSLASH character escaped because they appear in a text value. are BACKSLASH character escaped because they appear in a text value.
REQUEST-STATUS:2.0;Success REQUEST-STATUS:2.0;Success
skipping to change at page 72, line 21 skipping to change at page 82, line 21
REQUEST-STATUS:4.1;Time conflict. Date/time is busy. REQUEST-STATUS:4.1;Time conflict. Date/time is busy.
REQUEST-STATUS:3.7;Invalid calendar user;ATTENDEE: REQUEST-STATUS:3.7;Invalid calendar user;ATTENDEE:
MAILTO:jsmith@example.com MAILTO:jsmith@example.com
REQUEST-STATUS:3.7;;ATTENDEE:MAILTO:jsmith@example.com REQUEST-STATUS:3.7;;ATTENDEE:MAILTO:jsmith@example.com
REQUEST-STATUS:10.4;Help! That really shouldn't have happened. REQUEST-STATUS:10.4;Help! That really shouldn't have happened.
8.24 RESTRICTION Property 8.29 QUERY-LEVEL Property
Property Name: QUERY-LEVEL
Purpose: This property specifies the level of query supported.
Value Type: TEXT
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: The property can be specified in the "VREPLY" component
in response to a "GET-CAPABILITY" command.
Description: Indicates level of query support. CAL-QL-NONE is for
CS's that allow ITIP methods only to be deposited and nothing else.
Formal Definition: The property is defined by the following notation:
query-level = "QUERY-LEVEL" other-params
":" ( "CAL-QL-1" / "CAL-QL-NONE") CRLF
Example: The following is an example of this property:
QUERY-LEVEL:CAL-QL-1
8.30 RECUR-ACCEPTED Property
Property Name: RECUR-ACCEPTED
Purpose: This property specifies if the endpoint supports recurring
instances.
Value Type: BOOLEAN
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: The property can be specified in the "VREPLY" component
in response to a "GET-CAPABILITY" command.
Description: Indicates if recurrence rules are supported. If FALSE
then the endpoint can not process any kind of recurring rules.
Formal Definition: The property is defined by the following notation:
recur-accepted = "RECUR-ACCEPTED" other-params ":" boolean CRLF
Example: The following is an example of this property:
RECUR-ACCEPTED:TRUE
RECUR-ACCEPTED:FALSE
8.31 RECUR-LIMIT Property
Property Name: RECUR-LIMIT
Purpose: This property specifies the maximum number of instances the
endpoint will expand instances into at query or storage time.
Value Type: posint1
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: The property can be specified in the "VREPLY" component
in response to a "GET-CAPABILITY" command.
Description: For implementations that have the "STORES-EXPANDED"
value set to TRUE, then this value specifies the maximum number of
instances that will be stored and fetched. For all implementations
this is the maximum number of instances that will be returned when
the "EXPAND" parameter is specified as TRUE and the results contain a
infinite or large number of recurring instances.
Formal Definition: The property is defined by the following notation:
recur-limit = "RECUR-LIMIT" other-params ":" posint1 CRLF
Example: The following is an example of this property:
RECUR-LIMIT:1000
8.32 RECUR-EXPAND Property
Property Name: RECUR-EXPAND
Purpose: This property specifies if the endpoint can expand
recurrences into multiple objects.
Value Type: BOOLEAN
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: The property can be specified in the "VREPLY" component
in response to a "GET-CAPABILITY" command.
Description: If TRUE then the endpoint can expand an object into
multiple instances as defined by its recurrence rules when the
"EXPAND" parameter is supplied. If FALSE then the endpoint ignores
the "EXPAND" parameter.
Formal Definition: The property is defined by the following notation:
recur-expand = "RECUR-EXPAND" other-params ":" boolean CRLF
Example: The following is an example of this property:
RECUR-EXPAND:TRUE
RECUR-EXPAND:FALSE
8.33 RESTRICTION Property
Property Name: RESTRICTION Property Name: RESTRICTION
Purpose: This property defines restrictions on the result value of Purpose: This property defines restrictions on the result value of
new or existing components. new or existing components.
Value Type: CAL-QUERY Value Type: CAL-QUERY
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
skipping to change at page 72, line 47 skipping to change at page 85, line 34
Description: This property is used in the "VRIGHT" component to Description: This property is used in the "VRIGHT" component to
define restrictions on the components that can be written (i.e., by define restrictions on the components that can be written (i.e., by
using the "CREATE" or "MOVE" commands) as well as on the values that using the "CREATE" or "MOVE" commands) as well as on the values that
may take existent calendar store properties, calendar properties, may take existent calendar store properties, calendar properties,
components, and properties (i.e., by using the "MODIFY" command). components, and properties (i.e., by using the "MODIFY" command).
Accepted values MUST match any specified "RESTRICTION" property Accepted values MUST match any specified "RESTRICTION" property
values. values.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
restrict = "RESTRICTION" *(";" xparam) ":" cal-query CRLF restrict = "RESTRICTION" other-params ":" cal-query CRLF
Example: The following are examples of this property: Example: The following are examples of this property:
RESTRICTION:SELECT * FROM VCALENDAR WHERE METHOD = 'REQUEST' RESTRICTION:SELECT * FROM VCALENDAR WHERE METHOD = 'REQUEST'
RESTRICTION:SELECT * FROM VEVENT WHERE RESTRICTION:SELECT * FROM VEVENT WHERE
SELF() IN ORGANIZER SELF() IN ORGANIZER
RESTRICTION:SELECT * FROM VEVENT WHERE 'BUSINESS' IN RESTRICTION:SELECT * FROM VEVENT WHERE 'BUSINESS' IN
CATEGORIES CATEGORIES
8.25 SCOPE Property 8.34 SCOPE Property
Property Name: SCOPE Property Name: SCOPE
Purpose: This property identifies the objects in the CS to which the Purpose: This property identifies the objects in the CS to which the
access rights applies. access rights applies.
Value Type: CAL-QUERY Value Type: CAL-QUERY
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: This property can be specified in "VRIGHT" components. Conformance: This property can be specified in "VRIGHT" components.
Description: This property is used in the "VRIGHT" component to Description: This property is used in the "VRIGHT" component to
define the set of objects subject to the access right being defined. define the set of objects subject to the access right being defined.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
scope = "SCOPE" *(";" xparam) ":" cal-query CRLF scope = "SCOPE" other-params ":" cal-query CRLF
Example: The following is an example of this property: Example: The following is an example of this property:
SCOPE:SELECT DTSTART,DTEND FROM VEVENT WHERE CLASS = 'PUBLIC' SCOPE:SELECT DTSTART,DTEND FROM VEVENT WHERE CLASS = 'PUBLIC'
8.26 TARGET Property 8.35 STORES-EXPANDED Property
Property Name: STORES-EXPANDED
Purpose: This property specifies if the sending endpoint expands
recurrence rules prior to storing them into the CS. Section 5.
Value Type: BOOLEAN
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: This property can be specified in a "VREPLY" component
in response to a "GET-CAPABILITY" command.
Description: If the value is TRUE then the endpoint expands
recurrence rules and then stores the results into the CS. If this is
TRUE then the "RECUR-LIMIT" property is significant because an
infinitely recurring appointment will be stored no more than "RECUR-
LIMIT" property values into the CS and all other instances will be
lost.
Formal Definition: The property is specified by the following
notation:
stores-expanded = "STORES-EXPANDED" other-params ":" boolean CRLF
The following is an example of this property:
STORES-EXPANDED:TRUE
STORES-EXPANDED:FALSE
8.36 TARGET Property
Property Name: TARGET Property Name: TARGET
Purpose: This property defines the container that the command that is Purpose: This property defines the container that the command that is
issued will act upon. Its value is a capurl as defined in Section 5. issued will act upon. Its value is a capurl as defined in Section 5.
The "TARGET" property MUST BE supplied when the CUA sends a command
to the CS.
Value Type: URI Value Type: URI
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
specified on this property. specified on this property.
Conformance: This property can be specified in a command component. Conformance: This property can be specified in a command component.
Description: This property value is used to specify the container Description: This property value is used to specify the container
that the command will effect. When used in a command, the command that the command will effect. When used in a command, the command
will be performed on the container which has a capurl matching the will be performed on the container which has a capurl matching the
value. value.
Formal Definition: The property is specified by the following Formal Definition: The property is specified by the following
notation: notation:
target = "TARGET" *(";" xparam) ":" capurl CRLF target = "TARGET" other-params ":" capurl CRLF
The following is an example of this property: The following is an example of this property:
TARGET:cap://mycal.example.com TARGET:cap://mycal.example.com
TARGET:SomeRelCalid TARGET:SomeRelCalid
8.27 TRANSP Property 8.37 TRANSP Property
Property Name: TRANSP Property Name: TRANSP
Purpose: This property defines whether an component is transparent or Purpose: This property defines whether an component is transparent or
not to busy time searches. This is a modification to [iCAL] "TRANSP" not to busy time searches. This is a modification to [iCAL] "TRANSP"
property in that it adds some values. property in that it adds some values.
Value Type: TEXT Value Type: TEXT
Property Parameters: Non-standard property parameters can be Property Parameters: Non-standard property parameters can be
skipping to change at page 75, line 17 skipping to change at page 89, line 5
Objects that consume actual time for the individual or resource Objects that consume actual time for the individual or resource
associated with the calendar SHOULD be recorded as "OPAQUE", allowing associated with the calendar SHOULD be recorded as "OPAQUE", allowing
them to be detected by free-busy time searches. Other objects, which them to be detected by free-busy time searches. Other objects, which
do not take up the individual's (or resource's) time SHOULD be do not take up the individual's (or resource's) time SHOULD be
recorded as "TRANSPARENT", making them invisible to free-busy time recorded as "TRANSPARENT", making them invisible to free-busy time
searches. searches.
Formal Definition: The property is specified by the following Formal Definition: The property is specified by the following
notation: notation:
transp = "TRANSP" *(";" xparam) ":" transvalue CRLF transp = "TRANSP" other-params ":" transvalue CRLF
transvalue transvalue
= "OPAQUE" ;Blocks or opaque on busy time searches. = "OPAQUE" ;Blocks or opaque on busy time searches.
/ "TRANSPARENT" ;Transparent on busy time searches. / "TRANSPARENT" ;Transparent on busy time searches.
/ "TRANSPARENT-NOCONFLICT" ; Transparent on busy time / "TRANSPARENT-NOCONFLICT" ; Transparent on busy time
; searches and no other OPAQUE or OPAQUE-NOCONFLICT objects ; searches and no other OPAQUE or OPAQUE-NOCONFLICT objects
; can overlap it. ; can overlap it.
/ "OPAQUE-NOCONFLICT" ; Opaque on busy time / "OPAQUE-NOCONFLICT" ; Opaque on busy time
skipping to change at page 76, line 15 skipping to change at page 90, line 15
9. New Components 9. New Components
9.1 VAGENDA Component 9.1 VAGENDA Component
Component Name: VAGENDA Component Name: VAGENDA
Purpose: Provide a grouping of properties that defines an agenda. Purpose: Provide a grouping of properties that defines an agenda.
Formal Definition: There are two formats of the "VAGENDA" component. Formal Definition: There are two formats of the "VAGENDA" component.
(1) When it is being created, and (2) how it exists in the (1) When it is being created, and (2) how it exists in the
"VCALSTORE" component. A "VAGENDA" component in a "VCALSTORE" "VCALSTORE" component.
component is defined by the following notation table and ABNF
notation.
The following is a summary of the properties of a calendar.
Name Read Description
Only
------------------------------------------------------------------
ALLOW-CONFLICT N This boolean value indicates whether or not
the calendar supports object conflicts. That
is, whether or not any of the components in
the calendar can have a time overlap. MUST BE
FALSE if VCALSTORE ALLOW-CONFLICT is FALSE.
CALID N A unique identifier within the VCALSTORE for
the calendar. MUST NOT BE empty. MUST BE a
relative calid in a VAGENDA.
CALSCALE N The CALSCALE for this calendar. MUST BE from
the VCALSTORE CALSCALE list. The default is
the first entry in the VCALSTORE CALSCALE list.
CREATED Y timestamp of the calendar's create date.
DEFAULT-CHARSET N The charset for this calendar. MUST BE from
the VCALSTORE DEFAULT-CHARSET list. If empty
then it is the first entry in the VCALSTORE
DEFAULT-CHARSET list.
DEFAULT-LOCALE
N The locale for this calendar. MUST BE from
the VCALSTORE DEFAULT-LOCALE list. If empty
then it is the first entry in the VCALSTORE
DEFAULT-CHARSET list.
DEFAULT-TZID N The id of the timezone associated with this
calendar. If empty it is the first entry
in VCALSTORE DEFAULT-TZID.
LAST-MODIFIED Y The timestamp when the properties of the A "VAGENDA" component in a "VCALSTORE" component is defined by the
calendar were last updated. following notes and ABNF notation:
NAME N Optional display name for this calendar. It CALSCALE - The value MUST BE from the "VCALSTORE" "CALSCALE"
is a localizable string. May be multiple property list. The default is the first entry in the VCALSTORE
instance and no two instances may have the CALSCALE list.
same LANG parameter. All instances MUST have
the LANG parameter.
OWNER N A multi-instanced property indicating the CREATED - The timestamp of the calendar's create date. This is a
calendar owner. Each entry returned will be a READ ONLY property in a "VAGENDA".
UPN. There MUST BE at least one owner.
RELATED-TO N An optional multi-instance property indicating LAST-MODIFIED - The timestamp of any change to the "VAGENDA"
any relationship to other CALIDs and their CALIDs. properties or when any component was last created, modified, or
deleted.
agenda = "BEGIN" ":" "VAGENDA" CRLF agenda = "BEGIN" ":" "VAGENDA" CRLF
agendaprop agendaprop
*(icalobject) ; as defined in [iCAL]
"END" ":" "VAGENDA" CRLF "END" ":" "VAGENDA" CRLF
agendaprop = *( agendaprop = *(
; The following MUST occur exactly once. ; The following MUST occur exactly once.
; ;
allow-conflict / calid / calscale / created allow-conflict / calid / calscale / created
/ default-charset / default-locale / default-charset / default-locale
/ default-tzid / last-modified / / default-tzid / last-modified /
; The following MUST occur at least once. ; The following MUST occur at least once.
; and the value MUST NOT be empty. ; and the value MUST NOT be empty.
/ owner / owner
; The following are optional, ; The following are optional,
; and MAY occur more than once. ; and MAY occur more than once.
/ name / related-to / iana-token / x-prop / x-comp / name / related-to / other-props / x-comp
) )
When creating a VAGENDA, use the following notation: When creating a VAGENDA, use the following notation:
agendac = "BEGIN" ":" "VAGENDA" CRLF agendac = "BEGIN" ":" "VAGENDA" CRLF
agendacprop agendacprop
*(icalobject) ; as defined in [iCAL]
"END" ":" "VAGENDA" CRLF "END" ":" "VAGENDA" CRLF
agendacprop = *( agendacprop = *(
; The following MUST occur exactly once. ; The following MUST occur exactly once.
; ;
allow-conflict / calid / calscale allow-conflict / calid / calscale
/ default-charset / default-locale / default-charset / default-locale
/ default-tzid / / default-tzid /
; The following MUST occur at least once. ; The following MUST occur at least once.
; and the value MUST NOT be empty. ; and the value MUST NOT be empty.
; ;
/ owner / owner
; The following are optional, ; The following are optional,
; and MAY occur more than once. ; and MAY occur more than once.
; ;
/ name / related-to / iana-token / x-prop / x-comp / name / related-to / other-props / x-comp
) )
To fetch all of the properties from the targeted "VAGENDA" component. To fetch all of the properties from the targeted "VAGENDA" component.
This does not fetch any components: This does not fetch any components:
SELECT * FROM VAGENDA SELECT * FROM VAGENDA
To fetch all of the properties from the targeted VAGENDA and all of To fetch all of the properties from the targeted VAGENDA and all of
the contained components, use the special '*.*' value: the contained components, use the special '*.*' value:
skipping to change at page 79, line 7 skipping to change at page 93, line 9
Component Name: VCALSTORE Component Name: VCALSTORE
Purpose: Provide a grouping of properties that defines a calendar Purpose: Provide a grouping of properties that defines a calendar
store. store.
Formal Definition: A "VCALSTORE" component is defined by the Formal Definition: A "VCALSTORE" component is defined by the
following table and ABNF notation. The creation of a "VCALSTORE" following table and ABNF notation. The creation of a "VCALSTORE"
component is an administrative task and not part of the CAP protocol. component is an administrative task and not part of the CAP protocol.
The following is a summary of the properties of the calendar store. The following are notes to some of the properties in the "VCALSTORE"
component.
Name Read Description
Only
-------------------------------------------------------------------
ALLOW-CONFLICT Y This boolean value indicates Whether or not
the VCALSTORE supports object conflicts. That
is, whether or not any of the objects in any
calendar can overlap. If FALSE, then the CS
does not allow conflicts for any object in any
calendar. How this property is set in the
VCALSTORE is an administrative or implementation
specific issue and is not covered in CAP.
CALSCALE Y A comma separated list of CALSCALEs supported
by this CS. All Calendar CALSCALE properties
MUST BE from this list. MUST contain at least
"GREGORIAN". The default for newly created
calendars is the first entry. How this property
is set in the VCALSTORE is an administrative
or implementation specific issue and is not
covered in CAP.
CALMASTER N URL of contact address for person responsible.
SHOULD BE mailto URL. MUST BE an IANA registered
URL scheme. This is to allow external entities a
contact point for the CS.
CHILDREN N A multi instance property that lists all of the
calendars in this VCALSTORE. The values are the
relative CSID for each calendar.
CREATED Y The timestamp of the CS creation time.
CSID Y The CSID of this calendar store. MUST NOT be
empty. How this property is set in the VCALSTORE
is an administrative or implementation specific
issue and is not covered in CAP.
DEFAULT-CHARSET Y A comma separated lists of charsets supported
by this CS. MUST contain at least "UTF-8".
The first is the default for all newly created
calendars. How this property is set in the
VCALSTORE is an administrative or implementation
specific issue and is not covered in CAP.
DEFAULT-LOCALE Y A comma separated list of locales supported
by this CS. MUST contain at least one entry.
("en_US" for example). The first is the default
for all newly created calendars. There is
no default for this property in the VCALSTORE.
DEFAULT-VCARS N A multivalued property containing the CARID's for CALSCALE - A comma separated list of CALSCALEs supported by this CS.
the default VCARs for newly created top level All "VAGENDA" component calendar CALSCALE properties MUST BE from
calendars. It MUST include at a minimum this list. This list MUST contain at least "GREGORIAN". The
READBUSYTIMEINFO, REQUESTONLY, UPDATEPARTSTATUS, default for newly created "VAGENDA" components is the first entry.
and DEFAULTOWNER.
DEFAULT-TZID N A comma separated list of TZID's supported by RELATED-TO - This is a multiple instance property. There must be a
the CS. These will be known across all calendars. "RELATED-TO" property MUST for each of the "VAGENDA" components
Calendar entries take precedence if they exist contained in the "VCALSTORE" component each with the "RELTYPE"
in both the CS and calendar. It MUST include at least parameter value set to "CHILD". Other "RELATED-TO" properties may
UTC. First entry is default for all newly created be included.
calendars.
LAST-MODIFIED Y The timestamp when the Properties of the CS CREATED - The timestamp of the CS creation time. This is a READ
were last updated or calendars were created ONLY property.
or deleted.
NAME N Optional, multi instance display names for CSID - The CSID of this calendar store. MUST NOT be empty. How
this CS. It is a localizable string. May this property is set in the VCALSTORE is an administrative or
be multiple instance and no two instances may implementation specific issue and is not covered in CAP. This is
have the same LANG parameter. All instances a READ ONLY property. A suggested value is the fully qualified
MUST have the LANG parameter in the VCALSTORE. host name or a fully qualified virtual host name supported by the
system.
RELATED-TO N An optional multi-instance property indicating LAST-MODIFIED - The timestamp when the Properties of the "VCALSTORE"
any relationship to other CSs and those CALIDs. component were last updated or calendars were created or deleted.
This is a READ ONLY PROPERTY.
calstorec = "BEGIN" ":" "VCALSTORE" CRLF calstorec = "BEGIN" ":" "VCALSTORE" CRLF
calstoreprop calstoreprop
*(vagendac)
"END" ":" "VCALSTORE" CRLF "END" ":" "VCALSTORE" CRLF
calstoreprop = *( calstoreprop = *(
; the following MUST occur exactly once ; the following MUST occur exactly once
allow-conflict / calscale / calmaster allow-conflict / calscale / calmaster
/ created / csid / default-charset / created / csid / default-charset
/ default-locale / default-vcars / default-locale / default-vcars
/ default-tzid / last-modified / default-tzid / last-modified
; the following are optional, ; the following are optional,
; and MAY occur more than once ; and MAY occur more than once
/ children / name / related-to / name / related-to / other-props / x-comp
) )
To fetch all of the properties from the targeted VCALSTORE and not To fetch all of the properties from the targeted VCALSTORE and not
fetch the calendars that it contains: fetch the calendars that it contains:
SELECT * FROM VCALSTORE SELECT * FROM VCALSTORE
To fetch all of the properties from the targeted "VCALSTORE" To fetch all of the properties from the targeted "VCALSTORE"
component and all of the contained calendars and all of those component and all of the contained calendars and all of those
calendars contained properties and components, use the special '*.*' calendars contained properties and components, use the special '*.*'
skipping to change at page 82, line 19 skipping to change at page 95, line 19
carprop = 1*( carprop = 1*(
; 'carid' is REQUIRED, ; 'carid' is REQUIRED,
; but MUST NOT occur more than once ; but MUST NOT occur more than once
carid / carid /
; the following are OPTIONAL, ; the following are OPTIONAL,
; and MAY occur more than once ; and MAY occur more than once
name / x-prop / iana-prop name / other-props
) )
Description: A "VCAR" component is a grouping of properties, and Description: A "VCAR" component is a grouping of properties, and
"VRIGHT" components, that represents access rights granted or denied "VRIGHT" components, that represents access rights granted or denied
to UPNs. to UPNs.
The "CARID" property specifies the local identifier for the "VCAR" The "CARID" property specifies the local identifier for the "VCAR"
component. The "NAME" property specifies a localizable display name. component. The "NAME" property specifies a localizable display name.
Example: In the following example, the UPN "foo@example.com" is given Example: In the following example, the UPN "foo@example.com" is given
skipping to change at page 84, line 45 skipping to change at page 97, line 45
grant / deny / grant / deny /
; 'permission' MUST occur at least once ; 'permission' MUST occur at least once
; and MAY occur more than once ; and MAY occur more than once
permission / permission /
; the following are optional, ; the following are optional,
; and MAY occur more than once ; and MAY occur more than once
scope / restriction / x-prop / iana-prop scope / restriction / other-props
) )
Description: A "VRIGHT" component is a grouping of calendar access Description: A "VRIGHT" component is a grouping of calendar access
right properties. right properties.
The "GRANT" property specifies the UPN that is being granted access. The "GRANT" property specifies the UPN that is being granted access.
The "DENY" property specifies the UPN is being denied access. The The "DENY" property specifies the UPN is being denied access. The
"PERMISSION" property specifies the actual permission being set. The "PERMISSION" property specifies the actual permission being set. The
"SCOPE" property identifies the calendar store properties, calendar "SCOPE" property identifies the calendar store properties, calendar
properties, components, or properties to which the access right properties, components, or properties to which the access right
skipping to change at page 86, line 21 skipping to change at page 99, line 21
queryprop = 1*( queryprop = 1*(
; 'queryid' is OPTIONAL but MUST NOT occur ; 'queryid' is OPTIONAL but MUST NOT occur
; more than once. If the "TARGET" property ; more than once. If the "TARGET" property
; is supplied then the "QUERYID" property ; is supplied then the "QUERYID" property
; MUST BE supplied. ; MUST BE supplied.
; ;
queryid / target queryid / target
; 'expand' is OPTIONAL but MUST NOT occur
; more than once.
expand
; the following are OPTIONAL, and MAY occur ; the following are OPTIONAL, and MAY occur
; more than once ; more than once
; ;
/ name / x-prop / iana-prop / name / other-props
; the following MUST occur at least once. ; the following MUST occur at least once.
; ;
/ query / query
) )
Description: A "VQUERY" contains properties that specify which Description: A "VQUERY" contains properties that specify which
properties and components the CS is requested to return during a properties and components the CS is requested to return during a
SEARCH command. SEARCH command.
skipping to change at page 87, line 44 skipping to change at page 102, line 18
/ create-cmd / create-cmd
/ delete-cmd / delete-cmd
/ generate-uid-cmd / generate-uid-cmd
/ get-capability-cmd / get-capability-cmd
/ identify-cmd / identify-cmd
/ modify-cmd / modify-cmd
/ move-cmd / move-cmd
/ reply-cmd / reply-cmd
/ search-cmd / search-cmd
/ set-locale-cmd / set-locale-cmd
/ other-cmd
) CRLF ) CRLF
id-param = ";" "ID" "=" unique-id other-cmd ; Any command published as an RFC or any
; The text value supplied is a unique value ; vendor specific "x-" command.
; shared between the CUA and CS to uniquely
; identify the instance of command in the
; the current CUA session. The value has
; no meaning to other CUAs or other sessions.
unique-id = ; text
localize-param = ";" "LOCALIZE" "=" beep-localize
; The value supplied MUST BE one value from the initial
; BEEP greeting 'localize' attribute specifying
; the locale to use for error messages during
; this instance of the command sent.
beep-localize = ; text
latency-param = ";" "LATENCY" "=" latency-sec
; The value supplied in the time in seconds.
; If latency is supplied then action MUST BE
; supplied.
latency-sec = integer
action-parm = ";" "ACTION" "=" ( "ASK" / "ABORT" )
; If latency is supplied then action MUST BE
; supplied.
option-param = ";" "OPTIONS" "=" cmd-specific
cmd-specific = ; The value supplied is dependent on the
; CMD value. See the specific CMDs below
; for the correct values to use for each
; CMD.
option-value = paramtext option-value = paramtext ; As defined in [iCAL]
Calendaring commands allow a CUA to directly manipulate a calendar. Calendaring commands allow a CUA to directly manipulate a calendar.
Calendar access rights can be granted or denied for any commands. Calendar access rights can be granted or denied for any commands.
10.1.1 Bounded Latency 10.1.1 Bounded Latency
A CAP command can have an associated maximum latency time by A CAP command can have an associated maximum latency time by
specifying the "LATENCY" parameter. If the command is unable to be specifying the "LATENCY" parameter. If the command is unable to be
completed in the specified amount of time (as specified by the completed in the specified amount of time (as specified by the
skipping to change at page 89, line 12 skipping to change at page 102, line 48
CS would issue the "TIMEOUT" command and the CUA would then have to CS would issue the "TIMEOUT" command and the CUA would then have to
issue an "ABORT" or "CONTINUE" command. If the CS initiated the issue an "ABORT" or "CONTINUE" command. If the CS initiated the
original command then the CUA would have to issue the "TIMEOUT" and original command then the CUA would have to issue the "TIMEOUT" and
the CS would send the "ABORT" or "CONTINUE". the CS would send the "ABORT" or "CONTINUE".
Upon receiving an "ABORT" command, the command must then be Upon receiving an "ABORT" command, the command must then be
terminated. Only the "ABORT", "TIMEOUT", "REPLY, and "CONTINUE" terminated. Only the "ABORT", "TIMEOUT", "REPLY, and "CONTINUE"
commands can not be aborted. The "ABORT", "TIMEOUT", and "REPLY" commands can not be aborted. The "ABORT", "TIMEOUT", and "REPLY"
commands MUST NOT have latency set. commands MUST NOT have latency set.
Upon receiving a "CONTINUE" command the work continues. Note that a Upon receiving a "CONTINUE" command the work continues as if it had
new latency time MAY BE included in a "CONTINUE" command indicating not been delayed or stopped. Note that a new latency time MAY BE
to continue the original command until the "LATENCY" parameter value included in a "CONTINUE" command indicating to continue the original
expires or the results of the original command can be returned. command until the "LATENCY" parameter value expires or the results of
the original command can be returned.
Both the "LATENCY" parameter and the "ACTION" parameter MUST BE Both the "LATENCY" parameter and the "ACTION" parameter MUST BE
supplied to any "CMD" property, or nether can be added to the "CMD" supplied to any "CMD" property, or nether can be added to the "CMD"
property. The "LATENCY" parameter MUST BE set to the maximum latency property. The "LATENCY" parameter MUST BE set to the maximum latency
time in seconds. The "ACTION" parameter accepts the following time in seconds. The "ACTION" parameter accepts the following
values: "ASK" and "ABORT" parameters. values: "ASK" and "ABORT" parameters.
If the maximum latency time is exceeded and the "ACTION" parameter is If the maximum latency time is exceeded and the "ACTION" parameter is
set to the "ASK" value, then "TIMEOUT" command MUST BE sent. set to the "ASK" value, then "TIMEOUT" command MUST BE sent.
Otherwise if the "ACTION" parameter is set to the "ABORT" value then Otherwise if the "ACTION" parameter is set to the "ABORT" value then
the command MUST BE terminated and return a REQUEST-STATUS code of the command MUST BE terminated and return a REQUEST-STATUS code of
2.0.3 for the original command. 2.0.3 for the original command.
If a CS can both start sending the reply to a command and guarantee If a CS can both start sending the reply to a command and guarantee
that all of the results can be sent from a command (short of that all of the results can be sent from a command (short of
something like network or power falure), prior to the "LATENCY" something like network or power failure) prior to the "LATENCY"
timeout value, then the "LETENCY" time has not expired. timeout value then the "LATENCY" time has not expired.
Example: Example:
In this example the initiator asks for the listeners capabilities. In this example the initiator asks for the listeners capabilities.
I: Content-Type: text/calendar I: Content-Type: text/calendar
I: I:
I: BEGIN:VCALENDAR I: BEGIN:VCALENDAR
I: VERSION:2.0 I: VERSION:2.0
I: PRODID:The CUA's PRODID I: PRODID:The CUA's PRODID
skipping to change at page 92, line 18 skipping to change at page 105, line 29
; the following are optional, ; the following are optional,
; but MUST NOT occur more than once ; but MUST NOT occur more than once
id-param id-param
/ localize-param / localize-param
; the following is optional, ; the following is optional,
; and MAY occur more than once ; and MAY occur more than once
/ (";" xparam) / other-params
) )
The REPLY of any "ABORT" command is: The REPLY of any "ABORT" command is:
abort-reply = "BEGIN" ":" "VCALENDAR" CRLF abort-reply = "BEGIN" ":" "VCALENDAR" CRLF
calprops calprops
abort-vreply abort-vreply
"END" ":" "VCALENDAR" CRLF "END" ":" "VCALENDAR" CRLF
abort-vreply = "BEGIN" ":" "VREPLY" CRLF abort-vreply = "BEGIN" ":" "VREPLY" CRLF
request-status request-status
*(x-prop) other-props
"END" ":" "VREPLY" CRLF "END" ":" "VREPLY" CRLF
10.1.3 CONTINUE Command 10.1.3 CONTINUE Command
CMD: CONTINUE CMD: CONTINUE
Purpose: The "CONTINUE" command is only sent after a "TIMEOUT" Purpose: The "CONTINUE" command is only sent after a "TIMEOUT"
command has been received to inform the other end of the session to command has been received to inform the other end of the session to
resume working on a command. resume working on a command.
Formal Definition: A "CONTINUE" command is defined by the following Formal Definition: A "CONTINUE" command is defined by the following
notation: notation:
continue-cmd = continueparam ":" "CONTINUE" continue-cmd = continueparam ":" "CONTINUE"
continueparam = *( continueparam = *(
skipping to change at page 93, line 18 skipping to change at page 106, line 29
/ localize-param / localize-param
/ latency-param / latency-param
; the following MUST occur exactly once and only ; the following MUST occur exactly once and only
; when the latency-param has been supplied and ; when the latency-param has been supplied and
; MUST NOT be supplied if the latency-param is ; MUST NOT be supplied if the latency-param is
; not supplied. ; not supplied.
/ action-param / action-param
; the following is optional, ; the following are optional,
; and MAY occur more than once ; and MAY occur more than once
/ (";" xparam) / other-params
) )
The REPLY of any "CONTINUE" command is: The REPLY of any "CONTINUE" command is:
continue-reply = "BEGIN" ":" "VCALENDAR" CRLF continue-reply = "BEGIN" ":" "VCALENDAR" CRLF
calprops calprops
continue-vreply continue-vreply
"END" ":" "VCALENDAR" CRLF "END" ":" "VCALENDAR" CRLF
continue-vreply = "BEGIN" ":" "VREPLY" CRLF continue-vreply = "BEGIN" ":" "VREPLY" CRLF
request-status request-status
*(x-prop) other-props
"END" ":" "VREPLY" CRLF "END" ":" "VREPLY" CRLF
10.1.4 CREATE Command 10.1.4 CREATE Command
CMD: CREATE CMD: CREATE
Purpose: The "CREATE" command is used to create one or more Purpose: The "CREATE" command is used to create one or more
iCalendar objects in the store in the "BOOKED" or "UNPROCESSED" iCalendar objects in the store in the "BOOKED" or "UNPROCESSED"
state. state.
skipping to change at page 94, line 29 skipping to change at page 107, line 42
; the following MUST occur exactly once and only ; the following MUST occur exactly once and only
; when the latency-param has been supplied and ; when the latency-param has been supplied and
; MUST NOT be supplied if the latency-param is ; MUST NOT be supplied if the latency-param is
; not supplied. ; not supplied.
/ action-param / action-param
; the following is optional, ; the following is optional,
; and MAY occur more than once ; and MAY occur more than once
/ (";" xparam) / other-params
) )
Response: Response:
One iCalendar object per TARGET property MUST BE returned. One iCalendar object per TARGET property MUST BE returned.
The REPLY of any "CREATE" command is: The REPLY of any "CREATE" command is:
Restriction Table for the iCalendar section of a reply that contains Restriction Table for the iCalendar section of a reply that contains
an iCalendar object is any valid [iTIP] response plus any from this an iCalendar object is any valid [iTIP] response plus any from this
restriction table: ABNF:
create-reply = "BEGIN" ":" "VCALENDAR" CRLF create-reply = "BEGIN" ":" "VCALENDAR" CRLF
calprops creply-props
1*(create-vreply) 1*(create-vreply)
"END" ":" "VCALENDAR" CRLF "END" ":" "VCALENDAR" CRLF
create-vreply = "BEGIN" ":" "VREPLY" CRLF create-vreply = "BEGIN" ":" "VREPLY" CRLF
created-id created-id
request-status request-status
*(x-prop) other-props
"END" ":" "VREPLY" CRLF "END" ":" "VREPLY" CRLF
; Where the id is appropriate for the ; Where the id is appropriate for the
; type of object created: ; type of object created:
; ;
; VAGENDA = calid ; VAGENDA = calid
; VALARM = sequence
; VCAR = carid ; VCAR = carid
; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid ; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid
; VQUERY = queryid ; VQUERY = queryid
; VTIMEZONE = tzid
; x-component = x-id ; x-component = x-id
; ;
created-id = ( calid / carid / uid / queryid / created-id = ( calid / carid / uid / queryid /
tzid / sequence / x-id) tzid / sequence / x-id)
The "TARGET" property specifies the containers where the component(s) x-id = ; An ID for an x-component.
will be created. This can be a "CSID", or a "CALID" value type.
creply-props = 4*(
; These are REQUIRED and MUST NOT occur
; more than once.
;
prodid /version / target / reply-cmd
; These are optional, and may occur more
; than once.
;
other-props
For a "CREATE" command the "TARGET" property specifies the containers
where the components will be created.
If the iCalendar object being created does not have a "METHOD" If the iCalendar object being created does not have a "METHOD"
property, then is not an [iTIP] object, then its state will be property, then is not an [iTIP] object, then its state will be
"BOOKED". Use the "DELETE" command to set the state of an object to "BOOKED". Use the "DELETE" command to set the state of an object to
the "DELETED" state. A CUA can not use the "CREATE" command to the "DELETED" state (tagged for deletion). A CUA can not use the
create an object in the "DELETED" state. "CREATE" command to create an object in the "DELETED" state.
If an [iTIP] object is being booked, then the "METHOD" property MUST If the intention is to book an [iTIP] object then the "METHOD"
NOT BE supplied". Otherwise any [iTIP] object MUST have a valid property MUST NOT BE supplied. Otherwise any [iTIP] object MUST have
[iTIP] "METHOD" property value and it is a scheduling request being a valid [iTIP] "METHOD" property value and it is a scheduling request
deposited into the CS and will have its state set to "UNPROCESSED" being deposited into the CS and will have its state set to
state. "UNPROCESSED" state.
Restriction table for the "CREATE" command: ABNF for a "CREATE" object is:
create-minimum = "BEGIN" ":" "VCALENDAR" CRLF create-object = "BEGIN" ":" "VCALENDAR" CRLF
; If 'calprops' contain the "METHOD" property
; then this 'create-object' component MUST
; conform to [iTIP] restrictions.
;
; calprops MUST include 'create-cmd'
;
calprops calprops
*(iana-prop) other-props
*(x-prop)
1*(create-comp) 1*(create-comp)
"END" ":" "VCALENDAR" CRLF "END" ":" "VCALENDAR" CRLF
; If The following contain the "METHOD" ; NOTE: The 'VCALSTORE' component is not included in
; property they MUST conform to [iTIP]. ; 'create-comp' as it is out of scope for CAP to create
; a new CS.
; ;
create-comp = agendac / carc / queryc create-comp = agendac / carc / queryc
/ timezonec / freebusyc / timezonec / freebusyc
/ eventc / todoc / journalc / eventc / todoc / journalc
/ iana-comp / x-component / iana-comp / x-component
In the following example, two new top level "VAGENDA" components are In the following example two new top level "VAGENDA" components are
created. Note that the "CSID" value of the server is created. Note that the "CSID" value of the server is
cal.example.com which is where the new "VAGENDA" components are cal.example.com which is where the new "VAGENDA" components are
going to be created. going to be created.
C: Content-Type: text/calendar C: Content-Type: text/calendar
C: C:
C: BEGIN:VCALENDAR C: BEGIN:VCALENDAR
C: PRODID:-//someone's prodid C: PRODID:-//someone's prodid
C: VERSION:2.0 C: VERSION:2.0
C: CMD;ID=creation01:CREATE C: CMD;ID=creation01:CREATE
skipping to change at page 96, line 48 skipping to change at page 110, line 28
C: END:VAGENDA C: END:VAGENDA
C: BEGIN:VAGENDA <- data for 2nd new calendar C: BEGIN:VAGENDA <- data for 2nd new calendar
C: CALID:relcalz2 C: CALID:relcalz2
C: NAME;LANGUAGE=EN-us:Mary's personal calendar C: NAME;LANGUAGE=EN-us:Mary's personal calendar
C: OWNER:mary C: OWNER:mary
C: CALMASTER:mailto:mary@example.com C: CALMASTER:mailto:mary@example.com
C: TZID:US/Pacific C: TZID:US/Pacific
C: END:VAGENDA C: END:VAGENDA
C: END:VCALENDAR C: END:VCALENDAR
When there are multiple "TARGET" properties in the original command
object then the replies MUST BE in the exact same order as they were
provided to the CS. The same is true for the objects created, their
responses MUST BE in the exact same order as they were supplied to
the CS.
S: Content-Type: text/calendar S: Content-Type: text/calendar
S: S:
S: BEGIN:VCALENDAR S: BEGIN:VCALENDAR
S: VERSION:2.0 S: VERSION:2.0
S: PRODID:-//someone's prodid S: PRODID:-//someone's prodid
S: CMD;ID=creation01:REPLY S: CMD;ID=creation01:REPLY
S: TARGET:cal.example.com S: TARGET:cal.example.com
S: BEGIN:VREPLY <- Reply for 1st calendar create S: BEGIN:VREPLY <- Reply for 1st calendar create
S: CALID:relcalz1 S: CALID:relcalz1
S: REQUEST-STATUS:2.0 S: REQUEST-STATUS:2.0
skipping to change at page 97, line 32 skipping to change at page 111, line 7
S: END:VREPLY S: END:VREPLY
S: END:VCALENDAR S: END:VCALENDAR
To create a new component in multiple containers simply name all of To create a new component in multiple containers simply name all of
the containers in the "TARGET" in the create command. Here a new the containers in the "TARGET" in the create command. Here a new
"VEVENT" component is created in two TARGET components. In this "VEVENT" component is created in two TARGET components. In this
example, the "VEVENT" component is one new [iTIP] "REQUEST" to be example, the "VEVENT" component is one new [iTIP] "REQUEST" to be
stored in two calendars. The results would be iCalendar objects that stored in two calendars. The results would be iCalendar objects that
conform to the [iTIP] replies as defined in [iTIP]. conform to the [iTIP] replies as defined in [iTIP].
The "VREPLY" components MUST always be returned in the same order This example shows two [iTIP] "VEVENT" components being created in
that the objects were listed in the original "CREATE" command. If each of the two supplied "TARGET" properties and as it contains the
there are multiple "TARGET" properties and components in the same "METHOD" property they will be stored in the "UNPROCESSED" state:
create command then the reply is first listed by the "TARGET" order
of the original create command, then component replies within that
"TARGET" are ordered the same as in the original create command.
This example shows two "VEVENT" components being created in each of
the two supplied "TARGET" properties:
C: Content-Type: text/calendar C: Content-Type: text/calendar
C: C:
C: BEGIN:VCALENDAR C: BEGIN:VCALENDAR
C: VERSION:2.0 C: VERSION:2.0
C: PRODID:-//someone's prodid C: PRODID:-//someone's prodid
C: CMD;ID=creation02:CREATE C: CMD;ID=creation02:CREATE
C: METHOD:REQUEST C: METHOD:REQUEST
C: TARGET:relcalz1 C: TARGET:relcalz1
C: TARGET:relcalz2 C: TARGET:relcalz2
skipping to change at page 98, line 37 skipping to change at page 112, line 11
The CS could send the "VREPLY" commands in separate MIME objects, one The CS could send the "VREPLY" commands in separate MIME objects, one
per supplied "TARGET" property value. per supplied "TARGET" property value.
S: Content-Type: text/calendar S: Content-Type: text/calendar
S: S:
S: BEGIN:VCALENDAR S: BEGIN:VCALENDAR
S: VERSION:2.0 S: VERSION:2.0
S: PRODID:-//someone's prodid S: PRODID:-//someone's prodid
S: CMD;ID=creation02:REPLY S: CMD;ID=creation02:REPLY
S: TARGET:relcalz1 <- 1st TARGET listed S: TARGET:relcalz1 <- 1st TARGET listed.
S: BEGIN:REPLY <- Reply for 1st VEVENT create in 1st TARGET. S: BEGIN:REPLY <- Reply for 1st VEVENT create in 1st TARGET.
S: UID:FirstInThisExample-1 S: UID:FirstInThisExample-1
S: REQUEST-STATUS:2.0 S: REQUEST-STATUS:2.0
S: END:VREPLY S: END:VREPLY
S: BEGIN:REPLY <- Reply for 2nd VEVENT crate in 1st TARGET. S: BEGIN:REPLY <- Reply for 2nd VEVENT crate in 1st TARGET.
S: UID:SecondInThisExample-2 S: UID:SecondInThisExample-2
S: REQUEST-STATUS:2.0 S: REQUEST-STATUS:2.0
S: END:VREPLY S: END:VREPLY
S: END:VCALENDAR S: END:VCALENDAR
And could send the second part of the reply later: And the second reply for the 2nd TARGET:
S: Content-Type: text/calendar S: Content-Type: text/calendar
S: S:
S: BEGIN:VCALENDAR S: BEGIN:VCALENDAR
S: VERSION:2.0 S: VERSION:2.0
S: PRODID:-//someone's prodid S: PRODID:-//someone's prodid
S: CMD;ID=creation02:REPLY S: CMD;ID=creation02:REPLY
S: TARGET:relcalz2 <- 2nd TARGET listed S: TARGET:relcalz2 <- 2nd TARGET listed
S: BEGIN:REPLY <- Reply for 1st VEVENT create in 2nd TARGET. S: BEGIN:REPLY <- Reply for 1st VEVENT create in 2nd TARGET.
S: UID:FirstInThisExample-1 S: UID:FirstInThisExample-1
skipping to change at page 100, line 11 skipping to change at page 113, line 17
Formal Definition: A "DELETE" command is defined by the following Formal Definition: A "DELETE" command is defined by the following
notation: notation:
delete-cmd = deleteparam ":" "DELETE" delete-cmd = deleteparam ":" "DELETE"
deleteparam = *( deleteparam = *(
; the following are optional, ; the following are optional,
; but MUST NOT occur more than once ; but MUST NOT occur more than once
;
id-param id-param
/ localize-param / localize-param
/ latency-param / latency-param
/ option-param "MARK" / option-param "MARK"
; The following MUST occur exactly once and only ; The following MUST occur exactly once and only
; when the latency-param has been supplied and ; when the latency-param has been supplied and
; MUST NOT be supplied if the latency-param is ; MUST NOT be supplied if the latency-param is
; not supplied. ; not supplied.
;
/ action-param / action-param
; the following is optional, ; the following is optional,
; and MAY occur more than once ; and MAY occur more than once
;
/ (";" xparam) / other-params
) )
The "DELETE" command is used to delete calendars or components. The The "DELETE" command is used to delete calendars or components. The
included "VQUERY" component(s) specifies the container(s) to delete. included "VQUERY" component(s) specifies the container(s) to delete.
If a component is to be marked for delete and not physically removed, If a component is to be marked for delete and not physically removed,
then include the "OPTIONS" parameter with its value set to the "MARK" then include the "OPTIONS" parameter with its value set to the "MARK"
value in order to alter its state to "DELETED". value in order to alter its state to "DELETED".
When components are deleted, only the top most component "REQUEST- When components are deleted, only the top most component "REQUEST-
STATUS" properties are returned. No "REQUEST-STATUS" properties are STATUS" properties are returned. No "REQUEST-STATUS" properties are
returned for components inside of the selected components. There returned for components inside of the selected components. There
MUST BE one "VREPLY" component returned for each object that is MUST BE one "VREPLY" component returned for each object that is
deleted or marked for delete. deleted or marked for delete. Note that if no "VREPLY" components
are returned then nothing matched and nothing was deleted.
Restriction Table for the "REPLY" command for any "DELETE" command. Restriction Table for the "REPLY" command for any "DELETE" command.
delete-reply = "BEGIN" ":" "VCALENDAR" CRLF delete-reply = "BEGIN" ":" "VCALENDAR" CRLF
calprops calprops ; MUST include 'reply-cmd'
1*(delete-vreply) *(delete-vreply)
"END" ":" "VCALENDAR" CRLF "END" ":" "VCALENDAR" CRLF
delete-vreply = "BEGIN" ":" "VREPLY" CRLF delete-vreply = "BEGIN" ":" "VREPLY" CRLF
deleted-id deleted-id
request-status request-status
"END" ":" "VREPLY" CRLF "END" ":" "VREPLY" CRLF
; Where the id is appropriate for the ; Where the id is appropriate for the
; type of object deleted: ; type of object deleted:
; ;
; VAGENDA = calid ; VAGENDA = calid
; VCAR = carid ; VCAR = carid
; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid ; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid
; VQUERY = queryid ; VQUERY = queryid
; ALARM = sequence ; ALARM = sequence
; VTIMEZONE = tzid
; x-component = x-id ; x-component = x-id
; An instance = uid recurid
; ;
deleted-id = ( calid / carid / uid / uid dtstamp deleted-id = ( calid / carid / uid / uid recurid
/ queryid / tzid / sequence / x-id ) / queryid / tzid / sequence / x-id )
Example to delete a "VEVENT" component with "UID" value of Example to delete a "VEVENT" component with "UID" value of
'abcd12345' from the calendar "relcald-22" from the current CS: 'abcd12345' from the calendar "relcald-22" from the current CS:
C: Content-Type: text/calendar C: Content-Type: text/calendar
C: C:
C: BEGIN:VCALENDAR C: BEGIN:VCALENDAR
C: TARGET:relcalid-22 C: TARGET:relcalid-22
C: CMD;ID:"random but unique per CUA":DELETE C: CMD;ID:"random but unique per CUA":DELETE
C: BEGIN:VQUERY C: BEGIN:VQUERY
C: QUERY:SELECT * FROM VEVENT WHERE UID = 'abcd12345' C: QUERY:SELECT VEVENT FROM VAGENDA WHERE UID = 'abcd12345'
C: END:VQUERY C: END:VQUERY
C: END:VCALENDAR C: END:VCALENDAR
S: BEGIN:VCALENAR S: BEGIN:VCALENAR
S: TARGET:relcalid-22 S: TARGET:relcalid-22
S: CMD;ID:"random but unique per CUA":REPLY S: CMD;ID:"random but unique per CUA":REPLY
S: BEGIN:VREPLY S: BEGIN:VREPLY
S: UID:abcd12345 S: UID:abcd12345
S: REQUEST-STATUS:3.0 S: REQUEST-STATUS:3.0
S: END:VREPLY S: END:VREPLY
skipping to change at page 103, line 21 skipping to change at page 116, line 21
; The following MUST occur exactly once and only ; The following MUST occur exactly once and only
; when the latency-param has been supplied and ; when the latency-param has been supplied and
; MUST NOT be supplied if the latency-param is ; MUST NOT be supplied if the latency-param is
; not supplied. ; not supplied.
/ action-param / action-param
; The following is optional, ; The following is optional,
; and MAY occur more than once. ; and MAY occur more than once.
/ (";" xparam) / other-params
; The following MUST BE supplied exactly once. ; The following MUST BE supplied exactly once.
; The value specifies the number of UIDs to ; The value specifies the number of UIDs to
; be returned. ; be returned.
/ option-param integer / option-param posint1
) )
Response: Response:
gen-reply = "BEGIN" ":" "VCALENDAR" CRLF gen-reply = "BEGIN" ":" "VCALENDAR" CRLF
calprops calprops ; Which MUST include 'reply-cmd'
1*(gen-vreply) 1*(gen-vreply)
"END" ":" "VCALENDAR" CRLF "END" ":" "VCALENDAR" CRLF
gen-vreply = "BEGIN" ":" "VREPLY" CRLF gen-vreply = "BEGIN" ":" "VREPLY" CRLF
*(uid) 1*(uid)
request-status request-status
"END" ":" "VREPLY" CRLF "END" ":" "VREPLY" CRLF
Example: Example:
C: BEGIN:VCALENDAR C: BEGIN:VCALENDAR
C: VERSION:2.0 C: VERSION:2.0
C: PRODID:-//someone's prodid C: PRODID:-//someone's prodid
C: CMD;ID=unique-per-cua-124;OPTIONS=5:GENERATE-UID C: CMD;ID=unique-per-cua-124;OPTIONS=5:GENERATE-UID
C: END:VCALENDAR C: END:VCALENDAR
skipping to change at page 104, line 25 skipping to change at page 117, line 25
S: UID:20011121T120000Z-12344@cal.example.com S: UID:20011121T120000Z-12344@cal.example.com
S: REQUEST-STATUS:2.0 S: REQUEST-STATUS:2.0
S: END:VREPLY S: END:VREPLY
S: END:VCALENDAR S: END:VCALENDAR
10.3 GET-CAPABILITY Command 10.3 GET-CAPABILITY Command
CMD: GET-CAPABILITY CMD: GET-CAPABILITY
Purpose: The "GET-CAPABILITY" command returns the capabilities of the Purpose: The "GET-CAPABILITY" command returns the capabilities of the
other end of the session. other end point of the session.
A CUA MUST send a "GET-CAPABILITY" command to a CS after the initial A CUA MUST send a "GET-CAPABILITY" command to a CS after the initial
connection. The "GET-CAPABILITY" command MUST BE implemented by all connection. A CS MUST send a "GET-CAPABILITY" command to a CUA after
CSs. the initial connection. The "GET-CAPABILITY" command and reply MUST
BE implemented by all CSs and CUAs.
The CS MUST send a "GET-CAPABILITY" command to a CUA after the
initial connection. The CUA MUST recogonize the "GET-CAPABILITY"
command and MAY return a not implemented reply meaning that the CUA
supports only the default capababilities.
Formal Definition: A "GET-CAPABILITY" command is defined by the Formal Definition: A "GET-CAPABILITY" command is defined by the
following notation: following notation:
get-capability-cmd = capibiltyparam ":" "GET-CAPABILITY" get-capability-cmd = capibiltyparam ":" "GET-CAPABILITY"
capibiltyparam = *( capibiltyparam = *(
; the following are optional, ; the following are optional,
; but MUST NOT occur more than once ; but MUST NOT occur more than once
skipping to change at page 105, line 24 skipping to change at page 118, line 24
; the following MUST occur exactly once and only ; the following MUST occur exactly once and only
; when the latency-param has been supplied and ; when the latency-param has been supplied and
; MUST NOT be supplied if the latency-param is ; MUST NOT be supplied if the latency-param is
; not supplied. ; not supplied.
; ;
/ action-param / action-param
; the following is optional, ; the following is optional,
; and MAY occur more than once ; and MAY occur more than once
; ;
/ (";" xparam) / other-params
) )
Response: Response:
The "GET-CAPABILITY" command returns information about the Calendar The "GET-CAPABILITY" command returns information about the Calendar
other end of the session given the current state of the connection. other end of the session given the current state of the connection.
The values returned may differ depending on current user identify and The values returned may differ depending on current user identify and
the security level of the connection. the security level of the connection.
Client implementations SHOULD NOT require any capability element Client implementations SHOULD NOT require any capability element
beyond those defined in this specification, and MAY ignore any beyond those defined in this specification or future RFC publications
nonstandard, experimental capability elements. The "GET-CAPABILITY" , and MAY ignore any nonstandard, experimental capability elements.
reply may return different results depending on the UPN and if the The "GET-CAPABILITY" reply may return different results depending on
UPN is authenticated. the UPN and if the UPN is authenticated.
When sending a reply to a "GET-CAPABILITY" command, all of these MUST When sending a reply to a "GET-CAPABILITY" command, all of these MUST
BE supplied. If the CUA does not support sending a full reply and BE supplied. The following properties are returned in response to a
sends not-implemented error, then the CS MUST assume the CUA supports "GET-CAPABILITY" command:
the default values as defined below. A CS MUST always send the full
reply when queried.
When the CUA does not support sending a "GET-CAPABILITY" reply, then
the CS MUST assume the defaults listed below. The following
properties are returned in response to a "GET-CAPABILITY" command:
Name Occurs Description
------------------------------------------------------------------
CAP-VERSION 1 Version of CAP. It MUST include at least "1.0"
for this version of CAP. Like the "VERSION"
property, it may have a range. Uses the exact
same syntax as the "VERSION" property value.
The default is "1.0".
CAR-LEVEL 1 Indicates level of CAR support. CAR-NONE,
CAR-MIN or CAR-FULL-1. If CAR-FULL-1 is
supplied then CAR-MIN MUST BE assumed.
A CAR-MIN implementation only supports
the DEFAULT-VCARS listed in the VCALSTORE
and does not support the creation or
modification of VCARS.
The default is CAR-NONE.
COMPONENTS 1 A comma separated list of the names of
components that are supported. This
includes any components inside of
other components (VALARM for example).
It MUST include at least VCALSTORE, VCALENDAR,
VREPLY, and VAGENDA and at least one of VEVENT,
VTODO, VTIMEZONE, or VJOURNAL. The defalt
is "VCALSTORE,VCALENDAR,VREPLY,VAGENDA,
VEVENT,VALARM,VTIMEZONE,VJOURNAL,VTODO,
DAYLIGHT,STANDARD"
STORES-EXPANDED
1 If TRUE then it expands multiple instances
separately when they are stored (RRULEs
converted to RDATEs) and when sent. If
FALSE then it expands instances dynamically
during sending. Default is FALSE.
DATE-MAX 1 The datetime value in UTC beyond which the
server cannot accept. The default and and
maximum value allowed is 99991231T235959Z.
DATE-MIN 1 The datetime value in UTC prior to which
the server cannot accept. The default and
minimum value allowed is 00000101T000000Z.
ITIP-VERSION 1 Version(s) of ITIP, it MUST include at least
the default value of "2446" to specify
RFC-2446 support. Comma separated list.
MAX-COMPONENT-SIZE
1 A positive integer value that specifies
the size of the largest iCalendar object
that can be accepted in octets. Objects
larger than this will be rejected. A
default value of zero (0) means no limit.
This is also the maximum value of any BEEP
payload that will be accepted or sent.
MULTIPART 1 A comma separated list of MIME multipart
the sender supports in lower case. The
default is no multipart support (empty
list). Example: MULTIPART:related,alternate
PRODID 1 The product id. If supplied in the "VCALENDAR"
components, the values MUST BE identical to
what is sent in the "GET-CAPABILITY" reply
from the CUA or CS. The CUA and CS PRODID
values may differ from each other.
QUERY-LEVEL 1 Indicates level of SQL support. The default
is CAL-QL-1 and CAL-QL-NONE can be supplied.
(CAL-QL-NONE is for CS's that allow ITIP
methods only to be deposited and nothing else).
The default value is CAL-QL-1.
RECUR-ACCEPTED 1 Whether recurrence rules are acceptable.
TRUE (default) or FALSE.
RECUR-EXPAND 1 Whether or not it supports the expansion
of recurrence rules. TRUE (default) or FALSE.
RECUR-LIMIT 1 The maximum number of occurrences of a
recurrence rule that are expanded.
The default of Zero (0) means unlimited.
VERSION 1 Versions of iCalendar support. MUST BE at
least "2.0" (the default). This is the same
property as defined in [iCAL].
RECUR-ACCEPTED 1 Whether recurrence rules are acceptable.
The default is TRUE.
X-... 0+ May include zero or more experimental
properties. These have no default and
if need to be sent by an implementation,
then all of the above MUST BE sent.
------------------------------------------------------- cap-vreply = "BEGIN" ":" "VCALENDAR" CRLF
; The following properties may be in any order.
;
prodid
version
reply-cmd
other-props
"BEGIN" ":" "VREPLY" CRLF
; The following properties may be in any order.
;
cap-version
car-level
components
stores-expanded
maxdate
mindate
itip-version
max-comp-size
multipart
query-level
recur-accepted
recur-expand
recur-limit
other-props
"END" ":" "VREPLY" CRLF
"END" ":" "VCALENDAR" CRLF
Example: Example:
I: Content-Type: text/calendar I: Content-Type: text/calendar
I: I:
I: BEGIN:VCALENDAR I: BEGIN:VCALENDAR
I: VERSION:2.0 I: VERSION:2.0
I: PRODID:-//someone's prodid I: PRODID:-//someone's prodid
I: CMD;ID=unique-per-cua-125:GET-CAPABILITY I: CMD;ID=unique-per-cua-125:GET-CAPABILITY
I: END:VCALENDAR I: END:VCALENDAR
skipping to change at page 108, line 28 skipping to change at page 119, line 45
L: L:
L: BEGIN:VCALENDAR L: BEGIN:VCALENDAR
L: VERSION:2.0 L: VERSION:2.0
L: PRODID:-//someone's prodid L: PRODID:-//someone's prodid
L: CMD;ID=unique-per-cua-125:REPLY L: CMD;ID=unique-per-cua-125:REPLY
L: BEGIN:VREPLY L: BEGIN:VREPLY
L: CAP-VERSION:1.0 L: CAP-VERSION:1.0
L: PRODID:The CS prodid L: PRODID:The CS prodid
L: QUERY-LEVEL:CAL-QL-1 L: QUERY-LEVEL:CAL-QL-1
L: CAR-LEVEL:CAR-FULL-1 L: CAR-LEVEL:CAR-FULL-1
L: DATE-MAX:99991231T235959Z L: MAXDATE:99991231T235959Z
L: DATE-MIN:00000101T000000Z L: MINDATE:00000101T000000Z
L: MAX-COMPONENT-SIZE:0 L: MAX-COMPONENT-SIZE:0
L: COMPONENTS:VCALENDAR,VTODO,VJOURNAL,VEVENT,VCAR, L: COMPONENTS:VCALENDAR,VTODO,VJOURNAL,VEVENT,VCAR,
L: VALARM,VFREEBUSY,VTIMEZONE,STANDARD,DAYLIGHT,VREPLY L: VALARM,VFREEBUSY,VTIMEZONE,STANDARD,DAYLIGHT,VREPLY
L: ITIP-VERSION:2447 L: ITIP-VERSION:2446
L: RECUR-ACCEPTED:TRUE L: RECUR-ACCEPTED:TRUE
L: RECUR-EXPAND:TRUE L: RECUR-EXPAND:TRUE
L: RECUR-LIMIT:0 L: RECUR-LIMIT:0
L: STORES-EXPANDED:FALSE L: STORES-EXPANDED:FALSE
L: X-INET-PRIVATE-COMMANDS:1.0 L: X-INET-PRIVATE-COMMANDS:1.0
L: END:VREPLY L: END:VREPLY
L: END:VCALENDAR L: END:VCALENDAR
10.4 IDENTIFY Command 10.4 IDENTIFY Command
skipping to change at page 109, line 32 skipping to change at page 120, line 48
; the following MUST occur exactly once and only ; the following MUST occur exactly once and only
; when the latency-param has been supplied and ; when the latency-param has been supplied and
; MUST NOT be supplied if the latency-param is ; MUST NOT be supplied if the latency-param is
; not supplied. ; not supplied.
/ action-param / action-param
; the following is optional, ; the following is optional,
; and MAY occur more than once ; and MAY occur more than once
/ (";" xparam) / other-params
; The value is the UPN of the requested ; The value is the UPN of the requested
; identity. If not supplied it is a request ; identity. If not supplied it is a request
; to return to the original authenticated identity. ; to return to the original authenticated identity.
/ option-param upn / option-param upn
) )
Response: Response:
skipping to change at page 110, line 25 skipping to change at page 121, line 41
C: VERSION:2.0 C: VERSION:2.0
C: PRODID:-//someone's prodid C: PRODID:-//someone's prodid
C: CMD;ID=unique-per-cua-999;OPTIONS=newUserId:IDENTIFY C: CMD;ID=unique-per-cua-999;OPTIONS=newUserId:IDENTIFY
C: END:VCALENDAR C: END:VCALENDAR
S: Content-Type: text/calendar S: Content-Type: text/calendar
S: S:
S: BEGIN:VCALENDAR S: BEGIN:VCALENDAR
S: VERSION:2.0 S: VERSION:2.0
S: PRODID:-//someone's prodid S: PRODID:-//someone's prodid
S: BEGIN:VREPLY
S: REQUEST-STATUS:2.0;Request Approved S: REQUEST-STATUS:2.0;Request Approved
S: END:VREPLY
S: END:VCALENDAR S: END:VCALENDAR
Or if denied: Or if denied:
S: Content-Type: text/calendar S: Content-Type: text/calendar
S: S:
S: BEGIN:VCALENDAR S: BEGIN:VCALENDAR
S: PRODID:-//someone's prodid S: PRODID:-//someone's prodid
S: VERSION:2.0 S: VERSION:2.0
S: BEGIN:VREPLY
S: REQUEST-STATUS:6.4;Request Denied S: REQUEST-STATUS:6.4;Request Denied
S: END:VREPLY
S: END:VCALENDAR S: END:VCALENDAR
And for the CUA to return to its original authenticated identity And for the CUA to return to its original authenticated identity
the OPTIONS parameter is omitted: the OPTIONS parameter is omitted:
C: Content-Type: text/calendar C: Content-Type: text/calendar
C: C:
C: BEGIN:VCALENDAR C: BEGIN:VCALENDAR
C: VERSION:2.0 C: VERSION:2.0
C: PRODID:-//someone's prodid C: PRODID:-//someone's prodid
C: CMD;ID=unique-per-cua-995:IDENTIFY C: CMD;ID=unique-per-cua-995:IDENTIFY
C: END:VCALENDAR C: END:VCALENDAR
The CS may accept (2.0) or deny (6.4) the request to return to the The CS may accept (2.0) or deny (6.4) the request to return to the
original identity. original identity.
If a CS considers the "IDENTIFY" command an attempt to violate If a CS considers the "IDENTIFY" command an attempt to violate
security, the CS MAY terminate the BEEP session without any further security, the CS MAY terminate the [BEEP] session without any further
notice to the CUA after sending the "REQUEST-STATUS" 6.4 reply. notice to the CUA after sending the "REQUEST-STATUS" 6.4 reply.
10.5 MODIFY Command 10.5 MODIFY Command
CMD: MODIFY CMD: MODIFY
Purpose: The "MODIFY" command is used to modify existing components. Purpose: The "MODIFY" command is used to modify existing components.
A CUA MAY send a "MODIFY" command to a CS. The "MODIFY" command MUST A CUA MAY send a "MODIFY" command to a CS. The "MODIFY" command MUST
BE implemented by all CSs. BE implemented by all CSs.
skipping to change at page 111, line 44 skipping to change at page 123, line 26
; the following MUST occur exactly once and only ; the following MUST occur exactly once and only
; when the latency-param has been supplied and ; when the latency-param has been supplied and
; MUST NOT be supplied if the latency-param is ; MUST NOT be supplied if the latency-param is
; not supplied. ; not supplied.
/ action-param / action-param
; the following is optional, ; the following is optional,
; and MAY occur more than once ; and MAY occur more than once
/ (";" xparam) / other-params
) )
The "MODIFY" command is used to modify existing components. The The "MODIFY" command is used to modify existing components. The
TARGET property specifies the calendars where the components exist TARGET property specifies the calendars where the components exist
that are going to be modified. that are going to be modified.
The format of the request is two components inside of "VCALENDAR" The format of the request is two components inside of "VCALENDAR"
component: component:
skipping to change at page 114, line 43 skipping to change at page 126, line 43
the instance or instances that are changing. It is valid to the instance or instances that are changing. It is valid to
change more than one. As all contained components that match change more than one. As all contained components that match
old-values will be modified. In the first modify example above, old-values will be modified. In the first modify example above,
if "SEQUENCE" properties were to be deleted from both the old- if "SEQUENCE" properties were to be deleted from both the old-
values and new-values, then all "TRIGGER" properties that matched values and new-values, then all "TRIGGER" properties that matched
the old-values in all "VALARM" components in the selected the old-values in all "VALARM" components in the selected
"VEVENT" components would be disabled. "VEVENT" components would be disabled.
3. The result of the modify MUST BE a valid iCalendar object. 3. The result of the modify MUST BE a valid iCalendar object.
Response: A "VCALENDAR" component is returns with one ore more Response:
"REQUEST-STATUS" property values.
A "VCALENDAR" component is returns with one ore more "REQUEST-STATUS"
property values.
If any error occurred: If any error occurred:
No component will be changed at all. That is, it will appear just No component will be changed at all. That is, it will appear just
as it was prior to the modify and the CAP server SHOULD return a as it was prior to the modify and the CAP server SHOULD return a
"REQUEST-STATUS" property for each error that occurred. "REQUEST-STATUS" property for each error that occurred.
There MUST BE at least one error reported. There MUST BE at least one error reported.
If multiple components are selected, then what uniquely identified If multiple components are selected, then what uniquely identified
skipping to change at page 116, line 26 skipping to change at page 128, line 26
; the following MUST occur exactly once and only ; the following MUST occur exactly once and only
; when the latency-param has been supplied and ; when the latency-param has been supplied and
; MUST NOT be supplied if the latency-param is ; MUST NOT be supplied if the latency-param is
; not supplied. ; not supplied.
/ action-param / action-param
; the following is optional, ; the following is optional,
; and MAY occur more than once ; and MAY occur more than once
/ (";" xparam) / other-params
) )
Response: Response:
The REQUEST-STATUS in a VCALENDAR object. The REQUEST-STATUS in a VCALENDAR object.
The content of each "result" is subject to the result restriction The content of each "result" is subject to the result restriction
table defined below. table defined below.
The access control on the "VAGENDA" component after it has been moved The access control on the "VAGENDA" component after it has been moved
skipping to change at page 117, line 23 skipping to change at page 129, line 23
"END" ":" "VREPLY" CRLF "END" ":" "VREPLY" CRLF
; Where the id is appropriate for the ; Where the id is appropriate for the
; type of object moved: ; type of object moved:
; ;
; VAGENDA = calid ; VAGENDA = calid
; VCAR = carid ; VCAR = carid
; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid ; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid
; VQUERY = queryid ; VQUERY = queryid
; ALARM = sequence ; ALARM = sequence
; An instance = uid recurid
; x-component = x-id ; x-component = x-id
; ;
move-id = ( calid / carid / uid / uid dtstamp move-id = ( calid / carid / uid / uid recurid
/ queryid / tzid / sequence / x-id) / queryid / tzid / sequence / x-id)
Example: moving the VAGENDA Nellis to Area-51 Example: moving the VAGENDA Nellis to Area-51
C: Content-Type: text/calendar C: Content-Type: text/calendar
C: C:
C: BEGIN:VCALENDAR C: BEGIN:VCALENDAR
C: VERSION:2.0 C: VERSION:2.0
C: PRODID:-//someone's prodid C: PRODID:-//someone's prodid
C: CMD:MOVE C: CMD:MOVE
C: TARGET:Area-51 C: TARGET:Area-51
skipping to change at page 119, line 20 skipping to change at page 131, line 20
; same as the value sent in the original ; same as the value sent in the original
; CMD property. If the original CMD did ; CMD property. If the original CMD did
; not have an 'id' parameter, then the 'id' ; not have an 'id' parameter, then the 'id'
; MUST NOT be supplied in the REPLY. ; MUST NOT be supplied in the REPLY.
id-param id-param
; the following is optional, ; the following is optional,
; and MAY occur more than once ; and MAY occur more than once
/ (";" xparam) / other-params
) )
10.8 SEARCH Command 10.8 SEARCH Command
CMD: SEARCH CMD: SEARCH
Purpose: The "SEARCH" command is used to return selected components Purpose: The "SEARCH" command is used to return selected components
to the CUA. to the CUA.
skipping to change at page 120, line 26 skipping to change at page 132, line 26
; the following MUST occur exactly once and only ; the following MUST occur exactly once and only
; when the latency-param has been supplied and ; when the latency-param has been supplied and
; MUST NOT be supplied if the latency-param is ; MUST NOT be supplied if the latency-param is
; not supplied. ; not supplied.
/ action-param / action-param
; the following is optional, ; the following is optional,
; and MAY occur more than once ; and MAY occur more than once
/ (";" xparam) / other-params
) )
Response: Response:
The data in each result contains an iCalendar object composed of all The data in each result contains an iCalendar object composed of all
the selected components enclosed in a "VREPLY" component. Only the selected components enclosed in a "VREPLY" component. Only
"REQUEST-STATUS" property and the properties mentioned in the "REQUEST-STATUS" property and the properties mentioned in the
"SELECT" clause of the QUERY are included in the components. Each "SELECT" clause of the QUERY are included in the components. Each
iCalendar object is tagged with the "TARGET" property. iCalendar object is tagged with the "TARGET" property.
skipping to change at page 122, line 28 skipping to change at page 134, line 28
within its own iCalendar object. within its own iCalendar object.
Stored VQUERY can be used by specifying the property QUERYID instead Stored VQUERY can be used by specifying the property QUERYID instead
of QUERY. of QUERY.
10.9 SET-LOCALE Command 10.9 SET-LOCALE Command
CMD: SET-LOCALE CMD: SET-LOCALE
Purpose: The "SET-LOCALE" command is used to select the locale that Purpose: The "SET-LOCALE" command is used to select the locale that
will be used in error codes used int the "REQUEST-STATUS" property. will be used in error codes used in the "REQUEST-STATUS" property.
It also effect the locale sorting order for queries. It also effect the locale sorting order for queries.
A CUA MAY send a "SET-LOCALE" command to a CS. The SET-LOCALE A CUA MAY send a "SET-LOCALE" command to a CS. The SET-LOCALE
command MUST BE implemented by all CSs. command MUST BE implemented by all CSs.
The CS MUST NOT send a "SET-LOCALE" command to any CUA. The CS MUST NOT send a "SET-LOCALE" command to any CUA.
Formal Definition: A "SET-LOCALE" command is defined by the following Formal Definition: A "SET-LOCALE" command is defined by the following
notation: notation:
setlocale-cmd = searchparam ":" "SET-LOCALE" setlocale-cmd = setlocaleparam ":" "SET-LOCALE"
setlocaleparam = *( setlocaleparam = *(
; the following are optional, ; the following are optional,
; but MUST NOT occur more than once ; but MUST NOT occur more than once
id-param id-param
/ localize-param / localize-param
/ latency-param / latency-param
/ setlocale-option / setlocale-option
skipping to change at page 123, line 27 skipping to change at page 135, line 27
; the following MUST occur exactly once and only ; the following MUST occur exactly once and only
; when the latency-param has been supplied and ; when the latency-param has been supplied and
; MUST NOT be supplied if the latency-param is ; MUST NOT be supplied if the latency-param is
; not supplied. ; not supplied.
/ action-param / action-param
; the following is optional, ; the following is optional,
; and MAY occur more than once ; and MAY occur more than once
/ (";" xparam) / other-params
setlocal-option = option-param newlocale setlocal-option = option-param newlocale
newlocale = ; Any locale supplied in the initial BEEP newlocale = ; Any locale supplied in the initial [BEEP]
; "greeting" "localize" parameter and ; "greeting" "localize" parameter and
; and any charset supported by the CS ; and any charset supported by the CS
; and listed in the DEFAULT-CHARSET property ; and listed in the DEFAULT-CHARSET property
; of the VCALSTORE. ; of the VCALSTORE.
) )
Examples:
CMD:OPTIONS=en_US.UTF-8:SET-LOCALE
CMD:OPTIONS=th_TH.ISO8859-11:SET-LOCALE
CMD:OPTIONS=es_MX.ISO8859-1:SET-LOCALE
Restriction Table for the "REPLY" command of any "SET-LOCALE" Restriction Table for the "REPLY" command of any "SET-LOCALE"
command. command.
setlocale-reply = "BEGIN" ":" "VCALENDAR" CRLF setlocale-reply = "BEGIN" ":" "VCALENDAR" CRLF
calprops calprops
1*(setlocale-vreply) 1*(setlocale-vreply)
"END" ":" "VCALENDAR" CRLF "END" ":" "VCALENDAR" CRLF
setlocale-vreply = "BEGIN" ":" "VREPLY" CRLF setlocale-vreply = "BEGIN" ":" "VREPLY" CRLF
request-status request-status
"END" ":" "VREPLY" CRLF "END" ":" "VREPLY" CRLF
10.10 TIMEOUT Command 10.10 TIMEOUT Command
CMD: TIMEOUT CMD: TIMEOUT
Purpose: The "TIMEOUT" command is only sent after a command has been Purpose: The "TIMEOUT" command is only sent after a command has been
sent with a latency value set. When received it means the command sent with a latency value set. When received it means the command
could not be completed in the time allowed. could not be completed in the time allowed.
Formal Definition: A "CONTINUE" command is defined by the following Formal Definition: A "TIMEOUT" command is defined by the following
notation: notation:
continue-cmd = continueparam ":" "CONTINUE" timeout-cmd = continueparam ":" "TIMEOUT"
continueparam = *( timeoutparam = *(
; the following are optional, ; the following are optional,
; but MUST NOT occur more than once ; but MUST NOT occur more than once
id-param id-param
/ localize-param / localize-param
/ (";" xparam) / other-params
) )
The REPLY of any "TIMEOUT" command is:
timeout-reply = "BEGIN" ":" "VCALENDAR" CRLF
calprops
timeout-vreply
"END" ":" "VCALENDAR" CRLF
timeout-vreply = "BEGIN" ":" "VREPLY" CRLF
request-status
*(x-prop)
"END" ":" "VREPLY" CRLF
10.11 Response Codes 10.11 Response Codes
Numeric response codes are returned using the "REQUEST-STATUS" Numeric response codes are returned using the "REQUEST-STATUS"
property. property.
The format of these codes is described in [iCAL], and extend in The format of these codes is described in [iCAL], and extend in
[iTIP] and [iMIP]. The following describes new codes added to this [iTIP] and [iMIP]. The following describes new codes added to this
set and how existing codes apply to CAP. set and how existing codes apply to CAP.
At the application layer response codes are returned as the value of At the application layer response codes are returned as the value of
skipping to change at page 126, line 37 skipping to change at page 137, line 47
6.3 Bad args. 6.3 Bad args.
6.4 Permission denied - VCAR restriction. 6.4 Permission denied - VCAR restriction.
A VCAR exists and the CS will not perform A VCAR exists and the CS will not perform
the operation. the operation.
7.0 A timeout has occurred. The server was 7.0 A timeout has occurred. The server was
unable to complete the operation in the unable to complete the operation in the
requested time. requested time.
8.0 A failure has occurred in the Calendar Server 8.0 A failure has occurred in the CS
that prevents the operation from that prevents the operation from
succeeding. succeeding.
8.1 A query was performed and the query is 8.1 A query was performed and the query is
too complex for the CS. The operation too complex for the CS. The operation
was not performed. was not performed.
8.2 Used to signal that an iCalendar object has 8.2 Used to signal that an iCalendar object has
exceeded the server's size limit exceeded the server's size limit
skipping to change at page 131, line 14 skipping to change at page 142, line 14
14. Security Considerations 14. Security Considerations
Access rights should be granted cautiously, consult Section 2.4.2 for Access rights should be granted cautiously, consult Section 2.4.2 for
a discussion of the subject. Without careful planning it is possible a discussion of the subject. Without careful planning it is possible
to open up access to a greater degree than desired. to open up access to a greater degree than desired.
The "IDENTIFY" command should be carefully implemented as discussed The "IDENTIFY" command should be carefully implemented as discussed
in Section 6.1.3. in Section 6.1.3.
In addition, since CAP is a profile of the BEEP, consult [BEEP]'s In addition, since CAP is a profile of the [BEEP], consult [BEEP]'s
Section 9 for a discussion of BEEP-specific security issues. Section 9 for a discussion of BEEP-specific security issues.
Although service provisioning is a policy matter, at a minimum, all Although service provisioning is a policy matter, at a minimum, all
implementations must provide the following tuning profiles: implementations must provide the following tuning profiles:
for authentication: http://iana.org/beep/SASL/DIGEST-MD5 for authentication: http://iana.org/beep/SASL/DIGEST-MD5
for confidentiality: http://iana.org/beep/TLS (using the for confidentiality: http://iana.org/beep/TLS (using the
TLS_RSA_WITH_3DES_EDE_CBC_SHA cipher) TLS_RSA_WITH_3DES_EDE_CBC_SHA cipher)
skipping to change at page 134, line 24 skipping to change at page 145, line 24
Frank Dawson, Pat Egen, Greg FitzPatrick, illes Fortin, Ned Freed, Frank Dawson, Pat Egen, Greg FitzPatrick, illes Fortin, Ned Freed,
Gary Frederick, Jagan Garimella, Graham Gilmore, Micah Gorrell, Gary Frederick, Jagan Garimella, Graham Gilmore, Micah Gorrell,
Lawrence Greenfield, Bertrand Guiheneuf, Olivier Gutknecht, Mike Lawrence Greenfield, Bertrand Guiheneuf, Olivier Gutknecht, Mike
Hixson, Jeff Hodges, Paul Hoffman, Scott Hollenbeck, Alex Hoppman, Hixson, Jeff Hodges, Paul Hoffman, Scott Hollenbeck, Alex Hoppman,
Bruce Kahn, Lata Kannan, suchet singh khalsa, Dan Kohn, Patrice Bruce Kahn, Lata Kannan, suchet singh khalsa, Dan Kohn, Patrice
Lapierre, Jonathan Lennox, Lisa Lippert, Robert Lusardi, David Madeo, Lapierre, Jonathan Lennox, Lisa Lippert, Robert Lusardi, David Madeo,
Bob Mahoney, Murata Makoto, Gary McGath, Libby Miller, Steve Miller, Bob Mahoney, Murata Makoto, Gary McGath, Libby Miller, Steve Miller,
Bob Morgan, David Nicol, David Nusbaum, Pete O'Leary, Mark Paterson, Bob Morgan, David Nicol, David Nusbaum, Pete O'Leary, Mark Paterson,
Ralph Patterson, Eric R. Plamondon, Robert Ransdell, Jim Ray, Ralph Patterson, Eric R. Plamondon, Robert Ransdell, Jim Ray,
Marshall Rose, JP Rosevear, Paul Sharpe, Richard Shusterman, Tony Marshall Rose, JP Rosevear, Paul Sharpe, Richard Shusterman, Tony
Small, John Smith, Benjamin Sonntag, John Stracke, Alexander Taler, Small, John Smith, Benjamin Sonntag, John Stracke, Preston
Peter Thompson, Steve Vinter, Mark Wahl, Dan Winship Stephenson, Alexander Taler, Peter Thompson, Steve Vinter, Mark Wahl,
Dan Winship
Appendix B. Bibliography Appendix B. Bibliography
[BEEP] Rose, M., "The Block Extensible Exchange Protocol Core", [BEEP] Rose, M., "The Block Extensible Exchange Protocol Core",
ftp://ftp.isi.edu/in-notes/rfc3080.txt ftp://ftp.isi.edu/in-notes/rfc3080.txt
ftp://ftp.isi.edu/in-notes/rfc3081.txt ftp://ftp.isi.edu/in-notes/rfc3081.txt
[CHARREG] Freed, N., Postel, J., "IANA Charset Registration Procedures", [CHARREG] Freed, N., Postel, J., "IANA Charset Registration Procedures",
RFC 2278, January 1998, RFC 2278, January 1998,
ftp://ftp.isi.edu/in-notes/rfc2278.txt ftp://ftp.isi.edu/in-notes/rfc2278.txt
skipping to change at page 137, line 7 skipping to change at page 148, line 7
Resource Locators (URL)", RFC 1738, December 1994 Resource Locators (URL)", RFC 1738, December 1994
ftp://ftp.isi.edu/in-notes/rfc1738.txt ftp://ftp.isi.edu/in-notes/rfc1738.txt
[X509CRL] Housley, R., Ford, W., Polk, W., Solo, D. "Internet X.509 [X509CRL] Housley, R., Ford, W., Polk, W., Solo, D. "Internet X.509
Public Key Infrastructure, Certificate and CRL Profile", Public Key Infrastructure, Certificate and CRL Profile",
RFC 2459, January 1999, RFC 2459, January 1999,
ftp://ftp.isi.edu/in-notes/rfc2459.txt ftp://ftp.isi.edu/in-notes/rfc2459.txt
Full Copyright Statement Full Copyright Statement
Copyright (C) The Internet Society (2002). All Rights Reserved. Copyright (C) The Internet Society (2003). All Rights Reserved.
This document and translations of it may be copied and furnished to This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of Internet organizations, except as needed for the purpose of
 End of changes. 275 change blocks. 
834 lines changed or deleted 1126 lines changed or added

This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/