<?xml version="1.0" encoding="UTF-8"?>
<metanorma xmlns="https://www.metanorma.org/ns/standoc" type="semantic" version="2.8.5" schema-version="v2.1.5" flavor="cc">
<bibdata type="standard">
<title language="en" type="main">Enhanced Synchronization for Calendaring Extensions to WebDAV (CalDAV)</title>
<docidentifier primary="true" type="CalConnect">CC/WD 51012:2017</docidentifier><docnumber>51012</docnumber><date type="published"><on>2017-02-12</on></date><contributor><role type="author"/><organization>
<name>CalConnect</name>
</organization></contributor><contributor><role type="author"/><person>
<name><completename>Cyrus Daboo</completename></name>
<affiliation><organization>
<name>Apple Inc.</name>
</organization></affiliation></person></contributor><contributor><role type="author"/><person>
<name><completename>Kenneth Murchison</completename></name>
<affiliation><organization>
<name>Carnegie Mellon University</name>
</organization></affiliation></person></contributor><contributor><role type="author"><description>committee</description></role><organization>
<name>CalConnect</name>
<subdivision type="Technical committee">
<name>CALENDAR</name>
</subdivision></organization></contributor><contributor><role type="publisher"/><organization>
<name>CalConnect</name>
</organization></contributor><edition>1</edition><version><revision-date>2017-02-12</revision-date></version><language>en</language><script>Latn</script><abstract><p>This document defines new protocol features for CalDAV (<eref type="inline" bibitemid="RFC4791" citeas="IETF RFC 4791"/>) to improve the efficiency of synchronizing data changes between a client and server.</p>
</abstract><status><stage>working-draft</stage></status><copyright><from>2017</from><owner><organization>
<name>CalConnect</name>
</organization></owner></copyright><ext><doctype>standard</doctype><flavor>cc</flavor></ext></bibdata><metanorma-extension><semantic-metadata><stage-published>false</stage-published></semantic-metadata>
<presentation-metadata><toc-heading-levels>2</toc-heading-levels><html-toc-heading-levels>2</html-toc-heading-levels><doc-toc-heading-levels>2</doc-toc-heading-levels><pdf-toc-heading-levels>2</pdf-toc-heading-levels></presentation-metadata></metanorma-extension>
<boilerplate><copyright-statement>

<clause id="_8636096a-08b6-8ff3-f9bb-917b8f12b9b8" obligation="normative"><p id="_d197acae-9e3d-0811-422a-49e8f1a1014d">© 2017 The Calendaring and Scheduling Consortium, Inc.</p>
</clause>
</copyright-statement>

<license-statement>

<clause id="_c4364fd8-2f9b-8fdb-cf27-c7a37bb0b74a" obligation="normative">
<title id="_5ad8fb30-fcae-1072-87a2-407e6b4939ec">Warning for Drafts</title>
<p id="_0426ba5a-69d0-b41e-5aa5-7bdbfb2f6938">This document is not a CalConnect Standard. It is distributed for review and         comment, and is subject to change without notice and may not be referred to as         a Standard. Recipients of this draft are invited to submit, with their         comments, notification of any relevant patent rights of which they are aware         and to provide supporting documentation.</p>
</clause>
</license-statement>

<legal-statement>

<clause id="_30bb02f9-a03f-937c-b3bb-0058ec7c185d" obligation="normative"><p id="_4997ac1f-fe23-c399-660a-4ca594a6abda">All rights reserved. Unless otherwise specified, no part of this         publication may be reproduced or utilized otherwise in any form or by any         means, electronic or mechanical, including photocopying, or posting on the         internet or an intranet, without prior written permission. Permission can         be requested from the address below.</p>
</clause>
</legal-statement>

<feedback-statement>

<clause id="_525641bf-9235-cdcb-5b80-9232a01ea9cc" obligation="normative"><p id="_9c7e0878-01cd-c6a2-8060-5caf3135b547" anchor="boilerplate-name">The Calendaring and Scheduling Consortium, Inc.</p>

<p id="_851786db-d5f1-a086-bdb1-3bd48dc4f17c" anchor="boilerplate-address">4390 Chaffin Lane<br/> McKinleyville<br/> California 95519<br/> United States of America<br/> <br/> <link target="mailto:copyright@calconnect.org"/><br/> <link target="https://www.calconnect.org">www.calconnect.org</link></p>
</clause>
</feedback-statement>
</boilerplate><preface><abstract id="_0ae18fa3-78ea-186f-c286-8e77ed45c356"><title id="_37c298bf-5619-a5c6-817b-d777b5ead0b1">Abstract</title><p id="_0f5bae3e-c227-010b-6d4b-08dfb1213fbc">This document defines new protocol features for CalDAV (<eref type="inline" bibitemid="RFC4791" citeas="IETF RFC 4791"/>) to improve the efficiency of synchronizing data changes between a client and server.</p>
</abstract><introduction id="_2b4b37e4-3b6c-f8d6-6f70-855db1ee8c98" obligation="informative">
<title id="_2b2e98d1-114a-3da4-8556-01ae0a724280">Introduction</title>
<p id="_a4235f17-b268-3755-8a8d-50ae90bf9c1b">The CalDAV <eref type="inline" bibitemid="RFC4791" citeas="IETF RFC 4791"/> protocol is a client/server protocol that supports the exchange of iCalendar  <eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"/> data between a server and clients, as well as supporting scheduling operations on the server (using  <eref type="inline" bibitemid="RFC6638" citeas="IETF RFC 6638"/>). To exchange data, clients and servers use a combination of HTTP  <tt>PUT</tt>, <tt>GET</tt> and <tt>REPORT</tt> requests. The REPORT requests include CalDAV “multiget” and “time-range” queries, as well as WebDAV-based synchronization  <eref type="inline" bibitemid="RFC6578" citeas="IETF RFC 6578"/>. Whilst these have proved adequate to date, there is a need to improve the efficiency of data synchronization to lower network I/O requirements, and thus reduce power consumption requirements on mobile devices (which are now frequently used to manage calendars).</p>

