Internet Engineering Task Force (IETF)                          C. Daboo
Request for Comments: 6638                                    Apple Inc.
Updates: 4791, 5546                                      B. Desruisseaux
Category: Standards Track                                         Oracle
ISSN: 2070-1721                                                June 2012
        
Internet Engineering Task Force (IETF)                          C. Daboo
Request for Comments: 6638                                    Apple Inc.
Updates: 4791, 5546                                      B. Desruisseaux
Category: Standards Track                                         Oracle
ISSN: 2070-1721                                                June 2012
        

Scheduling Extensions to CalDAV

CalDAV的调度扩展

Abstract

摘要

This document defines extensions to the Calendaring Extensions to WebDAV (CalDAV) "calendar-access" feature to specify a standard way of performing scheduling operations with iCalendar-based calendar components. This document defines the "calendar-auto-schedule" feature of CalDAV.

本文档定义了WebDAV日历扩展(CalDAV)“日历访问”功能的扩展,以指定使用基于iCalendar的日历组件执行日程安排操作的标准方式。本文档定义了CalDAV的“日历自动计划”功能。

Status of This Memo

关于下段备忘

This is an Internet Standards Track document.

这是一份互联网标准跟踪文件。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.

本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。有关互联网标准的更多信息,请参见RFC 5741第2节。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc6638.

有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问http://www.rfc-editor.org/info/rfc6638.

Copyright Notice

版权公告

Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved.

