rfc9553v4.txt   rfc9553.txt 
Internet Engineering Task Force (IETF) R. Stepanek Internet Engineering Task Force (IETF) R. Stepanek
Request for Comments: 9553 Fastmail Request for Comments: 9553 Fastmail
Category: Standards Track M. Loffredo Category: Standards Track M. Loffredo
ISSN: 2070-1721 IIT-CNR ISSN: 2070-1721 IIT-CNR
April 2024 May 2024
JSContact: A JSON Representation of Contact Data JSContact: A JSON Representation of Contact Data
Abstract Abstract
This specification defines a data model and JavaScript Object This specification defines a data model and JavaScript Object
Notation (JSON) representation of contact card information that can Notation (JSON) representation of contact card information that can
be used for data storage and exchange in address book or directory be used for data storage and exchange in address book or directory
applications. It aims to be an alternative to the vCard data format applications. It aims to be an alternative to the vCard data format
and to be unambiguous, extendable, and simple to process. In and to be unambiguous, extendable, and simple to process. In
skipping to change at line 784 skipping to change at line 784
encoding a JSON Pointer [RFC6901] for that property. encoding a JSON Pointer [RFC6901] for that property.
Vendor-specific properties MAY be set in any JSContact object. Vendor-specific properties MAY be set in any JSContact object.
Implementations MUST preserve vendor-specific properties in JSContact Implementations MUST preserve vendor-specific properties in JSContact
data, irrespective if they know their use. They MUST NOT reject the data, irrespective if they know their use. They MUST NOT reject the
property value as invalid, unless they are in control of the vendor- property value as invalid, unless they are in control of the vendor-
specific property as outlined in the above paragraph. specific property as outlined in the above paragraph.
The ABNF rule "v-extension" formally defines valid vendor-specific The ABNF rule "v-extension" formally defines valid vendor-specific
property names. Note that the vendor prefix allows for more values property names. Note that the vendor prefix allows for more values
than Internationalized Domain Names (IDNs) [RFC8499]; therefore, than Internationalized Domain Names (IDNs) [RFC9499]; therefore,
JSContact implementations can simply validate property names without JSContact implementations can simply validate property names without
implementing the full set of rules that apply to domain names. implementing the full set of rules that apply to domain names.
v-extension = v-prefix ":" v-name v-extension = v-prefix ":" v-name
v-prefix = v-label *("." v-label) v-prefix = v-label *("." v-label)
v-label = alnum-int / alnum-int *(alnum-int / "-") alnum-int v-label = alnum-int / alnum-int *(alnum-int / "-") alnum-int
alnum-int = ALPHA / DIGIT / NON-ASCII alnum-int = ALPHA / DIGIT / NON-ASCII
skipping to change at line 1306 skipping to change at line 1306
* separator: a formatting separator between two ordered name non- * separator: a formatting separator between two ordered name non-
separator components. The value property of the component separator components. The value property of the component
includes the verbatim separator, for example, a hyphen includes the verbatim separator, for example, a hyphen
character or even an empty string. This value has higher character or even an empty string. This value has higher
precedence than the defaultSeparator property of the Name. precedence than the defaultSeparator property of the Name.
Implementations MUST NOT insert two consecutive separator Implementations MUST NOT insert two consecutive separator
components; instead, they SHOULD insert a single separator components; instead, they SHOULD insert a single separator
component with the combined value. This component kind MUST component with the combined value. This component kind MUST
NOT be set if the Name isOrdered property value is "false". NOT be set if the Name isOrdered property value is "false".
phonetic: String (optional). The pronounciation of the name phonetic: String (optional). The pronunciation of the name
component. If this property is set, then at least one of the Name component. If this property is set, then at least one of the Name
object properties, phoneticSystem or phoneticScript, MUST be set. object properties, phoneticSystem or phoneticScript, MUST be set.
Also see Section 1.5.4. Also see Section 1.5.4.
2.2.2. nicknames 2.2.2. nicknames
nicknames: Id[Nickname] (optional). The nicknames of the entity nicknames: Id[Nickname] (optional). The nicknames of the entity
represented by the Card. represented by the Card.
A Nickname object has the following properties: A Nickname object has the following properties:
skipping to change at line 1932 skipping to change at line 1932
* separator: a formatting separator between two ordered address * separator: a formatting separator between two ordered address
non-separator components. The value property of the component non-separator components. The value property of the component
includes the verbatim separator, for example, a hyphen includes the verbatim separator, for example, a hyphen
character or even an empty string. This value has higher character or even an empty string. This value has higher
precedence than the defaultSeparator property of the Address. precedence than the defaultSeparator property of the Address.
Implementations MUST NOT insert two consecutive separator Implementations MUST NOT insert two consecutive separator
components; instead, they SHOULD insert a single separator components; instead, they SHOULD insert a single separator
component with the combined value. This component kind MUST component with the combined value. This component kind MUST
NOT be set if the Address isOrdered property value is "false". NOT be set if the Address isOrdered property value is "false".
phonetic: String (optional). The pronounciation of the name phonetic: String (optional). The pronunciation of the name
component. If this property is set, then at least one of the component. If this property is set, then at least one of the
Address object phoneticSystem or phoneticScript properties MUST be Address object phoneticSystem or phoneticScript properties MUST be
set. Also see Section 1.5.4. set. Also see Section 1.5.4.
2.5.1.3. Additional Address Examples 2.5.1.3. Additional Address Examples
The following example illustrates the use of the address property for The following example illustrates the use of the address property for
"46, 1 Sukhumvit 51 Alley, Khlong Tan Nuea, Watthana, Bangkok 10110, "46, 1 Sukhumvit 51 Alley, Khlong Tan Nuea, Watthana, Bangkok 10110,
Thailand". Thailand".
skipping to change at line 2057 skipping to change at line 2057
MUNObE5ONEpSWmxDN3hGZnFpTWJGUlU5WjRONll3SURBUUFCCi0tLS0tR MUNObE5ONEpSWmxDN3hGZnFpTWJGUlU5WjRONll3SURBUUFCCi0tLS0tR
U5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K" U5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K"
} }
} }
Figure 35: Example of cryptoKeys with Embedded Data Figure 35: Example of cryptoKeys with Embedded Data
2.6.2. directories 2.6.2. directories
directories: Id[Directory] (optional). The directories containing directories: Id[Directory] (optional). The directories containing
information about the entitity represented by the Card. information about the entity represented by the Card.
A Directory object has all properties of the Resource (Section 1.4.4) A Directory object has all properties of the Resource (Section 1.4.4)
data type, with the following additional definitions: data type, with the following additional definitions:
* The @type property value MUST be "Directory", if set. * The @type property value MUST be "Directory", if set.
* The kind property is mandatory. Its enumerated (Section 1.7.5) * The kind property is mandatory. Its enumerated (Section 1.7.5)
values are: values are:
- directory: the resource is a directory service that the entity - directory: the resource is a directory service that the entity
skipping to change at line 3156 skipping to change at line 3156
| year | UnsignedInt | PartialDate | | year | UnsignedInt | PartialDate |
| | | (Section 2.8.1) | | | | (Section 2.8.1) |
+---------------------+-----------------------+--------------------+ +---------------------+-----------------------+--------------------+
Table 2: JSContact Properties with "common" Usage Table 2: JSContact Properties with "common" Usage
The following table lists the initial "reserved" usage entries of the The following table lists the initial "reserved" usage entries of the
"JSContact Properties" registry. For this property, the Change "JSContact Properties" registry. For this property, the Change
Controller is "IETF", and the RFC section reference is for RFC 9553. Controller is "IETF", and the RFC section reference is for RFC 9553.
+===============+============+============+=============+==========+ +===============+============+============+==========+=============+
| Property Name | Property | Property | Reference/ | Intended | | Property Name | Property | Property | Intended | Reference/ |
| | Type | Context | Description | Usage | | | Type | Context | Usage | Description |
+===============+============+============+=============+==========+ +===============+============+============+==========+=============+
| extra | not | not | Section | reserved | | extra | not | not | reserved | Section |
| | applicable | applicable | 1.7.3.1 | | | | applicable | applicable | | 1.7.3.1 |
+---------------+------------+------------+-------------+----------+ +---------------+------------+------------+----------+-------------+
Table 3: JSContact Properties with "reserved" Usage Table 3: JSContact Properties with "reserved" Usage
3.6. Creation of the JSContact Types Registry 3.6. Creation of the JSContact Types Registry
IANA has created the "JSContact Types" registry. The purpose of this IANA has created the "JSContact Types" registry. The purpose of this
new registry is to avoid name collisions for JSContact type names and new registry is to avoid name collisions for JSContact type names and
provide a complete reference for all data types used for JSContact provide a complete reference for all data types used for JSContact
property values. property values.
skipping to change at line 3991 skipping to change at line 3991
<https://www.rfc-editor.org/info/rfc6715>. <https://www.rfc-editor.org/info/rfc6715>.
[RFC6869] Salgueiro, G., Clarke, J., and P. Saint-Andre, "vCard [RFC6869] Salgueiro, G., Clarke, J., and P. Saint-Andre, "vCard
KIND:device", RFC 6869, DOI 10.17487/RFC6869, February KIND:device", RFC 6869, DOI 10.17487/RFC6869, February
2013, <https://www.rfc-editor.org/info/rfc6869>. 2013, <https://www.rfc-editor.org/info/rfc6869>.
[RFC7095] Kewisch, P., "jCard: The JSON Format for vCard", RFC 7095, [RFC7095] Kewisch, P., "jCard: The JSON Format for vCard", RFC 7095,
DOI 10.17487/RFC7095, January 2014, DOI 10.17487/RFC7095, January 2014,
<https://www.rfc-editor.org/info/rfc7095>. <https://www.rfc-editor.org/info/rfc7095>.
[RFC8499] Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS
Terminology", RFC 8499, DOI 10.17487/RFC8499, January
2019, <https://www.rfc-editor.org/info/rfc8499>.
[RFC8605] Hollenbeck, S. and R. Carney, "vCard Format Extensions: [RFC8605] Hollenbeck, S. and R. Carney, "vCard Format Extensions:
ICANN Extensions for the Registration Data Access Protocol ICANN Extensions for the Registration Data Access Protocol
(RDAP)", RFC 8605, DOI 10.17487/RFC8605, May 2019, (RDAP)", RFC 8605, DOI 10.17487/RFC8605, May 2019,
<https://www.rfc-editor.org/info/rfc8605>. <https://www.rfc-editor.org/info/rfc8605>.
[RFC9554] Stepanek, R. and M. Loffredo, "vCard Format Extension for [RFC9499] Hoffman, P. and K. Fujiwara, "DNS Terminology", BCP 219,
JSContact", RFC 9554, DOI 10.17487/RFC9554, March 2024, RFC 9499, DOI 10.17487/RFC9499, March 2024,
<https://www.rfc-editor.org/info/rfc9499>.
[RFC9554] Stepanek, R. and M. Loffredo, "vCard Format Extensions for
JSContact", RFC 9554, DOI 10.17487/RFC9554, May 2024,
<https://www.rfc-editor.org/info/rfc9554>. <https://www.rfc-editor.org/info/rfc9554>.
[RFC9555] Stepanek, R. and M. Loffredo, "vCard Format Extension for [RFC9555] Stepanek, R. and M. Loffredo, "JSContact: Converting from
JSContact", RFC 9555, DOI 10.17487/RFC9555, March 2024, and to vCard", RFC 9555, DOI 10.17487/RFC9555, May 2024,
<https://www.rfc-editor.org/info/rfc9555>. <https://www.rfc-editor.org/info/rfc9555>.
[RFC9562] Davis, K., Peabody, B., and P. Leach, "Universally Unique [RFC9562] Davis, K., Peabody, B., and P. Leach, "Universally Unique
IDentifiers (UUIDs)", RFC 9562, DOI 10.17487/RFC9562, IDentifiers (UUIDs)", RFC 9562, DOI 10.17487/RFC9562, May
April 2024, <https://www.rfc-editor.org/info/rfc9562>. 2024, <https://www.rfc-editor.org/info/rfc9562>.
[UBiDi] The Unicode Consortium, "Unicode Standard Annex #9: [UBiDi] The Unicode Consortium, "Unicode Standard Annex #9:
Unicode Bidirectional Algorithm", Revision 48, Unicode Bidirectional Algorithm", Revision 48,
Unicode 15.1.0, August 2023, Unicode 15.1.0, August 2023,
<https://www.unicode.org/reports/tr9/>. <https://www.unicode.org/reports/tr9/>.
[WHATWG-URL] [WHATWG-URL]
WHATWG, "URL Living Standard", January 2024, WHATWG, "URL Living Standard", January 2024,
<https://url.spec.whatwg.org>. <https://url.spec.whatwg.org>.
 End of changes. 10 change blocks. 
22 lines changed or deleted 22 lines changed or added

This html diff was produced by rfcdiff 1.48.