[rpp] An implementation of JSContact in JSON Schema
Stephane Bortzmeyer <bortzmeyer@nic.fr> Sun, 15 March 2026 02:06 UTC
Return-Path: <bortzmeyer@nic.fr>
X-Original-To: rpp@mail2.ietf.org
Delivered-To: rpp@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 34EB9CA1871F for <rpp@mail2.ietf.org>; Sat, 14 Mar 2026 19:06:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.8
X-Spam-Level:
X-Spam-Status: No, score=-2.8 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, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=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=nic.fr
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 3d6j9k0AOmBL for <rpp@mail2.ietf.org>; Sat, 14 Mar 2026 19:06:17 -0700 (PDT)
Received: from mx1.nic.fr (mx1.nic.fr [IPv6:2001:67c:2218:10::51:1]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 6C5D2CA1871A for <rpp@ietf.org>; Sat, 14 Mar 2026 19:06:17 -0700 (PDT)
Received: from pps.filterd (mx1.nic.fr [127.0.0.1]) by mx1.nic.fr (8.18.1.7/8.18.1.7) with ESMTP id 62F1nmcU014239 for <rpp@ietf.org>; Sun, 15 Mar 2026 02:06:15 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nic.fr; h= content-type:date:from:message-id:mime-version:subject:to; s= nic-20240601; bh=zXjpptyJL0I1Cf5m5l1myFnWXZXpo41PI2yGKdKtdC4=; b= E+wOvhs9yk4OEkNLWIAnDP4RM/txnrIhxhylosKPvyAKL6xjDbrQr2UmVJpV4frR 0mVw3v3WmqPIY9dp030b9E1WRYC/9IhGOyE2tatfece1E8AbVzZv00FKgIqNgX5e QmhsT4GFEUEoVjdMdjTcjkxTT2lMIaOIs6tNj0lwgXa9VTT5uZ7GHdP9lfUPI+hK i6G+xp31JosXqaMwJfSZcLXaeQx8FjPfNOCQXuqHYCoVvJF6A3hfZR4LjFPn4Pvm gcDNMjtCjjXBgQPalSNgKgwnhsHNXxA6S/i2Uwf48oE8xVZMYRZQRipO3daio4iG PdK+A9D909VdKBVe94cztQ==
Received: from relay01.prive.nic.fr (relay01.prive.nic.fr [10.1.50.11]) by mx1.nic.fr (PPS) with ESMTP id 4cuhf019qw-1 for <rpp@ietf.org>; Sun, 15 Mar 2026 02:06:15 +0000 (GMT)
Received: from b12.nic.fr (b12.users.prive.nic.fr [10.10.23.33]) by relay01.prive.nic.fr (Postfix) with ESMTP id AE9176067FDD for <rpp@ietf.org>; Sun, 15 Mar 2026 03:06:15 +0100 (CET)
Received: by b12.nic.fr (Postfix, from userid 1000) id 3CF433FF5E; Sun, 15 Mar 2026 03:05:45 +0100 (CET)
Date: Sun, 15 Mar 2026 03:05:45 +0100
From: Stephane Bortzmeyer <bortzmeyer@nic.fr>
To: rpp@ietf.org
Message-ID: <abYT-eacTk_XBcp9@nic.fr>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
X-Operating-System: Debian GNU/Linux 13.3
X-Kernel: Linux 6.12.57+deb13-amd64 x86_64
X-Charlie: Je suis Charlie
Organization: NIC France
X-URL: http://www.nic.fr/
X-Proofpoint-ORIG-GUID: -iPy4ItTRWa0egbRi8U9CoM-ysqfLjkg
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE1MDAxMyBTYWx0ZWRfX2HxwEdKnanXD UaK7rhZj3rGL2Gh3jxLw5Y6WXkjRPipHZzJrRxQWhlSImuqp2pjIoCX037M/HooktfMPLDXYQYf 5oz2qReyHHA95aThSFVKStZAEiGQiNYMi/b7K+nOH0+DaMCsiZ86uV9nddp1Z/2nWAdYrgV5WTL ChWxg0wATtcUFkBHLdwX3Xl0AfvfBniJ2x9sSWQHZKmvGNJOFxEJjWCS05caa36oH4dH8qxUoOi n0KQUVf+S5t3CclfAvDqnecIZ4vg7bJYx8xrDRAaw/b0B8PLFO9GF17uQLpx8Sdo0myRf/Dw+7L nouioTiCnbG8bxDMONr1RodC4qoz7TYgC/MxqQcYTcvDYqQrhoAz3RNB/GBpg7YCyxGwKThyOoS GipWNTaC
X-Proofpoint-GUID: -iPy4ItTRWa0egbRi8U9CoM-ysqfLjkg
Message-ID-Hash: JR5FVXZA54Z62FLGEQRR5QXSFD7NKO4B
X-Message-ID-Hash: JR5FVXZA54Z62FLGEQRR5QXSFD7NKO4B
X-MailFrom: bortzmeyer@nic.fr
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
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [rpp] An implementation of JSContact in JSON Schema
List-Id: "This list discusses a provisioning protocol based on RESTful principles and corresponding data representations using JSON." <rpp.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/rpp/Ng-ClZr9PWbqevnX27hLKzrSrgw>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rpp>
List-Help: <mailto:rpp-request@ietf.org?subject=help>
List-Owner: <mailto:rpp-owner@ietf.org>
List-Post: <mailto:rpp@ietf.org>
List-Subscribe: <mailto:rpp-join@ietf.org>
List-Unsubscribe: <mailto:rpp-leave@ietf.org>
Hello from Shenzhen, Playing with RPP during the hackathon, I searched resources about JSContact (RFC 9553) since I think it would be hard to explain that RPP use a different model for contacts/entities than RDAP (see draft-ietf-regext-rdap-jscontact and draft-ietf-rpp-requirements-03, section 18.4.3). Also, I think that a provisioning protocol needs to validate the requests, otherwise, there is a risk that the registry does not really register what the client wanted. There are many schema languages for JSON but I focused on JSON Schema. Someone was nice enough to produce a JSON Schema for JSContact (RFC 9553 does not contain a formal description) <https://github.com/federicotdn/jscontact-json-schema>. It is not perfect (JSContact Ids are too lax) but it's still very useful. I tested it with a small demo RPP implementation <https://github.com/bortzmeyer/RPP-Afnic>, using this JSON Schema validator <https://github.com/python-jsonschema/jsonschema> and it seems to work. See <https://github.com/bortzmeyer/RPP-Afnic/blob/main/contact-creation.json> for an example of what the RPP client would have to send to create a contact. Obviously, a real registry would have a profile of JSContact (publically documented, I hope), making more fields mandatory.
- [rpp] An implementation of JSContact in JSON Sche… Stephane Bortzmeyer
- [rpp] Re: An implementation of JSContact in JSON … Pawel Kowalik
- [rpp] Re: An implementation of JSContact in JSON … Stephane Bortzmeyer
- [rpp] Re: An implementation of JSContact in JSON … Pawel Kowalik
- [rpp] Re: An implementation of JSContact in JSON … Mario Loffredo
- [rpp] Re: An implementation of JSContact in JSON … Pawel Kowalik
- [rpp] Re: An implementation of JSContact in JSON … Jasdip Singh
- [rpp] Re: An implementation of JSContact in JSON … Andy Newton
- [rpp] Re: An implementation of JSContact in JSON … Pawel Kowalik
- [rpp] Re: An implementation of JSContact in JSON … Mario Loffredo
- [rpp] Re: An implementation of JSContact in JSON … Pawel Kowalik
- [rpp] Re: An implementation of JSContact in JSON … Jasdip Singh
- [rpp] Re: An implementation of JSContact in JSON … Pawel Kowalik
- [rpp] Re: An implementation of JSContact in JSON … Jasdip Singh
- [rpp] Re: An implementation of JSContact in JSON … Andy Newton