<?xml version="1.0" encoding="utf-8"?>
<rfcdesc title="Protocol-Specific Profiles for JSContact" num="10050"
	 wg="calext" status="standards">
  <authors><author>R. Stepanek (Fastmail)</author><author>M. Loffredo (IIT-CNR)</author></authors>
  <rfcdate><month>September</month><year>2026</year></rfcdate>
  <date>2026-09-24</date>
<content>
  <p>La norme JSContact décrit un modèle de
  données et un format pour stocker des informations de contact sur
  une entité (personne physique ou morale). Elle est riche, avec
  beaucoup d'informations dont toutes les applications n'ont pas
  forcément besoin. Ce <wikipedia name="Request for
  comments">RFC</wikipedia> normalise la notion de
  <emphasis>profil</emphasis> : un profil est une spécialisation de
  JSContact, indiquant les élements obligatoires et les autres. Un
  nouveau registre <wikipedia name="Internet Assigned Numbers
  Authority">IANA</wikipedia> stocke les profils existants.</p>
  <p>JSContact est normalisé dans le <rfc num="9553"
  local="false"/>. Il peut servir par exemple comme modèle de données
  et format pour un carnet d'adresses, ou dans des protocoles d'accès
  à l'information sur les contacts d'un objet enregistré, comme
  <wikipedia name="Registration Data Access Protocol">RDAP</wikipedia>
  (<rfc num="9083" local="true"/>). On peut échanger du JSContact avec
  des protocoles comme <wikipedia>CardDAV</wikipedia> (<rfc num="6352"
  local="true"/>) ou <wikipedia name="JMAP (JSON Meta Application Protocol)">JMAP</wikipedia> (<rfc num="9610"
  local="false"/>). JSContact vise à remplacer
  <wikipedia>vCard</wikipedia> (<rfc num="6350" local="true"/>) et sa
  déclinaison jCard (<rfc num="7095" local="true"/>), complexes et
  difficiles à traiter.</p>
  <p>Mais JSContact a ses propres complications ; comme il a un modèle
  de données riche, pour pouvoir gérer tous les cas prévisibles, une
  mise en œuvre de JSContact doit traiter des données même quand
  l'application n'en a pas l'usage (sans compter les problèmes de vie
  privée que peut poser cette absence de minimisation des données). Le
  <rfc num="9553" local="false"/> permet d'ignorer certaines données,
  mais uniquement celles d'extension de JSON, pas les données du
  cœur.</p>
  <p>La solution de notre <wikipedia name="Request for
  comments">RFC</wikipedia> est de permettre la définition de
  <emphasis>profils</emphasis>, un profil étant une définition de ce
  qui est nécessaire dans un objet JSContact. Ainsi, une application
  qui n'a besoin que de peu de données peut utiliser JSContact au lieu
  de définir son propre format. Le <link
  url="https://www.iana.org/assignments/jscontact#jscontact-profiles">registre
  central</link> permettra de trouver et de référencer facilement les
  profils. (Aujourd'hui, aucun n'est enregistré.)</p>
  <p>Un profil est donc un ensemble d'élements JSContact, stocké dans
  <link
  url="https://www.iana.org/assignments/jscontact#jscontact-profiles">le
  registre IANA</link>. Il a un nom (restreint à <wikipedia
  name="American Standard Code for Information
  Interchange">ASCII</wikipedia>). Notez bien qu'un même objet
  JSContact peut être valide selon plusieurs profils et c'est pour
  cela que le profil n'est pas affiché dans l'objet.</p>
  <p>Un profil liste plusieurs propriétés, qui ont notamment un nom,
  un contexte (à quel type d'objets s'applique le profil), des
  restrictions sur les attributs… Par exemple, cette propriété :
  <code> Property Name: kind Property Context: Card Restricted Enum
  Values: individual,org </code> s'applique aux objets
  <computer>Card</computer> et dit que <computer>kind</computer> (<rfc
  num="9553" local="false"/>, section 2.1.4) ne peut être que
  <computer>individual</computer> ou <computer>org</computer> (et pas,
  comme normalement en JSContact, <computer>group</computer>,
  <computer>application</computer>, etc).</p>
  <p>Je l'ai dit, le registre actuel est vide donc, pour avoir des
  exemples, il faut regarder les annexes A.1, A.3 et A.4 (profil)
  ainsi que A.2 (objet JSContact correspondant à ce profil) du
  RFC. Pour ajouter des profils au registre, la politique à suivre
  (<rfc num="8126" local="true"/>) est « Spécification
  nécessaire ».</p>
</content>
</rfcdesc>