<p id="_37f07ae3-13e5-0db8-c385-7a794b353762">The iCalendar patch [draft-patch] specification defines a way for clients to incrementally update servers using the HTTP PATCH  <eref type="inline" bibitemid="RFC5789" citeas="IETF RFC 5789"/> method and a new iCalendar-based patch format. This allows a client to only send the pieces of an iCalendar object that have changed, rather than send the entire resource. This can significantly reduce the amount of data sent from the client to the server, particularly in enterprise environments where long-lived recurring events, with many attendees, and many recurrence exceptions are common. However, when data changes on the server, clients are still required to download the entire calendar resource, even when only a small change has taken place. Since many users now have multiple devices that are actively synchronizing with a server (e.g., desktop, laptop, mobile phone, tablet, etc) a small change made on one device will result in large data transfers on the others as they synchronize their local caches.</p>

<p id="_1da4179f-0ace-e94d-8dad-e526afe5a1db">This specification defines new protocol features in CalDAV to support incremental updates to data stored in a client’s cache, by sending calendar patch data from the server to the client. These features are intended to be data format agnostic, and can be used with iCalendar patch, and future patch formats whether they be for existing (e.g. jCal  <eref type="inline" bibitemid="RFC7265" citeas="IETF RFC 7265"/>, xCal <eref type="inline" bibitemid="RFC6321" citeas="IETF RFC 6321"/>) or new calendar data formats.</p>
</introduction></preface><sections>

<clause id="_a0447a28-37cb-2683-6c9b-f3ffcea4caa9" type="scope" obligation="normative">
<title id="_f70b6ff6-6131-0e24-81e1-850dbe94b63d">Scope</title>
<p id="_b2f6d714-cb6c-17c0-6f1d-4e0ab480bd5d">This document specifies protocol features for CalDAV to improve the efficiency of synchronizing data changes between a client and server.</p>
</clause>



<terms id="_d7362834-9fd4-31f6-221b-d01f74409fd6" obligation="normative">
<title id="_dfb2eab2-f980-6365-3c47-81d0eb272962">Terms and definitions</title><p id="_9608c37a-eaae-1098-3a4b-f705fd512d85">No terms and definitions are listed in this document.</p>
<p id="_293d2966-ae10-184f-ec27-78c714ccc75e">The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in  <eref type="inline" bibitemid="RFC2119" citeas="IETF RFC 2119"/>.</p>

<p id="_3332032b-bb3b-f995-cbf9-bd2f970219ca">The notation used in this memo is the ABNF notation of <eref type="inline" bibitemid="RFC5234" citeas="IETF RFC 5234"/>. Any syntax elements shown below that are not explicitly defined in this specification come from HTTP and CalDAV.</p>

<p id="_73c1701d-d718-a334-f494-435fe94c6fbb">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 string “DAV:” and “CALDAV:” will be prefixed to the element type names respectively.</p>
</terms>

<clause id="_00f9a9fc-d58a-9fac-5df2-d8c6941db221" obligation="normative">
<title id="_fa60ebe4-df81-26ab-43f3-74c278d0d89e">Overview</title>
<p id="_05ceede4-e2ba-6a4a-f2ca-aae17314d0fc">Synchronization of CalDAV data on a client is nowadays typically accomplished using the WebDAV sync REPORT to detect changes to individual calendar object resources in a calendar collection. Those can be retrieved by the WebDAV sync request itself, or a subsequent series of CalDAV multiget requests can be made to retrieve the changed data. WebDAV sync defines a  <tt>DAV:sync-token</tt> property on collections that support synchronization. The value of that property is an opaque token that serves as a “sync anchor” for retrieval of changes on the server. Each client that maintains a local cache of the data stores the last value of  <tt>DAV:sync-token</tt> for a fully synchronized calendar collection, and then presents that token to the server the next time changes need to be fetched. The server then uses that token to determine what has changed since the client last synchronized, and can return those changes. Since the  <tt>DAV:sync-token</tt> is already being used to track changes on a collection level, it can also be used as a “sync anchor” for the retrieval of incremental changes to the resources within that collection.</p>

<p id="_af0b3ce6-c168-42f0-9952-cc3b6820cdd4">This specification makes the following changes to CalDAV (with details of each described in subsequent sections):</p>

<ul id="_ba4e534a-6916-12a7-013c-d852ded136f1"><li><p id="_21c937e0-4482-b5d8-d47b-c99a2a16350a">HTTP requests that expect calendar data to be included in the response (<tt>GET</tt> and  <tt>REPORT</tt>s which include the <tt>CALDAV:calendar-data</tt> “property” in the XML body) can include a Prefer request header field  <eref type="inline" bibitemid="RFC7240" citeas="IETF RFC 7240"/> with the “calendar-patch” preference. The client sets the value of the “since” parameter of this preference to a  <tt>DAV:sync-token</tt> value. When such a request is received by the server, if the “since” value represents a valid “sync anchor”, the server <tt>MAY</tt> use calendar patch documents in the HTTP response. Those documents represent the difference between each calendar resource as it was at the time the client-provided “sync anchor” was in effect, and the current state of the resource.</p>
</li>
<li><p id="_4d89dbab-d92f-c110-f5cb-4b5ebb464b7e">HTTP multi-status responses that include calendar patch documents <tt>MAY</tt> use a 304 (Not Modified) status code inside a  <tt>DAV:propstat</tt> element containing a <tt>CALDAV:calendar-data</tt> element to indicate that there is no difference between the current state of the resource and the state indicated by the “sync anchor”.</p>
</li>
</ul>
</clause>

<clause id="_70e83bcb-1b7b-8ae3-dc8a-e62169eee964" anchor="cls-4" obligation="normative">
<title id="_ad650373-2851-be46-84af-959370f5ef87">The “calendar-patch” Preference</title>
<p id="_db09b10a-cfe4-d437-3a18-29fd75ebbfd2">The “calendar-patch” preference indicates that the client wishes for the server to use calendar patch documents in the HTTP response rather than entire calendar resources. The value of the “since” parameter, which  <tt>MUST</tt> be the value of a previously returned  <tt>DAV:sync-token</tt> property, provides the “sync anchor” from which the server should generate the patch documents.</p>

