Received: from smtp-bc0f.mail.infomaniak.ch (smtp-bc0f.mail.infomaniak.ch
 [45.157.188.15])
	(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 46A8946
	for <atp@ietf.org>; Wed, 28 Oct 2026 17:40:26 +0000 (UTC)
Authentication-Results: mx.ietf.org;
	dkim=pass header.d=brandedcode.com header.s=20250226 header.b="Ks8EK/IS";
	spf=pass (mx.ietf.org: domain of emelia@brandedcode.com designates
 45.157.188.15 as permitted sender) smtp.mailfrom=emelia@brandedcode.com;
	dmarc=pass (policy=reject) header.from=brandedcode.com
Received: from smtp-3-0001.mail.infomaniak.ch (smtp-3-0001.mail.infomaniak.ch
 [10.4.36.108])
	by smtp-4-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4jFF4g1PGMzg1N
	for <atp@ietf.org>; Wed, 28 Oct 2026 18:40:19 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brandedcode.com;
	s=20250226; t=1793209219;
	bh=cFw+x//csJma0OI6SN8CPdeO5Xy0YrMI8vgojA0ohk8=;
	h=Subject:From:In-Reply-To:Date:Cc:References:To:From;
	b=Ks8EK/IS5B3bKIwxduyTaF+Zjxk30J3wdijmO31X+SYFGmeqY4J826dX9yUsiMjS3
	 UnEFxxzldHMjIy6H5WAU2hF95iB+jCNmBYAA/ikwGkVM2nKQi8SNK62q70ULRSIIiL
	 0F52accTj9bLANYW05taOYfFaF9ryMl7xQBDhTRTrzmalrMBMv+HG6PxT6SXGsSzcp
	 ydZMQwzbDfDRY8XW+Ki8HGtqCYr7au1+pMqwisrXpLuGAByP5vVK0hqyfAkUEpTCta
	 x3JmxCEXtuzoANJsi3U0gpaRflYHLveX2/ZiDgjBcMT2GYKAjzLv2p9ey6fDtYduA/
	 jSBggFBHjdv2w==
Received: from unknown by smtp-3-0001.mail.infomaniak.ch (Postfix) with ESMTPA
 id 4jFF4f1wF9zZCf;
	Wed, 28 Oct 2026 18:40:18 +0100 (CET)
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_EF2290CF-6DB0-4E0D-8568-4397546745B7"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3864.700.51.1.1\))
From: "Emelia S." <emelia@brandedcode.com>
In-Reply-To: 
 <CABFYohhoMeMC+MVC=1VQVy=gZkBvDG1j7ejnL=bPbOfz4_gNqQ@mail.gmail.com>
Date: Wed, 28 Oct 2026 18:40:07 +0100
Message-Id: <FEFEB99D-6BA8-4E24-9E47-39D8F9E70855@brandedcode.com>
References: 
 <CABFYohhOuK3cXXdmRtTO=RKXRrrkHWUc33LikGUWajiE6J8g+g@mail.gmail.com>
 <CABFYohhoMeMC+MVC=1VQVy=gZkBvDG1j7ejnL=bPbOfz4_gNqQ@mail.gmail.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: 7YO32XQQB357YPQWCTKKM2WTB3BOH7OW
X-Message-ID-Hash: 7YO32XQQB357YPQWCTKKM2WTB3BOH7OW
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/LCk6Rtskjsoe_bhmJPAXsh6bFvo>
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>


--Apple-Mail=_EF2290CF-6DB0-4E0D-8568-4397546745B7
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

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)

=E2=80=94 Emelia

> On 28 Oct 2026, at 18:12, Bryan Newbold =
<bryan=3D40blueskyweb.xyz@dmarc.ietf.org> wrote:
>=20
> The 'at:space' example had a typo (the '/space/' was accidentally =
included in the example). It should read:
>=20
>   =
at:space/did:plc:735r43lcgemuv2woqpvx3lso/my.bulletin.board/self/did:plc:7=
35r43lcgemuv2woqpvx3lso/my.bulletin.post/3mtiiz6ci6c2j =
<http://my.bulletin.post/3mtiiz6ci6c2j>
>=20
> Thanks to Nick Gerakines for the sharp eyes.
>=20
> --bryan
>=20
> On Wed, Oct 28, 2026 at 9:47=E2=80=AFAM 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:
>>=20
>>   at:public/<account>/<collection>/<rkey>
>>   =
at:public/did:plc:vwzwgnygau7ed7b7wt5ux7y2/app.bsky.feed.post/3k5nobkf2w72=
g <http://app.bsky.feed.post/3k5nobkf2w72g>
>>=20
>> 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}.
>>=20
>> 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:
>>=20
>>   =
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>
>>=20
>> 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:
>>=20
>>   =
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>
>>=20
>> 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".
>>=20
>> 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.
>>=20
>> Some questions for the list:
>>=20
>> - 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?
>>=20
>> --bryan
> _______________________________________________
> Atp mailing list -- atp@ietf.org
> To unsubscribe send an email to atp-leave@ietf.org


