<?xml version="1.0"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-calext-subscription-upgrade-11" category="std" ipr="trust200902" consensus="true" updates="5545" submissionType="IETF" xml:lang="en" version="3" >
  <front>
    <title>Calendar subscription upgrades</title>
    <seriesInfo value="draft-ietf-calext-subscription-upgrade-11" status="Standard" stream="IETF" name="Internet-Draft" asciiName="Internet-Draft"></seriesInfo>
    <seriesInfo name="" value="" status="full-standard"></seriesInfo>
    <author fullname="Michael Douglass">
      <address>
        <postal></postal>
        <email>mdouglass@bedework.com</email>
        <uri></uri>
      </address>
    </author>
    <area>Internet</area>
    <abstract anchor="_65c27e68-d09b-4b7e-bb4a-be867a497b8d">
<t anchor="_b3a5b011-ef43-4db9-a001-98acee8c51b6">This specification updates RFC5545 to add the value DELETED to the
STATUS property.</t>
<t anchor="_cb7c8633-7484-4d77-8785-078f2fa2a15a">This specification also adds values to the Preferences
Registry defined in RFC7240 to add the subscribe-enhanced-get and
limit preferences and to the link relations directory
defined in RFC8288.</t>
<t anchor="_b1cded9b-70cd-4ccc-a3b4-ac762f669fab">Additionally, this specification defines a new enhanced GET protocol to
allow the updating of a cached resource without fetching all the data.</t></abstract>
  </front>
  <middle>
    <section anchor="acknowledgements"><name>Acknowledgements</name><t anchor="_9e6a8134-56b7-45db-8774-41ae01c9dc04">The author would like to thank the members of the CalConnect
Calendar Sharing technical committee and the following individuals
for contributing their ideas and support:</t>
<t anchor="_4de92939-01de-4684-a891-9e7303f99532">Marten Gajda, Ken Murchison, Garry Shutler</t></section>
    <section anchor="introduction"><name>Introduction</name><t anchor="_8d970131-8c8a-4687-ada4-ec7a938d0b66">Currently, clients subscribe to calendar feeds as an iCalendar file which is
often published as a resource accessible using the unofficial
'webcal' URI scheme.</t>
<t anchor="_53735a4a-70a1-4ddc-96b7-83db3b1fc644">The only available option for updating that resource is the usual
HTTP polling of cached resources using <relref target="RFC9110" section="8.8.2" relative=""></relref> Last-Modified or <relref target="RFC9110" section="8.8.3" relative=""></relref> Etag.</t>
<t anchor="_5dd1c4f2-01b7-4962-8f65-2aa4075f75d1">There is the usual tension between clients wishing to see a timely
response to changes and servers not wishing to be overloaded by
frequent requests for possibly large amounts of data.</t>
<t anchor="_d37b2bfc-7575-4d05-b721-fd80893c8f84">This specification introduces an approach whereby clients can
discover a more performant access method. Given the location of the
resource as an iCalendar file, the client can perform a HEAD request on the
resource and inspect the returned headers which will offer a number
of alternative access methods.</t>
<t anchor="_601d5ab9-f81e-4cb2-b995-ce3655fa26d0">Given that many clients and servers already support CalDAV this provides an easy
upgrade path for those clients. Additionally, an enhanced GET protocol is specified
here to allow a lightweight implementation.</t>
<t anchor="_d4a5e1a9-e16b-419d-9065-3ee4353c76e6">The use of subscription upgrade may help reduce load on servers, but perhaps
more importantly it allows mobile devices to use a more efficient update
mechanism, reducing data transferred and presumably improving battery life.</t>
<section anchor="conventions"><name>Terms and Definitions</name><t anchor="_f622db51-2d74-41a1-857c-0dc6791cdf9a">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 BCP 14 <relref target="RFC2119" section="" relative=""></relref> <relref target="RFC8174" section="" relative=""></relref> when, and
only when, they appear in all capitals, as shown here.</t>
<t anchor="_8acf235c-7fd7-4761-8106-60ab5b2a4385">Additionally, the rule for URI is included from <relref target="RFC3986" section="" relative=""></relref>.</t></section></section>
    <section anchor="_discovering_alternative_access_methods"><name>Discovering alternative access methods</name><t anchor="_853fbe2a-bace-4d11-a291-82636902fc38">The advertising of other access points is achieved through the use of
the LINK header as defined in <relref target="RFC8288" section="" relative=""></relref>. New link relation types are
defined in this specification - each being associated with a protocol
or protocol subset.</t>
<t anchor="_55387da8-b0a0-4251-8a11-4a7d619a0742">These LINK headers will be delivered when a client carries out a HEAD
request targeting the URL of the resource.</t>
<t anchor="_8d224724-0474-480e-9eb8-6d2706640ef6" keepWithNext="true">EXAMPLE</t><t anchor="_bfc77382-96c1-47e3-b71b-5c0e13395332">This is an example of a HEAD request and the response from a server
that supports the enhanced GET method.</t><sourcecode anchor="_f11b6dd4-74d3-4bc4-946f-91085e8b0940"><![CDATA[    >> Request <<

    HEAD /caldata/events.ics HTTP/1.1
    Host: example.com
    Accept: text/calendar

    >> Response <<

    HTTP/1.1 200 OK
    Content-Length: xxxx
    Link: <https://example.com/subscribe/events.ics>;
                 rel="subscribe-enhanced-get"]]></sourcecode>
