<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div style="font-family:Arial;">Hi David,<br></div>
<div style="font-family:Arial;"><br></div>
<div style="font-family:Arial;">I know this is contacts rather than calendars, but here's a perspective from the other side about why people don't support optional/extended standards in their clients:<br></div>
<div style="font-family:Arial;"><br></div>
<div style="font-family:Arial;"><<<<<<<< REPORT <a href="https://www.googleapis.com:443/carddav/v1/principals/brongondwana%40gmail.com/lists/default/">https://www.googleapis.com:443/carddav/v1/principals/brongondwana%40gmail.com/lists/default/</a> HTTP/1.1<br></div>
<div style="font-family:Arial;"><D:sync-collection xmlns:C='urn:ietf:params:xml:ns:carddav' xmlns:CY='<a href="http://cyrusimap.org/ns/">http://cyrusimap.org/ns/</a>' xmlns:D='DAV:'><D:sync-token/><D:sync-level>1</D:sync-level><D:prop><D:getetag/></D:prop></D:sync-collection><br></div>
<div style="font-family:Arial;">>>>>>>>> HTTP/1.1 400 Bad Request<br></div>
<div style="font-family:Arial;"><?xml version="1.0" encoding="UTF-8"?><br></div>
<div style="font-family:Arial;"><d:error xmlns:d="DAV:"/><br></div>
<div style="font-family:Arial;"><br></div>
<div style="font-family:Arial;">Of course this is carddav rather than caldav, but if you're building a general client library, you quickly wind up chasing the lowest common denominator rather than writing two different codepaths, one for modern/correct servers and one for old servers that only support the base standard or have buggy newer behaviour.<br></div>
<div style="font-family:Arial;"><br></div>
<div style="font-family:Arial;"><div style="font-family:Arial;">Particularly when docs lie:<br></div>
<div style="font-family:Arial;"><br></div>
</div>
<div style="font-family:Arial;"><a href="https://developers.google.com/google-apps/carddav/">https://developers.google.com/google-apps/carddav/</a><br></div>
<div style="font-family:Arial;"><br></div>
<div style="font-family:Arial;">Here's what I got back from a PROPFIND:<br></div>
<div style="font-family:Arial;"><br></div>
<div style="font-family:Arial;"><d:response><br></div>
<div style="font-family:Arial;">  <d:href>/carddav/v1/principals/<a href="mailto:brongondwana@gmail.com">brongondwana@gmail.com</a>/lists/default/</d:href><br></div>
<div style="font-family:Arial;">  <d:propstat><br></div>
<div style="font-family:Arial;">   <d:status>HTTP/1.1 200 OK</d:status><br></div>
<div style="font-family:Arial;">   <d:prop><br></div>
<div style="font-family:Arial;">    <d:displayname>Address Book</d:displayname><br></div>
<div style="font-family:Arial;">    <d:current-user-privilege-set><br></div>
<div style="font-family:Arial;">     <d:privilege><br></div>
<div style="font-family:Arial;">      <d:read/><br></div>
<div style="font-family:Arial;">     </d:privilege><br></div>
<div style="font-family:Arial;">     <d:privilege><br></div>
<div style="font-family:Arial;">      <d:read-acl/><br></div>
<div style="font-family:Arial;">     </d:privilege><br></div>
<div style="font-family:Arial;">     <d:privilege><br></div>
<div style="font-family:Arial;">      <d:read-current-user-privilege-set/><br></div>
<div style="font-family:Arial;">     </d:privilege><br></div>
<div style="font-family:Arial;">     <d:privilege><br></div>
<div style="font-family:Arial;">      <d:unlock/><br></div>
<div style="font-family:Arial;">     </d:privilege><br></div>
<div style="font-family:Arial;">     <d:privilege><br></div>
<div style="font-family:Arial;">      <d:write/><br></div>
<div style="font-family:Arial;">     </d:privilege><br></div>
<div style="font-family:Arial;">     <d:privilege><br></div>
<div style="font-family:Arial;">      <d:write-acl/><br></div>
<div style="font-family:Arial;">     </d:privilege><br></div>
<div style="font-family:Arial;">    </d:current-user-privilege-set><br></div>
<div style="font-family:Arial;">    <d:supported-report-set><br></div>
<div style="font-family:Arial;">     <d:supported-report><br></div>
<div style="font-family:Arial;">      <d:report><br></div>
<div style="font-family:Arial;">       <d:principal-search-property-set/><br></div>
<div style="font-family:Arial;">      </d:report><br></div>
<div style="font-family:Arial;">     </d:supported-report><br></div>
<div style="font-family:Arial;">     <d:supported-report><br></div>
<div style="font-family:Arial;">      <d:report><br></div>
<div style="font-family:Arial;">       <card:addressbook-query/><br></div>
<div style="font-family:Arial;">      </d:report><br></div>
<div style="font-family:Arial;">     </d:supported-report><br></div>
<div style="font-family:Arial;">     <d:supported-report><br></div>
<div style="font-family:Arial;">      <d:report><br></div>
<div style="font-family:Arial;">       <d:expand-property/><br></div>
<div style="font-family:Arial;">      </d:report><br></div>
<div style="font-family:Arial;">     </d:supported-report><br></div>
<div style="font-family:Arial;">     <d:supported-report><br></div>
<div style="font-family:Arial;">      <d:report><br></div>
<div style="font-family:Arial;">       <d:principal-property-search/><br></div>
<div style="font-family:Arial;">      </d:report><br></div>
<div style="font-family:Arial;">     </d:supported-report><br></div>
<div style="font-family:Arial;">     <d:supported-report><br></div>
<div style="font-family:Arial;">      <d:report><br></div>
<div style="font-family:Arial;">       <d:acl-principal-prop-set/><br></div>
<div style="font-family:Arial;">      </d:report><br></div>
<div style="font-family:Arial;">     </d:supported-report><br></div>
<div style="font-family:Arial;">     <d:supported-report><br></div>
<div style="font-family:Arial;">      <d:report><br></div>
<div style="font-family:Arial;">       <card:addressbook-multiget/><br></div>
<div style="font-family:Arial;">      </d:report><br></div>
<div style="font-family:Arial;">     </d:supported-report><br></div>
<div style="font-family:Arial;">     <d:supported-report><br></div>
<div style="font-family:Arial;">      <d:report><br></div>
<div style="font-family:Arial;">       <d:principal-match/><br></div>
<div style="font-family:Arial;">      </d:report><br></div>
<div style="font-family:Arial;">     </d:supported-report><br></div>
<div style="font-family:Arial;">     <d:supported-report><br></div>
<div style="font-family:Arial;">      <d:report><br></div>
<div style="font-family:Arial;">       <d:sync-collection/><br></div>
<div style="font-family:Arial;">      </d:report><br></div>
<div style="font-family:Arial;">     </d:supported-report><br></div>
<div style="font-family:Arial;">    </d:supported-report-set><br></div>
<div style="font-family:Arial;">    <d:resourcetype><br></div>
<div style="font-family:Arial;">     <d:collection/><br></div>
<div style="font-family:Arial;">     <card:addressbook/><br></div>
<div style="font-family:Arial;">    </d:resourcetype><br></div>
<div style="font-family:Arial;">   </d:prop><br></div>
<div style="font-family:Arial;">  </d:propstat><br></div>
<div style="font-family:Arial;">  <d:propstat><br></div>
<div style="font-family:Arial;">   <d:status>HTTP/1.1 404 Not Found</d:status><br></div>
<div style="font-family:Arial;">   <d:prop><br></div>
<div style="font-family:Arial;">    <d:acl/><br></div>
<div style="font-family:Arial;">    <d:sync-token/><br></div>
<div style="font-family:Arial;">   </d:prop><br></div>
<div style="font-family:Arial;">  </d:propstat><br></div>
<div style="font-family:Arial;"></d:response><br></div>
<div style="font-family:Arial;"></d:multistatus><br></div>
<div style="font-family:Arial;"><br></div>
<div style="font-family:Arial;">RFC6578 is pretty clear:<br></div>
<div style="font-family:Arial;"><br></div>
<div style="font-family:Arial;"><span class="font" style="font-family: menlo, consolas, monospace, sans-serif;">3.2.  DAV:sync-collection Report<br></span></div>
<div style="font-family:Arial;"><br></div>
<pre class="newpage">   If the DAV:sync-collection report is implemented by a WebDAV server,
   then the server MUST list the report in the
   "DAV:supported-report-set" property on any collection that supports
   synchronization.<br></pre><pre class="newpage"><br></pre>The server claims to support sync-collection, but it actually doesn't.<br><br>It doesn't take dealing with many bogus servers like this and you just give up on the more efficient method.<br><br>Do you have any contacts in the contacts team you could pass this on to?  I guess I'll make my code check for sync-token existing as well as for the standard supported-report-set.<br><br>Cheers,<br><br><div style="font-family:Arial;">Bron.<br></div>