--Apple-Mail=_EF2290CF-6DB0-4E0D-8568-4397546745B7
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html aria-label=3D"message body"><head><meta http-equiv=3D"content-type" =
content=3D"text/html; charset=3Dutf-8"></head><body =
style=3D"overflow-wrap: break-word; -webkit-nbsp-mode: space; =
line-break: after-white-space;">Hi all,<div><br></div><div>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?</div><div><br></div><div>what's wrong with =
at:/&lt;account&gt;/&lt;collection&gt;/ where `collection` may either be =
a reserved word or a valid NSID</div><div><br></div><div>If `collection` =
is a valid NSID, then the spec defines the further URL segments =
as:</div><div><br></div><div>&nbsp; =
at:/&lt;account&gt;/&lt;collection&gt;/&lt;rkey&gt;</div><div><br></div><d=
iv>And then we could define the `space` reserved word via an extension, =
which could then define it's own path =
segments:</div><div><br></div><div>&nbsp; =
at:/&lt;account&gt;/space/&lt;space-type&gt;/&lt;skey&gt;/&lt;repo-account=
&gt;/&lt;collection&gt;/&lt;rkey&gt;<br></div><div><br></div><div>I'm =
not sure why we'd explicitly need two different URI =
schemes?</div><div><br></div><div>(The at:/&lt;authority&gt;/ syntax is =
a valid URI, it's just at://&lt;authority&gt; that fails due to custom =
schemes / syntax)</div><div><br></div><div>=E2=80=94 =
Emelia</div><div><div><br><blockquote type=3D"cite"><div>On 28 Oct 2026, =
at 18:12, Bryan Newbold &lt;bryan=3D40blueskyweb.xyz@dmarc.ietf.org&gt; =
wrote:</div><br class=3D"Apple-interchange-newline"><div><div =
dir=3D"ltr">The 'at:space' example had a typo (the '/space/' was =
accidentally included in the example). It should read:<br><br>&nbsp; =
at:space/did:plc:735r43lcgemuv2woqpvx3lso/my.bulletin.board/self/did:plc:7=
35r43lcgemuv2woqpvx3lso/<a href=3D"http://my.bulletin.post/3mtiiz6ci6c2j" =
target=3D"_blank">my.bulletin.post/3mtiiz6ci6c2j</a><br><div><br></div><di=
v>Thanks to Nick Gerakines for the sharp =
eyes.</div><div><br></div><div>--bryan</div></div><br><div =
class=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" =
class=3D"gmail_attr">On Wed, Oct 28, 2026 at 9:47=E2=80=AFAM Bryan =
Newbold &lt;<a =
href=3D"mailto:bryan@blueskyweb.xyz">bryan@blueskyweb.xyz</a>&gt; =
wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">I have a new 'at' =
URI scheme syntax/structure proposal that could be a way =
forward:<br><br>&nbsp; =
at:public/&lt;account&gt;/&lt;collection&gt;/&lt;rkey&gt;<br>&nbsp; =
at:public/did:plc:vwzwgnygau7ed7b7wt5ux7y2/<a =
href=3D"http://app.bsky.feed.post/3k5nobkf2w72g" =
target=3D"_blank">app.bsky.feed.post/3k5nobkf2w72g</a><br><br>As a =
reminder, the current 'at://&lt;account&gt;/...' 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}.<br><br>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:<br><br>&nbsp; =
at://&lt;space-account&gt;/space/&lt;space-type&gt;/&lt;skey&gt;/&lt;repo-=
account&gt;/&lt;collection&gt;/&lt;rkey&gt;<br>&nbsp; =
at://did:plc:735r43lcgemuv2woqpvx3lso/space/my.bulletin.board/self/did:plc=
:735r43lcgemuv2woqpvx3lso/<a =
href=3D"http://my.bulletin.post/3mtiiz6ci6c2j" =
target=3D"_blank">my.bulletin.post/3mtiiz6ci6c2j</a><br><br>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:<br><br>&nbsp; =
at:space/&lt;space-account&gt;/&lt;space-type&gt;/&lt;skey&gt;/&lt;repo-ac=
count&gt;/&lt;collection&gt;/&lt;rkey&gt;<br>&nbsp; =
at:space/did:plc:735r43lcgemuv2woqpvx3lso/space/my.bulletin.board/self/did=
:plc:735r43lcgemuv2woqpvx3lso/<a =
href=3D"http://my.bulletin.post/3mtiiz6ci6c2j" =
target=3D"_blank">my.bulletin.post/3mtiiz6ci6c2j</a><br><br>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".<br><br>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.<br><br>Some questions for the =
list:<br><br>- are there any concerns about this new proposed syntax =
being a valid and well-formed IETF URI?<br>- how likely is this new =
syntax likely to be pass scrutiny at the IESG and/or <a =
href=3D"mailto:uri-review@ietf.org" =
target=3D"_blank">uri-review@ietf.org</a> phase?<br>- are folks willing =
to let go of the nice 'at://' prefix?<br>- is it worth the disruption =
and friction of supporting two syntaxes ("valid URI" and "legacy =
non-URI") indefinitely?<br>- are there any firm counter-proposals =
waiting in the wings?<br>- any strong aesthetic or conceptual objections =
to this new syntax?<br><br>--bryan<br></div>
</blockquote></div>
_______________________________________________<br>Atp mailing list -- =
atp@ietf.org<br>To unsubscribe send an email to =
atp-leave@ietf.org<br></div></blockquote></div><br></div></body></html>=

--Apple-Mail=_EF2290CF-6DB0-4E0D-8568-4397546745B7--