<p id="_1c257926-d3d6-2b3f-b869-8a9cb4ba868b">ABNF:</p>

<sourcecode id="_92f29cf6-aac3-ec52-f46e-139bb91d6c6e" unnumbered="true"><body>calendar-patch = "calendar-patch" OWS ";" OWS "since=" sync-token

sync-token = DQUOTE absolute-URI DQUOTE</body></sourcecode>

</clause>

<clause id="_1361860e-dc75-ec22-4951-ba75e8a16a66" obligation="normative">
<title id="_8106c6fa-cd83-a5d3-36f2-e7b4e4899796">Changes to <tt>GET</tt> requests</title>
<p id="_cff22ecb-fa57-62aa-3e23-94c23f53717f">A client can signal to a server that it is willing and able to receive a calendar patch document rather than an entire calendar resource by including a Prefer header field with the “calendar-patch” preference in a  <tt>GET</tt> request.</p>

<p id="_862b3520-3069-4333-c3ba-6e7413192d1e">If a server receives a “calendar-patch” preference, recognizes the supplied sync-token, and is able to create a patch document for the resource in a format compatible with one of the media types supplied in the Accept  <eref type="inline" bibitemid="RFC7230" citeas="IETF RFC 7230"/> request header field, the server  <tt>MAY</tt> respond to the request with the patch document in lieu of the entire resource.</p>

<example id="_97dd1ea1-02c5-944b-241e-ecd279aa33d0"><sourcecode id="_a70d8b29-2dad-9117-40ee-a09a7ea15854" unnumbered="true"><body>&gt;&gt; Request &lt;&lt;

GET /events/abcd.ics HTTP/1.1
Host: cal.example.com
Prefer: calendar-patch; since="http://example.com/ns/sync/1234"
Accept: text/calendar; component=VPATCH

&gt;&gt; Response &lt;&lt;

HTTP/1.1 200 OK
Date: Sat, 11 Feb 2017 09:32:12 GMT
Content-Type: text/calendar; component=VPATCH; charset="utf-8"
Content-Length: yyyy

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//CalDAV Server//EN
BEGIN:VPATCH
UID:wxyz
DTSTAMP:20170201T000000Z
BEGIN:PATCH
PATCH-TARGET:/VCALENDAR/VEVENT[UID=abcd]
BEGIN:VALARM
UID:hijk
ACTION:DISPLAY
TRIGGER:-PT30M
DESCRIPTION:Time to leave
END:VALARM
END:PATCH
END:VPATCH
END:VCALENDAR</body></sourcecode> </example>
</clause>

<clause id="_75a6d2c3-4a4a-2c13-1ab6-e92304d801c6" obligation="normative">
<title id="_a2698172-bf5d-8abd-0881-c74ba653464b">Changes to CalDAV REPORT requests</title>
<p id="_4e57c4db-261b-df71-8173-f3ac4b2650a1">A client fetching the <tt>CALDAV:calendar-data</tt> “property” in a <tt>CALDAV:calendar-query</tt> or <tt>CALDAV:calendar-multiget</tt> REPORT can signal to a server that it is willing and able to receive calendar patch documents rather than entire calendar resources by including a Prefer header field with the “calendar-patch” preference in the  <tt>REPORT</tt> request.</p>

<p id="_1a114752-e2fb-a293-da42-7a581fff6ca3">If a server receives a “calendar-patch” preference, recognizes the supplied sync-token, and is able to create patch documents for resources in a format compatible with the “content-type” attribute of the  <tt>CALDAV:calendar-data</tt> element, the server  <tt>MAY</tt> respond to the request with patch documents in lieu of entire resources. If a resource has not changed since the state indicated by the sync-token, the server  <tt>MAY</tt> respond with a 304 (Not Modified) status code in the  <tt>DAV:propstat</tt> element containing the <tt>CALDAV:calendar-data</tt> element in lieu of an empty calendar patch document.</p>

<example id="_6a97dcbc-b9e5-398d-d972-2239bb99c3e8"><sourcecode id="_73e5494b-2da4-e092-aa4d-1978f74d2229" unnumbered="true"><body>&gt;&gt; Request &lt;&lt;

REPORT /events/work/ HTTP/1.1
Host: cal.example.com
Content-Type: application/xml; charset="utf-8"
Content-Length: xxxx
Prefer: calendar-patch; since="http://example.com/ns/sync/1234"

&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;C:calendar-multiget xmlns:D="DAV:"
                     xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
  &lt;D:prop&gt;
    &lt;D:getetag/&gt;
    &lt;C:calendar-data content-type="text/calendar; component=VPATCH"/&gt;
  &lt;/D:prop&gt;
  &lt;D:href&gt;/events/work/abcd1.ics&lt;/D:href&gt;
  &lt;D:href&gt;/events/work/mtg1.ics&lt;/D:href&gt;
&lt;/C:calendar-multiget&gt;

&gt;&gt; Response &lt;&lt;

HTTP/1.1 207 Multi-Status
Date: Sat, 11 Feb 2017 09:32:12 GMT
Content-Type: application/xml; charset="utf-8"
Content-Length: xxxx

&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;D:multistatus xmlns:D="DAV:"
               xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
  &lt;D:response&gt;
    &lt;D:href&gt;http://cal.example.com/events/work/abcd1.ics&lt;/D:href&gt;
    &lt;D:propstat&gt;
      &lt;D:prop&gt;
        &lt;D:getetag&gt;"fffff-abcd1"&lt;/D:getetag&gt;
        &lt;C:calendar-data&gt;BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//CalDAV Client//EN
BEGIN:VPATCH
UID:qrst
DTSTAMP:20170201T000000Z
BEGIN:PATCH
PATCH-TARGET:/VCALENDAR/VEVENT[UID=abcd1]
ATTENDEE;PATCH-ACTION=BYVALUE;PARTSTAT=ACCEPTED:
 mailto:cyrus@example.com