<t anchor="_7538af2e-ac17-49bd-baf0-6e95c7e569cf">Note that the target for an upgraded service may be the same as
for the initial resource.</t></section>
    <section anchor="enhanced-get"><name>Enhanced GET</name><section anchor="_general"><name>General</name><t anchor="_bbefd74d-d903-4d52-8289-c59ebf66a8e7">This is a lightweight protocol which allows simple clients to
efficiently discover and download changes in the targeted resource.</t>
<t anchor="_79353880-f948-43fb-b157-4d90deed4f7c">It has many similarities to <relref target="RFC6578" section="" relative=""></relref> WebDAV sync and for a server could be
implemented as an extension of the specification.</t>
<t anchor="_9b9d78bf-b4c9-406c-be0d-932c0a0c6d1e">In this protocol the client MUST include the Prefer header field
preference "subscribe-enhanced-get". If a sync token is available it
is passed as a Sync-Token header field.</t>
<t anchor="_2ca5f12e-99e4-4242-b872-f083ead29598">The resource is treated as a set of individual events each of which
may be updated or deleted separately. Note that a recurring event and
its overrides are treated as a single entity. The client will first fetch
the entire iCalendar file. On subsequent requests it uses the Prefer
header field and a Sync-Token header field to indicate that it wants a set
of changes since the last fetch.</t>
<t anchor="_af138f7a-d7f6-4577-8179-01554a374c19">If no Sync-Token header field is supplied the server MUST
respond with a full set of data and SHOULD set the Preference-Applied header
field and a new Sync-Token header field value.</t>
<t anchor="_e76f7034-f6ca-4e54-be7b-78f339f05384">If the token is valid, it SHOULD return with a set of changed entities
and MUST set the Preference-Applied header field and a new Sync-Token header field value.</t>
<t anchor="_cfb2d1c4-fc20-45bb-9677-d6a79820e709">When a server receives an invalid token it MUST return a 409 status (Conflict).
The server MAY choose to return an error message in the body.</t>
<t anchor="_8fffa29d-3ff7-480b-91ae-2be731853fd7">The client MUST respond to this error by discarding the cached data
and restarting the interaction
from scratch, i.e. retrieve the full set of data then poll for
updates.</t>
<t anchor="_2cc30f7a-3e98-487f-9de4-0d614a4278cb">In the absence of a Prefer header field, the server MAY include the
Sync-Token header field. This can act as a signal to the client that
the server supports the enhanced-get protocol.</t></section>
<section anchor="enhanced-get-deletion"><name>Deletions</name><t anchor="_7f1e4013-16d5-4a04-97bf-64bd6533ec49">When an entity (VEVENT, VTODO or other valid top-level component) is
deleted from the source data the server needs to be able to inform a
client of the deletion. This specification introduces a new value
"DELETED" for the <relref target="RFC5545" section="3.8.1.11" relative=""></relref> STATUS property.</t>
<t anchor="_e91f778c-eea0-4bf6-8c54-fc455a7ffe78">On the first enhanced GET after the entity has been deleted a
skeleton, but valid, entity will be returned with STATUS: DELETED.
The receiving client is free to remove the entity or update its
STATUS property.</t>
<t anchor="_ea68c71e-8bb9-436f-ac8a-5bf957941414">On subsequent fetches the entity will not be returned.</t>
<t anchor="_d62b699a-7e69-49b7-9581-263bd1932d10">As noted above, the skeleton entity returned must be a valid component
as defined by the specifications. For example, a VEVENT MUST contain the
DTSTAMP, DTSTART and UID properties as well as the STATUS: DELETED property.
The DTSTAMP and DTSTART may be generated and the UID MUST be the UID
of the deleted entity.</t></section>
<section anchor="_paging_the_response"><name>Paging the response</name><t anchor="_8fbc4c52-77cb-4f07-a24e-71a1692f027c">A client may explicitly request a limit on the size of the response
by specifying the Prefer header field preference "limit=n" where n is
the number of components.</t>
<t anchor="_0930f3e8-5b48-4970-afc9-9a8b93ee7451">When a server receives a request specifying such a limit it SHOULD
limit the response to that number of components. If the limit causes
a truncation in the response the server should respond with a
Preference-Applied header specifying the limit that was applied
and return a sync token which may be used to retrieve the next batch of data.</t>
<t anchor="_583985b8-ca45-477a-9cdd-2728f53c8f98">This allows the client to immediately resubmit a
request for the next batch using the updated token.</t>
<t anchor="_19aa1714-8f89-410c-a279-d240c9d699b2">A server MAY choose to limit the response size. The behavior MUST
be as if the client had provided a preference for that size -
allowing the client to retrieve the full set of data in batches.</t>
<t anchor="_e218da35-62d4-4801-80db-11ffef38a7b7">Note that the process above assumes that the current position in the
resource is encoded in some way within the sync token.</t></section>
<section anchor="_caching_of_responses"><name>Caching of responses</name><t anchor="_38bffc9a-115b-4f10-b150-784f19f2ec10">To enable proper caching of responses the server SHOULD provide a
Vary header field defined in <relref target="RFC7231" section="7.1.4" relative=""></relref> in responses
that names the Prefer and Sync-Token header fields
along with any other that are appropriate.</t>
<t anchor="_ff303cbd-c5d5-4117-82ba-f03536ea327b">See <relref target="RFC7240" section="2" relative=""></relref> for a brief comment on use of Vary and Prefer.</t></section>
<section anchor="_examples"><name>Examples</name><t anchor="_505460b6-2a2a-4660-b8e2-a0685570cd7c" keepWithNext="true">EXAMPLE  1</t><t anchor="_e5f1274f-cee7-49e4-b15b-e6c1fc84d0fd">This is an example of the initial request and response from a server
that supports the enhanced GET method. Note the use of the Vary header so a caching proxy can key off the client's Sync-Token and preference.</t><sourcecode anchor="_34bde85a-9b6e-4343-b350-4a567ac83522"><![CDATA[    >> Request <<

    GET /events.ics HTTP/1.1
    Host: example.com
    Accept: text/calendar
    Prefer: subscribe-enhanced-get

    >> Response <<

    HTTP/1.1 200 OK
    Content-Length: xxxx
    Sync-Token: "data:,1234567"
    Preference-Applied: subscribe-enhanced-get
    Vary: Prefer, Sync-Token

    BEGIN:VCALENDAR:
    ?  /* full feed */
    END:VCALENDAR]]></sourcecode>
