<?xml version="1.0" encoding="utf-8"?>
<rfcdesc title="JSContact Version 2.0: A JSON Representation of Contact Data" num="9982" wg="calext" status="standards">
  <authors><author>R. Stepanek (Fastmail)</author></authors>
  <rfcdate><month>May</month><year>2026</year></rfcdate>
  <date>2026-05-28</date>
<content>
  <p>Voici la version 2 du format de représentation d'entités
  (personnes ou organisations) JSContact (<rfc num="9553"
  local="false"/>). En fait, ce numéro de version est trompeur, il n'y
  a qu'un seul changement, le membre <computer>uid</computer> qui
  était obligatoire devient facultatif. Mais ce petit changement, qui
  casse la compatibilité, oblige à changer de numéro de version.</p>
  <p>Dans la section 2.1.9 du <rfc num="9553" local="false"/>,
  l'<computer>uid</computer> (<foreign>User IDentifier</foreign>)
  était obligatoire. Alors que le vieux format
  <wikipedia>vCard</wikipedia> (<rfc num="6350" local="true"/>) le
  disait facultatif, ce qui rendait difficile toute traduction
  automatique de vCard vers JSContact. En outre, s'il était cool
  d'avoir la garantie d'un identificateur unique pour chaque carte de
  visite au format JSContact, cela ne convenait pas dans tous les
  cas. Ainsi, <wikipedia name="Registration Data Access
  Protocol">RDAP</wikipedia> (<rfc num="9083" local="true"/>)
  n'utilise pas du tout cette propriété <computer>uid</computer>.</p>
  <p>Donc, seul changement entre les versions 1 et 2, l'attribut
  <computer>uid</computer> <link url="https://www.iana.org/assignments/jscontact/jscontact.xml#jscontact-properties">devient optionnel</link>. On passe de :
  <code>
uid: String (mandatory)
  </code>
  à :
  <code>
*uid: String (optional).*
  </code>
  Mais c'est suffisant
  pour obliger à <link url="https://www.iana.org/assignments/jscontact/jscontact.xml#jscontact-version">changer le numéro de version de JSContact</link> (<rfc
  num="9553" local="false"/>, section 1.9).</p>
  <p>Par exemple, cet object JSContact (qui n'a pas
  d'<computer>uid</computer>) est désormais légal :
  <code>
{
"@type": "Card",
 "version": "2.0",
 "name": {"components": [{"kind": "given","value": "Jean"},
			 {"kind": "surname","value": "Durand"}]},
           "emails": {
             "email": {
               "address": "jean.durand@example.com"
             }
          }
}
</code>
  (Avec la version 1, il aurait fallu quelque chose comme
  <computer>"uid": "a73c940e-b1d3-4f3c-aa50-c9749352c253"</computer>
  après la version.)</p>
</content>
</rfcdesc>