END:PATCH
END:VPATCH
END:VCALENDAR
        &lt;/C:calendar-data&gt;
      &lt;/D:prop&gt;
      &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
    &lt;/D:propstat&gt;
  &lt;/D:response&gt;
  &lt;D:response&gt;
    &lt;D:href&gt;http://cal.example.com/events/work/mtg1.ics&lt;/D:href&gt;
    &lt;D:propstat&gt;
      &lt;D:prop&gt;
        &lt;D:getetag&gt;"fffff-wxyz"&lt;/D:getetag&gt;
      &lt;/D:prop&gt;
      &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
    &lt;/D:propstat&gt;
    &lt;D:propstat&gt;
      &lt;D:prop&gt;
        &lt;C:calendar-data/&gt;
      &lt;/D:prop&gt;
      &lt;D:status&gt;HTTP/1.1 304 Not Modified&lt;/D:status&gt;
    &lt;/D:propstat&gt;
  &lt;/D:response&gt;
&lt;/D:multistatus&gt;</body></sourcecode> </example>
</clause>

<clause id="_cad261d7-1589-056a-416a-655a15a80b6f" obligation="normative">
<title id="_03633ae2-e332-563f-9c1e-a56cc15da913">Changes to WebDAV Sync Collection <tt>REPORT</tt> requests</title>
<p id="_f4c372d9-b063-5983-8345-9ea2ba53d909">A client fetching the <tt>CALDAV:calendar-data</tt> “property” in a <tt>DAV:sync-collection</tt> <tt>REPORT</tt> can signal to a server that it is willing and able to receive calendar patch documents rather than entire calendar resources by including a Prefer header field with the “calendar-patch” preference in the <tt>REPORT</tt> request. The value of the sync-token specified in the Prefer request header field  <tt>MUST</tt> match that of the <tt>DAV:sync-token</tt> element in the <tt>REPORT</tt> body.</p>

<p id="_81f6b8fb-6fa7-965e-6d93-0b43e21a2948">If a server receives a “calendar-patch” preference, recognizes the supplied sync-token, and is able to create patch documents for resources in a format compatible with the “content-type” attribute of the  <tt>CALDAV:calendar-data</tt> element, the server  <tt>MAY</tt> respond to the request with patch documents in lieu of entire resources. If a resource has not changed since the state indicated by the sync-token, the server  <tt>MAY</tt> respond with a 304 (Not Modified) status code in the  <tt>DAV:propstat</tt> element containing the <tt>CALDAV:calendar-data</tt> element in lieu of an empty calendar patch document.</p>

<example id="_44a7efc5-6f3a-3999-e042-f8592547a957"><sourcecode id="_2a4c0faf-69b2-446e-e0e4-18f7731f8b40" unnumbered="true"><body>&gt;&gt; Request &lt;&lt;

REPORT /events/work/ HTTP/1.1
Host: cal.example.com
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
Prefer: calendar-patch; since="http://example.com/ns/sync/1234"

&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;D:sync-collection xmlns:D="DAV:"
                   xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
  &lt;D:sync-token&gt;http://example.com/ns/sync/1234&lt;/D:sync-token&gt;
  &lt;D:sync-level&gt;1&lt;/D:sync-level&gt;
  &lt;D:prop&gt;
    &lt;D:getetag/&gt;
    &lt;C:calendar-data content-type="text/calendar; component=VPATCH"/&gt;
  &lt;/D:prop&gt;
&lt;/D:sync-collection&gt;

&gt;&gt; Response &lt;&lt;

HTTP/1.1 207 Multi-Status
Date: Sat, 11 Feb 2017 09:32:12 GMT
Content-Type: application/xml; charset="utf-8"
Content-Length: xxxx

&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;D:multistatus xmlns:D="DAV:"
               xmlns:C="urn:ietf:params:xml:ns:caldav"&gt;
  &lt;D:response&gt;
    &lt;D:href&gt;http://cal.example.com/events/work/abcd1.ics&lt;/D:href&gt;
    &lt;D:propstat&gt;
      &lt;D:prop&gt;
        &lt;D:getetag&gt;"fffff-abcd1"&lt;/D:getetag&gt;
        &lt;C:calendar-data&gt;BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//CalDAV Client//EN
BEGIN:VPATCH
UID:qrst
DTSTAMP:20170201T000000Z
BEGIN:PATCH
PATCH-TARGET:/VCALENDAR/VEVENT[UID=abcd1]
ATTENDEE;PATCH-ACTION=BYVALUE;PARTSTAT=ACCEPTED:
 mailto:cyrus@example.com
END:PATCH
END:VPATCH
END:VCALENDAR
        &lt;/C:calendar-data&gt;
      &lt;/D:prop&gt;
      &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
    &lt;/D:propstat&gt;
  &lt;/D:response&gt;
  &lt;D:sync-token&gt;http://example.com/ns/sync/1238&lt;/D:sync-token&gt;
&lt;/D:multistatus&gt;</body></sourcecode> </example>
</clause>

<clause id="_46a19ed8-b645-e0bf-b184-3b43c6280a08" obligation="normative">
<title id="_8ba64b9d-8587-1272-c42f-8d49b9f66437">Security Considerations</title>
<p id="_b7d362bb-c0f4-c755-6af5-b6c43a00aa8f">Security considerations described in <eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"/>, <eref type="inline" bibitemid="RFC5789" citeas="IETF RFC 5789"/>, and <eref type="inline" bibitemid="RFC4791" citeas="IETF RFC 4791"/> <tt>MUST</tt> be adhered to.</p>
</clause>

<clause id="_1e69e584-405b-1373-d89c-c7087032f73c" obligation="normative">
<title id="_e05f90f5-d0a7-8365-ae7d-a4a24b89f68f">Privacy Considerations</title>
<p id="_cd2ca333-41ca-d846-4e6c-5773bcaacc1c">Privacy considerations described in <eref type="inline" bibitemid="RFC5545" citeas="IETF RFC 5545"/>, <eref type="inline" bibitemid="RFC5789" citeas="IETF RFC 5789"/>, and <eref type="inline" bibitemid="RFC4791" citeas="IETF RFC 4791"/> <tt>MUST</tt> be adhered to.</p>
</clause>

