draft-ietf-calsch-cap-11.txt   draft-ietf-calsch-cap-12.txt 
Calendaring and Scheduling D. Royer Calendaring and Scheduling D. Royer
Internet-Draft INET-Consulting Internet-Draft INET-Consulting
Expires: January 25, 2004 G. Babics Expires: July 12, 2004 G. Babics
Oracle Oracle
P. Hill P. Hill
Massachusetts Institute of Massachusetts Institute of
Technology Technology
S. Mansour S. Mansour
AOL/Netscape AOL/Netscape
July 27, 2003 January 12, 2004
Calendar Access Protocol (CAP) Calendar Access Protocol (CAP)
draft-ietf-calsch-cap-11.txt draft-ietf-calsch-cap-12
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 other Task Force (IETF), its areas, and its working groups. Note that other
groups may also distribute working documents as Internet-Drafts. groups may also distribute working documents as Internet-Drafts.
skipping to change at page 1, line 37 skipping to change at page 1, line 37
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 January 25, 2004. This Internet-Draft will expire on July 12, 2004.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2003). All Rights Reserved. Copyright (C) The Internet Society (2004). 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 . . . . . . . . . . . . . . . . . . . . . . 5
1.1 Formatting Conventions . . . . . . . . . . . . . . . . . . 5 1.1 Formatting Conventions . . . . . . . . . . . . . . . . . 5
1.2 Related Documents . . . . . . . . . . . . . . . . . . . . 6 1.2 Related Documents . . . . . . . . . . . . . . . . . . . 6
1.3 Definitions . . . . . . . . . . . . . . . . . . . . . . . 7 1.3 Definitions . . . . . . . . . . . . . . . . . . . . . . 7
2. Additions to iCalendar . . . . . . . . . . . . . . . . . . 12 2. Additions to iCalendar . . . . . . . . . . . . . . . . . 12
2.1 New Value Types (summary) . . . . . . . . . . . . . . . . 14 2.1 New Value Types (summary) . . . . . . . . . . . . . . . 14
2.1.1 New Parameters (summary) . . . . . . . . . . . . . . . . . 14 2.1.1 New Parameters (summary) . . . . . . . . . . . . . . . . 14
2.1.2 New Properties (summary) . . . . . . . . . . . . . . . . . 15 2.1.2 New Properties (summary) . . . . . . . . . . . . . . . . 15
2.1.3 New Components (summary) . . . . . . . . . . . . . . . . . 17 2.1.3 New Components (summary) . . . . . . . . . . . . . . . . 17
2.2 Relationship of RFC-2446 (ITIP) and CAP . . . . . . . . . 18 2.2 Relationship of RFC-2446 (ITIP) and CAP . . . . . . . . 18
3. CAP Design . . . . . . . . . . . . . . . . . . . . . . . . 21 3. CAP Design . . . . . . . . . . . . . . . . . . . . . . . 20
3.1 System Model . . . . . . . . . . . . . . . . . . . . . . . 21 3.1 System Model . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Calendar Store Object Model . . . . . . . . . . . . . . . 21 3.2 Calendar Store Object Model . . . . . . . . . . . . . . 20
3.3 Protocol Model . . . . . . . . . . . . . . . . . . . . . . 22 3.3 Protocol Model . . . . . . . . . . . . . . . . . . . . . 21
3.3.1 Use of BEEP, MIME and iCalendar . . . . . . . . . . . . . 23 3.3.1 Use of BEEP, MIME and iCalendar . . . . . . . . . . . . 22
4. Security Model . . . . . . . . . . . . . . . . . . . . . . 25 4. Security Model . . . . . . . . . . . . . . . . . . . . . 24
4.1 Calendar User and UPNs . . . . . . . . . . . . . . . . . . 25 4.1 Calendar User and UPNs . . . . . . . . . . . . . . . . . 24
4.1.1 UPNs and Certificates . . . . . . . . . . . . . . . . . . 25 4.1.1 UPNs and Certificates . . . . . . . . . . . . . . . . . 24
4.1.2 Anonymous Users and Authentication . . . . . . . . . . . . 26 4.1.2 Anonymous Users and Authentication . . . . . . . . . . . 25
4.1.3 User Groups . . . . . . . . . . . . . . . . . . . . . . . 26 4.1.3 User Groups . . . . . . . . . . . . . . . . . . . . . . 25
4.2 Access Rights . . . . . . . . . . . . . . . . . . . . . . 27 4.2 Access Rights . . . . . . . . . . . . . . . . . . . . . 26
4.2.1 Access Control and NOCONFLICT . . . . . . . . . . . . . . 27 4.2.1 Access Control and NOCONFLICT . . . . . . . . . . . . . 26
4.2.2 Predefined VCARs . . . . . . . . . . . . . . . . . . . . . 27 4.2.2 Predefined VCARs . . . . . . . . . . . . . . . . . . . . 26
4.2.3 Decreed VCARs . . . . . . . . . . . . . . . . . . . . . . 29 4.2.3 Decreed VCARs . . . . . . . . . . . . . . . . . . . . . 28
4.3 CAP Session Identity . . . . . . . . . . . . . . . . . . . 30 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.2 UPN Value Type . . . . . . . . . . . . . . . . . . . . . . 49 6.1.2 UPN Value Type . . . . . . . . . . . . . . . . . . . . . 48
6.1.3 UPN-FILTER Value . . . . . . . . . . . . . . . . . . . . . 50 6.1.3 UPN-FILTER Value . . . . . . . . . . . . . . . . . . . . 49
7. New Parameters . . . . . . . . . . . . . . . . . . . . . . 53 7. New Parameters . . . . . . . . . . . . . . . . . . . . . 52
7.1 ACTION Parameter . . . . . . . . . . . . . . . . . . . . . 53 7.1 ACTION Parameter . . . . . . . . . . . . . . . . . . . . 52
7.2 ENABLE Parameter . . . . . . . . . . . . . . . . . . . . . 53 7.2 ENABLE Parameter . . . . . . . . . . . . . . . . . . . . 52
7.3 ID Parameter . . . . . . . . . . . . . . . . . . . . . . . 54 7.3 ID Parameter . . . . . . . . . . . . . . . . . . . . . . 53
7.4 LATENCY Parameter . . . . . . . . . . . . . . . . . . . . 55 7.4 LATENCY Parameter . . . . . . . . . . . . . . . . . . . 54
7.5 LOCAL Parameter . . . . . . . . . . . . . . . . . . . . . 56 7.5 LOCAL Parameter . . . . . . . . . . . . . . . . . . . . 55
7.6 LOCALIZE Parameter . . . . . . . . . . . . . . . . . . . . 56 7.6 LOCALIZE Parameter . . . . . . . . . . . . . . . . . . . 55
7.7 OPTIONS Parameter . . . . . . . . . . . . . . . . . . . . 57 7.7 OPTIONS Parameter . . . . . . . . . . . . . . . . . . . 56
8. New Properties . . . . . . . . . . . . . . . . . . . . . . 59 8. New Properties . . . . . . . . . . . . . . . . . . . . . 58
8.1 ALLOW-CONFLICT Property . . . . . . . . . . . . . . . . . 59 8.1 ALLOW-CONFLICT Property . . . . . . . . . . . . . . . . 58
8.2 ATT-COUNTER Property . . . . . . . . . . . . . . . . . . . 59 8.2 ATT-COUNTER Property . . . . . . . . . . . . . . . . . . 58
8.3 CALID Property . . . . . . . . . . . . . . . . . . . . . . 60 8.3 CALID Property . . . . . . . . . . . . . . . . . . . . . 59
8.4 CALMASTER Property . . . . . . . . . . . . . . . . . . . . 61 8.4 CALMASTER Property . . . . . . . . . . . . . . . . . . . 60
8.5 CAP-VERSION Property . . . . . . . . . . . . . . . . . . . 61 8.5 CAP-VERSION Property . . . . . . . . . . . . . . . . . . 60
8.6 CARID Property . . . . . . . . . . . . . . . . . . . . . . 62 8.6 CARID Property . . . . . . . . . . . . . . . . . . . . . 61
8.7 CAR-LEVEL Property . . . . . . . . . . . . . . . . . . . . 62 8.7 CAR-LEVEL Property . . . . . . . . . . . . . . . . . . . 61
8.8 COMPONENTS Property . . . . . . . . . . . . . . . . . . . 63 8.8 COMPONENTS Property . . . . . . . . . . . . . . . . . . 62
8.9 CSID Property . . . . . . . . . . . . . . . . . . . . . . 65 8.9 CSID Property . . . . . . . . . . . . . . . . . . . . . 64
8.10 DECREED Property . . . . . . . . . . . . . . . . . . . . . 65 8.10 DECREED Property . . . . . . . . . . . . . . . . . . . . 64
8.11 DEFAULT-CHARSET Property . . . . . . . . . . . . . . . . . 66 8.11 DEFAULT-CHARSET Property . . . . . . . . . . . . . . . . 65
8.12 DEFAULT-LOCALE Property . . . . . . . . . . . . . . . . . 67 8.12 DEFAULT-LOCALE Property . . . . . . . . . . . . . . . . 66
8.13 DEFAULT-TZID Property . . . . . . . . . . . . . . . . . . 68 8.13 DEFAULT-TZID Property . . . . . . . . . . . . . . . . . 67
8.14 DEFAULT-VCARS Property . . . . . . . . . . . . . . . . . . 69 8.14 DEFAULT-VCARS Property . . . . . . . . . . . . . . . . . 68
8.15 DENY Property . . . . . . . . . . . . . . . . . . . . . . 70 8.15 DENY Property . . . . . . . . . . . . . . . . . . . . . 69
8.16 EXPAND property . . . . . . . . . . . . . . . . . . . . . 70 8.16 EXPAND property . . . . . . . . . . . . . . . . . . . . 69
8.17 GRANT Property . . . . . . . . . . . . . . . . . . . . . . 71 8.17 GRANT Property . . . . . . . . . . . . . . . . . . . . . 70
8.18 ITIP-VERSION Property . . . . . . . . . . . . . . . . . . 72 8.18 ITIP-VERSION Property . . . . . . . . . . . . . . . . . 71
8.19 MAX-COMP-SIZE Property . . . . . . . . . . . . . . . . . . 72 8.19 MAX-COMP-SIZE Property . . . . . . . . . . . . . . . . . 71
8.20 MAXDATE Property . . . . . . . . . . . . . . . . . . . . . 73 8.20 MAXDATE Property . . . . . . . . . . . . . . . . . . . . 72
8.21 MINDATE Property . . . . . . . . . . . . . . . . . . . . . 74 8.21 MINDATE Property . . . . . . . . . . . . . . . . . . . . 73
8.22 MULTIPART Property . . . . . . . . . . . . . . . . . . . . 74 8.22 MULTIPART Property . . . . . . . . . . . . . . . . . . . 73
8.23 NAME Property . . . . . . . . . . . . . . . . . . . . . . 75 8.23 NAME Property . . . . . . . . . . . . . . . . . . . . . 74
8.24 OWNER Property . . . . . . . . . . . . . . . . . . . . . . 76 8.24 OWNER Property . . . . . . . . . . . . . . . . . . . . . 75
8.25 PERMISSION Property . . . . . . . . . . . . . . . . . . . 76 8.25 PERMISSION Property . . . . . . . . . . . . . . . . . . 75
8.26 QUERY property . . . . . . . . . . . . . . . . . . . . . . 77 8.26 QUERY property . . . . . . . . . . . . . . . . . . . . . 76
8.27 QUERYID property . . . . . . . . . . . . . . . . . . . . . 78 8.27 QUERYID property . . . . . . . . . . . . . . . . . . . . 77
8.28 REQUEST-STATUS property . . . . . . . . . . . . . . . . . 78 8.28 REQUEST-STATUS property . . . . . . . . . . . . . . . . 78
8.29 QUERY-LEVEL Property . . . . . . . . . . . . . . . . . . . 79 8.29 QUERY-LEVEL Property . . . . . . . . . . . . . . . . . . 79
8.30 RECUR-ACCEPTED Property . . . . . . . . . . . . . . . . . 80 8.30 RECUR-ACCEPTED Property . . . . . . . . . . . . . . . . 79
8.31 RECUR-LIMIT Property . . . . . . . . . . . . . . . . . . . 81 8.31 RECUR-LIMIT Property . . . . . . . . . . . . . . . . . . 80
8.32 RECUR-EXPAND Property . . . . . . . . . . . . . . . . . . 82 8.32 RECUR-EXPAND Property . . . . . . . . . . . . . . . . . 81
8.33 RESTRICTION Property . . . . . . . . . . . . . . . . . . . 82 8.33 RESTRICTION Property . . . . . . . . . . . . . . . . . . 81
8.34 SCOPE Property . . . . . . . . . . . . . . . . . . . . . . 83 8.34 SCOPE Property . . . . . . . . . . . . . . . . . . . . . 82
8.35 STORES-EXPANDED Property . . . . . . . . . . . . . . . . . 84 8.35 STORES-EXPANDED Property . . . . . . . . . . . . . . . . 83
8.36 TARGET Property . . . . . . . . . . . . . . . . . . . . . 85 8.36 TARGET Property . . . . . . . . . . . . . . . . . . . . 84
8.37 TRANSP Property . . . . . . . . . . . . . . . . . . . . . 85 8.37 TRANSP Property . . . . . . . . . . . . . . . . . . . . 84
9. New Components . . . . . . . . . . . . . . . . . . . . . . 87 9. New Components . . . . . . . . . . . . . . . . . . . . . 86
9.1 VAGENDA Component . . . . . . . . . . . . . . . . . . . . 87 9.1 VAGENDA Component . . . . . . . . . . . . . . . . . . . 86
9.2 VCALSTORE Component . . . . . . . . . . . . . . . . . . . 89 9.2 VCALSTORE Component . . . . . . . . . . . . . . . . . . 88
9.3 VCAR Component . . . . . . . . . . . . . . . . . . . . . . 90 9.3 VCAR Component . . . . . . . . . . . . . . . . . . . . . 89
9.4 VRIGHT Component . . . . . . . . . . . . . . . . . . . . . 93 9.4 VRIGHT Component . . . . . . . . . . . . . . . . . . . . 92
9.5 VREPLY Component . . . . . . . . . . . . . . . . . . . . . 94 9.5 VREPLY Component . . . . . . . . . . . . . . . . . . . . 93
9.6 VQUERY Component . . . . . . . . . . . . . . . . . . . . . 94 9.6 VQUERY Component . . . . . . . . . . . . . . . . . . . . 93
10. Commands and Responses . . . . . . . . . . . . . . . . . . 96 10. Commands and Responses . . . . . . . . . . . . . . . . . 95
10.1 CAP Commands (CMD) . . . . . . . . . . . . . . . . . . . . 96 10.1 CAP Commands (CMD) . . . . . . . . . . . . . . . . . . . 95
10.1.1 Bounded Latency . . . . . . . . . . . . . . . . . . . . . 97 10.1.1 Bounded Latency . . . . . . . . . . . . . . . . . . . . 96
10.1.2 ABORT Command . . . . . . . . . . . . . . . . . . . . . . 99 10.2 ABORT Command . . . . . . . . . . . . . . . . . . . . . 98
10.1.3 CONTINUE Command . . . . . . . . . . . . . . . . . . . . . 100 10.3 CONTINUE Command . . . . . . . . . . . . . . . . . . . . 99
10.1.4 CREATE Command . . . . . . . . . . . . . . . . . . . . . . 101 10.4 CREATE Command . . . . . . . . . . . . . . . . . . . . . 100
10.1.5 DELETE Command . . . . . . . . . . . . . . . . . . . . . . 106 10.5 DELETE Command . . . . . . . . . . . . . . . . . . . . . 105
10.2 GENERATE-UID Command . . . . . . . . . . . . . . . . . . . 109 10.6 GENERATE-UID Command . . . . . . . . . . . . . . . . . . 108
10.3 GET-CAPABILITY Command . . . . . . . . . . . . . . . . . . 111 10.7 GET-CAPABILITY Command . . . . . . . . . . . . . . . . . 110
10.4 IDENTIFY Command . . . . . . . . . . . . . . . . . . . . . 113 10.8 IDENTIFY Command . . . . . . . . . . . . . . . . . . . . 112
10.5 MODIFY Command . . . . . . . . . . . . . . . . . . . . . . 116 10.9 MODIFY Command . . . . . . . . . . . . . . . . . . . . . 115
10.6 MOVE Command . . . . . . . . . . . . . . . . . . . . . . . 120 10.10 MOVE Command . . . . . . . . . . . . . . . . . . . . . . 119
10.7 REPLY Response to a Command . . . . . . . . . . . . . . . 122 10.11 REPLY Response to a Command . . . . . . . . . . . . . . 121
10.8 SEARCH Command . . . . . . . . . . . . . . . . . . . . . . 123 10.12 SEARCH Command . . . . . . . . . . . . . . . . . . . . . 122
10.8.1 Searching for VFREEBUSY . . . . . . . . . . . . . . . . . 126 10.12.1 Searching for VFREEBUSY . . . . . . . . . . . . . . . . 125
10.9 SET-LOCALE Command . . . . . . . . . . . . . . . . . . . . 127 10.13 SET-LOCALE Command . . . . . . . . . . . . . . . . . . . 126
10.10 TIMEOUT Command . . . . . . . . . . . . . . . . . . . . . 128 10.14 TIMEOUT Command . . . . . . . . . . . . . . . . . . . . 127
10.11 Response Codes . . . . . . . . . . . . . . . . . . . . . . 129 10.15 Response Codes . . . . . . . . . . . . . . . . . . . . . 128
11. Object Registration . . . . . . . . . . . . . . . . . . . 131 11. Object Registration . . . . . . . . . . . . . . . . . . 131
11.1 Registration of New and Modified Entities . . . . . . . . 131 11.1 Registration of New and Modified Entities . . . . . . . 131
11.2 Post the item definition . . . . . . . . . . . . . . . . . 131 11.2 Post the item definition . . . . . . . . . . . . . . . . 131
11.3 Allow a comment period . . . . . . . . . . . . . . . . . . 131 11.3 Allow a comment period . . . . . . . . . . . . . . . . . 131
11.4 Release a new RFC . . . . . . . . . . . . . . . . . . . . 131 11.4 Release a new RFC . . . . . . . . . . . . . . . . . . . 131
12. BEEP and CAP . . . . . . . . . . . . . . . . . . . . . . . 132 12. BEEP and CAP . . . . . . . . . . . . . . . . . . . . . . 132
12.1 BEEP Profile Registration . . . . . . . . . . . . . . . . 132 12.1 BEEP Profile Registration . . . . . . . . . . . . . . . 132
12.2 BEEP Exchange Styles . . . . . . . . . . . . . . . . . . . 132 12.2 BEEP Exchange Styles . . . . . . . . . . . . . . . . . . 134
13. IANA Considerations . . . . . . . . . . . . . . . . . . . 133 13. IANA Considerations . . . . . . . . . . . . . . . . . . 135
14. Security Considerations . . . . . . . . . . . . . . . . . 134 14. Security Considerations . . . . . . . . . . . . . . . . 136
Authors' Addresses . . . . . . . . . . . . . . . . . . . . 135 Authors' Addresses . . . . . . . . . . . . . . . . . . . 137
A. Acknowledgments . . . . . . . . . . . . . . . . . . . . . 137 A. Acknowledgments . . . . . . . . . . . . . . . . . . . . 139
B. Bibliography . . . . . . . . . . . . . . . . . . . . . . . 138 B. Bibliography . . . . . . . . . . . . . . . . . . . . . . 140
Intellectual Property and Copyright Statements . . . . . . 140 Intellectual Property and Copyright Statements . . . . . 142
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 search to-dos, or daily journal entries). It further specifies how to search
for available busy time information. Synchronization with CUAs is not for available busy time information. Synchronization with CUAs is not
covered and believed to be possible using CAP. covered and believed to be possible using CAP.
skipping to change at page 5, line 28 skipping to change at page 5, line 28
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 transferred between the CUA and in [iTIP]. When iCalendar objects are transferred between the CUA and
a CS, some additional properties and parameters may be added and the a CS, some additional properties and parameters may be added and the
CUA is responsible for correctly generating iCalendar objects to non CUA is responsible for correctly generating iCalendar objects to non
CAP processes. 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 defines the new objects. The second part provides the detail and any
ABNF for those objects. The ABNF in CAP as in other iCalendar ABNF for those objects. The ABNF in CAP as in other iCalendar
specifications is order independent. That is properties in a specifications is order independent. That is properties in a
component may occur in any order and parameters in any property may component may occur in any order and parameters in any property may
occur in any order. occur in any order.
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
document are to be interpreted as described in [RFCWORDS]. document are to be interpreted as described in [RFCWORDS].
skipping to change at page 8, line 17 skipping to change at page 8, line 17
up the contents of a calendar. 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. (Section 9.3. "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 10, line 36 skipping to change at page 10, line 36
one another. When the policy is applied to a calendar it indicates one another. When the policy is applied to a calendar it indicates
whether or not the time span of any component (VEVENT, VTODO, ...) whether or not the time span of any component (VEVENT, VTODO, ...)
in the calendar can overlap the time span of any other component in the calendar can overlap the time span of any other component
in the same calendar. When applied to an individual object, it in the same calendar. When applied to an individual object, it
indicates whether or not any other component's time span can indicates whether or not any other component's time span can
overlap that individual component. If the CS does not allow overlap that individual component. If the CS does not allow
overlapped booking, then the CS is unwilling to allow any overlapped booking, then the CS is unwilling to allow any
overlapped bookings within any calendar or entry in the CS. overlapped bookings within any calendar or entry in the CS.
Owner - One or more CUs or UGs that are listed in the "OWNER" Owner - One or more CUs or UGs that are listed in the "OWNER"
property in a calendar. There can be more than one owner. The " property in a calendar. There can be more than one owner.
Qualified Calendar Identifier (Qualified CALID) - A CALID in which Qualified Calendar Identifier (Qualified CALID) - A CALID in which
both the scheme and CSID of the CAP URI are present. both the scheme and CSID of the CAP URI are present.
Realm - A collection of calendar user accounts, identified by a Realm - A collection of calendar user accounts, identified by a
string. The name of the Realm is only used in UPNs. In order to string. The name of the Realm is only used in UPNs. In order to
avoid namespace conflict, the Realm SHOULD be postfixed with an avoid namespace conflict, the Realm SHOULD be postfixed with an
appropriate DNS domain name. (e.g., the foobar Realm could be appropriate DNS domain name. (e.g., the foobar Realm could be
called foobar.example.com). called foobar.example.com).
skipping to change at page 15, line 5 skipping to change at page 15, line 5
LOCAL - The "LOCAL" parameter in CAP is used to tag a property in a LOCAL - The "LOCAL" parameter in CAP is used to tag a property in a
component to signify that the component is local or to be component to signify that the component is local or to be
distributed. (Section 7.5). distributed. (Section 7.5).
LOCALIZE - The "LOCALIZE" parameter specifies the locale to be used LOCALIZE - The "LOCALIZE" parameter specifies the locale to be used
in error and warning messages. in error and warning messages.
OPTIONS - The "OPTIONS" parameter passes optional information for OPTIONS - The "OPTIONS" parameter passes optional information for
the command being sent. the command being sent.
SEQUENCE - When the "SEQUENCE" parameter is used in a "VALARM"
component it uniquely identifies the instances of the "VALARM"
within that 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. (Section other entries were allowed to overlap the same time span. (Section
8.1) 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 the "ATTENDEE" value method, there needs to be a way to remember the "ATTENDEE" value
that sent the COUNTER. (Section 8.2) that sent the COUNTER. (Section 8.2)
skipping to change at page 17, line 31 skipping to change at page 17, line 25
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.33) 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.34) access rights. (Section 8.34)
SEQUENCE - When the "SEQUENCE" property is used in a "VALARM"
component it uniquely identifies the instances of the "VALARM"
within that component.
STORES-EXPANDED - Specifies if the implementation stores recurring STORES-EXPANDED - Specifies if the implementation stores recurring
object expanded or not. (Section 8.35) object expanded or not. (Section 8.35)
TARGET - The new "VCALENDAR" component property "TARGET" (Section TARGET - The new "VCALENDAR" component property "TARGET" (Section
8.36) 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.37) control. (Section 8.37)
skipping to change at page 18, line 34 skipping to change at page 18, line 31
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 "DELETE", deposit entities into the store. Other CAP commands such as "DELETE",
"MODIFY" and "MOVE" command values provide direct manipulation of "MODIFY" and "MOVE" command values provide direct manipulation of
components. In the CAP calendar store model, scheduling messages are components. In the CAP calendar store model, scheduling messages are
conceptually kept separate from other components by their state. conceptually kept separate from other components by their state.
All scheduling operations and are as define in [iTIP]. This memo All scheduling operations are as defined in [iTIP]. This memo makes
makes no changes to any of the methods or procedures described in no changes to any of the methods or procedures described in [iTIP].
[iTIP]. In this memo referring to the presence of the "METHOD" In this memo referring to the presence of the "METHOD" property in an
property in an object is the same as saying an [iTIP] object. object is the same as saying an [iTIP] object.
A CUA may create a "BOOKED" state object by depositing an 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 does 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 state of 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 "METHOD" the object to the "BOOKED" state. If the object has a "METHOD"
property then the object is stored in the "UNPROCESSED" state. property then the object is stored in the "UNPROCESSED" 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 for state object. The CUA would fetch the "UNPROCESSED" state objects for
skipping to change at page 19, line 24 skipping to change at page 19, line 21
The marked for delete state is used to keep the object around so that The marked for delete state is used to keep the object around so that
the CUA can process duplicate requests automatically. If a duplicate the CUA can process duplicate requests automatically. If a duplicate
[iTIP] object is deposited into the CS and there exists identical [iTIP] object is deposited into the CS and there exists identical
marked for delete objects, then a CUA acting on behalf of the "OWNER" marked for delete objects, then a CUA acting on behalf of the "OWNER"
can silently drop those duplicate entries. can silently drop those duplicate entries.
Another purpose for the marked for delete state is so that when a CU Another purpose for the marked for delete state is so that when a CU
decides they do not wish to have the object show in their calendar, decides they do not wish to have the object show in their calendar,
the CUA can book the object; changing the "PARTSTAT" parameter to the CUA can book the object; changing the "PARTSTAT" parameter to
"DECLINED" in the "ATTENDEE" property that corresponds to their UPN. "DECLINED" in the "ATTENDEE" property that corresponds to their UPN.
Perform an [iTIP] processing such as sending back a decline. Then Then perform an [iTIP] processing such as sending back a decline.
mark that object as marked for delete. Their CUA might be Then mark that object as marked for delete. Their CUA might be
configurable to automatically drop any updates for that object configurable to automatically drop any updates for that object
knowing the CU has already declined. knowing the CU has already declined.
When synchronizing with multiple CUAs, the marked for delete state When synchronizing with multiple CUAs, the marked for delete state
could be used to inform the synchronization process that an object is could be used to inform the synchronization process that an object is
to be deleted. How synchronization is done is not specified in this to be deleted. How synchronization is done is not specified in this
memo. memo.
Several "UNPROCESSED" state entries can be in the CS for the same Several "UNPROCESSED" state entries can be in the CS for the same
UID. However once consolidated, then only one object exists in the CS UID. However once consolidated, then only one object exists in the CS
and that is the booked object. The others MUST BE removed, or have and that is the booked object. The others MUST BE removed, or have
their state changed to "DELETED". their state changed to "DELETED".
There MUST NOT BE more than one "BOOKED" state object in a calendar There MUST NOT BE more than one "BOOKED" state object in a calendar
for the same "UID". The "ADD" method value may create multiple for the same "UID". The "ADD" method value may create multiple
objects all in the "BOOKED" state for the same UID, however for the objects all in the "BOOKED" state for the same UID, however for the
purpose of this memo, they are the same object that simply have purpose of this memo, they are the same object that simply have
multiple "VCALENDAR" components. multiple "VCALENDAR" components.
For example, if you were on vacation, you could have receive a For example, if you were on vacation, you could have received a
"REQUEST" method to attend a meeting and several updates to that "REQUEST" method to attend a meeting and several updates to that
meeting. Your CUA would have to issue "SEARCH" commands to find them meeting. Your CUA would have to issue "SEARCH" commands to find them
in the CS using CAP, process them, determine what the final state of in the CS using CAP, process them, determine what the final state of
the object from a possible combination of user input and programmed the object from a possible combination of user input and programmed
logic. Then the CUA would instruct the CS to create a new booked logic. Then the CUA would instruct the CS to create a new booked
object from the consolidated results. Finally, the CUA could do a object from the consolidated results. Finally, the CUA could do a
"DELETE" command to remove the related "UNPROCESSED" state objects. "DELETE" command to remove the related "UNPROCESSED" state objects.
See [iTIP] for details on resolving multiple [iTIP] scheduling See [iTIP] for details on resolving multiple [iTIP] scheduling
entries. entries.
skipping to change at page 21, line 22 skipping to change at page 20, line 22
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-CAPABILITY" 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 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
[iCAL] describes components such as events, todos, alarms, and [iCAL] describes components such as events, todos, alarms, and
timezones. [CAP] requires additional object infrastructure. In timezones. [CAP] requires additional object infrastructure. In
particular, detailed definitions of the containers for events and particular, detailed definitions of the containers for events and
todos (calendars), access control objects, and a query language. todos (calendars), access control objects, and a query language.
skipping to change at page 22, line 33 skipping to change at page 21, line 33
+-- VAGENDA +-- VAGENDA
. . . .
. . . .
. . . .
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 locale. If the CS supplied the [BEEP] 'localize' attribute in the
[BEEP] 'greeting' then the CUA may tell the CS to switch locales for [BEEP] 'greeting' then the CUA may tell the CS to switch locales for
the session by issuing the "SET-LOCALE" CAP command and supplying one the session by issuing the "SET-LOCALE" CAP command and supplying one
of the locales supplied by the [BEEP] 'localize' attribute. If of the locales supplied by the [BEEP] 'localize' attribute. If
supplied the first locale supplied in the [BEEP] 'localize' attribute supplied the first locale in the [BEEP] 'localize' attribute is the
is the default locale of the CS. The locale is switched only after a default locale of the CS. The locale is switched only after a
successful reply. 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.
skipping to change at page 23, line 41 skipping to change at page 22, line 41
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 some of the commands. ABORT - Sent to halt the processing of some of the commands.
(Section 10.1.2) (Section 10.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.3)
CREATE - Create a new object on the CS. This can be implied for CREATE - Create a new object on the CS. Initiated by the CUA only.
[iTIP] objects. Initiated by the CUA only. (Section 10.1.4) (Section 10.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.13)
DELETE - Delete objects from the CS. Initiated by the CUA only. Can DELETE - Delete objects from the CS. Initiated by the CUA only. Can
also be used to mark an object for deletion. (Section 10.1.5) also be used to mark an object for deletion. (Section 10.5)
GENERATE-UID - Generate one or more unique ids. Initiated by the CUA GENERATE-UID - Generate one or more unique ids. Initiated by the CUA
only. (Section 10.2) only. (Section 10.6)
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.7)
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.8)
MODIFY - Modify components. Initiated by the CUA only. (Section MODIFY - Modify components. Initiated by the CUA only. (Section
10.5) 10.9)
MOVE - Move components to another container. Initiated by the CUA MOVE - Move components to another container. Initiated by the CUA
only. (Section 10.6) only. (Section 10.10)
REPLY - When replying to a command, the "CMD" value will be set to REPLY - When replying to a command, the "CMD" value will be set to
"REPLY" so that it will not be confused with a new command. "REPLY" so that it will not be confused with a new command.
(Section 10.7) (Section 10.11)
SEARCH - Search for components. Initiated by the CUA only. (Section SEARCH - Search for components. Initiated by the CUA only. (Section
10.8) 10.12)
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.14)
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 CAP 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 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
skipping to change at page 32, line 23 skipping to change at page 31, line 23
A CAP URL begins with the protocol prefix "cap" and is defined by the A CAP URL begins with the protocol prefix "cap" and is defined by the
following grammar. following grammar.
capurl = "cap://" csid [ "/" relcalid ] capurl = "cap://" csid [ "/" relcalid ]
csid = hostport ; As defined in Section 3.2.2 of RFC 2396 csid = hostport ; As defined in Section 3.2.2 of RFC 2396
relcalid = *uric ; As defined in Section 2 of RFC 2396 relcalid = *uric ; As defined in Section 2 of RFC 2396
A 'relcalid' is an identifier that uniquely identifies a calendar on A 'relcalid' is an identifier that uniquely identifies a calendar on
a particular calendar store. There is no implied structure in a a particular calendar store. There is no implied structure in a
Relative CALID. It may refer to the calendar of a user or of a Relative CALID (relcalid). It may refer to the calendar of a user or
resource such as a conference room. It MUST BE unique within the of a resource such as a conference room. It MUST BE unique within the
calendar store. calendar store.
Examples: Examples:
cap://cal.example.com cap://cal.example.com
cap://cal.example.com/Company/Holidays cap://cal.example.com/Company/Holidays
cap://cal.example.com/abcd1234Usr cap://cal.example.com/abcd1234Usr
Relative CAP URLs are permitted and are resolved according to the A 'relcalid' is permitted and is resolved according to the rules
rules defined in Section 5 of RFC 2396. defined in Section 5 of RFC 2396.
Examples of valid relative CAP URLs: Examples of valid relative CAP URLs:
opqaueXzz123String opqaueXzz123String
UserName/Personal UserName/Personal
A Calendar addresses can be described as qualified or relative CAP A Calendar addresses can be described as qualified or relative CAP
URLs. URLs.
For a user currently authenticated to the CS on cal.example.com, For a user currently authenticated to the CS on cal.example.com,
skipping to change at page 35, line 19 skipping to change at page 34, line 19
from its contained component (VALARM). Which is contained in any from its contained component (VALARM). Which is contained in any
"VEVENT" component in the selected "TARGET" property value (a "VEVENT" component in the selected "TARGET" property value (a
relcalid). All "TRIGGER" properties in any "VEVENT" component in relcalid). All "TRIGGER" properties in any "VEVENT" component in
relcalid would be returned. relcalid would be returned.
TARGET:relcalid TARGET:relcalid
QUERY:SELECT VALARM.TRIGGER FROM VEVENT QUERY:SELECT VALARM.TRIGGER FROM VEVENT
SELECT VALARM FROM VEVENT WHERE UID = "123" SELECT VALARM FROM VEVENT WHERE UID = "123"
This return one BEGIN/END "VALARM" component for each This returns one BEGIN/END "VALARM" component for each
"VALARM" component in the matching "VEVENT" component. "VALARM" component in the matching "VEVENT" component.
As there is no '.' (dot) in the VALARM after the SELECT above: As there is no '.' (dot) in the VALARM after the SELECT above:
BEGIN:VALARM BEGIN:VALARM
TRIGGER;RELATED=END:PT5M TRIGGER;RELATED=END:PT5M
REPEAT:4 REPEAT:4
... ...
END:VALARM END:VALARM
BEGIN:VALARM BEGIN:VALARM
TRIGGER;RELATED=START:PT5M TRIGGER;RELATED=START:PT5M
skipping to change at page 36, line 35 skipping to change at page 35, line 35
Note: Note:
(a) Selects all instances of <a-property-name> (a) Selects all instances of <a-property-name>
from all "VEVENT" components. from all "VEVENT" components.
(b) and (c) Select all "VALARM" components from all (b) and (c) Select all "VALARM" components from all
"VEVENT" components. (b) would return then in "VEVENT" components. (b) would return then in
BEGIN/END VALARM tags. (c) would return all BEGIN/END VALARM tags. (c) would return all
of the properties without BEGIN/END VALARM tags. of the properties without BEGIN/END VALARM tags.
(d) Selects every property and every component (d) Selects every property and every component
that is in any "VEVENT" component. With each "VEVENT" that is in any "VEVENT" component, with each "VEVENT"
component wrapped in a BEGIN/END VALARM tags. component wrapped in a BEGIN/END VALARM tags.
(e) Selects all properties and all contained (e) Selects all properties and all contained
components in all "VEVENT" components that have a "VALARM" components in all "VEVENT" components that have a "VALARM"
component with a "TRIGGER" property value between component with a "TRIGGER" property value between
the provided dates and times. With each "VEVENT" the provided dates and times, with each "VEVENT"
component wrapped in a BEGIN/END VALARM tags. component wrapped in a BEGIN/END VALARM tags.
NOT VALID: NOT VALID:
(f) SELECT VEVENT.VALARM.TRIGGER FROM VEVENT (f) SELECT VEVENT.VALARM.TRIGGER FROM VEVENT
(g) SELECT DTSTART,UID FROM VEVENT WHERE (g) SELECT DTSTART,UID FROM VEVENT WHERE
VTODO.SUMMERY = "Fix typo in CAP" VTODO.SUMMERY = "Fix typo in CAP"
Note: (f) Is NOT valid because it contains Note: (f) Is NOT valid because it contains
two '.' characters in the "SELECT" clause. two '.' characters in the "SELECT" clause.
skipping to change at page 40, line 25 skipping to change at page 39, line 25
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.
If called as 'CAL-OWNERS(cal-address)', then it is the equivalent to If called as 'CAL-OWNERS(cal-address)', then it is the equivalent to
the comma separated list of owners for the named calendar id. If the comma separated list of owners for the named calendar id. If
'cal-address' is a CS, it returns the "CALMASTER" property. 'cal-address' is a CS, it returns the "CALMASTER" property.
If used in the in the "WHERE" clause it then returns true if the If used in the "WHERE" clause it then returns true if the currently
currently authenticated UPN is an owner of the currently selected authenticated UPN is an owner of the currently selected object
object matched in the provided "TARGET" property. Used in a CAL-QUERY matched in the provided "TARGET" property. Used in a CAL-QUERY
"WHERE" clause and in the UPN-FILTER. "WHERE" clause and in the UPN-FILTER.
6.1.1.2 CURRENT-TARGET() 6.1.1.2 CURRENT-TARGET()
Is equivalent to the value of the "TARGET" property in the current Is equivalent to the value of the "TARGET" property in the current
command. Used in a CAL-QUERY "WHERE" clause. command. Used in a CAL-QUERY "WHERE" clause.
6.1.1.3 PARAM() 6.1.1.3 PARAM()
Used in a CAL-QUERY. Returns or tests for the value of the named Used in a CAL-QUERY. Returns or tests for the value of the named
skipping to change at page 42, line 20 skipping to change at page 41, line 20
authenticated UPN or their current UPN as a result of an IDENTIFY authenticated UPN or their current UPN as a result of an IDENTIFY
command. command.
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. Where "DELETED" is a component depending on the state of the object. Where "DELETED" is a component
in the marked for delete state. Components that have been removed in the marked for delete state. Components that have been removed
from the store are never returned. from the store are never returned.
If not specified in a query then both "BOOKED" and "UNPROCESSED" data
is returned. Each unique "METHOD" property must be in a separate MIME
object per the [iCAL] section 3.2 restriction.
6.1.1.6 Use of single quote 6.1.1.6 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 [iCAL]. 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 or "NOT LIKE" clause and is not intended preceded by a "LIKE" clause or "NOT LIKE" clause and is not intended
to mean wildcard search MUST BE escaped. to mean wildcard search MUST BE escaped as described in note (7)
below.
6.1.1.7 Comparing DATE and DATE-TIME values 6.1.1.7 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
been stored in. been stored in.
Local time event as descibed in section 4.2.19 of [iCAL] must be Local time event as descibed in section 4.2.19 of [iCAL] must be
skipping to change at page 46, line 12 skipping to change at page 45, line 14
and are not multi valued. The CS must understand the objects being and are not multi valued. The CS must understand the objects being
compared and understand how to determine how any multi valued or compared and understand how to determine how any multi valued or
multi instances properties or parameter values are separated, quoted, multi instances properties or parameter values are separated, quoted,
and backslash escaped and perform the comparisons as if each value and backslash escaped and perform the comparisons as if each value
existed by itself and not quoted or backslash escaped when comparing existed by itself and not quoted or backslash escaped when comparing
using the IN element. using the IN element.
If the "IN" clause is preceded by 'NOT' then there is a match when If the "IN" clause is preceded by 'NOT' then there is a match when
the value does not exist in the property or parameter value. the value does not exist in the property or parameter value.
6.1.1.12 DATE-TIME and TIME values in a WHEN clause 6.1.1.12 DATE-TIME and TIME values in a WHERE clause
All "DATE-TIME" and "TIME" literal values supplied in a "WHEN" clause All "DATE-TIME" and "TIME" literal values supplied in a "WHERE"
MUST BE terminated with 'Z'. That means that the CUA MUST supply the clause MUST BE terminated with 'Z'. That means that the CUA MUST
values in UTC. supply the values in UTC.
Valid: Valid:
WHERE alarm.TRIGGER < '20020201T000000Z' WHERE alarm.TRIGGER < '20020201T000000Z'
AND alarm.TRIGGER > '20020101T000000Z' AND alarm.TRIGGER > '20020101T000000Z'
Not valid and it is a syntax error and the CS MUST reject the QUERY. Not valid and it is a syntax error and the CS MUST reject the QUERY.
WHERE alarm.TRIGGER < '20020201T000000' WHERE alarm.TRIGGER < '20020201T000000'
AND alarm.TRIGGER > '20020101T000000' AND alarm.TRIGGER > '20020101T000000'
6.1.1.13 Multiple contained components 6.1.1.13 Multiple contained components
All comparisons MUST BE done from the same instance of a contained If a query references a component and a component or property
component or property and repeated for each instance. As in the contained in the component, any clauses referring to the contained
following example that uses a "VALARM" component contained in a component or property must be evaluated on all of the contained
"VEVENT" component . If any instance of a "VALARM" component in any components or properties. If any of the contained components or
"VEVENT" component matches the query and the rest of the query is properties match the query, and the conditions on the containing
satisfied, then the "UID", "SUMMARY", and "DESCRIPTION" properties component are also true, the component matches the query.
from all "VEVENT" components will be returned. If there were two
"VALARM" components in a "VEVENT" component, then both "VALARM" For example, in the query below, if a BOOKED VEVENT contains multiple
components are tested and in this example only when the "VEVENT" VALARMs, and the VALARM.TRIGGER clause is true for any of the VALARMs
component state is booked: in the VEVENT, then the UID, SUMMARY, and DESCRIPTION of this VEVENT
would be included in the QUERY results.
BEGIN:VQUERY BEGIN:VQUERY
EXPAND:TRUE EXPAND:TRUE
QUERY:SELECT UID,SUMMARY,DESCRIPTION FROM VEVENT QUERY:SELECT UID,SUMMARY,DESCRIPTION FROM VEVENT
WHERE VALARM.TRIGGER >= '20000101T030405Z' WHERE VALARM.TRIGGER >= '20000101T030405Z'
AND VALARM.TRIGGER <= '20001231T235959Z' AND VALARM.TRIGGER <= '20001231T235959Z'
AND STATE() = 'BOOKED' AND STATE() = 'BOOKED'
END:VQUERY END:VQUERY
6.1.1.14 Example, Query by UID 6.1.1.14 Example, Query by UID
skipping to change at page 47, line 30 skipping to change at page 46, line 33
BEGIN:VQUERY BEGIN:VQUERY
QUERY:SELECT * FROM VTODO WHERE UID = 'uid123' QUERY:SELECT * FROM VTODO WHERE UID = 'uid123'
QUERY:SELECT * FROM VEVENT WHERE UID = 'uid123' QUERY:SELECT * FROM VEVENT WHERE UID = 'uid123'
END:VQUERY END:VQUERY
6.1.1.15 Query by Date-Time range 6.1.1.15 Query by Date-Time range
This query selects the entire content of every booked "VEVENT" This query selects the entire content of every booked "VEVENT"
component that has an instance greater than or equal to July 1st, component that has an instance greater than or equal to July 1st,
2000 00:00:00 UTC and less than or equal to July 31st, 2000 23:59:59 2000 00:00:00 UTC and less than or equal to July 30st, 2000 23:59:59
UTC. This includes single instance "VEVENT" components that do no UTC. This includes single instance "VEVENT" components that do no
explicitly contain any recurence properties or "RECURRENCE-ID" explicitly contain any recurence properties or "RECURRENCE-ID"
properties. This works only for CSs that have the "RECUR-EXPAND" properties. This works only for CSs that have the "RECUR-EXPAND"
property value set to "TRUE" in the "CAPABILITY" exchange. property value set to "TRUE" in the "GET-CAPABILITY" exchange.
BEGIN:VQUERY BEGIN:VQUERY
EXPAND:TRUE EXPAND:TRUE
QUERY:SELECT * FROM VEVENT QUERY:SELECT * FROM VEVENT
WHERE RECURRENCE-ID >= '20000801T000000Z' WHERE RECURRENCE-ID >= '20000701T000000Z'
AND RECURRENCE-ID <= '20000831T235959Z' AND RECURRENCE-ID <= '20000730T235959Z'
AND STATE() = 'BOOKED' AND STATE() = 'BOOKED'
END:VQUERY END:VQUERY
6.1.1.16 Query for all Unprocessed Entries 6.1.1.16 Query for all Unprocessed Entries
The following example selects the entire contents of all non-booked The following example selects the entire contents of all non-booked
"VTODO" and "VEVENT" components in the "UNPROCESSED" state. The "VTODO" and "VEVENT" components in the "UNPROCESSED" state. The
default for the "EXPAND" property is FALSE, so the recurrence rules default for the "EXPAND" property is FALSE, so the recurrence rules
will not be expanded. will not be expanded.
skipping to change at page 49, line 43 skipping to change at page 48, line 43
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. A UPN is a RFC 2822 compliant email address, with group of CU. A UPN is a RFC 2822 compliant email address, with
exceptions listed below, and in most cases it is deliverable to the 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 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 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 deliverable to a different person. And there is no requirement that a
person's UPN MUST BE their e-mail address. A UPN is formatted as 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, 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 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". Realm. In it's simplest form it looks like "user@example.com".
In certain cases a UPN will not be RFC 2822 compliant. When anonymous In certain cases a UPN will not be RFC 2822 compliant. When anonymous
authentication is used, or anonymous authorization is being defined, authentication is used, or anonymous authorization is being defined,
the special UPN "@" will be used. When authentication MUST BE used, the special UPN "@" will be used. When authentication MUST BE used,
but unique identity MUST BE obscured, a UPN of the form but unique identity MUST BE obscured, a UPN of the form
@DNS-domain-name may be used. For example, "@example.com". @DNS-domain-name may be used. For example, "@example.com".
skipping to change at page 55, line 10 skipping to change at page 54, line 10
id-param = ";" "ID" "=" unique-id id-param = ";" "ID" "=" unique-id
; The text value supplied is a unique value ; The text value supplied is a unique value
; shared between the CUA and CS to uniquely ; shared between the CUA and CS to uniquely
; identify the instance of command in the ; identify the instance of command in the
; the current CUA session. The value has ; the current CUA session. The value has
; no meaning to other CUAs or other sessions. ; no meaning to other CUAs or other sessions.
unique-id = ; text unique-id = ; text
text = ; As defined in [iCAL].
Example: The following is an example of this parameter component: Example: The following is an example of this parameter component:
CMD;UD=some-unique-value:CREATE CMD;UD=some-unique-value:CREATE
7.4 LATENCY Parameter 7.4 LATENCY Parameter
Parameter Name: LATENCY Parameter Name: LATENCY
Purpose: This parameter indicates time in seconds for when a timeout Purpose: This parameter indicates time in seconds for when a timeout
occurs. occurs.
skipping to change at page 56, line 23 skipping to change at page 55, line 25
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 to 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 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 "TRUE",
then the alarm MUST NOT be forwarded to any other calender. If set to then the alarm MUST NOT be forwarded to any other calender. If set to
"TRUE", or of the "LOCAL" property is not in the "SEQUENCE" property, "FALSE", or if the "LOCAL" parameter is not in the "SEQUENCE"
the alarm is global. property, the alarm is global.
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 parameter: Example: The following is an example of this parameter:
SEQUENCE;LOCAL=TRUE:4 SEQUENCE;LOCAL=TRUE:4
7.6 LOCALIZE Parameter 7.6 LOCALIZE Parameter
skipping to change at page 56, line 44 skipping to change at page 56, line 4
SEQUENCE;LOCAL=TRUE:4 SEQUENCE;LOCAL=TRUE:4
7.6 LOCALIZE Parameter 7.6 LOCALIZE Parameter
Parameter Name: LOCALIZE Parameter Name: LOCALIZE
Purpose: If provided the "LOCALIZE" parameter specifies the desired Purpose: If provided the "LOCALIZE" parameter specifies the desired
language for error and warning messages. language for error and warning messages.
Value Type: TEXT Value Type: TEXT
Conformance: This parameter can be specified in the "CMD" properties. Conformance: This parameter can be specified in the "CMD" properties.
When the "LOCALIZE" parameter is supplied then its value MUST BE one When the "LOCALIZE" parameter is supplied then its value MUST BE one
of the values listed in the initial [BEEP] greeting 'localize' of the values listed in the initial [BEEP] greeting 'localize'
attribute. attribute.
A CUA may add the "LOCAL" parameter to the "LOCALIZE" parameter to A CUA may add the "LOCALIZE" parameter to the "CMD" property to
the "CMD" property to specify the language of any error or warning specify the language of any error or warning messages.
messages.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
localize-param = ";" "LOCALIZE" "=" beep-localize localize-param = ";" "LOCALIZE" "=" beep-localize
beep-localize = text ; As defined in [iCAL] beep-localize = text ; As defined in [BEEP]
; The value supplied MUST BE one value from the initial ; The value supplied MUST BE one value from the initial
; [BEEP] greeting 'localize' attribute specifying ; [BEEP] greeting 'localize' attribute specifying
; the locale to use for error messages during ; the locale to use for error messages during
; this instance of the command sent. ; this instance of the command sent.
Example: The following is an example of this parameter: Example: The following is an example of this parameter:
CMD;LOCALIZE=fr_CA:CREATE CMD;LOCALIZE=fr_CA:CREATE
7.7 OPTIONS Parameter 7.7 OPTIONS Parameter
Parameter Name: OPTIONS Parameter Name: OPTIONS
Purpose: If provided the "OPTIONS" parameter specifies some "CMD" Purpose: If provided the "OPTIONS" parameter specifies some "CMD"
property specific options. property specific options.
Value Type: TEXT Value Type: TEXT
Conformance: This parameter can be specified in the "CMD" properties. Conformance: This parameter can be specified in the "CMD" properties.
A CUA adds the "OPTIONS" parameter to the "LOCALIZE" parameter to the A CUA adds the "OPTIONS" parameter to the "CMD" property when the
"CMD" property when the command needs extra values. command needs extra values.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
option-param = ";" "OPTIONS" "=" cmd-specific option-param = ";" "OPTIONS" "=" cmd-specific
cmd-specific = ; The value supplied is dependent on the cmd-specific = ; The value supplied is dependent on the
; CMD value. See the specific CMDs for the ; CMD value. See the specific CMDs for the
; correct values to use for each CMD. ; correct values to use for each CMD.
Example: The following is an example of this parameter: Example: The following is an example of this parameter:
skipping to change at page 60, line 39 skipping to change at page 59, 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" other-params ":" calid CRLF CALID = "CALID" other-params ":" relcalid 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 71, line 13 skipping to change at page 70, line 13
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. Note that if the 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 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" property will be ignored and the result will be as if the
"EXPAND" value was set to false. "EXPAND" value was set to false. The results will be bounded by any
date range or other limits in the query.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
expand = "EXPAND" other-params ":" ("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
skipping to change at page 75, line 5 skipping to change at page 74, line 5
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 is specified in the "VREPLY" component
that is sent in response to a "GET-CAPABILITY" command.
Description: This property is used in the in the "GET-CAPABILITY" Description: This property is used in the in the "GET-CAPABILITY"
command reply to indicated the MIME multipart types supported. A CS command reply to indicated the MIME multipart types supported. A CS
and CUA 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" other-params ":" text *( "," text) CRLF mname = "MULTIPART" other-params ":" text *( "," text) CRLF
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.23 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
skipping to change at page 75, line 37 skipping to change at page 74, line 38
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 component to specify a Description: This property is used in the in component to specify a
localizable display name. If more than one "NAME" properties are in a localizable display name. If more than one "NAME" properties are in a
component, then they MUST have unique "LANG" parameters. If the 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" components "DEFAULT-LOCALE" first value as the default. If the
default if the component is stored at the "VCALSTORE" level. component is a "VAGENDA" then the default value is the "VAGENDA"s
components "DEFAULT-LOCALE" first value as the default. A "VCALSTORE"
components "DEFAULT-LOCALE" first value is the 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 = other-params [ ";" languageparam ] other-params nameparam = other-params [ ";" languageparam ] other-params
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.24 OWNER Property 8.24 OWNER Property
skipping to change at page 78, line 27 skipping to change at page 77, line 32
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 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" other-params ":" 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.28 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
[iCAL] objects with a "VCALENDAR" component "VERSION" property that [iCAL] objects with a "VCALENDAR" component "VERSION" property that
includes a value of "2.0" or newer. The 'statdesc' is optional and includes a value of "2.0" or newer. The 'statdesc' is optional and
the 'extdata' may be included when 'statdesc' is not provided. the 'extdata' may be included when 'statdesc' is not provided.
rstatus = "REQUEST-STATUS" rstatparam ":" rstatus = "REQUEST-STATUS" rstatparam ":"
statcode ";" *(statdesc ) ";" *(extdata) statcode ";" [ statdesc ] ";" [ extdata ]
rstatparam = other-params [";" languageparam] other-params rstatparam = other-params [";" languageparam] other-params
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 implementer. May be empty. ;decided by the implementer. May be empty.
skipping to change at page 81, line 19 skipping to change at page 80, line 21
RECUR-ACCEPTED:TRUE RECUR-ACCEPTED:TRUE
RECUR-ACCEPTED:FALSE RECUR-ACCEPTED:FALSE
8.31 RECUR-LIMIT Property 8.31 RECUR-LIMIT Property
Property Name: RECUR-LIMIT Property Name: RECUR-LIMIT
Purpose: This property specifies the maximum number of instances the Purpose: This property specifies the maximum number of instances the
endpoint will expand instances into at query or storage time. endpoint will expand instances into at query or storage time.
Value Type: posint1 Value Type: INTEGER
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 "VREPLY" component Conformance: The property can be specified in the "VREPLY" component
in response to a "GET-CAPABILITY" command. in response to a "GET-CAPABILITY" command.
Description: For implementations that have the "STORES-EXPANDED" Description: For implementations that have the "STORES-EXPANDED"
value set to TRUE, then this value specifies the maximum number of value set to TRUE, then this value specifies the maximum number of
instances that will be stored and fetched. For all implementations instances that will be stored and fetched. For all implementations
skipping to change at page 82, line 22 skipping to change at page 81, line 22
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: The property can be specified in the "VREPLY" component Conformance: The property can be specified in the "VREPLY" component
in response to a "GET-CAPABILITY" command. in response to a "GET-CAPABILITY" command.
Description: If TRUE then the endpoint can expand an object into Description: If TRUE then the endpoint can expand an object into
multiple instances as defined by its recurrence rules when the multiple instances as defined by its recurrence rules when the
"EXPAND" parameter is supplied. If FALSE then the endpoint ignores "EXPAND" property is supplied. If FALSE then the endpoint ignores the
the "EXPAND" parameter. "EXPAND" property.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
recur-expand = "RECUR-EXPAND" other-params ":" boolean CRLF recur-expand = "RECUR-EXPAND" other-params ":" boolean CRLF
Example: The following is an example of this property: Example: The following is an example of this property:
RECUR-EXPAND:TRUE RECUR-EXPAND:TRUE
RECUR-EXPAND:FALSE RECUR-EXPAND:FALSE
skipping to change at page 84, line 16 skipping to change at page 83, line 16
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.35 STORES-EXPANDED Property 8.35 STORES-EXPANDED Property
Property Name: STORES-EXPANDED Property Name: STORES-EXPANDED
Purpose: This property specifies if the sending endpoint expands Purpose: This property specifies if the sending endpoint expands
recurrence rules prior to storing them into the CS. Section 5. recurrence rules prior to storing them into the CS.
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 a "VREPLY" component Conformance: This property can be specified in a "VREPLY" component
in response to a "GET-CAPABILITY" command. in response to a "GET-CAPABILITY" command.
Description: If the value is TRUE then the endpoint expands Description: If the value is TRUE then the endpoint expands
skipping to change at page 85, line 27 skipping to change at page 84, line 27
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" other-params ":" capurl CRLF target = "TARGET" other-params ":" ( capurl / relcalid ) 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.37 TRANSP Property 8.37 TRANSP Property
Property Name: TRANSP Property Name: TRANSP
skipping to change at page 87, line 39 skipping to change at page 86, line 39
deleted. deleted.
agenda = "BEGIN" ":" "VAGENDA" CRLF agenda = "BEGIN" ":" "VAGENDA" CRLF
agendaprop agendaprop
*(icalobject) ; as defined in [iCAL] *(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 / relcalid / calscale / created
/ default-charset / default-locale / default-charset / default-locale
/ default-tzid / last-modified / / default-tzid / last-mod /
; 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 / other-props / x-comp / name / related-to / other-props / x-comp
skipping to change at page 88, line 18 skipping to change at page 87, line 18
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] *(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 / relcalid / 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.
skipping to change at page 90, line 7 skipping to change at page 89, line 7
calstorec = "BEGIN" ":" "VCALSTORE" CRLF calstorec = "BEGIN" ":" "VCALSTORE" CRLF
calstoreprop calstoreprop
*(vagendac) *(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-mod / maxdate / mindate
; the following are optional, ; the following are optional,
; and MAY occur more than once ; and MAY occur more than once
/ name / related-to / other-props / x-comp / name / related-to / other-props / x-comp
) )
last-mod = ; As defined in [iCAL].
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 '*.*'
value: value:
skipping to change at page 90, line 41 skipping to change at page 90, line 4
Purpose: Provide a grouping of calendar access rights. Purpose: Provide a grouping of calendar access rights.
Formal Definition: A "VCAR" component is defined by the following Formal Definition: A "VCAR" component is defined by the following
notation: notation:
carc = "BEGIN" ":" "VCAR" CRLF carc = "BEGIN" ":" "VCAR" CRLF
carprop 1*rightc carprop 1*rightc
"END" ":" "VCAR" CRLF "END" ":" "VCAR" CRLF
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 / other-props name / decreed / 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 94, line 36 skipping to change at page 93, line 36
A query can return a predictable set of arbitrary properties and A query can return a predictable set of arbitrary properties and
components. This component is used by query and other commands to components. This component is used by query and other commands to
return data that does not fit into any other component. It may return data that does not fit into any other component. It may
contain any valid property or component, even if they are not contain any valid property or component, even if they are not
registered. registered.
9.6 VQUERY Component 9.6 VQUERY Component
Component Name: VQUERY Component Name: VQUERY
Purpose: A component to specify what is to be fetched from a CS. Purpose: A component describes a set of objects to be acted upon.
Formal Definition: A "VQUERY" component is defined by the following Formal Definition: A "VQUERY" component is defined by the following
notation: notation:
queryc = "BEGIN" ":" "VQUERY" CRLF queryc = "BEGIN" ":" "VQUERY" CRLF
queryprop queryprop
"END" ":" "VCAR" CRLF "END" ":" "VCAR" CRLF
queryprop = 1*( queryprop = 1*(
skipping to change at page 95, line 19 skipping to change at page 94, line 19
; 'expand' is OPTIONAL but MUST NOT occur ; 'expand' is OPTIONAL but MUST NOT occur
; more than once. ; more than once.
expand expand
; the following are OPTIONAL, and MAY occur ; the following are OPTIONAL, and MAY occur
; more than once ; more than once
; ;
/ name / other-props / name / other-props
; the following MUST occur at least once. ; the following MUST occur at least once if
; queryid is not supplied.
; ;
/ query / query
) )
Description: A "VQUERY" contains properties that specify which Description: A "VQUERY" contains properties that describe which
properties and components the CS is requested to return during a properties and components the CS is requested to act upon.
SEARCH command.
The "QUERYID" property specifies the local identifier for a stored The "QUERYID" property specifies the local identifier for a "VQUERY"
"VQUERY" component. The "NAME" property specifies a localizable component.
display name of a stored "VQUERY" component. Normally "NAME" and
"QUERYID" properties are used when looking for a correct stored
"VQUERY" component, or when storing a "VQUERY" component.
For a search, if the "TARGET" property is supplied in a "VQUERY" For a search, if the "TARGET" property is supplied in a "VQUERY"
component, then the CS is to search for the query in the CALID component, then the CS is to search for the query in the CALID
supplied by the "TARGET" property value. supplied by the "TARGET" property value.
For a create the "TARGET" property MUST NOT be supplied as the For a create the "TARGET" property MUST NOT be supplied as the
destination container is already supplied in the "TARGET" property of destination container is already supplied in the "TARGET" property of
the "VCALENDAR" component. the "VCALENDAR" component.
For examples, see Section 6.1.1. For examples, see Section 6.1.1.
skipping to change at page 96, line 25 skipping to change at page 95, line 25
Purpose: The property defines the command to be sent. Purpose: The property defines the command to be sent.
Value Type: TEXT Value Type: TEXT
Property Parameters: Non-standard, id, localize, latency, action or Property Parameters: Non-standard, id, localize, latency, action or
options. options.
Conformance: This property is the method used to specify the commands Conformance: This property is the method used to specify the commands
to a CS and can exist in any object sent to the CS. to a CS and can exist in any object sent to the CS.
Description: All of the command to the CS are supplied in this Description: All of the commands to the CS are supplied in this
property. The "OPTIONS" parameter is overloaded and its meaning is property. The "OPTIONS" parameter is overloaded and its meaning is
dependent on the CMD value supplied. dependent on the CMD value supplied.
Formal Definition: The property is defined by the following notation: Formal Definition: The property is defined by the following notation:
cmd = "CMD" ( cmd = "CMD" (
/ abort-cmd / abort-cmd
/ continue-cmd / continue-cmd
/ create-cmd / create-cmd
/ delete-cmd / delete-cmd
skipping to change at page 97, line 12 skipping to change at page 96, line 12
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
"LATENCY" parameter value), then a "TIMEOUT" command MUST BE sent on "LATENCY" parameter value with an "ACTION" parameter set to the "ASK"
the same channel to which there MUST BE a an "ABORT" or a "CONTINUE" value), then a "TIMEOUT" command MUST BE sent on the same channel" to
command reply. If the CUA initiated the original command, then the CS which there MUST BE a an "ABORT" or a "CONTINUE" command reply. If
would issue the "TIMEOUT" command and the CUA would then have to the CUA initiated the original command, then the CS would issue the
issue an "ABORT" or "CONTINUE" command. If the CS initiated the "TIMEOUT" command and the CUA would then have to issue an "ABORT" or
original command then the CUA would have to issue the "TIMEOUT" and "CONTINUE" command. If the CS initiated the original command then the
the CS would send the "ABORT" or "CONTINUE". CUA would have to issue the "TIMEOUT" and 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 as if it had Upon receiving a "CONTINUE" command the work continues as if it had
not been delayed or stopped. Note that a new latency time MAY BE not been delayed or stopped. Note that a new latency time MAY BE
included in a "CONTINUE" command indicating to continue the original included in a "CONTINUE" command indicating to continue the original
command until the "LATENCY" parameter value expires or the results of command until the "LATENCY" parameter value expires or the results of
skipping to change at page 98, line 45 skipping to change at page 97, 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=xyz12346:REPLY L: CMD;ID=xyz12346:REPLY
L: BEGIN:VREPLY L: BEGIN:VREPLY
L: REQUEST-STATUS:2.0.3;Continued for 3 more seconds L: REQUEST-STATUS:2.0.3;Continued for 3 more seconds
L: END:VREPLY L: END:VREPLY
L: END:VCALENDAR L: END:VCALENDAR
Above the "2.0.3" status is returend because it is not an error, it
is a progress status sent in reply to the "CONTINUE" command.
To abort the command and not wait any further then issue an "ABORT" To abort the command and not wait any further then issue an "ABORT"
command: command:
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=xyz12346:ABORT I: CMD;ID=xyz12346:ABORT
I: END:VCALENDAR I: END:VCALENDAR
skipping to change at page 99, line 24 skipping to change at page 98, line 26
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=xyz12346:REPLY L: CMD;ID=xyz12346:REPLY
L: BEGIN:VREPLY L: BEGIN:VREPLY
L: REQUEST-STATUS:2.0.3;Aborted As Requested. L: REQUEST-STATUS:2.0.3;Aborted As Requested.
L: END:VREPLY L: END:VREPLY
L: END:VCALENDAR L: END:VCALENDAR
10.1.2 ABORT Command If the "ACTION" value had been set to "ABORT", then the listiner
would send a "7.0" error on timeout in the reply to the command that
initiated the command that timed out.
10.2 ABORT Command
CMD: ABORT CMD: ABORT
Purpose: The "ABORT" command is sent to request that the named or Purpose: The "ABORT" command is sent to request that the named or
only in process command be aborted. Latency MUST not be supplied with only in process command be aborted. Latency MUST not be supplied with
the "ABORT" command. the "ABORT" command.
Formal Definition: An "ABORT" command is defined by the following Formal Definition: An "ABORT" command is defined by the following
notation: notation:
skipping to change at page 100, line 18 skipping to change at page 99, line 23
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
other-props other-props
"END" ":" "VREPLY" CRLF "END" ":" "VREPLY" CRLF
10.1.3 CONTINUE Command 10.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:
skipping to change at page 101, line 21 skipping to change at page 100, line 26
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
other-props other-props
"END" ":" "VREPLY" CRLF "END" ":" "VREPLY" CRLF
10.1.4 CREATE Command 10.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.
A CUA MAY send a "CREATE" command to a CS. The "CREATE" command MUST A CUA MAY send a "CREATE" command to a CS. The "CREATE" command MUST
BE implemented by all CSs. BE implemented by all CSs.
The CS MUST NOT send a "CREATE" command to any CUA. The CS MUST NOT send a "CREATE" command to any CUA.
Formal Definition: A "CREATE" command is defined by the following Formal Definition: A "CREATE" command is defined by the following
notation: notation and the hierarchy restrictions as defined in Section 3.2:
create-cmd = createparam ":" "CREATE" create-cmd = createparam ":" "CREATE"
createparam = *( createparam = *(
; 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
; 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
skipping to change at page 102, line 41 skipping to change at page 101, line 45
create-vreply = "BEGIN" ":" "VREPLY" CRLF create-vreply = "BEGIN" ":" "VREPLY" CRLF
created-id created-id
request-status request-status
other-props 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 = relcalid
; VALARM = sequence ; VALARM = sequence
; VCAR = carid ; VCAR = carid
; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid ; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid
; VQUERY = queryid ; VQUERY = queryid
; VTIMEZONE = tzid ; VTIMEZONE = tzid
; x-component = x-id ; x-component = x-id
; ;
created-id = ( calid / carid / uid / queryid / created-id = ( relcalid / carid / uid / queryid /
tzid / sequence / x-id) tzid / sequence / x-id)
x-id = ; An ID for an x-component. x-id = ; An ID for an x-component.
creply-props = 4*( creply-props = 4*(
; These are REQUIRED and MUST NOT occur ; These are REQUIRED and MUST NOT occur
; more than once. ; more than once.
; ;
prodid /version / target / reply-cmd prodid /version / target / reply-cmd
skipping to change at page 106, line 39 skipping to change at page 105, line 41
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
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 2nd TARGET. S: BEGIN:REPLY <- Reply for 2nd VEVENT crate in 2nd 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
10.1.5 DELETE Command 10.5 DELETE Command
CMD: DELETE CMD: DELETE
Purpose: The "DELETE" command physically removes the QUERY result Purpose: The "DELETE" command physically removes the QUERY result
from the store or marks it for deletion. from the store or marks it for deletion.
A CUA MAY send a "DELETE" command to a CS. The "DELETE" command MUST A CUA MAY send a "DELETE" command to a CS. The "DELETE" command MUST
BE implemented by all CSs. BE implemented by all CSs.
The CS MUST NOT send a "DELETE" command to any CUA. The CS MUST NOT send a "DELETE" command to any CUA.
skipping to change at page 108, line 18 skipping to change at page 107, line 20
"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 = relcalid
; VCAR = carid ; VCAR = carid
; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid ; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid
; VQUERY = queryid ; VQUERY = queryid
; ALARM = sequence ; ALARM = sequence
; VTIMEZONE = tzid ; VTIMEZONE = tzid
; x-component = x-id ; x-component = x-id
; An instance = uid recurid ; An instance = uid recurid
; ;
deleted-id = ( calid / carid / uid / uid recurid deleted-id = ( relcalid / 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
skipping to change at page 109, line 8 skipping to change at page 108, line 11
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
S: END:VCALENDAR S: END:VCALENDAR
One or more iCalendar objects will be returned that contain a One or more iCalendar objects will be returned that contain a
"REQUEST-STATUS" properties for the deleted components. There could "REQUEST-STATUS" properties for the deleted components. There could
have been more than one component deleted, Any booked and any number have been more than one component deleted. Any booked and any number
of unprocessed [iTIP] scheduling components that matched the QUERY of unprocessed [iTIP] scheduling components that matched the QUERY
value in the above example. Each unique "METHOD" property value that value in the above example. Each unique "METHOD" property value that
was deleted from the store MUST BE in a separate iCalendar object. was deleted from the store MUST BE in a separate iCalendar object.
This is because only one "METHOD" property is allowed in a single This is because only one "METHOD" property is allowed in a single
"VCALENDAR" BEGIN/END block. "VCALENDAR" BEGIN/END block.
10.2 GENERATE-UID Command 10.6 GENERATE-UID Command
CMD: GENERATE-UID CMD: GENERATE-UID
Purpose: The "GENERATE-UID" command returns one or more unique Purpose: The "GENERATE-UID" command returns one or more unique
identifiers which MUST BE globally unique. identifiers which MUST BE globally unique.
The "GENERATE-UID" command MAY BE sent to any CS. The "GENERATE-UID" The "GENERATE-UID" command MAY BE sent to any CS. The "GENERATE-UID"
command MUST BE implemented by all CSs. command MUST BE implemented by all CSs.
The "GENERATE-UID" command MUST NOT be sent to a CUA. The "GENERATE-UID" command MUST NOT be sent to a CUA.
skipping to change at page 111, line 7 skipping to change at page 110, line 10
S: BEGIN:VREPLY S: BEGIN:VREPLY
S: UID:20011121T120000Z-12340@cal.example.com S: UID:20011121T120000Z-12340@cal.example.com
S: UID:20011121T120000Z-12341@cal.example.com S: UID:20011121T120000Z-12341@cal.example.com
S: UID:20011121T120000Z-12342@cal.example.com S: UID:20011121T120000Z-12342@cal.example.com
S: UID:20011121T120000Z-12343@cal.example.com S: UID:20011121T120000Z-12343@cal.example.com
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.7 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 point 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. A CS MUST send a "GET-CAPABILITY" command to a CUA after connection. A CS MUST send a "GET-CAPABILITY" command to a CUA after
the initial connection. The "GET-CAPABILITY" command and reply MUST the initial connection. The "GET-CAPABILITY" command and reply MUST
BE implemented by all CSs and CUAs. BE implemented by all CSs and CUAs.
skipping to change at page 113, line 32 skipping to change at page 112, line 34
L: VALARM,VFREEBUSY,VTIMEZONE,STANDARD,DAYLIGHT,VREPLY L: VALARM,VFREEBUSY,VTIMEZONE,STANDARD,DAYLIGHT,VREPLY
L: ITIP-VERSION:2446 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.8 IDENTIFY Command
CMD: IDENTIFY CMD: IDENTIFY
Purpose: The "IDENTIFY" command allows the CUA to set a new identity Purpose: The "IDENTIFY" command allows the CUA to set a new identity
to be used for calendar access. to be used for calendar access.
A CUA MAY send an "IDENTIFY" command to a CS. The "IDENTIFY" command A CUA MAY send an "IDENTIFY" command to a CS. The "IDENTIFY" command
MUST BE implemented by all CSs. A CS implementation MAY reject all MUST BE implemented by all CSs. A CS implementation MAY reject all
"IDENTIFY" commands. "IDENTIFY" commands.
skipping to change at page 116, line 5 skipping to change at page 115, line 5
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.9 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.
The CS MUST NOT send a "MODIFY" command to any CUA. The CS MUST NOT send a "MODIFY" command to any CUA.
skipping to change at page 116, line 48 skipping to change at page 115, line 48
; and MAY occur more than once ; and MAY occur more than once
/ other-params / 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 three components inside of "VCALENDAR"
component: component:
BEGIN:VCALENDAR BEGIN:VCALENDAR
... ...
BEGIN:VQUERY BEGIN:VQUERY
... ...
END:VQUERY END:VQUERY
BEGIN:XXX BEGIN:XXX
...old-values... ...old-values...
END:XXX END:XXX
BEGIN:XXX BEGIN:XXX
...new-values... ...new-values...
END:XXX END:XXX
END:CALENDAR END:VCALENDAR
The "VQUERY" component selects the components that are to be The "VQUERY" component selects the components that are to be
modified. modified.
Where "XXX" above is a named component type (VEVENT, VTODO, ...). Where "XXX" above is a named component type (VEVENT, VTODO, ...).
Both the old and new components MUST BE of the same type. Both the old and new components MUST BE of the same type.
The old-values is a component and the contents of that component are The old-values is a component and the contents of that component are
going to change and may contain information that helps uniquely going to change and may contain information that helps uniquely
identify the original component (SEQUENCE in the example below). If identify the original component (SEQUENCE in the example below). If
skipping to change at page 118, line 23 skipping to change at page 117, line 23
C: QUERY:SELECT * FROM VEVENT WHERE UID = 'unique-58' C: QUERY:SELECT * FROM VEVENT WHERE UID = 'unique-58'
C: END:VQUERY C: END:VQUERY
C: BEGIN:VEVENT <- Start of old data. C: BEGIN:VEVENT <- Start of old data.
C: LOCATION:building 3 C: LOCATION:building 3
C: LAST-MODIFIED:20020101T123456Z C: LAST-MODIFIED:20020101T123456Z
C: X-LOCAL:some private stuff C: X-LOCAL:some private stuff
C: BEGIN:VALARM C: BEGIN:VALARM
C: SEQUENCE:3 C: SEQUENCE:3
C: TRIGGER;RELATED=END:PT5M C: TRIGGER;RELATED=END:PT5M
C: END:VALARM C: END:VALARM
C: END:VEVENT C: END:VEVENT <- End of old data.
C: BEGIN:VEVENT <- End of new data. C: BEGIN:VEVENT <- Start of new data.
C: LOCATION:building 4 C: LOCATION:building 4
C: LAST-MODIFIED:20020202T010203Z C: LAST-MODIFIED:20020202T010203Z
C: COMMENT:Ignore global trigger. C: COMMENT:Ignore global trigger.
C: BEGIN:VALARM C: BEGIN:VALARM
C: SEQUENCE:3 C: SEQUENCE:3
C: TRIGGER;ENABLE=FALSE:RELATED=END:PT5M C: TRIGGER;ENABLE=FALSE:RELATED=END:PT5M
C: END:VALARM C: END:VALARM
C: END:VEVENT C: END:VEVENT <- End of new data.
C: END:VCALENDAR
The "X-LOCAL" property was not supplied in the new-values, so it was The "X-LOCAL" property was not supplied in the new-values, so it was
deleted. The "LOCATION" property value was altered, as was the deleted. The "LOCATION" property value was altered, as was the
"LAST-MODIFIED" value. The "VALARM" component with a "SEQUENCE" "LAST-MODIFIED" value. The "VALARM" component with a "SEQUENCE"
property value of "3" had its "TRIGGER" property disabled, and the property value of "3" had its "TRIGGER" property disabled, and the
"SEQUENCE" property value did not change so it was not effected. The "SEQUENCE" property value did not change so it was not effected. The
"COMMENT" property was added. "COMMENT" property was added.
When it comes to inline ATTACHMENTs, the CUA only needs to uniquely When it comes to inline ATTACHMENTs, the CUA only needs to uniquely
identify the contents of the ATTACHMENT value in the old-values in identify the contents of the ATTACHMENT value in the old-values in
skipping to change at page 119, line 45 skipping to change at page 118, line 45
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 if "SEQUENCE" properties were to be deleted from both the
old-values and new-values, then all "TRIGGER" properties that old-values and new-values, then all "TRIGGER" properties that
matched the old-values in all "VALARM" components in the selected matched 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: Response:
A "VCALENDAR" component is returns with one ore more "REQUEST-STATUS" A "VCALENDAR" component is returned with one ore more
property values. "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 120, line 27 skipping to change at page 119, line 27
S: TARGET:relcalid S: TARGET:relcalid
S: CMD;ID=delete#1:REPLY S: CMD;ID=delete#1:REPLY
S: BEGIN:VREPLY S: BEGIN:VREPLY
S: BEGIN:VEVENT S: BEGIN:VEVENT
S: UID:123 S: UID:123
S: REQUEST-STATUS:2.0 S: REQUEST-STATUS:2.0
S: END:VEVENT S: END:VEVENT
S: END:VREPLY S: END:VREPLY
S: END:VCALENDAR S: END:VCALENDAR
10.6 MOVE Command 10.10 MOVE Command
CMD: MOVE CMD: MOVE
Purpose: The "MOVE" command is used to move components within the CS. Purpose: The "MOVE" command is used to move components within the CS.
A CUA MAY send a "MOVE" command to a CS. The "MOVE" command MUST BE A CUA MAY send a "MOVE" command to a CS. The "MOVE" command MUST BE
implemented by all CSs. implemented by all CSs.
The CS MUST NOT send a "MOVE" command to any CUA. The CS MUST NOT send a "MOVE" command to any CUA.
skipping to change at page 122, line 7 skipping to change at page 121, line 7
1*(move-vreply) 1*(move-vreply)
"END" ":" "VCALENDAR" CRLF "END" ":" "VCALENDAR" CRLF
move-vreply = "BEGIN" ":" "VREPLY" CRLF move-vreply = "BEGIN" ":" "VREPLY" CRLF
move-id move-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 moved: ; type of object moved:
; ;
; VAGENDA = calid ; VAGENDA = relcalid
; 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 ; An instance = uid recurid
; x-component = x-id ; x-component = x-id
; ;
move-id = ( calid / carid / uid / uid recurid move-id = ( relcalid / 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
skipping to change at page 122, line 44 skipping to change at page 121, line 44
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: TARGET:Area-51 S: TARGET:Area-51
S: BEGIN:VREPLY S: BEGIN:VREPLY
S: CALID:Nellis S: CALID:Nellis
S: REQUEST-STATUS: 2.0 S: REQUEST-STATUS: 2.0
S: END:VREPLY S: END:VREPLY
S: END:VCALENDAR S: END:VCALENDAR
10.7 REPLY Response to a Command 10.11 REPLY Response to a Command
CMD: REPLY CMD: REPLY
Purpose: The "REPLY" value to the "CMD" property is used to return Purpose: The "REPLY" value to the "CMD" property is used to return
the results of all other commands to the CUA. the results of all other commands to the CUA.
A CUA MUST send a "REPLY" command to a CS for any command a CS MAY A CUA MUST send a "REPLY" command to a CS for any command a CS MAY
send to the CUA. The "REPLY" command MUST BE implemented by all CUAs send to the CUA. The "REPLY" command MUST BE implemented by all CUAs
that support getting the "GET-CAPABILITY" command. that support getting the "GET-CAPABILITY" command.
A CS MUST send a "REPLY" command to a CUA for any command a CUA MAY A CS MUST send a "REPLY" command to a CUA for any command a CUA MAY
skipping to change at page 123, line 36 skipping to change at page 122, line 36
id-param id-param
; the following is optional, ; the following is optional,
; and MAY occur more than once ; and MAY occur more than once
/ other-params / other-params
) )
10.8 SEARCH Command 10.12 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.
A CUA MAY send a "SEARCH" command to a CS. The "SEARCH" command MUST A CUA MAY send a "SEARCH" command to a CS. The "SEARCH" command MUST
BE implemented by all CSs. BE implemented by all CSs.
The CS MUST NOT send a "SEARCH" command to any CUA. The CS MUST NOT send a "SEARCH" command to any CUA.
skipping to change at page 124, line 31 skipping to change at page 123, line 31
/ action-param / action-param
; the following is optional, ; the following is optional,
; and MAY occur more than once ; and MAY occur more than once
/ other-params / other-params
) )
The format of the request is the search command (search-cmd) followed
by one or more (query) "VQUERY" components
Response: Response:
The data in each result set contains one or more iCalendar components The data in each result set contains one or more iCalendar components
composed of all the selected results enclosed in a single "VREPLY" composed of all the selected results enclosed in a single "VREPLY"
component per "QUERY". component per "QUERY".
Only "REQUEST-STATUS" property and the properties mentioned in the Only "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
"VCALENDAR" component is tagged with the "TARGET" property. "VCALENDAR" component is tagged with the "TARGET" property.
skipping to change at page 126, line 25 skipping to change at page 125, line 28
S: CMD:REPLY S: CMD:REPLY
S: TARGET:ralcalid S: TARGET:ralcalid
S: BEGIN:VREPLY S: BEGIN:VREPLY
S: REQUEST-STATUS:2.0 S: REQUEST-STATUS:2.0
S: END:VREPLY S: END:VREPLY
S: END:VCALENDAR S: END:VCALENDAR
If there are multiple targets, each iCalendar reply is contained If there are multiple targets, each iCalendar reply is contained
within its own iCalendar object. within its own iCalendar object.
Stored VQUERY can be used by specifying the property QUERYID instead 10.12.1 Searching for VFREEBUSY
of QUERY.
10.8.1 Searching for VFREEBUSY If a CS sets the "RECUR-EXPAND" property to "TRUE" and contains the
"VFREEBUSY" component in the "COMPONENTS" value in a reply to the
"GET-CAPABILITY" command, then it is the CS's responsibility and not
the CUA's responsibility to provide the correct "VFREEBUSY"
information for a calendar.
For CSs that set the "CAPABILITY" "RECUR-EXPAND" property to "TRUE" If a CUA issues a "CREATE" "VFREEBUSY", such a CS MUST return success
and have the "VFREEBUSY" component in the "COMPONENTS" value in the and not store the "VFREEBUSY" component as the results would never be
"CAPABILITY" reply, the CS MUST dynamically create the results of a used.
search for the "VFREEBUSY" component at search time when searching
for STATE() = 'BOOKED' items. If searching for STATE() = Such a CS MUST dynamically create the results of a search for
'UNPROCESSED' items then the [iTIP] object are returned. For these "VFREEBUSY" components at search time when searching for STATE() =
CSs it is the the CS is responsibility and not the CUAs 'BOOKED' items.
responsibility to provide the correct "VFREEBUSY" information for a
calendar. If a CUA performs a "CREATE" "VFREEBUSY" the CS MUST If a CUA searches for "VFREEBUSY" components with STATE() =
return success and not store the "VFREEBUSY" component. 'UNPROCESSED', such a CS MUST return a "VREPLY" with no components.
If a CUA searches for "VFREEBUSY" components without specifying the
STATE, such a CS MUST return the same result as if STATE()='BOOKED'
had been specified.
For CSs that set the "CAPABILITY" "RECUR-EXPAND" property to "FALSE" For CSs that set the "CAPABILITY" "RECUR-EXPAND" property to "FALSE"
and have the "VFREEBUSY" component in the "COMPONENTS" value in the and have the "VFREEBUSY" component in the "COMPONENTS" value in the
"CAPABILITY" reply, a CUA MAY store the "VFREEBUSY" information on "CAPABILITY" reply, a CUA MAY store the "VFREEBUSY" information on
the CS. These CSs then MUST return a "VFREEBUSY" component calculated the CS. These CSs then MUST return a "VFREEBUSY" component calculated
from the stored components. If no "VFREEBUSY" information is from the stored components. If no "VFREEBUSY" information is
available for the "TARGET" calendar, then a "VFREEBUSY" with no available for the "TARGET" calendar, then a "VFREEBUSY" with no
blocked out time will be returned with a success code. A CUA sets the blocked out time will be returned with a success code. A CUA sets the
"VFREEBUSY" time on a those calendars by creating a "VFREEBUSY" "VFREEBUSY" time on a those calendars by creating a "VFREEBUSY"
component without a "METHOD" creating a "BOOKED" entry. component without a "METHOD" creating a "BOOKED" entry.
If a CS does not set the "VFREEBUSY" value in the "COMPONENTS" If a CS does not set the "VFREEBUSY" value in the "COMPONENTS"
"CAPABILITY" value, the CS does not support the "VFREEBUSY" component "CAPABILITY" value, the CS does not support the "VFREEBUSY" component
and all creation and searching for a "VFREEBUSY" component MUST fail. and all creation and searching for a "VFREEBUSY" component MUST fail.
Examples of calendars that may be in this category are public event Examples of calendars that may be in this category are public event
calendars that will never require scheduling with other UPNs. calendars that will never require scheduling with other UPNs.
10.9 SET-LOCALE Command 10.13 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 in the "REQUEST-STATUS" property. will be used in error codes used in the "REQUEST-STATUS" property.
A CUA MAY send a "SET-LOCALE" command to a CS. The SET-LOCALE command A CUA MAY send a "SET-LOCALE" command to a CS. The SET-LOCALE command
MUST BE implemented by all CSs. 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.
skipping to change at page 128, line 32 skipping to change at page 127, line 42
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.14 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 "TIMEOUT" command is defined by the following Formal Definition: A "TIMEOUT" command is defined by the following
notation: notation:
timeout-cmd = continueparam ":" "TIMEOUT" timeout-cmd = timeoutparam ":" "TIMEOUT"
timeoutparam = *( 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
/ other-params / other-params
) )
10.11 Response Codes 10.15 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
a "REQUEST-STATUS" property. The value type of this property is a "REQUEST-STATUS" property. The value type of this property is
skipping to change at page 132, line 9 skipping to change at page 132, line 9
11.4 Release a new RFC 11.4 Release a new RFC
The new object will be submitted for publication as any other The new object will be submitted for publication as any other
internet draft requesting RFC status. internet draft requesting RFC status.
12. BEEP and CAP 12. BEEP and CAP
12.1 BEEP Profile Registration 12.1 BEEP Profile Registration
TBD Beep replies will be one to one (1:1 MSG/RPY) if possible and one to
many (1:many MSG/ANS) when the TARGET changes.
Profile Identification: specify a URI [10] that authoritatively
identifies this profile.
http://iana.org/beep/cap/1.0
Message Exchanged during Channel Creation:
CUAs SHOULD supply the BEEP "localize" attributes in the BEEP
"greeting" messages.
CSs SHOULD supply the BEEP "localize" attributes in the BEEP
"greeting" messages.
CUAs SHOULD supply the BEEP "serverName" attribute at channel
creation time to the CS so that if the CS is performing virtual
hosting the CS can determine the intended virtual host. CSs that do
not support virtual hosting may ignore the BEEP "serverName"
attribute.
Messages starting one-to-one exchanges:
The initial message each direction MUST BE single "text/calendar"
object containing a CAP "CAPABILITY" CMD and must not be part of a
MIME multipart message.
After the initial message then a BEEP "MSG" may contain one or more
MIME objects at least one of which MUST be "text/calendar" and each
"text/calendar" MIME object MUST contain a CAP "CMD" property.
Multiple iCal objects may be sent in a single BEEP message by either
representing them as separate MIME text/calendar parts contained
within a MIME multipart/mixed part or by simple concatenation within
a single text/calendar MIME object.
In either case, all iCal objects transmitted together must have the
same TARGET property.
The sending of multipart MIME entities over BEEP is not permitted for
CAP unless the other endpoint has indicated its ability to accept
them via the appropriate CAPABILITY.
Messages in positive replies:
After the initial message then a BEEP "RPY" may contain one or more
MIME objects at least one of which MUST be "text/calendar" and each
"text/calendar" MIME object MUST contain a CAP "CMD" property. All
"text/calendar" MIME objects in a single BEEP "RPY" messages MUST
have the same "TARGET" property value.
Multiple iCal objects may be sent in a single BEEP message by either
representing them as separate MIME text/calendar parts contained
within a MIME multipart/mixed part or by simple concatenation within
a single text/calendar MIME object.
In either case, all iCal objects transmitted together must have the
same TARGET property.
The sending of multipart MIME entities over BEEP is not permitted for
CAP unless the other endpoint has indicated its ability to accept
them via the appropriate CAPABILITY.
Messages in negative replies:
Any valid "text/calendar" MIME object that contains CAP
"REQUEST-STATUS" property and a CAP "CMD" property with a property
value of "REPLY". And where the CS has determined the requested
operation to be a fatal error. And when the CS has performed NO
operation that effected the contents of any part of the CS or any
calendar controlled by the CS.
Messages in one-to-many exchanges:
After the initial message then a BEEP "MSG" may contain one or more
MIME objects at least one of which MUST be "text/calendar" and each
"text/calendar" MIME object MUST contain a CAP "CMD" property.
The BEEP "MSG" messages can only contain MIME "multipart" MIME
objects if the other endpoint has received a CAP "CAPABILITY"
indicating the other endpoint supports multipart MIME objects. This
does not prevent the endpoint from sending multiple [iCAL]
'icalobject' objects in a single BEEP "MSG" so long as all of them
have the same "TARGET" property value.
Multiple iCal objects may be sent in a single BEEP message by either
representing them as separate MIME text/calendar parts contained
within a MIME multipart/mixed part or by simple concatenation within
a single text/calendar MIME object.
In either case, all iCal objects transmitted together must have the
same TARGET property.
The sending of multipart MIME entities over BEEP is not permitted for
CAP unless the other endpoint has indicated its ability to accept
them via the appropriate CAPABILITY.
Message Syntax:
They are CAP "text/calendar" MIME objects as specified in this memo.
(Remember this text will be part of CAP).
Message Semantics:
As defined in this memo. (Remember this will be part of CAP).
12.2 BEEP Exchange Styles 12.2 BEEP Exchange Styles
[BEEP] defines three styles of message exchange: [BEEP] defines three styles of message exchange:
MSG/ANS,ANS,...,NUL - For one to many exchanges. MSG/ANS,ANS,...,NUL - For one to many exchanges.
MSG/RPY - For one to one exchanges. MSG/RPY - For one to one exchanges.
MSG/ERR - For requests the cannot be processed due to an error. MSG/ERR - For requests the cannot be processed due to an error.
A CAP request, targeted at more than one containers, MAY use a one- A CAP request targeted at more than one containers, MAY use a one-
to-many exchange, with a distinct answer associated with each target. to-many exchange, with a distinct answer associated with each target.
CAP request targeted at a single container MAY use a one-to-one CAP request targeted at a single container MAY use a one-to-one
exchange or a one-to-many exchange. "MSG/ERR" MAY only be used when exchange or a one-to-many exchange. "MSG/ERR" MAY only be used when
an error condition prevents the execution of the request on all the an error condition prevents the execution of the request on all the
targeted calendars. targeted calendars.
13. IANA Considerations 13. IANA Considerations
This memo defines IANA registered extensions to the attributes This memo defines IANA registered extensions to the attributes
defined by iCalendar, as defined in [iCAL], and [iTIP]. defined by iCalendar, as defined in [iCAL], and [iTIP].
skipping to change at page 134, line 7 skipping to change at page 136, line 7
to the registration agent for the "text/calendar" [MIME] to the registration agent for the "text/calendar" [MIME]
content-type, <MAILTO: ietf-calendar@imc.org> using the format content-type, <MAILTO: ietf-calendar@imc.org> using the format
defined in section 7 of [iCAL]. defined in section 7 of [iCAL].
If the IESG approves this memo for publication, then the IANA If the IESG approves this memo for publication, then the IANA
registers the profile specified in Section 12.1, and selects an registers the profile specified in Section 12.1, and selects an
IANA-specific URI, e.g., http://iana.org/beep/cap/1.0. IANA-specific URI, e.g., http://iana.org/beep/cap/1.0.
14. Security Considerations 14. Security Considerations
Access rights should be granted cautiously, consult Section 2.4.2 for Access rights should be granted cautiously. Without careful planning
a discussion of the subject. Without careful planning it is possible 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.
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 [BEEP], consult [BEEP]'s
Section 9 for a discussion of BEEP-specific security issues. Section 9 for a discussion of BEEP-specific security issues.
There are risks of allowing anonymous UPNs to deposit REQUEST and
REFRESH objects. (calendar spam and deninal of service for example)
So implementations should consider methods to restrict anonymous
requests to within acceptable usages.
CS implementations might consider automatically creating VCARs that
allow CAP ATTENDEEs in booked objects to deposit REFRESH and REPLY
objects for those UIDs if they otherwise do not have access rather
then opening up world access. And they may consider also allowing
COUNTER objects for those ATTENDEEs.
When an object is booked by a CUA the CS reply may wish to include
warning messages to the CUA for ATTENDEEs that have CAP urls that do
not have local UPNs as those ATTENDEES may be unable to REPLY or
REFRESH. Some CSs may wish this to be an error.
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)
for both: http://iana.org/beep/TLS (using the for both: http://iana.org/beep/TLS (using the
TLS_RSA_WITH_3DES_EDE_CBC_SHA cipher supporting client-side TLS_RSA_WITH_3DES_EDE_CBC_SHA cipher supporting client-side
skipping to change at page 140, line 29 skipping to change at page 142, line 29
be obtained from the IETF Secretariat. be obtained from the IETF Secretariat.
The IETF invites any interested party to bring to its attention any The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary copyrights, patents or patent applications, or other proprietary
rights which may cover technology that may be required to practice rights which may cover technology that may be required to practice
this standard. Please address the information to the IETF Executive this standard. Please address the information to the IETF Executive
Director. Director.
Full Copyright Statement Full Copyright Statement
Copyright (C) The Internet Society (2003). All Rights Reserved. Copyright (C) The Internet Society (2004). 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. 120 change blocks. 
286 lines changed or deleted 431 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/