[httpapi] Structured Fields for HTTP APIs
Darrel Miller <darrel@tavis.ca> Mon, 23 January 2023 14:28 UTC
Return-Path: <darrel@tavis.ca>
X-Original-To: httpapi@ietfa.amsl.com
Delivered-To: httpapi@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C6623C153CAD for <httpapi@ietfa.amsl.com>; Mon, 23 Jan 2023 06:28:58 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=tavisdev.onmicrosoft.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id SSA2jJuzrKKE for <httpapi@ietfa.amsl.com>; Mon, 23 Jan 2023 06:28:57 -0800 (PST)
Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2050.outbound.protection.outlook.com [40.107.220.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A0460C2FED32 for <httpapi@ietf.org>; Mon, 23 Jan 2023 05:51:27 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dO3yrXOJ1EIMtqtb3NPK4dQUKWtwlhsj+oL4g2uTlS9HxKTRuZ/uO56rITKlhFvYqnmxwQ1/iLnelacFXA/XAAQgg5EDuK1+bahpxHPvsT5H6vdqXKKR0PAySGudkAiGxnnUlngxOGNdWtRw8qiMzho+RAe3M/R//2Es1bedloLvWGWWQx9rRp8OzT2WCCd3VgUvS8n0qwDMdGw1vOYXQX5EEOgsyalE4GwFMlZPEU6ts3d4Z/PkXniVTf5Z1LMaMvQ3Y/ZPzf2zqfn9Tdmo0k6oZ6vK4eQizHnpEdm+oiYGzQqWMonpeNJ4ykO4Cvl3W1RvW7vjDxiMFGGIL2UzvA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Epx7mZM2j+qbTpwwhbDLUpMjjej99F/3cKiZ1mqbwUU=; b=D+Ce+z5q0vh50+sfKjL1DoQ61etBt0yWlGk+INtbeHOs5dW/3S0doE5HVHJ+E4wgMiwQtdX70P2iDGoIduTH7WF+t4GolHMrgeQIWr8leV3zUFo1A9VD/yBZgz6CCUszny6IZVbinWrEO+2aDCnSMgBkw1UVL599921uCQtLPxT4WWMzr5wym0BY11H5rvWwQmyFLyRX1ZKXPz5FIu3y5WIdIatCQWSqcJrY6wlQOuIlsekFLHXndxYnwqaft3sT2G0V9/IknbShhe63khvwZ30h3TYBkvnPhZlAIsfkxrXF5N0XPqo16B5+wCaWIKAsNJ7XxibYoMJsZxeEcKbd3w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=tavis.ca; dmarc=pass action=none header.from=tavis.ca; dkim=pass header.d=tavis.ca; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tavisdev.onmicrosoft.com; s=selector2-tavisdev-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Epx7mZM2j+qbTpwwhbDLUpMjjej99F/3cKiZ1mqbwUU=; b=H7/P2VvZto89adJ9ZHpyhgVIoAXRdPcW6Y/JmUnOJvV+Wg5fOspjzfqyRpOFn94NQO/+jL6iq7ASqbYo/Y0NXyjWezVVJqxZYTUCwJqghfp490D/vZa2A85BzeL+m4LQvQYzdmq2trb3kbCHzd8nJhl4dheOCsc7ZOySpx4lLMM=
Received: from DM6PR01MB5964.prod.exchangelabs.com (2603:10b6:5:202::33) by MW2PR0102MB3466.prod.exchangelabs.com (2603:10b6:302:6::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.33; Mon, 23 Jan 2023 13:51:22 +0000
Received: from DM6PR01MB5964.prod.exchangelabs.com ([fe80::46f:6683:2a0a:bcb0]) by DM6PR01MB5964.prod.exchangelabs.com ([fe80::46f:6683:2a0a:bcb0%4]) with mapi id 15.20.6002.033; Mon, 23 Jan 2023 13:51:22 +0000
From: Darrel Miller <darrel@tavis.ca>
To: "httpapi@ietf.org" <httpapi@ietf.org>
Thread-Topic: Structured Fields for HTTP APIs
Thread-Index: AQHZLyraZ/+2tYJKGE25SuRu93ynzg==
Date: Mon, 23 Jan 2023 13:51:21 +0000
Message-ID: <DM6PR01MB59649603A686559109383E41A3C89@DM6PR01MB5964.prod.exchangelabs.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=tavis.ca;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DM6PR01MB5964:EE_|MW2PR0102MB3466:EE_
x-ms-office365-filtering-correlation-id: f7953d92-ecbc-484d-5549-08dafd48e94d
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: zjAl3wGCOvMKbE63Ia4DMPA0VNnfKBFaRBK/vmiui/rk8p65cSu4iXWeeoi8lGpcDEFZmOEeqGUPcHBtun4GwR0d/a2xHbEESouUdp7xS6jXDhAfdR/I5ijpkWGmgkTqLG60LemgMfpveZ1BUi/MghRrj/XTnj4hECqiLwPsg9l4AewAiiTHxHvKAcxmDmNYGqugQ5sKP7ZnAvGQklgDVsxVHi2X2iuLJOwGnXxLMWhfal7fe+WJ7kP021eRj9EVvLUauljRC5L1B5Z3LKVsb5Rug7C6cCASyve0uH3hO6C7AVEm0GW9dymspqfGCEOcVDD9j/hbXCvcm9TV6VWVjSqTC1YJSNcCMmXvhwRJgxodWFVC6qMwlYJcupDRHFhgNA8WGTIwcyPWrwDyQnb9bBYUZ1upHZFmLlJoZTpzWR6O9T9OT+JoIJaAz01tBr0Ol8zr/zLCjUcnqjr3BVeyKDrbDOQ6zmhB+JBVTYfDlQuf6xBUGdIXWhvOIIfcDJ4uFgHBbB2zNO1xcie7MR9RTHroW0m/q4rhGfAVedBsrIHS8s4Obcpac9XADiTfIC2NlzsDALZL9v5vHu2DGPoDnD9mmtLOTNU55LzhV/gAU3YDE9KjOMdzqqrr99hA5T2Z9p1fXVPlDzf2JjJkjNKM8s6cMukE9QdpNU6ffyW5boDfZtGNEBQK7nXgnNfd4oLHBGqnTZsF/2in29oi/t1PrT+ZkDcX20KjZjT7cVyir4s=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR01MB5964.prod.exchangelabs.com; PTR:; CAT:NONE; SFS:(13230022)(136003)(39830400003)(396003)(376002)(366004)(346002)(451199015)(122000001)(83380400001)(33656002)(38100700002)(2906002)(38070700005)(166002)(41300700001)(5660300002)(52536014)(8936002)(86362001)(66446008)(9686003)(6916009)(6506007)(26005)(8676002)(55016003)(186003)(66556008)(64756008)(66946007)(76116006)(316002)(91956017)(478600001)(966005)(7696005)(66476007)(71200400001)(66899015)(19627405001); DIR:OUT; SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: OfsLClNPqSLNIx8vAopXEqh3m32SerT4O1haLSrbezdzoSc4FWzOKn9EV+iFyXo0Usu5U/JYz0tbuRufKdVSuqSW/UWH/FrTYpubKIy8k79QeyU8RPQGm9ATX7Wc7fLZ6Emt4ZjSWzQuagjuuoJDcwwBjkMvu18+ZgNW8PBg6DxuIDrfT+BdeiHdIcB7kxn6zAHZgNtMIKLkbja51KeA4wGWQ5bj9t8uO7whHxbHnxlXDZHIGpnJ7kt3Rz0rErezAIAK8bFKyAUbS95sp6r608dQeqbh21bdyd0MxHcDpVAEi/KpQu+NscNGD1Qvc3iIvqwX7CYk4AOmCwPAj/ITP8RmNgOnawW+iaqaLw5nsponIJDmRNdPBcpmY7KdU63Gw4pVIJvzDxSlGi52MyCldKJbLlLh8P51Vg9kIYPTyDY7f00VLs52ULTQy80YJfKdivU/F7awZb4E6HErAuN4Bq3KqXGi7OsV+GqYN1/PuRGVnnW1WdA+RRREyOhDauVf0oXgkX1VUKl7jUrwJsAf12HWatXqZIoNPuJgmGzgfG+STbP8hfMJHmnkZCIqdUGT32EgW+YZ/l8wvFdrnFBWCJmmsp4Sr2/FXLNkwRntzYIg42NGetGnO+Bg2PxDZsBWr424+abhdDYZ1oh97GjHTd0YRMXD72qRH5kuIS2DmMHiimHV6Prt+upZtT3h1qGxic5/AwofHSx6kmkz6O2cAaUjoAL04Q3tAVhi+mwtH7KXbW1N1tf44yhqYCVU2Yigqfg1E2SzI8VgVslO+BQD6oDW2QVHHGjWDgmr5h03MIsOUHj460UPdI9m7J23HoQig5wPcRHG1rDcAR6VKjnSLevkhKA3cYi6FUYC5JHOd3gnCnbBhnSua+I4fxGT6qDRVrMQ6E2nUztq1HloGRU1GKaUAtEmhHTlQhoCrQnAXEEb979mVWctI91yKqvNcJ00iqeS89X1WowS+p7Nx9WJzyHFpZ08IsoSFXvXeVvOhN+wpzMXjoJ2CL9rd4JmebzgCIzMbM2vjbkOJvCC9HuAHacRp0pzK2uJSKnhDbF2UAqNJE4JU8nGUHPqXEVZCKVj0AVTa4/D3Gtu4UJQz6AbIYft/GFheiA/qQVMHLLwICeVl1dhSr+emAytKSFSHwThmkgVQ/TmfVUVpUUPmyzNwMD0sm+eQUJAe6RO7mNCmVSWsXXsfdlG4+mBzjERPBHXoats39Cz71Dv/Loddof3C1RgSSpFO0WwmMqYbotm445BwUP+Vri1AbFhJSQpjkZE2ynzaSU/EPtfIWPKpzf6YKyEOIXrp2ILQarzF8WffCfe//vk/WpeYZaIZGucRbjTvmkTZ9zkAVpO6o5xakIldxGKcPxCJjks+qKdRU7+/sHAEDR8PCSwzryMIc9SeKl3QZDLLBMfxS8UptPKYI4N4gt4+G+H9HKGpYP0CxHJySD6XYgHX/mpzLuPQbIhxun337xtZpjA+uF51B97m9Ox5xEpsYM3Qz7wtBWuM2bUHxKje7mTl7VBH2se6W+7zHO0LmpKd1YEJlkEwuCrTKR5ULxH4z+AhhkxPSIbAjA/7Ps=
Content-Type: multipart/alternative; boundary="_000_DM6PR01MB59649603A686559109383E41A3C89DM6PR01MB5964prod_"
MIME-Version: 1.0
X-OriginatorOrg: tavis.ca
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DM6PR01MB5964.prod.exchangelabs.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f7953d92-ecbc-484d-5549-08dafd48e94d
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jan 2023 13:51:21.9509 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 8cea02ec-9788-4bac-a19b-3e782a3e9bb0
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: tB0/MjxjzI2G2Zsdf8StsjK6AZ95gcQ+18Zo37qSExfvYUMN8WN45ksqJINoos+N
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR0102MB3466
Archived-At: <https://mailarchive.ietf.org/arch/msg/httpapi/1ypHiYONoHmSU62M4GHsUpA8EUY>
Subject: [httpapi] Structured Fields for HTTP APIs
X-BeenThere: httpapi@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Building Blocks for HTTP APIs <httpapi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/httpapi>, <mailto:httpapi-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/httpapi/>
List-Post: <mailto:httpapi@ietf.org>
List-Help: <mailto:httpapi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/httpapi>, <mailto:httpapi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 23 Jan 2023 14:28:58 -0000
A recent issue in the rfc7807bis GitHub https://github.com/ietf-wg-httpapi/rfc7807bis/issues/67 has brought us back to a conversation about the use of Structured Fields. It appears that the differing opinions on how we incorporate SF into new specifications is causing delays on nearly every document in this working group. It might be helpful if we can isolate this issue and get clarity on it so we don't have to continually relitigate. I will try and summarize the two camps as: Camp A: SF are cool, but the world isn't quite ready for them, so where there is minimal impact, let's start using them, but not necessarily everywhere. Camp B: SF are our best way out of having bespoke parsers for every header, the sooner we suck it up and use them for everything, the quicker we will be out of the pain. Erik's quote from the above thread does a good job getting to the heart of the Camp A viewpoint: "it's a good idea, but we also have to get used to the idea that there's tooling out there that for the next few years (at the very least) won't be able to cope with it. reality is annoyingly complex if we step away from the views of large players." However, Mark has made the point in the past that there are a decent set of implementations for SF, so the friction to adopting new SF headers should be low. Despite this, the issue of existing players not being able to handle the parsing of SF headers keeps coming up. It would be helpful to understand what the challenges are for these players. What I see most commonly in HTTP tooling is HTTP headers being treated as a key/value map of strings. Where specific headers need to be evaluated, corresponding parsers are used extract semantic meaning. The fact that implementations treat headers as simple strings until a decision is made to parse a specific header suggests that no implementation is going to break because it encounters a SF formatted header. This leaves us with the case where deployed infrastructure wants to parse a new header that is formatted with SF syntax, but it doesn't yet have SF support. My question is this: Why is it harder for existing infrastructure without native SF support, to parse a new SF header than it is to parse a custom ABNF defined header? If headers with unknown syntax are a problem for existing tooling, how has that tooling survived the introduction of any new header over the past decade? Is there something about SF headers that make them particularly difficult to parse without pulling in a library dependency? The two contentious issues we have seen so far are: 1. Representing non-ascii characters. 2. Date values As I understand it, the SF position is that we are going to ask developers to use a library, so let's use a format that is easy for machines. e.g. bytesequence for non-ascii and Unix time stamp for dates. In the HTTP API world there is proven value in human consumable message content, so this decision feels uncomfortable for us. Are there other data elements in SF that have been contentious that I have missed? Do most programing languages have primatives for dealing with these raw values? Or are we going to see a rash of badly implemented bytesequence generators/parsers? Getting consensus on this would definitely unblock us on a variety of issues. Please share your thoughts. Darrel
- [httpapi] Structured Fields for HTTP APIs Darrel Miller
- Re: [httpapi] Structured Fields for HTTP APIs Julian Reschke
- Re: [httpapi] Structured Fields for HTTP APIs Martin J. Dürst
- Re: [httpapi] Structured Fields for HTTP APIs Roberto Polli
- Re: [httpapi] Structured Fields for HTTP APIs Julian Reschke
- Re: [httpapi] Structured Fields for HTTP APIs Mark Nottingham
- Re: [httpapi] Structured Fields for HTTP APIs Julian Reschke
- Re: [httpapi] Structured Fields for HTTP APIs Darrel Miller
- Re: [httpapi] Structured Fields for HTTP APIs Sanjay Dalal
- Re: [httpapi] Structured Fields for HTTP APIs Erik Wilde
- Re: [httpapi] Structured Fields for HTTP APIs Julian Reschke
- Re: [httpapi] Structured Fields for HTTP APIs Erik Wilde
- Re: [httpapi] Structured Fields for HTTP APIs Julian Reschke
- Re: [httpapi] Structured Fields for HTTP APIs Mark Nottingham