[JMAP] draft-ietf-jmap-filenode-14: alreadyExists existingId vs. §5 discoverability

Mehdi Kouhen <mehdi.kouhen@ovhcloud.com> Fri, 25 September 2026 16:16 UTC

Received: from 2.mo15.mail-out.ovh.net (2.mo15.mail-out.ovh.net [5.135.90.179]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by mx.ietf.org (Postfix) with ESMTPS id 713D530 for <jmap@ietf.org>; Fri, 25 Sep 2026 16:16:31 +0000 (UTC)
Authentication-Results: mx.ietf.org; dkim=pass header.d=ovhcloud.com header.s=mailout header.b=fbUIb2E6; dmarc=pass (policy=quarantine) header.from=ovhcloud.com; spf=pass (mx.ietf.org: domain of mehdi.kouhen@ovhcloud.com designates 5.135.90.179 as permitted sender) smtp.mailfrom=mehdi.kouhen@ovhcloud.com
Received: from DAGFR11EX2.OVH.local (unknown [10.110.58.157]) by mo15.mail-out.ovh.net (Postfix) with ESMTPS id 4hrwn40zxGz3wky for <jmap@ietf.org>; Fri, 25 Sep 2026 16:16:24 +0000 (UTC)
Received: from DAGFR11EX3.OVH.local (172.16.2.113) by DAGFR11EX2.OVH.local (172.16.2.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Fri, 25 Sep 2026 18:16:23 +0200
Received: from DAGFR11EX3.OVH.local ([fe80::4519:4339:5982:97ac]) by DAGFR11EX3.OVH.local ([fe80::4519:4339:5982:97ac%7]) with mapi id 15.02.2562.049; Fri, 25 Sep 2026 18:16:23 +0200
From: Mehdi Kouhen <mehdi.kouhen@ovhcloud.com>
To: "jmap@ietf.org" <jmap@ietf.org>
Thread-Topic: draft-ietf-jmap-filenode-14: alreadyExists existingId vs. §5 discoverability
Thread-Index: AQHdTQk1xeAfWr3Kwki8VzUv7cwXzQ==
Date: Fri, 25 Sep 2026 16:16:23 +0000
Message-ID: <43B87D95-640C-4E5C-851B-4C8BEC176B48@corp.ovh.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [109.190.254.25]
x-ovh-corplimit-skip: true
Content-Type: text/plain; charset="utf-8"
Content-ID: <68E113081127EA4E91CE19D4BCBC7DAB@corp.ovh.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
x-ovh-tracer-id: 11409869656223472584
X-VR-SPAMSTATE: OK
X-VR-SPAMSCORE: 0
X-VR-SPAMCAUSE: dmFkZTF6a0cfTfKVliJ48FR+xg+B5EEIC95O3LEI0e5O4tKtSphwjRwx6CuHZtirgXRTIL0Ba4oH0skhlpXxEH8BVWLiAmDheQ3FZPmsuvUfWwAG4qkvHXQSydCyq8/6LJfsRvbk47lb9KUjag+yKJ0FNNXkq+tq4Km6Y6BffurHnR79o9qfRkxsR+Zrg1WwBAI0ngjIw+Yzy1B6v5Vx5M1ShdxCgPRiJRgsd22uwxxtuxHYE/OgfV0OOZeH3QTJUqOoDlSKD/DkjznVuxoLSjSLz90MMnrYnlQ68FH37w2dUF+GpQY7blap5cZsx8roU4DZbl2yWM4eJDIHLISvTDG//4hFGGP2vqbYFccmmoz7GzvPYWy22p34NfHmvOp7N4uoA0TmFr77YlLksvclfP5X1c2oAmqlGjTK/wy5w2lxjATsfQOKxGmsbQYN5batrVwsxK3C9N/dC42KnEX1tsApeiM7PwAMw0nOzC5uFcuRrWncYBiDaDjnoEun6uXbnNVjDhUfeblICflKsFfSKUd5X632NA22YZtGo8YHqNNWKQebF2lMENCTlS4qduVoXa4iQwOmRX7R0dOJpMfRQoLtsspj2gGRxI3aYuTg5/ThsbNnEI6rlYQH+sEPFQkDKQjQbDt9ZOj4I/LUwyw5YnMuJmY5nRBQvOO3XO4d+UkJBEUR3A
DKIM-Signature: a=rsa-sha256; bh=P6pd4xhMkRqeoTIwULDZMr3IPfZYDJ+sPoUn1XqHUfY=; c=relaxed/relaxed; d=ovhcloud.com; h=From; s=mailout; t=1790352984; v=1; b=fbUIb2E6GbvjPC0Owudoj+dzd4UBUY5gSXdu5h9BGXYgniHJuWPhJv5rYUbXJqgveIRwbHfP MB+/fvycVwT8sN/aXJUlOrVokM2aKnO7NQ0gwaXqZb4TGeINJ5++BbUnBvDUXCCTZVSbJCUlJA1 JBcJ5d1Dpt1ZFNhmgXYWbDKo=
X-Spamd-Bar: /
Message-ID-Hash: LMI4RVVTDNNSOT35N3Z66BAE4KEXUMDV
X-Message-ID-Hash: LMI4RVVTDNNSOT35N3Z66BAE4KEXUMDV
X-MailFrom: mehdi.kouhen@ovhcloud.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-jmap.ietf.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.10
Precedence: list
Subject: [JMAP] draft-ietf-jmap-filenode-14: alreadyExists existingId vs. §5 discoverability
List-Id: JSON Meta Access Protocol <jmap.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/cGtXBJtcUW796ZJMyhC9AIy3E5c>
List-Archive: <https://mailarchive.ietf.org/arch/browse/jmap>
List-Help: <mailto:jmap-request@ietf.org?subject=help>
List-Owner: <mailto:jmap-owner@ietf.org>
List-Post: <mailto:jmap@ietf.org>
List-Subscribe: <mailto:jmap-join@ietf.org>
List-Unsubscribe: <mailto:jmap-leave@ietf.org>

Hi,

Implementing draft-ietf-jmap-filenode-14, we ran into two requirements that
cannot both be satisfied for a shared directory.
I could not find this raised before.

Section 3.2.3 (FileNode/set):

   "alreadyExists" [...] The SetError object MUST include an existingId
   property with the id of the existing FileNode.

Section 5 (Access Control):

   Nodes which are not "discoverable" MUST return notFound errors if
   fetched with FileNode/get and MUST NOT be returned in response to
   FileNode/query.

They collide when a user may create a child but not read one.
`mayAddChildren` and `mayRead` are independent in FilesRights, so a drop
box is expressible: Bob creates a name that collides with a sibling he cannot
discover.
Section 3.2.3 says return its id; Section 5 says that node must not appear in
his answers.

The disclosure itself obviously cannot be closed completely, as the
"alreadyExists" itself discloses that a sibling of that name exists.
However, preventing the disclosure of the id and limiting the disclosure to
"existence" seems worth doing.

If the working group agrees the Section 5 intent should win, one way to
resolve it would be to amend the Section 3.2.3 error definition:

   "alreadyExists" -- a create or update would cause a name collision
   with an existing sibling FileNode, and onExists is null.  The
   SetError object MUST include an existingId property with the id of
   the existing FileNode, unless that FileNode is not discoverable by
   the requesting user (see Section 5), in which case the server MUST
   NOT include existingId and SHOULD return "forbidden" instead.

This cuts against Neil's push to make Metadata's existingId a MUST [1], but a
client cannot use the id of a node it may not fetch, so nothing is lost.
Precedent for "forbidden" is already here: Blob/convert picks among
notFound, invalidProperties and forbidden by what the user may do.

Metadata will hit the same collision once it has a visibility model, so the
general shape may be worth settling once. 

Thanks,

[1] https://mailarchive.ietf.org/arch/msg/jmap/jKJw9Zk3-82Sid3Qzld7Jebfd6I/

-- 
Mehdi KOUHEN 
IT Tech Leader 
PU.Seald 

https://www.ovhcloud.com/