[Atp] Re: ATP records from arbitrary JSON

Ryan Barrett <public@ryanb.org> Mon, 27 July 2026 18:34 UTC

Return-Path: <public@ryanb.org>
X-Original-To: atp@mail2.ietf.org
Delivered-To: atp@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 349A311F69666 for <atp@mail2.ietf.org>; Mon, 27 Jul 2026 11:34:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1785177286; bh=2/jGTwFuFFKV575l8pXnOWtLAJpRWRQoWG0u0nupNtE=; h=References:In-Reply-To:From:Date:Subject:To:Cc; b=oqIee06vcsY24LzJSw+72Jre4U94XCAmC+gwHs+M2bej0NNGaWfYJd7kGR40Kxc2w Ne4MQa5xqvs1ggOIioBlwP6Y5q0mHfs/oQHI73w+Rl7oKmdaR4GrvlNw1/RrBD88BU PNOR6g9x56cxgta9IZnKevwJOOPJZHV2b1pWeE5s=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.1
X-Spam-Level:
X-Spam-Status: No, score=-2.1 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=ryanb.org
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id r7aO8xySh1gC for <atp@mail2.ietf.org>; Mon, 27 Jul 2026 11:34:45 -0700 (PDT)
Received: from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net [IPv6:2001:4b98:dc4:8::223]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 131AB11F6965F for <atp@ietf.org>; Mon, 27 Jul 2026 11:34:44 -0700 (PDT)
Received: by mail.gandi.net (Postfix) with ESMTPSA id 11D8F1F654 for <atp@ietf.org>; Mon, 27 Jul 2026 18:34:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ryanb.org; s=gm1; t=1785177277; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=E0O3CFsXGk0Pr062CcvlFjQPwVnycX7uDa2EUCb5ppA=; b=bCxUQ66kHtJs6GaOVw3QJTHGmViyY1iMb+80WGj2aBibu0FAbIWTRjWtBqxJErpuGO5j5L b5tMU7/jJlCa6N4Opl/Kzz8BiZe9AFjNkBLkSuWtPfxAUoUSEUNvtHcCSpIJjF2oSORrBc 7gk0A4+/H/5s2zRzzTjkxuypXAGTLNbr0qiVNKUPOJ6hsXmGX/e7CbUjMWAx6cG7tUJ8uv +KqXyIRazp6L6xG957EFX8/VmBJTWKZd6PXaelT/VrgYRb2+ylfIrzNj9Jyg5babVVkEhE Fpv5lBnWN4b/YAEPey0mBoKYhaQ1K0VTznTHBODCeta/200HGk1fjPNzN2Ffuw==
Received: by mail-qv1-f41.google.com with SMTP id 6a1803df08f44-9034b6b7674so25195546d6.0 for <atp@ietf.org>; Mon, 27 Jul 2026 11:34:36 -0700 (PDT)
X-Gm-Message-State: AOJu0YzkWEakqf1/kjDf09K+JMq4tSWzF+GV7dH3bFruc90g3nezjEp0 WugFfubiQEqdYXSq2bdtJ+YVAY4HVMizyLdrPsXMXlY0jxvWzGJcxMepcozZgsEUfzEqkcIZ4Sv f91FIg49lLiCOE1rwdpgYjJVa8MMBonI=
X-Received: by 2002:ad4:5cc6:0:b0:8fd:6e12:9710 with SMTP id 6a1803df08f44-908128e3ce7mr8499516d6.62.1785177275727; Mon, 27 Jul 2026 11:34:35 -0700 (PDT)
MIME-Version: 1.0
References: <5ee1d379-a566-4610-a988-d2960a78ea12@gmail.com>
In-Reply-To: <5ee1d379-a566-4610-a988-d2960a78ea12@gmail.com>
From: Ryan Barrett <public@ryanb.org>
Date: Mon, 27 Jul 2026 11:33:59 -0700
X-Gmail-Original-Message-ID: <CA+caGh_VVV0bk+b7dfgmHZnpQtWY7sd-=bqKWLWYucDpWieVnA@mail.gmail.com>
X-Gm-Features: AUfX_mxN-VhW3DMm5GB7XxY7DWz3omGiFhIU2t-fg2YCGxGAcbdRw5FQV3pdMag
Message-ID: <CA+caGh_VVV0bk+b7dfgmHZnpQtWY7sd-=bqKWLWYucDpWieVnA@mail.gmail.com>
To: Volker Mische <volker.mische@gmail.com>
Content-Type: multipart/alternative; boundary="0000000000006186ce06579bf9e3"
X-GND-Sasl: public@ryanb.org
X-GND-State: clean
X-GND-Score: -100
X-GND-Cause: dmFkZTGLAix8Rfy2xBf0mf9bh+O/oBpiUmtGNQ46WjmdySiJIbJY9oLILRo5xyssfhQGx5wjyN1494V0B7l15/KDgXxpA1gIoAoBLvbgJj19UWfJOa6rM8ehUn5HeF86PVHZ+/uV7nR1v9b3uHD3zmBRMyrZ7nDReB2zCQUc0z6bUNV9+MbFdfhBzWZ7uKcYcFLiPsn/iKQZfcXuliO3f36GZJrHhCDMQ4G5x6Od1ndSniqDAEljbwSHyBIOlgN6SlEoZzHnnObm9ocVGy26FFpfzsNz3wD37Ak7bAwY/aqYRHg89FLloM8Q89lTnW6H4TchN1eHx/4GBaQ3LxeA88yLhFJJZIh1w/mwX7yBRP94BxsFL8m2mEeTP42vkH3QJ7FvqNNkoXdf9jtDFqWvkv+2bfZZrIV/TzVfdyheEEPh7R3yemuDFQy6ET1nnnqE6TDGyayc0pDJEeIVHxZrzo+uvds+WoNNOMhmw3w9AMn2ntFXcV0vQefk1Uadx0uOQmpCHIO7CrHRVnKHUB+jcwviYU7I0CBjIjWOlCqxwLoenFuGfLSgkARqrXex43+uUlC8WepljtOX1lLN+1ytFXCm5S7sbm9Mwq5uQUnRgVCL0iVMa8Kfc8E0PCTI0oqCGL0QUfmcRg9znDrtHZv0dpvazJUDMd80U7iy/22ZOHbJ0XVDQg
Message-ID-Hash: 5AW3KI7UUBCFGFNVOUDXNYOK5NXY7SZ2
X-Message-ID-Hash: 5AW3KI7UUBCFGFNVOUDXNYOK5NXY7SZ2
X-MailFrom: public@ryanb.org
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: atp@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Atp] Re: ATP records from arbitrary JSON
List-Id: Authenticated Transfer <atp.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/atp/-tkNww4nJLnatc8UdcMAWYoA908>
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>