<clause id="_2631c5ad-7c5a-9469-eb31-f2c6cba9bc0e" obligation="normative">
<title id="_6fe6bcf8-682b-1e42-d96c-901afa34b134">IANA Considerations</title>
<p id="_8864c0c5-a08d-8531-e77b-09d03aeeb9be">The following preference is to be added to the HTTP Preferences Registry defined in  <eref type="inline" bibitemid="RFC7240" citeas="IETF RFC 7240"><localityStack><locality type="section"><referenceFrom>5.1</referenceFrom></locality></localityStack></eref>.</p>

<dl id="_a74c0588-af0f-7a20-cc94-da9e6e2b8457"><dt>Preference</dt>
<dd id="_4af8bd5b-51db-4981-ad97-04b5a9f587d6"><p id="_659c89ff-79b5-9d63-f31e-2d7114b78b82"><tt>calendar-patch</tt></p>
</dd>
<dt>Parameters</dt>
<dd id="_f9e84327-fb73-2090-75d4-ac5b1fa067df"><p id="_e1ce3295-9b5e-8efe-2224-d14106e3779a"><tt>since = &lt;sync-token&gt;</tt></p>
</dd>
<dt>Description</dt>
<dd id="_efdd2392-a42e-2980-9ef1-f7587262974b"><p id="_dcc548b4-3c06-9302-d056-384c6523a5c9">The “<tt>calendar-patch</tt>” preference indicates that the client wishes for the server to use calendar patch documents in the HTTP response rather than entire calendar resources. The value of the “since” parameter provides the anchor point from which the server should generate the patch documents.</p>
</dd>
<dt>Reference</dt>
<dd id="_562ddbee-b577-cc10-9a88-b5746b4be5c0"><p id="_8c568cf5-02d9-23cf-5334-a9ebde21aee5">RFCXXXX, <xref target="cls-4"/></p>
</dd>
<dt>Notes</dt>
<dd id="_299b4209-956e-0368-2cdb-d5dd75510440"><p id="_3783097f-c6f7-752d-c5df-92d1d9911036">This preference is only intended to be used with CalDAV requests that expect calendar data to be included in the response. Furthermore, the “since” parameter is <tt>REQUIRED</tt> with this preference.</p>
</dd>
</dl>
</clause>

<clause id="_0d12b20c-984b-0681-faea-6cc6ff1f3668" obligation="normative">
<title id="_a0da6c80-0cbc-529a-6dfd-d43cb5d22cd3">Acknowledgments</title>
<p id="_fa8150a7-1b20-6f21-9bde-c27ed7905e68">Thanks to the following for feedback: Mike Douglass, Bron Gondwana.</p>

<p id="_7ce425f0-355c-8305-99be-07b6e1b7eba7">This specification originated from work at the Calendaring and Scheduling Consortium, which has helped with the development and testing of implementations.</p>
</clause>
</sections><bibliography><references id="_73e8be2f-dcd1-590b-baa0-465ab85638fc" normative="true" obligation="informative">
<title id="_461cd77a-5cfe-f57e-70ab-04e5c4142c2b">Normative references</title><p id="_02b1c060-f2f9-4bc4-035d-e49887f749e3">The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.</p>
<bibitem id="_0d9c78ba-037c-9336-a87f-c9e2deb0f7cd" type="standard" schema-version="v1.5.6" anchor="RFC2119">
  <fetched>2026-05-13</fetched>
  
<title type="main">Key words for use in RFCs to Indicate Requirement Levels</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc2119</uri>
  <docidentifier type="IETF" primary="true">RFC 2119</docidentifier>
  <docidentifier type="DOI">10.17487/RFC2119</docidentifier>
  <docnumber>RFC2119</docnumber>
  <date type="published">
    <on>1997-03</on>
  </date>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">S.</formatted-initials>          <surname language="en" script="Latn">Bradner</surname>          <completename language="en" script="Latn">S. Bradner</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_3bdac10a-6b1c-ec09-c1d6-02c601f1e523">In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized.  This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</p>

  </abstract>
  <status>
    <stage>BEST CURRENT PRACTICE</stage>
  </status>
  <series>
    
<title>BCP</title>

    <number>14</number>
  </series>
  <series>
    
<title>RFC</title>

    <number>2119</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>Standards</vocab>
  </keyword>
  <keyword>
    <vocab>Track</vocab>
  </keyword>
  <keyword>
    <vocab>Documents</vocab>
  </keyword>
</bibitem>
<bibitem id="_de589169-2b32-bc32-f82e-33f0d1f05002" type="standard" schema-version="v1.5.6" anchor="RFC4791">
  <fetched>2026-05-13</fetched>
  
<title type="main">Calendaring Extensions to WebDAV (CalDAV)</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc4791</uri>
  <docidentifier type="IETF" primary="true">RFC 4791</docidentifier>
  <docidentifier type="DOI">10.17487/RFC4791</docidentifier>
  <docnumber>RFC4791</docnumber>
  <date type="published">
    <on>2007-03</on>
  </date>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">C.</formatted-initials>          <surname language="en" script="Latn">Daboo</surname>          <completename language="en" script="Latn">C. Daboo</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">B.</formatted-initials>          <surname language="en" script="Latn">Desruisseaux</surname>          <completename language="en" script="Latn">B. Desruisseaux</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">L.</formatted-initials>          <surname language="en" script="Latn">Dusseault</surname>          <completename language="en" script="Latn">L. Dusseault</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_182989f2-668b-8bc6-0199-22eb5d74a3c3">This document defines extensions to the Web Distributed Authoring and Versioning (WebDAV) protocol to specify a standard way of accessing, managing, and sharing calendaring and scheduling information based on the iCalendar format.  This document defines the “calendar-access” feature of CalDAV. [STANDARDS-TRACK]</p>

  </abstract>
  <status>
    <stage>PROPOSED STANDARD</stage>
  </status>
  <series>
    