<t anchor="_eb3f576c-15aa-47b2-925a-b2fc5c472ab7" keepWithNext="true">EXAMPLE  2</t><t anchor="_59e7f3f0-11f5-4d35-b466-faf98d91110a">This is an example of the subsequent request and response when no
changes have occurred.</t><sourcecode anchor="_03aa44f5-8615-42cd-8995-78c6200e37a6"><![CDATA[    >> Request <<

    GET /events.ics HTTP/1.1
    Host: example.com
    Accept: text/calendar
    Prefer: subscribe-enhanced-get
    Sync-Token: "data:,1234567"

    >> Response <<

    HTTP/1.1 304 Not Modified
    Content-Length: 0
    Sync-Token: "data:,1234567"
    Preference-Applied: subscribe-enhanced-get
    Vary: Prefer, Sync-Token]]></sourcecode>
<t anchor="_500f17ea-1b2b-4e30-a74e-723744478dbd" keepWithNext="true">EXAMPLE  3</t><t anchor="_4db759c8-dc45-4712-9075-e1a5f45f25b2">This is an example of the subsequent request and response for
an old or invalid token.</t><sourcecode anchor="_adac21f0-0a3e-4efa-aa2b-1b2518d7b5f1"><![CDATA[>> Request <<

    GET /events.ics HTTP/1.1
    Host: example.com
    Accept: text/calendar
    Sync-Token: "data:,1234567"
    Prefer: subscribe-enhanced-get

    >> Response <<

    HTTP/1.1 409 Conflict
    Content-Length: xxxx
    Preference-Applied: subscribe-enhanced-get]]></sourcecode>
<t anchor="_f4bbd850-31f1-43e3-8c8c-897d37669481" keepWithNext="true">EXAMPLE  4</t><t anchor="_aa50db89-f16b-494f-88ea-5b7e7e606d20">This is an example of the subsequent request and response when
changes have occurred.</t><sourcecode anchor="_41161f38-2c8c-43f0-99e8-b761fc3ab0b0"><![CDATA[>> Request <<

    GET /events.ics HTTP/1.1
    Host: example.com
    Accept: text/calendar
    Sync-Token: "data:,1234567"
    Prefer: subscribe-enhanced-get

    >> Response <<

    HTTP/1.1 200 OK
    Content-Type: text/calendar
    Vary: Prefer, Sync-Token
    Sync-Token: "data:,4567890"
    Preference-Applied: subscribe-enhanced-get

    BEGIN:VCALENDAR:
    ... only new/changed events
    ... deleted events have STATUS:DELETED
    END:VCALENDAR]]></sourcecode></section></section>
    <section anchor="_changes_to_the_icalendar_specifications"><name>Changes to the iCalendar specifications</name><t anchor="_ae5b96d1-3c5b-463e-8e8e-c177994ecfd1">This specification updates <relref target="RFC5545" section="" relative=""></relref> to add the value DELETED to the