版权所有(c)2012 IETF信托基金和确定为文件作者的人员。版权所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(http://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。

This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to allow modifications of such material outside the IETF Standards Process. Without obtaining an adequate license from the person(s) controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate it into languages other than English.

本文件可能包含2008年11月10日之前发布或公开的IETF文件或IETF贡献中的材料。控制某些材料版权的人员可能未授予IETF信托允许在IETF标准流程之外修改此类材料的权利。在未从控制此类材料版权的人员处获得充分许可的情况下,不得在IETF标准流程之外修改本文件,也不得在IETF标准流程之外创建其衍生作品,除了将其格式化以RFC形式发布或将其翻译成英语以外的其他语言。

Table of Contents

目录

   1. Introduction ....................................................5
      1.1. Terminology ................................................6
      1.2. Notational Conventions .....................................7
      1.3. XML Namespaces and Processing ..............................7
   2. Scheduling Support ..............................................8
      2.1. Scheduling Outbox Collection ...............................9
           2.1.1. CALDAV:schedule-outbox-URL Property ................10
      2.2. Scheduling Inbox Collection ...............................10
           2.2.1. CALDAV:schedule-inbox-URL Property .................11
      2.3. Calendaring Reports Extensions ............................12
      2.4. Additional Principal Properties ...........................12
           2.4.1. CALDAV:calendar-user-address-set Property ..........12
           2.4.2. CALDAV:calendar-user-type Property .................13
   3. Scheduling Operations ..........................................14
      3.1. Identifying Scheduling Object Resources ...................14
      3.2. Handling Scheduling Object Resources ......................15
           3.2.1. Organizer Scheduling Object Resources ..............15
                  3.2.1.1. Create ....................................16
                  3.2.1.2. Modify ....................................17
                  3.2.1.3. Remove ....................................18
           3.2.2. Attendee Scheduling Object Resources ...............18
                  3.2.2.1. Allowed "Attendee" Changes ................18
                  3.2.2.2. Create ....................................19
                  3.2.2.3. Modify ....................................20
                  3.2.2.4. Remove ....................................21
           3.2.3. HTTP Methods .......................................21
                  3.2.3.1. PUT .......................................22
                  3.2.3.2. DELETE ....................................22
                  3.2.3.3. COPY ......................................23
                  3.2.3.4. MOVE ......................................24
        
   1. Introduction ....................................................5
      1.1. Terminology ................................................6
      1.2. Notational Conventions .....................................7
      1.3. XML Namespaces and Processing ..............................7
   2. Scheduling Support ..............................................8
      2.1. Scheduling Outbox Collection ...............................9
           2.1.1. CALDAV:schedule-outbox-URL Property ................10
      2.2. Scheduling Inbox Collection ...............................10
           2.2.1. CALDAV:schedule-inbox-URL Property .................11
      2.3. Calendaring Reports Extensions ............................12
      2.4. Additional Principal Properties ...........................12
           2.4.1. CALDAV:calendar-user-address-set Property ..........12
           2.4.2. CALDAV:calendar-user-type Property .................13
   3. Scheduling Operations ..........................................14
      3.1. Identifying Scheduling Object Resources ...................14
      3.2. Handling Scheduling Object Resources ......................15
           3.2.1. Organizer Scheduling Object Resources ..............15
                  3.2.1.1. Create ....................................16
                  3.2.1.2. Modify ....................................17
                  3.2.1.3. Remove ....................................18
           3.2.2. Attendee Scheduling Object Resources ...............18
                  3.2.2.1. Allowed "Attendee" Changes ................18
                  3.2.2.2. Create ....................................19
                  3.2.2.3. Modify ....................................20
                  3.2.2.4. Remove ....................................21
           3.2.3. HTTP Methods .......................................21
                  3.2.3.1. PUT .......................................22
                  3.2.3.2. DELETE ....................................22
                  3.2.3.3. COPY ......................................23
                  3.2.3.4. MOVE ......................................24
        
           3.2.4. Additional Method Preconditions ....................24
                  3.2.4.1. CALDAV:unique-scheduling-object-resource
                           Precondition ..............................24
                  3.2.4.2. CALDAV:same-organizer-in-all-components
                           Precondition ..............................25
                  3.2.4.3. CALDAV:allowed-organizer-scheduling-
                              object-change Precondition .............25
                  3.2.4.4. CALDAV:allowed-attendee-scheduling-
                              object-change Precondition .............26
           3.2.5. DTSTAMP and SEQUENCE Properties ....................26
           3.2.6. Restrict Recurrence Instances Sent to "Attendees" ..27
           3.2.7. Forcing the Server to Send a Scheduling Message ....27
           3.2.8. "Attendee" Participation Status ....................28
           3.2.9. Schedule Status Values .............................29
           3.2.10. Avoiding Conflicts when Updating Scheduling Object
                   Resources .........................................31
                   3.2.10.1. PUT .....................................33
                   3.2.10.2. DELETE, COPY, or MOVE ...................33
   4. Processing Incoming Scheduling Messages ........................34
      4.1. Processing "Organizer" Requests, Additions, and
           Cancellations .............................................34
      4.2. Processing "Attendee" Replies .............................35
      4.3. Default Calendar Collection ...............................35
           4.3.1. Additional Method Preconditions ....................36
                  4.3.1.1. CALDAV:default-calendar-needed
                           Precondition ..............................36
                  4.3.1.2. CALDAV:valid-schedule-default-calendar-URL
                           Precondition ..............................36
   5. Request for Busy Time Information ..............................37
      5.1. Status Codes ..............................................38
      5.2. Additional Method Preconditions ...........................38
           5.2.1. CALDAV:valid-scheduling-message Precondition .......38
           5.2.2. CALDAV:valid-organizer Precondition ................39
   6. Scheduling Privileges ..........................................39
      6.1. Privileges on Scheduling Inbox Collections ................39
           6.1.1. CALDAV:schedule-deliver Privilege ..................40
           6.1.2. CALDAV:schedule-deliver-invite Privilege ...........40
           6.1.3. CALDAV:schedule-deliver-reply Privilege ............40
           6.1.4. CALDAV:schedule-query-freebusy Privilege ...........40
      6.2. Privileges on Scheduling Outbox Collections ...............40
           6.2.1. CALDAV:schedule-send Privilege .....................41
           6.2.2. CALDAV:schedule-send-invite Privilege ..............41
           6.2.3. CALDAV:schedule-send-reply Privilege ...............41
           6.2.4. CALDAV:schedule-send-freebusy Privilege ............41
      6.3. Aggregation of Scheduling Privileges ......................42
        
           3.2.4. Additional Method Preconditions ....................24
                  3.2.4.1. CALDAV:unique-scheduling-object-resource
                           Precondition ..............................24
                  3.2.4.2. CALDAV:same-organizer-in-all-components
                           Precondition ..............................25
                  3.2.4.3. CALDAV:allowed-organizer-scheduling-
                              object-change Precondition .............25
                  3.2.4.4. CALDAV:allowed-attendee-scheduling-
                              object-change Precondition .............26
           3.2.5. DTSTAMP and SEQUENCE Properties ....................26
           3.2.6. Restrict Recurrence Instances Sent to "Attendees" ..27
           3.2.7. Forcing the Server to Send a Scheduling Message ....27
           3.2.8. "Attendee" Participation Status ....................28
           3.2.9. Schedule Status Values .............................29
           3.2.10. Avoiding Conflicts when Updating Scheduling Object
                   Resources .........................................31
                   3.2.10.1. PUT .....................................33
                   3.2.10.2. DELETE, COPY, or MOVE ...................33
   4. Processing Incoming Scheduling Messages ........................34
      4.1. Processing "Organizer" Requests, Additions, and
           Cancellations .............................................34
      4.2. Processing "Attendee" Replies .............................35
      4.3. Default Calendar Collection ...............................35
           4.3.1. Additional Method Preconditions ....................36
                  4.3.1.1. CALDAV:default-calendar-needed
                           Precondition ..............................36
                  4.3.1.2. CALDAV:valid-schedule-default-calendar-URL
                           Precondition ..............................36
   5. Request for Busy Time Information ..............................37
      5.1. Status Codes ..............................................38
      5.2. Additional Method Preconditions ...........................38
           5.2.1. CALDAV:valid-scheduling-message Precondition .......38
           5.2.2. CALDAV:valid-organizer Precondition ................39
   6. Scheduling Privileges ..........................................39
      6.1. Privileges on Scheduling Inbox Collections ................39
           6.1.1. CALDAV:schedule-deliver Privilege ..................40
           6.1.2. CALDAV:schedule-deliver-invite Privilege ...........40
           6.1.3. CALDAV:schedule-deliver-reply Privilege ............40
           6.1.4. CALDAV:schedule-query-freebusy Privilege ...........40
      6.2. Privileges on Scheduling Outbox Collections ...............40
           6.2.1. CALDAV:schedule-send Privilege .....................41
           6.2.2. CALDAV:schedule-send-invite Privilege ..............41
           6.2.3. CALDAV:schedule-send-reply Privilege ...............41
           6.2.4. CALDAV:schedule-send-freebusy Privilege ............41
      6.3. Aggregation of Scheduling Privileges ......................42
        
   7. Additional iCalendar Property Parameters .......................42
      7.1. Schedule Agent Parameter ..................................42
      7.2. Schedule Force Send Parameter .............................44
      7.3. Schedule Status Parameter .................................45
   8. Additional Message Header Fields ...............................46
      8.1. Schedule-Reply Request Header .............................46
      8.2. Schedule-Tag Response Header ..............................46
      8.3. If-Schedule-Tag-Match Request Header ......................47
   9. Additional WebDAV Properties ...................................47
      9.1. CALDAV:schedule-calendar-transp Property ..................47
      9.2. CALDAV:schedule-default-calendar-URL Property .............48
      9.3. CALDAV:schedule-tag Property ..............................49
   10. XML Element Definitions .......................................50
      10.1. CALDAV:schedule-response XML Element .....................50
      10.2. CALDAV:response XML Element ..............................50
      10.3. CALDAV:recipient XML Element .............................50
      10.4. CALDAV:request-status XML Element ........................51
   11. Security Considerations .......................................51
      11.1. Preventing Denial-of-Service Attacks .....................51
      11.2. Verifying Scheduling Operations ..........................52
      11.3. Verifying Busy Time Information Requests .................52
      11.4. Privacy Issues ...........................................53
      11.5. Mitigation of iTIP Threats ...............................53
   12. IANA Considerations ...........................................54
      12.1. Message Header Field Registrations .......................54
           12.1.1. Schedule-Reply ....................................54
           12.1.2. Schedule-Tag ......................................54
           12.1.3. If-Schedule-Tag-Match .............................54
      12.2. iCalendar Property Parameter Registrations ...............55
      12.3. iCalendar REQUEST-STATUS Value Registrations .............55
      12.4. Additional iCalendar Elements Registries .................55
           12.4.1. Schedule Agent Values Registry ....................56
           12.4.2. Schedule Force Send Values Registry ...............56
   13. Acknowledgements ..............................................56
   14. References ....................................................57
      14.1. Normative References .....................................57
      14.2. Informative References ...................................58
        
   7. Additional iCalendar Property Parameters .......................42
      7.1. Schedule Agent Parameter ..................................42
      7.2. Schedule Force Send Parameter .............................44
      7.3. Schedule Status Parameter .................................45
   8. Additional Message Header Fields ...............................46
      8.1. Schedule-Reply Request Header .............................46
      8.2. Schedule-Tag Response Header ..............................46
      8.3. If-Schedule-Tag-Match Request Header ......................47
   9. Additional WebDAV Properties ...................................47
      9.1. CALDAV:schedule-calendar-transp Property ..................47
      9.2. CALDAV:schedule-default-calendar-URL Property .............48
      9.3. CALDAV:schedule-tag Property ..............................49
   10. XML Element Definitions .......................................50
      10.1. CALDAV:schedule-response XML Element .....................50
      10.2. CALDAV:response XML Element ..............................50
      10.3. CALDAV:recipient XML Element .............................50
      10.4. CALDAV:request-status XML Element ........................51
   11. Security Considerations .......................................51
      11.1. Preventing Denial-of-Service Attacks .....................51
      11.2. Verifying Scheduling Operations ..........................52
      11.3. Verifying Busy Time Information Requests .................52
      11.4. Privacy Issues ...........................................53
      11.5. Mitigation of iTIP Threats ...............................53
   12. IANA Considerations ...........................................54
      12.1. Message Header Field Registrations .......................54
           12.1.1. Schedule-Reply ....................................54
           12.1.2. Schedule-Tag ......................................54
           12.1.3. If-Schedule-Tag-Match .............................54
      12.2. iCalendar Property Parameter Registrations ...............55
      12.3. iCalendar REQUEST-STATUS Value Registrations .............55
      12.4. Additional iCalendar Elements Registries .................55
           12.4.1. Schedule Agent Values Registry ....................56
           12.4.2. Schedule Force Send Values Registry ...............56
   13. Acknowledgements ..............................................56
   14. References ....................................................57
      14.1. Normative References .....................................57
      14.2. Informative References ...................................58
        
   Appendix A. Scheduling Privileges Summary .........................59
     A.1. Scheduling Inbox Privileges ................................59
     A.2. Scheduling Outbox Privileges ...............................60
   Appendix B. Example Scheduling Operations .........................60
     B.1. Example: "Organizer" Inviting Multiple "Attendees" .........61
     B.2. Example: "Attendee" Receiving an Invitation ................63
     B.3. Example: "Attendee" Replying to an Invitation ..............64
     B.4. Example: "Organizer" Receiving a Reply to an Invitation ....66
     B.5. Example: "Organizer" Requesting Busy Time Information ......69
     B.6. Example: User Attempting to Invite "Attendee" on
          Behalf of "Organizer" ......................................71
     B.7. Example: "Attendee" Declining an Instance of a
          Recurring Event ............................................72
     B.8. Example: "Attendee" Removing an Instance of a
          Recurring Event ............................................75
        
   Appendix A. Scheduling Privileges Summary .........................59
     A.1. Scheduling Inbox Privileges ................................59
     A.2. Scheduling Outbox Privileges ...............................60
   Appendix B. Example Scheduling Operations .........................60
     B.1. Example: "Organizer" Inviting Multiple "Attendees" .........61
     B.2. Example: "Attendee" Receiving an Invitation ................63
     B.3. Example: "Attendee" Replying to an Invitation ..............64
     B.4. Example: "Organizer" Receiving a Reply to an Invitation ....66
     B.5. Example: "Organizer" Requesting Busy Time Information ......69
     B.6. Example: User Attempting to Invite "Attendee" on
          Behalf of "Organizer" ......................................71
     B.7. Example: "Attendee" Declining an Instance of a
          Recurring Event ............................................72
     B.8. Example: "Attendee" Removing an Instance of a
          Recurring Event ............................................75
        
1. Introduction
1. 介绍

This document specifies extensions to the CalDAV "calendar-access" [RFC4791] feature to enable scheduling of iCalendar-based [RFC5545] calendar components between calendar users.

本文档指定了CalDAV“日历访问”[RFC4791]功能的扩展,以便在日历用户之间安排基于iCalendar的[RFC5545]日历组件。

This extension leverages the scheduling methods defined in the iCalendar Transport-independent Interoperability Protocol (iTIP) [RFC5546] to permit calendar users to perform scheduling operations such as schedule, reschedule, respond to scheduling request, or cancel calendar components, as well as search for busy time information. However, the following iTIP [RFC5546] features are not covered: publishing, countering, delegating, refreshing, and forwarding calendar components, as well as replacing the "Organizer" of a calendar component. It is expected that future extensions will be developed to address these.

此扩展利用iCalendar传输独立互操作性协议(iTIP)[RFC5546]中定义的调度方法,允许日历用户执行调度操作,如调度、重新调度、响应调度请求或取消日历组件,以及搜索繁忙时间信息。但是,以下iTIP[RFC5546]功能不包括:发布、计数、委派、刷新和转发日历组件,以及替换日历组件的“组织者”。预计未来将开发扩展以解决这些问题。

This specification defines a client/server scheduling protocol, where the server is made responsible for sending scheduling messages and processing incoming scheduling messages. The client operations of creating, modifying, or deleting a calendar component in a calendar are enough to trigger the server to deliver the necessary scheduling messages to the appropriate calendar users. This approach is sometimes referred to as "implicit scheduling".

本规范定义了客户机/服务器调度协议,其中服务器负责发送调度消息和处理传入的调度消息。在日历中创建、修改或删除日历组件的客户端操作足以触发服务器将必要的计划消息传递给相应的日历用户。这种方法有时被称为“隐式调度”。

This specification only addresses how scheduling occurs with users on a single system (i.e., scheduling between CalDAV servers, or some other calendaring and scheduling system, is not defined). However, this specification is compatible with servers being able to send or receive scheduling messages with "external" users (e.g., using the iCalendar Message-Based Interoperability Protocol (iMIP) [RFC6047]).

本规范仅说明如何在单个系统上与用户进行调度(即,未定义CalDAV服务器之间的调度,或某些其他日历和调度系统)。但是,本规范与能够与“外部”用户发送或接收调度消息的服务器兼容(例如,使用iCalendar基于消息的互操作性协议(iMIP)[RFC6047])。

Section 3 defines the automated "Scheduling Operations" that allow a client to store iCalendar data on a CalDAV server, with the server taking specific actions in response. One of three scheduling operations can take place -- "create", "modify", or "remove", based on the HTTP method used for the request -- in addition to a comparison between any existing and any new iCalendar data.

第3节定义了自动“调度操作”,该操作允许客户端将iCalendar数据存储在CalDAV服务器上,服务器将采取特定的响应操作。除了对现有和新iCalendar数据进行比较外,还可以根据请求使用的HTTP方法执行三个调度操作之一——“创建”、“修改”或“删除”。

Section 4 defines how the server processes scheduling messages sent as the result of a scheduling operation.

第4节定义了服务器如何处理作为调度操作结果发送的调度消息。

Section 5 defines how freebusy requests with an immediate response are accomplished.

第5节定义了如何完成具有即时响应的忙/闲请求。

Section 6 defines access control privileges for the scheduling operations defined in this specification.

第6节定义了本规范中定义的调度操作的访问控制权限。

For the majority of the following discussion, scheduling of events will be discussed. However, scheduling of to-dos is also fully supported by this specification.

在接下来的大部分讨论中,将讨论活动的日程安排。然而,本规范也完全支持对待办事项的调度。

This specification has been under development for a number of years, and most current implementations of CalDAV support it. With the publication of this document, it is expected that all new CalDAV implementations will support it by default. Interoperability tests have been performed regularly. Significant issues with incompatible CalDAV implementations are not anticipated.

该规范已经开发了很多年,CalDAV的大多数当前实现都支持它。随着本文档的发布,预计默认情况下所有新的CalDAV实现都将支持它。互操作性测试已定期进行。预计不存在与不兼容的CalDAV实现有关的重大问题。

1.1. Terminology
1.1. 术语

This specification reuses much of the same terminology as iCalendar [RFC5545], iTIP [RFC5546], WebDAV [RFC4918], and CalDAV [RFC4791]. Additional terms used by this specification are as follows:

本规范重用了与iCalendar[RFC5545]、iTIP[RFC5546]、WebDAV[RFC4918]和CalDAV[RFC4791]许多相同的术语。本规范使用的其他术语如下:

Scheduling object resource: A calendar object resource contained in a calendar collection for which the server will take care of sending scheduling messages on behalf of the owner of the calendar collection.

计划对象资源:包含在日历集合中的日历对象资源,服务器将负责代表该日历集合的所有者发送计划消息。

Organizer scheduling object resource: A scheduling object resource owned by the "Organizer".

组织者调度对象资源:“组织者”拥有的调度对象资源。

Attendee scheduling object resource: A scheduling object resource owned by an "Attendee".

与会者调度对象资源:“与会者”拥有的调度对象资源。

Scheduling operation: Add, change, or remove operations on a scheduling object resource for which the server will deliver scheduling messages to other calendar users.

计划操作:添加、更改或删除计划对象资源上的操作,服务器将为该资源向其他日历用户传递计划消息。

Scheduling message: A calendar object that describes a scheduling operation such as schedule, reschedule, reply, or cancel.

计划消息:描述计划操作(如计划、重新计划、回复或取消)的日历对象。

Scheduling Outbox collection: A resource at which busy time information requests are targeted.

计划发件箱收集:繁忙时间信息请求的目标资源。

Scheduling Inbox collection: A collection in which incoming scheduling messages are delivered.

计划收件箱集合:传递传入计划邮件的集合。

1.2. Notational Conventions
1.2. 符号约定

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照[RFC2119]中所述进行解释。

The Augmented BNF (ABNF) syntax used by this document to specify the format definition of new iCalendar elements is defined in [RFC5234].

本文档用于指定新iCalendar元素格式定义的扩充BNF(ABNF)语法在[RFC5234]中定义。

The ABNF syntax used by this document to specify the format definition of new message header fields to be used with the HTTP/1.1 protocol is described in Section 2.1 of [RFC2616]. Since this Augmented BNF uses the basic production rules provided in Section 2.2 of [RFC2616], these rules apply to this document as well.

[RFC2616]第2.1节描述了本文件用于指定HTTP/1.1协议中使用的新消息头字段格式定义的ABNF语法。由于此扩充BNF使用[RFC2616]第2.2节中提供的基本生产规则,因此这些规则也适用于本文件。

The term "protected" is used in the Conformance field of WebDAV property definitions as defined in Section 15 of [RFC4918].

术语“受保护”用于[RFC4918]第15节中定义的WebDAV属性定义的一致性字段。

Calendaring and scheduling roles are referred to in quoted-strings of text with the first character of each word in uppercase. For example, "Organizer" refers to a role of a calendar user within the scheduling protocol defined by [RFC5546].

日历和日程安排角色在带引号的文本字符串中引用,每个单词的第一个字符都是大写的。例如,“组织者”是指[RFC5546]定义的调度协议中日历用户的角色。

1.3. XML Namespaces and Processing
1.3. XML名称空间和处理

This document uses XML DTD fragments ([W3C.REC-xml-20081126], Section 3.2) as a purely notational convention. WebDAV request and response bodies cannot be validated by a DTD due to the specific extensibility rules defined in Section 17 of [RFC4918] and due to the fact that all XML elements defined by that specification use the XML namespace name "DAV:". In particular,

本文档使用XML DTD片段([W3C.REC-XML-20081126],第3.2节)作为纯粹的符号约定。由于[RFC4918]第17节中定义的特定扩展性规则以及该规范定义的所有XML元素都使用XML命名空间名称“DAV:”,DTD无法验证WebDAV请求和响应主体。特别地,

1. element names use the "DAV:" namespace,

1. 元素名称使用“DAV:”名称空间,

2. element ordering is irrelevant unless explicitly stated,

2. 除非明确说明,否则元素顺序无关,

3. extension elements (elements not already defined as valid child elements) can be added anywhere, except when explicitly stated otherwise, and

3. 扩展元素(尚未定义为有效子元素的元素)可以添加到任何位置,除非另有明确说明,并且

4. extension attributes (attributes not already defined as valid for this element) can be added anywhere, except when explicitly stated otherwise.

4. 扩展属性(尚未定义为此元素有效的属性)可以添加到任何位置,除非另有明确说明。

The XML elements specified in this document are defined in the "urn:ietf:params:xml:ns:caldav" XML namespace registered by CalDAV [RFC4791].

本文档中指定的XML元素在caldav[RFC4791]注册的“urn:ietf:params:XML:ns:caldav”XML命名空间中定义。

When XML element types in the namespaces "DAV:" and "urn:ietf:params:xml:ns:caldav" are referenced in this document outside of the context of an XML fragment, the strings "DAV:" and "CALDAV:" will be prefixed to the element types, respectively.

当本文档在XML片段的上下文之外引用名称空间“DAV:”和“urn:ietf:params:XML:ns:caldav”中的XML元素类型时,字符串“DAV:”和“caldav:”将分别作为元素类型的前缀。

This document inherits, and sometimes extends, DTD productions from Section 14 of [RFC4918].

本文档继承并有时扩展[RFC4918]第14节中的DTD产品。

Also note that some CalDAV XML element names are identical to WebDAV XML element names, though their namespace differs. Care needs to be taken not to confuse the two sets of names.

还请注意,一些CalDAV XML元素名称与WebDAV XML元素名称相同,尽管它们的命名空间不同。需要注意不要混淆这两组名称。

2. Scheduling Support
2. 调度支持

A server that supports the features described in this document is REQUIRED to support the CalDAV "calendar-access" [RFC4791] feature. Servers include "calendar-auto-schedule" as a field in the DAV response header from an OPTIONS request on any resource that supports any scheduling operations, properties, privileges, or methods.

支持本文档所述功能的服务器需要支持CalDAV“日历访问”[RFC4791]功能。服务器在支持任何调度操作、属性、权限或方法的任何资源上的选项请求的DAV响应头中包含“日历自动调度”字段。

This specification introduces new collection resource types that are used to manage scheduling object resources, and scheduling privileges (as per Section 6), as well as provide scheduling functionality. It is the server's responsibility to create these collection resources, and clients have no way to create or delete them.

本规范引入了新的集合资源类型,用于管理调度对象资源和调度权限(根据第6节),以及提供调度功能。创建这些集合资源是服务器的责任,客户端无法创建或删除它们。

2.1. Scheduling Outbox Collection
2.1. 计划发件箱收集

A scheduling Outbox collection is used as the target for busy time information requests, and to manage privileges that apply to outgoing scheduling requests.

调度发件箱集合用作繁忙时间信息请求的目标,并用于管理应用于传出调度请求的权限。

A scheduling Outbox collection MUST report the DAV:collection and CALDAV:schedule-outbox XML elements in the value of the DAV: resourcetype property. The element type declaration for CALDAV: schedule-outbox is

调度发件箱集合必须在DAV:resourcetype属性的值中报告DAV:collection和CALDAV:schedule发件箱XML元素。CALDAV:schedule发件箱的元素类型声明为

     <!ELEMENT schedule-outbox EMPTY>
        
     <!ELEMENT schedule-outbox EMPTY>
        

Example:

例子:

     <D:resourcetype xmlns:D="DAV:">
       <D:collection/>
       <C:schedule-outbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
     </D:resourcetype>
        
     <D:resourcetype xmlns:D="DAV:">
       <D:collection/>
       <C:schedule-outbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
     </D:resourcetype>
        

A scheduling Outbox collection MUST NOT be a child (at any depth) of a calendar collection resource.

计划发件箱集合不能是日历集合资源的子级(在任何深度)。

The following WebDAV properties specified in CalDAV "calendar-access" [RFC4791] MAY also be defined on scheduling Outbox collections and apply to scheduling messages submitted to the scheduling Outbox collection with the POST method:

CalDAV“calendar access”[RFC4791]中指定的以下WebDAV属性也可以在调度发件箱集合上定义,并应用于通过POST方法提交给调度发件箱集合的调度消息:

o CALDAV:supported-calendar-component-set

o CALDAV:支持的日历组件集

o CALDAV:supported-calendar-data

o CALDAV:支持的日历数据

o CALDAV:max-resource-size

o CALDAV:最大资源大小

o CALDAV:min-date-time

o CALDAV:最小日期时间

o CALDAV:max-date-time

o CALDAV:最大日期时间

o CALDAV:max-attendees-per-instance

o CALDAV:每个实例的最大与会者数

The use of child resources in a scheduling Outbox collection is reserved for future revisions or extensions of this specification.

计划发件箱集合中的子资源的使用保留给本规范的未来修订或扩展。

The following WebDAV property is defined on principal resources and used to locate the corresponding Outbox collection for the associated principal.

以下WebDAV属性是在主体资源上定义的,用于定位关联主体的相应发件箱集合。

2.1.1. CALDAV:schedule-outbox-URL Property
2.1.1. CALDAV:计划发件箱URL属性

Name: schedule-outbox-URL

名称:计划发件箱URL

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Purpose: Identify the URL of the scheduling Outbox collection owned by the associated principal resource.

目的:标识关联主体资源拥有的计划发件箱集合的URL。

Protected: This property MAY be protected.

受保护:此属性可能受保护。

PROPFIND behavior: This property SHOULD NOT be returned by a PROPFIND DAV:allprop request (as defined in Section 14.2 of [RFC4918]).

PROPFIND行为:PROPFIND DAV:allprop请求(如[RFC4918]第14.2节所定义)不应返回此属性。

COPY/MOVE behavior: This property value SHOULD be preserved in COPY and MOVE operations.

复制/移动行为:此属性值应在复制和移动操作中保留。

Description: This property is needed for a client to determine where the scheduling Outbox collection of the current user is located so that sending of scheduling messages can occur. If not present, then the associated calendar user is not enabled for the sending of scheduling messages on the server.

描述:客户端需要此属性来确定当前用户的计划发件箱集合的位置,以便发送计划消息。如果不存在,则不会启用关联的日历用户在服务器上发送计划消息。

Definition:

定义:

     <!ELEMENT schedule-outbox-URL (DAV:href)>
        
     <!ELEMENT schedule-outbox-URL (DAV:href)>
        
2.2. Scheduling Inbox Collection
2.2. 计划收件箱收集

A scheduling Inbox collection contains copies of incoming scheduling messages. These can be requests sent by an "Organizer", or replies sent by an "Attendee" in response to a request. The scheduling Inbox collection is also used to manage scheduling privileges.

计划收件箱集合包含传入计划邮件的副本。这些可以是“组织者”发送的请求,也可以是“与会者”响应请求发送的答复。计划收件箱集合还用于管理计划权限。

A scheduling Inbox collection MUST report the DAV:collection and CALDAV:schedule-inbox XML elements in the value of the DAV: resourcetype property. The element type declaration for CALDAV: schedule-inbox is

计划收件箱集合必须在DAV:resourcetype属性的值中报告DAV:collection和CALDAV:schedule收件箱XML元素。CALDAV:schedule收件箱的元素类型声明为

     <!ELEMENT schedule-inbox EMPTY>
        
     <!ELEMENT schedule-inbox EMPTY>
        

Example:

例子:

     <D:resourcetype xmlns:D="DAV:">
       <D:collection/>
       <C:schedule-inbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
     </D:resourcetype>
        
     <D:resourcetype xmlns:D="DAV:">
       <D:collection/>
       <C:schedule-inbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
     </D:resourcetype>
        

Scheduling Inbox collections MUST only contain calendar object resources that obey the restrictions specified in iTIP [RFC5546]. Consequently, scheduling Inbox collections MUST NOT contain any types of collection resources. Restrictions defined in Section 4.1 of CalDAV "calendar-access" [RFC4791] on calendar object resources contained in calendar collections (e.g., Unique Identifier ("UID") uniqueness) do not apply to calendar object resources contained in a scheduling Inbox collection. Thus, multiple calendar object resources contained in a scheduling Inbox collection can have the same "UID" property value (i.e., multiple scheduling messages for the same calendar component).

计划收件箱集合必须仅包含符合iTIP[RFC5546]中指定限制的日历对象资源。因此,计划收件箱集合不能包含任何类型的集合资源。CalDAV“calendar access”[RFC4791]第4.1节中定义的对日历集合中包含的日历对象资源的限制(例如,唯一标识符(“UID”)唯一性)不适用于计划收件箱集合中包含的日历对象资源。因此,计划收件箱集合中包含的多个日历对象资源可以具有相同的“UID”属性值(即,同一日历组件的多个计划消息)。

A scheduling Inbox collection MUST NOT be a child (at any depth) of a calendar collection resource.

计划收件箱集合不能是日历集合资源的子级(在任何深度)。

The following WebDAV properties specified in CalDAV "calendar-access" [RFC4791] MAY also be defined on scheduling Inbox collections and apply to scheduling messages delivered to the collection:

CalDAV“calendar access”[RFC4791]中指定的以下WebDAV属性也可以在计划收件箱集合时定义,并应用于计划发送到集合的邮件:

o CALDAV:supported-calendar-component-set

o CALDAV:支持的日历组件集

o CALDAV:supported-calendar-data

o CALDAV:支持的日历数据

o CALDAV:max-resource-size

o CALDAV:最大资源大小

o CALDAV:min-date-time

o CALDAV:最小日期时间

o CALDAV:max-date-time

o CALDAV:最大日期时间

o CALDAV:max-instances

o CALDAV:max实例

o CALDAV:max-attendees-per-instance

o CALDAV:每个实例的最大与会者数

o CALDAV:calendar-timezone

o 日历时区

The following WebDAV property is defined on principal resources and used to locate the corresponding Inbox collection for the associated principal.

以下WebDAV属性是在主体资源上定义的,用于定位关联主体的相应收件箱集合。

2.2.1. CALDAV:schedule-inbox-URL Property
2.2.1. CALDAV:计划收件箱URL属性

Name: schedule-inbox-URL

名称:计划收件箱URL

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Purpose: Identify the URL of the scheduling Inbox collection owned by the associated principal resource.

目的:标识关联主体资源拥有的计划收件箱集合的URL。

Protected: This property MAY be protected.

受保护:此属性可能受保护。

PROPFIND behavior: This property SHOULD NOT be returned by a PROPFIND DAV:allprop request (as defined in Section 14.2 of [RFC4918]).

PROPFIND行为:PROPFIND DAV:allprop请求(如[RFC4918]第14.2节所定义)不应返回此属性。

COPY/MOVE behavior: This property value SHOULD be preserved in COPY and MOVE operations.

复制/移动行为:此属性值应在复制和移动操作中保留。

Description: This property allows a client to determine where the scheduling Inbox collection of the current user is located so that processing of scheduling messages can occur. If not present, then the associated calendar user is not enabled for reception of scheduling messages on the server.

描述:此属性允许客户端确定当前用户的计划收件箱集合的位置,以便处理计划邮件。如果不存在,则关联的日历用户无法在服务器上接收计划消息。

Definition:

定义:

     <!ELEMENT schedule-inbox-URL (DAV:href)>
        
     <!ELEMENT schedule-inbox-URL (DAV:href)>
        
2.3. Calendaring Reports Extensions
2.3. 日历报告扩展

This specification extends the CALDAV:calendar-query and CALDAV: calendar-multiget REPORTs to return results for calendar object resources in scheduling Inbox collections.

此规范扩展了CALDAV:calendar查询和CALDAV:calendar multiget报告,以返回计划收件箱集合中日历对象资源的结果。

When a CALDAV:calendar-query REPORT includes a time-range query and targets a scheduling Inbox collection, if any calendar object resources contain "VEVENT" calendar components that do not include a "DTSTART" iCalendar property (as allowed by iTIP [RFC5546]) then such components MUST always match the time-range query test.

当CALDAV:calendar查询报告包含时间范围查询并以计划收件箱集合为目标时,如果任何日历对象资源包含不包含“DTSTART”iCalendar属性的“VEVENT”日历组件(iTIP[RFC5546]允许),则此类组件必须始终与时间范围查询测试匹配。

Note that the CALDAV:free-busy-query REPORT is not supported on scheduling Inbox collections.

请注意,计划收件箱集合时不支持CALDAV:free-busy查询报告。

2.4. Additional Principal Properties
2.4. 其他主要财产

This section defines new properties for WebDAV principal resources as defined in [RFC3744]. These properties are likely to be protected, but the server MAY allow them to be written by appropriate users.

本节定义了[RFC3744]中定义的WebDAV主体资源的新属性。这些属性可能受到保护,但服务器可能允许适当的用户编写它们。

2.4.1. CALDAV:calendar-user-address-set Property
2.4.1. CALDAV:日历用户地址集属性

Name: calendar-user-address-set

名称:日历用户地址集

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Purpose: Identify the calendar addresses of the associated principal resource.

目的:标识关联主体资源的日历地址。

Protected: This property MAY be protected.

受保护:此属性可能受保护。

PROPFIND behavior: This property SHOULD NOT be returned by a PROPFIND DAV:allprop request (as defined in Section 14.2 of [RFC4918]).

PROPFIND行为:PROPFIND DAV:allprop请求(如[RFC4918]第14.2节所定义)不应返回此属性。

COPY/MOVE behavior: This property value SHOULD be preserved in COPY and MOVE operations.

复制/移动行为:此属性值应在复制和移动操作中保留。

Description: Support for this property is REQUIRED. This property is needed to map calendar user addresses in iCalendar data to principal resources and their associated scheduling Inbox and Outbox collections. In the event that a user has no well-defined identifier for his calendar user address, the URI of his principal resource can be used. This property SHOULD be searchable using the DAV:principal-property-search REPORT. The DAV:principal-search-property-set REPORT SHOULD identify this property as such. If not present, then the associated calendar user is not enabled for scheduling on the server.

描述:需要对此属性的支持。需要此属性才能将iCalendar数据中的日历用户地址映射到主要资源及其关联的计划收件箱和发件箱集合。如果用户没有为其日历用户地址定义好的标识符,则可以使用其主要资源的URI。此属性应可使用DAV:principal属性搜索报告进行搜索。DAV:principal搜索属性集报告应识别此属性。如果不存在,则关联的日历用户无法在服务器上进行调度。

Definition:

定义:

     <!ELEMENT calendar-user-address-set (DAV:href*)>
        
     <!ELEMENT calendar-user-address-set (DAV:href*)>
        

Example:

例子:

     <C:calendar-user-address-set xmlns:D="DAV:"
         xmlns:C="urn:ietf:params:xml:ns:caldav">
       <D:href>mailto:bernard@example.com</D:href>
       <D:href>mailto:bernard.desruisseaux@example.com</D:href>
     </C:calendar-user-address-set>
        
     <C:calendar-user-address-set xmlns:D="DAV:"
         xmlns:C="urn:ietf:params:xml:ns:caldav">
       <D:href>mailto:bernard@example.com</D:href>
       <D:href>mailto:bernard.desruisseaux@example.com</D:href>
     </C:calendar-user-address-set>
        
2.4.2. CALDAV:calendar-user-type Property
2.4.2. CALDAV:日历用户类型属性

Name: calendar-user-type

名称:日历用户类型

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Purpose: Identifies the calendar user type of the associated principal resource.

目的:标识关联主体资源的日历用户类型。

Value: Same values allowed for the iCalendar "CUTYPE" property parameter defined in Section 3.2.3 of [RFC5545].

值:与[RFC5545]第3.2.3节中定义的iCalendar“CUTYPE”属性参数允许的值相同。

Protected: This property MAY be protected.

受保护:此属性可能受保护。

PROPFIND behavior: This property SHOULD NOT be returned by a PROPFIND DAV:allprop request (as defined in Section 14.2 of [RFC4918]).

PROPFIND行为:PROPFIND DAV:allprop请求(如[RFC4918]第14.2节所定义)不应返回此属性。

COPY/MOVE behavior: This property value SHOULD be preserved in COPY and MOVE operations.

复制/移动行为:此属性值应在复制和移动操作中保留。

Description: Clients can query principal resources in order to look up "Attendees" available on the server. When doing this, it is useful to know, or restrict the query to, certain types of calendar users (e.g., only search for "people", or only search for "rooms"). This property MAY be defined on principal resources to indicate the type of calendar user associated with the principal resource. Its value is the same as the iCalendar "CUTYPE" property parameter that can be used on "ATTENDEE" properties. This property SHOULD be searchable using the DAV:principal-property-search REPORT. The DAV:principal-search-property-set REPORT SHOULD identify this property as such.

描述:客户端可以查询主体资源以查找服务器上可用的“与会者”。进行此操作时,了解特定类型的日历用户(例如,仅搜索“人员”,或仅搜索“房间”)或将查询限制为特定类型的日历用户是非常有用的。可以在主体资源上定义此属性,以指示与主体资源关联的日历用户的类型。其值与可用于“ATTENDEE”属性的iCalendar“CUTYPE”属性参数相同。此属性应可使用DAV:principal属性搜索报告进行搜索。DAV:principal搜索属性集报告应识别此属性。

Definition:

定义:

     <!ELEMENT calendar-user-type (#PCDATA)>
        
     <!ELEMENT calendar-user-type (#PCDATA)>
        

Example:

例子:

     <C:calendar-user-type
         xmlns:C="urn:ietf:params:xml:ns:caldav">INDIVIDUAL<
     /C:calendar-user-type>
        
     <C:calendar-user-type
         xmlns:C="urn:ietf:params:xml:ns:caldav">INDIVIDUAL<
     /C:calendar-user-type>
        
3. Scheduling Operations
3. 调度操作

When a calendar object resource is created, modified, or removed from a calendar collection, the server examines the calendar data and checks to see whether the data represents a scheduling object resource. If it does, the server will automatically attempt to deliver a scheduling message to the appropriate calendar users. Several types of scheduling operations can occur in this case, equivalent to iTIP "REQUEST", "REPLY", "CANCEL", and "ADD" operations.

在创建、修改日历对象资源或从日历集合中删除日历对象资源时,服务器将检查日历数据并检查这些数据是否表示计划对象资源。如果确实如此,服务器将自动尝试向相应的日历用户发送调度消息。在这种情况下,可能会发生几种类型的调度操作,相当于iTIP的“请求”、“回复”、“取消”和“添加”操作。

3.1. Identifying Scheduling Object Resources
3.1. 确定调度对象资源

Calendar object resources on which the server performs scheduling operations are referred to as scheduling object resources. There are two types of scheduling object resources: organizer scheduling object resources, and attendee scheduling object resources.

服务器对其执行调度操作的日历对象资源称为调度对象资源。有两种类型的调度对象资源:组织者调度对象资源和与会者调度对象资源。

A calendar object resource is considered to be a valid organizer scheduling object resource if the "ORGANIZER" iCalendar property is present and set in all the calendar components to a value that matches one of the calendar user addresses of the owner of the calendar collection.

如果“organizer”iCalendar属性存在并在所有日历组件中设置为与日历集合所有者的一个日历用户地址匹配的值,则日历对象资源被视为有效的组织者计划对象资源。

A calendar object resource is considered to be a valid attendee scheduling object resource if the "ORGANIZER" iCalendar property is present and set in all the calendar components to the same value and doesn't match one of the calendar user addresses of the owner of the calendar collection, and if at least one of the "ATTENDEE" iCalendar property values matches one of the calendar user addresses of the owner of the calendar collection.

如果“组织者”iCalendar属性存在并在所有日历组件中设置为相同的值,并且与日历集合所有者的一个日历用户地址不匹配,并且至少有一个“与会者”,则日历对象资源被视为有效的与会者排程对象资源iCalendar属性值与日历集合所有者的一个日历用户地址匹配。

The creation of attendee scheduling object resources is typically done by the server, with the resource being created in an appropriate calendar collection (see Section 4.3).

与会者日程安排对象资源的创建通常由服务器完成,并在适当的日历集合中创建资源(请参见第4.3节)。

3.2. Handling Scheduling Object Resources
3.2. 处理调度对象资源

The server's behavior when processing a scheduling object resource depends on whether it is owned by the "Organizer" or an "Attendee" specified in the calendar data.

服务器在处理调度对象资源时的行为取决于它是由日历数据中指定的“组织者”还是“与会者”所有。

3.2.1. Organizer Scheduling Object Resources
3.2.1. 组织者调度对象资源

An "Organizer" can create, modify, or remove a scheduling object resource, subject to access privileges, preconditions, and the restrictions defined in Section 4.1 of [RFC4791]. These operations are each described next, and how they are invoked via HTTP requests is described in Section 3.2.3.

“组织者”可以根据访问权限、前提条件和[RFC4791]第4.1节中定义的限制,创建、修改或删除调度对象资源。下面将分别介绍这些操作,第3.2.3节将介绍如何通过HTTP请求调用这些操作。

The "Organizer" of a calendar component can also be an "Attendee" of that calendar component. In such cases, the server MUST NOT send a scheduling message to the "Attendee" that matches the "Organizer".

日历组件的“组织者”也可以是该日历组件的“与会者”。在这种情况下,服务器不得向“与会者”发送与“组织者”匹配的日程安排消息。

The server SHOULD reject any attempt to set the "PARTSTAT" iCalendar property parameter value of the "ATTENDEE" iCalendar property of other users in the calendar object resource to a value other than "NEEDS-ACTION" if the "SCHEDULE-AGENT" property parameter value is not present or set to the value "SERVER".

如果“SCHEDULE-AGENT”属性参数值不存在或未设置为值“server”,则服务器应拒绝将日历对象资源中其他用户的“ATTENDEE”iCalendar属性的“PARTSTAT”iCalendar属性参数值设置为“NEEDS-ACTION”以外的值的任何尝试。

The server MAY reject attempts to create a scheduling object resource that specifies a "UID" property value already specified in a scheduling object resource contained in another calendar collection of the "Organizer".

服务器可能会拒绝尝试创建指定“UID”属性值的调度对象资源,该属性值已在“组织者”的另一个日历集合中包含的调度对象资源中指定。

3.2.1.1. Create
3.2.1.1. 创造

When an "Organizer" creates a scheduling object resource, the server MUST inspect each "ATTENDEE" property to determine whether to send a scheduling message. The table below indicates the appropriate iTIP method used by the server, taking into account any "SCHEDULE-AGENT" property parameter (see Section 7.1) specified on each "ATTENDEE" property.

当“组织者”创建调度对象资源时,服务器必须检查每个“与会者”属性,以确定是否发送调度消息。下表说明了服务器使用的适当iTIP方法,并考虑了在每个“ATTENDEE”属性上指定的任何“SCHEDULE-AGENT”属性参数(参见第7.1节)。

                    +------------------+-------------+
                    | SCHEDULE-AGENT   | iTIP METHOD |
                    +------------------+-------------+
                    | SERVER (default) | REQUEST     |
                    |                  |             |
                    | CLIENT           | --          |
                    |                  |             |
                    | NONE             | --          |
                    +------------------+-------------+
        
                    +------------------+-------------+
                    | SCHEDULE-AGENT   | iTIP METHOD |
                    +------------------+-------------+
                    | SERVER (default) | REQUEST     |
                    |                  |             |
                    | CLIENT           | --          |
                    |                  |             |
                    | NONE             | --          |
                    +------------------+-------------+
        

"SCHEDULE-STATUS" iCalendar property parameters are added or changed on "ATTENDEE" iCalendar properties in the scheduling object resource being created as described in Section 7.3, with the value set as described in Section 3.2.9. This will result in the created calendar object resource differing from the calendar data sent in the HTTP request. As a result, clients MAY reload the calendar data from the server in order to update to the new server-generated state information.

“SCHEDULE-STATUS”iCalendar属性参数在第7.3节所述创建的调度对象资源中的“ATTENDEE”iCalendar属性上添加或更改,其值设置如第3.2.9节所述。这将导致创建的日历对象资源与HTTP请求中发送的日历数据不同。因此,客户端可能会从服务器重新加载日历数据,以便更新到新的服务器生成的状态信息。

The server MUST add a "SCHEDULE-STATUS" iCalendar property parameter (see Section 7.3) to the "ATTENDEE" iCalendar property in the scheduling object resource being created, and set its value as described in Section 3.2.9. This will result in the created calendar object resource differing from the calendar data sent in the HTTP request. As a result, clients MAY reload the calendar data from the server in order to update to the new server-generated state information. Servers MUST NOT set the "SCHEDULE-STATUS" property parameter on the "ATTENDEE" property of "Attendees" for which it did not attempt to deliver a scheduling message.

服务器必须将“SCHEDULE-STATUS”iCalendar属性参数(参见第7.3节)添加到正在创建的调度对象资源中的“ATTENDEE”iCalendar属性中,并按照第3.2.9节中的说明设置其值。这将导致创建的日历对象资源与HTTP请求中发送的日历数据不同。因此,客户端可能会从服务器重新加载日历数据,以便更新到新的服务器生成的状态信息。服务器不得在“Attendes”的“ATTENDEE”属性上设置“SCHEDULE-STATUS”属性参数,因为它没有尝试为其传递计划消息。

The server MUST return an error with the CALDAV:allowed-organizer-scheduling-object-change precondition code (Section 3.2.4.3) when the "Organizer" attempts to change the iCalendar data in a manner that is forbidden.

当“组织者”试图以禁止的方式更改iCalendar数据时,服务器必须返回CALDAV:allowed organizer scheduling object change Premission code(第3.2.4.3节)错误。

3.2.1.2. Modify
3.2.1.2. 修改

When an "Organizer" modifies a scheduling object resource, the server MUST inspect each "ATTENDEE" property in both the original and modified iCalendar data on a per-instance basis to determine whether to send a scheduling message. The table below indicates the appropriate iTIP method used by the server, taking into account any "SCHEDULE-AGENT" property parameter (see Section 7.1) specified on each "ATTENDEE" property. The values "SERVER", "CLIENT", and "NONE" in the top and left titles of the table refer to the "SCHEDULE-AGENT" parameter value of the "ATTENDEE" property, and the values "<Absent>" and "<Removed>" are used to cover the cases where the "ATTENDEE" property is not present (Original) or is being removed (Modified).

当“组织者”修改调度对象资源时,服务器必须按实例检查原始和修改的iCalendar数据中的每个“ATTENDEE”属性,以确定是否发送调度消息。下表说明了服务器使用的适当iTIP方法,并考虑了在每个“ATTENDEE”属性上指定的任何“SCHEDULE-AGENT”属性参数(参见第7.1节)。表格顶部和左侧标题中的值“服务器”、“客户端”和“无”指的是“ATTENDEE”属性的“SCHEDULE-AGENT”参数值,“缺席”和“<Removed>”用于涵盖“ATTENDEE”属性不存在(原始)或正在删除(修改)的情况。

   +---------------+-----------------------------------------------+
   |               |                   Modified                    |
   |               +-----------+-----------+-----------+-----------+
   |               | <Removed> | SERVER    | CLIENT    | NONE      |
   |               |           | (default) |           |           |
   +===+===========+===========+===========+===========+===========+
   |   | <Absent>  |  --       | REQUEST / | --        | --        |
   | O |           |           | ADD       |           |           |
   | r +-----------+-----------+-----------+-----------+-----------+
   | i | SERVER    |  CANCEL   | REQUEST   | CANCEL    | CANCEL    |
   | g | (default) |           |           |           |           |
   | i +-----------+-----------+-----------+-----------+-----------+
   | n | CLIENT    |  --       | REQUEST / | --        | --        |
   | a |           |           | ADD       |           |           |
   | l +-----------+-----------+-----------+-----------+-----------+
   |   | NONE      |  --       | REQUEST / | --        | --        |
   |   |           |           | ADD       |           |           |
   +---+-----------+-----------+-----------+-----------+-----------+
        
   +---------------+-----------------------------------------------+
   |               |                   Modified                    |
   |               +-----------+-----------+-----------+-----------+
   |               | <Removed> | SERVER    | CLIENT    | NONE      |
   |               |           | (default) |           |           |
   +===+===========+===========+===========+===========+===========+
   |   | <Absent>  |  --       | REQUEST / | --        | --        |
   | O |           |           | ADD       |           |           |
   | r +-----------+-----------+-----------+-----------+-----------+
   | i | SERVER    |  CANCEL   | REQUEST   | CANCEL    | CANCEL    |
   | g | (default) |           |           |           |           |
   | i +-----------+-----------+-----------+-----------+-----------+
   | n | CLIENT    |  --       | REQUEST / | --        | --        |
   | a |           |           | ADD       |           |           |
   | l +-----------+-----------+-----------+-----------+-----------+
   |   | NONE      |  --       | REQUEST / | --        | --        |
   |   |           |           | ADD       |           |           |
   +---+-----------+-----------+-----------+-----------+-----------+
        

"SCHEDULE-STATUS" iCalendar property parameters are added or changed on "ATTENDEE" iCalendar properties in the scheduling object resource being modified as described in Section 7.3, with the value set as described in Section 3.2.9. This will result in the created calendar object resource differing from the calendar data sent in the HTTP request. As a result, clients MAY reload the calendar data from the server in order to update to the new server-generated state information.

“SCHEDULE-STATUS”iCalendar属性参数是按照第7.3节所述在正在修改的调度对象资源中的“ATTENDEE”iCalendar属性上添加或更改的,其值设置如第3.2.9节所述。这将导致创建的日历对象资源与HTTP请求中发送的日历数据不同。因此,客户端可能会从服务器重新加载日历数据,以便更新到新的服务器生成的状态信息。

The server MUST return an error with the CALDAV:allowed-organizer-scheduling-object-change precondition code (Section 3.2.4.3) when the "Organizer" attempts to change the iCalendar data in a manner that is forbidden.

当“组织者”试图以禁止的方式更改iCalendar数据时,服务器必须返回CALDAV:allowed organizer scheduling object change Premission code(第3.2.4.3节)错误。

3.2.1.3. Remove
3.2.1.3. 去除

When an "Organizer" removes a scheduling object resource, the server MUST inspect each "ATTENDEE" property to determine whether to send a scheduling message. The table below indicates the appropriate iTIP method used by the server, taking into account any "SCHEDULE-AGENT" property parameter (see Section 7.1) specified on each "ATTENDEE" property.

当“组织者”删除计划对象资源时,服务器必须检查每个“与会者”属性,以确定是否发送计划消息。下表说明了服务器使用的适当iTIP方法,并考虑了在每个“ATTENDEE”属性上指定的任何“SCHEDULE-AGENT”属性参数(参见第7.1节)。

                    +------------------+-------------+
                    | SCHEDULE-AGENT   | iTIP METHOD |
                    +------------------+-------------+
                    | SERVER (default) | CANCEL      |
                    |                  |             |
                    | CLIENT           | --          |
                    |                  |             |
                    | NONE             | --          |
                    +------------------+-------------+
        
                    +------------------+-------------+
                    | SCHEDULE-AGENT   | iTIP METHOD |
                    +------------------+-------------+
                    | SERVER (default) | CANCEL      |
                    |                  |             |
                    | CLIENT           | --          |
                    |                  |             |
                    | NONE             | --          |
                    +------------------+-------------+
        
3.2.2. Attendee Scheduling Object Resources
3.2.2. 与会者调度对象资源

An "Attendee" can create, modify, or remove a scheduling object resource. These operations are each described next, and how they are invoked via HTTP requests is described in Section 3.2.3.

“与会者”可以创建、修改或删除计划对象资源。下面将分别介绍这些操作,第3.2.3节将介绍如何通过HTTP请求调用这些操作。

3.2.2.1. Allowed "Attendee" Changes
3.2.2.1. 允许的“与会者”更改

"Attendees" are allowed to make some changes to a scheduling object resource, though key properties such as start time, end time, location, and summary are typically under the control of the "Organizer".

允许“与会者”对调度对象资源进行某些更改,但关键属性(如开始时间、结束时间、位置和摘要)通常由“组织者”控制。

Servers MUST allow "Attendees" to make the following iCalendar data changes, subject to other restrictions, such as access privileges and preconditions:

服务器必须允许“与会者”根据其他限制(如访问权限和先决条件)进行以下iCalendar数据更改:

1. change their own "PARTSTAT" iCalendar property parameter value.

1. 更改自己的“PARTSTAT”iCalendar属性参数值。

2. add, modify, or remove any "TRANSP" iCalendar properties.

2. 添加、修改或删除任何“TRANSP”iCalendar属性。

3. add, modify, or remove any "PERCENT-COMPLETE" iCalendar properties.

3. 添加、修改或删除任何“完成百分比”iCalendar属性。

4. add, modify, or remove any "COMPLETED" iCalendar properties.

4. 添加、修改或删除任何“已完成”iCalendar属性。

5. add, modify, or remove any "VALARM" iCalendar components.

5. 添加、修改或删除任何“VALARM”iCalendar组件。

6. add, modify, or remove the "CALSCALE" iCalendar property within the top-level "VCALENDAR" component.

6. 在顶级“VCALENDAR”组件中添加、修改或删除“CALSCALE”iCalendar属性。

7. modify the "PRODID" iCalendar property within the top-level "VCALENDAR" component.

7. 在顶级“VCALENDAR”组件中修改“PRODID”iCalendar属性。

8. add "EXDATE" iCalendar properties and possibly remove components for overridden recurrence instances.

8. 添加“EXDATE”iCalendar属性,并可能删除重写的重复实例的组件。

9. add, modify, or remove any "CREATED", "DTSTAMP", and "LAST-MODIFIED" iCalendar properties.

9. 添加、修改或删除任何“已创建”、“DTSTAMP”和“上次修改”iCalendar属性。

10. add, modify, or remove "SCHEDULE-STATUS" iCalendar property parameters on "ATTENDEE" properties that have a "SCHEDULE-AGENT" parameter set to "CLIENT".

10. 在“与会者”属性上添加、修改或删除“SCHEDULE-STATUS”iCalendar属性参数,这些属性的“SCHEDULE-AGENT”参数设置为“CLIENT”。

11. add new components to represent overridden recurrence instances, provided the only changes to the recurrence instance follow the rules above.

11. 添加新组件以表示重写的重复实例,前提是重复实例的唯一更改遵循上述规则。

The server MUST return an error with the CALDAV:allowed-attendee-scheduling-object-change precondition code (Section 3.2.4.4) when the "Attendee" attempts to change the iCalendar data in a manner forbidden by the server.

当“与会者”试图以服务器禁止的方式更改iCalendar数据时,服务器必须返回CALDAV:allowed attendee scheduling object change Premission code(第3.2.4.4节)错误。

3.2.2.2. Create
3.2.2.2. 创造

Typically, an "Attendee" does not create scheduling object resources, as scheduling messages delivered to him on the server are automatically processed by the server and placed on one of his calendars (see Section 4). However, in some cases, a scheduling message can get delivered directly to the client (e.g., via email [RFC6047]), and the "Attendee" might wish to store that on the server. In that case, the client creates a scheduling object resource in a calendar belonging to the "Attendee". It can then set the "SCHEDULE-AGENT" iCalendar property parameter on all "ORGANIZER" iCalendar properties in the resource to determine how the server treats the resource. The value of the "SCHEDULE-AGENT" iCalendar property parameter on all "ORGANIZER" iCalendar properties MUST be the same.

通常,“与会者”不会创建日程安排对象资源,因为服务器会自动处理在服务器上发送给他的日程安排消息,并将其放置在日历上(请参见第4节)。但是,在某些情况下,调度消息可以直接发送到客户端(例如,通过电子邮件[RFC6047]),并且“与会者”可能希望将其存储在服务器上。在这种情况下,客户端将在属于“与会者”的日历中创建一个调度对象资源。然后,它可以在资源中的所有“组织者”iCalendar属性上设置“SCHEDULE-AGENT”iCalendar属性参数,以确定服务器如何处理资源。所有“组织者”iCalendar属性上的“SCHEDULE-AGENT”iCalendar属性参数的值必须相同。

   +----------------+--------------------------------------------------+
   | SCHEDULE-AGENT | Action                                           |
   +----------------+--------------------------------------------------+
   | SERVER         | The server will attempt to process changes to    |
   | (default)      | the resource using the normal rules for attendee |
   |                | scheduling object resources.                     |
   |                |                                                  |
   | CLIENT         | The server does no special processing of the     |
   |                | resource.  The client is assumed to be handling  |
   |                | "Attendee" replies, etc.                         |
   |                |                                                  |
   | NONE           | The server does no special processing of the     |
   |                | resource.                                        |
   +----------------+--------------------------------------------------+
        
   +----------------+--------------------------------------------------+
   | SCHEDULE-AGENT | Action                                           |
   +----------------+--------------------------------------------------+
   | SERVER         | The server will attempt to process changes to    |
   | (default)      | the resource using the normal rules for attendee |
   |                | scheduling object resources.                     |
   |                |                                                  |
   | CLIENT         | The server does no special processing of the     |
   |                | resource.  The client is assumed to be handling  |
   |                | "Attendee" replies, etc.                         |
   |                |                                                  |
   | NONE           | The server does no special processing of the     |
   |                | resource.                                        |
   +----------------+--------------------------------------------------+
        

"SCHEDULE-STATUS" iCalendar property parameters are added or changed on "ORGANIZER" iCalendar properties in the scheduling object resource being created as described in Section 7.3, with the value set as described in Section 3.2.9.

“SCHEDULE-STATUS”iCalendar属性参数在第7.3节所述创建的调度对象资源中的“ORGANIZER”iCalendar属性上添加或更改,其值设置如第3.2.9节所述。

3.2.2.3. Modify
3.2.2.3. 修改

When a scheduling object resource is modified by an "Attendee", the server's behavior depends on the value of the "SCHEDULE-AGENT" iCalendar property parameter on the "ORGANIZER" iCalendar properties:

当“与会者”修改调度对象资源时,服务器的行为取决于“组织者”iCalendar属性上“SCHEDULE-AGENT”iCalendar属性参数的值:

   +----------------+--------------------------------------------------+
   | SCHEDULE-AGENT | Action                                           |
   +----------------+--------------------------------------------------+
   | SERVER         | The server will attempt to process the update    |
   | (default)      | using the behavior listed below.                 |
   |                |                                                  |
   | CLIENT         | The server does no special processing of the     |
   |                | resource.  The client is assumed to be handling  |
   |                | any "Attendee" replies, etc.                     |
   |                |                                                  |
   | NONE           | The server does no special processing of the     |
   |                | resource.                                        |
   +----------------+--------------------------------------------------+
        
   +----------------+--------------------------------------------------+
   | SCHEDULE-AGENT | Action                                           |
   +----------------+--------------------------------------------------+
   | SERVER         | The server will attempt to process the update    |
   | (default)      | using the behavior listed below.                 |
   |                |                                                  |
   | CLIENT         | The server does no special processing of the     |
   |                | resource.  The client is assumed to be handling  |
   |                | any "Attendee" replies, etc.                     |
   |                |                                                  |
   | NONE           | The server does no special processing of the     |
   |                | resource.                                        |
   +----------------+--------------------------------------------------+
        

The server will inspect the changes by comparing the new scheduling object resource with the existing scheduling object resource.

服务器将通过比较新的调度对象资源与现有调度对象资源来检查更改。

If the "Attendee" changes one or more "PARTSTAT" iCalendar property values on any component, or adds an overridden component with a changed "PARTSTAT" property, then the server MUST deliver an iTIP "REPLY" scheduling message to the "Organizer" to indicate the new participation status of the "Attendee".

如果“Attendee”更改了任何组件上的一个或多个“PARTSTAT”iCalendar属性值,或添加了具有更改的“PARTSTAT”属性的覆盖组件,则服务器必须向“Organizer”发送iTIP“REPLY”计划消息,以指示“Attendee”的新参与状态。

If the "Attendee" adds an "EXDATE" property value to effectively remove a recurrence instance, the server MUST deliver an iTIP "REPLY" scheduling message to the "Organizer" to indicate that the "Attendee" has declined the instance.

如果“与会者”添加了“EXDATE”属性值以有效删除重复实例,则服务器必须向“组织者”发送iTIP“REPLY”计划消息,以指示“与会者”已拒绝该实例。

"SCHEDULE-STATUS" iCalendar property parameters are added or changed on "ORGANIZER" iCalendar properties in the scheduling object resource being modified as described in Section 7.3, with the value set as described in Section 3.2.9. This will result in the updated calendar object resource differing from the calendar data sent in the HTTP request. As a result, clients MAY reload the calendar data from the server in order to update to the new server-generated state information.

“SCHEDULE-STATUS”iCalendar属性参数是按照第7.3节所述在正在修改的调度对象资源中的“ORGANIZER”iCalendar属性上添加或更改的,其值设置如第3.2.9节所述。这将导致更新的日历对象资源与HTTP请求中发送的日历数据不同。因此,客户端可能会从服务器重新加载日历数据,以便更新到新的服务器生成的状态信息。

3.2.2.4. Remove
3.2.2.4. 去除

When a scheduling object resource is removed by an "Attendee", the server's behavior depends on the value of the "SCHEDULE-AGENT" iCalendar property parameter on the "ORGANIZER" iCalendar properties:

当“与会者”删除调度对象资源时,服务器的行为取决于“组织者”iCalendar属性上“SCHEDULE-AGENT”iCalendar属性参数的值:

   +----------------+--------------------------------------------------+
   | SCHEDULE-AGENT | Action                                           |
   +----------------+--------------------------------------------------+
   | SERVER         | The server will attempt to process the removal,  |
   | (default)      | taking into account any "Schedule-Reply" request |
   |                | header as per Section 8.1.                       |
   |                |                                                  |
   | CLIENT         | The server does no special processing of the     |
   |                | resource.  The client is assumed to be handling  |
   |                | any "Attendee" replies, etc.                     |
   |                |                                                  |
   | NONE           | The server does no special processing of the     |
   |                | resource.                                        |
   +----------------+--------------------------------------------------+
        
   +----------------+--------------------------------------------------+
   | SCHEDULE-AGENT | Action                                           |
   +----------------+--------------------------------------------------+
   | SERVER         | The server will attempt to process the removal,  |
   | (default)      | taking into account any "Schedule-Reply" request |
   |                | header as per Section 8.1.                       |
   |                |                                                  |
   | CLIENT         | The server does no special processing of the     |
   |                | resource.  The client is assumed to be handling  |
   |                | any "Attendee" replies, etc.                     |
   |                |                                                  |
   | NONE           | The server does no special processing of the     |
   |                | resource.                                        |
   +----------------+--------------------------------------------------+
        
3.2.3. HTTP Methods
3.2.3. HTTP方法

This section describes how the use of various HTTP [RFC2616] and WebDAV [RFC4918] methods on a scheduling object resource will cause a create, modify, or remove operation on that resource as described above. The use of these methods is subject to the restrictions in [RFC4791], in addition to what is described below.

本节描述了在调度对象资源上使用各种HTTP[RFC2616]和WebDAV[RFC4918]方法将如何在该资源上执行如上所述的创建、修改或删除操作。除下文所述外,这些方法的使用受[RFC4791]中的限制。

3.2.3.1. PUT
3.2.3.1. 放

When the server receives a PUT method request, it MUST execute the following operations, provided all appropriate preconditions are met:

当服务器收到PUT方法请求时,如果满足所有适当的先决条件,它必须执行以下操作:

   +------------------------+--------------------------+---------------+
   | Existing Destination   | Resulting Destination    | Server        |
   | Resource               | Resource                 | Operation     |
   +------------------------+--------------------------+---------------+
   | None                   | Calendar object resource | None          |
   |                        |                          |               |
   | None                   | Scheduling object        | Create        |
   |                        | resource                 |               |
   |                        |                          |               |
   | Calendar object        | Calendar object resource | None          |
   | resource               |                          |               |
   |                        |                          |               |
   | Calendar object        | Scheduling object        | Create        |
   | resource               | resource                 |               |
   | Scheduling object      | Calendar object resource | Remove        |
   | resource               |                          |               |
   |                        |                          |               |
   | Scheduling object      | Scheduling object        | Modify        |
   | resource               | resource                 |               |
   +------------------------+--------------------------+---------------+
        
   +------------------------+--------------------------+---------------+
   | Existing Destination   | Resulting Destination    | Server        |
   | Resource               | Resource                 | Operation     |
   +------------------------+--------------------------+---------------+
   | None                   | Calendar object resource | None          |
   |                        |                          |               |
   | None                   | Scheduling object        | Create        |
   |                        | resource                 |               |
   |                        |                          |               |
   | Calendar object        | Calendar object resource | None          |
   | resource               |                          |               |
   |                        |                          |               |
   | Calendar object        | Scheduling object        | Create        |
   | resource               | resource                 |               |
   | Scheduling object      | Calendar object resource | Remove        |
   | resource               |                          |               |
   |                        |                          |               |
   | Scheduling object      | Scheduling object        | Modify        |
   | resource               | resource                 |               |
   +------------------------+--------------------------+---------------+
        
3.2.3.2. DELETE
3.2.3.2. 删去

When the server receives a DELETE method request targeted at a scheduling object resource, it MUST execute the Remove operation.

当服务器收到针对调度对象资源的删除方法请求时,它必须执行删除操作。

When the server receives a DELETE method request targeted at a calendar collection, it MUST execute the Remove operation on all scheduling object resources contained in the calendar collection.

当服务器收到针对日历集合的删除方法请求时,它必须对日历集合中包含的所有计划对象资源执行删除操作。

3.2.3.3. COPY
3.2.3.3. 复制

When the server receives a COPY method request, it MUST execute the following operations based on the source and destination collections in the request:

当服务器收到复制方法请求时,它必须根据请求中的源集合和目标集合执行以下操作:

   +-----------------------+------------------------+------------------+
   | Source Collection     | Destination Collection | Server Operation |
   +-----------------------+------------------------+------------------+
   | Non-calendar          | Non-calendar           | None             |
   | collection            | collection             |                  |
   |                       |                        |                  |
   | Non-calendar          | Calendar collection    | (1)              |
   | collection            |                        |                  |
   |                       |                        |                  |
   | Calendar collection   | Non-calendar           | None             |
   |                       | collection             |                  |
   |                       |                        |                  |
   | Calendar collection   | Calendar collection    | (2)              |
   +-----------------------+------------------------+------------------+
        
   +-----------------------+------------------------+------------------+
   | Source Collection     | Destination Collection | Server Operation |
   +-----------------------+------------------------+------------------+
   | Non-calendar          | Non-calendar           | None             |
   | collection            | collection             |                  |
   |                       |                        |                  |
   | Non-calendar          | Calendar collection    | (1)              |
   | collection            |                        |                  |
   |                       |                        |                  |
   | Calendar collection   | Non-calendar           | None             |
   |                       | collection             |                  |
   |                       |                        |                  |
   | Calendar collection   | Calendar collection    | (2)              |
   +-----------------------+------------------------+------------------+
        

Note (1): The rules in Section 3.2.3.1 are applied for the destination of the COPY request.

注(1):第3.2.3.1节中的规则适用于复制请求的目的地。

Note (2): The server MAY reject this as per Section 3.2.4.1; otherwise, None.

注(2):服务器可根据第3.2.4.1节拒绝此项要求;否则就没有了。

The behavior of a COPY method request on a calendar collection is undefined.

日历集合上复制方法请求的行为未定义。

3.2.3.4. MOVE
3.2.3.4. 移动

When the server receives a MOVE method request, it MUST execute the following operations based on the source and destination collections in the request:

当服务器收到移动方法请求时,它必须根据请求中的源集合和目标集合执行以下操作:

   +-----------------------+------------------------+------------------+
   | Source Collection     | Destination Collection | Server Operation |
   +-----------------------+------------------------+------------------+
   | Non-calendar          | Non-calendar           | None             |
   | collection            | collection             |                  |
   |                       |                        |                  |
   | Non-calendar          | Calendar collection    | (1)              |
   | collection            |                        |                  |
   |                       |                        |                  |
   | Calendar collection   | Non-calendar           | (2)              |
   |                       | collection             |                  |
   |                       |                        |                  |
   | Calendar collection   | Calendar collection    | None             |
   +-----------------------+------------------------+------------------+
        
   +-----------------------+------------------------+------------------+
   | Source Collection     | Destination Collection | Server Operation |
   +-----------------------+------------------------+------------------+
   | Non-calendar          | Non-calendar           | None             |
   | collection            | collection             |                  |
   |                       |                        |                  |
   | Non-calendar          | Calendar collection    | (1)              |
   | collection            |                        |                  |
   |                       |                        |                  |
   | Calendar collection   | Non-calendar           | (2)              |
   |                       | collection             |                  |
   |                       |                        |                  |
   | Calendar collection   | Calendar collection    | None             |
   +-----------------------+------------------------+------------------+
        

Note (1): The rules in Section 3.2.3.1 are applied for the destination of the MOVE request.

注(1):第3.2.3.1节中的规则适用于移动请求的目的地。

Note (2): The rules in Section 3.2.3.2 are applied for the source of the MOVE request.

注(2):第3.2.3.2节中的规则适用于移动请求的来源。

The behavior of a MOVE method request on a calendar collection is undefined.

日历集合上移动方法请求的行为未定义。

3.2.4. Additional Method Preconditions
3.2.4. 附加方法前提条件

This specification defines method preconditions (see Section 16 of WebDAV [RFC4918]), in addition to those in [RFC4791], to provide machine-parseable information in error responses.

除[RFC4791]中的条件外,本规范还定义了方法先决条件(参见WebDAV[RFC4918]第16节),以在错误响应中提供机器可解析信息。

3.2.4.1. CALDAV:unique-scheduling-object-resource Precondition
3.2.4.1. CALDAV:唯一的调度对象资源前提条件

Name: unique-scheduling-object-resource

名称:唯一的调度对象资源

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Apply to: PUT, COPY, and MOVE

应用于:放置、复制和移动

Use with: 403 Forbidden

使用:403禁止

Purpose: (precondition) -- Servers MAY reject requests to create a scheduling object resource with an iCalendar "UID" property value already in use by another scheduling object resource owned by the same user in other calendar collections. Servers SHOULD report the URL of the scheduling object resource that is already making use of the same "UID" property value in the DAV:href element.

目的:(前提条件)--服务器可能拒绝创建具有iCalendar“UID”属性值的调度对象资源的请求,该属性值已由其他日历集合中同一用户拥有的另一个调度对象资源使用。服务器应报告已在DAV:href元素中使用相同“UID”属性值的调度对象资源的URL。

Definition:

定义:

     <!ELEMENT unique-scheduling-object-resource (DAV:href?)>
        
     <!ELEMENT unique-scheduling-object-resource (DAV:href?)>
        

Example:

例子:

     <C:unique-scheduling-object-resource xmlns:D="DAV:"
         xmlns:C="urn:ietf:params:xml:ns:caldav">
       <D:href>/home/bernard/calendars/personal/abc123.ics</D:href>
     </C:unique-scheduling-object-resource>
        
     <C:unique-scheduling-object-resource xmlns:D="DAV:"
         xmlns:C="urn:ietf:params:xml:ns:caldav">
       <D:href>/home/bernard/calendars/personal/abc123.ics</D:href>
     </C:unique-scheduling-object-resource>
        
3.2.4.2. CALDAV:same-organizer-in-all-components Precondition
3.2.4.2. CALDAV:所有组件中都有相同的管理器

Name: same-organizer-in-all-components

名称:所有组件中的相同管理器

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Apply to: PUT, COPY, and MOVE

应用于:放置、复制和移动

Use with: 403 Forbidden

使用:403禁止

Purpose: (precondition) -- All the calendar components in a scheduling object resource MUST contain the same "ORGANIZER" property value when present.

用途:(前提条件)--计划对象资源中的所有日历组件在存在时必须包含相同的“组织者”属性值。

Definition:

定义:

     <!ELEMENT same-organizer-in-all-components EMPTY>
        
     <!ELEMENT same-organizer-in-all-components EMPTY>
        
3.2.4.3. CALDAV:allowed-organizer-scheduling-object-change Precondition
3.2.4.3. CALDAV:允许的组织者计划对象更改前提条件

Name: allowed-organizer-scheduling-object-change

名称:允许的组织者计划对象更改

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Apply to: PUT, COPY, and MOVE

应用于:放置、复制和移动

Use with: 403 Forbidden

使用:403禁止

Purpose: (precondition) -- Servers MAY impose restrictions on modifications allowed by an "Organizer". For instance, servers MAY prevent the "Organizer" from setting the "PARTSTAT" property parameter to a value other than "NEEDS-ACTION" if the corresponding "ATTENDEE" property has the "SCHEDULE-AGENT" property parameter set to "SERVER", or does not have the "SCHEDULE-AGENT" property parameter. See Section 3.2.1.

目的:(前提条件)——服务器可能会对“组织者”允许的修改施加限制。例如,如果相应的“ATTENDEE”属性的“SCHEDULE-AGENT”属性参数设置为“SERVER”,或者没有“SCHEDULE-AGENT”属性参数,则服务器可能会阻止“Organizer”将“PARTSTAT”属性参数设置为“NEEDS-ACTION”以外的值。见第3.2.1节。

Definition:

定义:

     <!ELEMENT allowed-organizer-scheduling-object-change EMPTY>
        
     <!ELEMENT allowed-organizer-scheduling-object-change EMPTY>
        
3.2.4.4. CALDAV:allowed-attendee-scheduling-object-change Precondition
3.2.4.4. CALDAV:允许与会者安排对象更改前提条件

Name: allowed-attendee-scheduling-object-change

名称:允许的与会者计划对象更改

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Apply to: PUT, COPY, and MOVE

应用于:放置、复制和移动

Use with: 403 Forbidden

使用:403禁止

Purpose: (precondition) -- Servers MAY impose restrictions on modifications allowed by an "Attendee", subject to the allowed changes specified in Section 3.2.2.1.

目的:(前提条件)——根据第3.2.2.1节中规定的允许变更,服务器可对“与会者”允许的修改施加限制。

Definition:

定义:

     <!ELEMENT allowed-attendee-scheduling-object-change EMPTY>
        
     <!ELEMENT allowed-attendee-scheduling-object-change EMPTY>
        
3.2.5. DTSTAMP and SEQUENCE Properties
3.2.5. DTSTAMP和序列属性

The server MUST ensure that a "DTSTAMP" iCalendar property is present and set the value to the UTC time that the scheduling message was generated (as required by iCalendar).

服务器必须确保存在“DTSTAMP”iCalendar属性,并将该值设置为生成调度消息的UTC时间(根据iCalendar的要求)。

The server MUST ensure that for each type of scheduling operation, the "SEQUENCE" iCalendar property value is updated as per iTIP [RFC5546].

服务器必须确保对于每种类型的调度操作,“序列”iCalendar属性值都按照iTIP[RFC5546]更新。

3.2.6. Restrict Recurrence Instances Sent to "Attendees"
3.2.6. 限制发送给“与会者”的重复实例

Servers MUST ensure that "Attendees" only get information about recurrence instances that explicitly include them as an "Attendee", when delivering scheduling messages for recurring calendar components.

服务器必须确保“与会者”在为周期性日历组件传递日程安排消息时,仅获取有关明确将其包含为“与会者”的周期性实例的信息。

For example, if an "Attendee" is invited to only a single instance of a recurring event, the organizer scheduling object resource will contain an overridden instance in the form of a separate calendar component. That separate calendar component will include the "ATTENDEE" property referencing the "one-off" "Attendee". That "Attendee" will not be listed in any other calendar components in the scheduling object resource. Any scheduling messages delivered to the "Attendee" will only contain information about this overridden instance.

例如,如果“与会者”仅被邀请参加定期事件的单个实例,则组织者计划对象资源将包含一个单独日历组件形式的覆盖实例。该单独的日历组件将包括引用“一次性”与会者的“与会者”属性。该“与会者”将不会列在计划对象资源的任何其他日历组件中。传递给“与会者”的任何日程安排消息将仅包含有关此重写实例的信息。

As another example, an "Attendee" could be excluded from one instance of a recurring event. In that case, the organizer scheduling object resource will include an overridden instance with an "ATTENDEE" list that does not include the "Attendee" being excluded. Any scheduling messages delivered to the "Attendee" will not specify the overridden instance but rather will include an "EXDATE" property in the "master" component that defines the recurrence set.

另一个例子是,一个“与会者”可能被排除在重复事件的一个实例之外。在这种情况下,组织者计划对象资源将包括一个覆盖的实例,其中包含一个“与会者”列表,该列表不包括被排除的“与会者”。传递给“Attendee”的任何调度消息都不会指定被覆盖的实例,而是在定义重复集的“master”组件中包含“EXDATE”属性。

3.2.7. Forcing the Server to Send a Scheduling Message
3.2.7. 强制服务器发送计划消息

The iCalendar property parameter "SCHEDULE-FORCE-SEND", defined in Section 7.2, can be used by a calendar user to force the server to send a scheduling message to an "Attendee" or the "Organizer" in a situation where the server would not normally send a scheduling message. For instance, an "Organizer" could use this property parameter to request an "Attendee" that previously declined an invitation to reconsider his participation status without being forced to modify the event.

第7.2节中定义的iCalendar属性参数“SCHEDULE-FORCE-SEND”可供日历用户在服务器通常不会发送日程安排消息的情况下,强制服务器向“与会者”或“组织者”发送日程安排消息。例如,“组织者”可以使用此属性参数请求先前拒绝邀请的“与会者”重新考虑其参与状态,而不必被迫修改活动。

3.2.8. "Attendee" Participation Status
3.2.8. “与会者”参与状态

This section specifies additional requirements on the handling of the "PARTSTAT" property parameter when the "SCHEDULE-AGENT" property parameter on the corresponding "ATTENDEE" property is set to the value "SERVER" or is not present.

本节规定了当相应“ATTENDEE”属性上的“SCHEDULE-AGENT”属性参数设置为值“SERVER”或不存在时,处理“PARTSTAT”属性参数的附加要求。

A reschedule occurs when any "DTSTART", "DTEND", "DURATION", "DUE", "RRULE", "RDATE", or "EXDATE" property changes in a calendar component such that existing recurrence instances are impacted by the changes, as shown in the table below. Servers MUST reset the "PARTSTAT" property parameter value of all "ATTENDEE" properties, except the one that corresponds to the "Organizer", to "NEEDS-ACTION" for each calendar component change that causes any instance to be rescheduled.

当日历组件中的任何“DTSTART”、“DTEND”、“DURATION”、“DUE”、“RRULE”、“RDATE”或“EXDATE”属性发生更改时,会发生重新调度,从而使现有的重复实例受到更改的影响,如下表所示。服务器必须将所有“与会者”属性(与“组织者”对应的属性除外)的“PARTSTAT”属性参数值重置为“NEEDS-ACTION”,以应对导致任何实例重新调度的每个日历组件更改。

   +-----------+-------------------------------------------------------+
   | Property  | Server Action                                         |
   +-----------+-------------------------------------------------------+
   | DTSTART,  | Any change to these properties results in "PARTSTAT"  |
   | DTEND,    | being set to "NEEDS-ACTION".                          |
   | DURATION, |                                                       |
   | DUE       |                                                       |
   |           |                                                       |
   | RRULE     | A change to or addition of this property that results |
   |           | in the addition of new recurring instances or a       |
   |           | change in time for existing recurring instances       |
   |           | results in "PARTSTAT" being reset to "NEEDS-ACTION"   |
   |           | on each affected component.                           |
   |           |                                                       |
   | RDATE     | A change to or addition of this property that results |
   |           | in the addition of new recurring instances or a       |
   |           | change in time for existing recurring instances       |
   |           | results in "PARTSTAT" being reset to "NEEDS-ACTION"   |
   |           | on each affected component.                           |
   |           |                                                       |
   | EXDATE    | A change to or removal of this property that results  |
   |           | in the reinstatement of recurring instances results   |
   |           | in "PARTSTAT" being set to "NEEDS-ACTION" on each     |
   |           | affected component.                                   |
   +-----------+-------------------------------------------------------+
        
   +-----------+-------------------------------------------------------+
   | Property  | Server Action                                         |
   +-----------+-------------------------------------------------------+
   | DTSTART,  | Any change to these properties results in "PARTSTAT"  |
   | DTEND,    | being set to "NEEDS-ACTION".                          |
   | DURATION, |                                                       |
   | DUE       |                                                       |
   |           |                                                       |
   | RRULE     | A change to or addition of this property that results |
   |           | in the addition of new recurring instances or a       |
   |           | change in time for existing recurring instances       |
   |           | results in "PARTSTAT" being reset to "NEEDS-ACTION"   |
   |           | on each affected component.                           |
   |           |                                                       |
   | RDATE     | A change to or addition of this property that results |
   |           | in the addition of new recurring instances or a       |
   |           | change in time for existing recurring instances       |
   |           | results in "PARTSTAT" being reset to "NEEDS-ACTION"   |
   |           | on each affected component.                           |
   |           |                                                       |
   | EXDATE    | A change to or removal of this property that results  |
   |           | in the reinstatement of recurring instances results   |
   |           | in "PARTSTAT" being set to "NEEDS-ACTION" on each     |
   |           | affected component.                                   |
   +-----------+-------------------------------------------------------+
        

The server MAY allow the "Organizer's" client to change an "Attendee's" "PARTSTAT" property parameter value to "NEEDS-ACTION" at any other time (e.g., when the "LOCATION" property value changes, an "Organizer" might wish to re-invite "Attendees" who might be impacted by the change).

服务器可能允许“组织者”客户端在任何其他时间将“与会者”“PARTSTAT”属性参数值更改为“需要-操作”(例如,当“位置”属性值更改时,“组织者”可能希望重新邀请可能受更改影响的“与会者”)。

3.2.9. Schedule Status Values
3.2.9. 计划状态值

When scheduling with an "Attendee", there are two types of status information that can be returned during the operation. The first type of status information is a "delivery" status that indicates whether the scheduling message from the "Organizer" to the "Attendee" was delivered or not, or what the current status of delivery is. The second type of status information is a "reply" status corresponding to the "Attendee's" own "REQUEST-STATUS" information from the scheduling message reply that is sent back to the "Organizer".

与“与会者”一起安排时,有两种状态信息可在操作期间返回。第一类状态信息是“传递”状态,指示是否传递了从“组织者”到“与会者”的计划邮件,或者传递的当前状态是什么。第二类状态信息是“回复”状态,对应于发送回“组织者”的调度消息回复中的“与会者”自己的“请求状态”信息。

Similarly, when an "Attendee" sends a reply back to the "Organizer", there will be "delivery" status information for the scheduling message sent to the "Organizer". However, there is no "REQUEST-STATUS" sent back by the "Organizer", so there is no equivalent of the "reply" status as per scheduling messages to "Attendees".

同样,当“与会者”将回复发送回“组织者”时,将有发送给“组织者”的日程安排消息的“传递”状态信息。但是,“组织者”没有发回“请求-状态”,因此根据发送给“与会者”的日程安排消息,没有与“回复”状态等效的状态。

The "delivery" status information on an "ORGANIZER" or "ATTENDEE" iCalendar property is conveyed in the "SCHEDULE-STATUS" property parameter value (Section 7.3). The status code value for "delivery" status can be one of the following:

“组织者”或“与会者”iCalendar属性上的“交付”状态信息在“日程状态”属性参数值中传达(第7.3节)。“交货”状态的状态代码值可以是以下值之一:

   +----------+--------------------------------------------------------+
   | Delivery | Description                                            |
   | Status   |                                                        |
   | Code     |                                                        |
   +----------+--------------------------------------------------------+
   | 1.0      | The scheduling message is pending.  That is, the       |
   |          | server is still in the process of sending the message. |
   |          | The status code value can be expected to change once   |
   |          | the server has completed its sending and delivery      |
   |          | attempts.                                              |
   |          |                                                        |
   | 1.1      | The scheduling message has been successfully sent.     |
   |          | However, the server does not have explicit information |
   |          | about whether the scheduling message was successfully  |
   |          | delivered to the recipient.  This state can occur with |
   |          | "store and forward" style scheduling protocols such as |
   |          | iMIP [RFC6047] (iTIP using email).                     |
   |          |                                                        |
   | 1.2      | The scheduling message has been successfully           |
   |          | delivered.                                             |
   |          |                                                        |
        
   +----------+--------------------------------------------------------+
   | Delivery | Description                                            |
   | Status   |                                                        |
   | Code     |                                                        |
   +----------+--------------------------------------------------------+
   | 1.0      | The scheduling message is pending.  That is, the       |
   |          | server is still in the process of sending the message. |
   |          | The status code value can be expected to change once   |
   |          | the server has completed its sending and delivery      |
   |          | attempts.                                              |
   |          |                                                        |
   | 1.1      | The scheduling message has been successfully sent.     |
   |          | However, the server does not have explicit information |
   |          | about whether the scheduling message was successfully  |
   |          | delivered to the recipient.  This state can occur with |
   |          | "store and forward" style scheduling protocols such as |
   |          | iMIP [RFC6047] (iTIP using email).                     |
   |          |                                                        |
   | 1.2      | The scheduling message has been successfully           |
   |          | delivered.                                             |
   |          |                                                        |
        
   | 3.7      | The scheduling message was not delivered because the   |
   |          | server did not recognize the calendar user address as  |
   |          | a valid calendar user.  Note that this code applies to |
   |          | both "Organizer" and "Attendee" calendar user          |
   |          | addresses.                                             |
   |          |                                                        |
   | 3.8      | The scheduling message was not delivered due to        |
   |          | insufficient privileges.  Note that this code applies  |
   |          | to privileges granted by both the "Organizer" and      |
   |          | "Attendee" calendar users.                             |
   |          |                                                        |
   | 5.1      | The scheduling message was not delivered because the   |
   |          | server could not complete delivery of the message.     |
   |          | This is likely due to a temporary failure, and the     |
   |          | originator can try to send the message again at a      |
   |          | later time.                                            |
   |          |                                                        |
   | 5.2      | The scheduling message was not delivered because the   |
   |          | server was not able to find a way to deliver the       |
   |          | message.  This is likely a permanent failure, and the  |
   |          | originator ought not try to send the message again, at |
   |          | least without verifying/correcting the calendar user   |
   |          | address of the recipient.                              |
   |          |                                                        |
   | 5.3      | The scheduling message was not delivered and was       |
   |          | rejected because scheduling with that recipient is not |
   |          | allowed.  This is likely a permanent failure, and the  |
   |          | originator ought not try to send the message again.    |
   +----------+--------------------------------------------------------+
        
   | 3.7      | The scheduling message was not delivered because the   |
   |          | server did not recognize the calendar user address as  |
   |          | a valid calendar user.  Note that this code applies to |
   |          | both "Organizer" and "Attendee" calendar user          |
   |          | addresses.                                             |
   |          |                                                        |
   | 3.8      | The scheduling message was not delivered due to        |
   |          | insufficient privileges.  Note that this code applies  |
   |          | to privileges granted by both the "Organizer" and      |
   |          | "Attendee" calendar users.                             |
   |          |                                                        |
   | 5.1      | The scheduling message was not delivered because the   |
   |          | server could not complete delivery of the message.     |
   |          | This is likely due to a temporary failure, and the     |
   |          | originator can try to send the message again at a      |
   |          | later time.                                            |
   |          |                                                        |
   | 5.2      | The scheduling message was not delivered because the   |
   |          | server was not able to find a way to deliver the       |
   |          | message.  This is likely a permanent failure, and the  |
   |          | originator ought not try to send the message again, at |
   |          | least without verifying/correcting the calendar user   |
   |          | address of the recipient.                              |
   |          |                                                        |
   | 5.3      | The scheduling message was not delivered and was       |
   |          | rejected because scheduling with that recipient is not |
   |          | allowed.  This is likely a permanent failure, and the  |
   |          | originator ought not try to send the message again.    |
   +----------+--------------------------------------------------------+
        

The status code for "reply" status can be any of the valid iTIP [RFC5546] "REQUEST-STATUS" values.

“回复”状态的状态代码可以是任何有效的iTIP[RFC5546]“请求状态”值。

The 1.xx "REQUEST-STATUS" codes are new. This specification modifies item (2) of Section 3.6 of [RFC5546] by adding the following restriction:

1.xx“请求状态”代码是新的。本规范修改了[RFC5546]第3.6节第(2)项,增加了以下限制:

For a 1.xx code, all components MUST have exactly the same code.

对于1.xx代码,所有组件必须具有完全相同的代码。

Definition of the new 1.xx codes is as follows:

新1.xx代码的定义如下:

3.2.9.1. Status Code 1.0
3.2.9.1. 状态代码1.0

Status Code: 1.0

状态代码:1.0

Status Description: Pending.

状态描述:待定。

Status Exception Data: None.

状态异常数据:无。

Description: Delivery of the iTIP message is pending.

说明:iTIP邮件的传递处于挂起状态。

3.2.9.2. Status Code 1.1
3.2.9.2. 状态代码1.1

Status Code: 1.1

状态代码:1.1

Status Description: Sent.

状态描述:已发送。

Status Exception Data: None.

状态异常数据:无。

Description: The iTIP message has been sent, though no information about successful delivery is known.

描述:iTIP消息已发送,但不知道有关成功传递的信息。

3.2.9.3. Status Code 1.2
3.2.9.3. 状态代码1.2

Status Code: 1.2

状态代码:1.2

Status Description: Delivered.

状态描述:已交付。

Status Exception Data: None.

状态异常数据:无。

Description: The iTIP message has been sent and delivered.

描述:iTIP消息已发送和传递。

3.2.10. Avoiding Conflicts when Updating Scheduling Object Resources
3.2.10. 在更新调度对象资源时避免冲突

Scheduling object resources on the server might change frequently as "Attendees" change their participation status, triggering updates to the "Organizer", and refreshes of other "Attendees'" copies of the scheduling object resource. This can lead to an "inconsequential" change to a calendar user's data -- one that does not directly impact the user's own participation status. When this occurs, clients have to reload calendar data and reconcile with changes being made by calendar users. To avoid the need for this, the server can instead merge calendar data changes from a client with changes made as a result of a scheduling operation carried out by some other calendar user.

服务器上的调度对象资源可能会随着“与会者”更改其参与状态而频繁更改,从而触发对“组织者”的更新,并刷新调度对象资源的其他“与会者”副本。这可能导致对日历用户的数据进行“无关紧要”的更改——这不会直接影响用户自己的参与状态。发生这种情况时,客户端必须重新加载日历数据,并与日历用户所做的更改保持一致。为了避免这种需要,服务器可以将来自客户端的日历数据更改与由于其他日历用户执行的调度操作而进行的更改合并。

This specification introduces a new WebDAV resource property CALDAV: schedule-tag with a corresponding response header "Schedule-Tag", and a new "If-Schedule-Tag-Match" request header to allow client changes to be appropriately merged with server changes in the case where the changes on the server were the result of an "inconsequential" scheduling message update (one that simply updates the status information of "Attendees" due to a reply from another "Attendee").

本规范引入了一个新的WebDAV资源属性CALDAV:schedule标记,该标记带有相应的响应头“schedule tag”,以及一个新的“If schedule tag Match”请求头,以便在服务器上的更改是“无关紧要”的结果时,允许客户机更改与服务器更改适当合并计划消息更新(由于另一个“与会者”的回复而简单地更新“与会者”的状态信息)。

Servers MUST automatically resolve conflicts with "inconsequential" changes done to scheduling object resources when the "If-Schedule-Tag-Match" request header is specified. The If-Schedule-Tag-Match request header applies only to the Request-URI, and not to the destination of a COPY or MOVE.

当指定“If Schedule Tag Match”请求头时,服务器必须自动解决与调度对象资源的“无关紧要”更改的冲突。If Schedule标记Match请求头仅应用于请求URI,而不应用于复制或移动的目标。

A response to any successful GET or PUT request targeting a scheduling object resource MUST include a Schedule-Tag response header with the value set to the same value as the CALDAV:schedule-tag WebDAV property of the resource.

针对调度对象资源的任何成功GET或PUT请求的响应必须包含一个调度标记响应标头,该标头的值设置为与资源的CALDAV:Schedule Tag WebDAV属性相同的值。

A response to any successful COPY or MOVE request that specifies a Destination request header targeting a scheduling object resource MUST include a Schedule-Tag response header with the value set to the same value as the CALDAV:schedule-tag WebDAV property of the destination resource.

对任何成功复制或移动请求的响应,如果指定目标为调度对象资源的目标请求标头,则必须包含一个调度标记响应标头,该标头的值设置为与目标资源的CALDAV:Schedule Tag WebDAV属性相同的值。

Clients SHOULD use the If-Schedule-Tag-Match header on requests that update scheduling object resources, instead of HTTP ETag-based precondition tests (e.g., If-Match). Normal ETag-based precondition tests are used in all other cases, e.g., for synchronization.

客户端应该在更新调度对象资源的请求上使用If-Schedule-Tag-Match头,而不是基于HTTP-ETag的前提条件测试(例如If-Match)。在所有其他情况下(例如,用于同步),使用基于ETag的正常前提测试。

The value of the CALDAV:schedule-tag property changes according to these rules:

CALDAV:schedule标记属性的值将根据以下规则更改:

o For an "Organizer's" copy of a scheduling object resource:

o 对于计划对象资源的“组织者”副本:

1. The server MUST NOT change the CALDAV:schedule-tag property value when the scheduling object resource is updated as the result of automatically processing a scheduling message reply from an "Attendee". For instance, when an "Attendee" replies to the "Organizer", the CALDAV:schedule-tag property is unchanged after the "Organizer's" scheduling object resource has been automatically updated by the server with the "Attendee's" new participation status.

1. 当调度对象资源因自动处理来自“与会者”的调度消息答复而更新时,服务器不得更改CALDAV:schedule标记属性值。例如,当“与会者”回复“组织者”时,“组织者”的“日程安排对象”资源已由服务器自动更新为“与会者”的新参与状态后,CALDAV:schedule标记属性将保持不变。

2. The server MUST change the CALDAV:schedule-tag property value when the scheduling object resource is changed directly via an HTTP request (e.g., PUT, COPY, or MOVE).

2. 当通过HTTP请求(例如,PUT、COPY或MOVE)直接更改调度对象资源时,服务器必须更改CALDAV:schedule标记属性值。

o For an "Attendee's" copy of a scheduling object resource:

o 对于计划对象资源的“与会者”副本:

1. The server MUST change the CALDAV:schedule-tag property value when the scheduling object resource is changed as the result of processing a scheduling message update from an "Organizer" that contains changes other than just the participation status of "Attendees".

1. 当调度对象资源因处理来自“组织者”的调度消息更新而发生更改时,服务器必须更改CALDAV:schedule标记属性值,该消息更新包含的更改不仅仅是“与会者”的参与状态。

2. The server MUST NOT change the CALDAV:schedule-tag property value when the scheduling object resource is changed as the result of processing a scheduling message update from an "Organizer" that only specifies changes in the participation status of "Attendees". For instance, when "Attendee" "A" replies to "Organizer" "O", and "Attendee" "B" receives a scheduling message update from "Organizer" "O" with the new participation status of "Attendee" "A", the CALDAV:schedule-tag property of "Attendee" "B"'s scheduling object resource would remain the same.

2. 当调度对象资源因处理来自仅指定“与会者”参与状态更改的“组织者”的调度消息更新而发生更改时,服务器不得更改CALDAV:schedule标记属性值。例如,当“与会者”A答复“组织者”O,而“与会者”B收到“组织者”O发出的计划消息更新,新的参与状态为“与会者”A时,“与会者”B的计划对象资源的CALDAV:schedule标记属性将保持不变。

3. The server MUST change the CALDAV:schedule-tag property value when the scheduling object resource is changed directly via an HTTP request (e.g., PUT, COPY, or MOVE).

3. 当通过HTTP请求(例如,PUT、COPY或MOVE)直接更改调度对象资源时,服务器必须更改CALDAV:schedule标记属性值。

3.2.10.1. PUT
3.2.10.1. 放

Clients MAY use the If-Schedule-Tag-Match request header to do a PUT request that ensures that "inconsequential" changes on the server do not result in a precondition error. The value of the request header is set to the last Schedule-Tag value received for the resource being modified. If the value of the If-Schedule-Tag-Match header matches the current value of the CALDAV:schedule-tag property, the server MUST take any "ATTENDEE" property changes for all "Attendees" other than the owner of the scheduling object resource and apply those to the new resource being stored. Otherwise, the server MUST fail the request with a 412 Precondition Failed status code.

客户端可以使用If Schedule Tag Match请求头执行PUT请求,以确保服务器上的“无关紧要”更改不会导致前置条件错误。请求头的值被设置为所修改资源接收的最后一个计划标记值。如果If Schedule Tag Match标头的值与CALDAV:Schedule Tag属性的当前值匹配,则服务器必须对除调度对象资源所有者以外的所有“与会者”进行任何“与会者”属性更改,并将这些更改应用于正在存储的新资源。否则,服务器必须使用412前置条件失败状态代码使请求失败。

3.2.10.2. DELETE, COPY, or MOVE
3.2.10.2. 删除、复制或移动

Clients MAY use the If-Schedule-Tag-Match request header to do a DELETE, COPY, or MOVE request that ensures that "inconsequential" changes on the server do not result in a precondition error. The value of the request header is set to the last Schedule-Tag value received for the resource being deleted. If the value of the If-Schedule-Tag-Match header matches the current value of the CALDAV: schedule-tag property, the server performs the normal DELETE, COPY, or MOVE request processing for the resource. Otherwise, the server MUST fail the request with a 412 Precondition Failed status code.

客户端可以使用If Schedule Tag Match请求头执行删除、复制或移动请求,以确保服务器上的“无关紧要”更改不会导致前置条件错误。请求标头的值设置为为为要删除的资源接收的最后一个计划标记值。如果If Schedule Tag Match标头的值与CALDAV:Schedule Tag属性的当前值匹配,则服务器将对资源执行正常的删除、复制或移动请求处理。否则,服务器必须使用412前置条件失败状态代码使请求失败。

4. Processing Incoming Scheduling Messages
4. 处理传入的调度消息

Scheduling operations can cause the delivery of a scheduling message into an "Organizer's" or "Attendee's" scheduling Inbox collection. Servers MUST automatically process incoming scheduling messages using the rules defined by [RFC5546], by creating or updating the corresponding scheduling object resources on calendars owned by the owner of the scheduling Inbox collection. In addition, the scheduling message is stored in the scheduling Inbox collection as an indicator to the client that a scheduling operation has taken place. Scheduling messages are typically removed from the scheduling Inbox collection by the client once the calendar user has acknowledged the change.

计划操作可能导致将计划邮件传递到“组织者”或“与会者”的计划收件箱集合中。服务器必须使用[RFC5546]定义的规则,通过在调度收件箱集合所有者拥有的日历上创建或更新相应的调度对象资源,自动处理传入的调度消息。此外,调度消息存储在调度收件箱集合中,作为已发生调度操作的客户端指示器。日程表用户确认更改后,客户端通常会从日程表收件箱集合中删除日程表消息。

The server MUST take into account privileges on the scheduling Inbox collection when processing incoming scheduling messages, to determine whether delivery of the scheduling message is allowed. Privileges on calendars containing any matching scheduling object resource are not considered in this case (i.e., a schedule message from another user can cause modifications to resources in calendar collections that the other user would not normally have read or write access to). Additionally, servers MUST take into account any scheduling Inbox collection preconditions (see Section 2.2) when delivering the scheduling message, and MUST take into account the similar preconditions on any calendar collection that contains, or would contain, the corresponding scheduling object resource.

在处理传入的计划邮件时,服务器必须考虑对计划收件箱集合的权限,以确定是否允许传递计划邮件。在这种情况下,不考虑对包含任何匹配调度对象资源的日历的权限(即,来自另一个用户的调度消息可能会导致对日历集合中其他用户通常不具有读取或写入权限的资源进行修改)。此外,服务器在传递调度邮件时必须考虑任何调度收件箱集合的先决条件(请参见第2.2节),并且必须考虑包含或将包含相应调度对象资源的任何日历集合的类似先决条件。

4.1. Processing "Organizer" Requests, Additions, and Cancellations
4.1. 处理“组织者”请求、添加和取消

For a scheduling message sent by an "Organizer", the server first tries to locate a corresponding scheduling object resource belonging to the "Attendee". If no matching scheduling object resource exists, the server treats the scheduling message as a new message; otherwise, it is treated as an update.

对于“组织者”发送的调度消息,服务器首先尝试查找属于“与会者”的相应调度对象资源。如果不存在匹配的调度对象资源,则服务器将调度消息视为新消息;否则,它将被视为更新。

In the case of a new message, the server processes the scheduling message and creates a new scheduling object resource as per Section 4.3.

对于新消息,服务器处理调度消息并根据第4.3节创建新的调度对象资源。

In the case of an update, the server processes the scheduling message and updates the matching scheduling object resource belonging to the "Attendee" to reflect the changes sent by the "Organizer".

在更新的情况下,服务器处理调度消息并更新属于“与会者”的匹配调度对象资源,以反映“组织者”发送的更改。

In each case, the scheduling message MUST only appear in the "Attendee's" scheduling Inbox collection once all automatic processing has been done.

在每种情况下,只有在完成所有自动处理后,日程安排邮件才能出现在“与会者”日程安排收件箱集合中。

4.2. Processing "Attendee" Replies
4.2. 处理“与会者”回复

For a scheduling message reply sent by an "Attendee", the server first locates the corresponding scheduling object resource belonging to the "Organizer". If the corresponding scheduling object resource cannot be found, the server SHOULD ignore the scheduling message.

对于“与会者”发送的调度消息回复,服务器首先定位属于“组织者”的相应调度对象资源。如果找不到相应的调度对象资源,服务器应忽略调度消息。

The server MUST then update the "PARTSTAT" iCalendar property parameter value of each "ATTENDEE" iCalendar property in the scheduling object resource to match the changes indicated in the reply (taking into account the fact that an "Attendee" could have created a new overridden iCalendar component to indicate different participation status on one or more instances of a recurring event).

然后,服务器必须更新调度对象资源中每个“ATTENDEE”iCalendar属性的“PARTSTAT”iCalendar属性参数值,以匹配回复中指示的更改(考虑到“ATTENDEE”属性可能已创建新的重写iCalendar组件,以指示重复事件的一个或多个实例上的不同参与状态)。

The server MUST also update or add the "SCHEDULE-STATUS" property parameter on each matching "ATTENDEE" iCalendar property and set its value to that of the "REQUEST-STATUS" property in the reply, or to "2.0" if "REQUEST-STATUS" is not present (also taking into account recurrence instances). If there are multiple "REQUEST-STATUS" properties in the reply, the "SCHEDULE-STATUS" property parameter value is set to a comma-separated list of status codes, one from each "REQUEST-STATUS" property.

服务器还必须在每个匹配的“ATTENDEE”iCalendar属性上更新或添加“SCHEDULE-STATUS”属性参数,并将其值设置为回复中“REQUEST-STATUS”属性的值,或者如果“REQUEST-STATUS”不存在,则将其设置为“2.0”(还考虑到重复实例)。如果回复中有多个“请求状态”属性,“计划状态”属性参数值设置为状态代码的逗号分隔列表,每个“请求状态”属性中有一个状态代码。

The server SHOULD send scheduling messages to all the other "Attendees" indicating the change in participation status of the "Attendee" replying, subject to the recurrence requirements of Section 3.2.6.

根据第3.2.6节的重复要求,服务器应向所有其他“与会者”发送计划消息,指示“与会者”回复的参与状态的变化。

The scheduling message MUST only appear in the "Organizer's" scheduling Inbox collection once all automatic processing has been done.

只有在完成所有自动处理后,计划邮件才能出现在“组织者的”计划收件箱集合中。

4.3. Default Calendar Collection
4.3. 默认日历集合

The server processes scheduling messages received for an "Attendee" by creating a new scheduling object resource in a calendar collection belonging to the "Attendee", when one does not already exist. A calendar user that is an "Attendee" in a scheduling operation MUST have at least one valid calendar collection available. If there is no valid calendar collection, then the server MUST reject the attempt to deliver the scheduling message to the "Attendee".

服务器通过在属于“与会者”的日历集合中创建一个新的调度对象资源来处理为“与会者”接收的调度消息(如果该日历集合不存在)。日程安排操作中的“与会者”日历用户必须至少有一个有效的日历集合可用。如果没有有效的日历集合,则服务器必须拒绝尝试将日程安排消息传递给“与会者”。

Servers MAY provide support for a default calendar collection -- that is, the calendar collection in which new scheduling object resources will be created. The CALDAV:schedule-default-calendar-URL WebDAV property, which can be present on the scheduling Inbox collection of a calendar user, specifies whether this calendar user has a default calendar collection. See Section 9.2.

服务器可以提供对默认日历集合的支持——即,将在其中创建新的调度对象资源的日历集合。CALDAV:schedule default calendar URL WebDAV属性可出现在日历用户的计划收件箱集合中,用于指定此日历用户是否具有默认日历集合。见第9.2节。

Servers SHOULD create new scheduling object resources in the default calendar collection, if the CALDAV:schedule-default-calendar-URL WebDAV property is set.

如果设置了CALDAV:schedule default calendar URL WebDAV属性,服务器应在默认日历集合中创建新的调度对象资源。

Servers MAY allow clients to change the default calendar collection by changing the value of the CALDAV:schedule-default-calendar-URL WebDAV property on the scheduling Inbox collection. However, the server MUST ensure that any new value for that property refers to a valid calendar collection belonging to the owner of the scheduling Inbox collection.

服务器可能允许客户端通过更改“计划收件箱”集合上的CALDAV:schedule default calendar URL WebDAV属性的值来更改默认日历集合。但是,服务器必须确保该属性的任何新值都引用属于计划收件箱集合所有者的有效日历集合。

Servers MUST reject any attempt to delete the default calendar collection.

服务器必须拒绝删除默认日历集合的任何尝试。

4.3.1. Additional Method Preconditions
4.3.1. 附加方法前提条件

This specification defines additional method preconditions (see Section 16 of WebDAV [RFC4918]) to provide machine-parseable information in error responses.

本规范定义了额外的方法先决条件(参见WebDAV[RFC4918]第16节),以在错误响应中提供机器可解析信息。

4.3.1.1. CALDAV:default-calendar-needed Precondition
4.3.1.1. CALDAV:需要的默认日历

Name: default-calendar-needed

名称:需要默认日历

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Apply to: DELETE

适用于:删除

Use with: 403 Forbidden

使用:403禁止

Purpose: (precondition) -- The client attempted to delete the calendar collection currently referenced by the CALDAV:schedule-default-calendar-URL property, or attempted to remove the CALDAV: schedule-default-calendar-URL property on the scheduling Inbox collection on a server that doesn't allow such operations.

用途:(前提条件)--客户端试图删除CALDAV:schedule default calendar URL属性当前引用的日历集合,或试图删除不允许此类操作的服务器上的scheduling Inbox集合上的CALDAV:schedule default calendar URL属性。

Definition:

定义:

     <!ELEMENT default-calendar-needed EMPTY>
        
     <!ELEMENT default-calendar-needed EMPTY>
        
4.3.1.2. CALDAV:valid-schedule-default-calendar-URL Precondition
4.3.1.2. CALDAV:有效的计划默认日历URL先决条件

Name: valid-schedule-default-calendar-URL

名称:有效的计划默认日历URL

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Apply to: PROPPATCH

适用于:PROPPATCH

Use with: 403 Forbidden

使用:403禁止

Purpose: (precondition) -- The client attempted to set the CALDAV: schedule-default-calendar-URL property to a DAV:href element that doesn't reference a valid calendar collection. Note: Servers that do not allow clients to change the CALDAV:schedule-default-calendar-URL property would simply return the DAV:cannot-modify-protected-property precondition defined in Section 16 of WebDAV [RFC4918].

用途:(前提条件)--客户端试图将CALDAV:schedule default calendar URL属性设置为不引用有效日历集合的DAV:href元素。注意:不允许客户端更改CALDAV:schedule默认日历URL属性的服务器只会返回WebDAV[RFC4918]第16节中定义的DAV:cannot modify protected property前提条件。

Definition:

定义:

     <!ELEMENT valid-schedule-default-calendar-URL EMPTY>
        
     <!ELEMENT valid-schedule-default-calendar-URL EMPTY>
        
5. Request for Busy Time Information
5. 请求繁忙时间信息

Busy time information of one or more calendar users can be determined by submitting a POST request targeted at the scheduling Outbox collection of the calendar user requesting the information (the "Organizer"). To accomplish this, the request body MUST contain a "VFREEBUSY" calendar component with the "METHOD" iCalendar property set to the value "REQUEST" as specified in Section 3.3.2 of iTIP [RFC5546]. The resource identified by the Request-URI MUST be a resource collection of type CALDAV:schedule-outbox (Section 2.1). The "ORGANIZER" property value in the "VFREEBUSY" component MUST match one of the calendar user addresses of the owner of the Outbox collection.

一个或多个日历用户的忙时信息可以通过提交一个POST请求来确定,该POST请求的目标是请求该信息的日历用户的计划发件箱集合(“组织者”)。为此,请求正文必须包含一个“VFREEBUSY”日历组件,其“METHOD”iCalendar属性设置为iTIP[RFC5546]第3.3.2节中规定的值“request”。请求URI标识的资源必须是CALDAV:schedule outbox类型的资源集合(第2.1节)。“VFREEBUSY”组件中的“ORGANIZER”属性值必须与发件箱集合所有者的日历用户地址之一匹配。

A response to a busy time request that indicates status for one or more calendar users MUST be an XML document with a CALDAV:schedule-response XML element as its root element. This element MUST contain one CALDAV:response element for each calendar user, with each such element in turn containing elements that indicate which calendar user they correspond to, the scheduling status for that calendar user, any error codes, and an optional description. For a successful busy time request, a CALDAV:calendar-data element is also present for each calendar user, containing the actual busy time information (i.e., an iCalendar "VFREEBUSY" component). See Section 10 for details on the child elements. See Appendix B.5 for an example busy time request and response.

指示一个或多个日历用户状态的繁忙时间请求的响应必须是一个XML文档,其根元素为CALDAV:schedule-response-XML元素。此元素必须为每个日历用户包含一个CALDAV:response元素,每个此类元素依次包含指示其对应的日历用户、该日历用户的计划状态、任何错误代码和可选描述的元素。对于成功的繁忙时间请求,每个日历用户都会有一个CALDAV:calendar数据元素,其中包含实际的繁忙时间信息(即iCalendar“VFREEBUSY”组件)。有关子元素的详细信息,请参见第10节。有关繁忙时间请求和响应的示例,请参见附录B.5。

5.1. Status Codes
5.1. 状态代码

The list below summarizes the most common status codes used for this method. However, clients need to be prepared to handle other 2/3/4/5xx series status codes as well.

下表总结了用于此方法的最常见状态代码。但是,客户还需要准备好处理其他2/3/4/5xx系列状态代码。

200 (OK) - The command succeeded.

200(确定)-命令成功。

204 (No Content) - The command succeeded.

204(无内容)-命令成功。

400 (Bad Request) - The client has provided an invalid scheduling message.

400(错误请求)-客户端提供了无效的计划消息。

403 (Forbidden) - The client cannot submit a scheduling message to the specified Request-URI.

403(禁止)-客户端无法向指定的请求URI提交计划消息。

404 (Not Found) - The URL in the Request-URI was not present.

404(未找到)-请求URI中的URL不存在。

423 (Locked) - The specified resource is locked, and the client either is not a lock owner or the lock type requires a lock token to be submitted and the client did not submit it.

423(已锁定)-指定的资源已锁定,客户端不是锁所有者,或者锁类型要求提交锁令牌,但客户端未提交。

5.2. Additional Method Preconditions
5.2. 附加方法前提条件

The following are existing preconditions that are reused for the POST method on an Outbox collection.

以下是在发件箱集合上对POST方法重用的现有先决条件。

o DAV:need-privileges [RFC3744]

o DAV:需要特权[RFC3744]

o CALDAV:supported-calendar-data [RFC4791]

o CALDAV:支持的日历数据[RFC4791]

o CALDAV:valid-calendar-data [RFC4791]

o CALDAV:有效的日历数据[RFC4791]

o CALDAV:max-resource-size [RFC4791]

o CALDAV:最大资源大小[RFC4791]

The following are new method preconditions for the POST method on an Outbox collection.

以下是发件箱集合上POST方法的新方法先决条件。

5.2.1. CALDAV:valid-scheduling-message Precondition
5.2.1. CALDAV:有效的调度消息前提条件

Name: valid-scheduling-message

名称:有效的计划消息

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Apply to: POST

申请:邮政

Use with: 400 Bad Request

用于:400错误请求

Purpose: (precondition) -- The resource submitted in the POST request MUST obey all the restrictions specified in Section 3.3.2 of iTIP [RFC5546].

目的:(前提条件)——POST请求中提交的资源必须遵守iTIP[RFC5546]第3.3.2节规定的所有限制。

Definition:

定义:

     <!ELEMENT valid-scheduling-message EMPTY>
        
     <!ELEMENT valid-scheduling-message EMPTY>
        
5.2.2. CALDAV:valid-organizer Precondition
5.2.2. CALDAV:有效的组织者先决条件

Name: valid-organizer

名称:有效组织者

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Apply to: POST

申请:邮政

Use with: 403 Forbidden

使用:403禁止

Purpose: (precondition) -- The "ORGANIZER" property value in the POST request's scheduling message MUST match one of the calendar user addresses of the owner of the scheduling Outbox collection being targeted by the request.

用途:(先决条件)--POST请求的计划消息中的“ORGANIZER”属性值必须与请求所针对的计划发件箱集合所有者的日历用户地址之一匹配。

Definition:

定义:

     <!ELEMENT valid-organizer EMPTY>
        
     <!ELEMENT valid-organizer EMPTY>
        
6. Scheduling Privileges
6. 调度权限

New scheduling privileges are defined in this section. All the scheduling privileges MUST be non-abstract and MUST appear in the DAV:supported-privilege-set property of scheduling Outbox and Inbox collections on which they are defined.

本节定义了新的调度权限。所有调度权限必须是非抽象的,并且必须出现在定义它们的调度发件箱和收件箱集合的DAV:supported privilege set属性中。

The tables specified in Appendix A clarify which scheduling methods (e.g., "REQUEST", "REPLY", etc.) are controlled by each scheduling privilege defined in this section.

附录A中规定的表格阐明了哪些调度方法(例如,“请求”、“回复”等)由本节中定义的每个调度权限控制。

6.1. Privileges on Scheduling Inbox Collections
6.1. 安排收件箱集合的权限

This section defines new WebDAV Access Control List (ACL) [RFC3744] privileges that are defined for use on scheduling Inbox collections. These privileges determine whether delivery of scheduling messages from a calendar user is allowed by the calendar user who "owns" the scheduling Inbox collection. This allows calendar users to choose which other calendar users can schedule with them.

本节定义了新的WebDAV访问控制列表(ACL)[RFC3744]权限,这些权限是为安排收件箱集合而定义的。这些权限确定“拥有”计划收件箱集合的日历用户是否允许从日历用户传递计划邮件。这允许日历用户选择其他日历用户可以与其一起安排的日程。

Note that when a scheduling message is delivered to a calendar user, in addition to a scheduling object resource being created in the calendar user's scheduling Inbox collection, a new scheduling object resource might be created or an existing one updated in a calendar belonging to the calendar user. In that case, the ability to create or update the scheduling object resource in the calendar is controlled by the privileges assigned to the scheduling Inbox collection.

请注意,当调度消息传递给日历用户时,除了在日历用户的调度收件箱集合中创建调度对象资源外,还可能在属于日历用户的日历中创建新的调度对象资源或更新现有的调度对象资源。在这种情况下,在日历中创建或更新计划对象资源的能力由分配给计划收件箱集合的权限控制。

The privileges defined in this section are ignored if applied to a resource other than a scheduling Inbox collection.

如果将此部分中定义的权限应用于计划收件箱集合以外的资源,则将忽略此部分中定义的权限。

6.1.1. CALDAV:schedule-deliver Privilege
6.1.1. CALDAV:计划交付特权

CALDAV:schedule-deliver is an aggregate privilege as per Section 6.3.

CALDAV:根据第6.3节,计划交付是一种聚合特权。

     <!ELEMENT schedule-deliver EMPTY>
        
     <!ELEMENT schedule-deliver EMPTY>
        
6.1.2. CALDAV:schedule-deliver-invite Privilege
6.1.2. CALDAV:计划传递邀请权限

The CALDAV:schedule-deliver-invite privilege controls the processing and delivery of scheduling messages coming from an "Organizer".

CALDAV:schedule deliver invite特权控制来自“组织者”的调度消息的处理和传递。

     <!ELEMENT schedule-deliver-invite EMPTY>
        
     <!ELEMENT schedule-deliver-invite EMPTY>
        
6.1.3. CALDAV:schedule-deliver-reply Privilege
6.1.3. CALDAV:计划传递答复权限

The CALDAV:schedule-deliver-reply privilege controls the processing and delivery of scheduling messages coming from an "Attendee".

CALDAV:schedule deliver reply权限控制来自“与会者”的日程安排消息的处理和传递。

     <!ELEMENT schedule-deliver-reply EMPTY>
        
     <!ELEMENT schedule-deliver-reply EMPTY>
        
6.1.4. CALDAV:schedule-query-freebusy Privilege
6.1.4. CALDAV:计划查询忙/闲特权

The CALDAV:schedule-query-freebusy privilege controls freebusy requests targeted at the owner of the scheduling Inbox collection.

CALDAV:schedule query freebush特权控制针对计划收件箱集合所有者的freebush请求。

     <!ELEMENT schedule-query-freebusy EMPTY>
        
     <!ELEMENT schedule-query-freebusy EMPTY>
        
6.2. Privileges on Scheduling Outbox Collections
6.2. 调度发件箱集合的权限

This section defines new WebDAV ACL [RFC3744] privileges that are defined for use on scheduling Outbox collections. These privileges determine which calendar users are allowed to send scheduling messages on behalf of the calendar user who "owns" the scheduling Outbox collection. This allows calendar users to choose other calendar users who can act on their behalf (e.g., assistants working on behalf of their boss).

本节定义了新的WebDAV ACL[RFC3744]权限,这些权限是为调度发件箱集合而定义的。这些权限决定允许哪些日历用户代表“拥有”调度发件箱集合的日历用户发送调度消息。这允许日历用户选择可以代表其行事的其他日历用户(例如,代表其上司工作的助理)。

The privileges defined in this section are ignored if applied to a resource other than a scheduling Outbox collection.

如果将此部分中定义的权限应用于非计划发件箱集合的资源,则将忽略此部分中定义的权限。

6.2.1. CALDAV:schedule-send Privilege
6.2.1. CALDAV:计划发送权限

CALDAV:schedule-send is an aggregate privilege as per Section 6.3.

CALDAV:根据第6.3节,计划发送是一种聚合权限。

     <!ELEMENT schedule-send EMPTY>
        
     <!ELEMENT schedule-send EMPTY>
        
6.2.2. CALDAV:schedule-send-invite Privilege
6.2.2. CALDAV:计划发送邀请权限

The CALDAV:schedule-send-invite privilege controls the sending of scheduling messages by "Organizers".

CALDAV:schedule send invite特权控制“组织者”发送计划消息。

Users granted the DAV:bind privilege on a calendar collection, or the DAV:write privilege on scheduling object resources, will also need the CALDAV:schedule-send-invite privilege granted on the scheduling Outbox collection of the owner of the calendar collection or scheduling object resource in order to be allowed to create, modify, or delete scheduling object resources in a way that will trigger the CalDAV server to deliver scheduling messages to "Attendees".

在日历集合上授予DAV:bind权限或在调度对象资源上授予DAV:write权限的用户还需要在日历集合或调度对象资源所有者的调度发件箱集合上授予CALDAV:schedule send invite权限,以便允许创建、修改、,或者删除调度对象资源,以触发CalDAV服务器向“与会者”发送调度消息。

     <!ELEMENT schedule-send-invite EMPTY>
        
     <!ELEMENT schedule-send-invite EMPTY>
        
6.2.3. CALDAV:schedule-send-reply Privilege
6.2.3. CALDAV:计划发送回复权限

The CALDAV:schedule-send-reply privilege controls the sending of scheduling messages by "Attendees".

CALDAV:schedule send reply权限控制“与会者”发送日程安排消息。

Users granted the DAV:bind privilege on a calendar collection, or the DAV:write privilege on scheduling object resources, will also need the CALDAV:schedule-send-reply privilege granted on the scheduling Outbox collection of the owner of the calendar collection or scheduling object resource in order to be allowed to create, modify, or delete scheduling object resources in a way that will trigger the CalDAV server to deliver scheduling message replies to the "Organizer".

在日历集合上授予DAV:bind权限或在调度对象资源上授予DAV:write权限的用户还需要在日历集合或调度对象资源所有者的调度发件箱集合上授予CALDAV:schedule send reply权限,以便允许创建、修改、,或删除调度对象资源,其方式将触发CalDAV服务器向“组织者”发送调度消息答复。

     <!ELEMENT schedule-send-reply EMPTY>
        
     <!ELEMENT schedule-send-reply EMPTY>
        
6.2.4. CALDAV:schedule-send-freebusy Privilege
6.2.4. CALDAV:计划发送忙/闲特权

The CALDAV:schedule-send-freebusy privilege controls the use of the POST method to submit scheduling messages that specify the scheduling method "REQUEST" with a "VFREEBUSY" calendar component.

CALDAV:schedule send freebusy特权控制POST方法提交调度消息的使用,该消息使用“VFREEBUSY”日历组件指定调度方法“REQUEST”。

     <!ELEMENT schedule-send-freebusy EMPTY>
        
     <!ELEMENT schedule-send-freebusy EMPTY>
        
6.3. Aggregation of Scheduling Privileges
6.3. 调度权限的聚合

Server implementations MUST aggregate the scheduling privileges as follows:

服务器实现必须按如下方式聚合调度权限:

      DAV:all contains CALDAV:schedule-deliver and CALDAV:schedule-send;
        
      DAV:all contains CALDAV:schedule-deliver and CALDAV:schedule-send;
        
      CALDAV:schedule-deliver contains CALDAV:schedule-deliver-invite,
      CALDAV:schedule-deliver-reply, and CALDAV:schedule-query-freebusy;
        
      CALDAV:schedule-deliver contains CALDAV:schedule-deliver-invite,
      CALDAV:schedule-deliver-reply, and CALDAV:schedule-query-freebusy;
        

CALDAV:schedule-send contains CALDAV:schedule-send-invite, CALDAV: schedule-send-reply, and CALDAV:schedule-send-freebusy.

CALDAV:schedule send包含CALDAV:schedule send invite、CALDAV:schedule send reply和CALDAV:schedule send freebusy。

The following diagram illustrates how scheduling privileges are aggregated according to the above requirements.

下图说明了如何根据上述要求聚合调度权限。

   [DAV:all] (aggregate)
       |
       +-- [CALDAV:schedule-deliver] (aggregate)
       |      |
       |      +-- [CALDAV:schedule-deliver-invite]
       |      +-- [CALDAV:schedule-deliver-reply]
       |      +-- [CALDAV:schedule-query-freebusy]
       |
       +-- [CALDAV:schedule-send] (aggregate)
              |
              +-- [CALDAV:schedule-send-invite]
              +-- [CALDAV:schedule-send-reply]
              +-- [CALDAV:schedule-send-freebusy]
        
   [DAV:all] (aggregate)
       |
       +-- [CALDAV:schedule-deliver] (aggregate)
       |      |
       |      +-- [CALDAV:schedule-deliver-invite]
       |      +-- [CALDAV:schedule-deliver-reply]
       |      +-- [CALDAV:schedule-query-freebusy]
       |
       +-- [CALDAV:schedule-send] (aggregate)
              |
              +-- [CALDAV:schedule-send-invite]
              +-- [CALDAV:schedule-send-reply]
              +-- [CALDAV:schedule-send-freebusy]
        
7. Additional iCalendar Property Parameters
7. 附加iCalendar属性参数

This specification defines additional iCalendar property parameters to support the CalDAV scheduling extensions.

本规范定义了其他iCalendar属性参数,以支持CalDAV调度扩展。

7.1. Schedule Agent Parameter
7.1. 调度代理参数

Parameter Name: SCHEDULE-AGENT

参数名称:SCHEDULE-AGENT

Purpose: To specify the agent expected to deliver scheduling messages to the corresponding "Organizer" or "Attendee".

目的:指定希望将计划消息传递给相应“组织者”或“与会者”的代理。

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

格式定义:此属性参数由以下符号定义:

     scheduleagentparam = "SCHEDULE-AGENT" "="
                      ("SERVER"      ; The server handles scheduling
                     / "CLIENT"      ; The client handles scheduling
                     / "NONE"        ; No scheduling
                     / x-name        ; Experimental type
                     / iana-token)   ; Other IANA-registered type
     ;
     ; If the parameter is not present, its value defaults to SERVER.
     ; "x-name" and "iana-token" are defined in Section 3.1 of
     ; [RFC5545].
        
     scheduleagentparam = "SCHEDULE-AGENT" "="
                      ("SERVER"      ; The server handles scheduling
                     / "CLIENT"      ; The client handles scheduling
                     / "NONE"        ; No scheduling
                     / x-name        ; Experimental type
                     / iana-token)   ; Other IANA-registered type
     ;
     ; If the parameter is not present, its value defaults to SERVER.
     ; "x-name" and "iana-token" are defined in Section 3.1 of
     ; [RFC5545].
        

Description: This property parameter MAY be specified on "ORGANIZER" or "ATTENDEE" iCalendar properties. In the absence of this parameter, the value "SERVER" MUST be used for the default behavior. The value determines whether or not a scheduling operation on a server will cause a scheduling message to be sent to the corresponding calendar user identified by the "ORGANIZER" or "ATTENDEE" property value. When the value "SERVER" is specified, or the parameter is absent, then it is the server's responsibility to send a scheduling message as part of a scheduling operation. When the value "CLIENT" is specified, that indicates that the client is handling scheduling messages with the calendar user itself. When "NONE" is specified, no scheduling messages are being sent to the calendar user.

说明:此属性参数可以在“组织者”或“与会者”iCalendar属性中指定。如果没有此参数,值“SERVER”必须用于默认行为。该值确定服务器上的计划操作是否会导致将计划消息发送给由“组织者”或“与会者”属性值标识的相应日历用户。如果指定了值“SERVER”,或者没有参数,则服务器负责发送调度消息,作为调度操作的一部分。指定值“CLIENT”时,表示客户端正在处理日历用户本身的计划消息。如果指定“无”,则不会向日历用户发送任何计划消息。

Servers MUST NOT include this parameter in any scheduling messages sent as the result of a scheduling operation.

服务器不得在作为调度操作结果发送的任何调度消息中包含此参数。

Clients MUST NOT include this parameter in any scheduling messages that they themselves send.

客户端不得在其自己发送的任何计划消息中包含此参数。

The parameter value MUST be the same on every "ORGANIZER" property in a scheduling object resource.

调度对象资源中每个“组织者”属性的参数值必须相同。

The parameter value MUST be the same on each "ATTENDEE" property whose values match in a scheduling object resource.

在调度对象资源中,其值匹配的每个“ATTENDEE”属性的参数值必须相同。

Servers and clients MUST treat x-name and iana-token values they do not recognize the same way as they would the "NONE" value.

服务器和客户端必须处理x-name和iana令牌值,因为它们不能识别与“无”值相同的方式。

Example:

例子:

     ORGANIZER;SCHEDULE-AGENT=SERVER:mailto:bernard@example.com
     ATTENDEE;SCHEDULE-AGENT=NONE:mailto:cyrus@example.com
        
     ORGANIZER;SCHEDULE-AGENT=SERVER:mailto:bernard@example.com
     ATTENDEE;SCHEDULE-AGENT=NONE:mailto:cyrus@example.com
        
7.2. Schedule Force Send Parameter
7.2. 计划强制发送参数

Parameter Name: SCHEDULE-FORCE-SEND

参数名称:SCHEDULE-FORCE-SEND

Purpose: To force a scheduling message to be sent to the calendar user specified by the property.

目的:强制将计划消息发送给属性指定的日历用户。

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

格式定义:此属性参数由以下符号定义:

     scheduleforcesendparam = "SCHEDULE-FORCE-SEND" "="
                            ("REQUEST"    ; Force a "REQUEST"
                           / "REPLY"      ; Force a "REPLY"
                           / iana-token)
     ;
     ; "iana-token" is defined in Section 3.1 of [RFC5545].  Its value
     ; MUST be an IANA-registered iCalendar "METHOD" property value.
        
     scheduleforcesendparam = "SCHEDULE-FORCE-SEND" "="
                            ("REQUEST"    ; Force a "REQUEST"
                           / "REPLY"      ; Force a "REPLY"
                           / iana-token)
     ;
     ; "iana-token" is defined in Section 3.1 of [RFC5545].  Its value
     ; MUST be an IANA-registered iCalendar "METHOD" property value.
        

Description: This property parameter MAY be specified on "ATTENDEE" and "ORGANIZER" properties on which the "SCHEDULE-AGENT" property parameter is set to the value "SERVER" or is not specified. This property parameter is used to force a server to send a scheduling message to a specific calendar user in situations where the server would not send a scheduling message otherwise (e.g., when no change that warrants the delivery of a new scheduling message was performed on the scheduling object resource). An "Organizer" MAY specify this parameter on an "ATTENDEE" property with the value "REQUEST" to force a "REQUEST" scheduling message to be sent to this "Attendee". An "Attendee" MAY specify this parameter on the "ORGANIZER" with the value "REPLY" to force a "REPLY" scheduling message to be sent to the "Organizer".

说明:此属性参数可以在“与会者”和“组织者”属性上指定,在这些属性上,“日程安排代理”属性参数设置为值“服务器”或未指定。此属性参数用于在服务器不发送计划消息的情况下(例如,在计划对象资源上未执行任何更改以保证传递新的计划消息),强制服务器向特定日历用户发送计划消息。“组织者”可以在值为“REQUEST”的“ATTENDEE”属性上指定此参数,以强制将“REQUEST”计划消息发送到此“ATTENDEE”。“与会者”可以在“组织者”上指定此参数,其值为“回复”,以强制将“回复”计划消息发送给“组织者”。

Servers MUST NOT preserve this property parameter in scheduling object resources, nor include it in any scheduling messages sent as the result of a scheduling operation.

服务器不得在调度对象资源中保留此属性参数,也不得将其包含在作为调度操作结果发送的任何调度消息中。

Clients MUST NOT include this parameter in any scheduling messages that they themselves send.

客户端不得在其自己发送的任何计划消息中包含此参数。

Servers MUST set the "SCHEDULE-STATUS" parameter of the "ATTENDEE" or "ORGANIZER" to 2.3 (i.e., "Success; invalid property parameter ignored"; see Section 3.6 of [RFC5546]) when the "SCHEDULE-FORCE-SEND" parameter is set to an iana-token value they do not recognize.

当“SCHEDULE-FORCE-SEND”参数设置为无法识别的iana令牌值时,服务器必须将“ATTENDEE”或“ORGANIZER”的“SCHEDULE-STATUS”参数设置为2.3(即“Success;忽略无效属性参数;请参阅[RFC5546]第3.6节)。

Example:

例子:

     ORGANIZER;SCHEDULE-FORCE-SEND=REPLY:mailto:cyrus@example.com
     ATTENDEE;SCHEDULE-FORCE-SEND=REQUEST:mailto:bernard@example.com
        
     ORGANIZER;SCHEDULE-FORCE-SEND=REPLY:mailto:cyrus@example.com
     ATTENDEE;SCHEDULE-FORCE-SEND=REQUEST:mailto:bernard@example.com
        
7.3. Schedule Status Parameter
7.3. 计划状态参数

Parameter Name: SCHEDULE-STATUS

参数名称:计划状态

Purpose: To specify the status codes returned from processing of the most recent scheduling message sent to the corresponding "Attendee", or received from the corresponding "Organizer".

目的:指定处理发送给相应“与会者”或从相应“组织者”接收的最新日程安排消息时返回的状态代码。

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

格式定义:此属性参数由以下符号定义:

     schedulestatusparam = "SCHEDULE-STATUS" "="
                         ( statcode
                        / DQUOTE statcode *("," statcode) DQUOTE)
     ;
     ; "statcode" is defined in Section 3.8.8.3 of [RFC5545].  The
     ; value is a single "statcode" or a comma-separated list of
     ; "statcode" values.
        
     schedulestatusparam = "SCHEDULE-STATUS" "="
                         ( statcode
                        / DQUOTE statcode *("," statcode) DQUOTE)
     ;
     ; "statcode" is defined in Section 3.8.8.3 of [RFC5545].  The
     ; value is a single "statcode" or a comma-separated list of
     ; "statcode" values.
        

Description: This property parameter MAY be specified on the "ATTENDEE" and "ORGANIZER" properties.

说明:此属性参数可以在“与会者”和“组织者”属性上指定。

Servers MUST only add or change this property parameter on any "ATTENDEE" properties corresponding to calendar users who were sent a scheduling message via a scheduling operation. Clients SHOULD NOT change or remove this parameter if it was provided by the server. In the case where the client is handling the scheduling, the client MAY add, change, or remove this parameter to indicate the last scheduling message status it received.

服务器只能在与通过调度操作发送调度消息的日历用户相对应的任何“ATTENDEE”属性上添加或更改此属性参数。如果此参数是由服务器提供的,则客户端不应更改或删除此参数。在客户机正在处理调度的情况下,客户机可以添加、更改或删除此参数,以指示其收到的上一个调度消息状态。

Servers MUST add this parameter to any "ORGANIZER" properties corresponding to calendar users who were sent a scheduling message reply by an "Attendee" via a scheduling operation. Clients SHOULD NOT change or remove this parameter if it was provided by the server. In the case where the client is handling the scheduling, the client MAY add, change, or remove this parameter to indicate the last scheduling message status it received.

服务器必须将此参数添加到与日历用户对应的任何“组织者”属性中,日历用户通过调度操作收到“与会者”发送的调度消息答复。如果此参数是由服务器提供的,则客户端不应更改或删除此参数。在客户机正在处理调度的情况下,客户机可以添加、更改或删除此参数,以指示其收到的上一个调度消息状态。

Servers MUST NOT include this parameter in any scheduling messages sent as the result of a scheduling operation.

服务器不得在作为调度操作结果发送的任何调度消息中包含此参数。

Clients MUST NOT include this parameter in any scheduling messages that they themselves send.

客户端不得在其自己发送的任何计划消息中包含此参数。

Values for this property parameter are described in Section 3.2.9.

第3.2.9节描述了该特性参数的值。

Example:

例子:

     ATTENDEE;SCHEDULE-STATUS="2.0":mailto:bernard@example.com
     ATTENDEE;SCHEDULE-STATUS="2.0,2.4":mailto:cyrus@example.com
        
     ATTENDEE;SCHEDULE-STATUS="2.0":mailto:bernard@example.com
     ATTENDEE;SCHEDULE-STATUS="2.0,2.4":mailto:cyrus@example.com
        
8. Additional Message Header Fields
8. 其他消息头字段

This specification defines additional HTTP request and response headers for use with CalDAV.

本规范定义了用于CalDAV的其他HTTP请求和响应头。

8.1. Schedule-Reply Request Header
8.1. 调度应答请求头
     Schedule-Reply = "Schedule-Reply" ":" ("T" | "F")
        
     Schedule-Reply = "Schedule-Reply" ":" ("T" | "F")
        

Example:

例子:

Schedule-Reply: F

附表答复:F

When an "Attendee" removes a scheduling object resource as per Section 3.2.2.4, and the Schedule-Reply header is set to the value "T" (true) or is not present, the server MUST send an appropriate reply scheduling message with the "Attendee's" "PARTSTAT" iCalendar property parameter value set to "DECLINED" as part of its normal scheduling operation processing.

当“与会者”根据第3.2.2.4节删除计划对象资源,并且计划回复标头设置为值“T”(true)或不存在时,服务器必须发送适当的回复计划消息,并将“与会者的”“PARTSTAT”iCalendar属性参数值设置为“谢绝”作为其正常调度操作处理的一部分。

When the Schedule-Reply header is set to the value "F" (false), the server MUST NOT send a scheduling message as part of its normal scheduling operation processing.

当Schedule Reply标头设置为值“F”(false)时,服务器不得发送调度消息作为其正常调度操作处理的一部分。

The Schedule-Reply request header is used by a client to indicate to a server whether or not a scheduling operation ought to occur when an "Attendee" deletes a scheduling object resource. In particular, it controls whether a reply scheduling message is sent to the "Organizer" as a result of the removal. There are situations in which unsolicited scheduling messages need to be silently removed (or ignored) for security or privacy reasons. This request header allows the scheduling object resource to be removed if such a need arises.

当“与会者”删除调度对象资源时,客户端使用调度应答请求头向服务器指示是否应该执行调度操作。特别是,它控制是否由于删除而向“组织者”发送回复计划消息。在某些情况下,出于安全或隐私原因,需要悄悄删除(或忽略)未经请求的计划消息。如果需要,此请求头允许删除调度对象资源。

8.2. Schedule-Tag Response Header
8.2. 调度标记响应头

The Schedule-Tag response header provides the current value of the CALDAV:schedule-tag property value. The behavior of this response header is described in Section 3.2.10.

Schedule Tag response标头提供CALDAV:Schedule Tag属性值的当前值。第3.2.10节描述了该响应标题的行为。

All scheduling object resources MUST support the Schedule-Tag header.

所有调度对象资源都必须支持调度标记标头。

Schedule-Tag = "Schedule-Tag" ":" opaque-tag ; "opaque-tag" is defined in Section 3.11 of [RFC2616].

Schedule Tag=“Schedule Tag”“:”不透明标记;[RFC2616]第3.11节定义了“不透明标签”。

Example:

例子:

Schedule-Tag: "12ab34-cd56ef"

计划标签:“12ab34-cd56ef”

8.3. If-Schedule-Tag-Match Request Header
8.3. 如果计划标记与请求头匹配

The If-Schedule-Tag-Match request header field is used with a method to make it conditional. Clients can set this header to the value returned in the Schedule-Tag response header, or the CALDAV:schedule-tag property, of a scheduling object resource previously retrieved from the server to avoid overwriting "consequential" changes to the scheduling object resource.

If Schedule Tag Match request header字段与方法一起使用,以使其具有条件。客户端可以将此标头设置为以前从服务器检索到的调度对象资源的调度标记响应标头中返回的值,或CALDAV:Schedule-Tag属性,以避免覆盖对调度对象资源的“相应”更改。

All scheduling object resources MUST support the If-Schedule-Tag-Match header.

所有调度对象资源都必须支持If调度标记匹配标头。

If-Schedule-Tag-Match = "If-Schedule-Tag-Match" ":" opaque-tag ; "opaque-tag" is defined in Section 3.11 of [RFC2616].

If Schedule Tag Match=“If Schedule Tag Match”“:”不透明标记;[RFC2616]第3.11节定义了“不透明标签”。

Example:

例子:

If-Schedule-Tag-Match: "12ab34-cd56ef"

如果计划标签匹配:“12ab34-cd56ef”

9. Additional WebDAV Properties
9. 其他WebDAV属性

This specification defines the following new WebDAV properties for use with CalDAV.

本规范定义了以下与CalDAV一起使用的新WebDAV属性。

9.1. CALDAV:schedule-calendar-transp Property
9.1. CALDAV:日程日历传输属性

Name: schedule-calendar-transp

名称:日程日历运输

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Purpose: Determines whether the calendar object resources in a calendar collection will affect the owner's busy time information.

目的:确定日历集合中的日历对象资源是否会影响所有者的繁忙时间信息。

Protected: This property MAY be protected and SHOULD NOT be returned by a PROPFIND DAV:allprop request (as defined in Section 14.2 of [RFC4918]).

受保护:此属性可能受保护,不应通过PROPFIND DAV:allprop请求返回(定义见[RFC4918]第14.2节)。

COPY/MOVE behavior: This property value SHOULD be kept during a MOVE operation, and SHOULD be copied and preserved in a COPY.

复制/移动行为:此属性值应在移动操作期间保留,并应在副本中复制和保留。

Description: This property SHOULD be defined on all calendar collections. If present, it contains one of two XML elements that indicate whether the calendar object resources in the calendar collection ought to contribute to the owner's busy time. When the CALDAV:opaque element is used, all calendar object resources in the corresponding calendar collection MUST contribute to busy time, assuming that access privileges and other iCalendar properties allow it to. When the CALDAV:transparent XML element is used, the calendar object resources in the corresponding calendar collection MUST NOT contribute to busy time.

说明:应在所有日历集合上定义此属性。如果存在,它将包含两个XML元素之一,这两个XML元素指示日历集合中的日历对象资源是否应该为所有者的繁忙时间做出贡献。使用CALDAV:opaque元素时,假设访问权限和其他iCalendar属性允许,则相应日历集合中的所有日历对象资源都必须占用繁忙时间。使用CALDAV:transparent XML元素时,相应日历集合中的日历对象资源不得影响繁忙时间。

If this property is not present on a calendar collection, then the default value CALDAV:opaque MUST be assumed.

如果日历集合上不存在此属性,则必须假定默认值CALDAV:opaque。

Definition:

定义:

     <!ELEMENT schedule-calendar-transp (opaque | transparent)>
        
     <!ELEMENT schedule-calendar-transp (opaque | transparent)>
        
     <!ELEMENT opaque EMPTY>
     <!-- Affects busy time searches -->
        
     <!ELEMENT opaque EMPTY>
     <!-- Affects busy time searches -->
        
     <!ELEMENT transparent EMPTY>
     <!-- Invisible to busy time searches -->
        
     <!ELEMENT transparent EMPTY>
     <!-- Invisible to busy time searches -->
        

Example:

例子:

     <C:schedule-calendar-transp
          xmlns:C="urn:ietf:params:xml:ns:caldav">
       <C:opaque/>
     </C:schedule-calendar-transp>
        
     <C:schedule-calendar-transp
          xmlns:C="urn:ietf:params:xml:ns:caldav">
       <C:opaque/>
     </C:schedule-calendar-transp>
        
9.2. CALDAV:schedule-default-calendar-URL Property
9.2. CALDAV:计划默认日历URL属性

Name: schedule-default-calendar-URL

名称:计划默认日历URL

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Purpose: Specifies a default calendar for an "Attendee" where new scheduling object resources are created.

目的:指定“与会者”的默认日历,在该日历中创建新的日程安排对象资源。

Protected: This property MAY be protected in the case where a server does not support changing the default calendar, or does not support a default calendar.

受保护:当服务器不支持更改默认日历或不支持默认日历时,此属性可能受到保护。

COPY/MOVE behavior: This property is only defined on a scheduling Inbox collection that cannot be moved or copied.

复制/移动行为:此属性仅在无法移动或复制的计划收件箱集合上定义。

Description: This property MAY be defined on a scheduling Inbox collection. If present, it contains zero or one DAV:href XML elements. When a DAV:href element is present, its value indicates a URL to a calendar collection that is used as the default calendar. When no DAV:href element is present, it indicates that there is no default calendar. In the absence of this property, there is no default calendar. When there is no default calendar, the server is free to choose the calendar in which a new scheduling object resource is created. See Section 4.3.

描述:此属性可以在计划收件箱集合上定义。如果存在,则它包含零个或一个DAV:href XML元素。当存在DAV:href元素时,其值表示用作默认日历的日历集合的URL。如果没有DAV:href元素,则表示没有默认日历。如果没有此属性,则没有默认日历。如果没有默认日历,服务器可以自由选择在其中创建新调度对象资源的日历。见第4.3节。

Definition:

定义:

     <!ELEMENT schedule-default-calendar-URL (DAV:href?)>
        
     <!ELEMENT schedule-default-calendar-URL (DAV:href?)>
        

Example:

例子:

     <C:schedule-default-calendar-URL xmlns:D="DAV:"
         xmlns:C="urn:ietf:params:xml:ns:caldav">
       <D:href>/home/cyrus/calendars/work/</D:href>
     </C:schedule-default-calendar-URL>
        
     <C:schedule-default-calendar-URL xmlns:D="DAV:"
         xmlns:C="urn:ietf:params:xml:ns:caldav">
       <D:href>/home/cyrus/calendars/work/</D:href>
     </C:schedule-default-calendar-URL>
        
9.3. CALDAV:schedule-tag Property
9.3. CALDAV:明细表标记属性

Name: schedule-tag

名称:计划标签

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Purpose: Indicates whether a scheduling object resource has had a "consequential" change made to it.

目的:指示调度对象资源是否有“相应”更改。

Value: opaque-tag (defined in Section 3.11 of [RFC2616])

值:不透明标签(定义见[RFC2616]第3.11节)

Protected: This property MUST be protected, as only the server can update the value.

受保护:必须保护此属性,因为只有服务器才能更新该值。

COPY/MOVE behavior: This property value is determined by the server and MAY be different from the value on the source resource.

复制/移动行为:此属性值由服务器确定,可能与源资源上的值不同。

Description: The CALDAV:schedule-tag property MUST be defined on all scheduling object resources. This property is described in Section 3.2.10.

描述:必须在所有调度对象资源上定义CALDAV:schedule标记属性。第3.2.10节描述了该特性。

Definition:

定义:

     <!ELEMENT schedule-tag (#PCDATA)>
        
     <!ELEMENT schedule-tag (#PCDATA)>
        

Example:

例子:

     <C:schedule-tag xmlns:C="urn:ietf:params:xml:ns:caldav"
     >"12345-67890"</C:schedule-tag>
        
     <C:schedule-tag xmlns:C="urn:ietf:params:xml:ns:caldav"
     >"12345-67890"</C:schedule-tag>
        
10. XML Element Definitions
10. XML元素定义
10.1. CALDAV:schedule-response XML Element
10.1. CALDAV:调度响应XML元素

Name: schedule-response

名称:进度响应

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Purpose: Contains the set of responses for a POST method request.

目的:包含POST方法请求的响应集。

Description: See Section 5.

说明:见第5节。

Definition:

定义:

     <!ELEMENT schedule-response (response*)>
        
     <!ELEMENT schedule-response (response*)>
        
10.2. CALDAV:response XML Element
10.2. CALDAV:响应XML元素

Name: response

姓名:回应

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Purpose: Contains a single response for a POST method request.

目的:包含POST方法请求的单个响应。

Description: See Section 5.

说明:见第5节。

Definition:

定义:

<!ELEMENT response (recipient, request-status, calendar-data?, DAV:error?, DAV:responsedescription?)>

<!元素响应(收件人、请求状态、日历数据?、DAV:错误?、DAV:响应描述?>

     <!-- CALDAV:calendar-data is defined in Section 9.6 of
     RFC 4791 and when used here uses the definition with
     content (#PCDATA) only. -->
        
     <!-- CALDAV:calendar-data is defined in Section 9.6 of
     RFC 4791 and when used here uses the definition with
     content (#PCDATA) only. -->
        
10.3. CALDAV:recipient XML Element
10.3. CALDAV:收件人XML元素

Name: recipient

姓名:收件人

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Purpose: The calendar user address that the enclosing response for a POST method request is for.

用途:用于POST方法请求的封闭响应的日历用户地址。

Description: See Section 5.

说明:见第5节。

Definition:

定义:

     <!ELEMENT recipient (DAV:href)>
        
     <!ELEMENT recipient (DAV:href)>
        
10.4. CALDAV:request-status XML Element
10.4. CALDAV:请求状态XML元素

Name: request-status

名称:请求状态

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Purpose: The iTIP "REQUEST-STATUS" property value for this response.

用途:此响应的iTIP“请求状态”属性值。

Description: See Section 5.

说明:见第5节。

Definition:

定义:

     <!ELEMENT request-status (#PCDATA)>
        
     <!ELEMENT request-status (#PCDATA)>
        
11. Security Considerations
11. 安全考虑

The process of scheduling involves the sending and receiving of scheduling messages. As a result, the security problems related to messaging in general are relevant here. In particular, the authenticity of the scheduling messages needs to be verified. Servers and clients MUST use an HTTP connection protected with Transport Layer Security (TLS) as defined in [RFC2818] for all scheduling operations. Clients MUST use the procedures detailed in Section 6 of [RFC6125] to verify the authenticity of the server. Servers MUST make use of HTTP authentication [RFC2617] to verify the authenticity of the calendar user for whom the client is sending requests.

调度过程包括发送和接收调度消息。因此,与消息传递相关的安全问题通常与此相关。特别是,需要验证调度消息的真实性。对于所有调度操作,服务器和客户端必须使用[RFC2818]中定义的受传输层安全性(TLS)保护的HTTP连接。客户端必须使用[RFC6125]第6节中详述的程序来验证服务器的真实性。服务器必须使用HTTP身份验证[RFC2617]来验证客户端为其发送请求的日历用户的真实性。

11.1. Preventing Denial-of-Service Attacks
11.1. 防止拒绝服务攻击

Servers MUST ensure that clients cannot consume excessive server resources by carrying out "large" scheduling operations. In particular, servers SHOULD enforce CALDAV:max-resource-size, CALDAV: max-instances, and CALDAV:max-attendees-per-instance preconditions as applicable for scheduling Inbox and Outbox collections.

服务器必须确保客户端不能通过执行“大型”调度操作来消耗过多的服务器资源。特别是,服务器应强制执行CALDAV:max resource size、CALDAV:max instances和CALDAV:max attendeers per instance先决条件(适用于安排收件箱和发件箱集合)。

11.2. Verifying Scheduling Operations
11.2. 验证调度操作

When handling a scheduling operation:

处理计划操作时:

1. Servers MUST verify that the principal associated with the DAV: owner of the calendar collection in which a scheduling object resource is being manipulated contains a CALDAV:schedule-outbox-URL property value.

1. 服务器必须验证与正在其中操作调度对象资源的日历集合的DAV:owner关联的主体是否包含CALDAV:schedule发件箱URL属性值。

2. Servers MUST verify that the currently authenticated user has the CALDAV:schedule-send privilege, or a sub-privilege aggregated under this privilege, on the scheduling Outbox collection of the DAV:owner of the calendar collection in which a scheduling object resource is being manipulated.

2. 服务器必须验证当前经过身份验证的用户是否具有CALDAV:schedule send权限,或者在正在操作调度对象资源的日历集合的DAV:owner的调度发件箱集合上具有在此权限下聚合的子权限。

3. Servers MUST only deliver scheduling messages to recipients when the CALDAV:schedule-deliver privilege, or a sub-privilege aggregated under this privilege, is granted on the recipient's scheduling Inbox collection for the principal associated with the DAV:owner of the calendar collection in which a scheduling object resource is being manipulated.

3. 对于与正在操作调度对象资源的日历集合的DAV:所有者关联的主体,在收件人的调度收件箱集合上授予CALDAV:schedule deliver权限或在此权限下聚合的子权限时,服务器只能将调度消息传递给收件人。

4. To prevent impersonation of calendar users, the server MUST verify that the "ORGANIZER" property in an organizer scheduling object resource matches one of the calendar user addresses of the DAV:owner of the calendar collection in which the resource is stored.

4. 若要防止模拟日历用户,服务器必须验证ORGANIZER调度对象资源中的“ORGANIZER”属性是否与存储资源的日历集合的DAV:所有者的日历用户地址之一匹配。

5. To prevent spoofing of an existing scheduling object resource, servers MUST verify that the "UID" iCalendar property value in a new scheduling object resource does not match that of an existing scheduling object resource with a different "ORGANIZER" property value.

5. 为防止对现有调度对象资源进行欺骗,服务器必须验证新调度对象资源中的“UID”iCalendar属性值与具有不同“ORGANIZER”属性值的现有调度对象资源的“UID”iCalendar属性值不匹配。

11.3. Verifying Busy Time Information Requests
11.3. 验证繁忙时间信息请求

When handling a POST request on a scheduling Outbox collection:

在调度发件箱集合上处理POST请求时:

1. Servers MUST verify that the principal associated with the calendar user address specified in the "ORGANIZER" property of the scheduling message data in the request contains a CALDAV: schedule-outbox-URL property value that matches the scheduling Outbox collection targeted by the request.

1. 服务器必须验证与请求中计划消息数据的“ORGANIZER”属性中指定的日历用户地址关联的主体是否包含与请求所针对的计划发件箱集合匹配的CALDAV:schedule outbox URL属性值。

2. Servers MUST verify that the currently authenticated user has the CALDAV:schedule-send privilege, or a sub-privilege aggregated under this privilege, on the scheduling Outbox collection targeted by the request.

2. 服务器必须验证当前经过身份验证的用户在请求所针对的调度发件箱集合上是否具有CALDAV:schedule send权限或在此权限下聚合的子权限。

3. Servers MUST only return valid freebusy information for recipients when the CALDAV:schedule-deliver privilege, or a sub-privilege aggregated under this privilege, is granted on the recipient's scheduling Inbox collection for the principal associated with the DAV:owner of the scheduling Outbox collection targeted by the request.

3. 对于与请求所针对的调度发件箱集合的DAV:所有者关联的主体,在收件人的调度收件箱集合上授予CALDAV:schedule deliver权限或在此权限下聚合的子权限时,服务器只能为收件人返回有效的忙/闲信息。

11.4. Privacy Issues
11.4. 隐私问题

This specification only defines how calendar users on the same server are able to schedule with each other -- unauthenticated users have no way to carry out scheduling operations. Access control privileges (as per Section 6) can control which of those users can schedule with others. Calendar users not wishing to expose their calendar information to other users can do so by denying privileges to specific users, or all users, for all scheduling operations, or perhaps only freebusy.

此规范仅定义同一服务器上的日历用户如何相互调度—未经验证的用户无法执行调度操作。访问控制权限(根据第6节)可以控制哪些用户可以与其他人一起计划。不希望向其他用户公开其日历信息的日历用户可以通过拒绝特定用户或所有用户对所有调度操作的权限,或者可能仅限于忙/闲来实现。

"Attendees" can also use the Schedule-Reply request header (Section 8.1) with the value set to "F" to prevent notification to an "Organizer" that a scheduling object resource was deleted. This allows "Attendees" to remove unwanted scheduling messages without any response to the "Organizer".

“与会者”还可以使用值设置为“F”的日程回复请求标头(第8.1节),以防止通知“组织者”日程对象资源已被删除。这允许“与会者”删除不需要的日程安排消息,而无需对“组织者”做出任何响应。

Servers MUST NOT expose any private iCalendar data, or WebDAV resource state information (URLs, WebDAV properties, etc.) for one calendar user to another via scheduling messages or error responses to scheduling operations. In particular, as per Section 8.1 of [RFC4918], authorization errors MUST take preference over other errors.

服务器不得通过调度消息或对调度操作的错误响应将一个日历用户的任何私有iCalendar数据或WebDAV资源状态信息(URL、WebDAV属性等)公开给另一个日历用户。特别是,根据[RFC4918]第8.1节,授权错误必须优先于其他错误。

11.5. Mitigation of iTIP Threats
11.5. 缓解iTIP威胁

Section 6.1 of iTIP [RFC5546] defines a set of potential threats in a scheduling system, and Section 6.2 of [RFC5546] defines recommendations on how those can be addressed in protocols using iTIP. This specification addresses the iTIP threats in the following manner:

iTIP[RFC5546]第6.1节定义了调度系统中的一组潜在威胁,[RFC5546]第6.2节定义了如何在使用iTIP的协议中解决这些威胁的建议。本规范通过以下方式解决iTIP威胁:

Spoofing the "Organizer": Addressed by item 4 in Section 11.2.

欺骗“组织者”:通过第11.2节第4项解决。

Spoofing the "Attendee": Addressed by Section 3.2.2.1 and item 2 in Section 11.2.

欺骗“与会者”:由第3.2.2.1节和第11.2节第2项解决。

Unauthorized Replacement of the "Organizer": Addressed by item 5 in Section 11.2.

未经授权更换“组织者”:根据第11.2节第5项解决。

Eavesdropping and Data Integrity: Addressed by requiring TLS.

窃听和数据完整性:通过要求TLS解决。

Flooding a Calendar: Addressed by requirements in Section 11.1.

淹没日历:根据第11.1节的要求解决。

Unauthorized REFRESH Requests: This specification does not support the REFRESH method.

未经授权的刷新请求:此规范不支持刷新方法。

12. IANA Considerations
12. IANA考虑
12.1. Message Header Field Registrations
12.1. 消息头字段注册

The message header fields below have been added to the Permanent Message Header Field Registry (see [RFC3864]).

下面的消息头字段已添加到永久消息头字段注册表中(请参阅[RFC3864])。

12.1.1. Schedule-Reply
12.1.1. 附表答复

Header field name: Schedule-Reply

标题字段名称:计划回复

Applicable protocol: http

适用协议:http

Status: standard

状态:标准

Author/Change controller: IETF

作者/变更控制员:IETF

Specification document(s): this specification (Section 8.1)

规范文件:本规范(第8.1节)

Related information: none

相关信息:无

12.1.2. Schedule-Tag
12.1.2. 明细表标签

Header field name: Schedule-Tag

标题字段名称:计划标签

Applicable protocol: http

适用协议:http

Status: standard

状态:标准

Author/Change controller: IETF

作者/变更控制员:IETF

Specification document(s): this specification (Section 8.2)

规范文件:本规范(第8.2节)

Related information: none

相关信息:无

12.1.3. If-Schedule-Tag-Match
12.1.3. 如果计划标签匹配

Header field name: If-Schedule-Tag-Match

标题字段名称:如果计划标记匹配

Applicable protocol: http

适用协议:http

Status: standard

状态:标准

Author/Change controller: IETF

作者/变更控制员:IETF

Specification document(s): this specification (Section 8.3)

规范文件:本规范(第8.3节)

Related information: none

相关信息:无

12.2. iCalendar Property Parameter Registrations
12.2. iCalendar属性参数注册

The following iCalendar property parameter names have been added to the iCalendar Parameters Registry defined in Section 8.3.3 of [RFC5545].

以下iCalendar属性参数名称已添加到[RFC5545]第8.3.3节中定义的iCalendar参数注册表中。

         +---------------------+---------+-----------------------+
         | Parameter           | Status  | Reference             |
         +---------------------+---------+-----------------------+
         | SCHEDULE-AGENT      | Current | RFC 6638, Section 7.1 |
         |                     |         |                       |
         | SCHEDULE-STATUS     | Current | RFC 6638, Section 7.3 |
         |                     |         |                       |
         | SCHEDULE-FORCE-SEND | Current | RFC 6638, Section 7.2 |
         +---------------------+---------+-----------------------+
        
         +---------------------+---------+-----------------------+
         | Parameter           | Status  | Reference             |
         +---------------------+---------+-----------------------+
         | SCHEDULE-AGENT      | Current | RFC 6638, Section 7.1 |
         |                     |         |                       |
         | SCHEDULE-STATUS     | Current | RFC 6638, Section 7.3 |
         |                     |         |                       |
         | SCHEDULE-FORCE-SEND | Current | RFC 6638, Section 7.2 |
         +---------------------+---------+-----------------------+
        
12.3. iCalendar REQUEST-STATUS Value Registrations
12.3. iCalendar请求状态值注册

The following iCalendar "REQUEST-STATUS" values have been added to the iCalendar REQUEST-STATUS Value Registry defined in Section 7.3 of [RFC5546].

以下iCalendar“请求状态”值已添加到[RFC5546]第7.3节中定义的iCalendar请求状态值注册表中。

           +-------------+---------+---------------------------+
           | Status Code | Status  | Reference                 |
           +-------------+---------+---------------------------+
           | 1.0         | Current | RFC 6638, Section 3.2.9.1 |
           |             |         |                           |
           | 1.1         | Current | RFC 6638, Section 3.2.9.2 |
           |             |         |                           |
           | 1.2         | Current | RFC 6638, Section 3.2.9.3 |
           +-------------+---------+---------------------------+
        
           +-------------+---------+---------------------------+
           | Status Code | Status  | Reference                 |
           +-------------+---------+---------------------------+
           | 1.0         | Current | RFC 6638, Section 3.2.9.1 |
           |             |         |                           |
           | 1.1         | Current | RFC 6638, Section 3.2.9.2 |
           |             |         |                           |
           | 1.2         | Current | RFC 6638, Section 3.2.9.3 |
           +-------------+---------+---------------------------+
        
12.4. Additional iCalendar Elements Registries
12.4. 附加iCalendar元素注册表

Per this specification, two new IANA registries for iCalendar elements have been added. Additional codes MAY be used, provided the process described in Section 8.2.1 of [RFC5545] is used to register them.

根据本规范,为iCalendar元素添加了两个新的IANA注册表。如果使用[RFC5545]第8.2.1节中所述的过程对其进行注册,则可以使用其他代码。

12.4.1. Schedule Agent Values Registry
12.4.1. 计划代理值注册表

The following table has been used to initialize the Schedule Agent Values Registry.

下表已用于初始化Schedule Agent值注册表。

           +----------------+---------+-----------------------+
           | Schedule Agent | Status  | Reference             |
           +----------------+---------+-----------------------+
           | SERVER         | Current | RFC 6638, Section 7.1 |
           |                |         |                       |
           | CLIENT         | Current | RFC 6638, Section 7.1 |
           |                |         |                       |
           | NONE           | Current | RFC 6638, Section 7.1 |
           +----------------+---------+-----------------------+
        
           +----------------+---------+-----------------------+
           | Schedule Agent | Status  | Reference             |
           +----------------+---------+-----------------------+
           | SERVER         | Current | RFC 6638, Section 7.1 |
           |                |         |                       |
           | CLIENT         | Current | RFC 6638, Section 7.1 |
           |                |         |                       |
           | NONE           | Current | RFC 6638, Section 7.1 |
           +----------------+---------+-----------------------+
        
12.4.2. Schedule Force Send Values Registry
12.4.2. 计划强制发送值注册表

The following table has been used to initialize the Schedule Force Send Values Registry.

下表用于初始化Schedule Force Send Values注册表。

         +---------------------+---------+-----------------------+
         | Schedule Force Send | Status  | Reference             |
         +---------------------+---------+-----------------------+
         | REQUEST             | Current | RFC 6638, Section 7.2 |
         |                     |         |                       |
         | REPLY               | Current | RFC 6638, Section 7.2 |
         +---------------------+---------+-----------------------+
        
         +---------------------+---------+-----------------------+
         | Schedule Force Send | Status  | Reference             |
         +---------------------+---------+-----------------------+
         | REQUEST             | Current | RFC 6638, Section 7.2 |
         |                     |         |                       |
         | REPLY               | Current | RFC 6638, Section 7.2 |
         +---------------------+---------+-----------------------+
        
13. Acknowledgements
13. 致谢

The authors would like to thank the following individuals for contributing their ideas and support for writing this specification: Mike Douglass, Lisa Dusseault, Red Dutta, Jacob Farkas, Jeffrey Harris, Helge Hess, Eliot Lear, Andrew McMillan, Alexey Melnikov, Arnaud Quillaud, Julian F. Reschke, Wilfredo Sanchez Vega, and Simon Vaillancourt.

作者要感谢以下个人为编写本规范贡献了他们的想法和支持:迈克·道格拉斯、丽莎·杜肖尔、瑞德·杜塔、雅各布·法卡斯、杰弗里·哈里斯、赫尔格·赫斯、艾略特·李尔、安德鲁·麦克米兰、阿列克西·梅尔尼科夫、阿诺·奎劳德、朱利安·F·雷什克、威尔弗雷多·桑切斯·维加和西蒙·维兰科特。

The authors would also like to thank the Calendaring and Scheduling Consortium for advice with this specification, and for organizing interoperability testing events to help refine it.

作者还想感谢日历和日程安排协会对本规范的建议,以及组织互操作性测试活动以帮助完善本规范。

14. References
14. 工具书类
14.1. Normative References
14.1. 规范性引用文件

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

[RFC2616]菲尔丁,R.,盖蒂斯,J.,莫卧儿,J.,弗莱斯蒂克,H.,马斯特,L.,利奇,P.,和T.伯纳斯李,“超文本传输协议——HTTP/1.1”,RFC 2616,1999年6月。

[RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach, P., Luotonen, A., and L. Stewart, "HTTP Authentication: Basic and Digest Access Authentication", RFC 2617, June 1999.

[RFC2617]Franks,J.,Hallam Baker,P.,Hostetler,J.,Lawrence,S.,Leach,P.,Lootonen,A.,和L.Stewart,“HTTP认证:基本和摘要访问认证”,RFC 26171999年6月。

[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.

[RFC2818]Rescorla,E.,“TLS上的HTTP”,RFC2818,2000年5月。

[RFC3744] Clemm, G., Reschke, J., Sedlar, E., and J. Whitehead, "Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol", RFC 3744, May 2004.

[RFC3744]Clemm,G.,Reschke,J.,Sedlar,E.,和J.Whitehead,“Web分布式创作和版本控制(WebDAV)访问控制协议”,RFC 3744,2004年5月。

[RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration Procedures for Message Header Fields", BCP 90, RFC 3864, September 2004.

[RFC3864]Klyne,G.,Nottingham,M.和J.Mogul,“消息头字段的注册程序”,BCP 90,RFC 3864,2004年9月。

[RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault, "Calendaring Extensions to WebDAV (CalDAV)", RFC 4791, March 2007.

[RFC4791]Daboo,C.,Desruisseaux,B.,和L.Dusseault,“WebDAV(CalDAV)的日历扩展”,RFC 47912007年3月。

[RFC4918] Dusseault, L., Ed., "HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)", RFC 4918, June 2007.

[RFC4918]Dusseault,L.,Ed.“Web分布式创作和版本控制(WebDAV)的HTTP扩展”,RFC4918,2007年6月。

[RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008.

[RFC5234]Crocker,D.,Ed.,和P.Overell,“语法规范的扩充BNF:ABNF”,STD 68,RFC 5234,2008年1月。

[RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and Scheduling Core Object Specification (iCalendar)", RFC 5545, September 2009.

[RFC5545]Desruisseaux,B.,Ed.“互联网日历和调度核心对象规范(iCalendar)”,RFC 55452009年9月。

[RFC5546] Daboo, C., Ed., "iCalendar Transport-Independent Interoperability Protocol (iTIP)", RFC 5546, December 2009.

[RFC5546]Daboo,C.,Ed.“iCalendar传输独立互操作性协议(iTIP)”,RFC5462009年12月。

[RFC6125] Saint-Andre, P. and J. Hodges, "Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)", RFC 6125, March 2011.

[RFC6125]Saint Andre,P.和J.Hodges,“在传输层安全(TLS)环境下使用X.509(PKIX)证书在互联网公钥基础设施中表示和验证基于域的应用程序服务标识”,RFC 61252011年3月。

[W3C.REC-xml-20081126] Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E., and F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth Edition)", World Wide Web Consortium Recommendation REC-xml-20081126, November 2008, <http://www.w3.org/TR/2008/REC-xml-20081126>.

[W3C.REC-xml-20081126]Bray,T.,Paoli,J.,Sperberg McQueen,C.,Maler,E.,和F.Yergeau,“可扩展标记语言(xml)1.0(第五版)”,万维网联盟建议REC-xml-20081126,2008年11月<http://www.w3.org/TR/2008/REC-xml-20081126>.

14.2. Informative References
14.2. 资料性引用

[RFC6047] Melnikov, A., Ed., "iCalendar Message-Based Interoperability Protocol (iMIP)", RFC 6047, December 2010.

[RFC6047]Melnikov,A.,Ed.“基于iCalendar消息的互操作性协议(iMIP)”,RFC 6047,2010年12月。

Appendix A. Scheduling Privileges Summary
附录A.调度权限摘要
A.1. Scheduling Inbox Privileges
A.1. 计划收件箱权限

The following tables specify which scheduling privileges grant the right to a calendar user to deliver a scheduling message to the scheduling Inbox collection of another calendar user. The appropriate behavior depends on the calendar component type as well as the scheduling "METHOD" specified in the scheduling message.

下表指定哪些调度权限授予日历用户向另一日历用户的调度收件箱集合传递调度消息的权限。适当的行为取决于日历组件类型以及计划消息中指定的计划“方法”。

                                 +--------------------------------+
                                 |  METHOD for VEVENT and VTODO   |
   +-----------------------------+---------+-------+-----+--------+
   | Scheduling Inbox Privilege  | REQUEST | REPLY | ADD | CANCEL |
   +-----------------------------+---------+-------+-----+--------+
   | schedule-deliver            |    *    |   *   |  *  |   *    |
   |   schedule-deliver-invite   |    *    |       |  *  |   *    |
   |   schedule-deliver-reply    |         |   *   |     |        |
   |   schedule-query-freebusy   |         |       |     |        |
   +-----------------------------+---------+-------+-----+--------+
        
                                 +--------------------------------+
                                 |  METHOD for VEVENT and VTODO   |
   +-----------------------------+---------+-------+-----+--------+
   | Scheduling Inbox Privilege  | REQUEST | REPLY | ADD | CANCEL |
   +-----------------------------+---------+-------+-----+--------+
   | schedule-deliver            |    *    |   *   |  *  |   *    |
   |   schedule-deliver-invite   |    *    |       |  *  |   *    |
   |   schedule-deliver-reply    |         |   *   |     |        |
   |   schedule-query-freebusy   |         |       |     |        |
   +-----------------------------+---------+-------+-----+--------+
        
                                 +----------------------+
                                 | METHOD for VFREEBUSY |
   +-----------------------------+----------------------+
   | Scheduling Inbox Privilege  |       REQUEST        |
   +-----------------------------+----------------------+
   | schedule-deliver            |          *           |
   |   schedule-deliver-invite   |                      |
   |   schedule-deliver-reply    |                      |
   |   schedule-query-freebusy   |          *           |
   +-----------------------------+----------------------+
        
                                 +----------------------+
                                 | METHOD for VFREEBUSY |
   +-----------------------------+----------------------+
   | Scheduling Inbox Privilege  |       REQUEST        |
   +-----------------------------+----------------------+
   | schedule-deliver            |          *           |
   |   schedule-deliver-invite   |                      |
   |   schedule-deliver-reply    |                      |
   |   schedule-query-freebusy   |          *           |
   +-----------------------------+----------------------+
        
A.2. Scheduling Outbox Privileges
A.2. 计划发件箱权限

The following tables specify which scheduling privileges grant the right to a calendar user to perform busy time information requests and to submit scheduling messages to other calendar users as the result of a scheduling operation. The appropriate behavior depends on the calendar component type as well as the scheduling "METHOD" specified in the scheduling message.

下表指定哪些调度权限授予日历用户执行繁忙时间信息请求的权限,以及作为调度操作的结果向其他日历用户提交调度消息的权限。适当的行为取决于日历组件类型以及计划消息中指定的计划“方法”。

                                 +--------------------------------+
                                 |  METHOD for VEVENT and VTODO   |
   +-----------------------------+---------+-------+-----+--------+
   | Scheduling Outbox Privilege | REQUEST | REPLY | ADD | CANCEL |
   +-----------------------------+---------+-------+-----+--------+
   | schedule-send               |    *    |   *   |  *  |   *    |
   |   schedule-send-invite      |    *    |       |  *  |   *    |
   |   schedule-send-reply       |         |   *   |     |        |
   |   schedule-send-freebusy    |         |       |     |        |
   +-----------------------------+---------+-------+-----+--------+
        
                                 +--------------------------------+
                                 |  METHOD for VEVENT and VTODO   |
   +-----------------------------+---------+-------+-----+--------+
   | Scheduling Outbox Privilege | REQUEST | REPLY | ADD | CANCEL |
   +-----------------------------+---------+-------+-----+--------+
   | schedule-send               |    *    |   *   |  *  |   *    |
   |   schedule-send-invite      |    *    |       |  *  |   *    |
   |   schedule-send-reply       |         |   *   |     |        |
   |   schedule-send-freebusy    |         |       |     |        |
   +-----------------------------+---------+-------+-----+--------+
        
                                 +----------------------+
                                 | METHOD for VFREEBUSY |
   +-----------------------------+----------------------+
   | Scheduling Outbox Privilege |       REQUEST        |
   +-----------------------------+----------------------+
   | schedule-send               |          *           |
   |   schedule-send-invite      |                      |
   |   schedule-send-reply       |                      |
   |   schedule-send-freebusy    |          *           |
   +-----------------------------+----------------------+
        
                                 +----------------------+
                                 | METHOD for VFREEBUSY |
   +-----------------------------+----------------------+
   | Scheduling Outbox Privilege |       REQUEST        |
   +-----------------------------+----------------------+
   | schedule-send               |          *           |
   |   schedule-send-invite      |                      |
   |   schedule-send-reply       |                      |
   |   schedule-send-freebusy    |          *           |
   +-----------------------------+----------------------+
        
Appendix B. Example Scheduling Operations
附录B.调度操作示例

This section describes some example scheduling operations that give a general idea of how scheduling is carried out between CalDAV clients and servers from the perspective of meeting "Organizers" and "Attendees".

本节介绍了一些调度操作示例,从会议“组织者”和“与会者”的角度介绍了如何在CalDAV客户端和服务器之间执行调度。

The server is assumed to be hosted in the "example.com" domain, and users whose email addresses are at the "example.com" domain are assumed to be hosted by the server. In addition, the email addresses in the "example.net" domain are also valid email addresses for calendar users hosted by the server. Calendar users with an email address at the "example.org" domain are assumed to not be hosted by the server.

假定服务器托管在“example.com”域中,假定电子邮件地址位于“example.com”域的用户由服务器托管。此外,“example.net”域中的电子邮件地址也是服务器托管的日历用户的有效电子邮件地址。假设电子邮件地址位于“example.org”域的日历用户不由服务器托管。

In the following examples, the requests and responses are incomplete and are only for illustrative purposes. In particular, HTTP authentication headers and behaviors are not shown, even though they are required in normal operation.

在以下示例中,请求和响应不完整,仅用于说明目的。特别是,HTTP身份验证头和行为不会显示,即使在正常操作中需要它们。

B.1. Example: "Organizer" Inviting Multiple "Attendees"
B.1. 示例:“组织者”邀请多个“与会者”

In the following example, Cyrus invites Wilfredo, Bernard, and Mike to a single instance event by simply creating a new scheduling object resource in one of his calendar collections by using the PUT method.

在下面的示例中,Cyrus邀请Wilfredo、Bernard和Mike参加单个实例事件,方法是使用PUT方法在他的一个日历集合中创建一个新的调度对象资源。

   >> Request <<
        
   >> Request <<
        
   PUT /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
   Host: cal.example.com
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
   If-None-Match: *
        
   PUT /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
   Host: cal.example.com
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
   If-None-Match: *
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T185254Z
   DTSTART:20090602T160000Z
   DTEND:20090602T170000Z
   TRANSP:OPAQUE
   SUMMARY:Lunch
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@
    example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
    ample.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE:mailto:mike@example.org
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T185254Z
   DTSTART:20090602T160000Z
   DTEND:20090602T170000Z
   TRANSP:OPAQUE
   SUMMARY:Lunch
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@
    example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
    ample.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE:mailto:mike@example.org
   END:VEVENT
   END:VCALENDAR
        
   >> Response <<
        
   >> Response <<
        

HTTP/1.1 201 Created Content-Length: 0

HTTP/1.1 201创建的内容长度:0

   Date: Tue, 02 Jun 2009 18:52:54 GMT
   Last-Modified: Tue, 02 Jun 2009 18:52:54 GMT
   ETag: "d85561cfe74a4e785eb4639451b434fb"
   Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
        
   Date: Tue, 02 Jun 2009 18:52:54 GMT
   Last-Modified: Tue, 02 Jun 2009 18:52:54 GMT
   ETag: "d85561cfe74a4e785eb4639451b434fb"
   Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
        

Once the event creation has been completed, Cyrus's client will retrieve the event back from the server to get the schedule status of each "Attendee", as well as record the Schedule-Tag value for future use. In this example, the server reports that a scheduling message was delivered to Wilfredo, a scheduling message is still pending for Bernard, and the server was unable to deliver a scheduling message to Mike.

事件创建完成后,Cyrus的客户端将从服务器检索事件,以获取每个“与会者”的日程状态,并记录日程标记值以备将来使用。在本例中,服务器报告调度消息已传递给Wilfredo,Bernard的调度消息仍处于挂起状态,并且服务器无法将调度消息传递给Mike。

   >> Request <<
        
   >> Request <<
        
   GET /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
   Host: cal.example.com
        
   GET /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
   Host: cal.example.com
        
   >> Response <<
        
   >> Response <<
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 18:52:58 GMT
   Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
   ETag: "eb897deabc8939589da116714bc99265"
   Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 18:52:58 GMT
   Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
   ETag: "eb897deabc8939589da116714bc99265"
   Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Server//EN
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T185300Z
   DTSTART:20090602T160000Z
   DTEND:20090602T170000Z
   TRANSP:OPAQUE
   SUMMARY:Lunch
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=
    1.2:mailto:wilfredo@e
    xample.com
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Server//EN
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T185300Z
   DTSTART:20090602T160000Z
   DTEND:20090602T170000Z
   TRANSP:OPAQUE
   SUMMARY:Lunch
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=
    1.2:mailto:wilfredo@e
    xample.com
        
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=
    1.0:mailto:bernard@example.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE;SCHEDULE-STATUS=3.7:mailto:mike@example.org
   END:VEVENT
   END:VCALENDAR
        
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=
    1.0:mailto:bernard@example.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE;SCHEDULE-STATUS=3.7:mailto:mike@example.org
   END:VEVENT
   END:VCALENDAR
        
B.2. Example: "Attendee" Receiving an Invitation
B.2. 示例:“与会者”收到邀请

In the following example, Wilfredo's client retrieves and deletes the new scheduling message that appeared in his scheduling Inbox collection after the server automatically processed it and created a new scheduling object resource in his default calendar collection.

在以下示例中,Wilfredo的客户端在服务器自动处理并在其默认日历集合中创建新的调度对象资源后,检索并删除其调度收件箱集合中出现的新调度消息。

   >> Request <<
        
   >> Request <<
        
   GET /home/wilfredo/calendars/inbox/27d93fc0a58c.ics HTTP/1.1
   Host: cal.example.com
        
   GET /home/wilfredo/calendars/inbox/27d93fc0a58c.ics HTTP/1.1
   Host: cal.example.com
        
   >> Response <<
        
   >> Response <<
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 18:59:58 GMT
   Last-Modified: Tue, 02 Jun 2009 18:59:58 GMT
   ETag: "da116714bc9926c89395895eb897deab"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 18:59:58 GMT
   Last-Modified: Tue, 02 Jun 2009 18:59:58 GMT
   ETag: "da116714bc9926c89395895eb897deab"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Server//EN
   METHOD:REQUEST
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T185254Z
   DTSTART:20090602T160000Z
   DTEND:20090602T170000Z
   TRANSP:OPAQUE
   SUMMARY:Lunch
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@
    example.com
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Server//EN
   METHOD:REQUEST
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T185254Z
   DTSTART:20090602T160000Z
   DTEND:20090602T170000Z
   TRANSP:OPAQUE
   SUMMARY:Lunch
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@
    example.com
        
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
    ample.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE:mailto:mike@example.org
   END:VEVENT
   END:VCALENDAR
        
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
    ample.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE:mailto:mike@example.org
   END:VEVENT
   END:VCALENDAR
        
   >> Request <<
        
   >> Request <<
        
   DELETE /home/wilfredo/calendars/inbox/27d93fc0a58c.ics HTTP/1.1
   Host: cal.example.com
        
   DELETE /home/wilfredo/calendars/inbox/27d93fc0a58c.ics HTTP/1.1
   Host: cal.example.com
        
   >> Response <<
        
   >> Response <<
        
   HTTP/1.1 204 No Content
   Date: Tue, 02 Jun 2009 20:40:36 GMT
        
   HTTP/1.1 204 No Content
   Date: Tue, 02 Jun 2009 20:40:36 GMT
        
B.3. Example: "Attendee" Replying to an Invitation
B.3. 示例:“与会者”回复邀请

In the following example, Wilfredo accepts Cyrus's invitation and sets an alarm reminder on the event. It uses the If-Schedule-Tag-Match precondition behavior to ensure it does not overwrite any significant changes from the "Organizer" that might have occurred after it retrieved the initial resource data.

在下面的示例中,Wilfredo接受Cyrus的邀请,并在事件上设置警报提醒。它使用If Schedule标记Match前置条件行为来确保它不会覆盖在检索初始资源数据后可能发生的来自“组织者”的任何重大更改。

   >> Request <<
        
   >> Request <<
        
   PUT /home/wilfredo/calendars/work/BB64861C2228.ics HTTP/1.1
   Host: cal.example.com
   If-Schedule-Tag-Match: "e78f23ed-0188-4bab-938d-2aeb3324c7e8"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   PUT /home/wilfredo/calendars/work/BB64861C2228.ics HTTP/1.1
   Host: cal.example.com
   If-Schedule-Tag-Match: "e78f23ed-0188-4bab-938d-2aeb3324c7e8"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T185254Z
   DTSTART:20090602T160000Z
   DTEND:20090602T170000Z
   TRANSP:OPAQUE
   SUMMARY:Lunch
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T185254Z
   DTSTART:20090602T160000Z
   DTEND:20090602T170000Z
   TRANSP:OPAQUE
   SUMMARY:Lunch
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
        
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@exam
    ple.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
    ample.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE:mailto:mike@example.org
   BEGIN:VALARM
   TRIGGER:-PT15M
   ACTION:DISPLAY
   DESCRIPTION:Reminder
   END:VALARM
   END:VEVENT
   END:VCALENDAR
        
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@exam
    ple.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
    ample.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE:mailto:mike@example.org
   BEGIN:VALARM
   TRIGGER:-PT15M
   ACTION:DISPLAY
   DESCRIPTION:Reminder
   END:VALARM
   END:VEVENT
   END:VCALENDAR
        
   >> Response <<
        
   >> Response <<
        
   HTTP/1.1 200 OK
   Content-Length: 0
   Date: Tue, 02 Jun 2009 18:57:54 GMT
   Last-Modified: Tue, 02 Jun 2009 18:57:54 GMT
   ETag: "eb4639451b434fbd85561cfe74a4e785"
   Schedule-Tag: "8893ee45-eb9d-428f-b53c-c777daf19e41"
        
   HTTP/1.1 200 OK
   Content-Length: 0
   Date: Tue, 02 Jun 2009 18:57:54 GMT
   Last-Modified: Tue, 02 Jun 2009 18:57:54 GMT
   ETag: "eb4639451b434fbd85561cfe74a4e785"
   Schedule-Tag: "8893ee45-eb9d-428f-b53c-c777daf19e41"
        

Once the event modification has been completed, Wilfredo's client will retrieve the event back from the server to get the schedule status of the "Organizer".

事件修改完成后,Wilfredo的客户端将从服务器检索事件,以获取“组织者”的计划状态。

   >> Request <<
        
   >> Request <<
        
   GET /home/wilfredo/calendars/work/BB64861C2228.ics HTTP/1.1
   Host: cal.example.com
        
   GET /home/wilfredo/calendars/work/BB64861C2228.ics HTTP/1.1
   Host: cal.example.com
        
   >> Response <<
        
   >> Response <<
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 19:03:03 GMT
   Last-Modified: Tue, 02 Jun 2009 19:02:21 GMT
   ETag: "5eb897deabda116714bc9926c8939589"
   Schedule-Tag: "8893ee45-eb9d-428f-b53c-c777daf19e41"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 19:03:03 GMT
   Last-Modified: Tue, 02 Jun 2009 19:02:21 GMT
   ETag: "5eb897deabda116714bc9926c8939589"
   Schedule-Tag: "8893ee45-eb9d-428f-b53c-c777daf19e41"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T190221Z
   DTSTART:20090602T160000Z
   DTEND:20090602T170000Z
   TRANSP:OPAQUE
   SUMMARY:Lunch
   ORGANIZER;CN="Cyrus Daboo";SCHEDULE-STATUS=1.2:mailto:cyrus@ex
    ample.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@exam
    ple.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
    ample.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE:mailto:mike@example.org
   BEGIN:VALARM
   TRIGGER:-PT15M
   ACTION:DISPLAY
   DESCRIPTION:Reminder
   END:VALARM
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T190221Z
   DTSTART:20090602T160000Z
   DTEND:20090602T170000Z
   TRANSP:OPAQUE
   SUMMARY:Lunch
   ORGANIZER;CN="Cyrus Daboo";SCHEDULE-STATUS=1.2:mailto:cyrus@ex
    ample.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@exam
    ple.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
    ample.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE:mailto:mike@example.org
   BEGIN:VALARM
   TRIGGER:-PT15M
   ACTION:DISPLAY
   DESCRIPTION:Reminder
   END:VALARM
   END:VEVENT
   END:VCALENDAR
        
B.4. Example: "Organizer" Receiving a Reply to an Invitation
B.4. 示例:“组织者”收到邀请回复

On reception of Wilfredo's reply, Cyrus's server will automatically update Cyrus's scheduling object resource, make Wilfredo's scheduling message available in Cyrus's scheduling Inbox collection, and deliver an updated scheduling message to Bernard to share Wilfredo's updated participation status. In this example, Cyrus's client retrieves and deletes this scheduling message in his scheduling Inbox collection.

收到Wilfredo的回复后,Cyrus的服务器将自动更新Cyrus的调度对象资源,在Cyrus的调度收件箱集合中提供Wilfredo的调度消息,并向Bernard发送更新的调度消息,以共享Wilfredo的更新参与状态。在本例中,Cyrus的客户端在其计划收件箱集合中检索并删除此计划消息。

   >> Request <<
        
   >> Request <<
        
   GET /home/cyrus/calendars/inbox/c0a58c27d93f.ics HTTP/1.1
   Host: cal.example.com
        
   GET /home/cyrus/calendars/inbox/c0a58c27d93f.ics HTTP/1.1
   Host: cal.example.com
        
   >> Response <<
        
   >> Response <<
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 19:05:02 GMT
   Last-Modified: Tue, 02 Jun 2009 19:04:20 GMT
   ETag: "9265eb897deabc8939589da116714bc9"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 19:05:02 GMT
   Last-Modified: Tue, 02 Jun 2009 19:04:20 GMT
   ETag: "9265eb897deabc8939589da116714bc9"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Server//EN
   METHOD:REPLY
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T185754Z
   DTSTART:20090602T160000Z
   DTEND:20090602T170000Z
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";PARTSTAT=ACCEPTED:mailto:w
    ilfredo@example.com
   REQUEST-STATUS:2.0;Success
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Server//EN
   METHOD:REPLY
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T185754Z
   DTSTART:20090602T160000Z
   DTEND:20090602T170000Z
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";PARTSTAT=ACCEPTED:mailto:w
    ilfredo@example.com
   REQUEST-STATUS:2.0;Success
   END:VEVENT
   END:VCALENDAR
        
   >> Request <<
        
   >> Request <<
        
   DELETE /home/cyrus/calendars/inbox/c0a58c27d93f.ics HTTP/1.1
   Host: cal.example.com
        
   DELETE /home/cyrus/calendars/inbox/c0a58c27d93f.ics HTTP/1.1
   Host: cal.example.com
        
   >> Response <<
        
   >> Response <<
        
   HTTP/1.1 204 No Content
   Date: Tue, 02 Jun 2009 19:05:05 GMT
        
   HTTP/1.1 204 No Content
   Date: Tue, 02 Jun 2009 19:05:05 GMT
        

Cyrus's client then retrieves the event back from the server with Wilfredo's updated participation status.

然后,Cyrus的客户端使用Wilfredo更新的参与状态从服务器检索事件。

   >> Request <<
        
   >> Request <<
        
   GET /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
   Host: cal.example.com
        
   GET /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
   Host: cal.example.com
        
   >> Response <<
        
   >> Response <<
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 19:05:02 GMT
   Last-Modified: Tue, 02 Jun 2009 19:04:20 GMT
   ETag: "eb897deabc8939589da116714bc99265"
   Schedule-Tag: "132cab27-1fe3-67ab-de13-abd348d1dee3"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 19:05:02 GMT
   Last-Modified: Tue, 02 Jun 2009 19:04:20 GMT
   ETag: "eb897deabc8939589da116714bc99265"
   Schedule-Tag: "132cab27-1fe3-67ab-de13-abd348d1dee3"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Server//EN
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T190420Z
   DTSTART:20090602T160000Z
   DTEND:20090602T170000Z
   TRANSP:OPAQUE
   SUMMARY:Lunch
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=2.0:
    mailto:wilfredo@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=1
    .0:mailto:bernard@example.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE;SCHEDULE-STATUS=3.7:mailto:mike@example.org
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Server//EN
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T190420Z
   DTSTART:20090602T160000Z
   DTEND:20090602T170000Z
   TRANSP:OPAQUE
   SUMMARY:Lunch
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=2.0:
    mailto:wilfredo@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=1
    .0:mailto:bernard@example.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE;SCHEDULE-STATUS=3.7:mailto:mike@example.org
   END:VEVENT
   END:VCALENDAR
        
B.5. Example: "Organizer" Requesting Busy Time Information
B.5. 示例:“组织者”请求繁忙时间信息

In this example, Cyrus requests the busy time information of Wilfredo, Bernard, and Mike.

在本例中,Cyrus请求Wilfredo、Bernard和Mike的繁忙时间信息。

   >> Request <<
        
   >> Request <<
        
   POST /home/cyrus/calendars/outbox/ HTTP/1.1
   Host: cal.example.com
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   POST /home/cyrus/calendars/outbox/ HTTP/1.1
   Host: cal.example.com
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   METHOD:REQUEST
   BEGIN:VFREEBUSY
   UID:4FD3AD926350
   DTSTAMP:20090602T190420Z
   DTSTART:20090602T000000Z
   DTEND:20090604T000000Z
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega":mailto:wilfredo@example.com
   ATTENDEE;CN="Bernard Desruisseaux":mailto:bernard@example.net
   ATTENDEE;CN="Mike Douglass":mailto:mike@example.org
   END:VFREEBUSY
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   METHOD:REQUEST
   BEGIN:VFREEBUSY
   UID:4FD3AD926350
   DTSTAMP:20090602T190420Z
   DTSTART:20090602T000000Z
   DTEND:20090604T000000Z
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega":mailto:wilfredo@example.com
   ATTENDEE;CN="Bernard Desruisseaux":mailto:bernard@example.net
   ATTENDEE;CN="Mike Douglass":mailto:mike@example.org
   END:VFREEBUSY
   END:VCALENDAR
        
   >> Response <<
        
   >> Response <<
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 20:07:34 GMT
   Content-Type: application/xml; charset="utf-8"
   Content-Length: xxxx
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 20:07:34 GMT
   Content-Type: application/xml; charset="utf-8"
   Content-Length: xxxx
        
   <?xml version="1.0" encoding="utf-8" ?>
   <C:schedule-response xmlns:D="DAV:"
          xmlns:C="urn:ietf:params:xml:ns:caldav">
   <C:response>
   <C:recipient>
   <D:href>mailto:wilfredo@example.com</D:href>
   </C:recipient>
   <C:request-status>2.0;Success</C:request-status>
   <C:calendar-data>BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Server//EN
   METHOD:REPLY
   BEGIN:VFREEBUSY
        
   <?xml version="1.0" encoding="utf-8" ?>
   <C:schedule-response xmlns:D="DAV:"
          xmlns:C="urn:ietf:params:xml:ns:caldav">
   <C:response>
   <C:recipient>
   <D:href>mailto:wilfredo@example.com</D:href>
   </C:recipient>
   <C:request-status>2.0;Success</C:request-status>
   <C:calendar-data>BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Server//EN
   METHOD:REPLY
   BEGIN:VFREEBUSY
        
   UID:4FD3AD926350
   DTSTAMP:20090602T200733Z
   DTSTART:20090602T000000Z
   DTEND:20090604T000000Z
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega":mailto:wilfredo@example.com
   FREEBUSY;FBTYPE=BUSY:20090602T110000Z/20090602T120000Z
   FREEBUSY;FBTYPE=BUSY:20090603T170000Z/20090603T180000Z
   END:VFREEBUSY
   END:VCALENDAR
   </C:calendar-data>
   </C:response>
   <C:response>
   <C:recipient>
   <D:href>mailto:bernard@example.net</D:href>
   </C:recipient>
   <C:request-status>2.0;Success</C:request-status>
   <C:calendar-data>BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Server//EN
   METHOD:REPLY
   BEGIN:VFREEBUSY
   UID:4FD3AD926350
   DTSTAMP:20090602T200733Z
   DTSTART:20090602T000000Z
   DTEND:20090604T000000Z
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux":mailto:bernard@example.net
   FREEBUSY;FBTYPE=BUSY:20090602T150000Z/20090602T160000Z
   FREEBUSY;FBTYPE=BUSY:20090603T090000Z/20090603T100000Z
   FREEBUSY;FBTYPE=BUSY:20090603T180000Z/20090603T190000Z
   END:VFREEBUSY
   END:VCALENDAR
   </C:calendar-data>
   </C:response>
   <C:response>
   <C:recipient>
   <D:href>mailto:mike@example.org</D:href>
   </C:recipient>
   <C:request-status>3.7;Invalid calendar user</C:request-status>
   </C:response>
   </C:schedule-response>
        
   UID:4FD3AD926350
   DTSTAMP:20090602T200733Z
   DTSTART:20090602T000000Z
   DTEND:20090604T000000Z
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega":mailto:wilfredo@example.com
   FREEBUSY;FBTYPE=BUSY:20090602T110000Z/20090602T120000Z
   FREEBUSY;FBTYPE=BUSY:20090603T170000Z/20090603T180000Z
   END:VFREEBUSY
   END:VCALENDAR
   </C:calendar-data>
   </C:response>
   <C:response>
   <C:recipient>
   <D:href>mailto:bernard@example.net</D:href>
   </C:recipient>
   <C:request-status>2.0;Success</C:request-status>
   <C:calendar-data>BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Server//EN
   METHOD:REPLY
   BEGIN:VFREEBUSY
   UID:4FD3AD926350
   DTSTAMP:20090602T200733Z
   DTSTART:20090602T000000Z
   DTEND:20090604T000000Z
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux":mailto:bernard@example.net
   FREEBUSY;FBTYPE=BUSY:20090602T150000Z/20090602T160000Z
   FREEBUSY;FBTYPE=BUSY:20090603T090000Z/20090603T100000Z
   FREEBUSY;FBTYPE=BUSY:20090603T180000Z/20090603T190000Z
   END:VFREEBUSY
   END:VCALENDAR
   </C:calendar-data>
   </C:response>
   <C:response>
   <C:recipient>
   <D:href>mailto:mike@example.org</D:href>
   </C:recipient>
   <C:request-status>3.7;Invalid calendar user</C:request-status>
   </C:response>
   </C:schedule-response>
        

B.6. Example: User Attempting to Invite "Attendee" on Behalf of "Organizer"

B.6. 示例:用户试图代表“组织者”邀请“与会者”

In the following example, Cyrus attempts to create, on behalf of Wilfredo, an event with Bernard specified as an "Attendee". The request fails, since Wilfredo didn't grant Cyrus the right to invite other calendar users on his behalf.

在下面的示例中,Cyrus试图代表Wilfredo创建一个事件,并将Bernard指定为“与会者”。请求失败,因为Wilfredo没有授予Cyrus代表他邀请其他日历用户的权利。

   >> Request <<
        
   >> Request <<
        
   PUT /home/wilfredo/calendars/work/def456.ics HTTP/1.1
   Host: cal.example.com
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
   If-None-Match: *
        
   PUT /home/wilfredo/calendars/work/def456.ics HTTP/1.1
   Host: cal.example.com
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
   If-None-Match: *
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   BEGIN:VEVENT
   UID:3504F926D3AD
   SEQUENCE:0
   DTSTAMP:20090602T190221Z
   DTSTART:20090602T230000Z
   DTEND:20090603T000000Z
   TRANSP:OPAQUE
   SUMMARY:Dinner
   ORGANIZER;CN="Wilfredo Sanchez Vega":mailto:wilfredo@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT=A
    CCEPTED:mailto:wilfredo@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=NE
    EDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
    e.net
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   BEGIN:VEVENT
   UID:3504F926D3AD
   SEQUENCE:0
   DTSTAMP:20090602T190221Z
   DTSTART:20090602T230000Z
   DTEND:20090603T000000Z
   TRANSP:OPAQUE
   SUMMARY:Dinner
   ORGANIZER;CN="Wilfredo Sanchez Vega":mailto:wilfredo@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT=A
    CCEPTED:mailto:wilfredo@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=NE
    EDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
    e.net
   END:VEVENT
   END:VCALENDAR
        
   >> Response <<
        
   >> Response <<
        
   HTTP/1.1 403 Forbidden
   Content-Type: application/xml; charset="utf-8"
   Content-Length: xxxx
        
   HTTP/1.1 403 Forbidden
   Content-Type: application/xml; charset="utf-8"
   Content-Length: xxxx
        
   <?xml version="1.0" encoding="utf-8" ?>
   <D:error xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
     <D:need-privileges>
       <D:resource>
         <D:href>/home/wilfredo/calendars/outbox/</D:href>
         <D:privilege><C:schedule-send-invite/></D:privilege>
       </D:resource>
     </D:need-privileges>
   </D:error>
        
   <?xml version="1.0" encoding="utf-8" ?>
   <D:error xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
     <D:need-privileges>
       <D:resource>
         <D:href>/home/wilfredo/calendars/outbox/</D:href>
         <D:privilege><C:schedule-send-invite/></D:privilege>
       </D:resource>
     </D:need-privileges>
   </D:error>
        
B.7. Example: "Attendee" Declining an Instance of a Recurring Event
B.7. 示例:“与会者”拒绝重复事件的实例

In the following example, Bernard declines the second recurrence instance of a daily recurring event he's been invited to by Cyrus.

在下面的示例中,Bernard拒绝Cyrus邀请他参加的每日重复事件的第二个重复实例。

   >> Request <<
        
   >> Request <<
        
   PUT /home/bernard/calendars/work/4FD3AD926350.ics HTTP/1.1
   Host: cal.example.com
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
   If-Schedule-Tag-Match: "7775FB30-7534-489E-A79A-0EA147B933EB"
        
   PUT /home/bernard/calendars/work/4FD3AD926350.ics HTTP/1.1
   Host: cal.example.com
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
   If-Schedule-Tag-Match: "7775FB30-7534-489E-A79A-0EA147B933EB"
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   BEGIN:VTIMEZONE
   TZID:America/Montreal
   BEGIN:STANDARD
   DTSTART:20071104T020000
   RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
   TZNAME:EST
   TZOFFSETFROM:-0400
   TZOFFSETTO:-0500
   END:STANDARD
   BEGIN:DAYLIGHT
   DTSTART:20070311T020000
   RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
   TZNAME:EDT
   TZOFFSETFROM:-0500
   TZOFFSETTO:-0400
   END:DAYLIGHT
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   BEGIN:VTIMEZONE
   TZID:America/Montreal
   BEGIN:STANDARD
   DTSTART:20071104T020000
   RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
   TZNAME:EST
   TZOFFSETFROM:-0400
   TZOFFSETTO:-0500
   END:STANDARD
   BEGIN:DAYLIGHT
   DTSTART:20070311T020000
   RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
   TZNAME:EDT
   TZOFFSETFROM:-0500
   TZOFFSETTO:-0400
   END:DAYLIGHT
        
   END:VTIMEZONE
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T185254Z
   DTSTART;TZID=America/Montreal:20090601T150000
   DTEND;TZID=America/Montreal:20090601T160000
   RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
   TRANSP:OPAQUE
   SUMMARY:Review Internet-Draft
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
    e.net
   END:VEVENT
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090603T183823Z
   RECURRENCE-ID;TZID=America/Montreal:20090602T150000
   DTSTART;TZID=America/Montreal:20090602T150000
   DTEND;TZID=America/Montreal:20090602T160000
   TRANSP:TRANSPARENT
   SUMMARY:Review Internet-Draft
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
    e.net
   END:VEVENT
   END:VCALENDAR
        
   END:VTIMEZONE
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T185254Z
   DTSTART;TZID=America/Montreal:20090601T150000
   DTEND;TZID=America/Montreal:20090601T160000
   RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
   TRANSP:OPAQUE
   SUMMARY:Review Internet-Draft
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
    e.net
   END:VEVENT
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090603T183823Z
   RECURRENCE-ID;TZID=America/Montreal:20090602T150000
   DTSTART;TZID=America/Montreal:20090602T150000
   DTEND;TZID=America/Montreal:20090602T160000
   TRANSP:TRANSPARENT
   SUMMARY:Review Internet-Draft
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
    e.net
   END:VEVENT
   END:VCALENDAR
        
   >> Response <<
        
   >> Response <<
        
   HTTP/1.1 200 OK
   Content-Length: 0
   Date: Tue, 02 Jun 2009 18:52:54 GMT
   Last-Modified: Tue, 02 Jun 2009 18:52:54 GMT
   ETag: "d85561cfe74a4e785eb4639451b434fb"
   Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
        
   HTTP/1.1 200 OK
   Content-Length: 0
   Date: Tue, 02 Jun 2009 18:52:54 GMT
   Last-Modified: Tue, 02 Jun 2009 18:52:54 GMT
   ETag: "d85561cfe74a4e785eb4639451b434fb"
   Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
        

Bernard's participation status update will cause his server to deliver a scheduling message to Cyrus. Cyrus's client will find the following reply message from Bernard in Cyrus's scheduling Inbox collection:

Bernard的参与状态更新将导致他的服务器向Cyrus发送调度消息。Cyrus的客户端将在Cyrus的计划收件箱集合中找到来自Bernard的以下回复消息:

   >> Request <<
        
   >> Request <<
        
   GET /home/cyrus/calendars/inbox/9263504FD3AD.ics HTTP/1.1
   Host: cal.example.com
        
   GET /home/cyrus/calendars/inbox/9263504FD3AD.ics HTTP/1.1
   Host: cal.example.com
        
   >> Response <<
        
   >> Response <<
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 18:52:58 GMT
   Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
   ETag: "eb897deabc8939589da116714bc99265"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 18:52:58 GMT
   Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
   ETag: "eb897deabc8939589da116714bc99265"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   METHOD:REPLY
   BEGIN:VTIMEZONE
   TZID:America/Montreal
   BEGIN:STANDARD
   DTSTART:20071104T020000
   RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
   TZNAME:EST
   TZOFFSETFROM:-0400
   TZOFFSETTO:-0500
   END:STANDARD
   BEGIN:DAYLIGHT
   DTSTART:20070311T020000
   RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
   TZNAME:EDT
   TZOFFSETFROM:-0500
   TZOFFSETTO:-0400
   END:DAYLIGHT
   END:VTIMEZONE
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090603T183823Z
   RECURRENCE-ID;TZID=America/Montreal:20090602T150000
   DTSTART;TZID=America/Montreal:20090602T150000
   DTEND;TZID=America/Montreal:20090602T160000
   SUMMARY:Review Internet-Draft
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   METHOD:REPLY
   BEGIN:VTIMEZONE
   TZID:America/Montreal
   BEGIN:STANDARD
   DTSTART:20071104T020000
   RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
   TZNAME:EST
   TZOFFSETFROM:-0400
   TZOFFSETTO:-0500
   END:STANDARD
   BEGIN:DAYLIGHT
   DTSTART:20070311T020000
   RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
   TZNAME:EDT
   TZOFFSETFROM:-0500
   TZOFFSETTO:-0400
   END:DAYLIGHT
   END:VTIMEZONE
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090603T183823Z
   RECURRENCE-ID;TZID=America/Montreal:20090602T150000
   DTSTART;TZID=America/Montreal:20090602T150000
   DTEND;TZID=America/Montreal:20090602T160000
   SUMMARY:Review Internet-Draft
        
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";PARTSTAT=DECLINED:
    mailto:bernard@example.net
   REQUEST-STATUS:2.0;Success
   END:VEVENT
   END:VCALENDAR
        
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";PARTSTAT=DECLINED:
    mailto:bernard@example.net
   REQUEST-STATUS:2.0;Success
   END:VEVENT
   END:VCALENDAR
        
B.8. Example: "Attendee" Removing an Instance of a Recurring Event
B.8. 示例:“与会者”删除定期事件的实例

In the following example, Bernard removes from his calendar the third recurrence instance of a daily recurring event he's been invited to by Cyrus. This is accomplished by the addition of an "EXDATE" property to the scheduling object resource stored by Bernard.

在下面的示例中,Bernard从日历中删除了Cyrus邀请他参加的每日重复事件的第三个重复实例。这是通过向Bernard存储的调度对象资源添加“EXDATE”属性来实现的。

   >> Request <<
        
   >> Request <<
        
   PUT /home/bernard/calendars/work/4FD3AD926350.ics HTTP/1.1
   Host: cal.example.com
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
   If-Schedule-Tag-Match: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
        
   PUT /home/bernard/calendars/work/4FD3AD926350.ics HTTP/1.1
   Host: cal.example.com
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
   If-Schedule-Tag-Match: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   BEGIN:VTIMEZONE
   TZID:America/Montreal
   BEGIN:STANDARD
   DTSTART:20071104T020000
   RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
   TZNAME:EST
   TZOFFSETFROM:-0400
   TZOFFSETTO:-0500
   END:STANDARD
   BEGIN:DAYLIGHT
   DTSTART:20070311T020000
   RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
   TZNAME:EDT
   TZOFFSETFROM:-0500
   TZOFFSETTO:-0400
   END:DAYLIGHT
   END:VTIMEZONE
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T185254Z
   DTSTART;TZID=America/Montreal:20090601T150000
   DTEND;TZID=America/Montreal:20090601T160000
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   BEGIN:VTIMEZONE
   TZID:America/Montreal
   BEGIN:STANDARD
   DTSTART:20071104T020000
   RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
   TZNAME:EST
   TZOFFSETFROM:-0400
   TZOFFSETTO:-0500
   END:STANDARD
   BEGIN:DAYLIGHT
   DTSTART:20070311T020000
   RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
   TZNAME:EDT
   TZOFFSETFROM:-0500
   TZOFFSETTO:-0400
   END:DAYLIGHT
   END:VTIMEZONE
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090602T185254Z
   DTSTART;TZID=America/Montreal:20090601T150000
   DTEND;TZID=America/Montreal:20090601T160000
        
   RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
   EXDATE;TZID=America/Montreal:20090603T150000
   TRANSP:OPAQUE
   SUMMARY:Review Internet-Draft
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
    e.net
   END:VEVENT
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090603T183823Z
   RECURRENCE-ID;TZID=America/Montreal:20090602T150000
   DTSTART;TZID=America/Montreal:20090602T150000
   DTEND;TZID=America/Montreal:20090602T160000
   TRANSP:TRANSPARENT
   SUMMARY:Review Internet-Draft
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
    e.net
   END:VEVENT
   END:VCALENDAR
        
   RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
   EXDATE;TZID=America/Montreal:20090603T150000
   TRANSP:OPAQUE
   SUMMARY:Review Internet-Draft
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
    e.net
   END:VEVENT
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090603T183823Z
   RECURRENCE-ID;TZID=America/Montreal:20090602T150000
   DTSTART;TZID=America/Montreal:20090602T150000
   DTEND;TZID=America/Montreal:20090602T160000
   TRANSP:TRANSPARENT
   SUMMARY:Review Internet-Draft
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
    e.net
   END:VEVENT
   END:VCALENDAR
        

Bernard's deletion of a recurrence instance will cause his server to deliver a scheduling message to Cyrus. Cyrus's client will find the following reply message from Bernard in Cyrus's scheduling Inbox collection:

Bernard删除一个重复实例将导致他的服务器向Cyrus发送一条调度消息。Cyrus的客户端将在Cyrus的计划收件箱集合中找到来自Bernard的以下回复消息:

   >> Request <<
        
   >> Request <<
        
   GET /home/cyrus/calendars/inbox/6504923FD3AD.ics HTTP/1.1
   Host: cal.example.com
        
   GET /home/cyrus/calendars/inbox/6504923FD3AD.ics HTTP/1.1
   Host: cal.example.com
        
   >> Response <<
        
   >> Response <<
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 18:52:58 GMT
   Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
   ETag: "eb897deabc8939589da116714bc99265"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   HTTP/1.1 200 OK
   Date: Tue, 02 Jun 2009 18:52:58 GMT
   Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
   ETag: "eb897deabc8939589da116714bc99265"
   Content-Type: text/calendar; charset="utf-8"
   Content-Length: xxxx
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   METHOD:REPLY
   BEGIN:VTIMEZONE
   TZID:America/Montreal
   BEGIN:STANDARD
   DTSTART:20071104T020000
   RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
   TZNAME:EST
   TZOFFSETFROM:-0400
   TZOFFSETTO:-0500
   END:STANDARD
   BEGIN:DAYLIGHT
   DTSTART:20070311T020000
   RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
   TZNAME:EDT
   TZOFFSETFROM:-0500
   TZOFFSETTO:-0400
   END:DAYLIGHT
   END:VTIMEZONE
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090603T183823Z
   RECURRENCE-ID;TZID=America/Montreal:20090603T150000
   DTSTART;TZID=America/Montreal:20090603T150000
   DTEND;TZID=America/Montreal:20090603T160000
   SUMMARY:Review Internet-Draft
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";PARTSTAT=DECLINED:
    mailto:bernard@example.net
   REQUEST-STATUS:2.0;Success
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   VERSION:2.0
   PRODID:-//Example Corp.//CalDAV Client//EN
   METHOD:REPLY
   BEGIN:VTIMEZONE
   TZID:America/Montreal
   BEGIN:STANDARD
   DTSTART:20071104T020000
   RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
   TZNAME:EST
   TZOFFSETFROM:-0400
   TZOFFSETTO:-0500
   END:STANDARD
   BEGIN:DAYLIGHT
   DTSTART:20070311T020000
   RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
   TZNAME:EDT
   TZOFFSETFROM:-0500
   TZOFFSETTO:-0400
   END:DAYLIGHT
   END:VTIMEZONE
   BEGIN:VEVENT
   UID:9263504FD3AD
   SEQUENCE:0
   DTSTAMP:20090603T183823Z
   RECURRENCE-ID;TZID=America/Montreal:20090603T150000
   DTSTART;TZID=America/Montreal:20090603T150000
   DTEND;TZID=America/Montreal:20090603T160000
   SUMMARY:Review Internet-Draft
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";PARTSTAT=DECLINED:
    mailto:bernard@example.net
   REQUEST-STATUS:2.0;Success
   END:VEVENT
   END:VCALENDAR
        

Authors' Addresses

作者地址

Cyrus Daboo Apple Inc. 1 Infinite Loop Cupertino, CA 95014 USA

Cyrus Daboo苹果公司,美国加利福尼亚州库珀蒂诺市无限环路1号,邮编95014

   EMail: cyrus@daboo.name
   URI:   http://www.apple.com/
        
   EMail: cyrus@daboo.name
   URI:   http://www.apple.com/
        

Bernard Desruisseaux Oracle Corporation 600 Blvd. de Maisonneuve West Suite 1900 Montreal, QC H3A 3J2 CANADA

伯纳德·德斯鲁索甲骨文公司600大道。de Maisonneuve West套房1900加拿大蒙特利尔QC H3A 3J2

   EMail: bernard.desruisseaux@oracle.com
   URI:   http://www.oracle.com/
        
   EMail: bernard.desruisseaux@oracle.com
   URI:   http://www.oracle.com/