<title>RFC</title>

    <number>4791</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>calsched</vocab>
  </keyword>
  <keyword>
    <vocab>calsch</vocab>
  </keyword>
  <keyword>
    <vocab>calcav</vocab>
  </keyword>
  <keyword>
    <vocab>calendar</vocab>
  </keyword>
  <keyword>
    <vocab>calendaring</vocab>
  </keyword>
  <keyword>
    <vocab>scheduling</vocab>
  </keyword>
  <keyword>
    <vocab>webdav</vocab>
  </keyword>
  <keyword>
    <vocab>ical</vocab>
  </keyword>
  <keyword>
    <vocab>icalendar</vocab>
  </keyword>
  <keyword>
    <vocab>itip</vocab>
  </keyword>
  <keyword>
    <vocab>text/calendar</vocab>
  </keyword>
  <keyword>
    <vocab>http</vocab>
  </keyword>
</bibitem>
<bibitem id="_9dc89777-3aaf-df51-1358-f1778b267a81" type="standard" schema-version="v1.5.6" anchor="RFC5234">
  <fetched>2026-05-13</fetched>
  
<title type="main">Augmented BNF for Syntax Specifications: ABNF</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc5234</uri>
  <docidentifier type="IETF" primary="true">RFC 5234</docidentifier>
  <docidentifier type="DOI">10.17487/RFC5234</docidentifier>
  <docnumber>RFC5234</docnumber>
  <date type="published">
    <on>2008-01</on>
  </date>
  <contributor>
    <role type="editor"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">D.</formatted-initials>          <surname language="en" script="Latn">Crocker</surname>          <completename language="en" script="Latn">D. Crocker</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">P.</formatted-initials>          <surname language="en" script="Latn">Overell</surname>          <completename language="en" script="Latn">P. Overell</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_8d5a4f5d-b4ce-76d0-f125-582a9b33db6c">Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF.  It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</p>

  </abstract>
  <status>
    <stage>INTERNET STANDARD</stage>
  </status>
  <series>
    
<title>STD</title>

    <number>68</number>
  </series>
  <series>
    
<title>RFC</title>

    <number>5234</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>ABNF</vocab>
  </keyword>
  <keyword>
    <vocab>backus-naur form</vocab>
  </keyword>
  <keyword>
    <vocab>augmented backus-naur form</vocab>
  </keyword>
  <keyword>
    <vocab>rule definitions</vocab>
  </keyword>
  <keyword>
    <vocab>encoding</vocab>
  </keyword>
  <keyword>
    <vocab>core lexical analyzer</vocab>
  </keyword>
</bibitem>
<bibitem id="_27a8badc-c6d6-439a-9ef4-9b3866952b47" type="standard" schema-version="v1.5.6" anchor="RFC5545">
  <fetched>2026-05-13</fetched>
  
<title type="main">Internet Calendaring and Scheduling Core Object Specification (iCalendar)</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc5545</uri>
  <docidentifier type="IETF" primary="true">RFC 5545</docidentifier>
  <docidentifier type="DOI">10.17487/RFC5545</docidentifier>
  <docnumber>RFC5545</docnumber>
  <date type="published">
    <on>2009-09</on>
  </date>
  <contributor>
    <role type="editor"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">B.</formatted-initials>          <surname language="en" script="Latn">Desruisseaux</surname>          <completename language="en" script="Latn">B. Desruisseaux</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name language="en">Internet Engineering Task Force</name>

      <subdivision type="workgroup">
        
<name>Calendaring and Scheduling Standards Simplification</name>

        <identifier>calsify</identifier>
      </subdivision>
      <abbreviation language="en">IETF</abbreviation>
    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_e436cd19-5f4d-3144-d2f5-2ee586583fa7">This document defines the iCalendar data format for representing and exchanging calendaring and scheduling information such as events, to-dos, journal entries, and free/busy information, independent of any particular calendar service or protocol. [STANDARDS-TRACK]</p>

  </abstract>
  <status>
    <stage>PROPOSED STANDARD</stage>
  </status>
  <series>
    
<title>RFC</title>

    <number>5545</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>calsify</vocab>
  </keyword>
  <keyword>
    <vocab>calsched</vocab>
  </keyword>
  <keyword>
    <vocab>calsch</vocab>
  </keyword>
  <keyword>
    <vocab>caldav</vocab>
  </keyword>
  <keyword>
    <vocab>calendar</vocab>
  </keyword>
  <keyword>
    <vocab>calendaring</vocab>
  </keyword>
  <keyword>
    <vocab>meeting</vocab>
  </keyword>
  <keyword>
    <vocab>event</vocab>
  </keyword>
  <keyword>
    <vocab>task</vocab>
  </keyword>
  <keyword>
    <vocab>to-do</vocab>
  </keyword>
  <keyword>
    <vocab>journal</vocab>
  </keyword>
  <keyword>
    <vocab>appointment</vocab>
  </keyword>
  <keyword>
    <vocab>agenda</vocab>
  </keyword>
  <keyword>
    <vocab>schedule</vocab>
  </keyword>
  <keyword>
    <vocab>scheduling</vocab>
  </keyword>
  <keyword>
    <vocab>ical</vocab>
  </keyword>
  <keyword>
    <vocab>icalendar</vocab>
  </keyword>
  <keyword>
    <vocab>itip</vocab>
  </keyword>
  <keyword>
    <vocab>imip</vocab>
  </keyword>
  <keyword>
    <vocab>text/calendar</vocab>
  </keyword>
  <keyword>
    <vocab>ischedule</vocab>
  </keyword>
  <keyword>
    <vocab>xCalendar</vocab>
  </keyword>
</bibitem>
<bibitem id="_9d7644be-4ea2-a3ab-7e1c-be4e21a07b5c" type="standard" schema-version="v1.5.6" anchor="RFC5789">
  <fetched>2026-05-13</fetched>
  
