[Atp] Re: Potential 'at' URI Solution

Daniel Holmgren <daniel@blueskyweb.xyz> Wed, 28 October 2026 17:45 UTC

Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com [IPv6:2a00:1450:4864:20::62b]) (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 05F8746 for <atp@ietf.org>; Wed, 28 Oct 2026 17:45:00 +0000 (UTC)
Authentication-Results: mx.ietf.org; dkim=pass header.d=blueskyweb.xyz header.s=google header.b=gGdiBg2H; arc=pass ("google.com:s=arc-20260327:i=1"); spf=pass (mx.ietf.org: domain of daniel@blueskyweb.xyz designates 2a00:1450:4864:20::62b as permitted sender) smtp.mailfrom=daniel@blueskyweb.xyz; dmarc=pass (policy=reject) header.from=blueskyweb.xyz
Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-c418e215671so162550066b.0 for <atp@ietf.org>; Wed, 28 Oct 2026 10:44:59 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1793209499; cv=none; d=google.com; s=arc-20260327; b=bfleulo8rR1FFRuvejd3xDuTq9+lq1JK4BuXdJ+VRLeBYXerzg4OvxI682cAbgDW1g rxad1XIReTfcmJy9mhjpYCWLCwyrF6iQOVsViS/tsJeuo+06QYqMh2WLw9nGyz2P1KwG O7o7ENa9+vlICtIqMc+A7bVtb3Vln3Es+NGH+zPctWVkkrdW9GNvEgDb0206omTZiL2M yGxdV/l2FqceocydVYZ5gd/qRFnK/EpJA+f52ur6xFyfqgzwW49hg++woZYCnGx2Nums reBiwFaZquOcjGyf+bfTwkF2QWhuhiQ1hLuXfpSgUSdqHniYJn+UEQNhvd0/4Cjk1t7g OYGA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=7FPIt9HG5q45ekOHPjLJNEulwqTVfz4YX+W4DFDVdxQ=; fh=H7JvPHtWT5cj8Pfp9Jvk7mofM6hHInPEP0pWWIFSado=; b=AFBE7T+VT6n8a3smvAnwiz79jemJIDDorz/+aWgHKfyAXCtPz2AAausqaChQQXfmmc QNImkS0Y3pjDAy45GnuSOZrmhth5PI9CsbwXyH/MjIfldaB4lAghxgnXiXLltdd0o5ul 7weIpQ94I2qv58YpWlJgS0w6cI47q85HFctcraaqIBQBZMIZ5CZLJa548+vjZYZMG2XT 5JA6YF+UMjI/F1Fssmnts5fNr7sOpB/YucRzCFWuVK5Q5QaqSB9AoHvAHBdGyBytG/Y8 /vykA6KFTladuwRZNu9qJWNGkZTc3lp2fkQIz5OGyhcqFJ4jmcJ2s1FTWwpUMLg2ryRc kbgA==; darn=ietf.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=blueskyweb.xyz; s=google; t=1793209499; x=1793814299; darn=ietf.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=7FPIt9HG5q45ekOHPjLJNEulwqTVfz4YX+W4DFDVdxQ=; b=gGdiBg2HpPHSJ64583lPeAIjfZBD29eOo+inluEAN6mA13jk8wZzsTV/FxWocASj4T iOjuqKuLM/nh9ORi76rKdr/GExg6OU2D+ru4X23DgX6EqwDCKjSLCB954XA0BBYW4xCX +jvwFWNZlHp6K2t5iprVJbK6fIc494xCAcclRtENo9EuvBJAsAYROxxaGKZS6rGCUThJ 1tDGF+rQ9mx6EllW7Fb+H2Gju78YmPvHDV82bTMZgycmFunhSmodd/rywCPqCno/v93H 4iuE2YHb3Ci83cGf0rQnKD3HMAQHfzMAt8+X3zUaYBqdx7xEuR5lstxENg0QuxEJGbCI MekA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793209499; x=1793814299; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=7FPIt9HG5q45ekOHPjLJNEulwqTVfz4YX+W4DFDVdxQ=; b=muw1ZtPGLWt9GuwFSh8UH0KfvGBPQTY11GCPXh45jzkgnfEAnIgyRQJ7DMYtHMcqwt m+cRzBSnp91g5LTUbMMi06SYgzNn4DSs85+nodVSJlLCp/i3DgE/LQWYBxyizy8sAMyX vmvjeZy3FBqyVouNGHf+V7T6RDWDLlyw2+3xcEmxYG08jg+41o1azHgnXpQcO2j//bDu Bh+Ck/bLANUFcWGJLIVwN2EtAob95w2Ne5pxUJjSplm2fIgT3mfWroTJP12SK54KSVHQ 6kuIzP3wgkPf4ZvrZBAMA1NZ1Z3lh8nCNf5veu9dUc67o7wT9RggP/fyPM8TLXzZI7q8 PUBw==
X-Forwarded-Encrypted: i=1; AKwUvBywH5EWgGWmTqEsT8QZIlbzAE66lrv7l4FpY38uwSh2d3UbJqZcRPPJluvJCp2PlTJ9Fms=@ietf.org
X-Gm-Message-State: AFq9FYIGKpM+3AtKEwX2/Xz6gWHxEF1kFQA2WnO0b+BtWS0hzSdiuW+e /bUKTT45WPWd567lNosyskfuPAgkihcSxbuCGQlEIGHE6wb3xaD9S4yu8WpcaqEQRZAWPAY4ZZM DH3YMLQc/Xqs53rDLYN/yrN4MPS+fvk7zoCVnL/oP1g==
X-Gm-Gg: AYBFou32I+CpFwUBkdHYiISP4fNN4RYVgynyjuUdPLCdZ02jGYryF0iE0G5TtsV1Tbo taSG/02TOy3O28jh5NAkSXII+cbOvxSr9sVod3yPJTaA43N9eL60Q1vQZE5vno1RmWiHkMQdl7b y2hC8ycpWFcfpdV9YbPe9bORaz+PIHTej5mNWyRqPg6c6dKKv6e4yzBwtnvYBzhV/EGWbtr2xqU NJL0Mg+DAqfjNfXvBCt+ggH4B3AjoUxYo95lJqQXA857AJVd8IeXZkVv8CD1gZWZHC7/5HL3TBn 0sOam6eeZb9PqwE2dnyf4FKcTKVZ7wk/6n9n7RzQpKm4Kas7yS3B8vM7UwV+2vPDfe6Na2ZxsVq C2BFOQ1PaBw3TOVKZXvW/aSf8cmhLJI5DAqNb+DH9hJxHCX2L9KO6GXtkr2cOaZzq782ONzxoIA kT8xfC+DzjAzvFreftSFM=
X-Received: by 2002:a17:907:72c3:b0:c49:b90a:988b with SMTP id a640c23a62f3a-c49bdf89bc9mr267625266b.49.1793209498732; Wed, 28 Oct 2026 10:44:58 -0700 (PDT)
MIME-Version: 1.0
References: <CABFYohhOuK3cXXdmRtTO=RKXRrrkHWUc33LikGUWajiE6J8g+g@mail.gmail.com> <CABFYohhoMeMC+MVC=1VQVy=gZkBvDG1j7ejnL=bPbOfz4_gNqQ@mail.gmail.com> <FEFEB99D-6BA8-4E24-9E47-39D8F9E70855@brandedcode.com>
In-Reply-To: <FEFEB99D-6BA8-4E24-9E47-39D8F9E70855@brandedcode.com>
From: Daniel Holmgren <daniel@blueskyweb.xyz>
Date: Wed, 28 Oct 2026 12:44:47 -0500
X-Gm-Features: AclHuK_jhCaLVBerU1TKnncbCu7ZAeWi10tGBzdEBRolLH196nzZ8iUvJg-aToc
Message-ID: <CAGZK71=fQSwU8nqp5NBr36-dnJLE6j8MBqJYWkYLirh-r6cmAg@mail.gmail.com>
To: "Emelia S." <emelia@brandedcode.com>
Content-Type: multipart/alternative; boundary="0000000000002e24be065eea1f79"
X-Spamd-Bar: ---------------------------
Message-ID-Hash: ARVFS6Z4GYQN6CRIXFLCLF3TD23R72QO
X-Message-ID-Hash: ARVFS6Z4GYQN6CRIXFLCLF3TD23R72QO
X-MailFrom: daniel@blueskyweb.xyz
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: Bryan Newbold <bryan@blueskyweb.xyz>, 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/rm5SSf69ltOflnVRUc3HUsXw-vE>
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>

One thing I like about this proposal is that it *isn't* two different URI
schemes. It's all `at:`.

The first path segment (`public` or `space`) is just a semantic of at-uris
not a part of the scheme. To a URI parser it is a scheme (`at:`) followed
by a rootless path.

-- Daniel

On Wed, Oct 28, 2026 at 12:41 PM Emelia S. <emelia=
40brandedcode.com@dmarc.ietf.org> 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
>
> Thanks to Nick Gerakines for the sharp eyes.
>
> --bryan
>
> On Wed, Oct 28, 2026 at 9:47 AM Bryan Newbold <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
>>
>> 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
>>
>> 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
>>
>> 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 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
>
>
> _______________________________________________
> Atp mailing list -- atp@ietf.org
> To unsubscribe send an email to atp-leave@ietf.org
>