<?xml version="1.0" encoding="UTF-8"?>
<reference anchor="I-D.ietf-jmap-conditional" target="https://datatracker.ietf.org/doc/html/draft-ietf-jmap-conditional-02">
   <front>
      <title>JMAP Conditional Set</title>
      <author initials="B." surname="Gondwana" fullname="Bron Gondwana">
         <organization>Fastmail</organization>
      </author>
      <date month="October" day="26" year="2026" />
      <abstract>
	 <t>   The JMAP base protocol ([JMAP-CORE]) provides the Foo/set method for
   creating, updating, and destroying objects.  It offers a single
   concurrency control, the &quot;ifInState&quot; argument, which guards an entire
   object type: if any object of that type has changed, the whole method
   is rejected.

   This extension adds a finer, per-object conditional mechanism.  A
   client may require that an individual update or destroy proceed only
   if the target object still matches a set of expected property values,
   expressed using the JMAP PatchObject already defined for updates.
   This provides optimistic concurrency control scoped to a single
   object — the equivalent of an HTTP &quot;If-Match&quot; precondition — for any
   JMAP data type.

   This extension also defines an optional &quot;atomic&quot; argument that
   applies an entire Foo/set as a single unit: either every change it
   requests takes effect, or none does.  Combined with the per-object
   precondition, this lets a client express a multi-object change that
   is safe only when applied together — such as an atomic rename that
   exchanges two names.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-jmap-conditional-02" />
   
</reference>
