[Atp] Re: Potential 'at' URI Solution

"Emelia S." <emelia@brandedcode.com> Wed, 28 October 2026 17:52 UTC

Received: from smtp-8fa8.mail.infomaniak.ch (smtp-8fa8.mail.infomaniak.ch [83.166.143.168]) (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 CCBF446 for <atp@ietf.org>; Wed, 28 Oct 2026 17:52:37 +0000 (UTC)
Authentication-Results: mx.ietf.org; dkim=pass header.d=brandedcode.com header.s=20250226 header.b=jWXLlpMJ; spf=pass (mx.ietf.org: domain of emelia@brandedcode.com designates 83.166.143.168 as permitted sender) smtp.mailfrom=emelia@brandedcode.com; dmarc=pass (policy=reject) header.from=brandedcode.com
Received: from smtp-4-0000.mail.infomaniak.ch (smtp-4-0000.mail.infomaniak.ch [10.7.10.107]) by smtp-3-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4jFFLk5GkyzZ71; Wed, 28 Oct 2026 18:52:30 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brandedcode.com; s=20250226; t=1793209950; bh=4oLRVH8tQ6/Bl54ZoXrGBYzQlP5GbcP9Nu0/jGVhPFk=; h=Subject:From:In-Reply-To:Date:Cc:References:To:From; b=jWXLlpMJolxqqaLOwehe9IN9SleCDzDOG+xabFFJ4gepLeCcShE1ha7oFpjh0YbkW ZMh7EXSRf4dJa9VaX195X5wXcQgOikRy9SjRanx6JvjUa7Jv1FmEYAecONjn6R67pI Qxm0d6XpWgiJOpqEYUuj7a6a2POMt5BsNhc4iGoOAYFRmwB6mWXMAB95nPu7bQCDsQ kJ89OK5FM0kPOytDqj5EzN6aTdB4PHnfBEb9jD3BYYAy8ODebrsACgjr/+4MyRId4o zADdULvlLAbVPSlheozg+7SDsNVgO2sVBhkBH9nYLEFnay6ggvW2IJzom17nZYVOhA PUmcd6CuBM+mA==
Received: from unknown by smtp-4-0000.mail.infomaniak.ch (Postfix) with ESMTPA id 4jFFLj6XZkz63w; Wed, 28 Oct 2026 18:52:29 +0100 (CET)
Content-Type: multipart/alternative; boundary="Apple-Mail=_7EAD1823-AFEC-439E-82DA-D392B68C59E1"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3864.700.51.1.1\))
From: "Emelia S." <emelia@brandedcode.com>
In-Reply-To: <FEFEB99D-6BA8-4E24-9E47-39D8F9E70855@brandedcode.com>
Date: Wed, 28 Oct 2026 18:52:19 +0100
Message-Id: <D92D7933-2AF7-4B75-9BBB-87758CB2DA9F@brandedcode.com>
References: <CABFYohhOuK3cXXdmRtTO=RKXRrrkHWUc33LikGUWajiE6J8g+g@mail.gmail.com> <CABFYohhoMeMC+MVC=1VQVy=gZkBvDG1j7ejnL=bPbOfz4_gNqQ@mail.gmail.com> <FEFEB99D-6BA8-4E24-9E47-39D8F9E70855@brandedcode.com>
To: Bryan Newbold <bryan@blueskyweb.xyz>
X-Mailer: Apple Mail (2.3864.700.51.1.1)
X-Infomaniak-Routing: alpha
X-Spamd-Bar: -------------------------
Message-ID-Hash: EGFDFI4DV3QJ6NSUJ23GYD53JUPQR5LI
X-Message-ID-Hash: EGFDFI4DV3QJ6NSUJ23GYD53JUPQR5LI
X-MailFrom: emelia@brandedcode.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: ATP IETF Mailing List <atp@ietf.org>
X-Mailman-Version: 3.3.10
Precedence: list
Subject: [Atp] Re: Potential 'at' URI Solution
List-Id: Authenticated Transfer <atp.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/atp/6R65dsTxL_FIqCfRd5lu2F16ffI>
List-Archive: <https://mailarchive.ietf.org/arch/browse/atp>
List-Help: <mailto:atp-request@ietf.org?subject=help>
List-Owner: <mailto:atp-owner@ietf.org>
List-Post: <mailto:atp@ietf.org>
List-Subscribe: <mailto:atp-join@ietf.org>
List-Unsubscribe: <mailto:atp-leave@ietf.org>

Also, there's a reason not to use at:space/<did>/ — WHATWG's URL parser cannot parse / construct it properly:

URL.parse('my.bulletin.post/3mtiiz6ci6c2j', 'at:space/did:plc:735r43lcgemuv2woqpvx3lso/')

Results in `null`, instead of a valid URI. By comparison, the form I proposed:

URL.parse('my.bulletin.post/3mtiiz6ci6c2j', 'at:/did:plc:735r43lcgemuv2woqpvx3lso/')
=> parses correctly to: at:/did:plc:735r43lcgemuv2woqpvx3lso/my.bulletin.post/3mtiiz6ci6c2j

So I think that'd be a strong argument against at:space/<did>

— Emelia