STATUS property.</t>
<section anchor="_redefined_status_property"><name>Redefined Status property</name><dl anchor="_f6a8bf40-f8a1-4013-a610-4cd7fba14c38"><dt>Property name</dt><dd>
<t anchor="_2e26051a-f2e6-40de-bd51-976f5791d475">STATUS</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_e88cc40c-8384-42d0-866f-8fe9d74d1a69">This property defines the overall status or confirmation
for the calendar component.</t>
</dd><dt>Value Type</dt><dd>
<t anchor="_81520407-0138-4842-bfed-571ac46a9fce">TEXT</t>
</dd><dt>Property Parameters</dt><dd>
<t anchor="_52ca3974-abf6-4c31-8a59-81655d8d0469">IANA and non-standard property parameters can
be specified on this property.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_4f825baa-bfd3-4c8d-9230-71285023a38d">This property can be specified once in "VEVENT",
"VTODO", or "VJOURNAL" calendar components.</t>
</dd><dt>Description</dt><dd>
<t anchor="_cfe67c66-6074-4872-a3fb-e004ddd10448">In a group-scheduled calendar component, the property
is used by the "Organizer" to provide a confirmation of the event
to the "Attendees". For example in a "VEVENT" calendar component,
the "Organizer" can indicate that a meeting is tentative,
confirmed, or cancelled. In a "VTODO" calendar component, the
"Organizer" can indicate that an action item needs action, is
completed, is in process or being worked on, or has been
cancelled. In a "VJOURNAL" calendar component, the "Organizer"
can indicate that a journal entry is draft, final, or has been
cancelled or removed.</t>
</dd><dt>Format Definition</dt><dd></dd></dl>
<t anchor="_2d192dc0-32fd-426e-b651-8c19069b29a0">This property is defined by the following notation:</t>
<sourcecode anchor="_33eacffa-0747-46d2-8257-a975500a7ccb" type="abnf"><![CDATA[status          = "STATUS" statparam ":" statvalue CRLF

statparam       = *(";" other-param)

statvalue       = (statvalue-event
                /  statvalue-todo
                /  statvalue-jour)

statvalue-event = "TENTATIVE"    ;Indicates event is tentative.
                / "CONFIRMED"    ;Indicates event is definite.
                / "CANCELLED"    ;Indicates event was cancelled.
                / "DELETED"      ;Indicates event was deleted.
;Status values for a "VEVENT"

statvalue-todo  = "NEEDS-ACTION" ;Indicates to-do needs action.
                / "COMPLETED"    ;Indicates to-do completed.
                / "IN-PROCESS"   ;Indicates to-do in process of.
                / "CANCELLED"    ;Indicates to-do was cancelled.
                / "DELETED"      ;Indicates to-do was deleted.
;Status values for "VTODO".

statvalue-jour  = "DRAFT"        ;Indicates journal is draft.
                / "FINAL"        ;Indicates journal is final.
                / "CANCELLED"    ;Indicates journal is removed.
                / "DELETED"      ;Indicates journal was deleted.
;Status values for "VJOURNAL".]]></sourcecode>

<dl anchor="_45c4220e-2e0d-4155-b0bb-eb7b8d4c9721"><dt>Example</dt><dd></dd></dl>
<t anchor="_df375677-e66e-4d73-86df-fca0a9006787" keepWithNext="true">EXAMPLE  1</t><t anchor="_4f126edb-181d-4c3f-a36c-7a54ae37ef43">The following is an example of this property for a "VEVENT"
calendar component:</t><sourcecode anchor="_b5449107-3ab7-43a7-83ff-cdf523e16ee4"><![CDATA[STATUS:TENTATIVE]]></sourcecode>
<t anchor="_db292af7-dfe5-42e9-bc71-dc36c98ec927" keepWithNext="true">EXAMPLE  2</t><t anchor="_2b4f7bd6-4973-4a33-a596-353e1cd3ce2b">The following is an example of this property for a "VTODO" calendar
component:</t><sourcecode anchor="_3dd87c1a-0f63-44a8-83d7-6ac519954482"><![CDATA[STATUS:NEEDS-ACTION]]></sourcecode>
<t anchor="_b6c28f9e-bd65-42ae-9faa-e25e0aeaac25" keepWithNext="true">EXAMPLE  3</t><t anchor="_c39fb2f1-a245-4407-ab2f-dc0f88dfd3a6">The following is an example of this property for a "VJOURNAL"
calendar component:</t><sourcecode anchor="_a1c63f4b-8f05-4c12-bccc-b14ff5552df3"><![CDATA[STATUS:DRAFT]]></sourcecode></section></section>
    <section anchor="_header_field_sync_token"><name>Header Field: Sync-Token</name><t anchor="_d11df255-2bda-431c-ba49-346211c56774">This specification defines a new header field Sync-Token for use by
the enhanced GET method.</t>
<sourcecode anchor="_93f3ac0d-9a09-4ca0-acbf-8d9ed3b110c2"><![CDATA[    Sync-Token = DQUOTE URI DQUOTE]]></sourcecode>