<div><br></div>
<div>On Wed, 8 Nov 2017, at 03:38, David Given wrote:<br></div>
<blockquote type="cite"><div dir="ltr"><div style="font-family:Arial;">Hello everybody,<br></div>
<div><br></div>
<div>I have an RFC question I'd appreciate some feedback on...<br></div>
<div><br></div>
<div>We have a situation where a Calendar client is trying to get the etags of every event in an enormous calendar in a single query. Naturally, this isn't working.<br></div>
<div><br></div>
<div>They're doing this:<br></div>
<div><br></div>
<div>PROPFIND /caldav/v2/$USERNAME/events<br></div>
<div><div><?xml version="1.0" encoding="UTF-8"?><br></div>
<div><A:propfind xmlns:A="DAV:"><br></div>
<div>  <A:prop><br></div>
<div>    <A:getcontenttype/><br></div>
<div>    <A:getetag/><br></div>
<div>  </A:prop><br></div>
<div></A:propfind><br></div>
</div>
<div><br></div>
<div>As you can see, they're not asking for a sync token.<br></div>
<div><br></div>
<div>RFC6578 section 3.6 provides a mechanism where clients can ask for paginated responses, where the server returns partial data with a 507 status code, and a new sync token so they can continue the query. It is a, however, a bit ambiguous as to whether this is supported for methods other than REPORT. The interwebs suggest it is (but I'd appreciate a clarification here).<br></div>
<div><br></div>
<div>My question is. however:<br></div>
<div><br></div>
<div>Is it permissable to return a sync-token (and expect the client to honour it) <i>even if the client's original query didn't ask for it</i>?<br></div>
<div><br></div>
<div>I'm hoping the answer is going to be yes, but if it's no --- any suggestions?<br></div>
<div><br></div>
<div>Thanks!<br></div>
<div><br></div>
<div>David Given<br></div>
<div><a href="mailto:dtrg@google.com">dtrg@google.com</a><br></div>
<div><br></div>
</div>
<div><u>_______________________________________________</u><br></div>
<div>caldeveloper-l mailing list<br></div>
<div><a href="mailto:caldeveloper-l@lists.calconnect.org">caldeveloper-l@lists.calconnect.org</a><br></div>
<div><a href="http://lists.calconnect.org/listinfo.cgi/caldeveloper-l-calconnect.org">http://lists.calconnect.org/listinfo.cgi/caldeveloper-l-calconnect.org</a><br></div>
</blockquote><div style="font-family:Arial;"><br></div>
<div id="sig56629417"><div class="signature">--<br></div>
<div class="signature">  Bron Gondwana, CEO, FastMail Pty Ltd<br></div>
<div class="signature">  <a href="mailto:brong@fastmailteam.com">brong@fastmailteam.com</a><br></div>
<div class="signature"><br></div>
</div>
<div style="font-family:Arial;"><br></div>
</body>
</html>