<title type="main">PATCH Method for HTTP</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc5789</uri>
  <docidentifier type="IETF" primary="true">RFC 5789</docidentifier>
  <docidentifier type="DOI">10.17487/RFC5789</docidentifier>
  <docnumber>RFC5789</docnumber>
  <date type="published">
    <on>2010-03</on>
  </date>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">L.</formatted-initials>          <surname language="en" script="Latn">Dusseault</surname>          <completename language="en" script="Latn">L. Dusseault</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">J.</formatted-initials>          <surname language="en" script="Latn">Snell</surname>          <completename language="en" script="Latn">J. Snell</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_1fb6518d-f9f4-b1f6-a4a1-f275e3ec762f">Several applications extending the Hypertext Transfer Protocol (HTTP) require a feature to do partial resource modification.  The existing HTTP PUT method only allows a complete replacement of a document.  This proposal adds a new HTTP method, PATCH, to modify an existing HTTP resource. [STANDARDS-TRACK]</p>

  </abstract>
  <status>
    <stage>PROPOSED STANDARD</stage>
  </status>
  <series>
    
<title>RFC</title>

    <number>5789</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>HTTP</vocab>
  </keyword>
  <keyword>
    <vocab>PATCH</vocab>
  </keyword>
  <keyword>
    <vocab>Hypertext Transfer Protocol</vocab>
  </keyword>
</bibitem>
<bibitem id="_2946bb7c-0109-5064-fec3-8a2e437a555d" type="standard" schema-version="v1.5.6" anchor="RFC6321">
  <fetched>2026-05-13</fetched>
  
<title type="main">xCal: The XML Format for iCalendar</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc6321</uri>
  <docidentifier type="IETF" primary="true">RFC 6321</docidentifier>
  <docidentifier type="DOI">10.17487/RFC6321</docidentifier>
  <docnumber>RFC6321</docnumber>
  <date type="published">
    <on>2011-08</on>
  </date>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">C.</formatted-initials>          <surname language="en" script="Latn">Daboo</surname>          <completename language="en" script="Latn">C. Daboo</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">M.</formatted-initials>          <surname language="en" script="Latn">Douglass</surname>          <completename language="en" script="Latn">M. Douglass</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">S.</formatted-initials>          <surname language="en" script="Latn">Lees</surname>          <completename language="en" script="Latn">S. Lees</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_52462749-a610-777f-02ca-94cf67458fe9">This specification defines “xCal”, an XML format for iCalendar data. [STANDARDS-TRACK]</p>

  </abstract>
  <status>
    <stage>PROPOSED STANDARD</stage>
  </status>
  <series>
    
<title>RFC</title>

    <number>6321</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>extensible markup language</vocab>
  </keyword>
</bibitem>
<bibitem id="_a214fcfd-9115-5b4f-3c1b-a4475fb53727" type="standard" schema-version="v1.5.6" anchor="RFC6578">
  <fetched>2026-05-13</fetched>
  
<title type="main">Collection Synchronization for Web Distributed Authoring and Versioning (WebDAV)</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc6578</uri>
  <docidentifier type="IETF" primary="true">RFC 6578</docidentifier>
  <docidentifier type="DOI">10.17487/RFC6578</docidentifier>
  <docnumber>RFC6578</docnumber>
  <date type="published">
    <on>2012-03</on>
  </date>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">C.</formatted-initials>          <surname language="en" script="Latn">Daboo</surname>          <completename language="en" script="Latn">C. Daboo</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">A.</formatted-initials>          <surname language="en" script="Latn">Quillaud</surname>          <completename language="en" script="Latn">A. Quillaud</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_ccec68a9-d7c8-a644-3d99-25b9d66735f6">This specification defines an extension to Web Distributed Authoring and Versioning (WebDAV) that allows efficient synchronization of the contents of a WebDAV collection. [STANDARDS-TRACK]</p>

  </abstract>
  <status>
    <stage>PROPOSED STANDARD</stage>
  </status>
  <series>
    
<title>RFC</title>

    <number>6578</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>sync-collection</vocab>
  </keyword>
  <keyword>
    <vocab>sync-token</vocab>
  </keyword>
</bibitem>
<bibitem id="_2582b94e-67c2-ecb6-5d25-b40000b67e53" type="standard" schema-version="v1.5.6" anchor="RFC6638">
  <fetched>2026-05-13</fetched>
  
<title type="main">Scheduling Extensions to CalDAV</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc6638</uri>
  <docidentifier type="IETF" primary="true">RFC 6638</docidentifier>
  <docidentifier type="DOI">10.17487/RFC6638</docidentifier>
  <docnumber>RFC6638</docnumber>
  <date type="published">
    <on>2012-06</on>
  </date>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">C.</formatted-initials>          <surname language="en" script="Latn">Daboo</surname>          <completename language="en" script="Latn">C. Daboo</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">B.</formatted-initials>          <surname language="en" script="Latn">Desruisseaux</surname>          <completename language="en" script="Latn">B. Desruisseaux</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_4921b833-265e-12fc-ece1-4f84d835cb56">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. [STANDARDS-TRACK]</p>

  </abstract>
  <status>
    <stage>PROPOSED STANDARD</stage>
  </status>
  <relation type="updates">
    <bibitem>
      <formattedref>RFC4791</formattedref>
      <docidentifier type="IETF" primary="true">RFC4791</docidentifier>
    </bibitem>

  </relation>
  <relation type="updates">
    <bibitem>
      <formattedref>RFC5546</formattedref>
      <docidentifier type="IETF" primary="true">RFC5546</docidentifier>
    </bibitem>

  </relation>
  <series>
    