<t anchor="_f1092470-50e2-4f0a-91f1-9cddc2cc9c13">The value MUST be a URI. This will generally be a data URI
representing an opaque token. Client MUST not attempt to interpret
the data URI value.</t>
<t anchor="_7deca981-ac7f-42b4-b55d-486db465484b" keepWithNext="true">EXAMPLE</t><t anchor="_2062cee7-9dae-4ac0-840d-337bb7e12d0e">This is an example of the Sync-Token header field:</t><sourcecode anchor="_af55ff0e-f2eb-4ed9-835a-35e5d6fc96c7"><![CDATA[    Sync-Token: "data:,1234567"]]></sourcecode></section>
    <section anchor="_new_prefer_header_field_preferences"><name>New Prefer header field preferences</name><section anchor="preference-subscribe"><name>Preference subscribe-enhanced-get</name><t anchor="_b179cb8d-8185-430d-8dae-b82ef1a50f26">This indicates that the client expects the server to handle the GET
method according to the specifications for enhanced get.</t>
<sourcecode anchor="_60eff09f-cfe9-4fc4-ac75-0b168edfcc56"><![CDATA[    pref-subscribe-enhanced-get = "subscribe-enhanced-get"]]></sourcecode>
</section>
<section anchor="preference-limit"><name>Preference limit</name><t anchor="_199b37fd-8748-4e4f-872a-ea0217beadb5">This preference parameter provides a limit on the number of components returned for enhanced get.</t>
<sourcecode anchor="_9716f65a-ee93-4575-bff3-55a502c49fd8"><![CDATA[    pref-limit = "limit" BWS "=" BWS 1*DIGIT]]></sourcecode>
</section></section>
    <section anchor="_link_relations"><name>Link relations</name><section anchor="_general_2"><name>General</name>

<t anchor="_96ca00e9-801e-44b1-9196-338d447036a8">This clause defines a number of new link relations required to
facilitate subscription upgrades.</t>
</section>
<section anchor="la-subscribe-caldav"><name>subscribe-caldav</name><t anchor="_706f3261-99dc-4248-9ed2-c2cc4760b878">This specifies an access point which is a full implementation of
caldav but requires no authentication. The end point allows the full
range of reports as defined by the CalDAV specification.</t>
<t anchor="_63c1c1f2-9dfe-4e37-acac-9abc451e1bd1">The client MUST follow the specification to determine exactly what
operations are allowed on the access point - for example to determine
if DAV:sync-collection is supported.</t>
<t anchor="_784ebae1-6070-4576-a036-afd556754408">The URL MAY include some form of token to allow write access to the
targeted collection. The client must check its permissions to
determine whether it has been granted write access.</t></section>
<section anchor="la-subscribe-caldav-auth"><name>subscribe-caldav-auth</name><t anchor="_ee20ff2b-36b3-4135-bfcf-c1f11308afa8">This specifies an access point which is a full implementation of
caldav and requires authentication. This may allow read-write access
to the resource.</t>
<t anchor="_841180d6-d5fd-4503-90b0-6c48c9061378">The client MUST follow the specification to determine exactly what
operations are allowed on the access point - for example to determine
if DAV:sync-collection is supported.</t></section>
<section anchor="la-subscribe-webdav-sync"><name>subscribe-webdav-sync</name><t anchor="_e61adadd-40a8-4a75-bb0d-2e018aa92f0e">This specifies an access point which supports only webdav sync.</t>
<t anchor="_c056c8d8-8951-409e-870e-b5ff9bc67dc5">This allows the client to issue a DAV:sync-collection report on the resource to
obtain updates.</t>
<t anchor="_d3621a3d-225e-4f26-9432-d450186a883e">The client MUST follow that specification.</t></section>
<section anchor="la-subscribe-enhanced-get"><name>subscribe-enhanced-get</name><t anchor="_a27318b1-8a32-4587-abc8-969722676ff7">This specifies an access point which supports the enhanced GET protocol
defined in <xref target="enhanced-get"></xref>.</t>
<t anchor="_179ca396-8a64-48c9-adb5-b947acdb820f">The client and server MUST follow the protocol as defined in <xref target="enhanced-get"></xref>.</t></section></section>
    <section anchor="security"><name>Security Considerations</name>

<t anchor="_0d254468-4271-4f36-ae6a-bfada7503ac5">Applications using these properties need to be aware of the risks
entailed in using the URIs provided as values. See <relref target="RFC3986" section="" relative=""></relref> for a
discussion of the security considerations relating to URIs.</t>
</section>
    <section anchor="privacy"><name>Privacy Considerations</name>