> On 28 Oct 2026, at 18:40, Emelia S. <emelia@brandedcode.com> wrote:
> 
> Hi all,
> 
> Is there actually really a need for two different URI schemes here? It's all AT Protocol data, all that's changing is where it's hosted / how it's access?
> 
> what's wrong with at:/<account>/<collection>/ where `collection` may either be a reserved word or a valid NSID
> 
> If `collection` is a valid NSID, then the spec defines the further URL segments as:
> 
>   at:/<account>/<collection>/<rkey>
> 
> And then we could define the `space` reserved word via an extension, which could then define it's own path segments:
> 
>   at:/<account>/space/<space-type>/<skey>/<repo-account>/<collection>/<rkey>
> 
> I'm not sure why we'd explicitly need two different URI schemes?
> 
> (The at:/<authority>/ syntax is a valid URI, it's just at://<authority> that fails due to custom schemes / syntax)
> 
> — Emelia
> 
>> On 28 Oct 2026, at 18:12, Bryan Newbold <bryan=40blueskyweb.xyz@dmarc.ietf.org> wrote:
>> 
>> The 'at:space' example had a typo (the '/space/' was accidentally included in the example). It should read:
>> 
>>   at:space/did:plc:735r43lcgemuv2woqpvx3lso/my.bulletin.board/self/did:plc:735r43lcgemuv2woqpvx3lso/my.bulletin.post/3mtiiz6ci6c2j <http://my.bulletin.post/3mtiiz6ci6c2j>
>> 
>> Thanks to Nick Gerakines for the sharp eyes.
>> 
>> --bryan
>> 
>> On Wed, Oct 28, 2026 at 9:47 AM Bryan Newbold <bryan@blueskyweb.xyz <mailto:bryan@blueskyweb.xyz>> wrote:
>>> I have a new 'at' URI scheme syntax/structure proposal that could be a way forward:
>>> 
>>>   at:public/<account>/<collection>/<rkey>
>>>   at:public/did:plc:vwzwgnygau7ed7b7wt5ux7y2/app.bsky.feed.post/3k5nobkf2w72g <http://app.bsky.feed.post/3k5nobkf2w72g>
>>> 
>>> As a reminder, the current 'at://<account>/...' syntax with double slashes is not a valid IETF URI, nor a valid WHATWG URL. In this proposal we lose the nice idiomatic prefix ('at://'), but keep the account identifiers vebatim, and don't need any escaping or encoding. The general shape is unchanged: a three-tuple of {account, type, key}.
>>> 
>>> This prefix structure would generalize well to other URIs in the broader atproto ecosystem. For example, design work is wrapping up on "atproto spaces", a protocol extension for non-public data[0]. This is outside the scope of this group's current charter, but assuming all goes well with the current charter we expect to propose it in a future re-charter. Spaces have a dual namespace structure, with two separate three-tuples, and need distinguishable URIs. With feedback from the developer ecosystem we have iterated on a couple different syntaxes (including a new 'ats:' URI scheme), and currently settled on a '/space/' as the first path prefix:
>>> 
>>>   at://<space-account>/space/<space-type>/<skey>/<repo-account>/<collection>/<rkey>
>>>   at://did:plc:735r43lcgemuv2woqpvx3lso/space/my.bulletin.board/self/did:plc:735r43lcgemuv2woqpvx3lso/my.bulletin.post/3mtiiz6ci6c2j <http://my.bulletin.post/3mtiiz6ci6c2j>
>>> 
>>> This reuses the 'at:' scheme (which we like), but has all the same syntax problems as the current public protocol references (aka, the double-slash), and also has the '/space/' in the middle. Under the new proposed syntax, these could be:
>>> 
>>>   at:space/<space-account>/<space-type>/<skey>/<repo-account>/<collection>/<rkey>
>>>   at:space/did:plc:735r43lcgemuv2woqpvx3lso/space/my.bulletin.board/self/did:plc:735r43lcgemuv2woqpvx3lso/my.bulletin.post/3mtiiz6ci6c2j <http://my.bulletin.post/3mtiiz6ci6c2j>
>>> 
>>> The use of 'public' for the prefix for regular atproto records could be debated; maybe 'at:repo' would make sense. We would still expect the 'at://' syntax to be supported as a mandatory "legacy" format for all the billions of existing records containing strings in that format, but we would be careful not to call them "URIs".
>>> 
>>> We have a short time window in which we could adopt the 'at:space' syntax for the atproto spaces beta deployment, which we expect to go live soon after IETF 127 ("by the end of November"). That would sort of hinge on expecting the general pattern to work out as the public data URI syntax as well. It is impossible to come to a formal consensus on this timeframe, but there is time to get feedback on this list and have a discussion at IETF 127. If there is broad support this format, we will likely use it in the spaces beta deployment. If not, we will likely go ahead with the syntactically-invalid 'at://' format, and resolve that problem at the same time as the public data references.
>>> 
>>> Some questions for the list:
>>> 
>>> - are there any concerns about this new proposed syntax being a valid and well-formed IETF URI?
>>> - how likely is this new syntax likely to be pass scrutiny at the IESG and/or uri-review@ietf.org <mailto:uri-review@ietf.org> phase?
>>> - are folks willing to let go of the nice 'at://' prefix?
>>> - is it worth the disruption and friction of supporting two syntaxes ("valid URI" and "legacy non-URI") indefinitely?
>>> - are there any firm counter-proposals waiting in the wings?
>>> - any strong aesthetic or conceptual objections to this new syntax?
>>> 
>>> --bryan
>> _______________________________________________
>> Atp mailing list -- atp@ietf.org
>> To unsubscribe send an email to atp-leave@ietf.org
>