{"abstract": "   The JMAP base protocol ([JMAP-CORE]) provides the Foo/set method for\n   creating, updating, and destroying objects.  It offers a single\n   concurrency control, the \"ifInState\" argument, which guards an entire\n   object type: if any object of that type has changed, the whole method\n   is rejected.\n\n   This extension adds a finer, per-object conditional mechanism.  A\n   client may require that an individual update or destroy proceed only\n   if the target object still matches a set of expected property values,\n   expressed using the JMAP PatchObject already defined for updates.\n   This provides optimistic concurrency control scoped to a single\n   object — the equivalent of an HTTP \"If-Match\" precondition — for any\n   JMAP data type.\n\n   This extension also defines an optional \"atomic\" argument that\n   applies an entire Foo/set as a single unit: either every change it\n   requests takes effect, or none does.  Combined with the per-object\n   precondition, this lets a client express a multi-object change that\n   is safe only when applied together — such as an atomic rename that\n   exchanges two names.\n", "ad": null, "expires": "2027-03-19T21:09:47Z", "external_url": "", "group": "/api/v1/group/group/2176/", "id": 161058, "intended_std_level": null, "keywords": "[]", "name": "draft-ietf-jmap-conditional", "note": "", "notify": "", "pages": 14, "resource_uri": "/api/v1/doc/document/draft-ietf-jmap-conditional/", "rev": "00", "rfc": null, "rfc_number": null, "shepherd": null, "states": ["/api/v1/doc/state/1/", "/api/v1/doc/state/150/", "/api/v1/doc/state/38/"], "std_level": null, "stream": "/api/v1/name/streamname/ietf/", "submissions": ["/api/v1/submit/submission/169100/"], "tags": [], "time": "2026-09-15T21:09:47Z", "title": "JMAP Conditional Set", "type": "/api/v1/name/doctypename/draft/", "uploaded_filename": "", "words": null}