<t anchor="_30ae6d6f-c455-4979-9bf7-dc81a5979b3d">Properties with a "URI" value type can expose their users to privacy
leaks as any network access of the URI data can be tracked. Clients
SHOULD NOT automatically download data referenced by the URI without
explicit instruction from users. This specification does not
introduce any additional privacy concerns beyond those described in
<relref target="RFC5545" section="" relative=""></relref>.</t>
</section>
    <section anchor="iana"><name>IANA Considerations</name><section anchor="_sync_token_http_header_field_registration"><name>Sync-Token HTTP Header Field Registration</name><t anchor="_b3ef1cb2-06f4-416e-b9c4-3badc8330bf8">This specification updates the "Message Headers" registry entry for "Sync-Token" in <relref target="RFC3864" section="" relative=""></relref> to refer to this document.</t>
<figure anchor="_f4d089d8-8218-425d-ab1e-56346c176e38">

<artwork anchor="_167b31fc-7473-4bd7-911e-ffc9ed29c21e" type="ascii-art"><![CDATA[Header Field Name: Sync-Token
Protocol: http
Status: standard
Reference: <this-document>]]></artwork></figure></section>
<section anchor="_preference_registrations"><name>Preference Registrations</name><t anchor="_49ed8c1e-ab25-4d7d-b6ef-d7b9f372058e">The following preferences have been added to the HTTP Preferences
Registry defined in <relref target="RFC7240" section="" relative=""></relref></t>
<dl anchor="_23ba1ce0-aae1-4643-8f60-3d6d7ca26420"><dt>Preference</dt><dd>
<t anchor="_fb544072-0c23-48b7-8605-03a553afabde">subscribe-enhanced-get</t>
</dd><dt>Value</dt><dd>
<t anchor="_c9e6a178-b445-4bbf-bf74-9d3ad2dd480d">None.</t>
</dd><dt>Description</dt><dd>
<t anchor="_ddf7f510-7cc5-4a2d-b1f6-b65f081e1ea1">Marks the interaction as enhanced get and provides the
optional sync-token and page size.</t>
</dd><dt>Reference</dt><dd>
<t anchor="_fcedf277-128d-4d01-b3a5-3ad7050d4f2e">this document</t>
</dd><dt>Preference</dt><dd>
<t anchor="_2f07d903-bfdc-4976-b19f-17980b0dd150">limit</t>
</dd><dt>Value</dt><dd>
<t anchor="_e7405b56-5f0a-481e-9f04-1c3b444af004">An integer page size.</t>
</dd><dt>Description</dt><dd>
<t anchor="_a0222444-a988-446b-b669-e39f01dff5bd">Provide a limit on the number of components in the response.</t>
</dd><dt>Reference</dt><dd>
<t anchor="_32b0be35-d0ce-4ef1-8764-258b539ef4a6">this document</t>
</dd></dl></section>
<section anchor="_link_relation_registrations"><name>Link Relation Registrations</name><t anchor="_b0afedd1-11c0-4dc5-b973-452e1edbc67a">The following link relation values have been added to
the Reference Types Registry defined in <relref target="RFC8288" section="6.2.2" relative=""></relref>:</t>
<table anchor="_843e344e-3ebf-4341-abdc-32d851733257"><thead><tr><th align="left">Relation Name</th><th align="left">Description</th><th align="left">Reference</th></tr></thead><tbody><tr><td align="left">
<t anchor="_4997254f-9a22-49f2-9e05-2cf9690e8d6a">subscribe-caldav</t>
</td><td align="left">
<t anchor="_2f7bb732-637f-4084-9fd9-2cb4a30987d4">Current</t>
</td><td align="left">
<t anchor="_3bc85ef4-dc0a-4d51-8dec-210603d71662">
<xref target="la-subscribe-caldav"></xref>
</t>
</td></tr><tr><td align="left">
<t anchor="_d4766372-08f3-4eec-a843-4e3c6e27aff9">subscribe-caldav_auth</t>
</td><td align="left">
<t anchor="_4b8be191-b31c-47b4-ad30-bd747e222431">Current</t>
</td><td align="left">
<t anchor="_68197f8b-fa19-4be1-80ac-4a10312ce6ef">
<xref target="la-subscribe-caldav-auth"></xref>
</t>
</td></tr><tr><td align="left">
<t anchor="_cb5ccb3d-c570-49c2-bb5e-0298efebc6c9">subscribe-webdav-sync</t>
</td><td align="left">
<t anchor="_0ac2fd1e-f201-4603-83c4-25faeff7f679">Current</t>
</td><td align="left">
<t anchor="_d2b1abe1-b1d9-4cf3-8501-114698bed769">
<xref target="la-subscribe-webdav-sync"></xref>
</t>
</td></tr><tr><td align="left">
<t anchor="_4fa2a7de-7138-4887-ab48-755230b8af6c">subscribe-enhanced_get</t>
</td><td align="left">
<t anchor="_5d5e7740-709b-47d2-b357-12d31bb17d46">Current</t>
</td><td align="left">
<t anchor="_18a65da6-3945-44a6-9a09-49ebb0bc59ac">
<xref target="la-subscribe-enhanced-get"></xref>
</t>
</td></tr></tbody></table></section>
<section anchor="_new_and_updated_icalendar_elements_registration"><name>New and updated iCalendar Elements Registration</name><t anchor="_34380690-6a37-44ba-927f-476400f32c60">This specification updates <relref target="RFC5545" section="" relative=""></relref> by adding and updating
a number of elements according to the procedures and templates specified in
<relref target="RFC5545" section="8.2" relative=""></relref>.</t>
<section anchor="_initialization_of_the_status_registry"><name>Initialization of the Status registry</name><t anchor="_d6b51df9-df4a-46c5-aca8-60f47cbb477a">This specification updates <relref target="RFC5545" section="" relative=""></relref> by adding a Status value registry to the iCalendar Elements registry
located here: <eref target="https://www.iana.org/assignments/icalendar"></eref> and initializing it as per <relref target="RFC5545" section="" relative=""></relref>.</t>
<table anchor="_745397b2-0a80-4922-96aa-7f2f12eabaf6"><name>Initial Status Value Registry</name><thead><tr><th align="left">Name</th><th align="left">Status</th><th align="left">Reference</th></tr></thead><tbody><tr><td align="left">
<t anchor="_61cdbed9-2701-46a7-8d9b-1c914604676a">CANCELLED</t>
</td><td align="left">
<t anchor="_3290d872-a624-4235-934b-d3b1b977bf98">Current</t>
</td><td align="left">
<t anchor="_c68c69b5-58b3-404d-9609-438dc87587e8">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr><tr><td align="left">
<t anchor="_ea9f8fc5-7703-4dd1-9c55-df8b49a651e1">COMPLETED</t>
</td><td align="left">
<t anchor="_d45d79fa-651d-4ace-9c05-1bcb7193f994">Current</t>
</td><td align="left">
<t anchor="_112bd9b7-c847-4409-85da-e02e93fe81f0">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr><tr><td align="left">
<t anchor="_421c7872-092c-4a1e-911d-cfb8a0c4d2ec">CONFIRMED</t>
</td><td align="left">
<t anchor="_10ddb7e0-6cef-445c-a058-f096a4dec31c">Current</t>
</td><td align="left">
<t anchor="_cc87b508-2df6-406f-99ce-5dd351f1f8dd">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr><tr><td align="left">
<t anchor="_556b1ab5-81b1-4533-9874-3f9d4a8c8920">DRAFT</t>
</td><td align="left">
<t anchor="_5523ab35-161f-4a83-8d94-7cb0d40632a4">Current</t>
</td><td align="left">
<t anchor="_a399fa87-3143-4c27-8c14-28be16eb60bb">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr><tr><td align="left">
<t anchor="_fa0a4f85-1434-4611-a3a9-0adb42a9086a">FINAL</t>
</td><td align="left">
<t anchor="_2fd4c5e6-f4ab-4efb-9d5f-8e729a4d356c">Current</t>
</td><td align="left">
<t anchor="_f1f66321-57f4-44b2-b719-6dbc5c2caf01">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr><tr><td align="left">
<t anchor="_063e4dab-30fe-4566-bcb9-116213c8d9b7">IN-PROCESS</t>
</td><td align="left">
<t anchor="_48ea652e-d5c0-492e-a490-526c15c260d5">Current</t>
</td><td align="left">
<t anchor="_89a6fb61-be67-4ff8-8c3c-a3cf33a4d359">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr><tr><td align="left">
<t anchor="_83269319-5043-4578-aa65-76ad9f0a5755">NEEDS-ACTION</t>
</td><td align="left">
<t anchor="_c11a3154-4ff5-450f-9e4b-cf2f2aaad36f">Current</t>
</td><td align="left">
<t anchor="_fb270f81-5ae3-434b-830c-67accc66d559">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr><tr><td align="left">
<t anchor="_3778a70c-991f-4ffd-8344-3ed79fd40289">TENTATIVE</t>
</td><td align="left">
<t anchor="_0fc0a129-1942-4fbb-afb3-1d4b0116305f">Current</t>
</td><td align="left">
<t anchor="_863474d2-74a0-41d4-83ee-9742375aa35a">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr></tbody></table></section>
<section anchor="_update_of_the_status_registry"><name>Update of the Status registry</name><t anchor="_5a8322a0-33a2-448d-b4e8-4a73f181469c">This specification further updates the Status registry with the
additional DELETED value defined in this document.</t>
<table anchor="_94e056e9-5fa5-4899-88ab-c36680f0daf8"><name>Updated Status Value Registry</name><thead><tr><th align="left">Value</th><th align="left">Status</th><th align="left">Reference</th></tr></thead><tbody><tr><td align="left">
<t anchor="_36a20cd3-1750-471f-bd0b-c1a7e9faa3ae">DELETED</t>
</td><td align="left">
<t anchor="_bb52d71b-9708-4fa4-b00d-3156e76ab20c">Current</t>
</td><td align="left">
<t anchor="_086a1d85-09a1-4ff4-8dcc-8bc6a6df1c6c">This Spec, <xref target="enhanced-get-deletion"></xref></t>
</td></tr></tbody></table></section></section></section>
  </middle>
  <back>
    <references anchor="_normative_references">
      <name>Normative References</name>
      <reference target="https://www.rfc-editor.org/info/rfc2119" anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" asciiFullname="S. Bradner"></author>
          <date month="March" year="1997"></date>
          <abstract>
            <t>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.</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.2119.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc2119" type="src"></format>
        <refcontent>RFC 2119</refcontent>
        <seriesInfo value="2119" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC2119" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc3864" anchor="RFC3864">
        <front>
          <title>Registration Procedures for Message Header Fields</title>
          <author fullname="G. Klyne" asciiFullname="G. Klyne"></author>
          <author fullname="M. Nottingham" asciiFullname="M. Nottingham"></author>
          <author fullname="J. Mogul" asciiFullname="J. Mogul"></author>
          <date month="September" year="2004"></date>
          <abstract>
            <t>This specification defines registration procedures for the message header fields used by Internet mail, HTTP, Netnews and other applications.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.3864.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc3864" type="src"></format>
        <refcontent>RFC 3864</refcontent>
        <seriesInfo value="3864" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC3864" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc3986" anchor="RFC3986">
        <front>
          <title>Uniform Resource Identifier (URI): Generic Syntax</title>
          <author fullname="T. Berners-Lee" asciiFullname="T. Berners-Lee"></author>
          <author fullname="R. Fielding" asciiFullname="R. Fielding"></author>
          <author fullname="L. Masinter" asciiFullname="L. Masinter"></author>
          <date month="January" year="2005"></date>
          <abstract>
            <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.3986.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc3986" type="src"></format>
        <refcontent>RFC 3986</refcontent>
        <seriesInfo value="3986" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC3986" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc5545" anchor="RFC5545">
        <front>
          <title>Internet Calendaring and Scheduling Core Object Specification (iCalendar)</title>
          <author fullname="B. Desruisseaux" asciiFullname="B. Desruisseaux" role="editor"></author>
          <date month="September" year="2009"></date>
          <abstract>
            <t>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]</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.5545.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc5545" type="src"></format>
        <refcontent>RFC 5545</refcontent>
        <seriesInfo value="5545" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC5545" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc6578" anchor="RFC6578">
        <front>
          <title>Collection Synchronization for Web Distributed Authoring and Versioning (WebDAV)</title>
          <author fullname="C. Daboo" asciiFullname="C. Daboo"></author>
          <author fullname="A. Quillaud" asciiFullname="A. Quillaud"></author>
          <date month="March" year="2012"></date>
          <abstract>
            <t>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]</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.6578.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc6578" type="src"></format>
        <refcontent>RFC 6578</refcontent>
        <seriesInfo value="6578" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC6578" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc7231" anchor="RFC7231">
        <front>
          <title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
          <author fullname="R. Fielding" asciiFullname="R. Fielding" role="editor"></author>
          <author fullname="J. Reschke" asciiFullname="J. Reschke" role="editor"></author>
          <date month="June" year="2014"></date>
          <abstract>
            <t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems.  This document defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.7231.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc7231" type="src"></format>
        <refcontent>RFC 7231</refcontent>
        <seriesInfo value="7231" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC7231" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc7240" anchor="RFC7240">
        <front>
          <title>Prefer Header for HTTP</title>
          <author fullname="J. Snell" asciiFullname="J. Snell"></author>
          <date month="June" year="2014"></date>
          <abstract>
            <t>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.</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.7240.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc7240" type="src"></format>
        <refcontent>RFC 7240</refcontent>
        <seriesInfo value="7240" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC7240" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc8174" anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" asciiFullname="B. Leiba"></author>
          <date month="May" year="2017"></date>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.8174.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc8174" type="src"></format>
        <refcontent>RFC 8174</refcontent>
        <seriesInfo value="8174" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC8174" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc8288" anchor="RFC8288">
        <front>
          <title>Web Linking</title>
          <author fullname="M. Nottingham" asciiFullname="M. Nottingham"></author>
          <date month="October" year="2017"></date>
          <abstract>
            <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").It also defines the serialisation of such links in HTTP headers with the Link header field.</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.8288.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc8288" type="src"></format>
        <refcontent>RFC 8288</refcontent>
        <seriesInfo value="8288" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC8288" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc9110" anchor="RFC9110">
        <front>
          <title>HTTP Semantics</title>
          <author fullname="R. Fielding" asciiFullname="R. Fielding" role="editor"></author>
          <author fullname="M. Nottingham" asciiFullname="M. Nottingham" role="editor"></author>
          <author fullname="J. Reschke" asciiFullname="J. Reschke" role="editor"></author>
          <date month="June" year="2022"></date>
          <abstract>
            <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes. This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.9110.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc9110" type="src"></format>
        <refcontent>RFC 9110</refcontent>
        <seriesInfo value="9110" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC9110" name="DOI"></seriesInfo>
      </reference>
    </references>
  </back>
</rfc>