This is a good one! And the good news here is, ATProto largely already
supports arbitrary JSON-shaped data in records. It's not encouraged, for a
number of reasons, but it is explicitly provided for. The lexicon spec includes
an unknown field type <https://atproto.com/specs/lexicon#unknown> that
designers can use to indicate that they expect arbitrary data, but you can
also put arbitrary data (of any type, including objects) into fields that
*aren't* defined in a lexicon. PDSes and other consuming services are
explicitly required to allow all this
<https://atproto.com/specs/lexicon#authority-and-control>, for a few
reasons, eg changing lexicons (backward compatibly) over time.

(...subject to some caveats, like you mention, eg floats and some $...
names!)

On Fri, Jul 24, 2026 at 5:04 AM Volker Mische <volker.mische@gmail.com>
wrote:

> Hi all,
>
> over the past few weeks I realized that I started the whole floats
> discussion from within too deep into the rabbit hole. I want to start
> again from a higher level, hence a separate thread: Do we want ATP
> records to be able to support arbitrary JSON?
>
> I think the answer is: yes, as much as we can.
>
> In order to reduce the edge cases, let's assume for this thread that the
> "arbitrary JSON" is valid I-JSON [1].
>
> Of course fully arbitrary isn't possible, which is true for all JSON
> based systems that need to signal custom things. In Apache CouchDB it is
> top-level fields starting with an underscore which are reserved, hence
> cannot be used in your arbitrary JSON input. For ATProto it is all
> fields starting with a dollar sign.
>
> So if your data doesn't contain any key starting with a dollar sign,
> then I think it should be possible to store it as an ATP record without
> any further limitations.
>
> I hope we can find agreement that this is a goal to pursue and we can
> then take the next step and discuss on how to get there.
>
> [1]: https://www.rfc-editor.org/info/rfc7493/
>
> Cheers,
>    Volker
>
> _______________________________________________
> Atp mailing list -- atp@ietf.org
> To unsubscribe send an email to atp-leave@ietf.org
>


-- 
https://snarfed.org/