<title>RFC</title>

    <number>6638</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>calsify</vocab>
  </keyword>
  <keyword>
    <vocab>calsched</vocab>
  </keyword>
  <keyword>
    <vocab>calsch</vocab>
  </keyword>
  <keyword>
    <vocab>calendar</vocab>
  </keyword>
  <keyword>
    <vocab>calendaring</vocab>
  </keyword>
  <keyword>
    <vocab>webcal</vocab>
  </keyword>
  <keyword>
    <vocab>ical</vocab>
  </keyword>
  <keyword>
    <vocab>icalendar</vocab>
  </keyword>
  <keyword>
    <vocab>ischedule</vocab>
  </keyword>
  <keyword>
    <vocab>itip</vocab>
  </keyword>
  <keyword>
    <vocab>imip</vocab>
  </keyword>
  <keyword>
    <vocab>text/calendar</vocab>
  </keyword>
  <keyword>
    <vocab>http</vocab>
  </keyword>
</bibitem>
<bibitem id="_869c3432-a8d4-00a5-2ed9-66021a6c98dd" type="standard" schema-version="v1.5.6" anchor="RFC7230">
  <fetched>2026-05-13</fetched>
  
<title type="main">Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc7230</uri>
  <docidentifier type="IETF" primary="true">RFC 7230</docidentifier>
  <docidentifier type="DOI">10.17487/RFC7230</docidentifier>
  <docnumber>RFC7230</docnumber>
  <date type="published">
    <on>2014-06</on>
  </date>
  <contributor>
    <role type="editor"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">R.</formatted-initials>          <surname language="en" script="Latn">Fielding</surname>          <completename language="en" script="Latn">R. Fielding</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="editor"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">J.</formatted-initials>          <surname language="en" script="Latn">Reschke</surname>          <completename language="en" script="Latn">J. Reschke</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name language="en">Internet Engineering Task Force</name>

      <subdivision type="workgroup">
        
<name>HTTP</name>

        <identifier>httpbis</identifier>
      </subdivision>
      <abbreviation language="en">IETF</abbreviation>
    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_0ebf0a31-f5e3-0f57-3a5c-e352e9603e2c">The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.  This document provides an overview of HTTP architecture and its associated terminology, defines the “http” and “https” Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</p>

  </abstract>
  <status>
    <stage>PROPOSED STANDARD</stage>
  </status>
  <relation type="updates">
    <bibitem>
      <formattedref>RFC2817</formattedref>
      <docidentifier type="IETF" primary="true">RFC2817</docidentifier>
    </bibitem>

  </relation>
  <relation type="updates">
    <bibitem>
      <formattedref>RFC2818</formattedref>
      <docidentifier type="IETF" primary="true">RFC2818</docidentifier>
    </bibitem>

  </relation>
  <relation type="obsoletedBy">
    <bibitem>
      <formattedref>RFC9110</formattedref>
      <docidentifier type="IETF" primary="true">RFC9110</docidentifier>
    </bibitem>

  </relation>
  <relation type="obsoletedBy">
    <bibitem>
      <formattedref>RFC9112</formattedref>
      <docidentifier type="IETF" primary="true">RFC9112</docidentifier>
    </bibitem>

  </relation>
  <series>
    
<title>RFC</title>

    <number>7230</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>Hyptertext Transfer Protocol</vocab>
  </keyword>
  <keyword>
    <vocab>HTTP</vocab>
  </keyword>
  <keyword>
    <vocab>HTTP message format</vocab>
  </keyword>
</bibitem>
<bibitem id="_58c46367-ada7-302b-5f32-b89dd9d71619" type="standard" schema-version="v1.5.6" anchor="RFC7240">
  <fetched>2026-05-13</fetched>
  
<title type="main">Prefer Header for HTTP</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc7240</uri>
  <docidentifier type="IETF" primary="true">RFC 7240</docidentifier>
  <docidentifier type="DOI">10.17487/RFC7240</docidentifier>
  <docnumber>RFC7240</docnumber>
  <date type="published">
    <on>2014-06</on>
  </date>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">J.</formatted-initials>          <surname language="en" script="Latn">Snell</surname>          <completename language="en" script="Latn">J. Snell</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_e2eb6d20-9cfa-694b-3547-032517c6c6a9">This specification defines an HTTP header field that can be used by a client to request that certain behaviors be employed by a server while processing a request.</p>

  </abstract>
  <status>
    <stage>PROPOSED STANDARD</stage>
  </status>
  <series>
    
<title>RFC</title>

    <number>7240</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>http</vocab>
  </keyword>
  <keyword>
    <vocab>prefer</vocab>
  </keyword>
</bibitem>
<bibitem id="_f7c3549e-5f80-d670-8fff-28e93164011f" type="standard" schema-version="v1.5.6" anchor="RFC7265">
  <fetched>2026-05-13</fetched>
  
<title type="main">jCal: The JSON Format for iCalendar</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc7265</uri>
  <docidentifier type="IETF" primary="true">RFC 7265</docidentifier>
  <docidentifier type="DOI">10.17487/RFC7265</docidentifier>
  <docnumber>RFC7265</docnumber>
  <date type="published">
    <on>2014-05</on>
  </date>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">P.</formatted-initials>          <surname language="en" script="Latn">Kewisch</surname>          <completename language="en" script="Latn">P. Kewisch</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">C.</formatted-initials>          <surname language="en" script="Latn">Daboo</surname>          <completename language="en" script="Latn">C. Daboo</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">M.</formatted-initials>          <surname language="en" script="Latn">Douglass</surname>          <completename language="en" script="Latn">M. Douglass</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name language="en">Internet Engineering Task Force</name>

      <subdivision type="workgroup">
        
<name>JSON data formats for vCard and iCalendar</name>

        <identifier>jcardcal</identifier>
      </subdivision>
      <abbreviation language="en">IETF</abbreviation>
    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_e231c66f-30b5-5a54-e60c-563b1bc1d76a">This specification defines “jCal”, a JSON format for iCalendar data.  The iCalendar data format is a text format for capturing and exchanging information normally stored within a calendaring and scheduling application, for example, tasks and events.  JSON is a lightweight, text-based, language-independent data interchange format commonly used in Internet applications.</p>

  </abstract>
  <status>
    <stage>PROPOSED STANDARD</stage>
  </status>
  <series>
    
<title>RFC</title>

    <number>7265</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
</bibitem>
</references></bibliography>
</metanorma>
